@@ -16,13 +16,15 @@ class LetMeScroll {
16
16
height : "500px"
17
17
} ,
18
18
scroll : {
19
- bottomOffset : 0
19
+ bottomOffset : 0 ,
20
+ autoHide : false
20
21
}
21
22
} ,
22
23
onEnd : function ( ) { } ,
23
24
onTop : function ( ) { } ,
24
25
onMove : function ( ) { } ,
25
- onDragStart : function ( ) { }
26
+ onDragStart : function ( ) { } ,
27
+ onDragStop : function ( ) { }
26
28
} ;
27
29
28
30
// Scroll Random ID
@@ -70,6 +72,13 @@ class LetMeScroll {
70
72
}
71
73
}
72
74
75
+ /*
76
+ ** Hide Elements
77
+ */
78
+ var hideElement = this . hideElement = function hideElement ( element , value ) {
79
+ element . style . opacity = value ;
80
+ }
81
+
73
82
/*
74
83
** Calculate Scrollbar Height
75
84
*/
@@ -147,7 +156,6 @@ class LetMeScroll {
147
156
// oTop callback()
148
157
if ( evt . target . scrollTop <= 0 ) { if ( typeof _this . onTop == "function" ) { _this . onTop ( ) ; } }
149
158
150
-
151
159
}
152
160
153
161
/*
@@ -169,7 +177,13 @@ class LetMeScroll {
169
177
var stopDrag = this . stopDrag = function stopDrag ( evt ) {
170
178
171
179
// Dispatch event when drag is stoppped
172
- scrollerBeingDragged = false ;
180
+ if ( scrollerBeingDragged == true )
181
+ {
182
+ scrollerBeingDragged = false ;
183
+ // OnDragStop callback()
184
+ if ( typeof _this . onDragStop == "function" ) { _this . onDragStop ( ) ; }
185
+ }
186
+
173
187
}
174
188
175
189
/*
@@ -223,48 +237,69 @@ class LetMeScroll {
223
237
let selectorElementHTML = selectorElement . innerHTML ;
224
238
selectorElement . innerHTML = "" ;
225
239
226
- // Criar uma div e colocar la todo o conteudo
240
+ // Creates div main div
227
241
selectorElement . insertAdjacentHTML ( "afterbegin" , "<div id='scroll_inner_" + randomID + "' class='lms_content_wrapper'></div>" ) ;
228
242
let scrollInner = document . getElementById ( "scroll_inner_" + randomID ) ;
229
243
230
- scrollInner . insertAdjacentHTML ( "afterbegin" , "<div id='scroll_content_" + randomID + "' class='lms_content'></div>" ) ;
244
+ // Creates div and track div
245
+ scrollInner . insertAdjacentHTML ( "afterbegin" , "<div id='scroll_content_" + randomID + "' class='lms_content'></div> <div id='lms_track_" + randomID + "' class='lms_scroll_track'></div>" ) ;
231
246
let scrollContent = document . getElementById ( "scroll_content_" + randomID ) ;
247
+ let scrollTrack = document . getElementById ( "lms_track_" + randomID ) ;
248
+
249
+ // Content from original elements into the created elements
232
250
scrollContent . innerHTML = selectorElementHTML ;
233
251
252
+ // Define variables from new elements
253
+ this . scrollTrack = scrollTrack ;
234
254
this . scrollElement = scrollInner ;
235
255
this . scrollContent = scrollContent ;
236
256
this . mainElement = selectorElement ;
237
257
238
258
scrollContainer = selectorElement ;
239
259
scrollContentWrapper = scrollInner ;
240
260
261
+ // Calculate scrollbar height
262
+ scrollerHeight = calculateScrollerHeight ( ) ;
263
+
264
+ // Check if scrollbar is needed based on height
265
+ if ( scrollerHeight / scrollContainer . offsetHeight < 1 ) {
266
+
241
267
// Creat scrollbar div
242
- scroller = document . createElement ( " div") ;
243
- scroller . className = 'lms_scroller' ;
268
+ scrollTrack . insertAdjacentHTML ( "beforeend" , "< div id='lms_scroller_" + randomID + "' class='lms_scroller'></div> ") ;
269
+ scroller = document . getElementById ( "lms_scroller_" + randomID ) ;
244
270
this . scroller = scroller ;
245
271
246
- // Calculate scrollbar height
247
- scrollerHeight = calculateScrollerHeight ( ) ;
272
+ // Apply scrollbar height
273
+ scroller . style . height = scrollerHeight + 'px' ;
274
+
275
+ // Show scroll path divot
276
+ scrollContainer . className += ' lms_showScroll' ;
248
277
249
- if ( scrollerHeight / scrollContainer . offsetHeight < 1 ) {
250
-
251
- // Apply scrollbar height
252
- scroller . style . height = scrollerHeight + 'px' ;
278
+ // Attach related draggable listeners
279
+ scroller . addEventListener ( 'mousedown' , startDrag ) ;
280
+ window . addEventListener ( 'mouseup' , stopDrag ) ;
281
+ window . addEventListener ( 'mousemove' , scrollBarScroll ) ;
282
+ }
283
+
284
+ // Add global listeners
285
+ scrollContentWrapper . addEventListener ( 'scroll' , moveScroller ) ;
253
286
254
- // Append scroller to scrollContainer div
255
- scrollContainer . appendChild ( scroller ) ;
256
-
257
- // Show scroll path divot
258
- scrollContainer . className += ' lms_showScroll' ;
259
-
260
- // Attach related draggable listeners
261
- scroller . addEventListener ( 'mousedown' , startDrag ) ;
262
- window . addEventListener ( 'mouseup' , stopDrag ) ;
263
- window . addEventListener ( 'mousemove' , scrollBarScroll ) ;
287
+ // Check if options are available
288
+ if ( options . config . scroll . autoHide == true )
289
+ {
290
+ this . hideElement ( scroller , 0 ) ;
291
+ if ( ! androidOrIOS ( ) ) // Check if it is mobile
292
+ {
293
+ scrollContainer . addEventListener ( "mouseover" , function ( ) { _this . hideElement ( scroller , 1 ) ; } ) ;
294
+ scrollContainer . addEventListener ( "mouseout" , function ( ) { _this . hideElement ( scroller , 0 ) ; } ) ;
295
+ } else {
296
+ scrollContainer . addEventListener ( "touchstart" , function ( ) { _this . hideElement ( scroller , 1 ) ; } ) ;
297
+ scrollContainer . addEventListener ( "touchend" , function ( ) { _this . hideElement ( scroller , 0 ) ; } ) ;
264
298
}
265
-
266
- // *** Listeners ***
267
- scrollContentWrapper . addEventListener ( 'scroll' , moveScroller ) ;
299
+
300
+ }
301
+
302
+
268
303
}
269
304
270
305
// Init
0 commit comments