123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- 'use strict';
- import $ from 'jquery';
- 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`,
- applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.
- items.each(function() {
- var $item = $(this),
- $sub = $item.children('ul');
- if ($sub.length) {
- $item.addClass(hasSubClass);
- if(applyAria) {
- $item.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': 'menubar'
- });
- 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, > li > ul, .menu, .menu > li, [data-submenu] > li')
- .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)
- .removeAttr('data-submenu').css('display', '');
- }
- }
- export {Nest};
|