ng-prime-tools 1.0.59 → 1.0.60
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/pt-side-bar-menu/pt-side-bar-menu.component.mjs +51 -49
- package/fesm2022/ng-prime-tools.mjs +49 -47
- package/fesm2022/ng-prime-tools.mjs.map +1 -1
- package/lib/pt-metric-panel/pt-metric-panel.component.d.ts +1 -1
- package/lib/pt-side-bar-menu/pt-side-bar-menu.component.d.ts +8 -6
- package/lib/pt-side-bar-menu/pt-side-bar-menu.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, Input, } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
3
|
import { BadgeType } from '../enums';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/common";
|
|
@@ -57,9 +57,9 @@ export class PTSideBarMenuComponent {
|
|
|
57
57
|
scrollableVertical: this.menuConfig.scrollable,
|
|
58
58
|
pattern: this.menuConfig.pattern,
|
|
59
59
|
};
|
|
60
|
-
this.filteredMenus = this.menuConfig.menus;
|
|
60
|
+
this.filteredMenus = this.cloneMenus(this.menuConfig.menus);
|
|
61
61
|
const cardWidth = this.menuConfig.width
|
|
62
|
-
? parseInt(this.menuConfig.width)
|
|
62
|
+
? parseInt(this.menuConfig.width, 10)
|
|
63
63
|
: 250;
|
|
64
64
|
this.searchField.width = `${cardWidth - 60}px`;
|
|
65
65
|
this.searchCardConfig.width = this.menuConfig.width;
|
|
@@ -68,10 +68,13 @@ export class PTSideBarMenuComponent {
|
|
|
68
68
|
this.formGroup
|
|
69
69
|
.get('search')
|
|
70
70
|
?.valueChanges.subscribe((searchTerm) => {
|
|
71
|
-
this.onSearch(searchTerm);
|
|
71
|
+
this.onSearch(searchTerm ?? '');
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
+
ngAfterViewInit() {
|
|
76
|
+
this.applyHoverEffects();
|
|
77
|
+
}
|
|
75
78
|
toggleMenu(item, event) {
|
|
76
79
|
item.isExpanded = !item.isExpanded;
|
|
77
80
|
event.preventDefault();
|
|
@@ -79,6 +82,9 @@ export class PTSideBarMenuComponent {
|
|
|
79
82
|
getChevronClass(item) {
|
|
80
83
|
return item.isExpanded ? 'fa fa-chevron-down' : 'fa fa-chevron-right';
|
|
81
84
|
}
|
|
85
|
+
hasChildren(item) {
|
|
86
|
+
return !!item?.children?.length;
|
|
87
|
+
}
|
|
82
88
|
getBadgeStyles(badge) {
|
|
83
89
|
const defaultColors = this.getDefaultBadgeColors(badge.type || BadgeType.Info);
|
|
84
90
|
return {
|
|
@@ -102,76 +108,66 @@ export class PTSideBarMenuComponent {
|
|
|
102
108
|
}
|
|
103
109
|
}
|
|
104
110
|
onSearch(searchTerm) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
this.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const lowerCaseSearch = searchTerm.toLowerCase();
|
|
111
|
-
this.filteredMenus = this.menuConfig.menus
|
|
112
|
-
.map((menu) => this.searchInMenu({ ...menu }, lowerCaseSearch))
|
|
113
|
-
.filter(Boolean);
|
|
111
|
+
const value = searchTerm.trim().toLowerCase();
|
|
112
|
+
if (!value) {
|
|
113
|
+
this.filteredMenus = this.cloneMenus(this.menuConfig.menus);
|
|
114
|
+
this.collapseAllMenus(this.filteredMenus);
|
|
115
|
+
return;
|
|
114
116
|
}
|
|
117
|
+
this.filteredMenus = this.cloneMenus(this.menuConfig.menus)
|
|
118
|
+
.map((menu) => this.searchInMenu(menu, value))
|
|
119
|
+
.filter(Boolean);
|
|
115
120
|
}
|
|
116
121
|
searchInMenu(menu, searchTerm) {
|
|
117
|
-
const isMatch = menu.label.toLowerCase().includes(searchTerm);
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return menu;
|
|
126
|
-
}
|
|
122
|
+
const isMatch = (menu.label || '').toLowerCase().includes(searchTerm);
|
|
123
|
+
const matchingChildren = (menu.children || [])
|
|
124
|
+
.map((child) => this.searchInMenu(child, searchTerm))
|
|
125
|
+
.filter(Boolean);
|
|
126
|
+
if (matchingChildren.length > 0) {
|
|
127
|
+
menu.children = matchingChildren;
|
|
128
|
+
menu.isExpanded = true;
|
|
129
|
+
return menu;
|
|
127
130
|
}
|
|
128
131
|
return isMatch ? menu : null;
|
|
129
132
|
}
|
|
130
|
-
collapseAllMenus() {
|
|
131
|
-
|
|
133
|
+
collapseAllMenus(menus) {
|
|
134
|
+
menus.forEach((menu) => {
|
|
132
135
|
menu.isExpanded = false;
|
|
136
|
+
if (menu.children?.length) {
|
|
137
|
+
this.collapseAllMenus(menu.children);
|
|
138
|
+
}
|
|
133
139
|
});
|
|
134
140
|
}
|
|
135
141
|
getMenuItemStyles() {
|
|
136
142
|
return {
|
|
137
|
-
color: this.menuConfig.fontColor || '#333',
|
|
143
|
+
color: this.menuConfig.fontColor || '#333',
|
|
138
144
|
};
|
|
139
145
|
}
|
|
140
146
|
getMenuLinkStyles() {
|
|
141
147
|
return {
|
|
142
148
|
color: this.menuConfig.fontColor || '#333',
|
|
143
|
-
|
|
144
|
-
|
|
149
|
+
textDecoration: 'none',
|
|
150
|
+
borderRadius: '8px',
|
|
145
151
|
padding: '10px 15px',
|
|
146
|
-
|
|
152
|
+
fontSize: '16px',
|
|
147
153
|
transition: 'background-color 0.2s, color 0.2s',
|
|
148
154
|
display: 'flex',
|
|
149
|
-
|
|
150
|
-
':hover': {
|
|
151
|
-
backgroundColor: this.menuConfig.hoverColor || '#f1f1f1',
|
|
152
|
-
color: '#111',
|
|
153
|
-
},
|
|
155
|
+
alignItems: 'center',
|
|
154
156
|
};
|
|
155
157
|
}
|
|
156
|
-
getSubMenuLinkStyles() {
|
|
158
|
+
getSubMenuLinkStyles(level = 1) {
|
|
157
159
|
return {
|
|
158
160
|
color: this.menuConfig.fontColorSubMenu || this.menuConfig.fontColor || '#666',
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
padding: '5px 10px',
|
|
161
|
+
textDecoration: 'none',
|
|
162
|
+
borderRadius: '5px',
|
|
163
|
+
padding: level === 1 ? '5px 10px' : '4px 10px',
|
|
162
164
|
transition: 'background-color 0.2s, color 0.2s',
|
|
163
|
-
|
|
164
|
-
backgroundColor: this.menuConfig.hoverColorSubMenu || '#e0e0e0',
|
|
165
|
-
},
|
|
165
|
+
fontSize: level === 1 ? '14px' : '13px',
|
|
166
166
|
};
|
|
167
167
|
}
|
|
168
|
-
ngAfterViewInit() {
|
|
169
|
-
this.applyHoverEffects();
|
|
170
|
-
}
|
|
171
168
|
applyHoverEffects() {
|
|
172
169
|
const menuLinks = this.el.nativeElement.querySelectorAll('a.menu-link');
|
|
173
170
|
const subMenuLinks = this.el.nativeElement.querySelectorAll('a.submenu-link');
|
|
174
|
-
// Apply hover effects for main menu links
|
|
175
171
|
menuLinks.forEach((link) => {
|
|
176
172
|
this.renderer.listen(link, 'mouseenter', () => {
|
|
177
173
|
this.renderer.setStyle(link, 'background-color', this.menuConfig.hoverColor || '#f1f1f1');
|
|
@@ -182,7 +178,6 @@ export class PTSideBarMenuComponent {
|
|
|
182
178
|
this.renderer.setStyle(link, 'color', this.menuConfig.fontColor || '#333');
|
|
183
179
|
});
|
|
184
180
|
});
|
|
185
|
-
// Apply hover effects for submenu links
|
|
186
181
|
subMenuLinks.forEach((link) => {
|
|
187
182
|
this.renderer.listen(link, 'mouseenter', () => {
|
|
188
183
|
this.renderer.setStyle(link, 'background-color', this.menuConfig.hoverColorSubMenu ||
|
|
@@ -200,13 +195,20 @@ export class PTSideBarMenuComponent {
|
|
|
200
195
|
});
|
|
201
196
|
});
|
|
202
197
|
}
|
|
198
|
+
cloneMenus(menus = []) {
|
|
199
|
+
return menus.map((menu) => ({
|
|
200
|
+
...menu,
|
|
201
|
+
children: this.cloneMenus(menu.children || []),
|
|
202
|
+
isExpanded: menu.isExpanded ?? false,
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
203
205
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTSideBarMenuComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTSideBarMenuComponent, selector: "pt-side-bar-menu", inputs: { menuConfig: "menuConfig" }, ngImport: i0, template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <
|
|
206
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTSideBarMenuComponent, selector: "pt-side-bar-menu", inputs: { menuConfig: "menuConfig" }, ngImport: i0, template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <ng-container\n *ngTemplateOutlet=\"\n recursiveMenu;\n context: { $implicit: filteredMenus, level: 0 }\n \"\n ></ng-container>\n </ul>\n </pt-card>\n</div>\n\n<ng-template #recursiveMenu let-menus let-level=\"level\">\n <ng-container *ngFor=\"let item of menus\">\n <li\n class=\"menu-item\"\n [ngClass]=\"{\n 'menu-item-expanded': item.isExpanded,\n 'submenu-level-item': level > 0,\n }\"\n [attr.data-level]=\"level\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- item without children -->\n <a\n *ngIf=\"!hasChildren(item)\"\n [routerLink]=\"item.url\"\n [class.menu-link]=\"level === 0\"\n [class.submenu-link]=\"level > 0\"\n [ngStyle]=\"\n level === 0 ? getMenuLinkStyles() : getSubMenuLinkStyles(level)\n \"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span [class.submenu-title]=\"level > 0\">{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- item with children -->\n <a\n *ngIf=\"hasChildren(item)\"\n href=\"#\"\n [class.menu-link]=\"level === 0\"\n [class.submenu-link]=\"level > 0\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"\n level === 0 ? getMenuLinkStyles() : getSubMenuLinkStyles(level)\n \"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span [class.submenu-title]=\"level > 0\">{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <div\n class=\"submenu-wrapper\"\n [class.expanded]=\"item.isExpanded\"\n *ngIf=\"hasChildren(item)\"\n >\n <ul\n class=\"submenu-list\"\n [ngClass]=\"{\n 'submenu-list-root': level === 0,\n 'submenu-list-nested': level > 0,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n recursiveMenu;\n context: { $implicit: item.children, level: level + 1 }\n \"\n ></ng-container>\n </ul>\n </div>\n </li>\n </ng-container>\n</ng-template>\n", styles: [".pt-side-bar-menu .badge{background-color:#38bdf8;border-radius:5px;color:#fff;font-size:12px;margin-left:auto;padding:2px 8px}.pt-side-bar-menu .chevron{color:#8c8c8c;cursor:pointer;margin-left:auto}.pt-side-bar-menu .menu-item{position:relative}.pt-side-bar-menu .menu-link{align-items:center;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;margin-bottom:15px;padding:10px 15px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .menu-link:hover{background-color:#f1f1f1;color:#111}.pt-side-bar-menu .menu-link i{margin-right:10px}.pt-side-bar-menu .menu-list{list-style-type:none;padding:0;margin:0}.pt-side-bar-menu pt-card{transition:transform .3s ease-in-out,opacity .3s ease-in-out;display:block}.pt-side-bar-menu .sidebar-hidden{transform:translate(-100%);opacity:0}.pt-side-bar-menu .sidebar-menu{margin:0;padding:0;transition:transform .3s ease-in-out;width:250px}.pt-side-bar-menu .submenu-wrapper{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}.pt-side-bar-menu .submenu-wrapper.expanded{grid-template-rows:1fr}.pt-side-bar-menu .submenu-list{overflow:hidden;list-style-type:none;margin-top:5px;margin-bottom:0;position:relative}.pt-side-bar-menu .submenu-list-root{border-left:1px solid #e5e7eb;margin-left:23px;padding-left:25px;padding-top:5px;padding-bottom:5px}.pt-side-bar-menu .submenu-list-root:after{background-color:#e5e7eb;bottom:0;content:\"\";left:-1px;position:absolute;top:0;width:1px}.pt-side-bar-menu .submenu-list-nested{border-left:1px solid #2f3b46;margin-left:18px;padding-left:20px;padding-top:4px;padding-bottom:4px}.pt-side-bar-menu .submenu-item,.pt-side-bar-menu .submenu-level-item{padding:5px 0;position:relative}.pt-side-bar-menu .submenu-level-item:before{background-color:#e5e7eb;content:\"\";height:1px;left:-25px;position:absolute;top:22px;transform:translateY(-50%);width:25px}.pt-side-bar-menu .submenu-link{align-items:center;border-radius:5px;color:#666;display:flex;font-size:14px;padding:5px 10px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .submenu-link:hover{background-color:#f1f1f1;color:#000}.pt-side-bar-menu .submenu-title{margin-left:5px}\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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: i4.PTTextInputComponent, selector: "pt-text-input", inputs: ["formGroup", "formField"] }] }); }
|
|
205
207
|
}
|
|
206
208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTSideBarMenuComponent, decorators: [{
|
|
207
209
|
type: Component,
|
|
208
|
-
args: [{ selector: 'pt-side-bar-menu', template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <
|
|
210
|
+
args: [{ selector: 'pt-side-bar-menu', template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <ng-container\n *ngTemplateOutlet=\"\n recursiveMenu;\n context: { $implicit: filteredMenus, level: 0 }\n \"\n ></ng-container>\n </ul>\n </pt-card>\n</div>\n\n<ng-template #recursiveMenu let-menus let-level=\"level\">\n <ng-container *ngFor=\"let item of menus\">\n <li\n class=\"menu-item\"\n [ngClass]=\"{\n 'menu-item-expanded': item.isExpanded,\n 'submenu-level-item': level > 0,\n }\"\n [attr.data-level]=\"level\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- item without children -->\n <a\n *ngIf=\"!hasChildren(item)\"\n [routerLink]=\"item.url\"\n [class.menu-link]=\"level === 0\"\n [class.submenu-link]=\"level > 0\"\n [ngStyle]=\"\n level === 0 ? getMenuLinkStyles() : getSubMenuLinkStyles(level)\n \"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span [class.submenu-title]=\"level > 0\">{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- item with children -->\n <a\n *ngIf=\"hasChildren(item)\"\n href=\"#\"\n [class.menu-link]=\"level === 0\"\n [class.submenu-link]=\"level > 0\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"\n level === 0 ? getMenuLinkStyles() : getSubMenuLinkStyles(level)\n \"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span [class.submenu-title]=\"level > 0\">{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <div\n class=\"submenu-wrapper\"\n [class.expanded]=\"item.isExpanded\"\n *ngIf=\"hasChildren(item)\"\n >\n <ul\n class=\"submenu-list\"\n [ngClass]=\"{\n 'submenu-list-root': level === 0,\n 'submenu-list-nested': level > 0,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n recursiveMenu;\n context: { $implicit: item.children, level: level + 1 }\n \"\n ></ng-container>\n </ul>\n </div>\n </li>\n </ng-container>\n</ng-template>\n", styles: [".pt-side-bar-menu .badge{background-color:#38bdf8;border-radius:5px;color:#fff;font-size:12px;margin-left:auto;padding:2px 8px}.pt-side-bar-menu .chevron{color:#8c8c8c;cursor:pointer;margin-left:auto}.pt-side-bar-menu .menu-item{position:relative}.pt-side-bar-menu .menu-link{align-items:center;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;margin-bottom:15px;padding:10px 15px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .menu-link:hover{background-color:#f1f1f1;color:#111}.pt-side-bar-menu .menu-link i{margin-right:10px}.pt-side-bar-menu .menu-list{list-style-type:none;padding:0;margin:0}.pt-side-bar-menu pt-card{transition:transform .3s ease-in-out,opacity .3s ease-in-out;display:block}.pt-side-bar-menu .sidebar-hidden{transform:translate(-100%);opacity:0}.pt-side-bar-menu .sidebar-menu{margin:0;padding:0;transition:transform .3s ease-in-out;width:250px}.pt-side-bar-menu .submenu-wrapper{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}.pt-side-bar-menu .submenu-wrapper.expanded{grid-template-rows:1fr}.pt-side-bar-menu .submenu-list{overflow:hidden;list-style-type:none;margin-top:5px;margin-bottom:0;position:relative}.pt-side-bar-menu .submenu-list-root{border-left:1px solid #e5e7eb;margin-left:23px;padding-left:25px;padding-top:5px;padding-bottom:5px}.pt-side-bar-menu .submenu-list-root:after{background-color:#e5e7eb;bottom:0;content:\"\";left:-1px;position:absolute;top:0;width:1px}.pt-side-bar-menu .submenu-list-nested{border-left:1px solid #2f3b46;margin-left:18px;padding-left:20px;padding-top:4px;padding-bottom:4px}.pt-side-bar-menu .submenu-item,.pt-side-bar-menu .submenu-level-item{padding:5px 0;position:relative}.pt-side-bar-menu .submenu-level-item:before{background-color:#e5e7eb;content:\"\";height:1px;left:-25px;position:absolute;top:22px;transform:translateY(-50%);width:25px}.pt-side-bar-menu .submenu-link{align-items:center;border-radius:5px;color:#666;display:flex;font-size:14px;padding:5px 10px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .submenu-link:hover{background-color:#f1f1f1;color:#000}.pt-side-bar-menu .submenu-title{margin-left:5px}\n"] }]
|
|
209
211
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { menuConfig: [{
|
|
210
212
|
type: Input
|
|
211
213
|
}] } });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQU9yQyxNQUFNLE9BQU8sc0JBQXNCO0lBZWpDLFlBQW9CLFFBQW1CLEVBQVUsRUFBYztRQUEzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWR0RCxlQUFVLEdBQXNCO1lBQ3ZDLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLE9BQU87WUFDeEIsU0FBUyxFQUFFLE1BQU07WUFDakIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixVQUFVLEVBQUUsU0FBUztZQUNyQixpQkFBaUIsRUFBRSxTQUFTO1NBQzdCLENBQUM7UUFJRixxQkFBZ0IsR0FBZTtZQUM3QixZQUFZLEVBQUUsUUFBUTtZQUN0QixnQkFBZ0IsRUFBRSxRQUFRO1lBQzFCLFVBQVUsRUFBRSx5QkFBeUI7WUFDckMsZUFB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QUFFLFlBQVksRUFBRSxHQUFHLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxFQUNKLE9BQU8sRUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtvQkFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO29CQUN6QixNQUFNLENBQ1QsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXRQVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw4RkN2Qm5DLHdoRkFvRkE7OzRGRDdEYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0Usa0JBQWtCO3VHQUtuQixVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1lbnUsXG4gIEZvcm1UZXh0RmllbGQsXG4gIFNpZGVNZW51QmFyQ29uZmlnLFxuICBDYXJkQ29uZmlnLFxuICBCYWRnZSxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IEJhZGdlVHlwZSB9IGZyb20gJy4uL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtc2lkZS1iYXItbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1zaWRlLWJhci1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUU2lkZUJhck1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBtZW51Q29uZmlnOiBTaWRlTWVudUJhckNvbmZpZyA9IHtcbiAgICBtZW51czogW10sXG4gICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgd2lkdGg6ICcyNTBweCcsXG4gICAgaGVpZ2h0OiAnMTAwdmgnLFxuICAgIHNjcm9sbGFibGU6IHRydWUsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgIGZvbnRDb2xvcjogJyMzMzMnLFxuICAgIGZvbnRDb2xvclN1Yk1lbnU6ICcjNjY2JyxcbiAgICBob3ZlckNvbG9yOiAnI2YxZjFmMScsXG4gICAgaG92ZXJDb2xvclN1Yk1lbnU6ICcjZTBlMGUwJyxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgc2VhcmNoQ2FyZENvbmZpZzogQ2FyZENvbmZpZyA9IHtcbiAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGFsaWduQm9keUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGlkZW50aWZpZXI6ICdwdC1zaWRlLWJhci1tZW51L3NlYXJjaCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnd2hpdGUnLFxuICAgIGhlaWdodDogJzcycHgnLFxuICAgIHBhZGRpbmc6ICcwJyxcbiAgfTtcblxuICBjYXJkQ29uZmlnOiBDYXJkQ29uZmlnID0ge1xuICAgIGlkZW50aWZpZXI6ICdwdC1zaWRlLWJhci1tZW51JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcnLFxuICAgIHdpZHRoOiAnJyxcbiAgICBoZWlnaHQ6ICcnLFxuICAgIHNjcm9sbGFibGVWZXJ0aWNhbDogZmFsc2UsXG4gIH07XG5cbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzZWFyY2g6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gIH0pO1xuXG4gIHNlYXJjaEZpZWxkOiBGb3JtVGV4dEZpZWxkID0ge1xuICAgIG5hbWU6ICdzZWFyY2gnLFxuICAgIHBsYWNlaG9sZGVyOiAnU2VhcmNoLi4uJyxcbiAgICBpY29uQ2xhc3M6ICdwaSBwaS1zZWFyY2gnLFxuICB9O1xuXG4gIGZpbHRlcmVkTWVudXM6IE1lbnVbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FyZENvbmZpZyA9IHtcbiAgICAgIGlkZW50aWZpZXI6ICdwdC1zaWRlLWJhci1tZW51JyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5tZW51Q29uZmlnLmJhY2tncm91bmRDb2xvcixcbiAgICAgIHdpZHRoOiB0aGlzLm1lbnVDb25maWcud2lkdGgsXG4gICAgICBoZWlnaHQ6IHRoaXMubWVudUNvbmZpZy5oZWlnaHQsXG4gICAgICBzY3JvbGxhYmxlVmVydGljYWw6IHRoaXMubWVudUNvbmZpZy5zY3JvbGxhYmxlLFxuICAgICAgcGF0dGVybjogdGhpcy5tZW51Q29uZmlnLnBhdHRlcm4sXG4gICAgfTtcblxuICAgIHRoaXMuZmlsdGVyZWRNZW51cyA9IHRoaXMubWVudUNvbmZpZy5tZW51cztcblxuICAgIGNvbnN0IGNhcmRXaWR0aCA9IHRoaXMubWVudUNvbmZpZy53aWR0aFxuICAgICAgPyBwYXJzZUludCh0aGlzLm1lbnVDb25maWcud2lkdGgpXG4gICAgICA6IDI1MDtcbiAgICB0aGlzLnNlYXJjaEZpZWxkLndpZHRoID0gYCR7Y2FyZFdpZHRoIC0gNjB9cHhgO1xuICAgIHRoaXMuc2VhcmNoQ2FyZENvbmZpZy53aWR0aCA9IHRoaXMubWVudUNvbmZpZy53aWR0aDtcbiAgICB0aGlzLnNlYXJjaENhcmRDb25maWcucGF0dGVybiA9IHRoaXMubWVudUNvbmZpZy5wYXR0ZXJuO1xuXG4gICAgaWYgKHRoaXMubWVudUNvbmZpZy5zZWFyY2hhYmxlKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cFxuICAgICAgICAuZ2V0KCdzZWFyY2gnKVxuICAgICAgICA/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHNlYXJjaFRlcm06IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMub25TZWFyY2goc2VhcmNoVGVybSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZU1lbnUoaXRlbTogTWVudSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaXRlbS5pc0V4cGFuZGVkID0gIWl0ZW0uaXNFeHBhbmRlZDtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgZ2V0Q2hldnJvbkNsYXNzKGl0ZW06IE1lbnUpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmlzRXhwYW5kZWQgPyAnZmEgZmEtY2hldnJvbi1kb3duJyA6ICdmYSBmYS1jaGV2cm9uLXJpZ2h0JztcbiAgfVxuXG4gIGdldEJhZGdlU3R5bGVzKGJhZGdlOiBCYWRnZSkge1xuICAgIGNvbnN0IGRlZmF1bHRDb2xvcnMgPSB0aGlzLmdldERlZmF1bHRCYWRnZUNvbG9ycyhcbiAgICAgIGJhZGdlLnR5cGUgfHwgQmFkZ2VUeXBlLkluZm9cbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiBiYWRnZS5jb2xvciB8fCBkZWZhdWx0Q29sb3JzLmNvbG9yLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWRnZS5iYWNrZ3JvdW5kQ29sb3IgfHwgZGVmYXVsdENvbG9ycy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBwYWRkaW5nOiAnMnB4IDhweCcsXG4gICAgICBib3JkZXJSYWRpdXM6ICc1cHgnLFxuICAgICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEJhZGdlQ29sb3JzKHR5cGU6IEJhZGdlVHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBCYWRnZVR5cGUuSW5mbzpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyMxN2EyYjgnIH07XG4gICAgICBjYXNlIEJhZGdlVHlwZS5EYW5nZXI6XG4gICAgICAgIHJldHVybiB7IGNvbG9yOiAnd2hpdGUnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjZGMzNTQ1JyB9O1xuICAgICAgY2FzZSBCYWRnZVR5cGUuV2FybmluZzpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyNmZmMxMDcnIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnIzZjNzU3ZCcgfTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2hUZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoc2VhcmNoVGVybS50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTWVudXMgPSB0aGlzLm1lbnVDb25maWcubWVudXM7XG4gICAgICB0aGlzLmNvbGxhcHNlQWxsTWVudXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbG93ZXJDYXNlU2VhcmNoID0gc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGhpcy5maWx0ZXJlZE1lbnVzID0gdGhpcy5tZW51Q29uZmlnLm1lbnVzXG4gICAgICAgIC5tYXAoKG1lbnUpID0+IHRoaXMuc2VhcmNoSW5NZW51KHsgLi4ubWVudSB9LCBsb3dlckNhc2VTZWFyY2gpKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIE1lbnVbXTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2hJbk1lbnUobWVudTogTWVudSwgc2VhcmNoVGVybTogc3RyaW5nKTogTWVudSB8IG51bGwge1xuICAgIGNvbnN0IGlzTWF0Y2ggPSBtZW51LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSk7XG5cbiAgICBpZiAobWVudS5jaGlsZHJlbikge1xuICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZHJlbiA9IG1lbnUuY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoY2hpbGQpID0+IHRoaXMuc2VhcmNoSW5NZW51KGNoaWxkLCBzZWFyY2hUZXJtKSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBNZW51W107XG5cbiAgICAgIGlmIChtYXRjaGluZ0NoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbWVudS5jaGlsZHJlbiA9IG1hdGNoaW5nQ2hpbGRyZW47XG4gICAgICAgIG1lbnUuaXNFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBtZW51O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpc01hdGNoID8gbWVudSA6IG51bGw7XG4gIH1cblxuICBjb2xsYXBzZUFsbE1lbnVzKCk6IHZvaWQge1xuICAgIHRoaXMubWVudUNvbmZpZy5tZW51cy5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICBtZW51LmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE1lbnVJdGVtU3R5bGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjMzMzJywgLy8gU2V0IGRlZmF1bHQgZm9udCBjb2xvciBpZiBub3Qgc3BlY2lmaWVkIGluIGNvbmZpZ1xuICAgIH07XG4gIH1cblxuICBnZXRNZW51TGlua1N0eWxlcygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvciB8fCAnIzMzMycsXG4gICAgICAndGV4dC1kZWNvcmF0aW9uJzogJ25vbmUnLFxuICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnOHB4JyxcbiAgICAgIHBhZGRpbmc6ICcxMHB4IDE1cHgnLFxuICAgICAgJ2ZvbnQtc2l6ZSc6ICcxNnB4JyxcbiAgICAgIHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGNvbG9yIDAuMnMnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgJ2FsaWduLWl0ZW1zJzogJ2NlbnRlcicsXG4gICAgICAnOmhvdmVyJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yIHx8ICcjZjFmMWYxJyxcbiAgICAgICAgY29sb3I6ICcjMTExJyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGdldFN1Yk1lbnVMaW5rU3R5bGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOlxuICAgICAgICB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yU3ViTWVudSB8fCB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjNjY2JyxcbiAgICAgICd0ZXh0LWRlY29yYXRpb24nOiAnbm9uZScsXG4gICAgICAnYm9yZGVyLXJhZGl1cyc6ICc1cHgnLFxuICAgICAgcGFkZGluZzogJzVweCAxMHB4JyxcbiAgICAgIHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGNvbG9yIDAuMnMnLFxuICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm1lbnVDb25maWcuaG92ZXJDb2xvclN1Yk1lbnUgfHwgJyNlMGUwZTAnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcGx5SG92ZXJFZmZlY3RzKCk7XG4gIH1cblxuICBhcHBseUhvdmVyRWZmZWN0cygpOiB2b2lkIHtcbiAgICBjb25zdCBtZW51TGlua3MgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYS5tZW51LWxpbmsnKTtcbiAgICBjb25zdCBzdWJNZW51TGlua3MgPVxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Euc3VibWVudS1saW5rJyk7XG5cbiAgICAvLyBBcHBseSBob3ZlciBlZmZlY3RzIGZvciBtYWluIG1lbnUgbGlua3NcbiAgICBtZW51TGlua3MuZm9yRWFjaCgobGluazogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yIHx8ICcjZjFmMWYxJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJGb250Q29sb3IgfHwgJ3doaXRlJ1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGxpbmssICdiYWNrZ3JvdW5kLWNvbG9yJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyMzMzMnXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIEFwcGx5IGhvdmVyIGVmZmVjdHMgZm9yIHN1Ym1lbnUgbGlua3NcbiAgICBzdWJNZW51TGlua3MuZm9yRWFjaCgobGluazogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yU3ViTWVudSB8fFxuICAgICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHxcbiAgICAgICAgICAgICcjZjFmMWYxJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJGb250Q29sb3JTdWJNZW51IHx8XG4gICAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJGb250Q29sb3IgfHxcbiAgICAgICAgICAgICcjZmZmJ1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGxpbmssICdiYWNrZ3JvdW5kLWNvbG9yJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3JTdWJNZW51IHx8XG4gICAgICAgICAgICB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8XG4gICAgICAgICAgICAnIzY2NidcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHQtc2lkZS1iYXItbWVudVwiPlxuICA8cHQtY2FyZFxuICAgICpuZ0lmPVwibWVudUNvbmZpZy5zZWFyY2hhYmxlXCJcbiAgICBbY29uZmlnXT1cInNlYXJjaENhcmRDb25maWdcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NpZGViYXItaGlkZGVuJzogIW1lbnVDb25maWcuaXNWaXNpYmxlIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxuICAgICAgPHB0LXRleHQtaW5wdXQgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBbZm9ybUZpZWxkXT1cInNlYXJjaEZpZWxkXCI+XG4gICAgICA8L3B0LXRleHQtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIDwvcHQtY2FyZD5cblxuICA8cHQtY2FyZFxuICAgIFtjb25maWddPVwiY2FyZENvbmZpZ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2lkZWJhci1oaWRkZW4nOiAhbWVudUNvbmZpZy5pc1Zpc2libGUgfVwiXG4gID5cbiAgICA8dWwgY2xhc3M9XCJtZW51LWxpc3RcIj5cbiAgICAgIDxsaVxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZE1lbnVzXCJcbiAgICAgICAgY2xhc3M9XCJtZW51LWl0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdtZW51LWl0ZW0tZXhwYW5kZWQnOiBpdGVtLmlzRXhwYW5kZWQgfVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldE1lbnVJdGVtU3R5bGVzKClcIlxuICAgICAgPlxuICAgICAgICA8IS0tIE1haW4gbWVudSBpdGVtcyB3aXRob3V0IGNoaWxkcmVuIC0tPlxuICAgICAgICA8YVxuICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aFwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIlxuICAgICAgICAgIGNsYXNzPVwibWVudS1saW5rXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJnZXRNZW51TGlua1N0eWxlcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIml0ZW0uYmFkZ2VcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0QmFkZ2VTdHlsZXMoaXRlbS5iYWRnZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5iYWRnZS5jb3VudCB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIDwhLS0gTWVudSBpdGVtcyB3aXRoIGNoaWxkcmVuIC0tPlxuICAgICAgICA8YVxuICAgICAgICAgICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoXCJcbiAgICAgICAgICBjbGFzcz1cIm1lbnUtbGlua1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWVudUxpbmtTdHlsZXMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJpdGVtLmljb25cIj48L2k+XG4gICAgICAgICAgPHNwYW4+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEJhZGdlU3R5bGVzKGl0ZW0uYmFkZ2UpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGl0ZW0uYmFkZ2UuY291bnQgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGkgW25nQ2xhc3NdPVwiZ2V0Q2hldnJvbkNsYXNzKGl0ZW0pXCIgY2xhc3M9XCJjaGV2cm9uXCI+PC9pPlxuICAgICAgICA8L2E+XG5cbiAgICAgICAgPCEtLSBTdWJtZW51IC0tPlxuICAgICAgICA8dWwgY2xhc3M9XCJzdWJtZW51LWxpc3RcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW5cIiBjbGFzcz1cInN1Ym1lbnUtaXRlbVwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiY2hpbGQudXJsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdWJtZW51LWxpbmtcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRTdWJNZW51TGlua1N0eWxlcygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiY2hpbGQuaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJtZW51LXRpdGxlXCI+e3sgY2hpbGQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5iYWRnZVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0QmFkZ2VTdHlsZXMoY2hpbGQuYmFkZ2UpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNoaWxkLmJhZGdlLmNvdW50IH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3B0LWNhcmQ+XG48L2Rpdj5cbiJdfQ==
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LXNpZGUtYmFyLW1lbnUvcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7OztBQU9yQyxNQUFNLE9BQU8sc0JBQXNCO0lBZWpDLFlBQ1UsUUFBbUIsRUFDbkIsRUFBYztRQURkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWhCZixlQUFVLEdBQXNCO1lBQ3ZDLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLElBQUk7WUFDaEIsZUFBZSxFQUFFLE9BQU87WUFDeEIsU0FBUyxFQUFFLE1BQU07WUFDakIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4QixVQUFVLEVBQUUsU0FBUztZQUNyQixpQkFBaUIsRUFBRSxTQUFTO1NBQzdCLENBQUM7UUFPRixxQkFBZ0IsR0FBZTtZQUM3QixZQUFZLEVBQUUsUUFBUTtZQUN0QixnQkFBZ0IsRUFBRSxRQUFRO1lBQzFCLFVBQVUsRUFBRSx5QkFBeUI7WUFDckMsZUFB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QUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksRUFDSixPQUFPLEVBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUI7b0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYztvQkFDOUIsTUFBTSxDQUNULENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksRUFDSixPQUFPLEVBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7b0JBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUztvQkFDekIsTUFBTSxDQUNULENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFVBQVUsQ0FBQyxRQUFnQixFQUFFO1FBQ25DLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQixHQUFHLElBQUk7WUFDUCxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUM5QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLO1NBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzsrR0FsUVUsc0JBQXNCO21HQUF0QixzQkFBc0IsOEZDdkJuQyxpK0ZBeUdBOzs0RkRsRmEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGtCQUFrQjt1R0FLbkIsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBCYWRnZSxcbiAgQ2FyZENvbmZpZyxcbiAgRm9ybVRleHRGaWVsZCxcbiAgTWVudSxcbiAgU2lkZU1lbnVCYXJDb25maWcsXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBCYWRnZVR5cGUgfSBmcm9tICcuLi9lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LXNpZGUtYmFyLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtc2lkZS1iYXItbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LXNpZGUtYmFyLW1lbnUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVFNpZGVCYXJNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgbWVudUNvbmZpZzogU2lkZU1lbnVCYXJDb25maWcgPSB7XG4gICAgbWVudXM6IFtdLFxuICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICBzZWFyY2hhYmxlOiB0cnVlLFxuICAgIHdpZHRoOiAnMjUwcHgnLFxuICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICBzY3JvbGxhYmxlOiB0cnVlLFxuICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgICBmb250Q29sb3I6ICcjMzMzJyxcbiAgICBmb250Q29sb3JTdWJNZW51OiAnIzY2NicsXG4gICAgaG92ZXJDb2xvcjogJyNmMWYxZjEnLFxuICAgIGhvdmVyQ29sb3JTdWJNZW51OiAnI2UwZTBlMCcsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICkge31cblxuICBzZWFyY2hDYXJkQ29uZmlnOiBDYXJkQ29uZmlnID0ge1xuICAgIGFsaWduQ29udGVudDogJ2NlbnRlcicsXG4gICAgYWxpZ25Cb2R5Q29udGVudDogJ2NlbnRlcicsXG4gICAgaWRlbnRpZmllcjogJ3B0LXNpZGUtYmFyLW1lbnUvc2VhcmNoJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd3aGl0ZScsXG4gICAgaGVpZ2h0OiAnNzJweCcsXG4gICAgcGFkZGluZzogJzAnLFxuICB9O1xuXG4gIGNhcmRDb25maWc6IENhcmRDb25maWcgPSB7XG4gICAgaWRlbnRpZmllcjogJ3B0LXNpZGUtYmFyLW1lbnUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogJycsXG4gICAgd2lkdGg6ICcnLFxuICAgIGhlaWdodDogJycsXG4gICAgc2Nyb2xsYWJsZVZlcnRpY2FsOiBmYWxzZSxcbiAgfTtcblxuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHNlYXJjaDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgfSk7XG5cbiAgc2VhcmNoRmllbGQ6IEZvcm1UZXh0RmllbGQgPSB7XG4gICAgbmFtZTogJ3NlYXJjaCcsXG4gICAgcGxhY2Vob2xkZXI6ICdTZWFyY2guLi4nLFxuICAgIGljb25DbGFzczogJ3BpIHBpLXNlYXJjaCcsXG4gIH07XG5cbiAgZmlsdGVyZWRNZW51czogTWVudVtdID0gW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXJkQ29uZmlnID0ge1xuICAgICAgaWRlbnRpZmllcjogJ3B0LXNpZGUtYmFyLW1lbnUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLm1lbnVDb25maWcuYmFja2dyb3VuZENvbG9yLFxuICAgICAgd2lkdGg6IHRoaXMubWVudUNvbmZpZy53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5tZW51Q29uZmlnLmhlaWdodCxcbiAgICAgIHNjcm9sbGFibGVWZXJ0aWNhbDogdGhpcy5tZW51Q29uZmlnLnNjcm9sbGFibGUsXG4gICAgICBwYXR0ZXJuOiB0aGlzLm1lbnVDb25maWcucGF0dGVybixcbiAgICB9O1xuXG4gICAgdGhpcy5maWx0ZXJlZE1lbnVzID0gdGhpcy5jbG9uZU1lbnVzKHRoaXMubWVudUNvbmZpZy5tZW51cyk7XG5cbiAgICBjb25zdCBjYXJkV2lkdGggPSB0aGlzLm1lbnVDb25maWcud2lkdGhcbiAgICAgID8gcGFyc2VJbnQodGhpcy5tZW51Q29uZmlnLndpZHRoLCAxMClcbiAgICAgIDogMjUwO1xuXG4gICAgdGhpcy5zZWFyY2hGaWVsZC53aWR0aCA9IGAke2NhcmRXaWR0aCAtIDYwfXB4YDtcbiAgICB0aGlzLnNlYXJjaENhcmRDb25maWcud2lkdGggPSB0aGlzLm1lbnVDb25maWcud2lkdGg7XG4gICAgdGhpcy5zZWFyY2hDYXJkQ29uZmlnLnBhdHRlcm4gPSB0aGlzLm1lbnVDb25maWcucGF0dGVybjtcblxuICAgIGlmICh0aGlzLm1lbnVDb25maWcuc2VhcmNoYWJsZSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXBcbiAgICAgICAgLmdldCgnc2VhcmNoJylcbiAgICAgICAgPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChzZWFyY2hUZXJtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLm9uU2VhcmNoKHNlYXJjaFRlcm0gPz8gJycpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBseUhvdmVyRWZmZWN0cygpO1xuICB9XG5cbiAgdG9nZ2xlTWVudShpdGVtOiBNZW51LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpdGVtLmlzRXhwYW5kZWQgPSAhaXRlbS5pc0V4cGFuZGVkO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBnZXRDaGV2cm9uQ2xhc3MoaXRlbTogTWVudSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0uaXNFeHBhbmRlZCA/ICdmYSBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhIGZhLWNoZXZyb24tcmlnaHQnO1xuICB9XG5cbiAgaGFzQ2hpbGRyZW4oaXRlbTogTWVudSB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoO1xuICB9XG5cbiAgZ2V0QmFkZ2VTdHlsZXMoYmFkZ2U6IEJhZGdlKSB7XG4gICAgY29uc3QgZGVmYXVsdENvbG9ycyA9IHRoaXMuZ2V0RGVmYXVsdEJhZGdlQ29sb3JzKFxuICAgICAgYmFkZ2UudHlwZSB8fCBCYWRnZVR5cGUuSW5mbyxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiBiYWRnZS5jb2xvciB8fCBkZWZhdWx0Q29sb3JzLmNvbG9yLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWRnZS5iYWNrZ3JvdW5kQ29sb3IgfHwgZGVmYXVsdENvbG9ycy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBwYWRkaW5nOiAnMnB4IDhweCcsXG4gICAgICBib3JkZXJSYWRpdXM6ICc1cHgnLFxuICAgICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdEJhZGdlQ29sb3JzKHR5cGU6IEJhZGdlVHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBCYWRnZVR5cGUuSW5mbzpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyMxN2EyYjgnIH07XG4gICAgICBjYXNlIEJhZGdlVHlwZS5EYW5nZXI6XG4gICAgICAgIHJldHVybiB7IGNvbG9yOiAnd2hpdGUnLCBiYWNrZ3JvdW5kQ29sb3I6ICcjZGMzNTQ1JyB9O1xuICAgICAgY2FzZSBCYWRnZVR5cGUuV2FybmluZzpcbiAgICAgICAgcmV0dXJuIHsgY29sb3I6ICd3aGl0ZScsIGJhY2tncm91bmRDb2xvcjogJyNmZmMxMDcnIH07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geyBjb2xvcjogJ3doaXRlJywgYmFja2dyb3VuZENvbG9yOiAnIzZjNzU3ZCcgfTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaChzZWFyY2hUZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IHNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTWVudXMgPSB0aGlzLmNsb25lTWVudXModGhpcy5tZW51Q29uZmlnLm1lbnVzKTtcbiAgICAgIHRoaXMuY29sbGFwc2VBbGxNZW51cyh0aGlzLmZpbHRlcmVkTWVudXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRNZW51cyA9IHRoaXMuY2xvbmVNZW51cyh0aGlzLm1lbnVDb25maWcubWVudXMpXG4gICAgICAubWFwKChtZW51KSA9PiB0aGlzLnNlYXJjaEluTWVudShtZW51LCB2YWx1ZSkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIE1lbnVbXTtcbiAgfVxuXG4gIHByaXZhdGUgc2VhcmNoSW5NZW51KG1lbnU6IE1lbnUsIHNlYXJjaFRlcm06IHN0cmluZyk6IE1lbnUgfCBudWxsIHtcbiAgICBjb25zdCBpc01hdGNoID0gKG1lbnUubGFiZWwgfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSk7XG5cbiAgICBjb25zdCBtYXRjaGluZ0NoaWxkcmVuID0gKG1lbnUuY2hpbGRyZW4gfHwgW10pXG4gICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5zZWFyY2hJbk1lbnUoY2hpbGQsIHNlYXJjaFRlcm0pKVxuICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBNZW51W107XG5cbiAgICBpZiAobWF0Y2hpbmdDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBtZW51LmNoaWxkcmVuID0gbWF0Y2hpbmdDaGlsZHJlbjtcbiAgICAgIG1lbnUuaXNFeHBhbmRlZCA9IHRydWU7XG4gICAgICByZXR1cm4gbWVudTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNNYXRjaCA/IG1lbnUgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsYXBzZUFsbE1lbnVzKG1lbnVzOiBNZW51W10pOiB2b2lkIHtcbiAgICBtZW51cy5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICBtZW51LmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgIGlmIChtZW51LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZUFsbE1lbnVzKG1lbnUuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1TdHlsZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHRoaXMubWVudUNvbmZpZy5mb250Q29sb3IgfHwgJyMzMzMnLFxuICAgIH07XG4gIH1cblxuICBnZXRNZW51TGlua1N0eWxlcygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogdGhpcy5tZW51Q29uZmlnLmZvbnRDb2xvciB8fCAnIzMzMycsXG4gICAgICB0ZXh0RGVjb3JhdGlvbjogJ25vbmUnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgICAgIHBhZGRpbmc6ICcxMHB4IDE1cHgnLFxuICAgICAgZm9udFNpemU6ICcxNnB4JyxcbiAgICAgIHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGNvbG9yIDAuMnMnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgfTtcbiAgfVxuXG4gIGdldFN1Yk1lbnVMaW5rU3R5bGVzKGxldmVsID0gMSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOlxuICAgICAgICB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yU3ViTWVudSB8fCB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjNjY2JyxcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gICAgICBib3JkZXJSYWRpdXM6ICc1cHgnLFxuICAgICAgcGFkZGluZzogbGV2ZWwgPT09IDEgPyAnNXB4IDEwcHgnIDogJzRweCAxMHB4JyxcbiAgICAgIHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIGNvbG9yIDAuMnMnLFxuICAgICAgZm9udFNpemU6IGxldmVsID09PSAxID8gJzE0cHgnIDogJzEzcHgnLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SG92ZXJFZmZlY3RzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1lbnVMaW5rcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhLm1lbnUtbGluaycpO1xuICAgIGNvbnN0IHN1Yk1lbnVMaW5rcyA9XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYS5zdWJtZW51LWxpbmsnKTtcblxuICAgIG1lbnVMaW5rcy5mb3JFYWNoKChsaW5rOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4obGluaywgJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICAgICAgdGhpcy5tZW51Q29uZmlnLmhvdmVyQ29sb3IgfHwgJyNmMWYxZjEnLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJGb250Q29sb3IgfHwgJ3doaXRlJyxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihsaW5rLCAnbW91c2VsZWF2ZScsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShsaW5rLCAnYmFja2dyb3VuZC1jb2xvcicpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGxpbmssXG4gICAgICAgICAgJ2NvbG9yJyxcbiAgICAgICAgICB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8ICcjMzMzJyxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc3ViTWVudUxpbmtzLmZvckVhY2goKGxpbms6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbihsaW5rLCAnbW91c2VlbnRlcicsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBsaW5rLFxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgICAgICB0aGlzLm1lbnVDb25maWcuaG92ZXJDb2xvclN1Yk1lbnUgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckNvbG9yIHx8XG4gICAgICAgICAgICAnI2YxZjFmMScsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvclN1Yk1lbnUgfHxcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5ob3ZlckZvbnRDb2xvciB8fFxuICAgICAgICAgICAgJyNmZmYnLFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGxpbmssICdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGxpbmssICdiYWNrZ3JvdW5kLWNvbG9yJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgbGluayxcbiAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgIHRoaXMubWVudUNvbmZpZy5mb250Q29sb3JTdWJNZW51IHx8XG4gICAgICAgICAgICB0aGlzLm1lbnVDb25maWcuZm9udENvbG9yIHx8XG4gICAgICAgICAgICAnIzY2NicsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVNZW51cyhtZW51czogTWVudVtdID0gW10pOiBNZW51W10ge1xuICAgIHJldHVybiBtZW51cy5tYXAoKG1lbnUpID0+ICh7XG4gICAgICAuLi5tZW51LFxuICAgICAgY2hpbGRyZW46IHRoaXMuY2xvbmVNZW51cyhtZW51LmNoaWxkcmVuIHx8IFtdKSxcbiAgICAgIGlzRXhwYW5kZWQ6IG1lbnUuaXNFeHBhbmRlZCA/PyBmYWxzZSxcbiAgICB9KSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwdC1zaWRlLWJhci1tZW51XCI+XG4gIDxwdC1jYXJkXG4gICAgKm5nSWY9XCJtZW51Q29uZmlnLnNlYXJjaGFibGVcIlxuICAgIFtjb25maWddPVwic2VhcmNoQ2FyZENvbmZpZ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2lkZWJhci1oaWRkZW4nOiAhbWVudUNvbmZpZy5pc1Zpc2libGUgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0XCI+XG4gICAgICA8cHQtdGV4dC1pbnB1dCBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtmb3JtRmllbGRdPVwic2VhcmNoRmllbGRcIj5cbiAgICAgIDwvcHQtdGV4dC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgPC9wdC1jYXJkPlxuXG4gIDxwdC1jYXJkXG4gICAgW2NvbmZpZ109XCJjYXJkQ29uZmlnXCJcbiAgICBbbmdDbGFzc109XCJ7ICdzaWRlYmFyLWhpZGRlbic6ICFtZW51Q29uZmlnLmlzVmlzaWJsZSB9XCJcbiAgPlxuICAgIDx1bCBjbGFzcz1cIm1lbnUtbGlzdFwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHJlY3Vyc2l2ZU1lbnU7XG4gICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGZpbHRlcmVkTWVudXMsIGxldmVsOiAwIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L3B0LWNhcmQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNyZWN1cnNpdmVNZW51IGxldC1tZW51cyBsZXQtbGV2ZWw9XCJsZXZlbFwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVzXCI+XG4gICAgPGxpXG4gICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdtZW51LWl0ZW0tZXhwYW5kZWQnOiBpdGVtLmlzRXhwYW5kZWQsXG4gICAgICAgICdzdWJtZW51LWxldmVsLWl0ZW0nOiBsZXZlbCA+IDAsXG4gICAgICB9XCJcbiAgICAgIFthdHRyLmRhdGEtbGV2ZWxdPVwibGV2ZWxcIlxuICAgICAgW25nU3R5bGVdPVwiZ2V0TWVudUl0ZW1TdHlsZXMoKVwiXG4gICAgPlxuICAgICAgPCEtLSBpdGVtIHdpdGhvdXQgY2hpbGRyZW4gLS0+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cIiFoYXNDaGlsZHJlbihpdGVtKVwiXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0udXJsXCJcbiAgICAgICAgW2NsYXNzLm1lbnUtbGlua109XCJsZXZlbCA9PT0gMFwiXG4gICAgICAgIFtjbGFzcy5zdWJtZW51LWxpbmtdPVwibGV2ZWwgPiAwXCJcbiAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgbGV2ZWwgPT09IDAgPyBnZXRNZW51TGlua1N0eWxlcygpIDogZ2V0U3ViTWVudUxpbmtTdHlsZXMobGV2ZWwpXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgICAgPHNwYW4gW2NsYXNzLnN1Ym1lbnUtdGl0bGVdPVwibGV2ZWwgPiAwXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cIml0ZW0uYmFkZ2VcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cImdldEJhZGdlU3R5bGVzKGl0ZW0uYmFkZ2UpXCJcbiAgICAgICAgICBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGl0ZW0uYmFkZ2UuY291bnQgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9hPlxuXG4gICAgICA8IS0tIGl0ZW0gd2l0aCBjaGlsZHJlbiAtLT5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwiaGFzQ2hpbGRyZW4oaXRlbSlcIlxuICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgIFtjbGFzcy5tZW51LWxpbmtdPVwibGV2ZWwgPT09IDBcIlxuICAgICAgICBbY2xhc3Muc3VibWVudS1saW5rXT1cImxldmVsID4gMFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KGl0ZW0sICRldmVudClcIlxuICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICBsZXZlbCA9PT0gMCA/IGdldE1lbnVMaW5rU3R5bGVzKCkgOiBnZXRTdWJNZW51TGlua1N0eWxlcyhsZXZlbClcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCI+PC9pPlxuICAgICAgICA8c3BhbiBbY2xhc3Muc3VibWVudS10aXRsZV09XCJsZXZlbCA+IDBcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiaXRlbS5iYWRnZVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwiZ2V0QmFkZ2VTdHlsZXMoaXRlbS5iYWRnZSlcIlxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaXRlbS5iYWRnZS5jb3VudCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpIFtuZ0NsYXNzXT1cImdldENoZXZyb25DbGFzcyhpdGVtKVwiIGNsYXNzPVwiY2hldnJvblwiPjwvaT5cbiAgICAgIDwvYT5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN1Ym1lbnUtd3JhcHBlclwiXG4gICAgICAgIFtjbGFzcy5leHBhbmRlZF09XCJpdGVtLmlzRXhwYW5kZWRcIlxuICAgICAgICAqbmdJZj1cImhhc0NoaWxkcmVuKGl0ZW0pXCJcbiAgICAgID5cbiAgICAgICAgPHVsXG4gICAgICAgICAgY2xhc3M9XCJzdWJtZW51LWxpc3RcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdzdWJtZW51LWxpc3Qtcm9vdCc6IGxldmVsID09PSAwLFxuICAgICAgICAgICAgJ3N1Ym1lbnUtbGlzdC1uZXN0ZWQnOiBsZXZlbCA+IDAsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICByZWN1cnNpdmVNZW51O1xuICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbS5jaGlsZHJlbiwgbGV2ZWw6IGxldmVsICsgMSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -3827,9 +3827,9 @@ class PTSideBarMenuComponent {
|
|
|
3827
3827
|
scrollableVertical: this.menuConfig.scrollable,
|
|
3828
3828
|
pattern: this.menuConfig.pattern,
|
|
3829
3829
|
};
|
|
3830
|
-
this.filteredMenus = this.menuConfig.menus;
|
|
3830
|
+
this.filteredMenus = this.cloneMenus(this.menuConfig.menus);
|
|
3831
3831
|
const cardWidth = this.menuConfig.width
|
|
3832
|
-
? parseInt(this.menuConfig.width)
|
|
3832
|
+
? parseInt(this.menuConfig.width, 10)
|
|
3833
3833
|
: 250;
|
|
3834
3834
|
this.searchField.width = `${cardWidth - 60}px`;
|
|
3835
3835
|
this.searchCardConfig.width = this.menuConfig.width;
|
|
@@ -3838,10 +3838,13 @@ class PTSideBarMenuComponent {
|
|
|
3838
3838
|
this.formGroup
|
|
3839
3839
|
.get('search')
|
|
3840
3840
|
?.valueChanges.subscribe((searchTerm) => {
|
|
3841
|
-
this.onSearch(searchTerm);
|
|
3841
|
+
this.onSearch(searchTerm ?? '');
|
|
3842
3842
|
});
|
|
3843
3843
|
}
|
|
3844
3844
|
}
|
|
3845
|
+
ngAfterViewInit() {
|
|
3846
|
+
this.applyHoverEffects();
|
|
3847
|
+
}
|
|
3845
3848
|
toggleMenu(item, event) {
|
|
3846
3849
|
item.isExpanded = !item.isExpanded;
|
|
3847
3850
|
event.preventDefault();
|
|
@@ -3849,6 +3852,9 @@ class PTSideBarMenuComponent {
|
|
|
3849
3852
|
getChevronClass(item) {
|
|
3850
3853
|
return item.isExpanded ? 'fa fa-chevron-down' : 'fa fa-chevron-right';
|
|
3851
3854
|
}
|
|
3855
|
+
hasChildren(item) {
|
|
3856
|
+
return !!item?.children?.length;
|
|
3857
|
+
}
|
|
3852
3858
|
getBadgeStyles(badge) {
|
|
3853
3859
|
const defaultColors = this.getDefaultBadgeColors(badge.type || BadgeType.Info);
|
|
3854
3860
|
return {
|
|
@@ -3872,76 +3878,66 @@ class PTSideBarMenuComponent {
|
|
|
3872
3878
|
}
|
|
3873
3879
|
}
|
|
3874
3880
|
onSearch(searchTerm) {
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
this.
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
const lowerCaseSearch = searchTerm.toLowerCase();
|
|
3881
|
-
this.filteredMenus = this.menuConfig.menus
|
|
3882
|
-
.map((menu) => this.searchInMenu({ ...menu }, lowerCaseSearch))
|
|
3883
|
-
.filter(Boolean);
|
|
3881
|
+
const value = searchTerm.trim().toLowerCase();
|
|
3882
|
+
if (!value) {
|
|
3883
|
+
this.filteredMenus = this.cloneMenus(this.menuConfig.menus);
|
|
3884
|
+
this.collapseAllMenus(this.filteredMenus);
|
|
3885
|
+
return;
|
|
3884
3886
|
}
|
|
3887
|
+
this.filteredMenus = this.cloneMenus(this.menuConfig.menus)
|
|
3888
|
+
.map((menu) => this.searchInMenu(menu, value))
|
|
3889
|
+
.filter(Boolean);
|
|
3885
3890
|
}
|
|
3886
3891
|
searchInMenu(menu, searchTerm) {
|
|
3887
|
-
const isMatch = menu.label.toLowerCase().includes(searchTerm);
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
return menu;
|
|
3896
|
-
}
|
|
3892
|
+
const isMatch = (menu.label || '').toLowerCase().includes(searchTerm);
|
|
3893
|
+
const matchingChildren = (menu.children || [])
|
|
3894
|
+
.map((child) => this.searchInMenu(child, searchTerm))
|
|
3895
|
+
.filter(Boolean);
|
|
3896
|
+
if (matchingChildren.length > 0) {
|
|
3897
|
+
menu.children = matchingChildren;
|
|
3898
|
+
menu.isExpanded = true;
|
|
3899
|
+
return menu;
|
|
3897
3900
|
}
|
|
3898
3901
|
return isMatch ? menu : null;
|
|
3899
3902
|
}
|
|
3900
|
-
collapseAllMenus() {
|
|
3901
|
-
|
|
3903
|
+
collapseAllMenus(menus) {
|
|
3904
|
+
menus.forEach((menu) => {
|
|
3902
3905
|
menu.isExpanded = false;
|
|
3906
|
+
if (menu.children?.length) {
|
|
3907
|
+
this.collapseAllMenus(menu.children);
|
|
3908
|
+
}
|
|
3903
3909
|
});
|
|
3904
3910
|
}
|
|
3905
3911
|
getMenuItemStyles() {
|
|
3906
3912
|
return {
|
|
3907
|
-
color: this.menuConfig.fontColor || '#333',
|
|
3913
|
+
color: this.menuConfig.fontColor || '#333',
|
|
3908
3914
|
};
|
|
3909
3915
|
}
|
|
3910
3916
|
getMenuLinkStyles() {
|
|
3911
3917
|
return {
|
|
3912
3918
|
color: this.menuConfig.fontColor || '#333',
|
|
3913
|
-
|
|
3914
|
-
|
|
3919
|
+
textDecoration: 'none',
|
|
3920
|
+
borderRadius: '8px',
|
|
3915
3921
|
padding: '10px 15px',
|
|
3916
|
-
|
|
3922
|
+
fontSize: '16px',
|
|
3917
3923
|
transition: 'background-color 0.2s, color 0.2s',
|
|
3918
3924
|
display: 'flex',
|
|
3919
|
-
|
|
3920
|
-
':hover': {
|
|
3921
|
-
backgroundColor: this.menuConfig.hoverColor || '#f1f1f1',
|
|
3922
|
-
color: '#111',
|
|
3923
|
-
},
|
|
3925
|
+
alignItems: 'center',
|
|
3924
3926
|
};
|
|
3925
3927
|
}
|
|
3926
|
-
getSubMenuLinkStyles() {
|
|
3928
|
+
getSubMenuLinkStyles(level = 1) {
|
|
3927
3929
|
return {
|
|
3928
3930
|
color: this.menuConfig.fontColorSubMenu || this.menuConfig.fontColor || '#666',
|
|
3929
|
-
|
|
3930
|
-
|
|
3931
|
-
padding: '5px 10px',
|
|
3931
|
+
textDecoration: 'none',
|
|
3932
|
+
borderRadius: '5px',
|
|
3933
|
+
padding: level === 1 ? '5px 10px' : '4px 10px',
|
|
3932
3934
|
transition: 'background-color 0.2s, color 0.2s',
|
|
3933
|
-
|
|
3934
|
-
backgroundColor: this.menuConfig.hoverColorSubMenu || '#e0e0e0',
|
|
3935
|
-
},
|
|
3935
|
+
fontSize: level === 1 ? '14px' : '13px',
|
|
3936
3936
|
};
|
|
3937
3937
|
}
|
|
3938
|
-
ngAfterViewInit() {
|
|
3939
|
-
this.applyHoverEffects();
|
|
3940
|
-
}
|
|
3941
3938
|
applyHoverEffects() {
|
|
3942
3939
|
const menuLinks = this.el.nativeElement.querySelectorAll('a.menu-link');
|
|
3943
3940
|
const subMenuLinks = this.el.nativeElement.querySelectorAll('a.submenu-link');
|
|
3944
|
-
// Apply hover effects for main menu links
|
|
3945
3941
|
menuLinks.forEach((link) => {
|
|
3946
3942
|
this.renderer.listen(link, 'mouseenter', () => {
|
|
3947
3943
|
this.renderer.setStyle(link, 'background-color', this.menuConfig.hoverColor || '#f1f1f1');
|
|
@@ -3952,7 +3948,6 @@ class PTSideBarMenuComponent {
|
|
|
3952
3948
|
this.renderer.setStyle(link, 'color', this.menuConfig.fontColor || '#333');
|
|
3953
3949
|
});
|
|
3954
3950
|
});
|
|
3955
|
-
// Apply hover effects for submenu links
|
|
3956
3951
|
subMenuLinks.forEach((link) => {
|
|
3957
3952
|
this.renderer.listen(link, 'mouseenter', () => {
|
|
3958
3953
|
this.renderer.setStyle(link, 'background-color', this.menuConfig.hoverColorSubMenu ||
|
|
@@ -3970,12 +3965,19 @@ class PTSideBarMenuComponent {
|
|
|
3970
3965
|
});
|
|
3971
3966
|
});
|
|
3972
3967
|
}
|
|
3968
|
+
cloneMenus(menus = []) {
|
|
3969
|
+
return menus.map((menu) => ({
|
|
3970
|
+
...menu,
|
|
3971
|
+
children: this.cloneMenus(menu.children || []),
|
|
3972
|
+
isExpanded: menu.isExpanded ?? false,
|
|
3973
|
+
}));
|
|
3974
|
+
}
|
|
3973
3975
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTSideBarMenuComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3974
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTSideBarMenuComponent, selector: "pt-side-bar-menu", inputs: { menuConfig: "menuConfig" }, ngImport: i0, template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <
|
|
3976
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTSideBarMenuComponent, selector: "pt-side-bar-menu", inputs: { menuConfig: "menuConfig" }, ngImport: i0, template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <ng-container\n *ngTemplateOutlet=\"\n recursiveMenu;\n context: { $implicit: filteredMenus, level: 0 }\n \"\n ></ng-container>\n </ul>\n </pt-card>\n</div>\n\n<ng-template #recursiveMenu let-menus let-level=\"level\">\n <ng-container *ngFor=\"let item of menus\">\n <li\n class=\"menu-item\"\n [ngClass]=\"{\n 'menu-item-expanded': item.isExpanded,\n 'submenu-level-item': level > 0,\n }\"\n [attr.data-level]=\"level\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- item without children -->\n <a\n *ngIf=\"!hasChildren(item)\"\n [routerLink]=\"item.url\"\n [class.menu-link]=\"level === 0\"\n [class.submenu-link]=\"level > 0\"\n [ngStyle]=\"\n level === 0 ? getMenuLinkStyles() : getSubMenuLinkStyles(level)\n \"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span [class.submenu-title]=\"level > 0\">{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- item with children -->\n <a\n *ngIf=\"hasChildren(item)\"\n href=\"#\"\n [class.menu-link]=\"level === 0\"\n [class.submenu-link]=\"level > 0\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"\n level === 0 ? getMenuLinkStyles() : getSubMenuLinkStyles(level)\n \"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span [class.submenu-title]=\"level > 0\">{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <div\n class=\"submenu-wrapper\"\n [class.expanded]=\"item.isExpanded\"\n *ngIf=\"hasChildren(item)\"\n >\n <ul\n class=\"submenu-list\"\n [ngClass]=\"{\n 'submenu-list-root': level === 0,\n 'submenu-list-nested': level > 0,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n recursiveMenu;\n context: { $implicit: item.children, level: level + 1 }\n \"\n ></ng-container>\n </ul>\n </div>\n </li>\n </ng-container>\n</ng-template>\n", styles: [".pt-side-bar-menu .badge{background-color:#38bdf8;border-radius:5px;color:#fff;font-size:12px;margin-left:auto;padding:2px 8px}.pt-side-bar-menu .chevron{color:#8c8c8c;cursor:pointer;margin-left:auto}.pt-side-bar-menu .menu-item{position:relative}.pt-side-bar-menu .menu-link{align-items:center;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;margin-bottom:15px;padding:10px 15px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .menu-link:hover{background-color:#f1f1f1;color:#111}.pt-side-bar-menu .menu-link i{margin-right:10px}.pt-side-bar-menu .menu-list{list-style-type:none;padding:0;margin:0}.pt-side-bar-menu pt-card{transition:transform .3s ease-in-out,opacity .3s ease-in-out;display:block}.pt-side-bar-menu .sidebar-hidden{transform:translate(-100%);opacity:0}.pt-side-bar-menu .sidebar-menu{margin:0;padding:0;transition:transform .3s ease-in-out;width:250px}.pt-side-bar-menu .submenu-wrapper{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}.pt-side-bar-menu .submenu-wrapper.expanded{grid-template-rows:1fr}.pt-side-bar-menu .submenu-list{overflow:hidden;list-style-type:none;margin-top:5px;margin-bottom:0;position:relative}.pt-side-bar-menu .submenu-list-root{border-left:1px solid #e5e7eb;margin-left:23px;padding-left:25px;padding-top:5px;padding-bottom:5px}.pt-side-bar-menu .submenu-list-root:after{background-color:#e5e7eb;bottom:0;content:\"\";left:-1px;position:absolute;top:0;width:1px}.pt-side-bar-menu .submenu-list-nested{border-left:1px solid #2f3b46;margin-left:18px;padding-left:20px;padding-top:4px;padding-bottom:4px}.pt-side-bar-menu .submenu-item,.pt-side-bar-menu .submenu-level-item{padding:5px 0;position:relative}.pt-side-bar-menu .submenu-level-item:before{background-color:#e5e7eb;content:\"\";height:1px;left:-25px;position:absolute;top:22px;transform:translateY(-50%);width:25px}.pt-side-bar-menu .submenu-link{align-items:center;border-radius:5px;color:#666;display:flex;font-size:14px;padding:5px 10px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .submenu-link:hover{background-color:#f1f1f1;color:#000}.pt-side-bar-menu .submenu-title{margin-left:5px}\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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: PTTextInputComponent, selector: "pt-text-input", inputs: ["formGroup", "formField"] }] }); }
|
|
3975
3977
|
}
|
|
3976
3978
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTSideBarMenuComponent, decorators: [{
|
|
3977
3979
|
type: Component,
|
|
3978
|
-
args: [{ selector: 'pt-side-bar-menu', template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <
|
|
3980
|
+
args: [{ selector: 'pt-side-bar-menu', template: "<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <ng-container\n *ngTemplateOutlet=\"\n recursiveMenu;\n context: { $implicit: filteredMenus, level: 0 }\n \"\n ></ng-container>\n </ul>\n </pt-card>\n</div>\n\n<ng-template #recursiveMenu let-menus let-level=\"level\">\n <ng-container *ngFor=\"let item of menus\">\n <li\n class=\"menu-item\"\n [ngClass]=\"{\n 'menu-item-expanded': item.isExpanded,\n 'submenu-level-item': level > 0,\n }\"\n [attr.data-level]=\"level\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- item without children -->\n <a\n *ngIf=\"!hasChildren(item)\"\n [routerLink]=\"item.url\"\n [class.menu-link]=\"level === 0\"\n [class.submenu-link]=\"level > 0\"\n [ngStyle]=\"\n level === 0 ? getMenuLinkStyles() : getSubMenuLinkStyles(level)\n \"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span [class.submenu-title]=\"level > 0\">{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- item with children -->\n <a\n *ngIf=\"hasChildren(item)\"\n href=\"#\"\n [class.menu-link]=\"level === 0\"\n [class.submenu-link]=\"level > 0\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"\n level === 0 ? getMenuLinkStyles() : getSubMenuLinkStyles(level)\n \"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span [class.submenu-title]=\"level > 0\">{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <div\n class=\"submenu-wrapper\"\n [class.expanded]=\"item.isExpanded\"\n *ngIf=\"hasChildren(item)\"\n >\n <ul\n class=\"submenu-list\"\n [ngClass]=\"{\n 'submenu-list-root': level === 0,\n 'submenu-list-nested': level > 0,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n recursiveMenu;\n context: { $implicit: item.children, level: level + 1 }\n \"\n ></ng-container>\n </ul>\n </div>\n </li>\n </ng-container>\n</ng-template>\n", styles: [".pt-side-bar-menu .badge{background-color:#38bdf8;border-radius:5px;color:#fff;font-size:12px;margin-left:auto;padding:2px 8px}.pt-side-bar-menu .chevron{color:#8c8c8c;cursor:pointer;margin-left:auto}.pt-side-bar-menu .menu-item{position:relative}.pt-side-bar-menu .menu-link{align-items:center;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;margin-bottom:15px;padding:10px 15px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .menu-link:hover{background-color:#f1f1f1;color:#111}.pt-side-bar-menu .menu-link i{margin-right:10px}.pt-side-bar-menu .menu-list{list-style-type:none;padding:0;margin:0}.pt-side-bar-menu pt-card{transition:transform .3s ease-in-out,opacity .3s ease-in-out;display:block}.pt-side-bar-menu .sidebar-hidden{transform:translate(-100%);opacity:0}.pt-side-bar-menu .sidebar-menu{margin:0;padding:0;transition:transform .3s ease-in-out;width:250px}.pt-side-bar-menu .submenu-wrapper{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}.pt-side-bar-menu .submenu-wrapper.expanded{grid-template-rows:1fr}.pt-side-bar-menu .submenu-list{overflow:hidden;list-style-type:none;margin-top:5px;margin-bottom:0;position:relative}.pt-side-bar-menu .submenu-list-root{border-left:1px solid #e5e7eb;margin-left:23px;padding-left:25px;padding-top:5px;padding-bottom:5px}.pt-side-bar-menu .submenu-list-root:after{background-color:#e5e7eb;bottom:0;content:\"\";left:-1px;position:absolute;top:0;width:1px}.pt-side-bar-menu .submenu-list-nested{border-left:1px solid #2f3b46;margin-left:18px;padding-left:20px;padding-top:4px;padding-bottom:4px}.pt-side-bar-menu .submenu-item,.pt-side-bar-menu .submenu-level-item{padding:5px 0;position:relative}.pt-side-bar-menu .submenu-level-item:before{background-color:#e5e7eb;content:\"\";height:1px;left:-25px;position:absolute;top:22px;transform:translateY(-50%);width:25px}.pt-side-bar-menu .submenu-link{align-items:center;border-radius:5px;color:#666;display:flex;font-size:14px;padding:5px 10px;text-decoration:none;transition:background-color .2s,color .2s}.pt-side-bar-menu .submenu-link:hover{background-color:#f1f1f1;color:#000}.pt-side-bar-menu .submenu-title{margin-left:5px}\n"] }]
|
|
3979
3981
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { menuConfig: [{
|
|
3980
3982
|
type: Input
|
|
3981
3983
|
}] } });
|