ets-fe-ng-sdk 17.0.376 → 17.0.378
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/Shared/components/vertical-nav/vertical-nav.component.mjs +5 -5
- package/fesm2022/ets-fe-ng-sdk.mjs +3 -3
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/utility.service.d.ts +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +2 -2
- package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/page-template/page-template.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NestedTreeControl } from '@angular/cdk/tree';
|
|
2
|
-
import { Component, inject, input, computed, viewChild, signal,
|
|
2
|
+
import { Component, inject, input, computed, viewChild, signal, } from '@angular/core';
|
|
3
3
|
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
4
4
|
import { MatTreeNestedDataSource, MatTreeModule } from '@angular/material/tree';
|
|
5
5
|
import { Router, RouterLink } from '@angular/router';
|
|
@@ -64,11 +64,11 @@ export class VerticalNavComponent {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: VerticalNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont>\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar\n color=\"primary\"\n class=\"vertical-nav-toolbar bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img [src]=\"toolbarLogo()\" [ngStyle]=\"toolbarLogoStyle()\" alt=\"toolbar logo\" class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container [id]=\"id()\" class=\"vertical-nav-container\">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\"fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight || 0\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen:50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen:50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
|
|
68
68
|
}
|
|
69
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: VerticalNavComponent, decorators: [{
|
|
70
70
|
type: Component,
|
|
71
|
-
args: [{ selector: 'vertical-nav',
|
|
71
|
+
args: [{ selector: 'vertical-nav', standalone: true, imports: [
|
|
72
72
|
MatToolbarModule,
|
|
73
73
|
MatButtonModule,
|
|
74
74
|
MatIconModule,
|
|
@@ -79,6 +79,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
79
79
|
ImageLoaderDirective,
|
|
80
80
|
CommonModule,
|
|
81
81
|
TranslatePipe,
|
|
82
|
-
], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont>\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar
|
|
82
|
+
], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen:50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"] }]
|
|
83
83
|
}], ctorParameters: () => [] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBS1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFFTix1QkFBdUIsR0FDeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBYyxnQkFBZ0IsRUFB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Q0FBQztTQUNKO0lBQ0gsQ0FBQzs4R0FsRFUsb0JBQW9CO2tHQUFwQixvQkFBb0IsdS9EQ2xEakMsNC9JQWdIQSw4b0REMUVJLGdCQUFnQixnSkFDaEIsZUFBZSwySUFDZixhQUFhLG1MQUNiLGdCQUFnQiwwWUFDaEIsYUFBYSxvdkJBQ2IsVUFBVSxtT0FDVixhQUFhLDhCQUViLFlBQVkseWFBQ1osYUFBYTs7MkZBR0osb0JBQW9CO2tCQW5CaEMsU0FBUzsrQkFDRSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixVQUFVO3dCQUNWLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGFBQWE7cUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IE5lc3RlZFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgVGVtcGxhdGVSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIGNvbXB1dGVkLFxuICB2aWV3Q2hpbGQsXG4gIHNpZ25hbCxcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RHJhd2VyLCBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXRUcmVlTmVzdGVkRGF0YVNvdXJjZSwgTWF0VHJlZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCBQUyBmcm9tICdwZXJmZWN0LXNjcm9sbGJhcic7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgSW1hZ2VMb2FkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvZGlyZWN0aXZlcy9pbmRleC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdFRvb2xiYXIsIE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVydGljYWwtbmF2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLW5hdi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBNYXRUcmVlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBJbWFnZUxvYWRlckRpcmVjdGl2ZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmVydGljYWxOYXZDb21wb25lbnQge1xuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwdWJsaWMgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgc2hvdWxkU2hvd0NoaWxkSW5wdXQgPSBpbnB1dDwoXzogbnVtYmVyLCBub2RlOiBJTWVudUl0ZW0pID0+IGJvb2xlYW4+KCk7XG4gIHNob3VsZFNob3dDaGlsZCA9IGNvbXB1dGVkPChfOiBudW1iZXIsIG5vZGU6IElNZW51SXRlbSkgPT4gYm9vbGVhbj4oXG4gICAgKCkgPT4gdGhpcy5zaG91bGRTaG93Q2hpbGRJbnB1dCgpIHx8ICgoKSA9PiB0cnVlKSxcbiAgKTtcbiAgcmVhZG9ubHkgdG9vbGJhclRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB0b29sYmFyTG9nbyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhckxvZ29TdHlsZSA9IGlucHV0PElPYmplY3RMaXRlcmFsPigpO1xuICByZWFkb25seSBmaXhlZFRvcEdhcCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgc2lkZW5hdlRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgLyoqVGhpcyBvbmx5IHdvcmtzIHdoZW4gdGhlIHRvb2xiYXJUZW1wbGF0ZSBpcyBub3Qgc2V0ICovXG4gIHJlYWRvbmx5IHRvb2xiYXJFbmRUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IGJvZHlUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IHVzZVRvb2xiYXIgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd01lbnUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBtZW51SXRlbXMgPSBpbnB1dDxJTWVudUl0ZW1bXT4oKTtcblxuICByZWFkb25seSBkYXRhU291cmNlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRzID0gbmV3IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlPElNZW51SXRlbT4oKSxcbiAgICAgIG1lbnUgPSB0aGlzLm1lbnVJdGVtcygpO1xuXG4gICAgaWYgKCFtZW51Py5sZW5ndGgpIHJldHVybiBkcztcbiAgICBtZW51LmZvckVhY2goKHgpID0+ICh4LmxldmVsID0gMCkpO1xuICAgIGRzLmRhdGEgPSBtZW51O1xuICAgIHJldHVybiBkcztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaWQgPSBzaWduYWwoJ21hdFNpZGVOYXYnICsgdGhpcy51Uy5nZW5SYW5kb21JRCk7XG4gIHJlYWRvbmx5IHRyZWVDb250cm9sID0gc2lnbmFsKG5ldyBOZXN0ZWRUcmVlQ29udHJvbDxJTWVudUl0ZW0+KChub2RlKSA9PiBub2RlLmNoaWxkcmVuKSk7XG5cbiAgcmVhZG9ubHkgZHJhd2VyID0gdmlld0NoaWxkPE1hdERyYXdlciB8IHVuZGVmaW5lZD4oJ3NuYXYnKTtcbiAgcmVhZG9ubHkgdG9vbGJhckNvbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCd0b29sYmFyQ29udCcpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oYCMke3RoaXMuaWQoKX0gLm1hdC1kcmF3ZXItaW5uZXItY29udGFpbmVyYCk7XG4gICAgaWYgKGRvYykge1xuICAgICAgZG9jLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgIGNvbnN0IHBzID0gbmV3IFBTKGRvYywge1xuICAgICAgICB3aGVlbFNwZWVkOiAwLjUsXG4gICAgICAgIHN3aXBlRWFzaW5nOiBmYWxzZSxcbiAgICAgICAgd2hlZWxQcm9wYWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgbWluU2Nyb2xsYmFyTGVuZ3RoOiA0MCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IGhhc0NoaWxkID0gc2lnbmFsKFxuICAgIChfOiBudW1iZXIsIG5vZGU6IElNZW51SXRlbSkgPT4gbm9kZS5oYXNTdWIgJiYgdGhpcy5zaG91bGRTaG93Q2hpbGQoKShfLCBub2RlKSxcbiAgKTtcbn1cbmludGVyZmFjZSBJTWVudUl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICBsaW5rOiBzdHJpbmc7XG4gIGhhc1N1Yj86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG4gIGxldmVsPzogbnVtYmVyO1xuICBpZD86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBJTWVudUl0ZW1bXTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXZcIiBbY2xhc3MudmVydGljYWwtbmF2LWlzLW1vYmlsZV09XCJ1Uy5pc01vYmlsZVNpZ25hbCgpXCI+XG4gIEBpZiAodXNlVG9vbGJhcigpKSB7XG4gICAgPGRpdiAjdG9vbGJhckNvbnQ+XG4gICAgICBAaWYgKHRvb2xiYXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGUoKVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG1hdC10b29sYmFyXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLW5hdi10b29sYmFyIGJnLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzbmF2LnRvZ2dsZSgpXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmICh0b29sYmFyTG9nbygpKSB7XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ0b29sYmFyTG9nbygpXCIgW25nU3R5bGVdPVwidG9vbGJhckxvZ29TdHlsZSgpXCIgYWx0PVwidG9vbGJhciBsb2dvXCIgY2xhc3M9XCJ0b29sYmFyTG9nb1wiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJUaXRsZSgpKSB7XG4gICAgICAgICAgICAgIDxoMSBjbGFzcz1cInZlcnRpY2FsLW5hdi1hcHAtbmFtZVwiPnt7IHRvb2xiYXJUaXRsZSgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX08L2gxPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJFbmRUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyRW5kVGVtcGxhdGUoKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LXRvb2xiYXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cblxuICA8bWF0LXNpZGVuYXYtY29udGFpbmVyIFtpZF09XCJpZCgpXCIgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtY29udGFpbmVyXCI+XG4gICAgPG1hdC1zaWRlbmF2XG4gICAgICBjbGFzcz1cInNpZGUtd1wiXG4gICAgICBbbmdDbGFzc109XCJ7IG1vYmlsZTogdGhpcy51Uy5pc01vYmlsZVNpZ25hbCgpIH1cIlxuICAgICAgI3NuYXZcbiAgICAgIFttb2RlXT1cInVTLmlzTW9iaWxlU2lnbmFsKCkgPyAnb3ZlcicgOiAnc2lkZSdcIlxuICAgICAgW29wZW5lZF09XCIhdVMuaXNNb2JpbGVTaWduYWwoKSAmJiBzaG93TWVudSgpXCJcbiAgICAgIFtmaXhlZEluVmlld3BvcnRdPVwidVMuaXNNb2JpbGVTaWduYWwoKVwiXG4gICAgICBbZml4ZWRUb3BHYXBdPVwiZml4ZWRUb3BHYXAoKSB8fCB0b29sYmFyQ29udFJlZigpPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgfHwgMFwiXG4gICAgICBbaGlkZGVuXT1cIiFzaG93TWVudSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtbmF2LXNpZGUtcGFkZGluZ1wiPlxuICAgICAgICBAaWYgKHNpZGVuYXZUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVuYXZUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG1hdC10cmVlXG4gICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlKClcIlxuICAgICAgICAgICAgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtdHJlZVwiPlxuICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICAgICAgICAgIDxtYXQtbmVzdGVkLXRyZWUtbm9kZVxuICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGQoKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kYWJsZS1ub2RlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtdHJlZS1ub2RlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RvZ2dsZSAnICsgbm9kZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1idG4gbGV2ZWx7eyBub2RlLmxldmVsIH19XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IG5vZGUuaWNvbiB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVDb250cm9sKCkuaXNFeHBhbmRlZChub2RlKSA/ICdmYS1jaGV2cm9uLWRvd24nIDogJ2ZhLWNoZXZyb24tcmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fSBcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gVGhlcmUgaXMgaW5saW5lIHBhZGRpbmcgYXBwbGllZCB0byB0aGlzIGRpdiB1c2luZyBzdHlsZXMuXG4gICAgICAgICAgICBUaGlzIHBhZGRpbmcgdmFsdWUgZGVwZW5kcyBvbiB0aGUgbWF0LWljb24tYnV0dG9uIHdpZHRoLiAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnZlcnRpY2FsLW5hdi10cmVlLWludmlzaWJsZV09XCIhdHJlZUNvbnRyb2woKS5pc0V4cGFuZGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFRyZWVOb2RlT3V0bGV0IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbmVzdGVkLXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDwhLS0gVGhlcmUgaXMgaW5saW5lIHBhZGRpbmcgYXBwbGllZCB0byB0aGlzIG5vZGUgdXNpbmcgc3R5bGVzLlxuICAgIFRoaXMgcGFkZGluZyB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBtYXQtaWNvbi1idXR0b24gd2lkdGguIC0tPlxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IHNob3VsZFNob3dDaGlsZCgpXCJcbiAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtbm9kZSBsZXZlbHt7IG5vZGUubGV2ZWwgfX1cIj5cbiAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwibm9kZS5saW5rXCIgY2xhc3M9XCJkLWJsb2NrIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBub2RlLmljb24gfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCJcbiAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtbm9kZSByZXN0cmljdGVkIGxldmVse3sgbm9kZS5sZXZlbCB9fVwiIC8+XG4gICAgICAgICAgPC9tYXQtdHJlZT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdj5cblxuICAgIDxtYXQtc2lkZW5hdi1jb250ZW50IGNsYXNzPVwidmVydGljYWwtbmF2LWJvZHlcIj5cbiAgICAgIEBpZiAoYm9keVRlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZSgpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgfVxuICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBS1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFjLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJC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SCxDQUFDOzhHQWxEVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix1L0RDbERqQyxzbUpBc0hBLDhvRERoRkksZ0JBQWdCLGdKQUNoQixlQUFlLDJJQUNmLGFBQWEsbUxBQ2IsZ0JBQWdCLDBZQUNoQixhQUFhLG92QkFDYixVQUFVLG1PQUNWLGFBQWEsOEJBRWIsWUFBWSx5YUFDWixhQUFhOzsyRkFHSixvQkFBb0I7a0JBbkJoQyxTQUFTOytCQUNFLGNBQWMsY0FJWixJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osYUFBYTtxQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgY29tcHV0ZWQsXG4gIHZpZXdDaGlsZCxcbiAgc2lnbmFsLFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREcmF3ZXIsIE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IFBTIGZyb20gJ3BlcmZlY3Qtc2Nyb2xsYmFyJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBJbWFnZUxvYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9kaXJlY3RpdmVzL2luZGV4LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0VG9vbGJhciwgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgQXN5bmNQaXBlLCBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSU9iamVjdExpdGVyYWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5kZXgubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJ0aWNhbC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVydGljYWwtbmF2LmNvbXBvbmVudC5zY3NzJ10sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0VG9vbGJhck1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxuICAgIE1hdFRyZWVNb2R1bGUsXG4gICAgUm91dGVyTGluayxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIEltYWdlTG9hZGVyRGlyZWN0aXZlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBWZXJ0aWNhbE5hdkNvbXBvbmVudCB7XG4gIHB1YmxpYyB1UyA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIHB1YmxpYyByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBzaG91bGRTaG93Q2hpbGRJbnB1dCA9IGlucHV0PChfOiBudW1iZXIsIG5vZGU6IElNZW51SXRlbSkgPT4gYm9vbGVhbj4oKTtcbiAgc2hvdWxkU2hvd0NoaWxkID0gY29tcHV0ZWQ8KF86IG51bWJlciwgbm9kZTogSU1lbnVJdGVtKSA9PiBib29sZWFuPihcbiAgICAoKSA9PiB0aGlzLnNob3VsZFNob3dDaGlsZElucHV0KCkgfHwgKCgpID0+IHRydWUpLFxuICApO1xuICByZWFkb25seSB0b29sYmFyVGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHRvb2xiYXJMb2dvID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB0b29sYmFyTG9nb1N0eWxlID0gaW5wdXQ8SU9iamVjdExpdGVyYWw+KCk7XG4gIHJlYWRvbmx5IGZpeGVkVG9wR2FwID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBzaWRlbmF2VGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSB0b29sYmFyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICAvKipUaGlzIG9ubHkgd29ya3Mgd2hlbiB0aGUgdG9vbGJhclRlbXBsYXRlIGlzIG5vdCBzZXQgKi9cbiAgcmVhZG9ubHkgdG9vbGJhckVuZFRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgYm9keVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgdXNlVG9vbGJhciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzaG93TWVudSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG1lbnVJdGVtcyA9IGlucHV0PElNZW51SXRlbVtdPigpO1xuXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZHMgPSBuZXcgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2U8SU1lbnVJdGVtPigpLFxuICAgICAgbWVudSA9IHRoaXMubWVudUl0ZW1zKCk7XG5cbiAgICBpZiAoIW1lbnU/Lmxlbmd0aCkgcmV0dXJuIGRzO1xuICAgIG1lbnUuZm9yRWFjaCgoeCkgPT4gKHgubGV2ZWwgPSAwKSk7XG4gICAgZHMuZGF0YSA9IG1lbnU7XG4gICAgcmV0dXJuIGRzO1xuICB9KTtcblxuICByZWFkb25seSBpZCA9IHNpZ25hbCgnbWF0U2lkZU5hdicgKyB0aGlzLnVTLmdlblJhbmRvbUlEKTtcbiAgcmVhZG9ubHkgdHJlZUNvbnRyb2wgPSBzaWduYWwobmV3IE5lc3RlZFRyZWVDb250cm9sPElNZW51SXRlbT4oKG5vZGUpID0+IG5vZGUuY2hpbGRyZW4pKTtcblxuICByZWFkb25seSBkcmF3ZXIgPSB2aWV3Q2hpbGQ8TWF0RHJhd2VyIHwgdW5kZWZpbmVkPignc25hdicpO1xuICByZWFkb25seSB0b29sYmFyQ29udFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ3Rvb2xiYXJDb250Jyk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihgIyR7dGhpcy5pZCgpfSAubWF0LWRyYXdlci1pbm5lci1jb250YWluZXJgKTtcbiAgICBpZiAoZG9jKSB7XG4gICAgICBkb2Muc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgY29uc3QgcHMgPSBuZXcgUFMoZG9jLCB7XG4gICAgICAgIHdoZWVsU3BlZWQ6IDAuNSxcbiAgICAgICAgc3dpcGVFYXNpbmc6IGZhbHNlLFxuICAgICAgICB3aGVlbFByb3BhZ2F0aW9uOiB0cnVlLFxuICAgICAgICBtaW5TY3JvbGxiYXJMZW5ndGg6IDQwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgaGFzQ2hpbGQgPSBzaWduYWwoXG4gICAgKF86IG51bWJlciwgbm9kZTogSU1lbnVJdGVtKSA9PiBub2RlLmhhc1N1YiAmJiB0aGlzLnNob3VsZFNob3dDaGlsZCgpKF8sIG5vZGUpLFxuICApO1xufVxuaW50ZXJmYWNlIElNZW51SXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxpbms6IHN0cmluZztcbiAgaGFzU3ViPzogYm9vbGVhbjtcbiAgaWNvbj86IHN0cmluZztcbiAgbGV2ZWw/OiBudW1iZXI7XG4gIGlkPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IElNZW51SXRlbVtdO1xufVxuIiwiPGRpdiBjbGFzcz1cInZlcnRpY2FsLW5hdlwiIFtjbGFzcy52ZXJ0aWNhbC1uYXYtaXMtbW9iaWxlXT1cInVTLmlzTW9iaWxlU2lnbmFsKClcIj5cbiAgQGlmICh1c2VUb29sYmFyKCkpIHtcbiAgICA8ZGl2ICN0b29sYmFyQ29udCBjbGFzcz1cInZlcnRpY2FsLW5hdi10b29sYmFyXCI+XG4gICAgICBAaWYgKHRvb2xiYXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGVtcGxhdGUoKVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG1hdC10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiYmctcHJpbWFyeSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNuYXYudG9nZ2xlKClcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPm1lbnU8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJMb2dvKCkpIHtcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwidG9vbGJhckxvZ28oKVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwidG9vbGJhckxvZ29TdHlsZSgpXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJ0b29sYmFyIGxvZ29cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9vbGJhckxvZ29cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh0b29sYmFyVGl0bGUoKSkge1xuICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtYXBwLW5hbWVcIj57eyB0b29sYmFyVGl0bGUoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC9oMT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgQGlmICh0b29sYmFyRW5kVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhckVuZFRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC10b29sYmFyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgPG1hdC1zaWRlbmF2LWNvbnRhaW5lclxuICAgIFtpZF09XCJpZCgpXCJcbiAgICBjbGFzcz1cInZlcnRpY2FsLW5hdi1jb250YWluZXJcIlxuICAgIFtzdHlsZS5tYXJnaW5Ub3AucHhdPVwiXG4gICAgICB1Uy5pc01vYmlsZVNpZ25hbCgpID8gZml4ZWRUb3BHYXAoKSB8fCB0b29sYmFyQ29udFJlZigpPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgOiAwXG4gICAgXCI+XG4gICAgPG1hdC1zaWRlbmF2XG4gICAgICBjbGFzcz1cInNpZGUtd1wiXG4gICAgICBbbmdDbGFzc109XCJ7IG1vYmlsZTogdGhpcy51Uy5pc01vYmlsZVNpZ25hbCgpIH1cIlxuICAgICAgI3NuYXZcbiAgICAgIFttb2RlXT1cInVTLmlzTW9iaWxlU2lnbmFsKCkgPyAnb3ZlcicgOiAnc2lkZSdcIlxuICAgICAgW29wZW5lZF09XCIhdVMuaXNNb2JpbGVTaWduYWwoKSAmJiBzaG93TWVudSgpXCJcbiAgICAgIFtmaXhlZEluVmlld3BvcnRdPVwidVMuaXNNb2JpbGVTaWduYWwoKVwiXG4gICAgICBbaGlkZGVuXT1cIiFzaG93TWVudSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtbmF2LXNpZGUtcGFkZGluZ1wiPlxuICAgICAgICBAaWYgKHNpZGVuYXZUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVuYXZUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG1hdC10cmVlXG4gICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlKClcIlxuICAgICAgICAgICAgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtdHJlZVwiPlxuICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICAgICAgICAgIDxtYXQtbmVzdGVkLXRyZWUtbm9kZVxuICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGQoKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kYWJsZS1ub2RlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtdHJlZS1ub2RlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RvZ2dsZSAnICsgbm9kZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1idG4gbGV2ZWx7eyBub2RlLmxldmVsIH19XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IG5vZGUuaWNvbiB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVDb250cm9sKCkuaXNFeHBhbmRlZChub2RlKSA/ICdmYS1jaGV2cm9uLWRvd24nIDogJ2ZhLWNoZXZyb24tcmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fSBcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gVGhlcmUgaXMgaW5saW5lIHBhZGRpbmcgYXBwbGllZCB0byB0aGlzIGRpdiB1c2luZyBzdHlsZXMuXG4gICAgICAgICAgICBUaGlzIHBhZGRpbmcgdmFsdWUgZGVwZW5kcyBvbiB0aGUgbWF0LWljb24tYnV0dG9uIHdpZHRoLiAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnZlcnRpY2FsLW5hdi10cmVlLWludmlzaWJsZV09XCIhdHJlZUNvbnRyb2woKS5pc0V4cGFuZGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFRyZWVOb2RlT3V0bGV0IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbmVzdGVkLXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDwhLS0gVGhlcmUgaXMgaW5saW5lIHBhZGRpbmcgYXBwbGllZCB0byB0aGlzIG5vZGUgdXNpbmcgc3R5bGVzLlxuICAgIFRoaXMgcGFkZGluZyB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBtYXQtaWNvbi1idXR0b24gd2lkdGguIC0tPlxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IHNob3VsZFNob3dDaGlsZCgpXCJcbiAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtbm9kZSBsZXZlbHt7IG5vZGUubGV2ZWwgfX1cIj5cbiAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwibm9kZS5saW5rXCIgY2xhc3M9XCJkLWJsb2NrIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBub2RlLmljb24gfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCJcbiAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtbm9kZSByZXN0cmljdGVkIGxldmVse3sgbm9kZS5sZXZlbCB9fVwiIC8+XG4gICAgICAgICAgPC9tYXQtdHJlZT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdj5cblxuICAgIDxtYXQtc2lkZW5hdi1jb250ZW50IGNsYXNzPVwidmVydGljYWwtbmF2LWJvZHlcIj5cbiAgICAgIEBpZiAoYm9keVRlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZSgpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgfVxuICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -15653,11 +15653,11 @@ class VerticalNavComponent {
|
|
|
15653
15653
|
}
|
|
15654
15654
|
}
|
|
15655
15655
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: VerticalNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15656
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont>\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar\n color=\"primary\"\n class=\"vertical-nav-toolbar bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img [src]=\"toolbarLogo()\" [ngStyle]=\"toolbarLogoStyle()\" alt=\"toolbar logo\" class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container [id]=\"id()\" class=\"vertical-nav-container\">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\"fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight || 0\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen:50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5$1.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5$1.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
15656
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen:50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5$1.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5$1.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
|
|
15657
15657
|
}
|
|
15658
15658
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: VerticalNavComponent, decorators: [{
|
|
15659
15659
|
type: Component,
|
|
15660
|
-
args: [{ selector: 'vertical-nav',
|
|
15660
|
+
args: [{ selector: 'vertical-nav', standalone: true, imports: [
|
|
15661
15661
|
MatToolbarModule,
|
|
15662
15662
|
MatButtonModule,
|
|
15663
15663
|
MatIconModule,
|
|
@@ -15668,7 +15668,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
15668
15668
|
ImageLoaderDirective,
|
|
15669
15669
|
CommonModule,
|
|
15670
15670
|
TranslatePipe,
|
|
15671
|
-
], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont>\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar
|
|
15671
|
+
], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen:50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"] }]
|
|
15672
15672
|
}], ctorParameters: () => [] });
|
|
15673
15673
|
|
|
15674
15674
|
class TextAreaModalComponent {
|