@@ -34,32 +34,39 @@ define([
3434 } ,
3535
3636 _initSlider : function ( ) {
37- var options = this . options ;
38- var useIntersectionObserver = options . useIntersectionObserver ;
39- var unobserve = options . unobserve ;
40- var self = this ;
41- var $head = $ ( 'head' ) ;
42- var elements = options . selector ? self . element . find ( options . selector ) : self . element ;
37+ var options = this . options ,
38+ useIntersectionObserver = options . useIntersectionObserver ,
39+ unobserve = options . unobserve ,
40+ self = this ,
41+ $head = $ ( 'head' ) ,
42+ elements = options . selector ? self . element . find ( options . selector ) : self . element ;
4343 elements . each ( function ( ) {
44- var element = $ ( this ) ;
45- var selector = 'grid-slider-' + self . _uniqid ( ) ;
46- var styleId = selector ;
44+ var element = $ ( this ) ,
45+ selector = 'grid-slider-' + self . _uniqid ( ) ,
46+ styleId = selector ;
4747 element . addClass ( selector ) ;
4848 selector = '.' + selector ;
4949 if ( $ ( 'body' ) . hasClass ( 'rtl' ) ) {
5050 element . attr ( 'dir' , 'rtl' ) ;
5151 element . data ( 'rtl' , true ) ;
5252 }
5353 var options = element . data ( ) ;
54+ if ( $ . isEmptyObject ( options ) ) {
55+ let gridslider = element . closest ( 'grid-slider' ) ;
56+ if ( gridslider . length ) {
57+ options = gridslider . data ( ) ;
58+ }
59+ }
60+ console . log ( options ) ;
5461 if ( iClass === undefined ) {
5562 element . children ( ) . addClass ( 'alo-item' ) ;
5663 var iClass = '.alo-item' ;
5764 }
58- var rows = ( ( options || { } ) . rows === void 0 ) ? 1 : options . rows ;
59- var classes = rows ? selector + ' ' + iClass : selector + ' > ' + iClass ;
60- var padding = options . padding ;
61- var float = $ ( 'body' ) . hasClass ( 'rtl' ) ? 'right' : 'left' ;
62- var style = ( typeof padding !== 'undefined' ) ? classes + '{float: ' + float + '; padding: 0 ' + padding + 'px; box-sizing: border-box} ' + selector + '{margin: 0 -' + padding + 'px}' : '' ;
65+ var rows = ( ( options || { } ) . rows === void 0 ) ? 1 : options . rows ,
66+ classes = rows ? selector + ' ' + iClass : selector + ' > ' + iClass ,
67+ padding = options . padding ,
68+ float = $ ( 'body' ) . hasClass ( 'rtl' ) ? 'right' : 'left' ,
69+ style = ( typeof padding !== 'undefined' ) ? classes + '{float: ' + float + '; padding: 0 ' + padding + 'px; box-sizing: border-box} ' + selector + '{margin: 0 -' + padding + 'px}' : '' ;
6370 $head . append ( '<style type="text/css" >' + style + '</style>' ) ;
6471 style = '' ;
6572 if ( options . slidesToShow ) {
@@ -91,9 +98,9 @@ define([
9198 if ( responsive == undefined ) return ;
9299 var length = Object . keys ( responsive ) . length ;
93100 $ . each ( responsive , function ( key , value ) {
94- var col = 0 ;
95- var maxWith = 0 ;
96- var minWith = 0 ;
101+ var col = 0 ,
102+ maxWith = 0 ,
103+ minWith = 0 ;
97104 $ . each ( value , function ( size , num ) { minWith = parseInt ( size ) + 1 ; col = num ; } ) ;
98105 if ( key + 2 < length ) {
99106 $ . each ( responsive [ key + 1 ] , function ( size , num ) { maxWith = size ; col = num ; } ) ;
@@ -114,9 +121,9 @@ define([
114121
115122 getPesponsive : function ( options ) {
116123 if ( ! options . slidesToShow || ! options . responsive ) return options . responsive ;
117- var responsive = options . responsive ;
118- var length = Object . keys ( responsive ) . length ;
119- var gridResponsive = [ ] ;
124+ var responsive = options . responsive ,
125+ length = Object . keys ( responsive ) . length ,
126+ gridResponsive = [ ] ;
120127 $ . each ( responsive , function ( key , value ) {
121128 var breakpoint = { } ;
122129 breakpoint [ value . breakpoint ] = parseInt ( value . settings . slidesToShow ) ;
@@ -130,8 +137,14 @@ define([
130137 el . slick ( "refresh" ) ;
131138 return ;
132139 }
133- var options = el . data ( ) ;
134- var lazy = el . find ( 'img.lazyload' ) ;
140+ var options = el . data ( ) ,
141+ lazy = el . find ( 'img.lazyload' ) ;
142+ if ( $ . isEmptyObject ( options ) ) {
143+ let gridslider = el . closest ( 'grid-slider' ) ;
144+ if ( gridslider . length ) {
145+ options = gridslider . data ( ) ;
146+ }
147+ }
135148 if ( lazy . length ) {
136149 lazy . each ( function ( index ) {
137150 $ ( this ) . data ( 'lazy' , $ ( this ) . data ( 'src' ) ) ;
@@ -168,6 +181,39 @@ define([
168181
169182 } ) ;
170183
184+ if ( ! customElements . get ( 'grid-slider' ) ) {
185+ class GridSlider extends HTMLElement {
186+ constructor ( ) {
187+ super ( ) ;
188+ var $this = this ;
189+ document . addEventListener ( "GridSliderUpdated" , function ( event ) {
190+ $this . initialized ( ) ;
191+ } ) ;
192+ }
193+
194+ connectedCallback ( ) {
195+ if ( this . slick ) {
196+ $ ( this ) . slick ( "refresh" )
197+ } else {
198+ if ( ! this . classList . contains ( 'ajax' ) ) this . initialized ( ) ;
199+ }
200+ }
201+
202+ initialized ( ) {
203+
204+ $ ( this ) . not ( ".exception, .grid-init, .slick-initialized" ) . each ( function ( ) {
205+ $ . magepow . gridSlider ( {
206+ selector : '.grid-slider' ,
207+ useIntersectionObserver : false ,
208+ unobserve : true ,
209+ } , $ ( this ) ) ;
210+ } ) ;
211+ }
212+
213+ }
214+ customElements . define ( "grid-slider" , GridSlider ) ;
215+ }
216+
171217 return $ . magepow . gridSlider ;
172218
173219} ) ;
0 commit comments