PageSourceSearch

https://prologue-alca.fr/sites/all/themes/tssks/js/ssks-sliders.js?tl3ojl

js prologue-alca.fr collected 2026-09-24 21:32:49 UTC 13,478 bytes, 353 lines download raw bytes

1
2(function($) {
3    Drupal.behaviors.ssks_sliders = {
4
5        attach: function(context, settings) {
6            Drupal.behaviors.ssks_sliders.sliderAccueil();
7            Drupal.behaviors.ssks_sliders.sliderPhoto();
8            Drupal.behaviors.ssks_sliders.sliderPhotoMosaique();
9            Drupal.behaviors.ssks_sliders.sliderAgenda();
10            Drupal.behaviors.ssks_sliders.sliderVideo();
11            Drupal.behaviors.ssks_sliders.sliderVideoMosaique();
12            Drupal.behaviors.ssks_sliders.sliderAlerte();
13
14            Drupal.behaviors.ssks_sliders.checkStaticClick();
15
16            Drupal.behaviors.ssks_sliders.addPersonalNav();
17            Drupal.behaviors.ssks_sliders.cacheSliderUniqueDot();
18
19            // CACHE LES NAVIGATION UNIQUES DE SLIDER AU WINDOW LOAD
20            // DES fois qu'on initialise des slider dans main.js, initialisé bien après ce js.
21            $(window).on('load', function(){
22                Drupal.behaviors.ssks_sliders.cacheSliderUniqueDot();
23            });
24
25        },
26
27        addPersonalNav: function() {
28            $('.js-nav-wrapper:not(.slider-processed)').each(function() {
29                $(this).addClass('slider-processed');
30                $(this).find($('.flickity-prev-next-button , .flickity-page-dots')).wrapAll('<div class="flickity-nav-wrapper"><div class="flickity-nav"></div></div>');
31            });
32        },
33
34
35        /*---------------------------------------------------------------------
36        ::
37        :: PERMET DE GÉRER LES PROBLEMES DE CACUL DE HAUTEUR DÛ AUX IMAGES LAZYLOADED
38        ::
39        :: Params :
40        ::  - carousel (stocké au préalable dans une variable);
41        ::  - imgCellParent (la cellule parente de l'image lazyloadée, si non défini prend la balise article par défaut)
42        ::
43        :: exemple :
44        ::  - D:\docker\ENV_PHP-5.6\sites\le-site\sites\all\themes\t_krakatoa\js\main.js => sliderSocialWall()
45        ::
46        ---------------------------------------------------------------------*/
47        resizeOnLazyloaded: function(carousel, imgCellParent) {
48            imgCellParent = (imgCellParent) ? imgCellParent : 'article';
49            if (!carousel) return console.log('%c🤔 Le param "carousel" n\'est pas renseigné !!', "background: cyan; font-size: 14px; padding: 2px 5px;");
50
51            var carouselHeight = carousel.height();
52
53            if (!carousel[0]) return;
54            carousel[0].addEventListener('lazyloaded', function(e){
55                var cell = $(e.target).closest(imgCellParent)
56                if (!cell.length) return console.log('%c🤔 "imgCellParent" non valide !!', "background: cyan; font-size: 14px; padding: 2px 5px;");
57
58                var cellHeight = cell.outerHeight(true);
59
60                if (cellHeight > carouselHeight) {
61                    carousel.flickity('resize');
62                }
63            });
64        },
65
66
67        /*---------------------------------------------------------------------
68        ::
69        :: AJOUTE UNE CLASS SUR LE SLIDER S'IL EST PLUS LARGE QUE SON CONTAINER
70        :: PERMET DE CACHER LES CHEVRONS
71        ::
72        :: exemple :
73        ::  - D:\docker\ENV_PHP-5.6\sites\le-site\sites\all\themes\t_cmbvshop\js\main.js => produitIllustrationSlider()
74        ::
75        ---------------------------------------------------------------------*/
76        checkIfSliderIsWiderThanContainer: function(carousel) {
77
78            function checkSize() {
79                carousels = $(carousel);
80                if (!carousels.length) return;
81            
82                carousels.each(function(){
83                    var flkty = Flickity.data( $(this)[0] );
84                    if (flkty === undefined) return;
85                    
86                    var clientWidth = flkty.slider.clientWidth;
87                    var scrollWidth = flkty.slider.scrollWidth;
88                    if(scrollWidth > clientWidth) {
89                        $(this).addClass('slider-wider-than-container');
90                        $(this).removeClass('slider-fits-container');
91                    } else {
92                        $(this).addClass('slider-fits-container');
93                        $(this).removeClass('slider-wider-than-container');
94                    }
95                });
96            }
97
98            checkSize();
99            $(window).resize(checkSize);
100        },
101
102
103        /*---------------------------------------------------------------------
104        ::
105        :: Cache la nav des slider ayant un seul dot
106        ::
107        ---------------------------------------------------------------------*/
108        cacheSliderUniqueDot: function() {
109            if ($('.flickity-page-dots').length < 1) return;
110
111            $('.flickity-enabled:not(.processed)').addClass('processed').each(function() {
112                $(this).on( 'select.flickity', function() {
113                    if ($(this).find('.dot').length < 2) {
114                        $(this).find('.flickity-nav, .flickity-page-dots, .flickity-prev-next-butto').addClass('hidden');
115                    } else {
116                        $(this).find('.flickity-nav, .flickity-page-dots, .flickity-prev-next-butto').removeClass('hidden');
117                    }
118                });
119            });
120        },
121
122
123
124        /*---------------------------------------------------------------------
125        :: TEST SI SLIDER FLICKITY
126        :: désactiver click sur les liens sir le slider n'est pas static
127        -------------------------------------------------------------------*/
128        checkStaticClick: function(sliders = $('.ssks-flickity')) {
129
130            var staticClick = true;
131            var $sliders = sliders;
132            if($sliders.length == 0 ) {return}
133            
134            // Stop propagation du click inversée sur sliders
135            for (var i = 0; i < $sliders.length; i++) {
136                
137                // for (var i = 0; i < $sliders[i].cells.length; i++) {
138                
139                // console.log($sliders[i]);
140
141               $sliders[i].addEventListener('click', testStaticClick, true);
142
143               // DESACTIVE SLIDER SI UNE SEULE CELLULE
144               /* if ($sliders[i].cells.length < 2) {
145                   $sliders[i].unbindDrag();
146                   alert("odzijdiozejd");
147               }*/
148
149            }
150
151            // Stop propagation du click si click non static
152            function testStaticClick(event) {
153
154                // fix bug de la nav désactivée au lancement du slider
155                if( $(event.target).hasClass('flickity-button')  || $(event.target).hasClass('dot') || $(event.target).hasClass('flickity-button-icon')  ) return;
156                
157                if(staticClick === false) {
158                    event.stopPropagation();
159                    event.preventDefault();
160                }
161            }
162
163            // Etat du click (static ou non)
164            $sliders.on('dragStart.flickity', function() {
165                staticClick = false;
166            });
167            $sliders.on('staticClick.flickity', function() {
168                staticClick = true;
169            });
170
171        },
172
173        /*---------------------------------------------------------------------
174        :: Intialisation Slider ACCUEIL ( FLICKITY )
175        -------------------------------------------------------------------*/
176        sliderAccueil: function() {
177
178            $('.slider-accueil').flickity({
179                autoPlay: true,
180                lazyLoad: true,
181                imagesLoaded: true,
182                contain: true,
183                wrapAround: true
184            });
185
186        },
187
188        /*---------------------------------------------------------------------
189        :: Intialisation Slider AGENDA ( FLICKITY )
190        -------------------------------------------------------------------*/
191        sliderAgenda: function() {
192
193            $('.slider-agenda').flickity({
194                autoPlay: true,
195                contain: true,
196                pageDots: false,
197                prevNextButtons: false
198            });
199
200        },
201
202        /*---------------------------------------------------------------------
203        :: Intialisation Slider video ( FLICKITY )
204        -------------------------------------------------------------------*/
205        sliderVideo: function() {
206
207            $('.galerie-video-slider').each(function() {
208
209                var container = $(this);
210                var cells = $('.slider-video-cell', this);
211                var slidernav = $('.slider-video-nav', this);
212                var slidernavcontainer = $('.slider-video-nav-container', this);
213    
214                if (cells.length < 2) {
215                    slidernavcontainer.hide();
216                } else {
217                    slidernav.flickity({
218                        cellAlign: 'left',
219                        lazyLoad: true,
220                        contain: true,
221                        groupCells: true
222                    });
223                }
224                    
225                //init active sur le premier item 
226                slidernav.find('.active a').addClass('active');
227
228
229                // Dynamisation de la vidéo en cours
230                $('.node-galerie-video-slider-item', this).on('click', function() {
231    
232                    container.find('.video-slider-container').html(Drupal.settings.ssks['video_embed_' + $(this).data("nid")]);
233    
234                    var credit_value = Drupal.settings.ssks['video_credit_value_' + $(this).data("nid")];
235                    var body_value = Drupal.settings.ssks['video_body_value_' + $(this).data("nid")];
236                    var title = Drupal.settings.ssks['video_title_' + $(this).data("nid")];
237    
238                    container.find('.video-slider-description-container').show();
239                    container.find('.video-slider-copyright').html(credit_value);
240                    container.find('.video-slider-description-texte').html(body_value);
241                    container.find('.video-slider-title').html(title);
242    
243                    container.find('.node-galerie-video-slider-item').removeClass('active');
244                    $(this).addClass('active');
245                    return false;
246                });
247    
248
249            });
250           
251        },
252
253        /*---------------------------------------------------------------------
254        :: Intialisation Slider VIDEO MOSAIQUE ( FLICKITY )
255        -------------------------------------------------------------------*/
256        sliderVideoMosaique: function() {
257
258            $(".slider-video-mosaique").flickity({
259                cellAlign: 'left',
260                lazyLoad: 2,
261                contain: true,
262                wrapAround: true
263            });
264
265        },
266
267        /*---------------------------------------------------------------------
268        :: Intialisation Slider Photo ( FLICKITY )
269        -------------------------------------------------------------------*/
270        sliderPhoto: function() {
271
272            $('.slider-galerie-photo').flickity({
273                lazyLoad: 2,
274                contain: true,
275                wrapAround: true
276            });
277
278        },
279
280        /*---------------------------------------------------------------------
281        :: Intialisation Slider miniature photo ( FLICKITY )
282        -------------------------------------------------------------------*/
283        sliderPhotoMosaique: function() {
284
285            $('.galerie-photo-slider-mosaique').each(function(){
286                $align = "left";
287
288                if($(this).hasClass("flickity-cell-align-center")){
289                    $align = "center";
290                }
291                $(this).flickity({
292                    cellAlign: $align,
293                    lazyLoad: 2,
294                    contain: true,
295                    freeScroll: true,
296                    groupCells: true
297                });
298    
299    
300    
301
302            });
303
304        },
305
306        /*---------------------------------------------------------------------
307        :: Intialisation Slider Carte ( FLICKITY )
308        -------------------------------------------------------------------*/
309        sliderCarte: function () {
310
311            $(".slider-carte").flickity({
312                draggable: false,
313                cellAlign: 'left',
314                imagesLoaded: true,
315                contain: true,
316                pageDots: false,
317                wrapAround: true,
318                prevNextButtons: false
319            });
320
321
322            if ($('.slider-carte-cell').length > 1) {
323
324                $('.slider-carte-navigation').removeClass('is-hidden');
325
326                $('.carte-btn-precedent').on('click', function () {
327                    $('.slider-carte').flickity('previous');
328                });
329
330                $('.carte-btn-suivant').on('click', function () {
331                    $('.slider-carte').flickity('next');
332                });
333            }
334
335        },
336        /*---------------------------------------------------------------------
337        :: Intialisation Slider Alerte ( FLICKITY )
338        -------------------------------------------------------------------*/
339        sliderAlerte: function() {
340
341            $('.strate-alerte-slider').flickity({
342                autoPlay: 3000,
343                cellAlign: 'left',
344                prevNextButtons: false,
345                imagesLoaded: true,
346                contain: true,
347                wrapAround: true,
348                groupCells: true
349            });
350        }
351
352    };
353})(jQuery) ;

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.