tbg-foundation-sites
Version:
TBG fork of the most advanced responsive front-end framework in the world.
82 lines (68 loc) • 2.49 kB
JavaScript
;
!function($) {
const Nest = {
Feather(menu, type = 'zf') {
menu.attr('role', 'menubar');
var items = menu.find('li').attr({'role': 'menuitem'}),
subMenuClass = `is-${type}-submenu`,
subItemClass = `${subMenuClass}-item`,
hasSubClass = `is-${type}-submenu-parent`;
items.each(function() {
var $item = $(this),
$sub = $item.children('ul');
if ($sub.length) {
$item
.addClass(hasSubClass)
.attr({
'aria-haspopup': true,
'aria-label': $item.children('a:first').text()
});
// Note: Drilldowns behave differently in how they hide, and so need
// additional attributes. We should look if this possibly over-generalized
// utility (Nest) is appropriate when we rework menus in 6.4
if(type === 'drilldown') {
$item.attr({'aria-expanded': false});
}
$sub
.addClass(`submenu ${subMenuClass}`)
.attr({
'data-submenu': '',
'role': 'menu'
});
if(type === 'drilldown') {
$sub.attr({'aria-hidden': true});
}
}
if ($item.parent('[data-submenu]').length) {
$item.addClass(`is-submenu-item ${subItemClass}`);
}
});
return;
},
Burn(menu, type) {
var //items = menu.find('li'),
subMenuClass = `is-${type}-submenu`,
subItemClass = `${subMenuClass}-item`,
hasSubClass = `is-${type}-submenu-parent`;
menu
.find('>li, .menu, .menu > li')
.removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)
.removeAttr('data-submenu').css('display', '');
// console.log( menu.find('.' + subMenuClass + ', .' + subItemClass + ', .has-submenu, .is-submenu-item, .submenu, [data-submenu]')
// .removeClass(subMenuClass + ' ' + subItemClass + ' has-submenu is-submenu-item submenu')
// .removeAttr('data-submenu'));
// items.each(function(){
// var $item = $(this),
// $sub = $item.children('ul');
// if($item.parent('[data-submenu]').length){
// $item.removeClass('is-submenu-item ' + subItemClass);
// }
// if($sub.length){
// $item.removeClass('has-submenu');
// $sub.removeClass('submenu ' + subMenuClass).removeAttr('data-submenu');
// }
// });
}
}
Foundation.Nest = Nest;
}(jQuery);