You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
3.5 KiB

/*!
* remark (http://getbootstrapadmin.com/remark)
* Copyright 2016 amazingsurge
* Licensed under the Themeforest Standard Licenses
*/
(function(window, document, $) {
'use strict';
var $body = $('body'),
$html = $('html');
$.site.menubar = {
opened: null,
top: false,
$instance: null,
auto: true,
init: function() {
$html.removeClass('css-menubar').addClass('js-menubar');
this.$instance = $(".site-menubar");
if (this.$instance.length === 0) {
return;
}
var self = this;
this.$instance.on('changed.site.menubar', function() {
self.update();
});
this.hoverscroll.enable();
this.change();
},
change: function() {
var breakpoint = Breakpoints.current();
if ($body.hasClass('site-menubar-keep') && $body.hasClass('site-menubar-hide')) {
this.hide();
if (breakpoint && $body.hasClass('site-menubar-unfold')) {
if (breakpoint.name === "xs") {
this.hide();
}
}
} else {
this.reset();
if (breakpoint) {
if (breakpoint.name === "xs") {
this.hide();
} else {
this.unfold();
}
}
}
},
animate: function(doing, callback) {
var self = this;
$body.addClass('site-menubar-changing');
doing.call(self);
this.$instance.trigger('changing.site.menubar');
setTimeout(function() {
callback.call(self);
$body.removeClass('site-menubar-changing');
self.$instance.trigger('changed.site.menubar');
}, 500);
},
reset: function() {
this.opened = null;
$body.removeClass('site-menubar-hide site-menubar-unfold');
},
hide: function() {
if (this.opened !== false) {
this.animate(function() {
$body.removeClass('site-menubar-unfold').addClass('site-menubar-hide');
this.opened = false;
}, function() {
});
}
},
unfold: function() {
if (this.opened !== true) {
this.animate(function() {
$body.removeClass('site-menubar-hide').addClass('site-menubar-unfold');
this.opened = true;
}, function() {
$.site.resize();
});
}
},
toggle: function() {
var breakpoint = Breakpoints.current();
var opened = this.opened;
if (!opened) {
this.unfold();
} else {
this.hide();
}
},
update: function() {
this.hoverscroll.update();
},
hoverscroll: {
api: null,
init: function() {
this.api = $.site.menubar.$instance.children('.site-menubar-body').asHoverScroll({
namespace: 'hoverscorll',
direction: 'vertical',
list: '.site-menu',
item: '> .site-menu-item',
exception: '.site-menu-sub',
fixed: false,
boundary: 100,
onEnter: function() {
//$(this).siblings().removeClass('hover');
//$(this).addClass('hover');
},
onLeave: function() {
//$(this).removeClass('hover');
}
}).data('asHoverScroll');
},
update: function() {
if (this.api) {
this.api.update();
}
},
enable: function() {
if (!this.api) {
this.init();
}
if (this.api) {
this.api.enable();
}
},
disable: function() {
if (this.api) {
this.api.disable();
}
}
}
};
})(window, document, jQuery);