@luminela/menu
Version:
A simple menubar component for Angular.
66 lines • 7.51 kB
JavaScript
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