1( 2 function( $ ) { 3 'use strict'; 4 5 $.fn.GoloSwiper = function( options ) { 6 var defaults = {}; 7 var settings = $.extend( {}, defaults, options ); 8 9 var $swiper; 10 11 this.each( function() { 12 var $slider = $( this ); 13 var $sliderInner = $slider.children( '.swiper-inner' ).first(); 14 var sliderSettings = $slider.data(); 15 16 var $sliderContainer = $sliderInner.children( '.swiper-container' ).first(), 17 lgItems = sliderSettings.lgItems ? sliderSettings.lgItems : 1, 18 mdItems = sliderSettings.mdItems ? sliderSettings.mdItems : lgItems, 19 smItems = sliderSettings.smItems ? sliderSettings.smItems : mdItems, 20 lgGutter = sliderSettings.lgGutter ? sliderSettings.lgGutter : 0, 21 mdGutter = sliderSettings.mdGutter ? sliderSettings.mdGutter : lgGutter, 22 smGutter = sliderSettings.smGutter ? sliderSettings.smGutter : mdGutter, 23 speed = sliderSettings.speed ? sliderSettings.speed : 1000; 24 25 // Normalize slide per view, reset fake view to exist view. 26 lgItems = 'auto-fixed' === lgItems ? 'auto' : lgItems; 27 mdItems = 'auto-fixed' === mdItems ? 'auto' : mdItems; 28 smItems = 'auto-fixed' === smItems ? 'auto' : smItems; 29 30 var swiperOptions = $.extend( {}, { 31 init: false, 32 watchSlidesVisibility: true, 33 slidesPerView: smItems, 34 spaceBetween: smGutter, 35 breakpoints: { 36 // when window width is >= 37 767: { 38 slidesPerView: mdItems, 39 spaceBetween: mdGutter 40 }, 41 1024: { 42 slidesPerView: lgItems, 43 spaceBetween: lgGutter 44 } 45 } 46 }, settings ); 47 48 if ( sliderSettings.slidesPerGroup == 'inherit' ) { 49 swiperOptions.slidesPerGroup = smItems; 50 51 swiperOptions.breakpoints[ 767 ].slidesPerGroup = mdItems; 52 swiperOptions.breakpoints[ 1024 ].slidesPerGroup = lgItems; 53 } 54 55 swiperOptions.watchOverflow = true; 56 57 if ( sliderSettings.slideColumns ) { 58 swiperOptions.slidesPerColumn = sliderSettings.slideColumns; 59 } 60 61 if ( sliderSettings.initialSlide ) { 62 swiperOptions.initialSlide = sliderSettings.initialSlide; 63 } 64 65 if ( sliderSettings.autoHeight ) { 66 swiperOptions.autoHeight = true; 67 } 68 69 if ( typeof sliderSettings.simulateTouch !== 'undefined' && ! sliderSettings.simulateTouch ) { 70 swiperOptions.simulateTouch = false; 71 } 72 73 if ( speed ) { 74 swiperOptions.speed = speed; 75 } 76 77 // Maybe: fade, flip 78 if ( sliderSettings.effect ) { 79 swiperOptions.effect = sliderSettings.effect; 80 81 if ( 'custom' === sliderSettings.fadeEffect ) { 82 swiperOptions.fadeEffect = { 83 crossFade: false 84 }; 85 } else { 86 swiperOptions.fadeEffect = { 87 crossFade: true 88 }; 89 } 90 } 91 92 if ( sliderSettings.loop ) { 93 swiperOptions.loop = true; 94 95 if ( sliderSettings.loopedSlides ) { 96 swiperOptions.loopedSlides = sliderSettings.loopedSlides; 97 } 98 } 99 100 if ( sliderSettings.centered ) { 101 swiperOptions.centeredSlides = true; 102 } 103 104 if ( sliderSettings.autoplay ) { 105 swiperOptions.autoplay = { 106 delay: sliderSettings.autoplay, 107 disableOnInteraction: false 108 }; 109 } 110 111 if ( sliderSettings.freeMode ) { 112 swiperOptions.freeMode = true; 113 } 114 115 var $wrapControls; 116 117 if ( sliderSettings.wrapControls ) { 118 var $wrapControlsWrap = $( '<div class="swiper-controls-wrap"></div>' ); 119 $wrapControls = $( '<div class="swiper-controls"></div>' ); 120 121 $wrapControlsWrap.append( $wrapControls ); 122 $slider.append( $wrapControlsWrap ); 123 } 124 125 if ( sliderSettings.nav ) { 126 127 if ( sliderSettings.customNav && sliderSettings.customNav !== '' ) { 128 var $customBtn = $( '#' + sliderSettings.customNav ); 129 var $swiperPrev = $customBtn.find( '.slider-prev-btn' ); 130 var $swiperNext = $customBtn.find( '.slider-next-btn' ); 131 } else { 132 var $swiperPrev = $( '<div class="swiper-nav-button swiper-button-prev"><i class="nav-button-icon"></i><span class="nav-button-text">' + $goloSwiper.prevText + '</span></div>' ); 133 var $swiperNext = $( '<div class="swiper-nav-button swiper-button-next"><i class="nav-button-icon"></i><span class="nav-button-text">' + $goloSwiper.nextText + '</span></div>' ); 134 135 var $swiperNavButtons = $( '<div class="swiper-nav-buttons"></div>' ); 136 $swiperNavButtons.append( $swiperPrev ).append( $swiperNext ); 137 138 var $swiperNavButtonsWrap = $( '<div class="swiper-nav-buttons-wrap"></div>' ); 139 140 if ( 'grid' == sliderSettings.navAlignedBy ) { 141 $swiperNavButtonsWrap.append( '<div class="container"><div class="row"><div class="col-sm-12"></div></div></div>' ); 142 $swiperNavButtonsWrap.find( '.col-sm-12' ).append( $swiperNavButtons ); 143 } else { 144 $swiperNavButtonsWrap.append( $swiperNavButtons ); 145 } 146
147 if ( $wrapControls ) { 148 $wrapControls.append( $swiperNavButtonsWrap ); 149 } else { 150 $sliderInner.append( $swiperNavButtonsWrap ); 151 } 152 } 153 154 swiperOptions.navigation = { 155 nextEl: $swiperNext, 156 prevEl: $swiperPrev 157 }; 158 } 159 160 if ( sliderSettings.pagination ) { 161 162 var $swiperPaginationWrap = $( '<div class="swiper-pagination-wrap"><div class="swiper-pagination-inner"></div></div>' ); 163 var $swiperPagination = $( '<div class="swiper-pagination"></div>' ); 164 165 $swiperPaginationWrap.find( '.swiper-pagination-inner' ).append( $swiperPagination ); 166 167 var $swiperPaginationContainerWrap = $( '<div class="swiper-pagination-container"></div>' ); 168 169 if ( 'grid' == sliderSettings.paginationAlignedBy ) { 170 $swiperPaginationContainerWrap.append( '<div class="container"><div class="row"><div class="col-sm-12"></div></div></div>' ); 171 $swiperPaginationContainerWrap.find( '.col-sm-12' ).append( $swiperPaginationWrap ); 172 } else { 173 $swiperPaginationContainerWrap.append( $swiperPaginationWrap ); 174 } 175 176 if ( $wrapControls ) { 177 $wrapControls.append( $swiperPaginationContainerWrap ); 178 } else { 179 $slider.append( $swiperPaginationContainerWrap ); 180 } 181 182 var paginationType = 'bullets'; 183 184 if ( sliderSettings.paginationType ) { 185 paginationType = sliderSettings.paginationType; 186 } 187 188 swiperOptions.pagination = { 189 el: $swiperPagination, 190 type: paginationType, 191 clickable: true 192 }; 193 194 if ( $slider.hasClass( 'pagination-style-04' ) ) { 195 var $swiperAltArrows = $( '<div class="swiper-alt-arrow-button swiper-alt-arrow-prev" data-action="prev"></div><div class="swiper-alt-arrow-button swiper-alt-arrow-next" data-action="next"></div>' ); 196 197 $swiperPaginationWrap.find( '.swiper-pagination-inner' ).append( $swiperAltArrows ); 198 199 swiperOptions.pagination.renderCustom = function( swiper, current, total ) { 200 // Convert to string. 201 var currentStr = current.toString(); 202 var totalStr = total.toString(); 203 204 return '<div class="fraction"><div class="current">' + currentStr + '</div><div class="separator">/</div><div class="total">' + totalStr + '</div></div>'; 205 }; 206 } else if ( $slider.hasClass( 'pagination-style-03' ) ) { 207 swiperOptions.pagination.renderCustom = function( swiper, current, total ) { 208 // Convert to string. 209 var currentStr = current.toString(); 210 var totalStr = total.toString(); 211 212 // Add leading 0. 213 currentStr = currentStr.padStart( 2, '0' ); 214 totalStr = totalStr.padStart( 2, '0' ); 215 216 return '<div class="fraction"><div class="current">' + currentStr + '</div><div class="separator"></div><div class="total">' + totalStr + '</div></div>'; 217 }; 218 } else if ( $slider.hasClass( 'pagination-style-06' ) ) { 219 swiperOptions.pagination.renderCustom = function( swiper, current, total ) { 220 // Convert to string. 221 var currentStr = current.toString(); 222 var totalStr = total.toString(); 223 224 // Add leading 0. 225 currentStr = currentStr.padStart( 2, '0' ); 226 totalStr = totalStr.padStart( 2, '0' ); 227 228 return '<div class="fraction"><div class="current">' + currentStr + '<div class="separator">/</div></div><div class="total">' + totalStr + '</div></div>'; 229 }; 230 } 231 } 232 233 if ( sliderSettings.scrollbar ) { 234 var $scrollbar = $( '<div class="swiper-scrollbar"></div>' ); 235 $sliderContainer.prepend( $scrollbar ); 236 237 swiperOptions.scrollbar = { 238 el: $scrollbar, 239 draggable: true, 240 }; 241 242 swiperOptions.loop = false; 243 } 244 245 if ( sliderSettings.mousewheel ) { 246 swiperOptions.mousewheel = { 247 enabled: true 248 }; 249 } 250 251 if ( sliderSettings.vertical ) { 252 swiperOptions.direction = 'vertical'; 253 } 254 255 if ( sliderSettings.slideToClickedSlide ) { 256 swiperOptions.slideToClickedSlide = true; 257 swiperOptions.touchRatio = 0.2; 258 } 259 260 $swiper = new Swiper( $sliderContainer, swiperOptions ); 261 262 if ( sliderSettings.layerTransition ) { 263 $swiper.on( 'init', function() { 264 var index = $swiper.activeIndex; 265 var slides = $swiper.$wrapperEl.find( '.swiper-slide' ); 266 var currentSlide = slides.eq( index ); 267 currentSlide.addClass( 'animated' ); 268 } ); 269 270 $swiper.on( 'slideChangeTransitionEnd', function() { 271 var index = $swiper.activeIndex; 272 var slides = $swiper.$wrapperEl.find( '.swiper-slide' ); 273 var currentSlide = slides.eq( index ); 274 currentSlide.addClass( 'animated' ); 275 } ); 276 277 $swiper.on( 'slideChangeTransitionStart', function() { 278 var slides = $swiper.$wrapperEl.find( '.swiper-slide' ); 279 slides.removeClass( 'animated' ); 280 } ); 281 } 282 283 $swiper.init(); 284 285 if ( $slider.hasClass( 'pagination-style-04' ) ) { 286 $slider.on( 'click', '.swiper-alt-arrow-button', function() { 287 var action = $( this ).data( 'action' ); 288 289 switch ( action ) { 290 case 'prev' : 291 $swiper.slidePrev(); 292 break; 293 case 'next' : 294 $swiper.slideNext(); 295 break; 296 } 297 } ); 298 } 299
300 // Disabled auto play when focus. 301 /*if ( sliderSettings.autoplay ) { 302 $sliderContainer.hover( function() { 303 $swiper.autoplay.stop(); 304 }, function() { 305 $swiper.autoplay.start(); 306 } ); 307 }*/ 308 309 $( document ).trigger( 'GoloSwiperInit', [ $swiper, $slider, swiperOptions ] ); 310 } ); 311 312 return $swiper; 313 }; 314 }( jQuery ) 315);
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.