ng-prime-tools 1.0.45 → 1.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/models/menu-item.model.mjs +1 -1
- package/esm2022/lib/pt-menu/pt-menu.component.mjs +10 -3
- package/esm2022/lib/pt-menu-fancy/pt-menu-fancy.component.mjs +12 -3
- package/fesm2022/ng-prime-tools.mjs +20 -4
- package/fesm2022/ng-prime-tools.mjs.map +1 -1
- package/lib/models/menu-item.model.d.ts +5 -1
- package/lib/models/menu-item.model.d.ts.map +1 -1
- package/lib/pt-menu/pt-menu.component.d.ts +1 -0
- package/lib/pt-menu/pt-menu.component.d.ts.map +1 -1
- package/lib/pt-menu-fancy/pt-menu-fancy.component.d.ts +2 -0
- package/lib/pt-menu-fancy/pt-menu-fancy.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvbWVudS1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uU3R5bGUgfSBmcm9tICcuL2ljb24tc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgVGV4dFN0eWxlIH0gZnJvbSAnLi90ZXh0LXN0eWxlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51SXRlbSBleHRlbmRzIFRleHRTdHlsZSB7XG4gIGljb24/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9tb2RlbHMvbWVudS1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uU3R5bGUgfSBmcm9tICcuL2ljb24tc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgVGV4dFN0eWxlIH0gZnJvbSAnLi90ZXh0LXN0eWxlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51SXRlbSBleHRlbmRzIFRleHRTdHlsZSB7XG4gIGljb24/OiBzdHJpbmcgfCBJY29uU3R5bGU7XG4gIGFjdGlvbj86ICgpID0+IHZvaWQ7XG4gIC8qKiDinIUgb3B0aW9uYWw6IHJlbmRlciBidXQgZG8gbm90IGFsbG93IGNsaWNrICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAvKiog4pyFIG9wdGlvbmFsOiByZW5kZXIgYXMgYSBoZWFkZXIgKHVzZXJuYW1lIGxpbmUpICovXG4gIGlzSGVhZGVyPzogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -69,6 +69,13 @@ export class PTMenuComponent {
|
|
|
69
69
|
fontSize: item.fontSize || PTMenuComponent.DEFAULT_TEXT_FONT_SIZE,
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
|
+
onItemClick(item) {
|
|
73
|
+
if (item?.disabled)
|
|
74
|
+
return;
|
|
75
|
+
if (typeof item?.action === 'function') {
|
|
76
|
+
item.action();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
72
79
|
onDocumentClick(event) {
|
|
73
80
|
const clickedInside = event.target.closest('.pt-menu');
|
|
74
81
|
if (!clickedInside) {
|
|
@@ -76,15 +83,15 @@ export class PTMenuComponent {
|
|
|
76
83
|
}
|
|
77
84
|
}
|
|
78
85
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuComponent, selector: "pt-menu", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item
|
|
86
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuComponent, selector: "pt-menu", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"item.disabled\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"item.icon\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
80
87
|
}
|
|
81
88
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, decorators: [{
|
|
82
89
|
type: Component,
|
|
83
|
-
args: [{ selector: 'pt-menu', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item
|
|
90
|
+
args: [{ selector: 'pt-menu', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"item.disabled\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"item.icon\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"] }]
|
|
84
91
|
}], propDecorators: { config: [{
|
|
85
92
|
type: Input
|
|
86
93
|
}], onDocumentClick: [{
|
|
87
94
|
type: HostListener,
|
|
88
95
|
args: ['document:click', ['$event']]
|
|
89
96
|
}] } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUvcHQtbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUvcHQtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVEvRCxNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQU1XLFdBQU0sR0FBZTtZQUM1QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ25FLGFBQWEsRUFBRSxPQUFPO1NBQ3ZCLENBQUM7UUFVRixXQUFNLEdBQUcsS0FBSyxDQUFDO0tBa0ZoQjthQTFGeUIsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsc0JBQWlCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBRWhELHFCQUFnQixHQUEyQixJQUFJLEFBQS9CLENBQWdDO0lBSS9ELFVBQVU7UUFDUixJQUNFLGVBQWUsQ0FBQyxnQkFBZ0I7WUFDaEMsZUFBZSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFDekMsQ0FBQztZQUNELGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFM0Is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dCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVJdGVtLCBNZW51Q29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtbWVudS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUTWVudUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWVudUNvbmZpZyA9IHtcbiAgICBpY29uOiB7IGNvZGU6ICdwaSBwaS1lbGxpcHNpcy12JywgY29sb3I6ICcjMDAwJywgZm9udFNpemU6ICcxNXB4JyB9LFxuICAgIG1lbnVEaXJlY3Rpb246ICdyaWdodCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9URVhUX0NPTE9SID0gJyMwMDAnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RFWFRfRk9OVF9TSVpFID0gJzE1cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzAwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9GT05UX1NJWkUgPSAnMTVweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9DT0RFID0gJ3BpIHBpLWVsbGlwc2lzLXYnO1xuXG4gIHByaXZhdGUgc3RhdGljIG9wZW5NZW51SW5zdGFuY2U6IFBUTWVudUNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHRvZ2dsZU1lbnUoKSB7XG4gICAgaWYgKFxuICAgICAgUFRNZW51Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgJiZcbiAgICAgIFBUTWVudUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICE9PSB0aGlzXG4gICAgKSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZS5jbG9zZU1lbnUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbiA9ICF0aGlzLmlzT3BlbjtcblxuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgUFRNZW51Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPSB0aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgaWYgKFBUTWVudUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlID09PSB0aGlzKSB7XG4gICAgICBQVE1lbnVDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0TWVudUl0ZW1JY29uQ2xhc3MoaXRlbTogTWVudUl0ZW0pOiBzdHJpbmcge1xuICAgIC8vIEFzc3VtaW5nIHRoYXQgaWNvbnMgc3RhcnRpbmcgd2l0aCBcImZhXCIgYXJlIEZvbnRBd2Vzb21lIGljb25zXG4gICAgcmV0dXJuIHR5cGVvZiBpdGVtLmljb24gPT09ICdzdHJpbmcnID8gaXRlbS5pY29uIDogaXRlbS5pY29uPy5jb2RlIHx8ICcnO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1JY29uU3R5bGVzKGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtLmljb24gIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcjogaXRlbS5pY29uPy5jb2xvciB8fCBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTogaXRlbS5pY29uPy5mb250U2l6ZSB8fCBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVE1lbnVDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0SWNvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmljb24/LmNvZGUgfHwgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0RFO1xuICB9XG5cbiAgZ2V0SWNvblN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIHRoaXMuY29uZmlnLmNvbG9yIHx8XG4gICAgICAgIHRoaXMuY29uZmlnLmljb24/LmNvbG9yIHx8XG4gICAgICAgIFBUTWVudUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09MT1IsXG4gICAgICBmb250U2l6ZTpcbiAgICAgICAgdGhpcy5jb25maWcuZm9udFNpemUgfHxcbiAgICAgICAgdGhpcy5jb25maWcuaWNvbj8uZm9udFNpemUgfHxcbiAgICAgICAgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9GT05UX1NJWkUsXG4gICAgfTtcbiAgfVxuXG4gIGdldFRleHRTdHlsZXMoaXRlbTogTWVudUl0ZW0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IGl0ZW0uY29sb3IgfHwgUFRNZW51Q29tcG9uZW50LkRFRkFVTFRfVEVYVF9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBpdGVtLmZvbnRTaXplIHx8IFBUTWVudUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cblxuICBvbkl0ZW1DbGljayhpdGVtOiBNZW51SXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtPy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGlmICh0eXBlb2YgaXRlbT8uYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpdGVtLmFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5wdC1tZW51Jyk7XG4gICAgaWYgKCFjbGlja2VkSW5zaWRlKSB7XG4gICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBbbmdDbGFzc109XCJ7XG4gICAgb3BlbjogaXNPcGVuLFxuICAgICdtZW51LWxlZnQnOiBjb25maWcubWVudURpcmVjdGlvbiA9PT0gJ2xlZnQnLFxuICAgICdtZW51LXJpZ2h0JzogY29uZmlnLm1lbnVEaXJlY3Rpb24gPT09ICdyaWdodCdcbiAgfVwiXG4gIGNsYXNzPVwicHQtbWVudVwiXG4+XG4gIDxpXG4gICAgY2xhc3M9XCJtZW51LWljb25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVNZW51KClcIlxuICAgIFtuZ0NsYXNzXT1cImdldEljb25DbGFzcygpXCJcbiAgICBbbmdTdHlsZV09XCJnZXRJY29uU3R5bGVzKClcIlxuICA+PC9pPlxuICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93blwiICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtZW51LWl0ZW1cIlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29uZmlnLm1lbnVJdGVtc1wiXG4gICAgICBbY2xhc3MubWVudS1pdGVtLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzLm1lbnUtaXRlbS1oZWFkZXJdPVwiaXRlbS5pc0hlYWRlclwiXG4gICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgID5cbiAgICAgIDxpXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TWVudUl0ZW1JY29uQ2xhc3MoaXRlbSlcIlxuICAgICAgICBbbmdTdHlsZV09XCJnZXRNZW51SXRlbUljb25TdHlsZXMoaXRlbSlcIlxuICAgICAgPjwvaT5cbiAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cImdldFRleHRTdHlsZXMoaXRlbSlcIj57eyBpdGVtLnRleHQgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -75,6 +75,15 @@ export class PTMenuFancyComponent {
|
|
|
75
75
|
fontSize: item.fontSize || PTMenuFancyComponent.DEFAULT_TEXT_FONT_SIZE,
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
|
+
isItemDisabled(item) {
|
|
79
|
+
return !!item?.disabled || !!item?.isHeader || !item?.action;
|
|
80
|
+
}
|
|
81
|
+
onItemClick(item) {
|
|
82
|
+
if (this.isItemDisabled(item))
|
|
83
|
+
return;
|
|
84
|
+
item.action?.();
|
|
85
|
+
this.closeMenu(); // optional UX: close after click
|
|
86
|
+
}
|
|
78
87
|
onDocumentClick(event) {
|
|
79
88
|
const clickedInside = event.target.closest('.pt-menu-fancy');
|
|
80
89
|
if (!clickedInside) {
|
|
@@ -82,15 +91,15 @@ export class PTMenuFancyComponent {
|
|
|
82
91
|
}
|
|
83
92
|
}
|
|
84
93
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuFancyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (
|
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"isItemDisabled(item)\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"getMenuItemIconClass(item)\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:calc(100% + 8px);background-color:#fff;min-width:220px;z-index:3;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 22px #0000001f;opacity:0;transform:translateY(-12px);pointer-events:none;transition:transform .18s ease-out,opacity .18s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;transition:background-color .15s ease-in-out}.pt-menu-fancy .menu-item i{margin-right:0}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}.pt-menu-fancy .menu-item.menu-item-header{cursor:default;background:#fafafa;font-weight:700;opacity:.98;border-bottom:1px solid rgba(0,0,0,.08)}.pt-menu-fancy .menu-item.menu-item-header:hover{background:#fafafa}.pt-menu-fancy .menu-item.menu-item-disabled{cursor:not-allowed}.pt-menu-fancy .menu-item.menu-item-disabled:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.PTCardComponent, selector: "pt-card", inputs: ["config"] }] }); }
|
|
86
95
|
}
|
|
87
96
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuFancyComponent, decorators: [{
|
|
88
97
|
type: Component,
|
|
89
|
-
args: [{ selector: 'pt-menu-fancy', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (
|
|
98
|
+
args: [{ selector: 'pt-menu-fancy', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"isItemDisabled(item)\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"getMenuItemIconClass(item)\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:calc(100% + 8px);background-color:#fff;min-width:220px;z-index:3;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 22px #0000001f;opacity:0;transform:translateY(-12px);pointer-events:none;transition:transform .18s ease-out,opacity .18s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;transition:background-color .15s ease-in-out}.pt-menu-fancy .menu-item i{margin-right:0}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}.pt-menu-fancy .menu-item.menu-item-header{cursor:default;background:#fafafa;font-weight:700;opacity:.98;border-bottom:1px solid rgba(0,0,0,.08)}.pt-menu-fancy .menu-item.menu-item-header:hover{background:#fafafa}.pt-menu-fancy .menu-item.menu-item-disabled{cursor:not-allowed}.pt-menu-fancy .menu-item.menu-item-disabled:hover{background-color:transparent}\n"] }]
|
|
90
99
|
}], propDecorators: { config: [{
|
|
91
100
|
type: Input
|
|
92
101
|
}], onDocumentClick: [{
|
|
93
102
|
type: HostListener,
|
|
94
103
|
args: ['document:click', ['$event']]
|
|
95
104
|
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbWVudS1mYW5jeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUtZmFuY3kvcHQtbWVudS1mYW5jeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW1lbnUtZmFuY3kvcHQtbWVudS1mYW5jeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRL0QsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFdBQU0sR0FBZTtZQUM1QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQ25FLGFBQWEsRUFBRSxPQUFPO1NBQ3ZCLENBQUM7UUFFRixtQkFBYyxHQUFlO1lBQzNCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsTUFBTSxFQUFFLEdBQUc7WUFDWCxPQUFPLEVBQUUsS0FBSztTQUNmLENBQUM7UUFVRixXQUFNLEdBQUcsS0FBSyxDQUFDO0tBdUZoQjthQS9GeUIsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsdUJBQWtCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDNUIsMkJBQXNCLEdBQUcsTUFBTSxBQUFULENBQVU7YUFDaEMsc0JBQWlCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBRWhELHFCQUFnQixHQUFnQyxJQUFJLEFBQXBDLENBQXFDO0lBSXBFLFVBQVU7UUFDUixJQUNFLG9CQUFvQixDQUFDLGdCQUFnQjtZQUNyQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsS0FBSyxJ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LENBQUMsT0FBTyxDQUN6RCxnQkFBZ0IsQ0FDakIsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7K0dBMUdVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHlKQ1JqQywyOEJBbUNBOzs0RkQzQmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWU7OEJBS2hCLE1BQU07c0JBQWQsS0FBSztnQkFrR04sZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51SXRlbSwgTWVudUNvbmZpZywgQ2FyZENvbmZpZyB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LW1lbnUtZmFuY3knLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtbWVudS1mYW5jeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LW1lbnUtZmFuY3kuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVE1lbnVGYW5jeUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogTWVudUNvbmZpZyA9IHtcbiAgICBpY29uOiB7IGNvZGU6ICdwaSBwaS1lbGxpcHNpcy12JywgY29sb3I6ICcjMDAwJywgZm9udFNpemU6ICcxNXB4JyB9LFxuICAgIG1lbnVEaXJlY3Rpb246ICdyaWdodCcsXG4gIH07XG5cbiAgY2FyZE1lbnVDb25maWc6IENhcmRDb25maWcgPSB7XG4gICAgbm9Cb3JkZXI6IHRydWUsXG4gICAgbWFyZ2luOiAnMCcsXG4gICAgcGFkZGluZzogJzVweCcsXG4gIH07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9URVhUX0NPTE9SID0gJyMwMDAnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RFWFRfRk9OVF9TSVpFID0gJzE1cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0lDT05fQ09MT1IgPSAnIzAwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9GT05UX1NJWkUgPSAnMTVweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9DT0RFID0gJ3BpIHBpLWVsbGlwc2lzLXYnO1xuXG4gIHByaXZhdGUgc3RhdGljIG9wZW5NZW51SW5zdGFuY2U6IFBUTWVudUZhbmN5Q29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgaXNPcGVuID0gZmFsc2U7XG5cbiAgdG9nZ2xlTWVudSgpIHtcbiAgICBpZiAoXG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICYmXG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlICE9PSB0aGlzXG4gICAgKSB7XG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlLmNsb3NlTWVudSgpO1xuICAgIH1cblxuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5vcGVuTWVudUluc3RhbmNlID0gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgUFRNZW51RmFuY3lDb21wb25lbnQub3Blbk1lbnVJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNZW51KCkge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgaWYgKFBUTWVudUZhbmN5Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPT09IHRoaXMpIHtcbiAgICAgIFBUTWVudUZhbmN5Q29tcG9uZW50Lm9wZW5NZW51SW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldE1lbnVJdGVtSWNvbkNsYXNzKGl0ZW06IE1lbnVJdGVtKTogc3RyaW5nIHtcbiAgICAvLyBBc3N1bWluZyB0aGF0IGljb25zIHN0YXJ0aW5nIHdpdGggXCJmYVwiIGFyZSBGb250QXdlc29tZSBpY29uc1xuICAgIHJldHVybiB0eXBlb2YgaXRlbS5pY29uID09PSAnc3RyaW5nJyA/IGl0ZW0uaWNvbiA6IGl0ZW0uaWNvbj8uY29kZSB8fCAnJztcbiAgfVxuXG4gIGdldE1lbnVJdGVtSWNvblN0eWxlcyhpdGVtOiBNZW51SXRlbSkge1xuICAgIGlmICh0eXBlb2YgaXRlbS5pY29uICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6IGl0ZW0uaWNvbj8uY29sb3IgfHwgUFRNZW51RmFuY3lDb21wb25lbnQuREVGQVVMVF9JQ09OX0NPTE9SLFxuICAgICAgICBmb250U2l6ZTpcbiAgICAgICAgICBpdGVtLmljb24/LmZvbnRTaXplIHx8IFBUTWVudUZhbmN5Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9GT05UX1NJWkUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IFBUTWVudUZhbmN5Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgIGZvbnRTaXplOiBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cblxuICBnZXRJY29uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuaWNvbj8uY29kZSB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09ERTtcbiAgfVxuXG4gIGdldEljb25TdHlsZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOlxuICAgICAgICB0aGlzLmNvbmZpZy5jb2xvciB8fFxuICAgICAgICB0aGlzLmNvbmZpZy5pY29uPy5jb2xvciB8fFxuICAgICAgICBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX0lDT05fQ09MT1IsXG4gICAgICBmb250U2l6ZTpcbiAgICAgICAgdGhpcy5jb25maWcuZm9udFNpemUgfHxcbiAgICAgICAgdGhpcy5jb25maWcuaWNvbj8uZm9udFNpemUgfHxcbiAgICAgICAgUFRNZW51RmFuY3lDb21wb25lbnQuREVGQVVMVF9JQ09OX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0VGV4dFN0eWxlcyhpdGVtOiBNZW51SXRlbSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogaXRlbS5jb2xvciB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfQ09MT1IsXG4gICAgICBmb250U2l6ZTogaXRlbS5mb250U2l6ZSB8fCBQVE1lbnVGYW5jeUNvbXBvbmVudC5ERUZBVUxUX1RFWFRfRk9OVF9TSVpFLFxuICAgIH07XG4gIH1cbiAgaXNJdGVtRGlzYWJsZWQoaXRlbTogTWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFpdGVtPy5kaXNhYmxlZCB8fCAhIWl0ZW0/LmlzSGVhZGVyIHx8ICFpdGVtPy5hY3Rpb247XG4gIH1cblxuICBvbkl0ZW1DbGljayhpdGVtOiBNZW51SXRlbSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSXRlbURpc2FibGVkKGl0ZW0pKSByZXR1cm47XG4gICAgaXRlbS5hY3Rpb24/LigpO1xuICAgIHRoaXMuY2xvc2VNZW51KCk7IC8vIG9wdGlvbmFsIFVYOiBjbG9zZSBhZnRlciBjbGlja1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcbiAgICAgICcucHQtbWVudS1mYW5jeSdcbiAgICApO1xuICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwie1xuICAgIG9wZW46IGlzT3BlbixcbiAgICAnbWVudS1sZWZ0JzogY29uZmlnLm1lbnVEaXJlY3Rpb24gPT09ICdsZWZ0JyxcbiAgICAnbWVudS1yaWdodCc6IGNvbmZpZy5tZW51RGlyZWN0aW9uID09PSAncmlnaHQnXG4gIH1cIlxuICBjbGFzcz1cInB0LW1lbnUtZmFuY3lcIlxuPlxuICA8aVxuICAgIGNsYXNzPVwibWVudS1pY29uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCJcbiAgICBbbmdDbGFzc109XCJnZXRJY29uQ2xhc3MoKVwiXG4gICAgW25nU3R5bGVdPVwiZ2V0SWNvblN0eWxlcygpXCJcbiAgPjwvaT5cblxuICA8ZGl2IGNsYXNzPVwibWVudS1kcm9wZG93blwiICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgPHB0LWNhcmQgW2NvbmZpZ109XCJjYXJkTWVudUNvbmZpZ1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZy5tZW51SXRlbXNcIlxuICAgICAgICBbY2xhc3MubWVudS1pdGVtLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgW2NsYXNzLm1lbnUtaXRlbS1oZWFkZXJdPVwiaXRlbS5pc0hlYWRlclwiXG4gICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtKVwiXG4gICAgICA+XG4gICAgICAgIDxpXG4gICAgICAgICAgKm5nSWY9XCJnZXRNZW51SXRlbUljb25DbGFzcyhpdGVtKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0TWVudUl0ZW1JY29uQ2xhc3MoaXRlbSlcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldE1lbnVJdGVtSWNvblN0eWxlcyhpdGVtKVwiXG4gICAgICAgID48L2k+XG5cbiAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwiZ2V0VGV4dFN0eWxlcyhpdGVtKVwiPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvcHQtY2FyZD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -2942,6 +2942,13 @@ class PTMenuComponent {
|
|
|
2942
2942
|
fontSize: item.fontSize || PTMenuComponent.DEFAULT_TEXT_FONT_SIZE,
|
|
2943
2943
|
};
|
|
2944
2944
|
}
|
|
2945
|
+
onItemClick(item) {
|
|
2946
|
+
if (item?.disabled)
|
|
2947
|
+
return;
|
|
2948
|
+
if (typeof item?.action === 'function') {
|
|
2949
|
+
item.action();
|
|
2950
|
+
}
|
|
2951
|
+
}
|
|
2945
2952
|
onDocumentClick(event) {
|
|
2946
2953
|
const clickedInside = event.target.closest('.pt-menu');
|
|
2947
2954
|
if (!clickedInside) {
|
|
@@ -2949,11 +2956,11 @@ class PTMenuComponent {
|
|
|
2949
2956
|
}
|
|
2950
2957
|
}
|
|
2951
2958
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2952
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuComponent, selector: "pt-menu", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item
|
|
2959
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuComponent, selector: "pt-menu", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"item.disabled\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"item.icon\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
2953
2960
|
}
|
|
2954
2961
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, decorators: [{
|
|
2955
2962
|
type: Component,
|
|
2956
|
-
args: [{ selector: 'pt-menu', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item
|
|
2963
|
+
args: [{ selector: 'pt-menu', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"item.disabled\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"item.icon\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n", styles: [".pt-menu{position:relative;display:inline-block}.pt-menu .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu .menu-dropdown{display:none;position:absolute;background-color:#fff;box-shadow:0 8px 16px #0003;min-width:160px;z-index:1;border-radius:5px;overflow:hidden}.pt-menu .menu-item{padding:8px 16px;cursor:pointer;display:flex;align-items:center}.pt-menu .menu-item i{margin-right:10px}.pt-menu .menu-item:hover{background-color:#f1f1f1}.pt-menu.open .menu-dropdown{display:block}.pt-menu.menu-left .menu-dropdown{right:0;left:auto;z-index:2}.pt-menu.menu-right .menu-dropdown{left:0;right:auto;z-index:2}\n"] }]
|
|
2957
2964
|
}], propDecorators: { config: [{
|
|
2958
2965
|
type: Input
|
|
2959
2966
|
}], onDocumentClick: [{
|
|
@@ -3264,6 +3271,15 @@ class PTMenuFancyComponent {
|
|
|
3264
3271
|
fontSize: item.fontSize || PTMenuFancyComponent.DEFAULT_TEXT_FONT_SIZE,
|
|
3265
3272
|
};
|
|
3266
3273
|
}
|
|
3274
|
+
isItemDisabled(item) {
|
|
3275
|
+
return !!item?.disabled || !!item?.isHeader || !item?.action;
|
|
3276
|
+
}
|
|
3277
|
+
onItemClick(item) {
|
|
3278
|
+
if (this.isItemDisabled(item))
|
|
3279
|
+
return;
|
|
3280
|
+
item.action?.();
|
|
3281
|
+
this.closeMenu(); // optional UX: close after click
|
|
3282
|
+
}
|
|
3267
3283
|
onDocumentClick(event) {
|
|
3268
3284
|
const clickedInside = event.target.closest('.pt-menu-fancy');
|
|
3269
3285
|
if (!clickedInside) {
|
|
@@ -3271,11 +3287,11 @@ class PTMenuFancyComponent {
|
|
|
3271
3287
|
}
|
|
3272
3288
|
}
|
|
3273
3289
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuFancyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3274
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (
|
|
3290
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: { config: "config" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, ngImport: i0, template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"isItemDisabled(item)\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"getMenuItemIconClass(item)\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:calc(100% + 8px);background-color:#fff;min-width:220px;z-index:3;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 22px #0000001f;opacity:0;transform:translateY(-12px);pointer-events:none;transition:transform .18s ease-out,opacity .18s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;transition:background-color .15s ease-in-out}.pt-menu-fancy .menu-item i{margin-right:0}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}.pt-menu-fancy .menu-item.menu-item-header{cursor:default;background:#fafafa;font-weight:700;opacity:.98;border-bottom:1px solid rgba(0,0,0,.08)}.pt-menu-fancy .menu-item.menu-item-header:hover{background:#fafafa}.pt-menu-fancy .menu-item.menu-item-disabled{cursor:not-allowed}.pt-menu-fancy .menu-item.menu-item-disabled:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PTCardComponent, selector: "pt-card", inputs: ["config"] }] }); }
|
|
3275
3291
|
}
|
|
3276
3292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuFancyComponent, decorators: [{
|
|
3277
3293
|
type: Component,
|
|
3278
|
-
args: [{ selector: 'pt-menu-fancy', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (
|
|
3294
|
+
args: [{ selector: 'pt-menu-fancy', template: "<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n [class.menu-item-disabled]=\"isItemDisabled(item)\"\n [class.menu-item-header]=\"item.isHeader\"\n (click)=\"onItemClick(item)\"\n >\n <i\n *ngIf=\"getMenuItemIconClass(item)\"\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n", styles: [".pt-menu-fancy{position:relative;display:inline-block}.pt-menu-fancy .menu-icon{font-style:normal;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;padding:8px;transition:background-color .2s,box-shadow .2s}.pt-menu-fancy .menu-icon:hover{background-color:#5959591a;box-shadow:0 0 0 1px #5959591a}.pt-menu-fancy .menu-dropdown{position:absolute;top:calc(100% + 8px);background-color:#fff;min-width:220px;z-index:3;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 10px 22px #0000001f;opacity:0;transform:translateY(-12px);pointer-events:none;transition:transform .18s ease-out,opacity .18s ease-out}.pt-menu-fancy.open .menu-dropdown{display:block;opacity:1;transform:translateY(0);pointer-events:auto}.pt-menu-fancy.menu-left .menu-dropdown{right:0;left:auto}.pt-menu-fancy.menu-right .menu-dropdown{left:0;right:auto}.pt-menu-fancy .menu-item{padding:10px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;-webkit-user-select:none;user-select:none;transition:background-color .15s ease-in-out}.pt-menu-fancy .menu-item i{margin-right:0}.pt-menu-fancy .menu-item:hover{background-color:#f1f1f1}.pt-menu-fancy .menu-item.menu-item-header{cursor:default;background:#fafafa;font-weight:700;opacity:.98;border-bottom:1px solid rgba(0,0,0,.08)}.pt-menu-fancy .menu-item.menu-item-header:hover{background:#fafafa}.pt-menu-fancy .menu-item.menu-item-disabled{cursor:not-allowed}.pt-menu-fancy .menu-item.menu-item-disabled:hover{background-color:transparent}\n"] }]
|
|
3279
3295
|
}], propDecorators: { config: [{
|
|
3280
3296
|
type: Input
|
|
3281
3297
|
}], onDocumentClick: [{
|