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.
devdocs/assets/javascripts/views/layout/menu.js

40 lines
1.1 KiB

/*
* decaffeinate suggestions:
* DS002: Fix invalid constructor
* DS206: Consider reworking classes to avoid initClass
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md
*/
const Cls = (app.views.Menu = class Menu extends app.View {
constructor(...args) {
this.onGlobalClick = this.onGlobalClick.bind(this);
super(...args);
}
static initClass() {
this.el = '._menu';
this.activeClass = 'active';
this.events =
{click: 'onClick'};
}
init() {
$.on(document.body, 'click', this.onGlobalClick);
}
onClick(event) {
const target = $.eventTarget(event);
if (target.tagName === 'A') { target.blur(); }
}
onGlobalClick(event) {
if (event.which !== 1) { return; }
if (typeof event.target.hasAttribute === 'function' ? event.target.hasAttribute('data-toggle-menu') : undefined) {
this.toggleClass(this.constructor.activeClass);
} else if (this.hasClass(this.constructor.activeClass)) {
this.removeClass(this.constructor.activeClass);
}
}
});
Cls.initClass();