103 lines
2.0 KiB
JavaScript
103 lines
2.0 KiB
JavaScript
/**
|
|
* HSScrollBar component.
|
|
*
|
|
* @author Htmlstream
|
|
* @version 1.0
|
|
* @requires malihu jquery custom scrollbar plugin (v3.1.5.)
|
|
*
|
|
*/
|
|
;(function ($) {
|
|
'use strict';
|
|
|
|
$.HSCore.components.HSScrollBar = {
|
|
|
|
/**
|
|
* Base configuration.
|
|
*
|
|
* @private
|
|
*/
|
|
_baseConfig: {
|
|
scrollInertia: 150,
|
|
theme: 'minimal-dark'
|
|
},
|
|
|
|
/**
|
|
* Collection of all initalized items on the page.
|
|
*
|
|
* @private
|
|
*/
|
|
_pageCollection: $(),
|
|
|
|
|
|
/**
|
|
* Initialization of HSScrollBar component.
|
|
*
|
|
* @param {jQuery} collection
|
|
* @param {Object} config
|
|
*
|
|
* @return {jQuery}
|
|
*/
|
|
init: function (collection, config) {
|
|
|
|
if(!collection || !collection.length) return;
|
|
|
|
var self = this;
|
|
|
|
config = config && $.isPlainObject(config) ? $.extend(true, {}, config, this._baseConfig) : this._baseConfig;
|
|
|
|
return collection.each(function(i, el){
|
|
|
|
var $this = $(el),
|
|
scrollBar,
|
|
scrollBarThumb,
|
|
itemConfig = $.extend(true, {}, config, $this.data());
|
|
|
|
|
|
$this.mCustomScrollbar(itemConfig);
|
|
|
|
scrollBar = $this.find('.mCSB_scrollTools');
|
|
scrollBarThumb = $this.find('.mCSB_dragger_bar');
|
|
|
|
if(scrollBar.length && $this.data('scroll-classes')) {
|
|
scrollBar.addClass($this.data('scroll-classes'));
|
|
}
|
|
|
|
if(scrollBarThumb.length && $this.data('scroll-thumb-classes')) {
|
|
scrollBarThumb.addClass($this.data('scroll-thumb-classes'));
|
|
}
|
|
|
|
self._pageCollection = self._pageCollection.add($this);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
/**
|
|
* Destroys the component.
|
|
*
|
|
* @param {jQuery} collection
|
|
*
|
|
* @return {jQuery}
|
|
*/
|
|
destroy: function( collection ) {
|
|
|
|
if( !collection && !collection.length ) return $();
|
|
|
|
var _self = this;
|
|
|
|
return collection.each(function(i, el){
|
|
|
|
var $this = $(el);
|
|
|
|
$this.mCustomScrollbar('destroy');
|
|
|
|
_self._pageCollection = _self._pageCollection.not( $this );
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})(jQuery);
|