@rxap/layout 15.0.0 → 16.0.0-dev.1
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/{esm2020 → esm2022}/lib/footer/footer.component.mjs +10 -9
- package/esm2022/lib/footer/footer.component.module.mjs +30 -0
- package/esm2022/lib/footer.directive.mjs +54 -0
- package/{esm2020 → esm2022}/lib/header/apps-button/apps-button.component.mjs +15 -14
- package/esm2022/lib/header/apps-button/apps-button.component.module.mjs +46 -0
- package/esm2022/lib/header/header.component.mjs +131 -0
- package/esm2022/lib/header/header.component.module.mjs +70 -0
- package/esm2022/lib/header/language-selector/language-selector.component.mjs +113 -0
- package/{esm2020 → esm2022}/lib/header/language-selector/language-selector.component.module.mjs +8 -7
- package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +34 -0
- package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.module.mjs +26 -0
- package/esm2022/lib/header/reset-button/reset-button.component.mjs +28 -0
- package/esm2022/lib/header/reset-button/reset-button.component.module.mjs +26 -0
- package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +45 -0
- package/{esm2020 → esm2022}/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.module.mjs +8 -7
- package/esm2022/lib/header/sign-out/sign-out.component.mjs +32 -0
- package/esm2022/lib/header/sign-out/sign-out.component.module.mjs +30 -0
- package/{esm2020 → esm2022}/lib/header/user-profile-icon/user-profile-icon.component.mjs +21 -20
- package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.module.mjs +38 -0
- package/esm2022/lib/layout/layout.component.mjs +79 -0
- package/esm2022/lib/layout/layout.component.module.mjs +70 -0
- package/esm2022/lib/layout/layout.component.service.mjs +44 -0
- package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +287 -0
- package/esm2022/lib/navigation/navigation.component.mjs +131 -0
- package/{esm2020 → esm2022}/lib/navigation/navigation.component.module.mjs +16 -15
- package/esm2022/lib/navigation/navigation.service.mjs +144 -0
- package/esm2022/lib/navigation/replace-router-paths.pipe.mjs +36 -0
- package/esm2022/lib/navigation/replace-router-paths.service.mjs +16 -0
- package/esm2022/lib/sidenav/sidenav-footer.directive.mjs +20 -0
- package/esm2022/lib/sidenav/sidenav-header.directive.mjs +20 -0
- package/esm2022/lib/sidenav/sidenav.component.mjs +121 -0
- package/esm2022/lib/sidenav/sidenav.component.module.mjs +44 -0
- package/esm2022/lib/sidenav/sidenav.component.service.mjs +23 -0
- package/esm2022/lib/sidenav/version/version.component.mjs +63 -0
- package/{esm2020 → esm2022}/lib/sidenav/version/version.component.module.mjs +7 -6
- package/esm2022/lib/sidenav-content/sidenav-content.component.mjs +46 -0
- package/{esm2020 → esm2022}/lib/sidenav-content/sidenav-content.component.module.mjs +7 -6
- package/esm2022/lib/sidenav-content/sidenav-content.component.service.mjs +37 -0
- package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +51 -0
- package/{esm2020 → esm2022}/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.module.mjs +8 -7
- package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +74 -0
- package/{esm2020 → esm2022}/lib/window-container-sidenav/window-container-sidenav.component.module.mjs +8 -7
- package/{fesm2020 → fesm2022}/rxap-layout.mjs +436 -437
- package/fesm2022/rxap-layout.mjs.map +1 -0
- package/lib/header/header.component.d.ts +1 -1
- package/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +1 -1
- package/lib/navigation/navigation-item/navigation-item.component.d.ts +1 -1
- package/lib/navigation/navigation-item.d.ts +2 -2
- package/lib/navigation/navigation.component.d.ts +1 -1
- package/lib/sidenav-content/sidenav-content.component.d.ts +1 -1
- package/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.d.ts +1 -1
- package/package.json +26 -32
- package/esm2020/lib/footer/footer.component.module.mjs +0 -29
- package/esm2020/lib/footer.directive.mjs +0 -52
- package/esm2020/lib/header/apps-button/apps-button.component.module.mjs +0 -45
- package/esm2020/lib/header/header.component.mjs +0 -130
- package/esm2020/lib/header/header.component.module.mjs +0 -69
- package/esm2020/lib/header/language-selector/language-selector.component.mjs +0 -111
- package/esm2020/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +0 -33
- package/esm2020/lib/header/navigation-progress-bar/navigation-progress-bar.component.module.mjs +0 -25
- package/esm2020/lib/header/reset-button/reset-button.component.mjs +0 -27
- package/esm2020/lib/header/reset-button/reset-button.component.module.mjs +0 -25
- package/esm2020/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +0 -44
- package/esm2020/lib/header/sign-out/sign-out.component.mjs +0 -31
- package/esm2020/lib/header/sign-out/sign-out.component.module.mjs +0 -29
- package/esm2020/lib/header/user-profile-icon/user-profile-icon.component.module.mjs +0 -37
- package/esm2020/lib/layout/layout.component.mjs +0 -78
- package/esm2020/lib/layout/layout.component.module.mjs +0 -69
- package/esm2020/lib/layout/layout.component.service.mjs +0 -43
- package/esm2020/lib/navigation/navigation-item/navigation-item.component.mjs +0 -286
- package/esm2020/lib/navigation/navigation.component.mjs +0 -130
- package/esm2020/lib/navigation/navigation.service.mjs +0 -143
- package/esm2020/lib/navigation/replace-router-paths.pipe.mjs +0 -34
- package/esm2020/lib/navigation/replace-router-paths.service.mjs +0 -15
- package/esm2020/lib/sidenav/sidenav-footer.directive.mjs +0 -19
- package/esm2020/lib/sidenav/sidenav-header.directive.mjs +0 -19
- package/esm2020/lib/sidenav/sidenav.component.mjs +0 -120
- package/esm2020/lib/sidenav/sidenav.component.module.mjs +0 -43
- package/esm2020/lib/sidenav/sidenav.component.service.mjs +0 -22
- package/esm2020/lib/sidenav/version/version.component.mjs +0 -62
- package/esm2020/lib/sidenav-content/sidenav-content.component.mjs +0 -45
- package/esm2020/lib/sidenav-content/sidenav-content.component.service.mjs +0 -36
- package/esm2020/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +0 -50
- package/esm2020/lib/window-container-sidenav/window-container-sidenav.component.mjs +0 -73
- package/fesm2015/rxap-layout.mjs +0 -2543
- package/fesm2015/rxap-layout.mjs.map +0 -1
- package/fesm2020/rxap-layout.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/navigation/navigation-item.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types.mjs +0 -0
- /package/{esm2020 → esm2022}/rxap-layout.mjs +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, ViewChild } from '@angular/core';
|
|
2
|
+
import { LayoutComponentService } from './layout.component.service';
|
|
3
|
+
import { MatSidenav } from '@angular/material/sidenav';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./layout.component.service";
|
|
6
|
+
import * as i2 from "@angular/material/sidenav";
|
|
7
|
+
import * as i3 from "../footer/footer.component";
|
|
8
|
+
import * as i4 from "../header/header.component";
|
|
9
|
+
import * as i5 from "../sidenav/sidenav.component";
|
|
10
|
+
import * as i6 from "../sidenav/sidenav-header.directive";
|
|
11
|
+
import * as i7 from "../sidenav-content/sidenav-content.component";
|
|
12
|
+
import * as i8 from "../window-container-sidenav/window-container-sidenav.component";
|
|
13
|
+
import * as i9 from "../toggle-window-sidenav-button/toggle-window-sidenav-button.component";
|
|
14
|
+
import * as i10 from "@angular/router";
|
|
15
|
+
import * as i11 from "@angular/common";
|
|
16
|
+
const _c0 = function () { return ["/"]; };
|
|
17
|
+
function LayoutComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelement(0, "img", 9);
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
21
|
+
i0.ɵɵproperty("routerLink", i0.ɵɵpureFunction0(3, _c0))("width", ctx_r0.layoutComponentService.logo.width)("src", ctx_r0.layoutComponentService.logo.src, i0.ɵɵsanitizeUrl);
|
|
22
|
+
} }
|
|
23
|
+
const _c1 = ["*"];
|
|
24
|
+
class LayoutComponent {
|
|
25
|
+
constructor(layoutComponentService) {
|
|
26
|
+
this.layoutComponentService = layoutComponentService;
|
|
27
|
+
this.openWindowSidenav = false;
|
|
28
|
+
}
|
|
29
|
+
static { this.ɵfac = function LayoutComponent_Factory(t) { return new (t || LayoutComponent)(i0.ɵɵdirectiveInject(i1.LayoutComponentService)); }; }
|
|
30
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayoutComponent, selectors: [["rxap-layout"]], viewQuery: function LayoutComponent_Query(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵviewQuery(MatSidenav, 7);
|
|
32
|
+
} if (rf & 2) {
|
|
33
|
+
let _t;
|
|
34
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sidenav = _t.first);
|
|
35
|
+
} }, ngContentSelectors: _c1, decls: 18, vars: 24, consts: [[1, "header", 3, "sidenav"], ["autosize", "", 1, "container"], [1, "sidenav", 3, "fixedBottomGap", "fixedInViewport", "fixedTopGap", "mode", "opened"], ["rxapSidenavHeader", ""], [1, "content"], [3, "sidenav"], [3, "openWindowSidenav", "openWindowSidenavChange"], ["mode", "side", "position", "end", 1, "window-container-sidenav", 3, "fixedBottomGap", "fixedInViewport", "fixedTopGap", "opened"], [1, "footer"], ["alt", "logo", 1, "logo", 3, "routerLink", "width", "src"]], template: function LayoutComponent_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
i0.ɵɵprojectionDef();
|
|
37
|
+
i0.ɵɵelement(0, "rxap-header", 0);
|
|
38
|
+
i0.ɵɵelementStart(1, "mat-sidenav-container", 1)(2, "mat-sidenav", 2);
|
|
39
|
+
i0.ɵɵpipe(3, "async");
|
|
40
|
+
i0.ɵɵpipe(4, "async");
|
|
41
|
+
i0.ɵɵpipe(5, "async");
|
|
42
|
+
i0.ɵɵpipe(6, "async");
|
|
43
|
+
i0.ɵɵelementStart(7, "rxap-sidenav");
|
|
44
|
+
i0.ɵɵtemplate(8, LayoutComponent_ng_template_8_Template, 1, 4, "ng-template", 3);
|
|
45
|
+
i0.ɵɵelementEnd()();
|
|
46
|
+
i0.ɵɵelementStart(9, "mat-sidenav-content", 4)(10, "rxap-sidenav-content", 5);
|
|
47
|
+
i0.ɵɵprojection(11);
|
|
48
|
+
i0.ɵɵelementStart(12, "rxap-toggle-window-sidenav-button", 6);
|
|
49
|
+
i0.ɵɵlistener("openWindowSidenavChange", function LayoutComponent_Template_rxap_toggle_window_sidenav_button_openWindowSidenavChange_12_listener($event) { return ctx.openWindowSidenav = $event; });
|
|
50
|
+
i0.ɵɵelementEnd()()();
|
|
51
|
+
i0.ɵɵelementStart(13, "mat-sidenav", 7);
|
|
52
|
+
i0.ɵɵpipe(14, "async");
|
|
53
|
+
i0.ɵɵpipe(15, "async");
|
|
54
|
+
i0.ɵɵelement(16, "rxap-window-container-sidenav");
|
|
55
|
+
i0.ɵɵelementEnd()();
|
|
56
|
+
i0.ɵɵelement(17, "rxap-footer", 8);
|
|
57
|
+
} if (rf & 2) {
|
|
58
|
+
let tmp_4_0;
|
|
59
|
+
let tmp_5_0;
|
|
60
|
+
i0.ɵɵproperty("sidenav", ctx.sidenav);
|
|
61
|
+
i0.ɵɵadvance(2);
|
|
62
|
+
i0.ɵɵproperty("fixedBottomGap", i0.ɵɵpipeBind1(3, 12, ctx.layoutComponentService.fixedBottomGap$))("fixedInViewport", true)("fixedTopGap", i0.ɵɵpipeBind1(4, 14, ctx.layoutComponentService.fixedTopGap$))("mode", (tmp_4_0 = i0.ɵɵpipeBind1(5, 16, ctx.layoutComponentService.mode$)) !== null && tmp_4_0 !== undefined ? tmp_4_0 : "side")("opened", (tmp_5_0 = i0.ɵɵpipeBind1(6, 18, ctx.layoutComponentService.opened$)) !== null && tmp_5_0 !== undefined ? tmp_5_0 : true);
|
|
63
|
+
i0.ɵɵadvance(8);
|
|
64
|
+
i0.ɵɵproperty("sidenav", ctx.sidenav);
|
|
65
|
+
i0.ɵɵadvance(2);
|
|
66
|
+
i0.ɵɵproperty("openWindowSidenav", ctx.openWindowSidenav);
|
|
67
|
+
i0.ɵɵadvance(1);
|
|
68
|
+
i0.ɵɵproperty("fixedBottomGap", i0.ɵɵpipeBind1(14, 20, ctx.layoutComponentService.fixedBottomGap$))("fixedInViewport", true)("fixedTopGap", i0.ɵɵpipeBind1(15, 22, ctx.layoutComponentService.fixedTopGap$))("opened", ctx.openWindowSidenav);
|
|
69
|
+
} }, dependencies: [i2.MatSidenav, i2.MatSidenavContainer, i2.MatSidenavContent, i3.FooterComponent, i4.HeaderComponent, i5.SidenavComponent, i6.SidenavHeaderDirective, i7.SidenavContentComponent, i8.WindowContainerSidenavComponent, i9.ToggleWindowSidenavButtonComponent, i10.RouterLink, i11.AsyncPipe], styles: [".container[_ngcontent-%COMP%], .content[_ngcontent-%COMP%]{height:100%}.sidenav[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:auto}.sidenav[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%]{padding:16px}.footer[_ngcontent-%COMP%]{position:fixed;bottom:0;left:0;right:0;z-index:100}.header[_ngcontent-%COMP%]{position:fixed;top:0;left:0;right:0;z-index:100}"], changeDetection: 0 }); }
|
|
70
|
+
}
|
|
71
|
+
export { LayoutComponent };
|
|
72
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayoutComponent, [{
|
|
73
|
+
type: Component,
|
|
74
|
+
args: [{ selector: 'rxap-layout', changeDetection: ChangeDetectionStrategy.OnPush, template: "<rxap-header [sidenav]=\"sidenav\" class=\"header\"></rxap-header>\n<mat-sidenav-container autosize class=\"container\">\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [mode]=\"(layoutComponentService.mode$ | async) ?? 'side'\"\n [opened]=\"(layoutComponentService.opened$ | async) ?? true\"\n class=\"sidenav\"\n >\n <rxap-sidenav>\n <ng-template rxapSidenavHeader>\n <img\n [routerLink]=\"['/']\"\n alt=\"logo\"\n class=\"logo\"\n [width]=\"layoutComponentService.logo.width\"\n [src]=\"layoutComponentService.logo.src\"\n />\n </ng-template>\n </rxap-sidenav>\n </mat-sidenav>\n <mat-sidenav-content class=\"content\">\n <rxap-sidenav-content [sidenav]=\"sidenav\">\n <ng-content></ng-content>\n <rxap-toggle-window-sidenav-button [(openWindowSidenav)]=\"openWindowSidenav\"></rxap-toggle-window-sidenav-button>\n </rxap-sidenav-content>\n </mat-sidenav-content>\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [opened]=\"openWindowSidenav\"\n mode=\"side\"\n class=\"window-container-sidenav\"\n position=\"end\"\n >\n <rxap-window-container-sidenav></rxap-window-container-sidenav>\n </mat-sidenav>\n</mat-sidenav-container>\n<rxap-footer class=\"footer\"></rxap-footer>\n", styles: [".container,.content{height:100%}.sidenav{display:flex;align-items:center;justify-content:center;width:auto}.sidenav .logo{padding:16px}.footer{position:fixed;bottom:0;left:0;right:0;z-index:100}.header{position:fixed;top:0;left:0;right:0;z-index:100}\n"] }]
|
|
75
|
+
}], function () { return [{ type: i1.LayoutComponentService }]; }, { sidenav: [{
|
|
76
|
+
type: ViewChild,
|
|
77
|
+
args: [MatSidenav, { static: true }]
|
|
78
|
+
}] }); })();
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbGF5b3V0L3NyYy9saWIvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2xheW91dC9zcmMvbGliL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0lDTS9DLHlCQU1FOzs7SUFMQSx1REFBb0IsbURBQUEsaUVBQUE7OztBREw5QixNQU1hLGVBQWU7SUFNMUIsWUFDa0Isc0JBQThDO1FBQTlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFMekQsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBTTdCLENBQUM7Z0ZBUk0sZUFBZTtvRUFBZixlQUFlOzJCQUlmLFVBQVU7Ozs7OztZQ2xCdkIsaUNBQThEO1lBQzlELGdEQUFrRCxxQkFBQTs7Ozs7WUFTOUMsb0NBQWM7WUFDWixnRkFRYztZQUNoQixpQkFBZSxFQUFBO1lBRWpCLDhDQUFxQywrQkFBQTtZQUVqQyxtQkFBeUI7WUFDekIsNkRBQTZFO1lBQTFDLG9NQUF5QztZQUFDLGlCQUFvQyxFQUFBLEVBQUE7WUFHckgsdUNBUUM7OztZQUNDLGlEQUErRDtZQUNqRSxpQkFBYyxFQUFBO1lBRWhCLGtDQUEwQzs7OztZQXhDN0IscUNBQW1CO1lBRzVCLGVBQWlFO1lBQWpFLGtHQUFpRSx5QkFBQSwrRUFBQSxrSUFBQSxvSUFBQTtZQW9CM0MsZUFBbUI7WUFBbkIscUNBQW1CO1lBRUosZUFBeUM7WUFBekMseURBQXlDO1lBSTlFLGVBQWlFO1lBQWpFLG1HQUFpRSx5QkFBQSxnRkFBQSxpQ0FBQTs7O1NEZnhELGVBQWU7dUZBQWYsZUFBZTtjQU4zQixTQUFTOzJCQUNTLGFBQWEsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTt5RUFNQyxPQUFPO2tCQUF0RCxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXlvdXRDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi9sYXlvdXQuY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICAgICAgICAncnhhcC1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogICAgICcuL2xheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogICAgICAgWyAnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQge1xuXG4gIHB1YmxpYyBvcGVuV2luZG93U2lkZW5hdiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoTWF0U2lkZW5hdiwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIHNpZGVuYXYhOiBNYXRTaWRlbmF2O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBsYXlvdXRDb21wb25lbnRTZXJ2aWNlOiBMYXlvdXRDb21wb25lbnRTZXJ2aWNlLFxuICApIHsgfVxuXG59XG4iLCI8cnhhcC1oZWFkZXIgW3NpZGVuYXZdPVwic2lkZW5hdlwiIGNsYXNzPVwiaGVhZGVyXCI+PC9yeGFwLWhlYWRlcj5cbjxtYXQtc2lkZW5hdi1jb250YWluZXIgYXV0b3NpemUgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPG1hdC1zaWRlbmF2XG4gICAgW2ZpeGVkQm90dG9tR2FwXT1cImxheW91dENvbXBvbmVudFNlcnZpY2UuZml4ZWRCb3R0b21HYXAkIHwgYXN5bmNcIlxuICAgIFtmaXhlZEluVmlld3BvcnRdPVwidHJ1ZVwiXG4gICAgW2ZpeGVkVG9wR2FwXT1cImxheW91dENvbXBvbmVudFNlcnZpY2UuZml4ZWRUb3BHYXAkIHwgYXN5bmNcIlxuICAgIFttb2RlXT1cIihsYXlvdXRDb21wb25lbnRTZXJ2aWNlLm1vZGUkIHwgYXN5bmMpID8/ICdzaWRlJ1wiXG4gICAgW29wZW5lZF09XCIobGF5b3V0Q29tcG9uZW50U2VydmljZS5vcGVuZWQkIHwgYXN5bmMpID8/IHRydWVcIlxuICAgIGNsYXNzPVwic2lkZW5hdlwiXG4gID5cbiAgICA8cnhhcC1zaWRlbmF2PlxuICAgICAgPG5nLXRlbXBsYXRlIHJ4YXBTaWRlbmF2SGVhZGVyPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvJ11cIlxuICAgICAgICAgIGFsdD1cImxvZ29cIlxuICAgICAgICAgIGNsYXNzPVwibG9nb1wiXG4gICAgICAgICAgW3dpZHRoXT1cImxheW91dENvbXBvbmVudFNlcnZpY2UubG9nby53aWR0aFwiXG4gICAgICAgICAgW3NyY109XCJsYXlvdXRDb21wb25lbnRTZXJ2aWNlLmxvZ28uc3JjXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9yeGFwLXNpZGVuYXY+XG4gIDwvbWF0LXNpZGVuYXY+XG4gIDxtYXQtc2lkZW5hdi1jb250ZW50IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxyeGFwLXNpZGVuYXYtY29udGVudCBbc2lkZW5hdl09XCJzaWRlbmF2XCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8cnhhcC10b2dnbGUtd2luZG93LXNpZGVuYXYtYnV0dG9uIFsob3BlbldpbmRvd1NpZGVuYXYpXT1cIm9wZW5XaW5kb3dTaWRlbmF2XCI+PC9yeGFwLXRvZ2dsZS13aW5kb3ctc2lkZW5hdi1idXR0b24+XG4gICAgPC9yeGFwLXNpZGVuYXYtY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuICA8bWF0LXNpZGVuYXZcbiAgICBbZml4ZWRCb3R0b21HYXBdPVwibGF5b3V0Q29tcG9uZW50U2VydmljZS5maXhlZEJvdHRvbUdhcCQgfCBhc3luY1wiXG4gICAgW2ZpeGVkSW5WaWV3cG9ydF09XCJ0cnVlXCJcbiAgICBbZml4ZWRUb3BHYXBdPVwibGF5b3V0Q29tcG9uZW50U2VydmljZS5maXhlZFRvcEdhcCQgfCBhc3luY1wiXG4gICAgW29wZW5lZF09XCJvcGVuV2luZG93U2lkZW5hdlwiXG4gICAgbW9kZT1cInNpZGVcIlxuICAgIGNsYXNzPVwid2luZG93LWNvbnRhaW5lci1zaWRlbmF2XCJcbiAgICBwb3NpdGlvbj1cImVuZFwiXG4gID5cbiAgICA8cnhhcC13aW5kb3ctY29udGFpbmVyLXNpZGVuYXY+PC9yeGFwLXdpbmRvdy1jb250YWluZXItc2lkZW5hdj5cbiAgPC9tYXQtc2lkZW5hdj5cbjwvbWF0LXNpZGVuYXYtY29udGFpbmVyPlxuPHJ4YXAtZm9vdGVyIGNsYXNzPVwiZm9vdGVyXCI+PC9yeGFwLWZvb3Rlcj5cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { LayoutComponent } from './layout.component';
|
|
3
|
+
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
4
|
+
import { FooterModule } from '../footer/footer.component.module';
|
|
5
|
+
import { HeaderModule } from '../header/header.component.module';
|
|
6
|
+
import { CommonModule } from '@angular/common';
|
|
7
|
+
import { SidenavModule } from '../sidenav/sidenav.component.module';
|
|
8
|
+
import { SidenavContentModule } from '../sidenav-content/sidenav-content.component.module';
|
|
9
|
+
import { RXAP_NAVIGATION_CONFIG } from '../tokens';
|
|
10
|
+
import { WindowContainerSidenavModule } from '../window-container-sidenav/window-container-sidenav.component.module';
|
|
11
|
+
import { ToggleWindowSidenavButtonModule } from '../toggle-window-sidenav-button/toggle-window-sidenav-button.component.module';
|
|
12
|
+
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
13
|
+
import { RouterModule } from '@angular/router';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
class LayoutModule {
|
|
16
|
+
static withNavigation(navigation) {
|
|
17
|
+
return {
|
|
18
|
+
ngModule: LayoutModule,
|
|
19
|
+
providers: [
|
|
20
|
+
{
|
|
21
|
+
provide: RXAP_NAVIGATION_CONFIG,
|
|
22
|
+
useValue: navigation
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = function LayoutModule_Factory(t) { return new (t || LayoutModule)(); }; }
|
|
28
|
+
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: LayoutModule }); }
|
|
29
|
+
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [MatSidenavModule,
|
|
30
|
+
FooterModule,
|
|
31
|
+
HeaderModule,
|
|
32
|
+
CommonModule,
|
|
33
|
+
SidenavModule,
|
|
34
|
+
SidenavContentModule,
|
|
35
|
+
WindowContainerSidenavModule,
|
|
36
|
+
ToggleWindowSidenavButtonModule,
|
|
37
|
+
FlexLayoutModule,
|
|
38
|
+
RouterModule] }); }
|
|
39
|
+
}
|
|
40
|
+
export { LayoutModule };
|
|
41
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayoutModule, [{
|
|
42
|
+
type: NgModule,
|
|
43
|
+
args: [{
|
|
44
|
+
declarations: [LayoutComponent],
|
|
45
|
+
imports: [
|
|
46
|
+
MatSidenavModule,
|
|
47
|
+
FooterModule,
|
|
48
|
+
HeaderModule,
|
|
49
|
+
CommonModule,
|
|
50
|
+
SidenavModule,
|
|
51
|
+
SidenavContentModule,
|
|
52
|
+
WindowContainerSidenavModule,
|
|
53
|
+
ToggleWindowSidenavButtonModule,
|
|
54
|
+
FlexLayoutModule,
|
|
55
|
+
RouterModule
|
|
56
|
+
],
|
|
57
|
+
exports: [LayoutComponent]
|
|
58
|
+
}]
|
|
59
|
+
}], null, null); })();
|
|
60
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(LayoutModule, { declarations: [LayoutComponent], imports: [MatSidenavModule,
|
|
61
|
+
FooterModule,
|
|
62
|
+
HeaderModule,
|
|
63
|
+
CommonModule,
|
|
64
|
+
SidenavModule,
|
|
65
|
+
SidenavContentModule,
|
|
66
|
+
WindowContainerSidenavModule,
|
|
67
|
+
ToggleWindowSidenavButtonModule,
|
|
68
|
+
FlexLayoutModule,
|
|
69
|
+
RouterModule], exports: [LayoutComponent] }); })();
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2xheW91dC9zcmMvbGliL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFM0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ3JILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtFQUErRSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFL0MsTUFnQmEsWUFBWTtJQUVoQixNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWlFO1FBRTVGLE9BQU87WUFDTCxRQUFRLEVBQUcsWUFBWTtZQUN2QixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFHLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLFVBQVU7aUJBQ3JCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs2RUFiVSxZQUFZO21FQUFaLFlBQVk7dUVBYnJCLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osWUFBWTtZQUNaLFlBQVk7WUFDWixhQUFhO1lBQ2Isb0JBQW9CO1lBQ3BCLDRCQUE0QjtZQUM1QiwrQkFBK0I7WUFDL0IsZ0JBQWdCO1lBQ2hCLFlBQVk7O1NBSUgsWUFBWTt1RkFBWixZQUFZO2NBaEJ4QixRQUFRO2VBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUUsZUFBZSxDQUFFO2dCQUNqQyxPQUFPLEVBQU87b0JBQ1osZ0JBQWdCO29CQUNoQixZQUFZO29CQUNaLFlBQVk7b0JBQ1osWUFBWTtvQkFDWixhQUFhO29CQUNiLG9CQUFvQjtvQkFDcEIsNEJBQTRCO29CQUM1QiwrQkFBK0I7b0JBQy9CLGdCQUFnQjtvQkFDaEIsWUFBWTtpQkFDYjtnQkFDRCxPQUFPLEVBQU8sQ0FBRSxlQUFlLENBQUU7YUFDbEM7O3dGQUNZLFlBQVksbUJBZlAsZUFBZSxhQUU3QixnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFlBQVk7UUFDWixZQUFZO1FBQ1osYUFBYTtRQUNiLG9CQUFvQjtRQUNwQiw0QkFBNEI7UUFDNUIsK0JBQStCO1FBQy9CLGdCQUFnQjtRQUNoQixZQUFZLGFBRUUsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE5nTW9kdWxlLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IEZvb3Rlck1vZHVsZSB9IGZyb20gJy4uL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNpZGVuYXZNb2R1bGUgfSBmcm9tICcuLi9zaWRlbmF2L3NpZGVuYXYuY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBTaWRlbmF2Q29udGVudE1vZHVsZSB9IGZyb20gJy4uL3NpZGVuYXYtY29udGVudC9zaWRlbmF2LWNvbnRlbnQuY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uV2l0aEluc2VydHMgfSBmcm9tICcuLi9uYXZpZ2F0aW9uL25hdmlnYXRpb24taXRlbSc7XG5pbXBvcnQgeyBSWEFQX05BVklHQVRJT05fQ09ORklHIH0gZnJvbSAnLi4vdG9rZW5zJztcbmltcG9ydCB7IFdpbmRvd0NvbnRhaW5lclNpZGVuYXZNb2R1bGUgfSBmcm9tICcuLi93aW5kb3ctY29udGFpbmVyLXNpZGVuYXYvd2luZG93LWNvbnRhaW5lci1zaWRlbmF2LmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgVG9nZ2xlV2luZG93U2lkZW5hdkJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL3RvZ2dsZS13aW5kb3ctc2lkZW5hdi1idXR0b24vdG9nZ2xlLXdpbmRvdy1zaWRlbmF2LWJ1dHRvbi5jb21wb25lbnQubW9kdWxlJztcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mbGV4LWxheW91dCc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFsgTGF5b3V0Q29tcG9uZW50IF0sXG4gIGltcG9ydHM6ICAgICAgW1xuICAgIE1hdFNpZGVuYXZNb2R1bGUsXG4gICAgRm9vdGVyTW9kdWxlLFxuICAgIEhlYWRlck1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2lkZW5hdk1vZHVsZSxcbiAgICBTaWRlbmF2Q29udGVudE1vZHVsZSxcbiAgICBXaW5kb3dDb250YWluZXJTaWRlbmF2TW9kdWxlLFxuICAgIFRvZ2dsZVdpbmRvd1NpZGVuYXZCdXR0b25Nb2R1bGUsXG4gICAgRmxleExheW91dE1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogICAgICBbIExheW91dENvbXBvbmVudCBdXG59KVxuZXhwb3J0IGNsYXNzIExheW91dE1vZHVsZSB7XG5cbiAgcHVibGljIHN0YXRpYyB3aXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uV2l0aEluc2VydHMgfCAoKCkgPT4gTmF2aWdhdGlvbldpdGhJbnNlcnRzKSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TGF5b3V0TW9kdWxlPiB7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6ICBMYXlvdXRNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6ICBSWEFQX05BVklHQVRJT05fQ09ORklHLFxuICAgICAgICAgIHVzZVZhbHVlOiBuYXZpZ2F0aW9uXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Injectable, Optional, Inject } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { tap, map } from 'rxjs/operators';
|
|
4
|
+
import { FooterService, HeaderService } from '@rxap/services';
|
|
5
|
+
import { RXAP_LOGO_CONFIG } from '../tokens';
|
|
6
|
+
import { ConfigService } from '@rxap/config';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@rxap/services";
|
|
9
|
+
import * as i2 from "@rxap/config";
|
|
10
|
+
class LayoutComponentService {
|
|
11
|
+
constructor(footerComponentService, headerComponentService, logoConfig = null, config) {
|
|
12
|
+
this.footerComponentService = footerComponentService;
|
|
13
|
+
this.headerComponentService = headerComponentService;
|
|
14
|
+
this.config = config;
|
|
15
|
+
this.opened$ = new BehaviorSubject(true);
|
|
16
|
+
this.mode$ = new BehaviorSubject('side');
|
|
17
|
+
this.fixedTopGap$ = new BehaviorSubject(64);
|
|
18
|
+
this.mode$.next(this.config.get('navigation.mode', this.mode$.value));
|
|
19
|
+
this.opened$.next(this.config.get('navigation.open', this.opened$.value));
|
|
20
|
+
this.fixedBottomGap$ = this.footerComponentService.portalCount$.pipe(map(count => count * 64));
|
|
21
|
+
this.fixedTopGap$.next(this.headerComponentService.countComponent * 64);
|
|
22
|
+
this.headerComponentService.update$.pipe(tap(() => this.fixedTopGap$.next(this.headerComponentService.countComponent * 64))).subscribe();
|
|
23
|
+
this.logo = logoConfig ?? {
|
|
24
|
+
src: '/assets/logo.png',
|
|
25
|
+
width: '192'
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
static { this.ɵfac = function LayoutComponentService_Factory(t) { return new (t || LayoutComponentService)(i0.ɵɵinject(i1.FooterService), i0.ɵɵinject(i1.HeaderService), i0.ɵɵinject(RXAP_LOGO_CONFIG, 8), i0.ɵɵinject(ConfigService)); }; }
|
|
29
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LayoutComponentService, factory: LayoutComponentService.ɵfac, providedIn: 'root' }); }
|
|
30
|
+
}
|
|
31
|
+
export { LayoutComponentService };
|
|
32
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayoutComponentService, [{
|
|
33
|
+
type: Injectable,
|
|
34
|
+
args: [{ providedIn: 'root' }]
|
|
35
|
+
}], function () { return [{ type: i1.FooterService }, { type: i1.HeaderService }, { type: undefined, decorators: [{
|
|
36
|
+
type: Optional
|
|
37
|
+
}, {
|
|
38
|
+
type: Inject,
|
|
39
|
+
args: [RXAP_LOGO_CONFIG]
|
|
40
|
+
}] }, { type: i2.ConfigService, decorators: [{
|
|
41
|
+
type: Inject,
|
|
42
|
+
args: [ConfigService]
|
|
43
|
+
}] }]; }, null); })();
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUVoQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxHQUFHLEVBQ0gsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUc3QyxNQUNhLHNCQUFzQjtJQVFqQyxZQUNrQixzQkFBcUMsRUFDckMsc0JBQXFDLEVBQ2YsYUFBZ0MsSUFBSSxFQUV6RCxNQUFxQjtRQUp0QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQWU7UUFDckMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFlO1FBR3BDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFYakMsWUFBTyxHQUFRLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2xELFVBQUssR0FBVSxJQUFJLGVBQWUsQ0FBZ0IsTUFBTSxDQUFDLENBQUM7UUFFMUQsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQVVwRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDbkYsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxJQUFJO1lBQ3hCLEdBQUcsRUFBSSxrQkFBa0I7WUFDekIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDO0lBQ0osQ0FBQzt1RkExQlUsc0JBQXNCLDRFQVdYLGdCQUFnQixrQkFDNUIsYUFBYTt1RUFaWixzQkFBc0IsV0FBdEIsc0JBQXNCLG1CQURULE1BQU07O1NBQ25CLHNCQUFzQjt1RkFBdEIsc0JBQXNCO2NBRGxDLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O3NCQVk3QixRQUFROztzQkFBSSxNQUFNO3VCQUFDLGdCQUFnQjs7c0JBQ25DLE1BQU07dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsLFxuICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGVcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICB0YXAsXG4gIG1hcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBGb290ZXJTZXJ2aWNlLFxuICBIZWFkZXJTZXJ2aWNlXG59IGZyb20gJ0ByeGFwL3NlcnZpY2VzJztcbmltcG9ydCB7IFJYQVBfTE9HT19DT05GSUcgfSBmcm9tICcuLi90b2tlbnMnO1xuaW1wb3J0IHsgTG9nb0NvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcnhhcC9jb25maWcnO1xuaW1wb3J0IHsgTWF0RHJhd2VyTW9kZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExheW91dENvbXBvbmVudFNlcnZpY2Uge1xuXG4gIHB1YmxpYyBvcGVuZWQkICAgICAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgbW9kZSQgICAgICAgID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXREcmF3ZXJNb2RlPignc2lkZScpO1xuICBwdWJsaWMgZml4ZWRCb3R0b21HYXAkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIHB1YmxpYyBmaXhlZFRvcEdhcCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oNjQpO1xuICBwdWJsaWMgbG9nbzogTG9nb0NvbmZpZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGZvb3RlckNvbXBvbmVudFNlcnZpY2U6IEZvb3RlclNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGhlYWRlckNvbXBvbmVudFNlcnZpY2U6IEhlYWRlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSWEFQX0xPR09fQ09ORklHKSBsb2dvQ29uZmlnOiBMb2dvQ29uZmlnIHwgbnVsbCA9IG51bGwsXG4gICAgQEluamVjdChDb25maWdTZXJ2aWNlKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubW9kZSQubmV4dCh0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24ubW9kZScsIHRoaXMubW9kZSQudmFsdWUpKTtcbiAgICB0aGlzLm9wZW5lZCQubmV4dCh0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24ub3BlbicsIHRoaXMub3BlbmVkJC52YWx1ZSkpO1xuICAgIHRoaXMuZml4ZWRCb3R0b21HYXAkID0gdGhpcy5mb290ZXJDb21wb25lbnRTZXJ2aWNlLnBvcnRhbENvdW50JC5waXBlKG1hcChjb3VudCA9PiBjb3VudCAqIDY0KSk7XG4gICAgdGhpcy5maXhlZFRvcEdhcCQubmV4dCh0aGlzLmhlYWRlckNvbXBvbmVudFNlcnZpY2UuY291bnRDb21wb25lbnQgKiA2NCk7XG4gICAgdGhpcy5oZWFkZXJDb21wb25lbnRTZXJ2aWNlLnVwZGF0ZSQucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmZpeGVkVG9wR2FwJC5uZXh0KHRoaXMuaGVhZGVyQ29tcG9uZW50U2VydmljZS5jb3VudENvbXBvbmVudCAqIDY0KSlcbiAgICApLnN1YnNjcmliZSgpO1xuICAgIHRoaXMubG9nbyA9IGxvZ29Db25maWcgPz8ge1xuICAgICAgc3JjOiAgICcvYXNzZXRzL2xvZ28ucG5nJyxcbiAgICAgIHdpZHRoOiAnMTkyJ1xuICAgIH07XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Component, Input, ChangeDetectionStrategy, ViewChild, HostBinding, ViewEncapsulation, ElementRef, Renderer2, HostListener, TemplateRef, ViewContainerRef, Inject, } from '@angular/core';
|
|
3
|
+
import { Required, DebounceCall } from '@rxap/utilities';
|
|
4
|
+
import { trigger, style, transition, animate } from '@angular/animations';
|
|
5
|
+
import { RouterLinkActive, Router, NavigationEnd } from '@angular/router';
|
|
6
|
+
import { Subscription } from 'rxjs';
|
|
7
|
+
import { filter, tap, delay, startWith, distinctUntilChanged, skip, } from 'rxjs/operators';
|
|
8
|
+
import { SidenavComponentService } from '../../sidenav/sidenav.component.service';
|
|
9
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
10
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/router";
|
|
13
|
+
import * as i2 from "../../sidenav/sidenav.component.service";
|
|
14
|
+
import * as i3 from "@angular/cdk/overlay";
|
|
15
|
+
const _c0 = ["navigationOverlay"];
|
|
16
|
+
const _c1 = ["rxap-navigation-item", ""];
|
|
17
|
+
function NavigationItemComponent_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelement(0, "mat-icon", 5);
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
21
|
+
i0.ɵɵproperty("rxapIcon", ctx_r0.item.icon);
|
|
22
|
+
} }
|
|
23
|
+
function NavigationItemComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelementStart(0, "span", 6);
|
|
25
|
+
i0.ɵɵtext(1);
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
} if (rf & 2) {
|
|
28
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
29
|
+
i0.ɵɵadvance(1);
|
|
30
|
+
i0.ɵɵtextInterpolate(ctx_r1.item.label);
|
|
31
|
+
} }
|
|
32
|
+
function NavigationItemComponent_ul_5_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelement(0, "ul", 7);
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
36
|
+
i0.ɵɵproperty("@sub-nav", undefined)("items", ctx_r2.children)("level", ctx_r2.level + 1);
|
|
37
|
+
} }
|
|
38
|
+
function NavigationItemComponent_ng_template_7_li_2_a_1_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
i0.ɵɵelement(0, "mat-icon", 5);
|
|
40
|
+
} if (rf & 2) {
|
|
41
|
+
const child_r6 = i0.ɵɵnextContext(2).$implicit;
|
|
42
|
+
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
43
|
+
i0.ɵɵproperty("rxapIcon", ctx_r8.asNavigationItem(child_r6).icon);
|
|
44
|
+
} }
|
|
45
|
+
function NavigationItemComponent_ng_template_7_li_2_a_1_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
i0.ɵɵelementStart(0, "a", 11);
|
|
47
|
+
i0.ɵɵtemplate(1, NavigationItemComponent_ng_template_7_li_2_a_1_mat_icon_1_Template, 1, 1, "mat-icon", 1);
|
|
48
|
+
i0.ɵɵelementStart(2, "span", 6);
|
|
49
|
+
i0.ɵɵtext(3);
|
|
50
|
+
i0.ɵɵelementEnd()();
|
|
51
|
+
} if (rf & 2) {
|
|
52
|
+
const child_r6 = i0.ɵɵnextContext().$implicit;
|
|
53
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
54
|
+
i0.ɵɵproperty("routerLink", ctx_r7.asNavigationItem(child_r6).routerLink);
|
|
55
|
+
i0.ɵɵadvance(1);
|
|
56
|
+
i0.ɵɵproperty("ngIf", ctx_r7.asNavigationItem(child_r6).icon);
|
|
57
|
+
i0.ɵɵadvance(2);
|
|
58
|
+
i0.ɵɵtextInterpolate(ctx_r7.asNavigationItem(child_r6).label);
|
|
59
|
+
} }
|
|
60
|
+
function NavigationItemComponent_ng_template_7_li_2_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
+
i0.ɵɵelementStart(0, "li");
|
|
62
|
+
i0.ɵɵtemplate(1, NavigationItemComponent_ng_template_7_li_2_a_1_Template, 4, 3, "a", 10);
|
|
63
|
+
i0.ɵɵelementEnd();
|
|
64
|
+
} if (rf & 2) {
|
|
65
|
+
const child_r6 = ctx.$implicit;
|
|
66
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
67
|
+
i0.ɵɵadvance(1);
|
|
68
|
+
i0.ɵɵproperty("ngIf", ctx_r5.isNavigationItem(child_r6));
|
|
69
|
+
} }
|
|
70
|
+
function NavigationItemComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
72
|
+
i0.ɵɵelementStart(0, "div", 8);
|
|
73
|
+
i0.ɵɵlistener("mouseenter", function NavigationItemComponent_ng_template_7_Template_div_mouseenter_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.lockeOverlay = true); })("mouseleave", function NavigationItemComponent_ng_template_7_Template_div_mouseleave_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r13 = i0.ɵɵnextContext(); ctx_r13.lockeOverlay = false; return i0.ɵɵresetView(ctx_r13.onMouseleave()); });
|
|
74
|
+
i0.ɵɵelementStart(1, "ul");
|
|
75
|
+
i0.ɵɵtemplate(2, NavigationItemComponent_ng_template_7_li_2_Template, 2, 1, "li", 9);
|
|
76
|
+
i0.ɵɵelementEnd()();
|
|
77
|
+
} if (rf & 2) {
|
|
78
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
79
|
+
i0.ɵɵadvance(2);
|
|
80
|
+
i0.ɵɵproperty("ngForOf", ctx_r4.children);
|
|
81
|
+
} }
|
|
82
|
+
class NavigationItemComponent {
|
|
83
|
+
constructor(router, sidenav, elementRef, renderer, overlay, viewContainerRef) {
|
|
84
|
+
this.router = router;
|
|
85
|
+
this.sidenav = sidenav;
|
|
86
|
+
this.elementRef = elementRef;
|
|
87
|
+
this.renderer = renderer;
|
|
88
|
+
this.overlay = overlay;
|
|
89
|
+
this.viewContainerRef = viewContainerRef;
|
|
90
|
+
this.children = null;
|
|
91
|
+
this.level = 0;
|
|
92
|
+
this.isActive = false;
|
|
93
|
+
this._subscription = new Subscription();
|
|
94
|
+
/**
|
|
95
|
+
* indicates the mouse is over the
|
|
96
|
+
*/
|
|
97
|
+
this.lockeOverlay = false;
|
|
98
|
+
}
|
|
99
|
+
ngOnChanges(changes) {
|
|
100
|
+
if (changes.item) {
|
|
101
|
+
const item = changes.item.currentValue;
|
|
102
|
+
this.children =
|
|
103
|
+
item.children && item.children.length ? item.children : null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
ngAfterViewInit() {
|
|
107
|
+
this._subscription.add(this.router.events
|
|
108
|
+
.pipe(filter((event) => event instanceof NavigationEnd), startWith(true), delay(100), tap(() => {
|
|
109
|
+
if (this.routerLinkActive.isActive) {
|
|
110
|
+
if (!this.sidenav.collapsed$.value) {
|
|
111
|
+
// only close the overlay if sidenav collapsed
|
|
112
|
+
this._overlayRef?.detach();
|
|
113
|
+
}
|
|
114
|
+
this.renderer.addClass(this.elementRef.nativeElement, 'active');
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.renderer.removeClass(this.elementRef.nativeElement, 'active');
|
|
118
|
+
}
|
|
119
|
+
}))
|
|
120
|
+
.subscribe());
|
|
121
|
+
}
|
|
122
|
+
ngOnInit() {
|
|
123
|
+
// detach the navigation overlay if the sidenav collapsed
|
|
124
|
+
// state is changed
|
|
125
|
+
this._subscription.add(this.sidenav.collapsed$
|
|
126
|
+
.pipe(skip(1), distinctUntilChanged(), tap(() => this._overlayRef?.detach()))
|
|
127
|
+
.subscribe());
|
|
128
|
+
}
|
|
129
|
+
ngOnDestroy() {
|
|
130
|
+
this._subscription?.unsubscribe();
|
|
131
|
+
this._overlayRef?.dispose();
|
|
132
|
+
}
|
|
133
|
+
onMouseenter() {
|
|
134
|
+
if (this.children) {
|
|
135
|
+
if (!this.routerLinkActive.isActive || this.sidenav.collapsed$.value) {
|
|
136
|
+
if (!this._overlayRef) {
|
|
137
|
+
this._overlayRef = this.overlay.create({
|
|
138
|
+
positionStrategy: this.overlay
|
|
139
|
+
.position()
|
|
140
|
+
.flexibleConnectedTo(this.elementRef)
|
|
141
|
+
.withPositions([
|
|
142
|
+
{
|
|
143
|
+
originY: 'top',
|
|
144
|
+
originX: 'end',
|
|
145
|
+
overlayY: 'top',
|
|
146
|
+
overlayX: 'start',
|
|
147
|
+
},
|
|
148
|
+
]),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
if (!this._overlayRef.hasAttached()) {
|
|
152
|
+
this._embeddedViewRef = this._overlayRef.attach(new TemplatePortal(this._navigationOverlay, this.viewContainerRef));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
onMouseleave() {
|
|
158
|
+
if (!this.lockeOverlay) {
|
|
159
|
+
this._overlayRef?.detach();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// region type save item property
|
|
163
|
+
// required to check the type of the item property in the ngFor loop
|
|
164
|
+
isNavigationDividerItem(item) {
|
|
165
|
+
return item['divider'];
|
|
166
|
+
}
|
|
167
|
+
isNavigationItem(item) {
|
|
168
|
+
return !this.isNavigationDividerItem(item);
|
|
169
|
+
}
|
|
170
|
+
asNavigationItem(item) {
|
|
171
|
+
if (!this.isNavigationItem(item)) {
|
|
172
|
+
throw new Error('The item is not a NavigationItem');
|
|
173
|
+
}
|
|
174
|
+
return item;
|
|
175
|
+
}
|
|
176
|
+
static { this.ɵfac = function NavigationItemComponent_Factory(t) { return new (t || NavigationItemComponent)(i0.ɵɵdirectiveInject(Router), i0.ɵɵdirectiveInject(SidenavComponentService), i0.ɵɵdirectiveInject(ElementRef), i0.ɵɵdirectiveInject(Renderer2), i0.ɵɵdirectiveInject(Overlay), i0.ɵɵdirectiveInject(ViewContainerRef)); }; }
|
|
177
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationItemComponent, selectors: [["li", "rxap-navigation-item", ""]], viewQuery: function NavigationItemComponent_Query(rf, ctx) { if (rf & 1) {
|
|
178
|
+
i0.ɵɵviewQuery(RouterLinkActive, 7);
|
|
179
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
180
|
+
} if (rf & 2) {
|
|
181
|
+
let _t;
|
|
182
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.routerLinkActive = _t.first);
|
|
183
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._navigationOverlay = _t.first);
|
|
184
|
+
} }, hostAttrs: [1, "rxap-navigation-item"], hostVars: 2, hostBindings: function NavigationItemComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
185
|
+
i0.ɵɵlistener("mouseenter", function NavigationItemComponent_mouseenter_HostBindingHandler() { return ctx.onMouseenter(); })("mouseleave", function NavigationItemComponent_mouseleave_HostBindingHandler() { return ctx.onMouseleave(); });
|
|
186
|
+
} if (rf & 2) {
|
|
187
|
+
i0.ɵɵclassProp("active", ctx.isActive);
|
|
188
|
+
} }, inputs: { item: "item", level: "level" }, features: [i0.ɵɵNgOnChangesFeature], attrs: _c1, decls: 9, vars: 15, consts: [["routerLinkActive", "link-active", "matRipple", "", 3, "routerLink", "matTooltipDisabled", "matTooltip"], ["class", "icon", 3, "rxapIcon", 4, "ngIf"], [3, "ngIf"], ["rxap-navigation", "", "class", "sub-items", "fxFlex", "nogrow", 3, "items", "level", 4, "ngIf"], ["navigationOverlay", ""], [1, "icon", 3, "rxapIcon"], [1, "label"], ["rxap-navigation", "", "fxFlex", "nogrow", 1, "sub-items", 3, "items", "level"], [1, "navigation-overlay-container", "mat-elevation-z1", 3, "mouseenter", "mouseleave"], [4, "ngFor", "ngForOf"], ["class", "navigation-link mat-body-2 mat-body-strong", "matRipple", "", 3, "routerLink", 4, "ngIf"], ["matRipple", "", 1, "navigation-link", "mat-body-2", "mat-body-strong", 3, "routerLink"]], template: function NavigationItemComponent_Template(rf, ctx) { if (rf & 1) {
|
|
189
|
+
i0.ɵɵelementStart(0, "a", 0);
|
|
190
|
+
i0.ɵɵpipe(1, "async");
|
|
191
|
+
i0.ɵɵtemplate(2, NavigationItemComponent_mat_icon_2_Template, 1, 1, "mat-icon", 1);
|
|
192
|
+
i0.ɵɵtemplate(3, NavigationItemComponent_ng_template_3_Template, 2, 1, "ng-template", 2);
|
|
193
|
+
i0.ɵɵpipe(4, "async");
|
|
194
|
+
i0.ɵɵelementEnd();
|
|
195
|
+
i0.ɵɵtemplate(5, NavigationItemComponent_ul_5_Template, 1, 3, "ul", 3);
|
|
196
|
+
i0.ɵɵpipe(6, "async");
|
|
197
|
+
i0.ɵɵtemplate(7, NavigationItemComponent_ng_template_7_Template, 3, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
|
198
|
+
} if (rf & 2) {
|
|
199
|
+
i0.ɵɵclassMapInterpolate1("navigation-link mat-body-2 mat-body-strong navigation-level-", ctx.level, "");
|
|
200
|
+
i0.ɵɵproperty("routerLink", ctx.item.routerLink)("matTooltipDisabled", !i0.ɵɵpipeBind1(1, 9, ctx.sidenav.collapsed$))("matTooltip", ctx.item.label);
|
|
201
|
+
i0.ɵɵadvance(2);
|
|
202
|
+
i0.ɵɵproperty("ngIf", ctx.item.icon);
|
|
203
|
+
i0.ɵɵadvance(1);
|
|
204
|
+
i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(4, 11, ctx.sidenav.collapsed$));
|
|
205
|
+
i0.ɵɵadvance(2);
|
|
206
|
+
i0.ɵɵproperty("ngIf", ctx.routerLinkActive.isActive && !i0.ɵɵpipeBind1(6, 13, ctx.sidenav.collapsed$) && ctx.children);
|
|
207
|
+
} }, styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"], encapsulation: 2, data: { animation: [
|
|
208
|
+
trigger('sub-nav', [
|
|
209
|
+
transition(':enter', [
|
|
210
|
+
style({ display: 'block', height: '0', overflow: 'hidden' }),
|
|
211
|
+
animate(150, style({ height: '*' })),
|
|
212
|
+
]),
|
|
213
|
+
transition(':leave', [
|
|
214
|
+
style({ overflow: 'hidden' }),
|
|
215
|
+
animate(300, style({ height: '0' })),
|
|
216
|
+
style({ display: 'none' }),
|
|
217
|
+
]),
|
|
218
|
+
]),
|
|
219
|
+
] }, changeDetection: 0 }); }
|
|
220
|
+
}
|
|
221
|
+
__decorate([
|
|
222
|
+
Required,
|
|
223
|
+
__metadata("design:type", Object)
|
|
224
|
+
], NavigationItemComponent.prototype, "item", void 0);
|
|
225
|
+
__decorate([
|
|
226
|
+
DebounceCall(100),
|
|
227
|
+
__metadata("design:type", Function),
|
|
228
|
+
__metadata("design:paramtypes", []),
|
|
229
|
+
__metadata("design:returntype", void 0)
|
|
230
|
+
], NavigationItemComponent.prototype, "onMouseleave", null);
|
|
231
|
+
export { NavigationItemComponent };
|
|
232
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationItemComponent, [{
|
|
233
|
+
type: Component,
|
|
234
|
+
args: [{ selector: 'li[rxap-navigation-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
235
|
+
class: 'rxap-navigation-item',
|
|
236
|
+
}, animations: [
|
|
237
|
+
trigger('sub-nav', [
|
|
238
|
+
transition(':enter', [
|
|
239
|
+
style({ display: 'block', height: '0', overflow: 'hidden' }),
|
|
240
|
+
animate(150, style({ height: '*' })),
|
|
241
|
+
]),
|
|
242
|
+
transition(':leave', [
|
|
243
|
+
style({ overflow: 'hidden' }),
|
|
244
|
+
animate(300, style({ height: '0' })),
|
|
245
|
+
style({ display: 'none' }),
|
|
246
|
+
]),
|
|
247
|
+
]),
|
|
248
|
+
], template: "<a [routerLink]=\"item.routerLink\"\n routerLinkActive=\"link-active\"\n [matTooltipDisabled]=\"!(sidenav.collapsed$ | async)\"\n [matTooltip]=\"item.label\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\" matRipple>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"!(sidenav.collapsed$ | async)\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul rxap-navigation\n *ngIf=\"routerLinkActive.isActive && !(sidenav.collapsed$ | async) && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div class=\"navigation-overlay-container mat-elevation-z1\"\n (mouseenter)=\"lockeOverlay = true\" (mouseleave)=\"lockeOverlay = false; onMouseleave()\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\" class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"] }]
|
|
249
|
+
}], function () { return [{ type: i1.Router, decorators: [{
|
|
250
|
+
type: Inject,
|
|
251
|
+
args: [Router]
|
|
252
|
+
}] }, { type: i2.SidenavComponentService, decorators: [{
|
|
253
|
+
type: Inject,
|
|
254
|
+
args: [SidenavComponentService]
|
|
255
|
+
}] }, { type: i0.ElementRef, decorators: [{
|
|
256
|
+
type: Inject,
|
|
257
|
+
args: [ElementRef]
|
|
258
|
+
}] }, { type: i0.Renderer2, decorators: [{
|
|
259
|
+
type: Inject,
|
|
260
|
+
args: [Renderer2]
|
|
261
|
+
}] }, { type: i3.Overlay, decorators: [{
|
|
262
|
+
type: Inject,
|
|
263
|
+
args: [Overlay]
|
|
264
|
+
}] }, { type: i0.ViewContainerRef, decorators: [{
|
|
265
|
+
type: Inject,
|
|
266
|
+
args: [ViewContainerRef]
|
|
267
|
+
}] }]; }, { routerLinkActive: [{
|
|
268
|
+
type: ViewChild,
|
|
269
|
+
args: [RouterLinkActive, { static: true }]
|
|
270
|
+
}], item: [{
|
|
271
|
+
type: Input
|
|
272
|
+
}], level: [{
|
|
273
|
+
type: Input
|
|
274
|
+
}], isActive: [{
|
|
275
|
+
type: HostBinding,
|
|
276
|
+
args: ['class.active']
|
|
277
|
+
}], _navigationOverlay: [{
|
|
278
|
+
type: ViewChild,
|
|
279
|
+
args: ['navigationOverlay']
|
|
280
|
+
}], onMouseenter: [{
|
|
281
|
+
type: HostListener,
|
|
282
|
+
args: ['mouseenter']
|
|
283
|
+
}], onMouseleave: [{
|
|
284
|
+
type: HostListener,
|
|
285
|
+
args: ['mouseleave']
|
|
286
|
+
}] }); })();
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCx1QkFBdUIsRUFHdkIsU0FBUyxFQUdULFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxZQUFZLEVBRVosV0FBVyxFQUNYLGdCQUFnQixFQUVoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFDTCxNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLElBQUksR0FDTCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxF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Q3JDLENBQUM7d0JBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTs0QkFDbkIsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDOzRCQUM3QixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDOzRCQUNwQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7eUJBQzNCLENBQUM7cUJBQ0gsQ0FBQztpQkFDSDs7c0JBa0NFLE1BQU07dUJBQUMsTUFBTTs7c0JBRWIsTUFBTTt1QkFBQyx1QkFBdUI7O3NCQUU5QixNQUFNO3VCQUFDLFVBQVU7O3NCQUVqQixNQUFNO3VCQUFDLFNBQVM7O3NCQUVoQixNQUFNO3VCQUFDLE9BQU87O3NCQUVkLE1BQU07dUJBQUMsZ0JBQWdCO3dCQXBDbkIsZ0JBQWdCO2tCQUR0QixTQUFTO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUt0QyxJQUFJO2tCQUZWLEtBQUs7WUFLQyxLQUFLO2tCQURYLEtBQUs7WUFJQyxRQUFRO2tCQURkLFdBQVc7bUJBQUMsY0FBYztZQUluQixrQkFBa0I7a0JBRHpCLFNBQVM7bUJBQUMsbUJBQW1CO1lBa0Z2QixZQUFZO2tCQURsQixZQUFZO21CQUFDLFlBQVk7WUE4Qm5CLFlBQVk7a0JBRmxCLFlBQVk7bUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgT25EZXN0cm95LFxuICBBZnRlclZpZXdJbml0LFxuICBIb3N0QmluZGluZyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgSG9zdExpc3RlbmVyLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXF1aXJlZCwgRGVib3VuY2VDYWxsIH0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0eWxlLCB0cmFuc2l0aW9uLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBOYXZpZ2F0aW9uSXRlbSxcbiAgTmF2aWdhdGlvbixcbiAgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxufSBmcm9tICcuLi9uYXZpZ2F0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZmlsdGVyLFxuICB0YXAsXG4gIGRlbGF5LFxuICBzdGFydFdpdGgsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBza2lwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTaWRlbmF2Q29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGlbcnhhcC1uYXZpZ2F0aW9uLWl0ZW1dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAncnhhcC1uYXZpZ2F0aW9uLWl0ZW0nLFxuICB9LFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignc3ViLW5hdicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnYmxvY2snLCBoZWlnaHQ6ICcwJywgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxuICAgICAgICBhbmltYXRlKDE1MCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IGhlaWdodDogJzAnIH0pKSxcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkl0ZW1Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0XG57XG4gIHB1YmxpYyBjaGlsZHJlbjogTmF2aWdhdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoUm91dGVyTGlua0FjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHJvdXRlckxpbmtBY3RpdmUhOiBSb3V0ZXJMaW5rQWN0aXZlO1xuXG4gIEBJbnB1dCgpXG4gIEBSZXF1aXJlZFxuICBwdWJsaWMgaXRlbSE6IE5hdmlnYXRpb25JdGVtO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsZXZlbDogbnVtYmVyID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpXG4gIHB1YmxpYyBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ25hdmlnYXRpb25PdmVybGF5JylcbiAgcHJpdmF0ZSBfbmF2aWdhdGlvbk92ZXJsYXkhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIF9vdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBfZW1iZWRkZWRWaWV3UmVmPzogRW1iZWRkZWRWaWV3UmVmPGFueT47XG5cbiAgLyoqXG4gICAqIGluZGljYXRlcyB0aGUgbW91c2UgaXMgb3ZlciB0aGVcbiAgICovXG4gIHB1YmxpYyBsb2NrZU92ZXJsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFJvdXRlcilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UpXG4gICAgcHVibGljIHJlYWRvbmx5IHNpZGVuYXY6IFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlLFxuICAgIEBJbmplY3QoRWxlbWVudFJlZilcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChSZW5kZXJlcjIpXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBJbmplY3QoT3ZlcmxheSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5pdGVtKSB7XG4gICAgICBjb25zdCBpdGVtOiBOYXZpZ2F0aW9uSXRlbSA9IGNoYW5nZXMuaXRlbS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmNoaWxkcmVuID1cbiAgICAgICAgaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA/IGl0ZW0uY2hpbGRyZW4gOiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgIHN0YXJ0V2l0aCh0cnVlKSxcbiAgICAgICAgICBkZWxheSgxMDApLFxuICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5yb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5zaWRlbmF2LmNvbGxhcHNlZCQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBvbmx5IGNsb3NlIHRoZSBvdmVybGF5IGlmIHNpZGVuYXYgY29sbGFwc2VkXG4gICAgICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnYWN0aXZlJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAvLyBkZXRhY2ggdGhlIG5hdmlnYXRpb24gb3ZlcmxheSBpZiB0aGUgc2lkZW5hdiBjb2xsYXBzZWRcbiAgICAvLyBzdGF0ZSBpcyBjaGFuZ2VkXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc2lkZW5hdi5jb2xsYXBzZWQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKCkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIHB1YmxpYyBvbk1vdXNlZW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGlmICghdGhpcy5yb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlIHx8IHRoaXMuc2lkZW5hdi5jb2xsYXBzZWQkLnZhbHVlKSB7XG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYpXG4gICAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICB0aGlzLl9lbWJlZGRlZFZpZXdSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChcbiAgICAgICAgICAgIG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9uYXZpZ2F0aW9uT3ZlcmxheSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgQERlYm91bmNlQ2FsbCgxMDApXG4gIHB1YmxpYyBvbk1vdXNlbGVhdmUoKSB7XG4gICAgaWYgKCF0aGlzLmxvY2tlT3ZlcmxheSkge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVnaW9uIHR5cGUgc2F2ZSBpdGVtIHByb3BlcnR5XG5cbiAgLy8gcmVxdWlyZWQgdG8gY2hlY2sgdGhlIHR5cGUgb2YgdGhlIGl0ZW0gcHJvcGVydHkgaW4gdGhlIG5nRm9yIGxvb3BcblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW1cbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0ge1xuICAgIHJldHVybiAoaXRlbSBhcyBhbnkpWydkaXZpZGVyJ107XG4gIH1cblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbVxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25JdGVtIHtcbiAgICByZXR1cm4gIXRoaXMuaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgYXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbVxuICApOiBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgaWYgKCF0aGlzLmlzTmF2aWdhdGlvbkl0ZW0oaXRlbSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGl0ZW0gaXMgbm90IGEgTmF2aWdhdGlvbkl0ZW0nKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiIsIjxhIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICByb3V0ZXJMaW5rQWN0aXZlPVwibGluay1hY3RpdmVcIlxuICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCIhKHNpZGVuYXYuY29sbGFwc2VkJCB8IGFzeW5jKVwiXG4gICBbbWF0VG9vbHRpcF09XCJpdGVtLmxhYmVsXCJcbiAgIGNsYXNzPVwibmF2aWdhdGlvbi1saW5rIG1hdC1ib2R5LTIgbWF0LWJvZHktc3Ryb25nIG5hdmlnYXRpb24tbGV2ZWwte3tsZXZlbH19XCIgbWF0UmlwcGxlPlxuICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLmljb25cIiBbcnhhcEljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJpY29uXCI+PC9tYXQtaWNvbj5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiEoc2lkZW5hdi5jb2xsYXBzZWQkIHwgYXN5bmMpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gIDwvbmctdGVtcGxhdGU+XG48L2E+XG5cbjx1bCByeGFwLW5hdmlnYXRpb25cbiAgICAqbmdJZj1cInJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmUgJiYgIShzaWRlbmF2LmNvbGxhcHNlZCQgfCBhc3luYykgJiYgY2hpbGRyZW5cIlxuICAgIFtAc3ViLW5hdl1cbiAgICBbaXRlbXNdPVwiY2hpbGRyZW5cIlxuICAgIFtsZXZlbF09XCJsZXZlbCArIDFcIlxuICAgIGNsYXNzPVwic3ViLWl0ZW1zXCJcbiAgICBmeEZsZXg9XCJub2dyb3dcIlxuPlxuPC91bD5cblxuPG5nLXRlbXBsYXRlICNuYXZpZ2F0aW9uT3ZlcmxheT5cbiAgPGRpdiBjbGFzcz1cIm5hdmlnYXRpb24tb3ZlcmxheS1jb250YWluZXIgbWF0LWVsZXZhdGlvbi16MVwiXG4gICAgICAgKG1vdXNlZW50ZXIpPVwibG9ja2VPdmVybGF5ID0gdHJ1ZVwiIChtb3VzZWxlYXZlKT1cImxvY2tlT3ZlcmxheSA9IGZhbHNlOyBvbk1vdXNlbGVhdmUoKVwiPlxuICAgIDx1bD5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY2hpbGRyZW5cIj5cbiAgICAgICAgPGEgKm5nSWY9XCJpc05hdmlnYXRpb25JdGVtKGNoaWxkKVwiIFtyb3V0ZXJMaW5rXT1cImFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLnJvdXRlckxpbmtcIlxuICAgICAgICAgICBjbGFzcz1cIm5hdmlnYXRpb24tbGluayBtYXQtYm9keS0yIG1hdC1ib2R5LXN0cm9uZ1wiIG1hdFJpcHBsZT5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJhc05hdmlnYXRpb25JdGVtKGNoaWxkKS5pY29uXCIgW3J4YXBJY29uXT1cImFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLmljb25cIiBjbGFzcz1cImljb25cIj48L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyBhc05hdmlnYXRpb25JdGVtKGNoaWxkKS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|