1/** 2 * Init del carosello offerte in home. 3 * Monta Slick su .oe-offers-slider__track: 1 slide, solo dots, autoplay lento. 4 * Degrado: se Slick non è disponibile o le slide sono < 2, non fa nulla e le 5 * slide restano impilate (vedi CSS). La classe --js viene aggiunta SOLO nel 6 * ramo che monta davvero Slick, così senza Slick le slide restano tutte visibili. 7 */ 8( function () { 9 'use strict'; 10 11 if ( ! window.jQuery ) { 12 return; 13 } 14 15 var $ = window.jQuery; 16 17 // Fa (ri)partire l'animazione del badge sulla slide attiva. 18 // Toglie la classe da tutti i badge, forza un reflow, poi la applica alla slick-current. 19 function animateActiveBadge( $slider ) { 20 $slider.find( '.oe-hslide__badge' ).removeClass( 'oe-badge-animate' ); 21 var $current = $slider.find( '.slick-current .oe-hslide__badge' ); 22 if ( $current.length ) { 23 void $current[ 0 ].offsetWidth; // reflow: rende ripetibile l'animazione CSS 24 $current.addClass( 'oe-badge-animate' ); 25 } 26 } 27 28 function initSlider() { 29 var $track = $( '.oe-offers-slider__track' ); 30 if ( ! $track.length ) { 31 return; 32 } 33 // Con una sola slide il carosello non serve: la lascio statica ma animo il badge una volta. 34 if ( $track.children( '.oe-offers-slider__slide' ).length < 2 ) { 35 $track.find( '.oe-hslide__badge' ).first().addClass( 'oe-badge-animate' ); 36 return; 37 } 38 $track.closest( '.oe-offers-slider' ).addClass( 'oe-offers-slider--js' ); 39 // I due handler vanno legati PRIMA di .slick(): 'init' scatta solo se già in ascolto. 40 $track.on( 'init', function () { 41 animateActiveBadge( $track ); 42 } ); 43 $track.on( 'afterChange', function () { 44 animateActiveBadge( $track ); 45 } ); 46 $track.slick( { 47 slidesToShow: 1, 48 slidesToScroll: 1, 49 dots: true, 50 arrows: false, 51 autoplay: true, 52 autoplaySpeed: 6000, 53 pauseOnHover: true, 54 adaptiveHeight: true 55 } ); 56 } 57 58 $( function () { 59 if ( typeof $.fn.slick === 'function' ) { 60 initSlider(); 61 return; 62 } 63 // Slick non ancora pronto: attendo brevemente (rete di sicurezza sull'ordine di caricamento). 64 var tries = 0; 65 var timer = setInterval( function () { 66 tries++; 67 if ( typeof $.fn.slick === 'function' ) { 68 clearInterval( timer ); 69 initSlider(); 70 } else if ( tries > 40 ) { // ~2 secondi 71 clearInterval( timer ); 72 } 73 }, 50 ); 74 } ); 75}() );
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.