UNPKG

@luminela/menu

Version:

A simple menubar component for Angular.

66 lines 7.51 kB
import { Component, ContentChildren, Input } from "@angular/core"; import { MenuItemComponent } from "@luminela/contextmenu"; import { v4 } from "uuid"; export class MenuComponent { constructor() { this.uid = v4(); this.focused = false; this.disabled = false; this.menuItems = []; } ngOnInit() { } ngOnDestroy() { var _a; (_a = this.subMenuItemsSubscription$) === null || _a === void 0 ? void 0 : _a.unsubscribe(); } ngAfterContentInit() { var _a; if (((_a = this.menuItems) === null || _a === void 0 ? void 0 : _a.length) > 0) { return; } this.createMenuItems(); this.initializeMenuItems(this.menuItems); this.subMenuItemsSubscription$ = this.subMenuItems.changes.subscribe(() => { this.createMenuItems(); this.initializeMenuItems(this.menuItems); }); } setActiveStyles() { if (!this.disabled) { this.focused = true; } } setInactiveStyles() { this.focused = false; } createMenuItems() { if (!this.menuItems || this.menuItems.length === 0) { this.menuItems = this.subMenuItems.map(smi => smi.getMenuItemData()); } } initializeMenuItems(items) { items.forEach(item => { var _a; item.visible = item.visible !== false; this.initializeMenuItems(((_a = item.menuItems) === null || _a === void 0 ? void 0 : _a.length) > 0 ? item.menuItems : []); }); } } MenuComponent.decorators = [ { type: Component, args: [{ selector: "yui-menu", template: "" },] } ]; MenuComponent.ctorParameters = () => []; MenuComponent.propDecorators = { subMenuItems: [{ type: ContentChildren, args: [MenuItemComponent,] }], disabled: [{ type: Input }], menuClass: [{ type: Input }], menuItems: [{ type: Input }], target: [{ type: Input }], text: [{ type: Input }], textTemplate: [{ type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsveXVpLW1lbnUveXVpLW1lbnUvcHJvamVjdHMveXVpLW1lbnUvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvbWVudS9tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBS1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHeEQsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQVF4QixNQUFNLE9BQU8sYUFBYTtJQWF0QjtRQVhnQixRQUFHLEdBQVcsRUFBRSxFQUFFLENBQUM7UUFFNUIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV2QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLGNBQVMsR0FBZ0IsRUFBRSxDQUFDO0lBTXJDLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVc7O1FBQ1AsTUFBQSxJQUFJLENBQUMseUJBQXlCLDBDQUFFLFdBQVcsR0FBRztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCOztRQUNkLElBQUksT0FBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxNQUFNLElBQUcsQ0FBQyxFQUFFO1lBQzVCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBRU0saUJBQWlCO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBZSxDQUFDLENBQUM7U0FDckY7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBa0I7UUFDMUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTs7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQztZQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxNQUFNLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBd0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUE3REosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixRQUFRLEVBQUUsRUFBRTthQUVmOzs7OzJCQU1JLGVBQWUsU0FBQyxpQkFBaUI7dUJBQ2pDLEtBQUs7d0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3FCQUNMLEtBQUs7bUJBQ0wsS0FBSzsyQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtNZW51SXRlbUNvbXBvbmVudH0gZnJvbSBcIkBsdW1pbmVsYS9jb250ZXh0bWVudVwiO1xuaW1wb3J0IHtJTWVudUl0ZW19IGZyb20gXCJAbHVtaW5lbGEvY29udGV4dG1lbnVcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHt2NH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7SGlnaGxpZ2h0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInl1aS1tZW51XCIsXG4gICAgdGVtcGxhdGU6IFwiXCIsXG4gICAgc3R5bGVzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBIaWdobGlnaHRhYmxlLCBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHVpZDogc3RyaW5nID0gdjQoKTtcbiAgICBwcml2YXRlIHN1Yk1lbnVJdGVtc1N1YnNjcmlwdGlvbiQ6IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBDb250ZW50Q2hpbGRyZW4oTWVudUl0ZW1Db21wb25lbnQpIHN1Yk1lbnVJdGVtczogUXVlcnlMaXN0PE1lbnVJdGVtQ29tcG9uZW50PjtcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG1lbnVDbGFzczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1lbnVJdGVtczogSU1lbnVJdGVtW10gPSBbXTtcbiAgICBASW5wdXQoKSB0YXJnZXQ6IEhUTUxFbGVtZW50O1xuICAgIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcbiAgICBASW5wdXQoKSB0ZXh0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5zdWJNZW51SXRlbXNTdWJzY3JpcHRpb24kPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW1zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jcmVhdGVNZW51SXRlbXMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplTWVudUl0ZW1zKHRoaXMubWVudUl0ZW1zKTtcbiAgICAgICAgdGhpcy5zdWJNZW51SXRlbXNTdWJzY3JpcHRpb24kID0gdGhpcy5zdWJNZW51SXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVNZW51SXRlbXMoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1lbnVJdGVtcyh0aGlzLm1lbnVJdGVtcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBY3RpdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRJbmFjdGl2ZVN0eWxlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNZW51SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tZW51SXRlbXMgfHwgdGhpcy5tZW51SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcyA9IHRoaXMuc3ViTWVudUl0ZW1zLm1hcChzbWkgPT4gc21pLmdldE1lbnVJdGVtRGF0YSgpIGFzIElNZW51SXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVNZW51SXRlbXMoaXRlbXM6IElNZW51SXRlbVtdKTogdm9pZCB7XG4gICAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnZpc2libGUgPSBpdGVtLnZpc2libGUgIT09IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplTWVudUl0ZW1zKGl0ZW0ubWVudUl0ZW1zPy5sZW5ndGggPiAwID8gaXRlbS5tZW51SXRlbXMgYXMgSU1lbnVJdGVtW10gOiBbXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxufVxuIl19