You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.6 KiB
JavaScript
79 lines
2.6 KiB
JavaScript
2 months ago
|
/*!
|
||
|
* SmartMenus jQuery Plugin Bootstrap Addon - v0.1.0 - March 27, 2014
|
||
|
* http://www.smartmenus.org/
|
||
|
*
|
||
|
* Copyright 2014 Vasil Dinkov, Vadikom Web Ltd.
|
||
|
* http://vadikom.com
|
||
|
*
|
||
|
* Licensed MIT
|
||
|
*/
|
||
|
|
||
|
(function($) {
|
||
|
|
||
|
// init ondomready
|
||
|
$(function() {
|
||
|
|
||
|
// init all menus
|
||
|
$('ul.smart-menu').each(function() {
|
||
|
var $this = $(this);
|
||
|
$this.addClass('sm').smartmenus({
|
||
|
|
||
|
// these are some good default options that should work for all
|
||
|
// you can, of course, tweak these as you like
|
||
|
subMenusSubOffsetX: 2,
|
||
|
subMenusSubOffsetY: -6,
|
||
|
subIndicators: false,
|
||
|
subIndicatorsPos: 'append',
|
||
|
subIndicatorsText: '',
|
||
|
collapsibleShowFunction: null,
|
||
|
collapsibleHideFunction: null,
|
||
|
rightToLeftSubMenus: $this.hasClass('navbar-right'),
|
||
|
bottomToTopSubMenus: $this.closest('.navbar').hasClass('navbar-fixed-bottom'),
|
||
|
subMenusMinWidth: '220px',
|
||
|
subMenusMaxWidth: '300px',
|
||
|
subMenusSubOffsetY: -2,
|
||
|
subMenusSubOffsetX: 0,
|
||
|
showTimeout: 0,
|
||
|
hideTimeout: 0
|
||
|
})
|
||
|
// set Bootstrap's "active" class to SmartMenus "current" items (should someone decide to enable markCurrentItem: true)
|
||
|
.find('a.current').parent().addClass('active');
|
||
|
})
|
||
|
.bind({
|
||
|
// set/unset proper Bootstrap classes for some menu elements
|
||
|
'show.smapi': function(e, menu) {
|
||
|
var $menu = $(menu),
|
||
|
$scrollArrows = $menu.dataSM('scroll-arrows'),
|
||
|
obj = $(this).data('smartmenus');
|
||
|
if ($scrollArrows) {
|
||
|
// they inherit border-color from body, so we can use its background-color too
|
||
|
$scrollArrows.css('background-color', $(document.body).css('background-color'));
|
||
|
}
|
||
|
$menu.parent().addClass('open' + (obj.isCollapsible() ? ' collapsible' : ''));
|
||
|
},
|
||
|
'hide.smapi': function(e, menu) {
|
||
|
$(menu).parent().removeClass('open collapsible');
|
||
|
},
|
||
|
// click the parent item to toggle the sub menus (and reset deeper levels and other branches on click)
|
||
|
'click.smapi': function(e, item) {
|
||
|
var obj = $(this).data('smartmenus');
|
||
|
if (obj.isCollapsible()) {
|
||
|
var $item = $(item),
|
||
|
$sub = $item.parent().dataSM('sub');
|
||
|
if ($sub && $sub.dataSM('shown-before') && $sub.is(':visible')) {
|
||
|
obj.itemActivate($item);
|
||
|
obj.menuHide($sub);
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
// fix collapsible menu detection for Bootstrap 3
|
||
|
$.SmartMenus.prototype.isCollapsible = function() {
|
||
|
return this.$firstLink.parent().css('float') != 'left';
|
||
|
};
|
||
|
|
||
|
})(jQuery);
|