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.