ng-prime-tools 1.0.11 → 1.0.13
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/README.md +11 -0
- package/esm2022/lib/models/card-config.model.mjs +1 -1
- package/esm2022/lib/models/nav-bar-menu-config.model.mjs +1 -1
- package/esm2022/lib/models/pattern.model.mjs +1 -1
- package/esm2022/lib/pt-card/pt-card.component.mjs +51 -23
- package/esm2022/lib/pt-menu/pt-menu.component.mjs +2 -2
- package/esm2022/lib/pt-menu-fancy/pt-menu-fancy.component.mjs +2 -2
- package/esm2022/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.mjs +34 -7
- package/esm2022/lib/pt-page-skeleton/pt-page-skeleton.component.mjs +3 -1
- package/esm2022/lib/pt-side-bar-menu/pt-side-bar-menu.component.mjs +4 -1
- package/fesm2022/ng-prime-tools.mjs +90 -30
- package/fesm2022/ng-prime-tools.mjs.map +1 -1
- package/lib/models/card-config.model.d.ts +1 -0
- package/lib/models/card-config.model.d.ts.map +1 -1
- package/lib/models/nav-bar-menu-config.model.d.ts +2 -0
- package/lib/models/nav-bar-menu-config.model.d.ts.map +1 -1
- package/lib/models/pattern.model.d.ts +7 -0
- package/lib/models/pattern.model.d.ts.map +1 -1
- package/lib/pt-card/pt-card.component.d.ts +12 -4
- package/lib/pt-card/pt-card.component.d.ts.map +1 -1
- package/lib/pt-menu-fancy/pt-menu-fancy.component.d.ts.map +1 -1
- package/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.d.ts +8 -1
- package/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.d.ts.map +1 -1
- package/lib/pt-page-skeleton/pt-page-skeleton.component.d.ts.map +1 -1
- package/lib/pt-side-bar-menu/pt-side-bar-menu.component.d.ts.map +1 -1
- package/package.json +1 -1
@@ -24,10 +24,12 @@ export class PTSideBarMenuComponent {
|
|
24
24
|
hoverColorSubMenu: '#e0e0e0', // Default hover color for submenu
|
25
25
|
};
|
26
26
|
this.searchCardConfig = {
|
27
|
+
identifier: 'pt-side-bar-menu/search',
|
27
28
|
backgroundColor: 'white',
|
28
29
|
height: '72px',
|
29
30
|
};
|
30
31
|
this.cardConfig = {
|
32
|
+
identifier: 'pt-side-bar-menu',
|
31
33
|
backgroundColor: '',
|
32
34
|
width: '',
|
33
35
|
height: '',
|
@@ -45,6 +47,7 @@ export class PTSideBarMenuComponent {
|
|
45
47
|
}
|
46
48
|
ngOnInit() {
|
47
49
|
this.cardConfig = {
|
50
|
+
identifier: 'pt-side-bar-menu',
|
48
51
|
backgroundColor: this.menuConfig.backgroundColor,
|
49
52
|
width: this.menuConfig.width,
|
50
53
|
height: this.menuConfig.height,
|
@@ -203,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
203
206
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { menuConfig: [{
|
204
207
|
type: Input
|
205
208
|
}] } });
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQU9yQyxNQUFNLE9BQU8sc0JBQXNCO0lBZWpDLFlBQW9CLFFBQW1CLEVBQVUsRUFBYztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWR0RCxlQUFVLEdBQXNCO1lBQ3ZDLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLE9BQU87WUFDeEIsU0FBUyxFQUFFLE1BQU0sRUFBRSwwQkFBMEI7WUFDN0MsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLDZCQUE2QjtZQUN2RCxVQUFVLEVBQUUsU0FBUyxFQUFFLG9DQUFvQztZQUMzRCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsa0NBQWtDO1NBQ2pFLENBQUM7UUFJRixxQkFBZ0IsR0FBZTtZQUM3QixlQUFlLEVBQUUsT0FBTztZQUN4QixN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QUM7Z0JBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO29CQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7b0JBQ3pCLE1BQU0sQ0FDVCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBaFBVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDhGQ3ZCbkMsd2hGQW9GQTs7NEZEN0RhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxrQkFBa0I7dUdBS25CLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTWVudSxcbiAgRm9ybVRleHRGaWVsZCxcbiAgU2lkZU1lbnVCYXJDb25maWcsXG4gIENhcmRDb25maWcsXG4gIEJhZGdlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQmFkZ2VUeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwdC1zaWRlLWJhci1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B0LXNpZGUtYmFyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wdC1zaWRlLWJhci1tZW51LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUFRTaWRlQmFyTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIG1lbnVDb25maWc6IFNpZGVNZW51QmFyQ29uZmlnID0ge1xuICAgIG1lbnVzOiBbXSxcbiAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICB3aWR0aDogJzI1MHB4JyxcbiAgICBoZWlnaHQ6ICcxMDB2aCcsXG4gICAgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScsXG4gICAgZm9udENvbG9yOiAnIzMzMycsIC8vIERlZmF1bHQgbWFpbiBmb250IGNvbG9yXG4gICAgZm9udENvbG9yU3ViTWVudTogJyM2NjYnLCAvLyBEZWZhdWx0IHN1Ym1lbnUgZm9udCBjb2xvclxuICAgIGhvdmVyQ29sb3I6ICcjZjFmMWYxJywgLy8gRGVmYXVsdCBob3ZlciBjb2xvciBmb3IgbWFpbiBtZW51XG4gICAgaG92ZXJDb2xvclN1Yk1lbnU6ICcjZTBlMGUwJywgLy8gRGVmYXVsdCBob3ZlciBjb2xvciBmb3Igc3VibWVudVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBzZWFyY2hDYXJkQ29uZmlnOiBDYXJkQ29uZmlnID0ge1xuICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgICBoZWlnaHQ6ICc3MnB4JyxcbiAgfTtcblxuICBjYXJkQ29uZmlnOiBDYXJkQ29uZmlnID0ge1xuICAgIGJhY2tncm91bmRDb2xvcjogJycsXG4gICAgd2lkdGg6ICcnLFxuICAgIGhlaWdodDogJycsXG4gICAgc2Nyb2xsYWJsZVZlcnRpY2FsOiBmYWxzZSxcbiAgfTtcblxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHNlYXJjaDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgfSk7XG5cbiAgc2VhcmNoRmllbGQ6IEZvcm1UZXh0RmllbGQgPSB7XG4gICAgbmFtZTogJ3NlYXJjaCcsXG4gICAgcGxhY2Vob2xkZXI6ICdTZWFyY2guLi4nLFxuICAgIGljb25DbGFzczogJ3BpIHBpLXNlYXJjaCcsXG4gIH07XG5cbiAgZmlsdGVyZWRNZW51czogTWVudVtdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXJkQ29uZmlnID0ge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm1lbnVDb25maWcuYmFja2dyb3VuZENvbG9yLFxuICAgICAgd2lkdGg6IHRoaXMubWVudUNvbmZpZy53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5tZW51Q29uZmlnLmhlaWdodCxcbiAgICAgIHNjcm9sbGFibGVWZXJ0aWNhbDogdGhpcy5tZW51Q29uZmlnLnNjcm9sbGFibGUsXG4gICAgICBwYXR0ZXJuOiB0aGlzLm1lbnVDb25maWcucGF0dGVybixcbiAgICB9O1xuXG4gICAgdGhpcy5maWx0ZXJlZE1lbnVzID0gdGhpcy5tZW51Q29uZmlnLm1lbnVzO1xuXG4gICAgY29uc3QgY2FyZFdpZHRoID0gdGhpcy5tZW51Q29uZmlnLndpZHRoXG4gICAgICA/IHBhcnNlSW50KHRoaXMubWVudUNvbmZpZy53aWR0aClcbiAgICAgIDogMjUwO1xuICAgIHRoaXMuc2VhcmNoRmllbGQud2lkdGggPSBgJHtjYXJkV2lkdGggLSA2MH1weGA7XG4gICAgdGhpcy5zZWFyY2hDYXJkQ29uZmlnLndpZHRoID0gdGhpcy5tZW51Q29uZmlnLndpZHRoO1xuICAgIHRoaXMuc2VhcmNoQ2FyZENvbmZpZy5wYXR0ZXJuID0gdGhpcy5tZW51Q29uZmlnLnBhdHRlcm47XG5cbiAgICBpZiAodGhpcy5tZW51Q29uZmlnLnNlYXJjaGFibGUpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwXG4gICAgICAgIC5nZXQoJ3NlYXJjaCcpXG4gICAgICAgID8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTWVudShpdGVtOiBNZW51LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpdGVtLmlzRXhwYW5kZWQgPSAhaXRlbS5pc0V4cGFuZGVkO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBnZXRDaGV2cm9uQ2xhc3MoaXRlbTogTWVudSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0uaXNFeHBhbmRlZCA/ICdmYSBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhIGZhLWNoZXZyb24tcmlnaHQnO1xuICB9XG5cbiAgZ2V0QmFkZ2VTdHlsZXMoYmFkZ2U6IEJhZGdlKSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9ycyA9IHRoaXMuZ2V0RGVmYXVsdEJhZGdlQ29sb3JzKFxuICAgICAgYmFkZ2UudHlwZSB8fCBCYWRnZVR5cGUuSW5mb1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IGJhZGdlLmNvbG9yIHx8IGRlZmF1bHRDb2xvcnMuY29sb3IsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhZGdlLmJhY2tncm91bmRDb2xvciB8fCBkZWZhdWx0Q29sb3JzLmJhY2tncm91bmRDb2xvcixcbiAgICAgIHBhZGRpbmc6ICcycHggOHB4JyxcbiAgICAgIGJvcmRlclJhZGl1czogJzVweCcsXG4gICAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0QmFkZ2VDb2xvcnModHlwZTogQmFkZ2VUeXBlKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEJhZGdlVHlwZS5JbmZvOlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnIzE3YTJiOCcgfTtcbiAgICAgIGNhc2UgQmFkZ2VUeXBlLkRhbmdlcjpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyNkYzM1NDUnIH07XG4gICAgICBjYXNlIEJhZGdlVHlwZS5XYXJuaW5nOlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnI2ZmYzEwNycgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7IGNvbG9yOiAnd2hpdGUnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjNmM3NTdkJyB9O1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRNZW51cyA9IHRoaXMubWVudUNvbmZpZy5tZW51cztcbiAgICAgIHRoaXMuY29sbGFwc2VBbGxNZW51cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsb3dlckNhc2VTZWFyY2ggPSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmZpbHRlcmVkTWVudXMgPSB0aGlzLm1lbnVDb25maWcubWVudXNcbiAgICAgICAgLm1hcCgobWVudSkgPT4gdGhpcy5zZWFyY2hJbk1lbnUoeyAuLi5tZW51IH0sIGxvd2VyQ2FzZVNlYXJjaCkpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgTWVudVtdO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaEluTWVudShtZW51OiBNZW51LCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51IHwgbnVsbCB7XG4gICAgY29uc3QgaXNNYXRjaCA9IG1lbnUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcblxuICAgIGlmIChtZW51LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBtYXRjaGluZ0NoaWxkcmVuID0gbWVudS5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5zZWFyY2hJbk1lbnUoY2hpbGQsIHNlYXJjaFRlcm0pKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIE1lbnVbXTtcblxuICAgICAgaWYgKG1hdGNoaW5nQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBtZW51LmNoaWxkcmVuID0gbWF0Y2hpbmdDaGlsZHJlbjtcbiAgICAgICAgbWVudS5pc0V4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzTWF0Y2ggPyBtZW51IDogbnVsbDtcbiAgfVxuXG4gIGNvbGxhcHNlQWxsTWVudXMoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51Q29uZmlnLm1lbnVzLmZvckVhY2goKG1lbnUpID0+IHtcbiAgICAgIG1lbnUuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1TdHlsZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyMzMzMnLCAvLyBTZXQgZGVmYXVsdCBmb250IGNvbG9yIGlmIG5vdCBzcGVjaWZpZWQgaW4gY29uZmlnXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lbnVMaW5rU3R5bGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjMzMzJyxcbiAgICAgICd0ZXh0LWRlY29yYXRpb24nOiAnbm9uZScsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6ICc4cHgnLFxuICAgICAgcGFkZGluZzogJzEwcHggMTVweCcsXG4gICAgICAnZm9udC1zaXplJzogJzE2cHgnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMC4ycywgY29sb3IgMC4ycycsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcbiAgICAgICc6aG92ZXInOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHwgJyNmMWYxZjEnLFxuICAgICAgICBjb2xvcjogJyMxMTEnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3ViTWVudUxpbmtTdHlsZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3JTdWJNZW51IHx8IHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyM2NjYnLFxuICAgICAgJ3RleHQtZGVjb3JhdGlvbic6ICdub25lJyxcbiAgICAgICdib3JkZXItcmFkaXVzJzogJzVweCcsXG4gICAgICBwYWRkaW5nOiAnNXB4IDEwcHgnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMC4ycywgY29sb3IgMC4ycycsXG4gICAgICAnOmhvdmVyJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yU3ViTWVudSB8fCAnI2UwZTBlMCcsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlIb3ZlckVmZmVjdHMoKTtcbiAgfVxuXG4gIGFwcGx5SG92ZXJFZmZlY3RzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lbnVMaW5rcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhLm1lbnUtbGluaycpO1xuICAgIGNvbnN0IHN1Yk1lbnVMaW5rcyA9XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYS5zdWJtZW51LWxpbmsnKTtcblxuICAgIC8vIEFwcGx5IGhvdmVyIGVmZmVjdHMgZm9yIG1haW4gbWVudSBsaW5rc1xuICAgIG1lbnVMaW5rcy5mb3JFYWNoKChsaW5rOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHwgJyNmMWYxZjEnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvciB8fCAnd2hpdGUnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUobGluaywgJ2JhY2tncm91bmQtY29sb3InKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBsaW5rLFxuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvciB8fCAnIzMzMydcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gQXBwbHkgaG92ZXIgZWZmZWN0cyBmb3Igc3VibWVudSBsaW5rc1xuICAgIHN1Yk1lbnVMaW5rcy5mb3JFYWNoKChsaW5rOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3JTdWJNZW51IHx8XG4gICAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJDb2xvciB8fFxuICAgICAgICAgICAgJyNmMWYxZjEnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvclN1Yk1lbnUgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvciB8fFxuICAgICAgICAgICAgJyNmZmYnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUobGluaywgJ2JhY2tncm91bmQtY29sb3InKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBsaW5rLFxuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvclN1Yk1lbnUgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHxcbiAgICAgICAgICAgICcjNjY2J1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwdC1zaWRlLWJhci1tZW51XCI+XG4gIDxwdC1jYXJkXG4gICAgKm5nSWY9XCJtZW51Q29uZmlnLnNlYXJjaGFibGVcIlxuICAgIFtjb25maWddPVwic2VhcmNoQ2FyZENvbmZpZ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2lkZWJhci1oaWRkZW4nOiAhbWVudUNvbmZpZy5pc1Zpc2libGUgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0XCI+XG4gICAgICA8cHQtdGV4dC1pbnB1dCBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtmb3JtRmllbGRdPVwic2VhcmNoRmllbGRcIj5cbiAgICAgIDwvcHQtdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgPC9wdC1jYXJkPlxuXG4gIDxwdC1jYXJkXG4gICAgW2NvbmZpZ109XCJjYXJkQ29uZmlnXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzaWRlYmFyLWhpZGRlbic6ICFtZW51Q29uZmlnLmlzVmlzaWJsZSB9XCJcbiAgPlxuICAgIDx1bCBjbGFzcz1cIm1lbnUtbGlzdFwiPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkTWVudXNcIlxuICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ21lbnUtaXRlbS1leHBhbmRlZCc6IGl0ZW0uaXNFeHBhbmRlZCB9XCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWVudUl0ZW1TdHlsZXMoKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gTWFpbiBtZW51IGl0ZW1zIHdpdGhvdXQgY2hpbGRyZW4gLS0+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCIhaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnVybFwiXG4gICAgICAgICAgY2xhc3M9XCJtZW51LWxpbmtcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldE1lbnVMaW5rU3R5bGVzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9pPlxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5iYWRnZVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRCYWRnZVN0eWxlcyhpdGVtLmJhZGdlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLmJhZGdlLmNvdW50IH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPCEtLSBNZW51IGl0ZW1zIHdpdGggY2hpbGRyZW4gLS0+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGhcIlxuICAgICAgICAgIGNsYXNzPVwibWVudS1saW5rXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRNZW51TGlua1N0eWxlcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uYmFkZ2VcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0QmFkZ2VTdHlsZXMoaXRlbS5iYWRnZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5iYWRnZS5jb3VudCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRDaGV2cm9uQ2xhc3MoaXRlbSlcIiBjbGFzcz1cImNoZXZyb25cIj48L2k+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8IS0tIFN1Ym1lbnUgLS0+XG4gICAgICAgIDx1bCBjbGFzcz1cInN1Ym1lbnUtbGlzdFwiPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5jaGlsZHJlblwiIGNsYXNzPVwic3VibWVudS1pdGVtXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJjaGlsZC51cmxcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1lbnUtbGlua1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN1Yk1lbnVMaW5rU3R5bGVzKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJjaGlsZC5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1lbnUtdGl0bGVcIj57eyBjaGlsZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLmJhZGdlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRCYWRnZVN0eWxlcyhjaGlsZC5iYWRnZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY2hpbGQuYmFkZ2UuY291bnQgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvcHQtY2FyZD5cbjwvZGl2PlxuIl19
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQU9yQyxNQUFNLE9BQU8sc0JBQXNCO0lBZWpDLFlBQW9CLFFBQW1CLEVBQVUsRUFBYztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWR0RCxlQUFVLEdBQXNCO1lBQ3ZDLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLE9BQU87WUFDeEIsU0FBUyxFQUFFLE1BQU0sRUFBRSwwQkFBMEI7WUFDN0MsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLDZCQUE2QjtZQUN2RCxVQUFVLEVBQUUsU0FBUyxFQUFFLG9DQUFvQztZQUMzRCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsa0NBQWtDO1NBQ2pFLENBQUM7UUFJRixxQkFBZ0IsR0FBZTtZQUM3QixVQUFVLEVBQUUseUJBQXlCO1lBQ3JD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QUcsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO29CQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7b0JBQ3pCLE1BQU0sQ0FDVCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBblBVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDhGQ3ZCbkMsd2hGQW9GQTs7NEZEN0RhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxrQkFBa0I7dUdBS25CLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTWVudSxcbiAgRm9ybVRleHRGaWVsZCxcbiAgU2lkZU1lbnVCYXJDb25maWcsXG4gIENhcmRDb25maWcsXG4gIEJhZGdlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQmFkZ2VUeXBlIH0gZnJvbSAnLi4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwdC1zaWRlLWJhci1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B0LXNpZGUtYmFyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wdC1zaWRlLWJhci1tZW51LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUFRTaWRlQmFyTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIG1lbnVDb25maWc6IFNpZGVNZW51QmFyQ29uZmlnID0ge1xuICAgIG1lbnVzOiBbXSxcbiAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICB3aWR0aDogJzI1MHB4JyxcbiAgICBoZWlnaHQ6ICcxMDB2aCcsXG4gICAgc2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScsXG4gICAgZm9udENvbG9yOiAnIzMzMycsIC8vIERlZmF1bHQgbWFpbiBmb250IGNvbG9yXG4gICAgZm9udENvbG9yU3ViTWVudTogJyM2NjYnLCAvLyBEZWZhdWx0IHN1Ym1lbnUgZm9udCBjb2xvclxuICAgIGhvdmVyQ29sb3I6ICcjZjFmMWYxJywgLy8gRGVmYXVsdCBob3ZlciBjb2xvciBmb3IgbWFpbiBtZW51XG4gICAgaG92ZXJDb2xvclN1Yk1lbnU6ICcjZTBlMGUwJywgLy8gRGVmYXVsdCBob3ZlciBjb2xvciBmb3Igc3VibWVudVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBzZWFyY2hDYXJkQ29uZmlnOiBDYXJkQ29uZmlnID0ge1xuICAgIGlkZW50aWZpZXI6ICdwdC1zaWRlLWJhci1tZW51L3NlYXJjaCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgIGhlaWdodDogJzcycHgnLFxuICB9O1xuXG4gIGNhcmRDb25maWc6IENhcmRDb25maWcgPSB7XG4gICAgaWRlbnRpZmllcjogJ3B0LXNpZGUtYmFyLW1lbnUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJycsXG4gICAgd2lkdGg6ICcnLFxuICAgIGhlaWdodDogJycsXG4gICAgc2Nyb2xsYWJsZVZlcnRpY2FsOiBmYWxzZSxcbiAgfTtcblxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHNlYXJjaDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgfSk7XG5cbiAgc2VhcmNoRmllbGQ6IEZvcm1UZXh0RmllbGQgPSB7XG4gICAgbmFtZTogJ3NlYXJjaCcsXG4gICAgcGxhY2Vob2xkZXI6ICdTZWFyY2guLi4nLFxuICAgIGljb25DbGFzczogJ3BpIHBpLXNlYXJjaCcsXG4gIH07XG5cbiAgZmlsdGVyZWRNZW51czogTWVudVtdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXJkQ29uZmlnID0ge1xuICAgICAgaWRlbnRpZmllcjogJ3B0LXNpZGUtYmFyLW1lbnUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm1lbnVDb25maWcuYmFja2dyb3VuZENvbG9yLFxuICAgICAgd2lkdGg6IHRoaXMubWVudUNvbmZpZy53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5tZW51Q29uZmlnLmhlaWdodCxcbiAgICAgIHNjcm9sbGFibGVWZXJ0aWNhbDogdGhpcy5tZW51Q29uZmlnLnNjcm9sbGFibGUsXG4gICAgICBwYXR0ZXJuOiB0aGlzLm1lbnVDb25maWcucGF0dGVybixcbiAgICB9O1xuXG4gICAgdGhpcy5maWx0ZXJlZE1lbnVzID0gdGhpcy5tZW51Q29uZmlnLm1lbnVzO1xuXG4gICAgY29uc3QgY2FyZFdpZHRoID0gdGhpcy5tZW51Q29uZmlnLndpZHRoXG4gICAgICA/IHBhcnNlSW50KHRoaXMubWVudUNvbmZpZy53aWR0aClcbiAgICAgIDogMjUwO1xuICAgIHRoaXMuc2VhcmNoRmllbGQud2lkdGggPSBgJHtjYXJkV2lkdGggLSA2MH1weGA7XG4gICAgdGhpcy5zZWFyY2hDYXJkQ29uZmlnLndpZHRoID0gdGhpcy5tZW51Q29uZmlnLndpZHRoO1xuICAgIHRoaXMuc2VhcmNoQ2FyZENvbmZpZy5wYXR0ZXJuID0gdGhpcy5tZW51Q29uZmlnLnBhdHRlcm47XG5cbiAgICBpZiAodGhpcy5tZW51Q29uZmlnLnNlYXJjaGFibGUpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwXG4gICAgICAgIC5nZXQoJ3NlYXJjaCcpXG4gICAgICAgID8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5vblNlYXJjaChzZWFyY2hUZXJtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTWVudShpdGVtOiBNZW51LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpdGVtLmlzRXhwYW5kZWQgPSAhaXRlbS5pc0V4cGFuZGVkO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBnZXRDaGV2cm9uQ2xhc3MoaXRlbTogTWVudSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0uaXNFeHBhbmRlZCA/ICdmYSBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhIGZhLWNoZXZyb24tcmlnaHQnO1xuICB9XG5cbiAgZ2V0QmFkZ2VTdHlsZXMoYmFkZ2U6IEJhZGdlKSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9ycyA9IHRoaXMuZ2V0RGVmYXVsdEJhZGdlQ29sb3JzKFxuICAgICAgYmFkZ2UudHlwZSB8fCBCYWRnZVR5cGUuSW5mb1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IGJhZGdlLmNvbG9yIHx8IGRlZmF1bHRDb2xvcnMuY29sb3IsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhZGdlLmJhY2tncm91bmRDb2xvciB8fCBkZWZhdWx0Q29sb3JzLmJhY2tncm91bmRDb2xvcixcbiAgICAgIHBhZGRpbmc6ICcycHggOHB4JyxcbiAgICAgIGJvcmRlclJhZGl1czogJzVweCcsXG4gICAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0QmFkZ2VDb2xvcnModHlwZTogQmFkZ2VUeXBlKSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEJhZGdlVHlwZS5JbmZvOlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnIzE3YTJiOCcgfTtcbiAgICAgIGNhc2UgQmFkZ2VUeXBlLkRhbmdlcjpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyNkYzM1NDUnIH07XG4gICAgICBjYXNlIEJhZGdlVHlwZS5XYXJuaW5nOlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnI2ZmYzEwNycgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7IGNvbG9yOiAnd2hpdGUnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjNmM3NTdkJyB9O1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzZWFyY2hUZXJtLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRNZW51cyA9IHRoaXMubWVudUNvbmZpZy5tZW51cztcbiAgICAgIHRoaXMuY29sbGFwc2VBbGxNZW51cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsb3dlckNhc2VTZWFyY2ggPSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmZpbHRlcmVkTWVudXMgPSB0aGlzLm1lbnVDb25maWcubWVudXNcbiAgICAgICAgLm1hcCgobWVudSkgPT4gdGhpcy5zZWFyY2hJbk1lbnUoeyAuLi5tZW51IH0sIGxvd2VyQ2FzZVNlYXJjaCkpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgTWVudVtdO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaEluTWVudShtZW51OiBNZW51LCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBNZW51IHwgbnVsbCB7XG4gICAgY29uc3QgaXNNYXRjaCA9IG1lbnUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKTtcblxuICAgIGlmIChtZW51LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBtYXRjaGluZ0NoaWxkcmVuID0gbWVudS5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5zZWFyY2hJbk1lbnUoY2hpbGQsIHNlYXJjaFRlcm0pKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIE1lbnVbXTtcblxuICAgICAgaWYgKG1hdGNoaW5nQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBtZW51LmNoaWxkcmVuID0gbWF0Y2hpbmdDaGlsZHJlbjtcbiAgICAgICAgbWVudS5pc0V4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzTWF0Y2ggPyBtZW51IDogbnVsbDtcbiAgfVxuXG4gIGNvbGxhcHNlQWxsTWVudXMoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51Q29uZmlnLm1lbnVzLmZvckVhY2goKG1lbnUpID0+IHtcbiAgICAgIG1lbnUuaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1TdHlsZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyMzMzMnLCAvLyBTZXQgZGVmYXVsdCBmb250IGNvbG9yIGlmIG5vdCBzcGVjaWZpZWQgaW4gY29uZmlnXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lbnVMaW5rU3R5bGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjMzMzJyxcbiAgICAgICd0ZXh0LWRlY29yYXRpb24nOiAnbm9uZScsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6ICc4cHgnLFxuICAgICAgcGFkZGluZzogJzEwcHggMTVweCcsXG4gICAgICAnZm9udC1zaXplJzogJzE2cHgnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMC4ycywgY29sb3IgMC4ycycsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAnYWxpZ24taXRlbXMnOiAnY2VudGVyJyxcbiAgICAgICc6aG92ZXInOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHwgJyNmMWYxZjEnLFxuICAgICAgICBjb2xvcjogJyMxMTEnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3ViTWVudUxpbmtTdHlsZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3JTdWJNZW51IHx8IHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyM2NjYnLFxuICAgICAgJ3RleHQtZGVjb3JhdGlvbic6ICdub25lJyxcbiAgICAgICdib3JkZXItcmFkaXVzJzogJzVweCcsXG4gICAgICBwYWRkaW5nOiAnNXB4IDEwcHgnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMC4ycywgY29sb3IgMC4ycycsXG4gICAgICAnOmhvdmVyJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yU3ViTWVudSB8fCAnI2UwZTBlMCcsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlIb3ZlckVmZmVjdHMoKTtcbiAgfVxuXG4gIGFwcGx5SG92ZXJFZmZlY3RzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lbnVMaW5rcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhLm1lbnUtbGluaycpO1xuICAgIGNvbnN0IHN1Yk1lbnVMaW5rcyA9XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYS5zdWJtZW51LWxpbmsnKTtcblxuICAgIC8vIEFwcGx5IGhvdmVyIGVmZmVjdHMgZm9yIG1haW4gbWVudSBsaW5rc1xuICAgIG1lbnVMaW5rcy5mb3JFYWNoKChsaW5rOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHwgJyNmMWYxZjEnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvciB8fCAnd2hpdGUnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUobGluaywgJ2JhY2tncm91bmQtY29sb3InKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBsaW5rLFxuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvciB8fCAnIzMzMydcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gQXBwbHkgaG92ZXIgZWZmZWN0cyBmb3Igc3VibWVudSBsaW5rc1xuICAgIHN1Yk1lbnVMaW5rcy5mb3JFYWNoKChsaW5rOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3JTdWJNZW51IHx8XG4gICAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJDb2xvciB8fFxuICAgICAgICAgICAgJyNmMWYxZjEnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvclN1Yk1lbnUgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvciB8fFxuICAgICAgICAgICAgJyNmZmYnXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUobGluaywgJ2JhY2tncm91bmQtY29sb3InKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBsaW5rLFxuICAgICAgICAgICdjb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvclN1Yk1lbnUgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHxcbiAgICAgICAgICAgICcjNjY2J1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwdC1zaWRlLWJhci1tZW51XCI+XG4gIDxwdC1jYXJkXG4gICAgKm5nSWY9XCJtZW51Q29uZmlnLnNlYXJjaGFibGVcIlxuICAgIFtjb25maWddPVwic2VhcmNoQ2FyZENvbmZpZ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2lkZWJhci1oaWRkZW4nOiAhbWVudUNvbmZpZy5pc1Zpc2libGUgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0XCI+XG4gICAgICA8cHQtdGV4dC1pbnB1dCBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtmb3JtRmllbGRdPVwic2VhcmNoRmllbGRcIj5cbiAgICAgIDwvcHQtdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgPC9wdC1jYXJkPlxuXG4gIDxwdC1jYXJkXG4gICAgW2NvbmZpZ109XCJjYXJkQ29uZmlnXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzaWRlYmFyLWhpZGRlbic6ICFtZW51Q29uZmlnLmlzVmlzaWJsZSB9XCJcbiAgPlxuICAgIDx1bCBjbGFzcz1cIm1lbnUtbGlzdFwiPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkTWVudXNcIlxuICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ21lbnUtaXRlbS1leHBhbmRlZCc6IGl0ZW0uaXNFeHBhbmRlZCB9XCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWVudUl0ZW1TdHlsZXMoKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gTWFpbiBtZW51IGl0ZW1zIHdpdGhvdXQgY2hpbGRyZW4gLS0+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCIhaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnVybFwiXG4gICAgICAgICAgY2xhc3M9XCJtZW51LWxpbmtcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldE1lbnVMaW5rU3R5bGVzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9pPlxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5iYWRnZVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRCYWRnZVN0eWxlcyhpdGVtLmJhZGdlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpdGVtLmJhZGdlLmNvdW50IH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPCEtLSBNZW51IGl0ZW1zIHdpdGggY2hpbGRyZW4gLS0+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGhcIlxuICAgICAgICAgIGNsYXNzPVwibWVudS1saW5rXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudShpdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRNZW51TGlua1N0eWxlcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uYmFkZ2VcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0QmFkZ2VTdHlsZXMoaXRlbS5iYWRnZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5iYWRnZS5jb3VudCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJnZXRDaGV2cm9uQ2xhc3MoaXRlbSlcIiBjbGFzcz1cImNoZXZyb25cIj48L2k+XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8IS0tIFN1Ym1lbnUgLS0+XG4gICAgICAgIDx1bCBjbGFzcz1cInN1Ym1lbnUtbGlzdFwiPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5jaGlsZHJlblwiIGNsYXNzPVwic3VibWVudS1pdGVtXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJjaGlsZC51cmxcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1lbnUtbGlua1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN1Yk1lbnVMaW5rU3R5bGVzKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJjaGlsZC5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1lbnUtdGl0bGVcIj57eyBjaGlsZC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLmJhZGdlXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRCYWRnZVN0eWxlcyhjaGlsZC5iYWRnZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY2hpbGQuYmFkZ2UuY291bnQgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvcHQtY2FyZD5cbjwvZGl2PlxuIl19
|
@@ -2125,11 +2125,11 @@ class PTMenuComponent {
|
|
2125
2125
|
}
|
2126
2126
|
}
|
2127
2127
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
2128
|
-
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.action()\"\n >\n <i\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}.pt-menu.menu-right .menu-dropdown{left:0;right:auto}\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"] }] }); }
|
2128
|
+
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.action()\"\n >\n <i\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"] }] }); }
|
2129
2129
|
}
|
2130
2130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTMenuComponent, decorators: [{
|
2131
2131
|
type: Component,
|
2132
|
-
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.action()\"\n >\n <i\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}.pt-menu.menu-right .menu-dropdown{left:0;right:auto}\n"] }]
|
2132
|
+
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.action()\"\n >\n <i\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"] }]
|
2133
2133
|
}], propDecorators: { config: [{
|
2134
2134
|
type: Input
|
2135
2135
|
}], onDocumentClick: [{
|
@@ -2138,9 +2138,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
2138
2138
|
}] } });
|
2139
2139
|
|
2140
2140
|
class PTCardComponent {
|
2141
|
-
constructor() {
|
2142
|
-
this.config = {};
|
2143
|
-
}
|
2144
2141
|
// Default values as readonly variables
|
2145
2142
|
static { this.DEFAULT_TITLE_COLOR = '#333'; }
|
2146
2143
|
static { this.DEFAULT_TITLE_FONT_SIZE = '1.5em'; }
|
@@ -2157,6 +2154,14 @@ class PTCardComponent {
|
|
2157
2154
|
static { this.DEFAULT_TRANSPARENCY = '100'; }
|
2158
2155
|
static { this.DEFAULT_PADDING = '16px'; }
|
2159
2156
|
static { this.DEFAULT_MARGIN = '16px 0'; }
|
2157
|
+
ngAfterViewInit() {
|
2158
|
+
this.logPatternUrl();
|
2159
|
+
}
|
2160
|
+
logPatternUrl() {
|
2161
|
+
if (this.config.pattern?.imageUrl) {
|
2162
|
+
console.log(`[PTCardComponent] Identifier: ${this.config.identifier}, Pattern URL: ${this.config.pattern.imageUrl}`);
|
2163
|
+
}
|
2164
|
+
}
|
2160
2165
|
isTitleObject() {
|
2161
2166
|
return typeof this.config.title === 'object';
|
2162
2167
|
}
|
@@ -2181,6 +2186,15 @@ class PTCardComponent {
|
|
2181
2186
|
'--text-align': alignMap[title?.position || PTCardComponent.DEFAULT_TITLE_POSITION],
|
2182
2187
|
};
|
2183
2188
|
}
|
2189
|
+
constructor(cd) {
|
2190
|
+
this.cd = cd;
|
2191
|
+
this.config = {};
|
2192
|
+
}
|
2193
|
+
updateStyles() {
|
2194
|
+
// After data is fetched or updated
|
2195
|
+
this.getCardStyles();
|
2196
|
+
this.cd.detectChanges(); // Force Angular to detect the changes
|
2197
|
+
}
|
2184
2198
|
getIconClass() {
|
2185
2199
|
const icon = this.config.title?.icon;
|
2186
2200
|
return typeof icon === 'string' ? icon : icon?.code || null;
|
@@ -2209,27 +2223,41 @@ class PTCardComponent {
|
|
2209
2223
|
return this.config.menuPosition || PTCardComponent.DEFAULT_MENU_POSITION;
|
2210
2224
|
}
|
2211
2225
|
getCardStyles() {
|
2212
|
-
const transparency = this.config.pattern?.transparencyPercentage
|
2213
|
-
|
2214
|
-
|
2215
|
-
|
2216
|
-
|
2217
|
-
|
2218
|
-
const
|
2219
|
-
|
2220
|
-
|
2226
|
+
const transparency = this.config.pattern?.transparencyPercentage
|
2227
|
+
? parseFloat(this.config.pattern.transparencyPercentage) / 100
|
2228
|
+
: 1;
|
2229
|
+
const imageUrl = this.config.pattern?.imageUrl || '';
|
2230
|
+
const backgroundColor = this.config.pattern?.backgroundColor ||
|
2231
|
+
PTCardComponent.DEFAULT_BACKGROUND_COLOR;
|
2232
|
+
const patternWidth = this.config.pattern?.width || '100%';
|
2233
|
+
const patternHeight = this.config.pattern?.height || 'auto';
|
2234
|
+
// Determine background-repeat value
|
2235
|
+
const repeatX = this.config.pattern?.repeatX ? 'repeat' : 'no-repeat';
|
2236
|
+
const repeatY = this.config.pattern?.repeatY ? 'repeat' : 'no-repeat';
|
2237
|
+
const backgroundRepeat = `${repeatX} ${repeatY}`;
|
2238
|
+
// Adjust background-size based on repeatCount if provided
|
2239
|
+
const repeatCount = this.config.pattern?.repeatCount || 1;
|
2240
|
+
const backgroundSize = repeatCount > 1
|
2241
|
+
? `${patternWidth} ${patternHeight}`
|
2242
|
+
: `${patternWidth} ${patternHeight}`;
|
2243
|
+
// Determine background-position based on the position parameter
|
2244
|
+
const backgroundPosition = this.config.pattern?.position || 'center';
|
2221
2245
|
return {
|
2222
|
-
backgroundColor
|
2223
|
-
backgroundImage: backgroundImage,
|
2224
|
-
backgroundSize: 'cover',
|
2225
|
-
backgroundPosition: 'center',
|
2246
|
+
backgroundColor,
|
2226
2247
|
width: this.config.width || PTCardComponent.DEFAULT_WIDTH,
|
2227
2248
|
height: this.config.height || PTCardComponent.DEFAULT_HEIGHT,
|
2228
|
-
border:
|
2249
|
+
border: this.config.noBorder
|
2250
|
+
? 'none'
|
2251
|
+
: `solid ${this.config.borderWidth || PTCardComponent.DEFAULT_BORDER_WIDTH} ${this.config.borderColor || PTCardComponent.DEFAULT_BORDER_COLOR}`,
|
2229
2252
|
padding: this.config.padding || PTCardComponent.DEFAULT_PADDING,
|
2230
2253
|
margin: this.config.margin || PTCardComponent.DEFAULT_MARGIN,
|
2231
2254
|
borderRadius: this.config.borderRadius || '8px',
|
2232
2255
|
boxShadow: this.config.boxShadow || '0 2px 4px rgba(0, 0, 0, 0.1)',
|
2256
|
+
position: 'relative',
|
2257
|
+
backgroundImage: imageUrl ? `url(${imageUrl})` : 'none',
|
2258
|
+
backgroundSize,
|
2259
|
+
backgroundPosition,
|
2260
|
+
backgroundRepeat,
|
2233
2261
|
};
|
2234
2262
|
}
|
2235
2263
|
isScrollableHorizontal() {
|
@@ -2238,13 +2266,13 @@ class PTCardComponent {
|
|
2238
2266
|
isScrollableVertical() {
|
2239
2267
|
return !!this.config.scrollableVertical;
|
2240
2268
|
}
|
2241
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
2242
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTCardComponent, selector: "pt-card", inputs: { config: "config" }, ngImport: i0, template: "<div
|
2269
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTCardComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
2270
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTCardComponent, selector: "pt-card", inputs: { config: "config" }, ngImport: i0, template: "<div\n class=\"pt-card card\"\n [attr.id]=\"config.identifier\"\n [ngStyle]=\"getCardStyles()\"\n>\n <div *ngIf=\"hasTitle()\" class=\"card-header\" [ngStyle]=\"getTitleStyles()\">\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-left\"\n ></i>\n <span>{{ getTitleText() }}</span>\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-right\"\n ></i>\n <pt-menu\n *ngIf=\"config.menu\"\n [config]=\"config.menu\"\n [ngClass]=\"{\n 'menu-left': getMenuPosition() === 'left',\n 'menu-right': getMenuPosition() === 'right'\n }\"\n ></pt-menu>\n </div>\n <div\n class=\"card-body\"\n [ngClass]=\"{\n 'card-body-scrollable-vertical': isScrollableVertical(),\n 'card-body-scrollable-horizontal': isScrollableHorizontal()\n }\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pt-card .card{padding:16px;margin:16px 0;display:flex;flex-direction:column;max-height:100vh;overflow:hidden;position:relative}.pt-card .card:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;pointer-events:none}.pt-card .card-body{flex-grow:1;max-width:100%;z-index:1}.pt-card .card-body-scrollable-horizontal{overflow-x:auto;padding-bottom:8px}.pt-card .card-body-scrollable-vertical{flex-grow:1;overflow-y:auto;padding-right:8px}.pt-card .card-header{margin-bottom:16px;display:flex;align-items:center;justify-content:var(--text-align, left);position:relative}.pt-card .card-header-icon-left{margin-right:6px}.pt-card .card-header-icon-right{margin-left:6px}.pt-card .menu-left{position:absolute;left:0;top:0}.pt-card .menu-right{position:absolute;right:0;top:-2px}.pt-card .card-menu{margin-left:auto;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PTMenuComponent, selector: "pt-menu", inputs: ["config"] }] }); }
|
2243
2271
|
}
|
2244
2272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTCardComponent, decorators: [{
|
2245
2273
|
type: Component,
|
2246
|
-
args: [{ selector: 'pt-card', template: "<div
|
2247
|
-
}], propDecorators: { config: [{
|
2274
|
+
args: [{ selector: 'pt-card', template: "<div\n class=\"pt-card card\"\n [attr.id]=\"config.identifier\"\n [ngStyle]=\"getCardStyles()\"\n>\n <div *ngIf=\"hasTitle()\" class=\"card-header\" [ngStyle]=\"getTitleStyles()\">\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-left\"\n ></i>\n <span>{{ getTitleText() }}</span>\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-right\"\n ></i>\n <pt-menu\n *ngIf=\"config.menu\"\n [config]=\"config.menu\"\n [ngClass]=\"{\n 'menu-left': getMenuPosition() === 'left',\n 'menu-right': getMenuPosition() === 'right'\n }\"\n ></pt-menu>\n </div>\n <div\n class=\"card-body\"\n [ngClass]=\"{\n 'card-body-scrollable-vertical': isScrollableVertical(),\n 'card-body-scrollable-horizontal': isScrollableHorizontal()\n }\"\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pt-card .card{padding:16px;margin:16px 0;display:flex;flex-direction:column;max-height:100vh;overflow:hidden;position:relative}.pt-card .card:after{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;pointer-events:none}.pt-card .card-body{flex-grow:1;max-width:100%;z-index:1}.pt-card .card-body-scrollable-horizontal{overflow-x:auto;padding-bottom:8px}.pt-card .card-body-scrollable-vertical{flex-grow:1;overflow-y:auto;padding-right:8px}.pt-card .card-header{margin-bottom:16px;display:flex;align-items:center;justify-content:var(--text-align, left);position:relative}.pt-card .card-header-icon-left{margin-right:6px}.pt-card .card-header-icon-right{margin-left:6px}.pt-card .menu-left{position:absolute;left:0;top:0}.pt-card .menu-right{position:absolute;right:0;top:-2px}.pt-card .card-menu{margin-left:auto;cursor:pointer}\n"] }]
|
2275
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
2248
2276
|
type: Input
|
2249
2277
|
}] } });
|
2250
2278
|
|
@@ -2282,7 +2310,7 @@ class PTMenuFancyComponent {
|
|
2282
2310
|
icon: { code: 'pi pi-ellipsis-v', color: '#000', fontSize: '15px' },
|
2283
2311
|
menuDirection: 'right',
|
2284
2312
|
};
|
2285
|
-
this.cardMenuConfig = { noBorder: true };
|
2313
|
+
this.cardMenuConfig = { noBorder: true, margin: '0', padding: '5px' };
|
2286
2314
|
this.isOpen = false;
|
2287
2315
|
}
|
2288
2316
|
static { this.DEFAULT_TEXT_COLOR = '#000'; }
|
@@ -2379,6 +2407,8 @@ class PTNavbarMenuComponent {
|
|
2379
2407
|
static { this.DEFAULT_APP_NAME_FONT_SIZE = '24px'; }
|
2380
2408
|
static { this.DEFAULT_TRANSPARENCY = '100'; }
|
2381
2409
|
static { this.DEFAULT_ICON_COLOR = '#333'; }
|
2410
|
+
static { this.DEFAULT_TOGGLE_BUTTON_ICON = 'pi pi-bars'; }
|
2411
|
+
static { this.DEFAULT_TOGGLE_BUTTON_COLOR = '#333'; }
|
2382
2412
|
isImageStyle(object) {
|
2383
2413
|
return typeof object === 'object' && 'imageUrl' in object;
|
2384
2414
|
}
|
@@ -2431,25 +2461,50 @@ class PTNavbarMenuComponent {
|
|
2431
2461
|
getNavbarStyles() {
|
2432
2462
|
const transparency = this.navBarMenuConfig.pattern?.transparencyPercentage ||
|
2433
2463
|
PTNavbarMenuComponent.DEFAULT_TRANSPARENCY;
|
2434
|
-
const
|
2435
|
-
|
2464
|
+
const imageUrl = this.navBarMenuConfig.pattern?.imageUrl || '';
|
2465
|
+
const patternWidth = this.navBarMenuConfig.pattern?.width || '100%';
|
2466
|
+
const patternHeight = this.navBarMenuConfig.pattern?.height || 'auto';
|
2467
|
+
// Determine background-repeat value
|
2468
|
+
const repeatX = this.navBarMenuConfig.pattern?.repeatX
|
2469
|
+
? 'repeat'
|
2470
|
+
: 'no-repeat';
|
2471
|
+
const repeatY = this.navBarMenuConfig.pattern?.repeatY
|
2472
|
+
? 'repeat'
|
2473
|
+
: 'no-repeat';
|
2474
|
+
const backgroundRepeat = `${repeatX} ${repeatY}`;
|
2475
|
+
// Use the position directly from the pattern configuration
|
2476
|
+
const backgroundPosition = this.navBarMenuConfig.pattern?.position || 'center';
|
2477
|
+
// Construct the background image style with transparency
|
2478
|
+
const backgroundImage = imageUrl
|
2479
|
+
? `linear-gradient(rgba(255, 255, 255, ${1 - parseFloat(transparency) / 100}), rgba(255, 255, 255, ${1 - parseFloat(transparency) / 100})), url(${imageUrl})`
|
2436
2480
|
: '';
|
2437
2481
|
return {
|
2438
2482
|
backgroundColor: this.navBarMenuConfig.pattern ? 'transparent' : '#fff',
|
2439
2483
|
backgroundImage: backgroundImage,
|
2440
|
-
backgroundSize:
|
2441
|
-
backgroundPosition:
|
2484
|
+
backgroundSize: `${patternWidth} ${patternHeight}`,
|
2485
|
+
backgroundPosition: backgroundPosition,
|
2486
|
+
backgroundRepeat: backgroundRepeat,
|
2442
2487
|
};
|
2443
2488
|
}
|
2444
2489
|
toggleMenu() {
|
2445
2490
|
this.toggleSidebar.emit();
|
2446
2491
|
}
|
2492
|
+
getToggleButtonIcon() {
|
2493
|
+
return (this.navBarMenuConfig.toggleButtonIcon ||
|
2494
|
+
PTNavbarMenuComponent.DEFAULT_TOGGLE_BUTTON_ICON);
|
2495
|
+
}
|
2496
|
+
getToggleButtonStyles() {
|
2497
|
+
return {
|
2498
|
+
color: this.navBarMenuConfig.toggleButtonColor ||
|
2499
|
+
PTNavbarMenuComponent.DEFAULT_TOGGLE_BUTTON_COLOR,
|
2500
|
+
};
|
2501
|
+
}
|
2447
2502
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTNavbarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
2448
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTNavbarMenuComponent, selector: "pt-nav-bar-menu", inputs: { navBarMenuConfig: "navBarMenuConfig" }, outputs: { toggleSidebar: "toggleSidebar" }, ngImport: i0, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i
|
2503
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTNavbarMenuComponent, selector: "pt-nav-bar-menu", inputs: { navBarMenuConfig: "navBarMenuConfig" }, outputs: { toggleSidebar: "toggleSidebar" }, ngImport: i0, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n <!-- Toggle Button -->\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n <div class=\"navbar-right\">\n <pt-menu-fancy\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n [config]=\"menuConfig\"\n ></pt-menu-fancy>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;justify-content:space-between;align-items:center;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000;cursor:pointer}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: ["config"] }] }); }
|
2449
2504
|
}
|
2450
2505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTNavbarMenuComponent, decorators: [{
|
2451
2506
|
type: Component,
|
2452
|
-
args: [{ selector: 'pt-nav-bar-menu', template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i
|
2507
|
+
args: [{ selector: 'pt-nav-bar-menu', template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n <!-- Toggle Button -->\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n <div class=\"navbar-right\">\n <pt-menu-fancy\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n [config]=\"menuConfig\"\n ></pt-menu-fancy>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;justify-content:space-between;align-items:center;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000;cursor:pointer}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px}\n"] }]
|
2453
2508
|
}], propDecorators: { navBarMenuConfig: [{
|
2454
2509
|
type: Input
|
2455
2510
|
}], toggleSidebar: [{
|
@@ -2502,10 +2557,12 @@ class PTSideBarMenuComponent {
|
|
2502
2557
|
hoverColorSubMenu: '#e0e0e0', // Default hover color for submenu
|
2503
2558
|
};
|
2504
2559
|
this.searchCardConfig = {
|
2560
|
+
identifier: 'pt-side-bar-menu/search',
|
2505
2561
|
backgroundColor: 'white',
|
2506
2562
|
height: '72px',
|
2507
2563
|
};
|
2508
2564
|
this.cardConfig = {
|
2565
|
+
identifier: 'pt-side-bar-menu',
|
2509
2566
|
backgroundColor: '',
|
2510
2567
|
width: '',
|
2511
2568
|
height: '',
|
@@ -2523,6 +2580,7 @@ class PTSideBarMenuComponent {
|
|
2523
2580
|
}
|
2524
2581
|
ngOnInit() {
|
2525
2582
|
this.cardConfig = {
|
2583
|
+
identifier: 'pt-side-bar-menu',
|
2526
2584
|
backgroundColor: this.menuConfig.backgroundColor,
|
2527
2585
|
width: this.menuConfig.width,
|
2528
2586
|
height: this.menuConfig.height,
|
@@ -2881,6 +2939,7 @@ class PTPageSkeletonComponent {
|
|
2881
2939
|
// Initialize backgroundCardConfig with default values
|
2882
2940
|
initializeBackgroundCardConfig() {
|
2883
2941
|
this.pageSkeletonConfig.backgroundCardConfig = {
|
2942
|
+
identifier: 'pt-page-skeleton/background',
|
2884
2943
|
noBorder: this.pageSkeletonConfig.backgroundCardConfig?.noBorder ?? true,
|
2885
2944
|
backgroundColor: this.pageSkeletonConfig.backgroundCardConfig?.backgroundColor || '#fff',
|
2886
2945
|
padding: this.pageSkeletonConfig.backgroundCardConfig?.padding || '20px',
|
@@ -2891,6 +2950,7 @@ class PTPageSkeletonComponent {
|
|
2891
2950
|
// Initialize contentCardConfig with default values (if necessary)
|
2892
2951
|
initializeContentCardConfig() {
|
2893
2952
|
this.pageSkeletonConfig.contentCardConfig = {
|
2953
|
+
identifier: 'pt-page-skeleton/content',
|
2894
2954
|
noBorder: this.pageSkeletonConfig.contentCardConfig?.noBorder ?? false,
|
2895
2955
|
backgroundColor: this.pageSkeletonConfig.contentCardConfig?.backgroundColor || '#f0f0f0',
|
2896
2956
|
padding: this.pageSkeletonConfig.contentCardConfig?.padding || '15px',
|