@@ -34,32 +34,39 @@ define([
34
34
} ,
35
35
36
36
_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 ;
43
43
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 ;
47
47
element . addClass ( selector ) ;
48
48
selector = '.' + selector ;
49
49
if ( $ ( 'body' ) . hasClass ( 'rtl' ) ) {
50
50
element . attr ( 'dir' , 'rtl' ) ;
51
51
element . data ( 'rtl' , true ) ;
52
52
}
53
53
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 ) ;
54
61
if ( iClass === undefined ) {
55
62
element . children ( ) . addClass ( 'alo-item' ) ;
56
63
var iClass = '.alo-item' ;
57
64
}
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}' : '' ;
63
70
$head . append ( '<style type="text/css" >' + style + '</style>' ) ;
64
71
style = '' ;
65
72
if ( options . slidesToShow ) {
@@ -91,9 +98,9 @@ define([
91
98
if ( responsive == undefined ) return ;
92
99
var length = Object . keys ( responsive ) . length ;
93
100
$ . 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 ;
97
104
$ . each ( value , function ( size , num ) { minWith = parseInt ( size ) + 1 ; col = num ; } ) ;
98
105
if ( key + 2 < length ) {
99
106
$ . each ( responsive [ key + 1 ] , function ( size , num ) { maxWith = size ; col = num ; } ) ;
@@ -114,9 +121,9 @@ define([
114
121
115
122
getPesponsive : function ( options ) {
116
123
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 = [ ] ;
120
127
$ . each ( responsive , function ( key , value ) {
121
128
var breakpoint = { } ;
122
129
breakpoint [ value . breakpoint ] = parseInt ( value . settings . slidesToShow ) ;
@@ -130,8 +137,14 @@ define([
130
137
el . slick ( "refresh" ) ;
131
138
return ;
132
139
}
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
+ }
135
148
if ( lazy . length ) {
136
149
lazy . each ( function ( index ) {
137
150
$ ( this ) . data ( 'lazy' , $ ( this ) . data ( 'src' ) ) ;
@@ -168,6 +181,39 @@ define([
168
181
169
182
} ) ;
170
183
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
+
171
217
return $ . magepow . gridSlider ;
172
218
173
219
} ) ;
0 commit comments