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
165 lines
3.5 KiB
9 years ago
|
/*!
|
||
|
* 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);
|