Comparing version 8.5.14 to 8.5.15
@@ -8,13 +8,5 @@ import * as pack from '../../../package.json'; | ||
import * as media from '../../_modules/matchmedia'; | ||
import { | ||
type, | ||
extend, | ||
transitionend, | ||
uniqueId, | ||
valueOrFn, | ||
} from '../../_modules/helpers'; | ||
import { type, extend, transitionend, uniqueId, valueOrFn, } from '../../_modules/helpers'; | ||
// Add the translations. | ||
translate(); | ||
/** | ||
@@ -34,3 +26,2 @@ * Class for a mobile menu. | ||
this.conf = extend(configs, Mmenu.configs); | ||
// Methods to expose in the API. | ||
@@ -46,3 +37,2 @@ this._api = [ | ||
]; | ||
// Storage objects for nodes, variables, hooks and click handlers. | ||
@@ -53,3 +43,2 @@ this.node = {}; | ||
this.clck = []; | ||
// Get menu node from string or element. | ||
@@ -99,5 +88,3 @@ this.node.menu = | ||
// Open current and all vertical parent panels. | ||
DOM.parents(panel, '.mm-listitem_vertical').forEach(function ( | ||
listitem | ||
) { | ||
DOM.parents(panel, '.mm-listitem_vertical').forEach(function (listitem) { | ||
listitem.classList.add('mm-listitem_opened'); | ||
@@ -109,7 +96,3 @@ DOM.children(listitem, '.mm-panel').forEach(function (panel) { | ||
// Open first non-vertical parent panel. | ||
var parents = DOM.parents(panel, '.mm-panel').filter(function ( | ||
panel | ||
) { | ||
return !panel.parentElement.matches('.mm-listitem_vertical'); | ||
}); | ||
var parents = DOM.parents(panel, '.mm-panel').filter(function (panel) { return !panel.parentElement.matches('.mm-listitem_vertical'); }); | ||
this.trigger('openPanel:start', [panel]); | ||
@@ -121,16 +104,14 @@ if (parents.length) { | ||
// Open a "horizontal" panel. | ||
} else { | ||
} | ||
else { | ||
if (panel.matches('.mm-panel_opened')) { | ||
return; | ||
} | ||
var panels = DOM.children(this.node.pnls, '.mm-panel'), | ||
current_1 = DOM.children(this.node.pnls, '.mm-panel_opened')[0]; | ||
var panels = DOM.children(this.node.pnls, '.mm-panel'), current_1 = DOM.children(this.node.pnls, '.mm-panel_opened')[0]; | ||
// Close all child panels. | ||
panels | ||
.filter(function (parent) { | ||
return parent !== panel; | ||
}) | ||
.filter(function (parent) { return parent !== panel; }) | ||
.forEach(function (parent) { | ||
parent.classList.remove('mm-panel_opened-parent'); | ||
}); | ||
parent.classList.remove('mm-panel_opened-parent'); | ||
}); | ||
// Open all parent panels. | ||
@@ -141,5 +122,3 @@ var parent_1 = panel['mmParent']; | ||
if (parent_1) { | ||
if ( | ||
!parent_1.parentElement.matches('.mm-listitem_vertical') | ||
) { | ||
if (!parent_1.parentElement.matches('.mm-listitem_vertical')) { | ||
parent_1.classList.add('mm-panel_opened-parent'); | ||
@@ -155,11 +134,7 @@ } | ||
panels | ||
.filter(function (hidden) { | ||
return hidden !== current_1; | ||
}) | ||
.filter(function (hidden) { | ||
return hidden !== panel; | ||
}) | ||
.filter(function (hidden) { return hidden !== current_1; }) | ||
.filter(function (hidden) { return hidden !== panel; }) | ||
.forEach(function (hidden) { | ||
hidden.classList.add('mm-hidden'); | ||
}); | ||
hidden.classList.add('mm-hidden'); | ||
}); | ||
panel.classList.remove('mm-hidden'); | ||
@@ -177,3 +152,4 @@ /** Start opening the panel. */ | ||
panel.classList.remove('mm-panel_opened-parent'); | ||
} else { | ||
} | ||
else { | ||
if (current_1) { | ||
@@ -201,12 +177,9 @@ current_1.classList.add('mm-panel_opened-parent'); | ||
// Callback | ||
transitionend( | ||
panel, | ||
function () { | ||
openPanelFinish_1(); | ||
}, | ||
_this.conf.transitionDuration | ||
); | ||
transitionend(panel, function () { | ||
openPanelFinish_1(); | ||
}, _this.conf.transitionDuration); | ||
openPanelStart_1(); | ||
}, this.conf.openingInterval); | ||
} else { | ||
} | ||
else { | ||
openPanelStart_1(); | ||
@@ -251,4 +224,3 @@ openPanelFinish_1(); | ||
// Close all "horizontal" panels. | ||
var panels = DOM.children(this.node.pnls, '.mm-panel'), | ||
opened = panel ? panel : panels[0]; | ||
var panels = DOM.children(this.node.pnls, '.mm-panel'), opened = panel ? panel : panels[0]; | ||
DOM.children(this.node.pnls, '.mm-panel').forEach(function (panel) { | ||
@@ -275,7 +247,5 @@ if (panel !== opened) { | ||
if (listitem.matches('.mm-listitem_vertical')) { | ||
this[ | ||
listitem.matches('.mm-listitem_opened') | ||
? 'closePanel' | ||
: 'openPanel' | ||
](panel); | ||
this[listitem.matches('.mm-listitem_opened') | ||
? 'closePanel' | ||
: 'openPanel'](panel); | ||
} | ||
@@ -291,5 +261,3 @@ }; | ||
// First, remove the selected class from all listitems. | ||
DOM.find(this.node.menu, '.mm-listitem_selected').forEach(function ( | ||
li | ||
) { | ||
DOM.find(this.node.menu, '.mm-listitem_selected').forEach(function (li) { | ||
li.classList.remove('mm-listitem_selected'); | ||
@@ -393,27 +361,19 @@ }); | ||
Object.keys(this.opts.extensions).forEach(function (query) { | ||
var classnames = _this.opts.extensions[query].map(function ( | ||
extension | ||
) { | ||
return 'mm-menu_' + extension; | ||
}); | ||
var classnames = _this.opts.extensions[query].map(function (extension) { return 'mm-menu_' + extension; }); | ||
if (classnames.length) { | ||
media.add( | ||
query, | ||
function () { | ||
// IE11: | ||
classnames.forEach(function (classname) { | ||
_this.node.menu.classList.add(classname); | ||
}); | ||
// Better browsers: | ||
// this.node.menu.classList.add(...classnames); | ||
}, | ||
function () { | ||
// IE11: | ||
classnames.forEach(function (classname) { | ||
_this.node.menu.classList.remove(classname); | ||
}); | ||
// Better browsers: | ||
// this.node.menu.classList.remove(...classnames); | ||
} | ||
); | ||
media.add(query, function () { | ||
// IE11: | ||
classnames.forEach(function (classname) { | ||
_this.node.menu.classList.add(classname); | ||
}); | ||
// Better browsers: | ||
// this.node.menu.classList.add(...classnames); | ||
}, function () { | ||
// IE11: | ||
classnames.forEach(function (classname) { | ||
_this.node.menu.classList.remove(classname); | ||
}); | ||
// Better browsers: | ||
// this.node.menu.classList.remove(...classnames); | ||
}); | ||
} | ||
@@ -439,6 +399,4 @@ }); | ||
DOM.children(this.node.menu).forEach(function (panel) { | ||
if ( | ||
_this.conf.panelNodetype.indexOf(panel.nodeName.toLowerCase()) > | ||
-1 | ||
) { | ||
if (_this.conf.panelNodetype.indexOf(panel.nodeName.toLowerCase()) > | ||
-1) { | ||
panels.append(panel); | ||
@@ -469,9 +427,6 @@ } | ||
if (panel && panel.matches('.mm-panel')) { | ||
if ( | ||
anchor.parentElement.matches( | ||
'.mm-listitem_vertical' | ||
) | ||
) { | ||
if (anchor.parentElement.matches('.mm-listitem_vertical')) { | ||
_this.togglePanel(panel); | ||
} else { | ||
} | ||
else { | ||
_this.openPanel(panel); | ||
@@ -481,3 +436,4 @@ } | ||
} | ||
} catch (err) {} | ||
} | ||
catch (err) { } | ||
} | ||
@@ -511,17 +467,7 @@ } | ||
// Find panel > panel | ||
children_1.push.apply( | ||
children_1, | ||
DOM.children(panel, '.' + this.conf.classNames.panel) | ||
); | ||
children_1.push.apply(children_1, DOM.children(panel, '.' + this.conf.classNames.panel)); | ||
// Find panel listitem > panel | ||
DOM.children(panel, '.mm-listview').forEach(function ( | ||
listview | ||
) { | ||
DOM.children(listview, '.mm-listitem').forEach(function ( | ||
listitem | ||
) { | ||
children_1.push.apply( | ||
children_1, | ||
DOM.children(listitem, panelNodetype) | ||
); | ||
DOM.children(panel, '.mm-listview').forEach(function (listview) { | ||
DOM.children(listview, '.mm-listitem').forEach(function (listitem) { | ||
children_1.push.apply(children_1, DOM.children(listitem, panelNodetype)); | ||
}); | ||
@@ -559,4 +505,3 @@ }); | ||
// Vertical panel. | ||
var vertical = | ||
panel.matches('.' + this.conf.classNames.vertical) || | ||
var vertical = panel.matches('.' + this.conf.classNames.vertical) || | ||
!this.opts.slidingSubmenus; | ||
@@ -585,3 +530,4 @@ panel.classList.remove(this.conf.classNames.vertical); | ||
} | ||
} else { | ||
} | ||
else { | ||
this.node.pnls.append(panel); | ||
@@ -600,5 +546,3 @@ } | ||
/** The open link. */ | ||
var button = DOM.create( | ||
'a.mm-btn.mm-btn_next.mm-listitem__btn' | ||
); | ||
var button = DOM.create('a.mm-btn.mm-btn_next.mm-listitem__btn'); | ||
button.setAttribute('href', '#' + panel.id); | ||
@@ -610,6 +554,3 @@ // If the item has no link, | ||
button.innerHTML = item.innerHTML; | ||
parent.insertBefore( | ||
button, | ||
item.nextElementSibling | ||
); | ||
parent.insertBefore(button, item.nextElementSibling); | ||
item.remove(); | ||
@@ -619,6 +560,3 @@ } | ||
else { | ||
parent.insertBefore( | ||
button, | ||
DOM.children(parent, '.mm-panel')[0] | ||
); | ||
parent.insertBefore(button, DOM.children(parent, '.mm-panel')[0]); | ||
} | ||
@@ -654,6 +592,3 @@ } | ||
if (panel.getAttribute('data-mm-parent')) { | ||
parentPanel = DOM.find( | ||
this.node.pnls, | ||
panel.getAttribute('data-mm-parent') | ||
)[0]; | ||
parentPanel = DOM.find(this.node.pnls, panel.getAttribute('data-mm-parent'))[0]; | ||
} | ||
@@ -708,5 +643,5 @@ // if (panel.dataset.mmParent) { // IE10 has no dataset | ||
panel.getAttribute('data-mm-title') || | ||
(opener ? opener.textContent : '') || | ||
this.i18n(this.opts.navbar.title) || | ||
this.i18n('Menu'); | ||
(opener ? opener.textContent : '') || | ||
this.i18n(this.opts.navbar.title) || | ||
this.i18n('Menu'); | ||
switch (this.opts.navbar.titleLink) { | ||
@@ -742,7 +677,3 @@ case 'anchor': | ||
listitem.classList.add('mm-listitem'); | ||
DOM.reClass( | ||
listitem, | ||
_this.conf.classNames.selected, | ||
'mm-listitem_selected' | ||
); | ||
DOM.reClass(listitem, _this.conf.classNames.selected, 'mm-listitem_selected'); | ||
DOM.children(listitem, 'a, span').forEach(function (item) { | ||
@@ -765,5 +696,3 @@ if (!item.matches('.mm-btn')) { | ||
/** The selected listitem(s). */ | ||
var listitems = this.node.pnls.querySelectorAll( | ||
'.mm-listitem_selected' | ||
); | ||
var listitems = this.node.pnls.querySelectorAll('.mm-listitem_selected'); | ||
/** The last selected listitem. */ | ||
@@ -796,78 +725,52 @@ var lastitem = null; | ||
this.trigger('initAnchors:before'); | ||
document.addEventListener( | ||
'click', | ||
function (evnt) { | ||
/** The clicked element. */ | ||
var target = evnt.target.closest('a[href]'); | ||
if (!target) { | ||
return; | ||
} | ||
/** Arguments passed to the bound methods. */ | ||
var args = { | ||
inMenu: target.closest('.mm-menu') === _this.node.menu, | ||
inListview: target.matches('.mm-listitem > a'), | ||
toExternal: | ||
target.matches('[rel="external"]') || | ||
target.matches('[target="_blank"]'), | ||
}; | ||
var onClick = { | ||
close: null, | ||
setSelected: null, | ||
preventDefault: | ||
target.getAttribute('href').slice(0, 1) == '#', | ||
}; | ||
// Find hooked behavior. | ||
for (var c = 0; c < _this.clck.length; c++) { | ||
var click = _this.clck[c].call(_this, target, args); | ||
if (click) { | ||
if (typeof click == 'boolean') { | ||
evnt.preventDefault(); | ||
return; | ||
} | ||
if (type(click) == 'object') { | ||
onClick = extend(click, onClick); | ||
} | ||
} | ||
} | ||
// Default behavior for anchors in lists. | ||
if (args.inMenu && args.inListview && !args.toExternal) { | ||
// Set selected item, Default: true | ||
if ( | ||
valueOrFn( | ||
target, | ||
_this.opts.onClick.setSelected, | ||
onClick.setSelected | ||
) | ||
) { | ||
_this.setSelected(target.parentElement); | ||
} | ||
// Prevent default / don't follow link. Default: false. | ||
if ( | ||
valueOrFn( | ||
target, | ||
_this.opts.onClick.preventDefault, | ||
onClick.preventDefault | ||
) | ||
) { | ||
document.addEventListener('click', function (evnt) { | ||
/** The clicked element. */ | ||
var target = evnt.target.closest('a[href]'); | ||
if (!target) { | ||
return; | ||
} | ||
/** Arguments passed to the bound methods. */ | ||
var args = { | ||
inMenu: target.closest('.mm-menu') === _this.node.menu, | ||
inListview: target.matches('.mm-listitem > a'), | ||
toExternal: target.matches('[rel="external"]') || | ||
target.matches('[target="_blank"]'), | ||
}; | ||
var onClick = { | ||
close: null, | ||
setSelected: null, | ||
preventDefault: target.getAttribute('href').slice(0, 1) == '#', | ||
}; | ||
// Find hooked behavior. | ||
for (var c = 0; c < _this.clck.length; c++) { | ||
var click = _this.clck[c].call(_this, target, args); | ||
if (click) { | ||
if (typeof click == 'boolean') { | ||
evnt.preventDefault(); | ||
return; | ||
} | ||
// Close menu. Default: false | ||
if ( | ||
valueOrFn( | ||
target, | ||
_this.opts.onClick.close, | ||
onClick.close | ||
) | ||
) { | ||
if ( | ||
_this.opts.offCanvas && | ||
typeof _this.close == 'function' | ||
) { | ||
_this.close(); | ||
} | ||
if (type(click) == 'object') { | ||
onClick = extend(click, onClick); | ||
} | ||
} | ||
}, | ||
true | ||
); | ||
} | ||
// Default behavior for anchors in lists. | ||
if (args.inMenu && args.inListview && !args.toExternal) { | ||
// Set selected item, Default: true | ||
if (valueOrFn(target, _this.opts.onClick.setSelected, onClick.setSelected)) { | ||
_this.setSelected(target.parentElement); | ||
} | ||
// Prevent default / don't follow link. Default: false. | ||
if (valueOrFn(target, _this.opts.onClick.preventDefault, onClick.preventDefault)) { | ||
evnt.preventDefault(); | ||
} | ||
// Close menu. Default: false | ||
if (valueOrFn(target, _this.opts.onClick.close, onClick.close)) { | ||
if (_this.opts.offCanvas && | ||
typeof _this.close == 'function') { | ||
_this.close(); | ||
} | ||
} | ||
} | ||
}, true); | ||
// Invoke "after" hook. | ||
@@ -899,3 +802,3 @@ this.trigger('initAnchors:after'); | ||
return Mmenu; | ||
})(); | ||
}()); | ||
export default Mmenu; |
@@ -24,7 +24,7 @@ import * as DOM from '../../_modules/dom'; | ||
action: child.getAttribute('action') || null, | ||
method: child.getAttribute('method') || null | ||
method: child.getAttribute('method') || null, | ||
}; | ||
_this.conf.searchfield.input = { | ||
name: child.querySelector('input').getAttribute('name') || | ||
null | ||
null, | ||
}; | ||
@@ -69,3 +69,3 @@ _this.conf.searchfield.clear = false; | ||
for (var a = 0; a < attr.length; a++) { | ||
if (typeof anchor.getAttribute(attr[a]) != 'undefined') { | ||
if (anchor.getAttribute(attr[a])) { | ||
link.setAttribute(attr[a], anchor.getAttribute(attr[a])); | ||
@@ -72,0 +72,0 @@ } |
{ | ||
"name": "mmenu-js", | ||
"version": "8.5.14", | ||
"version": "8.5.15", | ||
"main": "dist/mmenu.js", | ||
@@ -5,0 +5,0 @@ "module": "src/mmenu.js", |
import Mmenu from '../../core/oncanvas/mmenu.oncanvas'; | ||
import * as DOM from '../../_modules/dom'; | ||
export default function(this: Mmenu) { | ||
export default function (this: Mmenu) { | ||
// Create the menu | ||
@@ -18,3 +18,3 @@ if (this.node.menu.matches('.navbar-collapse')) { | ||
DOM.children(this.node.menu).forEach(child => { | ||
DOM.children(this.node.menu).forEach((child) => { | ||
switch (true) { | ||
@@ -32,3 +32,3 @@ case child.matches('.navbar-nav'): | ||
action: child.getAttribute('action') || null, | ||
method: child.getAttribute('method') || null | ||
method: child.getAttribute('method') || null, | ||
}; | ||
@@ -38,3 +38,3 @@ this.conf.searchfield.input = { | ||
child.querySelector('input').getAttribute('name') || | ||
null | ||
null, | ||
}; | ||
@@ -72,3 +72,3 @@ this.conf.searchfield.clear = false; | ||
// Open the menu on-click. | ||
toggler.addEventListener('click', evnt => { | ||
toggler.addEventListener('click', (evnt) => { | ||
evnt.preventDefault(); | ||
@@ -88,3 +88,3 @@ evnt.stopImmediatePropagation(); | ||
for (var a = 0; a < attr.length; a++) { | ||
if (typeof anchor.getAttribute(attr[a]) != 'undefined') { | ||
if (anchor.getAttribute(attr[a])) { | ||
link.setAttribute(attr[a], anchor.getAttribute(attr[a])); | ||
@@ -98,3 +98,3 @@ } | ||
// Remove Screen reader text. | ||
DOM.find(link, '.sr-only').forEach(sro => { | ||
DOM.find(link, '.sr-only').forEach((sro) => { | ||
sro.remove(); | ||
@@ -107,3 +107,3 @@ }); | ||
var list = DOM.create('ul'); | ||
DOM.children(dropdown).forEach(anchor => { | ||
DOM.children(dropdown).forEach((anchor) => { | ||
var item = DOM.create('li'); | ||
@@ -123,3 +123,3 @@ | ||
DOM.find(nav, '.nav-item').forEach(anchor => { | ||
DOM.find(nav, '.nav-item').forEach((anchor) => { | ||
var item = DOM.create('li'); | ||
@@ -126,0 +126,0 @@ |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
742449
13224