UNPKG

mj-context-menu

Version:
79 lines 2.16 kB
import { AbstractItem } from './abstract_item.js'; import { HtmlClasses } from './html_classes.js'; export class Submenu extends AbstractItem { static fromJson(factory, { content: content, menu: submenu, id: id }, menu) { const item = new this(menu, content, id); const sm = factory.get('subMenu')(factory, submenu, item); item.submenu = sm; return item; } constructor(menu, content, id) { super(menu, 'submenu', content, id); this._submenu = null; } set submenu(menu) { this._submenu = menu; } get submenu() { return this._submenu; } mouseover(event) { this.focus(); this.stop(event); } mouseout(event) { this.stop(event); } unfocus() { if (!this.submenu.isPosted()) { super.unfocus(); return; } if (this.menu.focused !== this) { super.unfocus(); this.menu.unpostSubmenus(); return; } this.html.setAttribute('tabindex', '-1'); this.html.blur(); } focus() { super.focus(); if (!this.submenu.isPosted() && !this.disabled) { this.submenu.post(); } } executeAction() { this.submenu.isPosted() ? this.submenu.unpost() : this.submenu.post(); } generateHtml() { super.generateHtml(); const html = this.html; this.span = document.createElement('span'); this.span.textContent = '\u25BA'; this.span.classList.add(HtmlClasses['MENUARROW']); this.span.setAttribute('aria-hidden', 'true'); html.appendChild(this.span); html.setAttribute('aria-haspopup', 'true'); } left(event) { if (this.submenu.isPosted()) { this.submenu.unpost(); } else { super.left(event); } } right(event) { if (!this.submenu.isPosted()) { this.submenu.post(); } else { this.submenu.down(event); } } toJson() { return { type: '' }; } } //# sourceMappingURL=item_submenu.js.map