@indice/ng-components 0.2.141-beta → 0.2.141
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/_styles.css +69 -72
- package/{esm2015/indice-ng-components.js → esm2020/indice-ng-components.mjs} +0 -0
- package/{esm2015/lib/controls/avatar-initials/avatar-initials.component.js → esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs} +5 -8
- package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +20 -0
- package/esm2020/lib/controls/date-picker/date-picker.component.mjs +260 -0
- package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +68 -0
- package/{esm2015/lib/controls/kpi-tile/kpi-tile.component.js → esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs} +5 -8
- package/{esm2015/lib/controls/list-view/list-column.component.js → esm2020/lib/controls/list-view/list-column.component.mjs} +3 -3
- package/{esm2015/lib/controls/list-view/list-details-section.component.js → esm2020/lib/controls/list-view/list-details-section.component.mjs} +3 -3
- package/{esm2015/lib/controls/list-view/list-tile.component.js → esm2020/lib/controls/list-view/list-tile.component.mjs} +3 -3
- package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +29 -0
- package/esm2020/lib/controls/list-view/list-view.component.mjs +183 -0
- package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +37 -0
- package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +77 -0
- package/{esm2015/lib/controls/pager/pager.component.js → esm2020/lib/controls/pager/pager.component.mjs} +5 -8
- package/esm2020/lib/controls/side-pane/side-pane.component.mjs +72 -0
- package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +25 -0
- package/{esm2015/lib/controls/toaster/toaster-container.component.js → esm2020/lib/controls/toaster/toaster-container.component.mjs} +5 -8
- package/esm2020/lib/controls/toaster/toaster.component.mjs +31 -0
- package/{esm2015/lib/controls/toggle/toggle.component.js → esm2020/lib/controls/toggle/toggle.component.mjs} +6 -10
- package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +3 -3
- package/{esm2015/lib/directives/dynamic-component-host.directive.js → esm2020/lib/directives/dynamic-component-host.directive.mjs} +3 -3
- package/esm2020/lib/helpers/base-list.component.mjs +181 -0
- package/{esm2015/lib/icons.js → esm2020/lib/icons.mjs} +0 -0
- package/{esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js → esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs} +5 -8
- package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +135 -0
- package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +101 -0
- package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +80 -0
- package/{esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js → esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs} +5 -11
- package/{esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js → esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs} +5 -8
- package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +104 -0
- package/{esm2015/lib/ng-components.module.js → esm2020/lib/ng-components.module.mjs} +12 -12
- package/{esm2015/lib/pages/auth/auth-callback/auth-callback.component.js → esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs} +6 -10
- package/{esm2015/lib/pages/auth/auth-renew/auth-renew.component.js → esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs} +3 -3
- package/{esm2015/lib/pages/auth/logged-out/logged-out.component.js → esm2020/lib/pages/auth/logged-out/logged-out.component.mjs} +5 -9
- package/esm2020/lib/pages/http-status/error/error.component.mjs +17 -0
- package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +15 -0
- package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +14 -0
- package/{esm2015/lib/pipes/address.pipe.js → esm2020/lib/pipes/address.pipe.mjs} +3 -3
- package/{esm2015/lib/pipes/duration-format.pipe.js → esm2020/lib/pipes/duration-format.pipe.mjs} +3 -3
- package/{esm2015/lib/services/component-loader/component-loader-options.class.js → esm2020/lib/services/component-loader/component-loader-options.class.mjs} +0 -0
- package/esm2020/lib/services/component-loader/component-loader.class.mjs +188 -0
- package/{esm2015/lib/services/component-loader/component-loader.factory.js → esm2020/lib/services/component-loader/component-loader.factory.mjs} +3 -3
- package/{esm2015/lib/services/component-loader/content-ref.class.js → esm2020/lib/services/component-loader/content-ref.class.mjs} +0 -0
- package/{esm2015/lib/services/modal-service/modal-backdrop-component.js → esm2020/lib/services/modal-service/modal-backdrop-component.mjs} +5 -5
- package/esm2020/lib/services/modal-service/modal-container-component.mjs +126 -0
- package/{esm2015/lib/services/modal-service/modal-options.class.js → esm2020/lib/services/modal-service/modal-options.class.mjs} +3 -3
- package/esm2020/lib/services/modal-service/modal-service.mjs +219 -0
- package/{esm2015/lib/services/modal-service/modal-styles.class.js → esm2020/lib/services/modal-service/modal-styles.class.mjs} +0 -0
- package/{esm2015/lib/services/modal-service/modal.class.js → esm2020/lib/services/modal-service/modal.class.mjs} +3 -3
- package/{esm2015/lib/services/toaster.service.js → esm2020/lib/services/toaster.service.mjs} +3 -3
- package/esm2020/lib/tokens.mjs +5 -0
- package/esm2020/lib/types.mjs +117 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -2
- package/fesm2015/{indice-ng-components.js → indice-ng-components.mjs} +408 -423
- package/fesm2015/indice-ng-components.mjs.map +1 -0
- package/fesm2020/indice-ng-components.mjs +3225 -0
- package/fesm2020/indice-ng-components.mjs.map +1 -0
- package/lib/controls/nav-links-list/nav-links-list.component.d.ts +15 -0
- package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +23 -0
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +21 -27
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +3 -4
- package/lib/layouts/views/form-layout/form-layout.component.d.ts +2 -3
- package/lib/ng-components.module.d.ts +10 -7
- package/lib/tokens.d.ts +1 -0
- package/lib/types.d.ts +28 -10
- package/package.json +21 -8
- package/public-api.d.ts +1 -1
- package/bundles/indice-ng-components.umd.js +0 -3829
- package/bundles/indice-ng-components.umd.js.map +0 -1
- package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +0 -23
- package/esm2015/lib/controls/date-picker/date-picker.component.js +0 -269
- package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +0 -72
- package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +0 -32
- package/esm2015/lib/controls/list-view/list-view.component.js +0 -186
- package/esm2015/lib/controls/side-pane/side-pane.component.js +0 -76
- package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +0 -29
- package/esm2015/lib/controls/toaster/toaster.component.js +0 -34
- package/esm2015/lib/helpers/base-list.component.js +0 -182
- package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +0 -146
- package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +0 -104
- package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +0 -86
- package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +0 -110
- package/esm2015/lib/pages/http-status/error/error.component.js +0 -20
- package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +0 -18
- package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +0 -17
- package/esm2015/lib/pipes/obs-with-status.pipe.js +0 -26
- package/esm2015/lib/services/component-loader/component-loader.class.js +0 -192
- package/esm2015/lib/services/modal-service/modal-container-component.js +0 -128
- package/esm2015/lib/services/modal-service/modal-service.js +0 -220
- package/esm2015/lib/services/notifications.service.js +0 -37
- package/esm2015/lib/tokens.js +0 -4
- package/esm2015/lib/types.js +0 -114
- package/fesm2015/indice-ng-components.js.map +0 -1
- package/lib/pipes/obs-with-status.pipe.d.ts +0 -13
- package/lib/services/notifications.service.d.ts +0 -14
|
@@ -7,16 +7,13 @@ export class ShellFooterComponent {
|
|
|
7
7
|
this.links = links;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
ShellFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11
|
-
ShellFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10
|
+
ShellFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ShellFooterComponent, deps: [{ token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
ShellFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ShellFooterComponent, selector: "lib-shell-footer", ngImport: i0, template: "<footer class=\"shell-footer-component-container\">\r\n <div class=\"shell-footer-paddings\">\r\n <div class=\"shell-footer-component-container-inner\">\r\n <div class=\"shell-footer-sections-container\">\r\n <div class=\"shell-footer-section\">\r\n <img class=\"shell-footer-logo-h\" src=\"assets/images/branding/indice.png\" alt=\"INDICE logo\" />\r\n <nav class=\"mt-4\">\r\n <ul class=\"space-y-2\">\r\n <ng-container *ngFor=\"let link of links.brand | async\">\r\n <li>\r\n <a [href]=\"link.path\" class=\"shell-footer-link\">{{ link.text }}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div class=\"shell-footer-section-links\">\r\n <h5 class=\"shell-footer-section-title\">Legal</h5>\r\n <nav class=\"mt-4\">\r\n <ul class=\"grid lg:grid-cols-2\">\r\n <ng-container *ngFor=\"let link of links.legal | async\">\r\n <li class=\"mb-2\">\r\n <a [href]=\"link.path\" class=\"shell-footer-link\">{{ link.text }}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div class=\"shell-footer-section-links\">\r\n <h5 class=\"shell-footer-section-title\">Follow us</h5>\r\n <nav class=\"mt-4\">\r\n <ul class=\"grid lg:grid-cols-2\">\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path d=\"M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84\"/>\r\n </svg>\r\n <span> Twitter </span>\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path fill-rule=\"evenodd\" d=\"M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z\" clip-rule=\"evenodd\"/>\r\n </svg>\r\n <span> Instagram </span>\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" >\r\n <path fill-rule=\"evenodd\" d=\"M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z\" clip-rule=\"evenodd\"/>\r\n </svg>\r\n <span> Facebook </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"shell-footer-copyright\">\r\n <!--<nav class=\"flex flex-wrap justify-center space-x-6\">\r\n <a href=\"#\" class=\"font-normal text-sm hover:text-gray-100 mb-2\">Cookie settings</a>\r\n </nav>-->\r\n <p class=\"text-sm text-center sm:text-right\">\r\n \u00A9 2021 INDICE. All rights reserved.\r\n </p>\r\n </div>\r\n </div>\r\n</footer>\r\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i1.AsyncPipe } });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ShellFooterComponent, decorators: [{
|
|
13
13
|
type: Component,
|
|
14
|
-
args: [{
|
|
15
|
-
selector: 'lib-shell-footer',
|
|
16
|
-
templateUrl: './shell-footer.component.html'
|
|
17
|
-
}]
|
|
14
|
+
args: [{ selector: 'lib-shell-footer', template: "<footer class=\"shell-footer-component-container\">\r\n <div class=\"shell-footer-paddings\">\r\n <div class=\"shell-footer-component-container-inner\">\r\n <div class=\"shell-footer-sections-container\">\r\n <div class=\"shell-footer-section\">\r\n <img class=\"shell-footer-logo-h\" src=\"assets/images/branding/indice.png\" alt=\"INDICE logo\" />\r\n <nav class=\"mt-4\">\r\n <ul class=\"space-y-2\">\r\n <ng-container *ngFor=\"let link of links.brand | async\">\r\n <li>\r\n <a [href]=\"link.path\" class=\"shell-footer-link\">{{ link.text }}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div class=\"shell-footer-section-links\">\r\n <h5 class=\"shell-footer-section-title\">Legal</h5>\r\n <nav class=\"mt-4\">\r\n <ul class=\"grid lg:grid-cols-2\">\r\n <ng-container *ngFor=\"let link of links.legal | async\">\r\n <li class=\"mb-2\">\r\n <a [href]=\"link.path\" class=\"shell-footer-link\">{{ link.text }}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div class=\"shell-footer-section-links\">\r\n <h5 class=\"shell-footer-section-title\">Follow us</h5>\r\n <nav class=\"mt-4\">\r\n <ul class=\"grid lg:grid-cols-2\">\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path d=\"M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84\"/>\r\n </svg>\r\n <span> Twitter </span>\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path fill-rule=\"evenodd\" d=\"M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z\" clip-rule=\"evenodd\"/>\r\n </svg>\r\n <span> Instagram </span>\r\n </a>\r\n </li>\r\n <li class=\"mb-2\">\r\n <a href=\"#\" class=\"shell-footer-social\">\r\n <svg class=\"shell-footer-social-icon\" aria-hidden=\"true\" fill=\"currentColor\" viewBox=\"0 0 24 24\" >\r\n <path fill-rule=\"evenodd\" d=\"M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z\" clip-rule=\"evenodd\"/>\r\n </svg>\r\n <span> Facebook </span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"shell-footer-copyright\">\r\n <!--<nav class=\"flex flex-wrap justify-center space-x-6\">\r\n <a href=\"#\" class=\"font-normal text-sm hover:text-gray-100 mb-2\">Cookie settings</a>\r\n </nav>-->\r\n <p class=\"text-sm text-center sm:text-right\">\r\n \u00A9 2021 INDICE. All rights reserved.\r\n </p>\r\n </div>\r\n </div>\r\n</footer>\r\n" }]
|
|
18
15
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
19
16
|
type: Inject,
|
|
20
17
|
args: [APP_LINKS]
|
|
21
18
|
}] }]; } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9sYXlvdXRzL3NoZWxsL3NoZWxsLWZvb3Rlci9zaGVsbC1mb290ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2xheW91dHMvc2hlbGwvc2hlbGwtZm9vdGVyL3NoZWxsLWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVM1QyxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLFlBQXNDLEtBQWdCO1FBQWhCLFVBQUssR0FBTCxLQUFLLENBQVc7SUFDdEQsQ0FBQzs7aUhBRlEsb0JBQW9CLGtCQUNULFNBQVM7cUdBRHBCLG9CQUFvQix3RENWakMsazRLQXVFQTsyRkQ3RGEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBTWIsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVBQX0xJTktTIH0gZnJvbSAnLi4vLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgSUFwcExpbmtzIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc2hlbGwtZm9vdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2hlbGwtZm9vdGVyLmNvbXBvbmVudC5odG1sJ1xyXG5cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTaGVsbEZvb3RlckNvbXBvbmVudCB7XHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQUF9MSU5LUykgcHVibGljIGxpbmtzOiBJQXBwTGlua3MpIHtcclxuICAgIH1cclxufVxyXG4iLCI8Zm9vdGVyIGNsYXNzPVwic2hlbGwtZm9vdGVyLWNvbXBvbmVudC1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwic2hlbGwtZm9vdGVyLXBhZGRpbmdzXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hlbGwtZm9vdGVyLWNvbXBvbmVudC1jb250YWluZXItaW5uZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNoZWxsLWZvb3Rlci1zZWN0aW9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGwtZm9vdGVyLXNlY3Rpb25cIj5cclxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJzaGVsbC1mb290ZXItbG9nby1oXCIgc3JjPVwiYXNzZXRzL2ltYWdlcy9icmFuZGluZy9pbmRpY2UucG5nXCIgYWx0PVwiSU5ESUNFIGxvZ29cIiAvPlxyXG4gICAgICAgICAgPG5hdiBjbGFzcz1cIm10LTRcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwic3BhY2UteS0yXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBsaW5rcy5icmFuZCB8IGFzeW5jXCI+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImxpbmsucGF0aFwiIGNsYXNzPVwic2hlbGwtZm9vdGVyLWxpbmtcIj57eyBsaW5rLnRleHQgfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxsLWZvb3Rlci1zZWN0aW9uLWxpbmtzXCI+XHJcbiAgICAgICAgICA8aDUgY2xhc3M9XCJzaGVsbC1mb290ZXItc2VjdGlvbi10aXRsZVwiPkxlZ2FsPC9oNT5cclxuICAgICAgICAgIDxuYXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImdyaWQgbGc6Z3JpZC1jb2xzLTJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIGxpbmtzLmxlZ2FsIHwgYXN5bmNcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibGluay5wYXRoXCIgY2xhc3M9XCJzaGVsbC1mb290ZXItbGlua1wiPnt7IGxpbmsudGV4dCB9fTwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICA8L25hdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGwtZm9vdGVyLXNlY3Rpb24tbGlua3NcIj5cclxuICAgICAgICAgIDxoNSBjbGFzcz1cInNoZWxsLWZvb3Rlci1zZWN0aW9uLXRpdGxlXCI+Rm9sbG93IHVzPC9oNT5cclxuICAgICAgICAgIDxuYXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImdyaWQgbGc6Z3JpZC1jb2xzLTJcIj5cclxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwic2hlbGwtZm9vdGVyLXNvY2lhbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICBjbGFzcz1cInNoZWxsLWZvb3Rlci1zb2NpYWwtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjI5IDIwLjI1MWM3LjU0NyAwIDExLjY3NS02LjI1MyAxMS42NzUtMTEuNjc1IDAtLjE3OCAwLS4zNTUtLjAxMi0uNTNBOC4zNDggOC4zNDggMCAwMDIyIDUuOTJhOC4xOSA4LjE5IDAgMDEtMi4zNTcuNjQ2IDQuMTE4IDQuMTE4IDAgMDAxLjgwNC0yLjI3IDguMjI0IDguMjI0IDAgMDEtMi42MDUuOTk2IDQuMTA3IDQuMTA3IDAgMDAtNi45OTMgMy43NDMgMTEuNjUgMTEuNjUgMCAwMS04LjQ1Ny00LjI4NyA0LjEwNiA0LjEwNiAwIDAwMS4yNyA1LjQ3N0E0LjA3MiA0LjA3MiAwIDAxMi44IDkuNzEzdi4wNTJhNC4xMDUgNC4xMDUgMCAwMDMuMjkyIDQuMDIyIDQuMDk1IDQuMDk1IDAgMDEtMS44NTMuMDcgNC4xMDggNC4xMDggMCAwMDMuODM0IDIuODVBOC4yMzMgOC4yMzMgMCAwMTIgMTguNDA3YTExLjYxNiAxMS42MTYgMCAwMDYuMjkgMS44NFwiLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPiBUd2l0dGVyIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJzaGVsbC1mb290ZXItc29jaWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzaGVsbC1mb290ZXItc29jaWFsLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyLjMxNSAyYzIuNDMgMCAyLjc4NC4wMTMgMy44MDguMDYgMS4wNjQuMDQ5IDEuNzkxLjIxOCAyLjQyNy40NjVhNC45MDIgNC45MDIgMCAwMTEuNzcyIDEuMTUzIDQuOTAyIDQuOTAyIDAgMDExLjE1MyAxLjc3MmMuMjQ3LjYzNi40MTYgMS4zNjMuNDY1IDIuNDI3LjA0OCAxLjA2Ny4wNiAxLjQwNy4wNiA0LjEyM3YuMDhjMCAyLjY0My0uMDEyIDIuOTg3LS4wNiA0LjA0My0uMDQ5IDEuMDY0LS4yMTggMS43OTEtLjQ2NSAyLjQyN2E0LjkwMiA0LjkwMiAwIDAxLTEuMTUzIDEuNzcyIDQuOTAyIDQuOTAyIDAgMDEtMS43NzIgMS4xNTNjLS42MzYuMjQ3LTEuMzYzLjQxNi0yLjQyNy40NjUtMS4wNjcuMDQ4LTEuNDA3LjA2LTQuMTIzLjA2aC0uMDhjLTIuNjQzIDAtMi45ODctLjAxMi00LjA0My0uMDYtMS4wNjQtLjA0OS0xLjc5MS0uMjE4LTIuNDI3LS40NjVhNC45MDIgNC45MDIgMCAwMS0xLjc3Mi0xLjE1MyA0LjkwMiA0LjkwMiAwIDAxLTEuMTUzLTEuNzcyYy0uMjQ3LS42MzYtLjQxNi0xLjM2My0uNDY1LTIuNDI3LS4wNDctMS4wMjQtLjA2LTEuMzc5LS4wNi0zLjgwOHYtLjYzYzAtMi40My4wMTMtMi43ODQuMDYtMy44MDguMDQ5LTEuMDY0LjIxOC0xLjc5MS40NjUtMi40MjdhNC45MDIgNC45MDIgMCAwMTEuMTUzLTEuNzcyQTQuOTAyIDQuOTAyIDAgMDE1LjQ1IDIuNTI1Yy42MzYtLjI0NyAxLjM2My0uNDE2IDIuNDI3LS40NjVDOC45MDEgMi4wMTMgOS4yNTYgMiAxMS42ODUgMmguNjN6bS0uMDgxIDEuODAyaC0uNDY4Yy0yLjQ1NiAwLTIuNzg0LjAxMS0zLjgwNy4wNTgtLjk3NS4wNDUtMS41MDQuMjA3LTEuODU3LjM0NC0uNDY3LjE4Mi0uOC4zOTgtMS4xNS43NDgtLjM1LjM1LS41NjYuNjgzLS43NDggMS4xNS0uMTM3LjM1My0uMy44ODItLjM0NCAxLjg1Ny0uMDQ3IDEuMDIzLS4wNTggMS4zNTEtLjA1OCAzLjgwN3YuNDY4YzAgMi40NTYuMDExIDIuNzg0LjA1OCAzLjgwNy4wNDUuOTc1LjIwNyAxLjUwNC4zNDQgMS44NTcuMTgyLjQ2Ni4zOTkuOC43NDggMS4xNS4zNS4zNS42ODMuNTY2IDEuMTUuNzQ4LjM1My4xMzcuODgyLjMgMS44NTcuMzQ0IDEuMDU0LjA0OCAxLjM3LjA1OCA0LjA0MS4wNThoLjA4YzIuNTk3IDAgMi45MTctLjAxIDMuOTYtLjA1OC45NzYtLjA0NSAxLjUwNS0uMjA3IDEuODU4LS4zNDQuNDY2LS4xODIuOC0uMzk4IDEuMTUtLjc0OC4zNS0uMzUuNTY2LS42ODMuNzQ4LTEuMTUuMTM3LS4zNTMuMy0uODgyLjM0NC0xLjg1Ny4wNDgtMS4wNTUuMDU4LTEuMzcuMDU4LTQuMDQxdi0uMDhjMC0yLjU5Ny0uMDEtMi45MTctLjA1OC0zLjk2LS4wNDUtLjk3Ni0uMjA3LTEuNTA1LS4zNDQtMS44NThhMy4wOTcgMy4wOTcgMCAwMC0uNzQ4LTEuMTUgMy4wOTggMy4wOTggMCAwMC0xLjE1LS43NDhjLS4zNTMtLjEzNy0uODgyLS4zLTEuODU3LS4zNDQtMS4wMjMtLjA0Ny0xLjM1MS0uMDU4LTMuODA3LS4wNTh6TTEyIDYuODY1YTUuMTM1IDUuMTM1IDAgMTEwIDEwLjI3IDUuMTM1IDUuMTM1IDAgMDEwLTEwLjI3em0wIDEuODAyYTMuMzMzIDMuMzMzIDAgMTAwIDYuNjY2IDMuMzMzIDMuMzMzIDAgMDAwLTYuNjY2em01LjMzOC0zLjIwNWExLjIgMS4yIDAgMTEwIDIuNCAxLjIgMS4yIDAgMDEwLTIuNHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4+IEluc3RhZ3JhbSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwic2hlbGwtZm9vdGVyLXNvY2lhbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwic2hlbGwtZm9vdGVyLXNvY2lhbC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMjIgMTJjMC01LjUyMy00LjQ3Ny0xMC0xMC0xMFMyIDYuNDc3IDIgMTJjMCA0Ljk5MSAzLjY1NyA5LjEyOCA4LjQzOCA5Ljg3OHYtNi45ODdoLTIuNTRWMTJoMi41NFY5Ljc5N2MwLTIuNTA2IDEuNDkyLTMuODkgMy43NzctMy44OSAxLjA5NCAwIDIuMjM4LjE5NSAyLjIzOC4xOTV2Mi40NmgtMS4yNmMtMS4yNDMgMC0xLjYzLjc3MS0xLjYzIDEuNTYyVjEyaDIuNzczbC0uNDQzIDIuODloLTIuMzN2Ni45ODhDMTguMzQzIDIxLjEyOCAyMiAxNi45OTEgMjIgMTJ6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuPiBGYWNlYm9vayA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvbmF2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNoZWxsLWZvb3Rlci1jb3B5cmlnaHRcIj5cclxuICAgICAgPCEtLTxuYXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNlbnRlciBzcGFjZS14LTZcIj5cclxuICAgICAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImZvbnQtbm9ybWFsIHRleHQtc20gaG92ZXI6dGV4dC1ncmF5LTEwMCBtYi0yXCI+Q29va2llIHNldHRpbmdzPC9hPlxyXG4gICAgPC9uYXY+LS0+XHJcbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWNlbnRlciBzbTp0ZXh0LXJpZ2h0XCI+XHJcbiAgICAgICAgwqkgMjAyMSBJTkRJQ0UuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Zvb3Rlcj5cclxuIl19
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { AuthService } from '@indice/ng-auth';
|
|
2
|
+
import { Component, Inject, Input } from '@angular/core';
|
|
3
|
+
import { ActivatedRoute, NavigationStart, Router } from '@angular/router';
|
|
4
|
+
import { filter, share } from 'rxjs/operators';
|
|
5
|
+
import { APP_LINKS, SHELL_CONFIG } from '../../../tokens';
|
|
6
|
+
import { of } from 'rxjs';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../../controls/nav-links-list/nav-links-list.component";
|
|
9
|
+
import * as i2 from "../../../controls/notifications-indicator/notifications-indicator.component";
|
|
10
|
+
import * as i3 from "@angular/router";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
import * as i5 from "../../../directives/click-outside.directive";
|
|
13
|
+
import * as i6 from "@indice/ng-auth";
|
|
14
|
+
export class ShellHeaderComponent {
|
|
15
|
+
constructor(authService, router, route, config, links) {
|
|
16
|
+
this.authService = authService;
|
|
17
|
+
this.router = router;
|
|
18
|
+
this.route = route;
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.links = links;
|
|
21
|
+
// tslint:disable-next-line:no-input-rename
|
|
22
|
+
this.sectionLinksPath = 'main';
|
|
23
|
+
// tslint:disable-next-line:no-input-rename
|
|
24
|
+
this.profileMenuVisible = true;
|
|
25
|
+
// tslint:disable-next-line:no-input-rename
|
|
26
|
+
this.showUserNameOnHeader = false;
|
|
27
|
+
// tslint:disable-next-line:no-input-rename
|
|
28
|
+
this.showAlerts = false;
|
|
29
|
+
this.border = true;
|
|
30
|
+
this.sectionLinks = of([]);
|
|
31
|
+
this.mobileMenuExpanded = false;
|
|
32
|
+
this.userMenuExpanded = false;
|
|
33
|
+
this.routerSub$ = null;
|
|
34
|
+
this.userSub$ = null;
|
|
35
|
+
this.statusSub$ = null;
|
|
36
|
+
this.user = null;
|
|
37
|
+
this.avatarName = null;
|
|
38
|
+
this.activeFragment = null;
|
|
39
|
+
this.routeSubject = this.router.events.pipe(filter((event) => event instanceof NavigationStart));
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
this.activeFragment = this.route.fragment.pipe(share());
|
|
43
|
+
this.sectionLinks = this.links[this.sectionLinksPath];
|
|
44
|
+
this.routerSub$ = this.routeSubject.subscribe((event) => {
|
|
45
|
+
this.mobileMenuExpanded = false;
|
|
46
|
+
this.userMenuExpanded = false;
|
|
47
|
+
});
|
|
48
|
+
this.authService.loadUser().subscribe((user) => {
|
|
49
|
+
this.setCurrentUser(user);
|
|
50
|
+
}, error => {
|
|
51
|
+
console.error(error);
|
|
52
|
+
});
|
|
53
|
+
// Detect user changes and display / or not user info accordingly...
|
|
54
|
+
this.userSub$ = this.authService.user$.subscribe((user) => {
|
|
55
|
+
// console.log('ShellHeaderComponent user subscription');
|
|
56
|
+
this.setCurrentUser(user);
|
|
57
|
+
});
|
|
58
|
+
// set current lang if no current value from langs if any
|
|
59
|
+
if (!this.currentLang && this.langs && this.langs.length > 0) {
|
|
60
|
+
this.setCurrentLang(this.langs[0]);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
ngOnDestroy() {
|
|
64
|
+
if (this.routerSub$) {
|
|
65
|
+
this.routerSub$.unsubscribe();
|
|
66
|
+
}
|
|
67
|
+
// TODO: check authenticated user here before we start polling server status
|
|
68
|
+
if (this.statusSub$) {
|
|
69
|
+
this.statusSub$.unsubscribe();
|
|
70
|
+
}
|
|
71
|
+
if (this.userSub$) {
|
|
72
|
+
this.userSub$.unsubscribe();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// tslint:disable-next-line:typedef
|
|
76
|
+
onClickOutside($event) {
|
|
77
|
+
this.userMenuExpanded = false;
|
|
78
|
+
}
|
|
79
|
+
signin(event) {
|
|
80
|
+
if (event) {
|
|
81
|
+
event.preventDefault();
|
|
82
|
+
}
|
|
83
|
+
this.authService.signinRedirect();
|
|
84
|
+
}
|
|
85
|
+
setCurrentUser(user) {
|
|
86
|
+
this.user = user;
|
|
87
|
+
if (this.user && this.user.profile) {
|
|
88
|
+
this.avatarName = `${this.user.profile.given_name?.charAt(0)}${this.user.profile.family_name?.charAt(0)}`.toUpperCase();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
setCurrentLang(lang) {
|
|
92
|
+
this.currentLang = lang;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
ShellHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ShellHeaderComponent, deps: [{ token: AuthService }, { token: Router }, { token: ActivatedRoute }, { token: SHELL_CONFIG }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
+
ShellHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ShellHeaderComponent, selector: "lib-shell-header", inputs: { sectionLinksPath: ["section-links", "sectionLinksPath"], profileMenuVisible: ["profile-menu", "profileMenuVisible"], showUserNameOnHeader: ["show-userName", "showUserNameOnHeader"], showAlerts: ["show-alerts", "showAlerts"], langs: "langs", currentLang: ["current-lang", "currentLang"], border: "border" }, ngImport: i0, template: "<nav>\r\n <div class=\"shell-header-paddings\">\r\n <div [class]=\"border ? 'shell-header-border' : ''\">\r\n <div class=\"shell-header-menu-container\">\r\n <div class=\"shell-header-logo-container\">\r\n <div>\r\n <a href=\"#\" [routerLink]=\"['/']\"><img class=\"app-logo\" [src]=\"config.appLogo\" [alt]=\"config.appLogoAlt\" /></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shell-header-link-container\">\r\n <div class=\"shell-header-link-container-inner\">\r\n <lib-nav-links-list\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link'\"\r\n [link-active-class]=\"'nav-link-active'\">\r\n </lib-nav-links-list>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"langs && langs.length > 1 && currentLang\" class=\"shell-header-links-far-container\">\r\n <button class=\"text-blue-300 hover:text-blue-500\">\r\n <span>{{currentLang}}</span>\r\n <i class=\"text-xs ml-1 ms-Icon ms-Icon--ChevronDown\"></i>\r\n </button>\r\n </div>\r\n\r\n <div class=\"shell-header-md-visible\">\r\n <div class=\"shell-header-links-far-container\" (clickOutside)=\"onClickOutside($event)\">\r\n\r\n <lib-nav-links-list\r\n [links]=\"links.profileActions\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'shell-header-menu-rounded-button'\"\r\n [link-active-class]=\"'shell-header-menu-rounded-button-active'\">\r\n </lib-nav-links-list>\r\n\r\n <!-- <ng-container *ngFor=\"let link of links.profileActions | async\">\r\n <a class=\"shell-header-menu-rounded-button\"\r\n (clickOutside)=\"onClickOutside($event)\"\r\n [attr.href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\">\r\n <span class=\"sr-only\">{{ link.text }}</span>\r\n <i *ngIf=\"link.icon\" [class]=\"link.icon\"></i>\r\n </a>\r\n </ng-container> -->\r\n\r\n <!-- Username -->\r\n <div *ngIf=\"profileMenuVisible\" class=\"ml-2 relative\">\r\n <div [ngClass]=\"{'shell-header-profile': showUserNameOnHeader}\">\r\n <div *ngIf=\"user && showUserNameOnHeader\" class=\"shell-header-profile-userName\">\r\n {{ user.profile.name }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"showAlerts && user\" class=\"ml-2\">\r\n <lib-notifications-indicator></lib-notifications-indicator>\r\n </div>\r\n\r\n <!-- Profile dropdown -->\r\n <div *ngIf=\"profileMenuVisible\" class=\"ml-2 relative\" (clickOutside)=\"onClickOutside($event)\">\r\n <div [ngClass]=\"{'shell-header-profile': showUserNameOnHeader}\">\r\n <button type=\"button\" *ngIf=\"user\" (click)=\"userMenuExpanded = !userMenuExpanded\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">Open user menu</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">{{this.avatarName}}</span>\r\n </span>\r\n </button>\r\n\r\n <button type=\"button\"\r\n *ngIf=\"!user\"\r\n (click)=\"signin(null)\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">sign in</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\"><i class=\"ms-Icon ms-Icon--Signin\"></i></span>\r\n </span>\r\n </button>\r\n\r\n <div *ngIf=\"userMenuExpanded\"\r\n [ngClass]=\"showUserNameOnHeader ? 'shell-header-profile-dropdown-with-username' : 'shell-header-profile-dropdown'\"\r\n role=\"menu\"\r\n aria-orientation=\"vertical\"\r\n aria-labelledby=\"user-menu\">\r\n <lib-nav-links-list\r\n [links]=\"links.profile\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-profile'\"\r\n [link-active-class]=\"'nav-link-profile-active'\">\r\n </lib-nav-links-list>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mobile-menu-button-container\">\r\n <!-- Mobile menu button -->\r\n <button type=\"button\"\r\n (click)=\"mobileMenuExpanded = !mobileMenuExpanded\"\r\n class=\"mobile-menu-button\"\r\n aria-controls=\"mobile-menu\"\r\n [attr.aria-expanded]=\"mobileMenuExpanded\">\r\n <span class=\"sr-only\">Open main menu</span>\r\n <!--Heroicon name: outline/menu Menu open: \"hidden\", Menu closed: \"block\"-->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n [class]=\"mobileMenuExpanded ? 'hidden':'block h-6 w-6'\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M4 6h16M4 12h16M4 18h16\" />\r\n </svg>\r\n <!--Heroicon name: outline/x Menu open: \"block\", Menu closed: \"hidden\"-->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n [class]=\"mobileMenuExpanded ? 'block h-6 w-6':'hidden'\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Mobile menu, show/hide based on menu state. -->\r\n <div class=\"mobile-menu-container\" *ngIf=\"mobileMenuExpanded\" id=\"mobile-menu\">\r\n <lib-nav-links-list\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-mobile'\"\r\n [link-active-class]=\"'nav-link-mobile-active'\"\r\n [container-class]=\"'mobile-menu-link-container'\">\r\n </lib-nav-links-list>\r\n\r\n <div *ngIf=\"!user\">\r\n <a href=\"#\" (click)=\"signin($event)\" class=\"nav-link-mobile\">\r\n <i class=\"ms-Icon ms-Icon--Signin mr-2\"></i>\u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\r\n </a>\r\n </div>\r\n\r\n <div class=\"mobile-menu-user-info-container\" *ngIf=\"user\">\r\n <div class=\"mobile-menu-user-info-container-inner\">\r\n <div class=\"flex-shrink-0\">\r\n <span class=\"mobile-menu-avatar-container\">\r\n <span class=\"mobile-menu-avatar-name\">{{ this.avatarName }}</span>\r\n </span>\r\n </div>\r\n <div class=\"ml-3\">\r\n <div class=\"mobile-menu-user-name\">{{ user.profile.name }}</div>\r\n <div class=\"mobile-menu-user-email\">{{ user.profile.email }}</div>\r\n </div>\r\n <button class=\"mobile-menu-rounded-button\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <!-- Heroicon name: outline/bell -->\r\n <svg class=\"mobile-menu-rounded-button-icon-style\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <lib-nav-links-list\r\n [links]=\"links.profile\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-mobile'\"\r\n [link-active-class]=\"'nav-link-mobile-active'\"\r\n [container-class]=\"'mobile-menu-link-container'\">\r\n </lib-nav-links-list>\r\n </div>\r\n</nav>\r\n", components: [{ type: i1.NavLinksListComponent, selector: "lib-nav-links-list", inputs: ["links", "active-fragment", "link-class", "link-active-class", "container-class"] }, { type: i2.NotificationsIndicatorComponent, selector: "lib-notifications-indicator" }], directives: [{ type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ShellHeaderComponent, decorators: [{
|
|
98
|
+
type: Component,
|
|
99
|
+
args: [{ selector: 'lib-shell-header', template: "<nav>\r\n <div class=\"shell-header-paddings\">\r\n <div [class]=\"border ? 'shell-header-border' : ''\">\r\n <div class=\"shell-header-menu-container\">\r\n <div class=\"shell-header-logo-container\">\r\n <div>\r\n <a href=\"#\" [routerLink]=\"['/']\"><img class=\"app-logo\" [src]=\"config.appLogo\" [alt]=\"config.appLogoAlt\" /></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shell-header-link-container\">\r\n <div class=\"shell-header-link-container-inner\">\r\n <lib-nav-links-list\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link'\"\r\n [link-active-class]=\"'nav-link-active'\">\r\n </lib-nav-links-list>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"langs && langs.length > 1 && currentLang\" class=\"shell-header-links-far-container\">\r\n <button class=\"text-blue-300 hover:text-blue-500\">\r\n <span>{{currentLang}}</span>\r\n <i class=\"text-xs ml-1 ms-Icon ms-Icon--ChevronDown\"></i>\r\n </button>\r\n </div>\r\n\r\n <div class=\"shell-header-md-visible\">\r\n <div class=\"shell-header-links-far-container\" (clickOutside)=\"onClickOutside($event)\">\r\n\r\n <lib-nav-links-list\r\n [links]=\"links.profileActions\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'shell-header-menu-rounded-button'\"\r\n [link-active-class]=\"'shell-header-menu-rounded-button-active'\">\r\n </lib-nav-links-list>\r\n\r\n <!-- <ng-container *ngFor=\"let link of links.profileActions | async\">\r\n <a class=\"shell-header-menu-rounded-button\"\r\n (clickOutside)=\"onClickOutside($event)\"\r\n [attr.href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\">\r\n <span class=\"sr-only\">{{ link.text }}</span>\r\n <i *ngIf=\"link.icon\" [class]=\"link.icon\"></i>\r\n </a>\r\n </ng-container> -->\r\n\r\n <!-- Username -->\r\n <div *ngIf=\"profileMenuVisible\" class=\"ml-2 relative\">\r\n <div [ngClass]=\"{'shell-header-profile': showUserNameOnHeader}\">\r\n <div *ngIf=\"user && showUserNameOnHeader\" class=\"shell-header-profile-userName\">\r\n {{ user.profile.name }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"showAlerts && user\" class=\"ml-2\">\r\n <lib-notifications-indicator></lib-notifications-indicator>\r\n </div>\r\n\r\n <!-- Profile dropdown -->\r\n <div *ngIf=\"profileMenuVisible\" class=\"ml-2 relative\" (clickOutside)=\"onClickOutside($event)\">\r\n <div [ngClass]=\"{'shell-header-profile': showUserNameOnHeader}\">\r\n <button type=\"button\" *ngIf=\"user\" (click)=\"userMenuExpanded = !userMenuExpanded\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">Open user menu</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">{{this.avatarName}}</span>\r\n </span>\r\n </button>\r\n\r\n <button type=\"button\"\r\n *ngIf=\"!user\"\r\n (click)=\"signin(null)\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">sign in</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\"><i class=\"ms-Icon ms-Icon--Signin\"></i></span>\r\n </span>\r\n </button>\r\n\r\n <div *ngIf=\"userMenuExpanded\"\r\n [ngClass]=\"showUserNameOnHeader ? 'shell-header-profile-dropdown-with-username' : 'shell-header-profile-dropdown'\"\r\n role=\"menu\"\r\n aria-orientation=\"vertical\"\r\n aria-labelledby=\"user-menu\">\r\n <lib-nav-links-list\r\n [links]=\"links.profile\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-profile'\"\r\n [link-active-class]=\"'nav-link-profile-active'\">\r\n </lib-nav-links-list>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mobile-menu-button-container\">\r\n <!-- Mobile menu button -->\r\n <button type=\"button\"\r\n (click)=\"mobileMenuExpanded = !mobileMenuExpanded\"\r\n class=\"mobile-menu-button\"\r\n aria-controls=\"mobile-menu\"\r\n [attr.aria-expanded]=\"mobileMenuExpanded\">\r\n <span class=\"sr-only\">Open main menu</span>\r\n <!--Heroicon name: outline/menu Menu open: \"hidden\", Menu closed: \"block\"-->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n [class]=\"mobileMenuExpanded ? 'hidden':'block h-6 w-6'\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M4 6h16M4 12h16M4 18h16\" />\r\n </svg>\r\n <!--Heroicon name: outline/x Menu open: \"block\", Menu closed: \"hidden\"-->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n [class]=\"mobileMenuExpanded ? 'block h-6 w-6':'hidden'\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Mobile menu, show/hide based on menu state. -->\r\n <div class=\"mobile-menu-container\" *ngIf=\"mobileMenuExpanded\" id=\"mobile-menu\">\r\n <lib-nav-links-list\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-mobile'\"\r\n [link-active-class]=\"'nav-link-mobile-active'\"\r\n [container-class]=\"'mobile-menu-link-container'\">\r\n </lib-nav-links-list>\r\n\r\n <div *ngIf=\"!user\">\r\n <a href=\"#\" (click)=\"signin($event)\" class=\"nav-link-mobile\">\r\n <i class=\"ms-Icon ms-Icon--Signin mr-2\"></i>\u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\r\n </a>\r\n </div>\r\n\r\n <div class=\"mobile-menu-user-info-container\" *ngIf=\"user\">\r\n <div class=\"mobile-menu-user-info-container-inner\">\r\n <div class=\"flex-shrink-0\">\r\n <span class=\"mobile-menu-avatar-container\">\r\n <span class=\"mobile-menu-avatar-name\">{{ this.avatarName }}</span>\r\n </span>\r\n </div>\r\n <div class=\"ml-3\">\r\n <div class=\"mobile-menu-user-name\">{{ user.profile.name }}</div>\r\n <div class=\"mobile-menu-user-email\">{{ user.profile.email }}</div>\r\n </div>\r\n <button class=\"mobile-menu-rounded-button\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <!-- Heroicon name: outline/bell -->\r\n <svg class=\"mobile-menu-rounded-button-icon-style\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <lib-nav-links-list\r\n [links]=\"links.profile\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-mobile'\"\r\n [link-active-class]=\"'nav-link-mobile-active'\"\r\n [container-class]=\"'mobile-menu-link-container'\">\r\n </lib-nav-links-list>\r\n </div>\r\n</nav>\r\n" }]
|
|
100
|
+
}], ctorParameters: function () { return [{ type: i6.AuthService, decorators: [{
|
|
101
|
+
type: Inject,
|
|
102
|
+
args: [AuthService]
|
|
103
|
+
}] }, { type: i3.Router, decorators: [{
|
|
104
|
+
type: Inject,
|
|
105
|
+
args: [Router]
|
|
106
|
+
}] }, { type: i3.ActivatedRoute, decorators: [{
|
|
107
|
+
type: Inject,
|
|
108
|
+
args: [ActivatedRoute]
|
|
109
|
+
}] }, { type: undefined, decorators: [{
|
|
110
|
+
type: Inject,
|
|
111
|
+
args: [SHELL_CONFIG]
|
|
112
|
+
}] }, { type: undefined, decorators: [{
|
|
113
|
+
type: Inject,
|
|
114
|
+
args: [APP_LINKS]
|
|
115
|
+
}] }]; }, propDecorators: { sectionLinksPath: [{
|
|
116
|
+
type: Input,
|
|
117
|
+
args: ['section-links']
|
|
118
|
+
}], profileMenuVisible: [{
|
|
119
|
+
type: Input,
|
|
120
|
+
args: ['profile-menu']
|
|
121
|
+
}], showUserNameOnHeader: [{
|
|
122
|
+
type: Input,
|
|
123
|
+
args: ['show-userName']
|
|
124
|
+
}], showAlerts: [{
|
|
125
|
+
type: Input,
|
|
126
|
+
args: ['show-alerts']
|
|
127
|
+
}], langs: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], currentLang: [{
|
|
130
|
+
type: Input,
|
|
131
|
+
args: ['current-lang']
|
|
132
|
+
}], border: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}] } });
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9sYXlvdXRzL3NoZWxsL3NoZWxsLWhlYWRlci9zaGVsbC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2xheW91dHMvc2hlbGwvc2hlbGwtaGVhZGVyL3NoZWxsLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RSxPQUFPLEVBQUUsY0FBYyxFQUFTLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUF5RCxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBUWpGLE1BQU0sT0FBTyxvQkFBb0I7SUF3Qi9CLFlBQ2lDLFdBQXdCLEVBQzdCLE1BQWMsRUFDTixLQUFxQixFQUMxQixNQUFXLEVBQ2QsS0FBVTtRQUpMLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDTixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFLO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBSztRQTVCdEMsMkNBQTJDO1FBQ25CLHFCQUFnQixHQUFHLE1BQU0sQ0FBQztRQUNsRCwy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QUMsYUFBYTtnQkFDWCxLQUFLO3NCQUFiLEtBQUs7Z0JBRWlCLFdBQVc7c0JBQWpDLEtBQUs7dUJBQUMsY0FBYztnQkFDWixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BpbmRpY2UvbmctYXV0aCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJ29pZGMtY2xpZW50JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIEV2ZW50LCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZpbHRlciwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5hdkxpbmsgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XHJcbmltcG9ydCB7IEFQUF9MSU5LUywgU0hFTExfQ09ORklHIH0gZnJvbSAnLi4vLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpc09ic2VydmFibGUsIG9ic2VydmFibGUsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnbGliLXNoZWxsLWhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NoZWxsLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGVsbEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzZWN0aW9uLWxpbmtzJykgc2VjdGlvbkxpbmtzUGF0aCA9ICdtYWluJztcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdwcm9maWxlLW1lbnUnKSBwcm9maWxlTWVudVZpc2libGUgPSB0cnVlO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3Nob3ctdXNlck5hbWUnKSBzaG93VXNlck5hbWVPbkhlYWRlcjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1pbnB1dC1yZW5hbWVcclxuICBASW5wdXQoJ3Nob3ctYWxlcnRzJykgc2hvd0FsZXJ0czogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGxhbmdzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdjdXJyZW50LWxhbmcnKSBjdXJyZW50TGFuZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGJvcmRlciA9IHRydWU7XHJcbiAgcHVibGljIHNlY3Rpb25MaW5rczogT2JzZXJ2YWJsZTxOYXZMaW5rW10+ID0gb2YoW10pO1xyXG4gIHB1YmxpYyBtb2JpbGVNZW51RXhwYW5kZWQgPSBmYWxzZTtcclxuICBwdWJsaWMgdXNlck1lbnVFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCByb3V0ZVN1YmplY3Q6IE9ic2VydmFibGU8RXZlbnQ+O1xyXG4gIHByb3RlY3RlZCByb3V0ZXJTdWIkOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgdXNlclN1YiQ6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByb3RlY3RlZCBzdGF0dXNTdWIkOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgdXNlcjogVXNlciB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBhdmF0YXJOYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwdWJsaWMgYWN0aXZlRnJhZ21lbnQ6IGFueSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoQXV0aFNlcnZpY2UpIHByb3RlY3RlZCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBASW5qZWN0KFJvdXRlcikgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxyXG4gICAgQEluamVjdChBY3RpdmF0ZWRSb3V0ZSkgcHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIEBJbmplY3QoU0hFTExfQ09ORklHKSBwdWJsaWMgY29uZmlnOiBhbnksXHJcbiAgICBASW5qZWN0KEFQUF9MSU5LUykgcHVibGljIGxpbmtzOiBhbnkpIHtcclxuICAgIHRoaXMucm91dGVTdWJqZWN0ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVGcmFnbWVudCA9IHRoaXMucm91dGUuZnJhZ21lbnQucGlwZShzaGFyZSgpKTtcclxuICAgIHRoaXMuc2VjdGlvbkxpbmtzID0gdGhpcy5saW5rc1t0aGlzLnNlY3Rpb25MaW5rc1BhdGhdIGFzIE9ic2VydmFibGU8TmF2TGlua1tdPjtcclxuICAgIHRoaXMucm91dGVyU3ViJCA9IHRoaXMucm91dGVTdWJqZWN0LnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5tb2JpbGVNZW51RXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy51c2VyTWVudUV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9hZFVzZXIoKS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcclxuICAgICAgdGhpcy5zZXRDdXJyZW50VXNlcih1c2VyKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICAgIC8vIERldGVjdCB1c2VyIGNoYW5nZXMgYW5kIGRpc3BsYXkgLyBvciBub3QgdXNlciBpbmZvIGFjY29yZGluZ2x5Li4uXHJcbiAgICB0aGlzLnVzZXJTdWIkID0gdGhpcy5hdXRoU2VydmljZS51c2VyJC5zdWJzY3JpYmUoKHVzZXI6IGFueSkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnU2hlbGxIZWFkZXJDb21wb25lbnQgdXNlciBzdWJzY3JpcHRpb24nKTtcclxuICAgICAgdGhpcy5zZXRDdXJyZW50VXNlcih1c2VyKTtcclxuICAgIH0pO1xyXG4gICAgLy8gc2V0IGN1cnJlbnQgbGFuZyBpZiBubyBjdXJyZW50IHZhbHVlIGZyb20gbGFuZ3MgaWYgYW55XHJcbiAgICBpZiAoIXRoaXMuY3VycmVudExhbmcgJiYgdGhpcy5sYW5ncyAmJiB0aGlzLmxhbmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZXRDdXJyZW50TGFuZyh0aGlzLmxhbmdzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLnJvdXRlclN1YiQpIHtcclxuICAgICAgdGhpcy5yb3V0ZXJTdWIkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICAvLyBUT0RPOiBjaGVjayBhdXRoZW50aWNhdGVkIHVzZXIgaGVyZSBiZWZvcmUgd2Ugc3RhcnQgcG9sbGluZyBzZXJ2ZXIgc3RhdHVzXHJcbiAgICBpZiAodGhpcy5zdGF0dXNTdWIkKSB7XHJcbiAgICAgIHRoaXMuc3RhdHVzU3ViJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXNlclN1YiQpIHtcclxuICAgICAgdGhpcy51c2VyU3ViJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHlwZWRlZlxyXG4gIHB1YmxpYyBvbkNsaWNrT3V0c2lkZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy51c2VyTWVudUV4cGFuZGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2lnbmluKGV2ZW50OiBhbnkgfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2lnbmluUmVkaXJlY3QoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q3VycmVudFVzZXIodXNlcjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gICAgaWYgKHRoaXMudXNlciAmJiB0aGlzLnVzZXIucHJvZmlsZSkge1xyXG4gICAgICB0aGlzLmF2YXRhck5hbWUgPSBgJHt0aGlzLnVzZXIucHJvZmlsZS5naXZlbl9uYW1lPy5jaGFyQXQoMCl9JHt0aGlzLnVzZXIucHJvZmlsZS5mYW1pbHlfbmFtZT8uY2hhckF0KDApfWAudG9VcHBlckNhc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDdXJyZW50TGFuZyhsYW5nOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudExhbmcgPSBsYW5nO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPG5hdj5cclxuICA8ZGl2IGNsYXNzPVwic2hlbGwtaGVhZGVyLXBhZGRpbmdzXCI+XHJcbiAgICA8ZGl2IFtjbGFzc109XCJib3JkZXIgPyAnc2hlbGwtaGVhZGVyLWJvcmRlcicgOiAnJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2hlbGwtaGVhZGVyLW1lbnUtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxsLWhlYWRlci1sb2dvLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiBbcm91dGVyTGlua109XCJbJy8nXVwiPjxpbWcgY2xhc3M9XCJhcHAtbG9nb1wiIFtzcmNdPVwiY29uZmlnLmFwcExvZ29cIiBbYWx0XT1cImNvbmZpZy5hcHBMb2dvQWx0XCIgLz48L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxsLWhlYWRlci1saW5rLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxsLWhlYWRlci1saW5rLWNvbnRhaW5lci1pbm5lclwiPlxyXG4gICAgICAgICAgICA8bGliLW5hdi1saW5rcy1saXN0XHJcbiAgICAgICAgICAgICAgW2xpbmtzXT1cInNlY3Rpb25MaW5rc1wiXHJcbiAgICAgICAgICAgICAgW2FjdGl2ZS1mcmFnbWVudF09XCJhY3RpdmVGcmFnbWVudFwiXHJcbiAgICAgICAgICAgICAgW2xpbmstY2xhc3NdPVwiJ25hdi1saW5rJ1wiXHJcbiAgICAgICAgICAgICAgW2xpbmstYWN0aXZlLWNsYXNzXT1cIiduYXYtbGluay1hY3RpdmUnXCI+XHJcbiAgICAgICAgICAgIDwvbGliLW5hdi1saW5rcy1saXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJsYW5ncyAmJiBsYW5ncy5sZW5ndGggPiAxICYmIGN1cnJlbnRMYW5nXCIgY2xhc3M9XCJzaGVsbC1oZWFkZXItbGlua3MtZmFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGV4dC1ibHVlLTMwMCBob3Zlcjp0ZXh0LWJsdWUtNTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2N1cnJlbnRMYW5nfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInRleHQteHMgbWwtMSBtcy1JY29uIG1zLUljb24tLUNoZXZyb25Eb3duXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxsLWhlYWRlci1tZC12aXNpYmxlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGwtaGVhZGVyLWxpbmtzLWZhci1jb250YWluZXJcIiAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKCRldmVudClcIj5cclxuXHJcbiAgICAgICAgICAgIDxsaWItbmF2LWxpbmtzLWxpc3RcclxuICAgICAgICAgICAgICBbbGlua3NdPVwibGlua3MucHJvZmlsZUFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFthY3RpdmUtZnJhZ21lbnRdPVwiYWN0aXZlRnJhZ21lbnRcIlxyXG4gICAgICAgICAgICAgIFtsaW5rLWNsYXNzXT1cIidzaGVsbC1oZWFkZXItbWVudS1yb3VuZGVkLWJ1dHRvbidcIlxyXG4gICAgICAgICAgICAgIFtsaW5rLWFjdGl2ZS1jbGFzc109XCInc2hlbGwtaGVhZGVyLW1lbnUtcm91bmRlZC1idXR0b24tYWN0aXZlJ1wiPlxyXG4gICAgICAgICAgICA8L2xpYi1uYXYtbGlua3MtbGlzdD5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGluayBvZiBsaW5rcy5wcm9maWxlQWN0aW9ucyB8IGFzeW5jXCI+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3M9XCJzaGVsbC1oZWFkZXItbWVudS1yb3VuZGVkLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJvbkNsaWNrT3V0c2lkZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImxpbmsucGF0aFwiXHJcbiAgICAgICAgICAgICAgICAgW2F0dHIudGFyZ2V0XT1cImxpbmsuZXh0ZXJuYWwgPyAnX2JsYW5rJyA6ICdfc2VsZidcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPnt7IGxpbmsudGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibGluay5pY29uXCIgW2NsYXNzXT1cImxpbmsuaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVXNlcm5hbWUgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9maWxlTWVudVZpc2libGVcIiBjbGFzcz1cIm1sLTIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnc2hlbGwtaGVhZGVyLXByb2ZpbGUnOiBzaG93VXNlck5hbWVPbkhlYWRlcn1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyICYmIHNob3dVc2VyTmFtZU9uSGVhZGVyXCIgY2xhc3M9XCJzaGVsbC1oZWFkZXItcHJvZmlsZS11c2VyTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyB1c2VyLnByb2ZpbGUubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBOb3RpZmljYXRpb25zIGRyb3Bkb3duIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FsZXJ0cyAmJiB1c2VyXCIgY2xhc3M9XCJtbC0yXCI+XHJcbiAgICAgICAgICAgICAgPGxpYi1ub3RpZmljYXRpb25zLWluZGljYXRvcj48L2xpYi1ub3RpZmljYXRpb25zLWluZGljYXRvcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFByb2ZpbGUgZHJvcGRvd24gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9maWxlTWVudVZpc2libGVcIiBjbGFzcz1cIm1sLTIgcmVsYXRpdmVcIiAoY2xpY2tPdXRzaWRlKT1cIm9uQ2xpY2tPdXRzaWRlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnc2hlbGwtaGVhZGVyLXByb2ZpbGUnOiBzaG93VXNlck5hbWVPbkhlYWRlcn1cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwidXNlclwiIChjbGljayk9XCJ1c2VyTWVudUV4cGFuZGVkID0gIXVzZXJNZW51RXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNoZWxsLWhlYWRlci1wcm9maWxlLWRyb3Bkb3duLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwidXNlci1tZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+T3BlbiB1c2VyIG1lbnU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXZhdGFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXZhdGFyLXRleHRcIj57e3RoaXMuYXZhdGFyTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiF1c2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNpZ25pbihudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2hlbGwtaGVhZGVyLXByb2ZpbGUtZHJvcGRvd24tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ1c2VyLW1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5zaWduIGluPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF2YXRhci1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF2YXRhci10ZXh0XCI+PGkgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLVNpZ25pblwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyTWVudUV4cGFuZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2hvd1VzZXJOYW1lT25IZWFkZXIgPyAnc2hlbGwtaGVhZGVyLXByb2ZpbGUtZHJvcGRvd24td2l0aC11c2VybmFtZScgOiAnc2hlbGwtaGVhZGVyLXByb2ZpbGUtZHJvcGRvd24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBhcmlhLW9yaWVudGF0aW9uPVwidmVydGljYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJ1c2VyLW1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPGxpYi1uYXYtbGlua3MtbGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGlua3NdPVwibGlua3MucHJvZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmUtZnJhZ21lbnRdPVwiYWN0aXZlRnJhZ21lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGluay1jbGFzc109XCInbmF2LWxpbmstcHJvZmlsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGluay1hY3RpdmUtY2xhc3NdPVwiJ25hdi1saW5rLXByb2ZpbGUtYWN0aXZlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGliLW5hdi1saW5rcy1saXN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLW1lbnUtYnV0dG9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPCEtLSBNb2JpbGUgbWVudSBidXR0b24gLS0+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9iaWxlTWVudUV4cGFuZGVkID0gIW1vYmlsZU1lbnVFeHBhbmRlZFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9iaWxlLW1lbnUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cIm1vYmlsZS1tZW51XCJcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJtb2JpbGVNZW51RXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+T3BlbiBtYWluIG1lbnU8L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS1IZXJvaWNvbiBuYW1lOiBvdXRsaW5lL21lbnUgIE1lbnUgb3BlbjogXCJoaWRkZW5cIiwgTWVudSBjbG9zZWQ6IFwiYmxvY2tcIi0tPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIm1vYmlsZU1lbnVFeHBhbmRlZCA/ICdoaWRkZW4nOidibG9jayBoLTYgdy02J1wiPlxyXG4gICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICBkPVwiTTQgNmgxNk00IDEyaDE2TTQgMThoMTZcIiAvPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPCEtLUhlcm9pY29uIG5hbWU6IG91dGxpbmUveCBNZW51IG9wZW46IFwiYmxvY2tcIiwgTWVudSBjbG9zZWQ6IFwiaGlkZGVuXCItLT5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzc109XCJtb2JpbGVNZW51RXhwYW5kZWQgPyAnYmxvY2sgaC02IHctNic6J2hpZGRlbidcIj5cclxuICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgZD1cIk02IDE4TDE4IDZNNiA2bDEyIDEyXCIgLz5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSBNb2JpbGUgbWVudSwgc2hvdy9oaWRlIGJhc2VkIG9uIG1lbnUgc3RhdGUuIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2JpbGUtbWVudS1jb250YWluZXJcIiAqbmdJZj1cIm1vYmlsZU1lbnVFeHBhbmRlZFwiIGlkPVwibW9iaWxlLW1lbnVcIj5cclxuICAgIDxsaWItbmF2LWxpbmtzLWxpc3RcclxuICAgICAgW2xpbmtzXT1cInNlY3Rpb25MaW5rc1wiXHJcbiAgICAgIFthY3RpdmUtZnJhZ21lbnRdPVwiYWN0aXZlRnJhZ21lbnRcIlxyXG4gICAgICBbbGluay1jbGFzc109XCInbmF2LWxpbmstbW9iaWxlJ1wiXHJcbiAgICAgIFtsaW5rLWFjdGl2ZS1jbGFzc109XCInbmF2LWxpbmstbW9iaWxlLWFjdGl2ZSdcIlxyXG4gICAgICBbY29udGFpbmVyLWNsYXNzXT1cIidtb2JpbGUtbWVudS1saW5rLWNvbnRhaW5lcidcIj5cclxuICAgIDwvbGliLW5hdi1saW5rcy1saXN0PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhdXNlclwiPlxyXG4gICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJzaWduaW4oJGV2ZW50KVwiIGNsYXNzPVwibmF2LWxpbmstbW9iaWxlXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLVNpZ25pbiBtci0yXCI+PC9pPs6jz43Ovc60zrXPg863XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtbWVudS11c2VyLWluZm8tY29udGFpbmVyXCIgKm5nSWY9XCJ1c2VyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtbWVudS11c2VyLWluZm8tY29udGFpbmVyLWlubmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc2hyaW5rLTBcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9iaWxlLW1lbnUtYXZhdGFyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vYmlsZS1tZW51LWF2YXRhci1uYW1lXCI+e3sgdGhpcy5hdmF0YXJOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtbC0zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLW1lbnUtdXNlci1uYW1lXCI+e3sgdXNlci5wcm9maWxlLm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtbWVudS11c2VyLWVtYWlsXCI+e3sgdXNlci5wcm9maWxlLmVtYWlsIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1vYmlsZS1tZW51LXJvdW5kZWQtYnV0dG9uXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5WaWV3IG5vdGlmaWNhdGlvbnM8L3NwYW4+XHJcbiAgICAgICAgICA8IS0tIEhlcm9pY29uIG5hbWU6IG91dGxpbmUvYmVsbCAtLT5cclxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJtb2JpbGUtbWVudS1yb3VuZGVkLWJ1dHRvbi1pY29uLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgZD1cIk0xNSAxN2g1bC0xLjQwNS0xLjQwNUEyLjAzMiAyLjAzMiAwIDAxMTggMTQuMTU4VjExYTYuMDAyIDYuMDAyIDAgMDAtNC01LjY1OVY1YTIgMiAwIDEwLTQgMHYuMzQxQzcuNjcgNi4xNjUgNiA4LjM4OCA2IDExdjMuMTU5YzAgLjUzOC0uMjE0IDEuMDU1LS41OTUgMS40MzZMNCAxN2g1bTYgMHYxYTMgMyAwIDExLTYgMHYtMW02IDBIOVwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bGliLW5hdi1saW5rcy1saXN0XHJcbiAgICAgICAgICBbbGlua3NdPVwibGlua3MucHJvZmlsZVwiXHJcbiAgICAgICAgICBbYWN0aXZlLWZyYWdtZW50XT1cImFjdGl2ZUZyYWdtZW50XCJcclxuICAgICAgICAgIFtsaW5rLWNsYXNzXT1cIiduYXYtbGluay1tb2JpbGUnXCJcclxuICAgICAgICAgIFtsaW5rLWFjdGl2ZS1jbGFzc109XCInbmF2LWxpbmstbW9iaWxlLWFjdGl2ZSdcIlxyXG4gICAgICAgICAgW2NvbnRhaW5lci1jbGFzc109XCInbW9iaWxlLW1lbnUtbGluay1jb250YWluZXInXCI+XHJcbiAgICAgIDwvbGliLW5hdi1saW5rcy1saXN0PlxyXG4gIDwvZGl2PlxyXG48L25hdj5cclxuIl19
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { SHELL_CONFIG } from './../../../tokens';
|
|
2
|
+
import { DefaultShellConfig } from './../../../types';
|
|
3
|
+
import { Component, Inject, ViewChildren } from '@angular/core';
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
5
|
+
import { ActivationStart } from '@angular/router';
|
|
6
|
+
import { filter } from 'rxjs/operators';
|
|
7
|
+
import { DynamicComponentHostDirective } from '../../../directives/dynamic-component-host.directive';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/router";
|
|
10
|
+
import * as i2 from "@angular/common";
|
|
11
|
+
import * as i3 from "../../../services/component-loader/component-loader.factory";
|
|
12
|
+
import * as i4 from "../shell-header/shell-header.component";
|
|
13
|
+
import * as i5 from "../shell-footer/shell-footer.component";
|
|
14
|
+
import * as i6 from "../../../controls/side-pane/side-pane.component";
|
|
15
|
+
import * as i7 from "../../../controls/toaster/toaster-container.component";
|
|
16
|
+
import * as i8 from "../../../directives/dynamic-component-host.directive";
|
|
17
|
+
export class ShellLayoutComponent {
|
|
18
|
+
constructor(document, router, location, config, componentLoaderFactory) {
|
|
19
|
+
this.document = document;
|
|
20
|
+
this.router = router;
|
|
21
|
+
this.location = location;
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.componentLoaderFactory = componentLoaderFactory;
|
|
24
|
+
this.dynamicComponentHosts = null;
|
|
25
|
+
this.showRightPaneSM = false;
|
|
26
|
+
this.routerSub$ = null;
|
|
27
|
+
this.activeConfig = new DefaultShellConfig();
|
|
28
|
+
this.loaded = false;
|
|
29
|
+
if (!config) {
|
|
30
|
+
config = new DefaultShellConfig();
|
|
31
|
+
}
|
|
32
|
+
this.activeConfig = config;
|
|
33
|
+
}
|
|
34
|
+
ngAfterViewChecked() {
|
|
35
|
+
setTimeout(() => { this.loaded = true; }, 200);
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
this.routerSub$ = this.router.events.pipe(filter((event) => event instanceof ActivationStart)).subscribe((e) => {
|
|
39
|
+
// console.log('ShellLayoutComponent ActivationStart', e);
|
|
40
|
+
if (e?.snapshot) {
|
|
41
|
+
// console.log('ShellLayoutComponent ActivationStart snapshot', (e as ActivationStart)?.snapshot);
|
|
42
|
+
if (e?.snapshot?.data) {
|
|
43
|
+
// console.log('ShellLayoutComponent ActivationStart snapshot data', (e as ActivationStart)?.snapshot.data);
|
|
44
|
+
if (e?.snapshot?.data.shell) {
|
|
45
|
+
// console.log('ShellLayoutComponent ActivationStart snapshot data shell params',
|
|
46
|
+
// (e as ActivationStart)?.snapshot.data.shell);
|
|
47
|
+
this.activeConfig = e?.snapshot.data.shell;
|
|
48
|
+
// console.log('ShellLayoutComponent activeConfig from route: ', this.activeConfig);
|
|
49
|
+
if (this.activeConfig.customHeaderComponent) {
|
|
50
|
+
this.initCustomComponents();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.activeConfig = this.config ? this.config : new DefaultShellConfig();
|
|
55
|
+
// console.log('ShellLayoutComponent default activeConfig: ', this.activeConfig);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
ngAfterViewInit() {
|
|
62
|
+
this.initCustomComponents();
|
|
63
|
+
}
|
|
64
|
+
initCustomComponents() {
|
|
65
|
+
if (this.dynamicComponentHosts && this.dynamicComponentHosts.length > 0) {
|
|
66
|
+
this.loadCustomComponent(this.dynamicComponentHosts.find((_) => _.hostName === 'Header'));
|
|
67
|
+
// since you're not using it...
|
|
68
|
+
// this.loadCustomComponent(this.dynamicComponentHosts.find(_ => _.hostName === 'Footer'));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
ngOnDestroy() {
|
|
72
|
+
if (this.routerSub$) {
|
|
73
|
+
this.routerSub$.unsubscribe();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
loadCustomComponent(host) {
|
|
77
|
+
if (host) {
|
|
78
|
+
const viewContainerRef = host.viewContainerRef;
|
|
79
|
+
if (viewContainerRef && this.activeConfig.customHeaderComponent) {
|
|
80
|
+
const clf = this.componentLoaderFactory.createLoader(viewContainerRef);
|
|
81
|
+
const headerCompRef = clf.attach(this.activeConfig.customHeaderComponent).to(viewContainerRef.element).show();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
ShellLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ShellLayoutComponent, deps: [{ token: DOCUMENT }, { token: i1.Router }, { token: i2.Location }, { token: SHELL_CONFIG }, { token: i3.ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
+
ShellLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ShellLayoutComponent, selector: "lib-shell-layout", viewQueries: [{ propertyName: "dynamicComponentHosts", predicate: DynamicComponentHostDirective, descendants: true }], ngImport: i0, template: "<div *ngIf=\"loaded\" [style.display]=\"!loaded ? 'none':'block'\" class=\"shell-container active-side-pane\">\r\n\r\n <div class=\"shell-header-container\" *ngIf=\"activeConfig.showHeader\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-header-container-inner-fluid' : 'shell-header-container-inner'\">\r\n <ng-container *ngIf=\"activeConfig.customHeaderComponent\">\r\n <div appDynamicComponentHost =\"Header\"></div>\r\n </ng-container>\r\n <lib-shell-header *ngIf=\"!activeConfig.customHeaderComponent\"\r\n [langs]=\"activeConfig.langs\"\r\n [show-userName]=\"activeConfig.showUserNameOnHeader\"\r\n [show-alerts]=\"activeConfig.showAlertsOnHeader\"></lib-shell-header>\r\n </div>\r\n </div>\r\n\r\n <main [class]=\"activeConfig.showHeader ? 'shell-content-container' : 'shell-content-container-no-header'\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-content-container-inner-fluid' : 'shell-content-container-inner'\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </main>\r\n\r\n <div class=\"shell-footer-container\" *ngIf=\"activeConfig.showFooter\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-footer-container-inner-fluid' : 'shell-footer-container-inner'\">\r\n <ng-container *ngIf=\"activeConfig.customFooterComponent\">\r\n <div appDynamicComponentHost hostName=\"Footer\"></div>\r\n </ng-container>\r\n <lib-shell-footer *ngIf=\"!activeConfig.customFooterComponent\"></lib-shell-footer>\r\n </div>\r\n </div>\r\n\r\n <lib-side-pane #rightPane>\r\n <router-outlet name=\"rightpane\" (activate)=\"rightPane.onSidePaneActivated($event)\" (deactivate)=\"rightPane.onSidePaneDeactivated($event)\"></router-outlet>\r\n </lib-side-pane>\r\n\r\n <lib-toaster-container></lib-toaster-container>\r\n\r\n</div>\r\n", components: [{ type: i4.ShellHeaderComponent, selector: "lib-shell-header", inputs: ["section-links", "profile-menu", "show-userName", "show-alerts", "langs", "current-lang", "border"] }, { type: i5.ShellFooterComponent, selector: "lib-shell-footer" }, { type: i6.SidePaneComponent, selector: "lib-side-pane", inputs: ["visible"], outputs: ["onComplete"] }, { type: i7.ToasterContainerComponent, selector: "lib-toaster-container" }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.DynamicComponentHostDirective, selector: "[appDynamicComponentHost]", inputs: ["hostName"] }, { type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ShellLayoutComponent, decorators: [{
|
|
89
|
+
type: Component,
|
|
90
|
+
args: [{ selector: 'lib-shell-layout', template: "<div *ngIf=\"loaded\" [style.display]=\"!loaded ? 'none':'block'\" class=\"shell-container active-side-pane\">\r\n\r\n <div class=\"shell-header-container\" *ngIf=\"activeConfig.showHeader\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-header-container-inner-fluid' : 'shell-header-container-inner'\">\r\n <ng-container *ngIf=\"activeConfig.customHeaderComponent\">\r\n <div appDynamicComponentHost =\"Header\"></div>\r\n </ng-container>\r\n <lib-shell-header *ngIf=\"!activeConfig.customHeaderComponent\"\r\n [langs]=\"activeConfig.langs\"\r\n [show-userName]=\"activeConfig.showUserNameOnHeader\"\r\n [show-alerts]=\"activeConfig.showAlertsOnHeader\"></lib-shell-header>\r\n </div>\r\n </div>\r\n\r\n <main [class]=\"activeConfig.showHeader ? 'shell-content-container' : 'shell-content-container-no-header'\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-content-container-inner-fluid' : 'shell-content-container-inner'\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </main>\r\n\r\n <div class=\"shell-footer-container\" *ngIf=\"activeConfig.showFooter\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-footer-container-inner-fluid' : 'shell-footer-container-inner'\">\r\n <ng-container *ngIf=\"activeConfig.customFooterComponent\">\r\n <div appDynamicComponentHost hostName=\"Footer\"></div>\r\n </ng-container>\r\n <lib-shell-footer *ngIf=\"!activeConfig.customFooterComponent\"></lib-shell-footer>\r\n </div>\r\n </div>\r\n\r\n <lib-side-pane #rightPane>\r\n <router-outlet name=\"rightpane\" (activate)=\"rightPane.onSidePaneActivated($event)\" (deactivate)=\"rightPane.onSidePaneDeactivated($event)\"></router-outlet>\r\n </lib-side-pane>\r\n\r\n <lib-toaster-container></lib-toaster-container>\r\n\r\n</div>\r\n" }]
|
|
91
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
92
|
+
type: Inject,
|
|
93
|
+
args: [DOCUMENT]
|
|
94
|
+
}] }, { type: i1.Router }, { type: i2.Location }, { type: undefined, decorators: [{
|
|
95
|
+
type: Inject,
|
|
96
|
+
args: [SHELL_CONFIG]
|
|
97
|
+
}] }, { type: i3.ComponentLoaderFactory }]; }, propDecorators: { dynamicComponentHosts: [{
|
|
98
|
+
type: ViewChildren,
|
|
99
|
+
args: [DynamicComponentHostDirective]
|
|
100
|
+
}] } });
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9sYXlvdXRzL3NoZWxsL3NoZWxsLWxheW91dC9zaGVsbC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2xheW91dHMvc2hlbGwvc2hlbGwtbGF5b3V0L3NoZWxsLWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BFLE9BQU8sRUFBaUIsU0FBUyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsUUFBUSxFQUFZLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7Ozs7OztBQVFyRyxNQUFNLE9BQU8sb0JBQW9CO0lBTy9CLFlBQzRCLFFBQWEsRUFDL0IsTUFBYyxFQUNkLFFBQWtCLEVBQ0ksTUFBMkIsRUFDakQsc0JBQThDO1FBSjVCLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDSSxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUNqRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBVnhELDBCQUFxQixHQUFvRCxJQUFJLENBQUM7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SUFBSSxFQUFFLENBQUM7YUFDL0c7U0FDRjtJQUNILENBQUM7O2lIQTFFVSxvQkFBb0Isa0JBUXJCLFFBQVEsMkRBR1IsWUFBWTtxR0FYWCxvQkFBb0Isa0dBQ2pCLDZCQUE2QixnRENoQjdDLHl5REFvQ0E7MkZEckJhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFFRSxrQkFBa0I7OzBCQVd6QixNQUFNOzJCQUFDLFFBQVE7OzBCQUdmLE1BQU07MkJBQUMsWUFBWTtpRkFUdEIscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNIRUxMX0NPTkZJRyB9IGZyb20gJy4vLi4vLi4vLi4vdG9rZW5zJztcclxuaW1wb3J0IHsgSVNoZWxsQ29uZmlnLCBEZWZhdWx0U2hlbGxDb25maWcgfSBmcm9tICcuLy4uLy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5qZWN0LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBY3RpdmF0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50SG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1jb21wb25lbnQtaG9zdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29tcG9uZW50LWxvYWRlci9jb21wb25lbnQtbG9hZGVyLmZhY3RvcnknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnbGliLXNoZWxsLWxheW91dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NoZWxsLWxheW91dC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGVsbExheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcclxuICBAVmlld0NoaWxkcmVuKER5bmFtaWNDb21wb25lbnRIb3N0RGlyZWN0aXZlKVxyXG4gIGR5bmFtaWNDb21wb25lbnRIb3N0czogUXVlcnlMaXN0PER5bmFtaWNDb21wb25lbnRIb3N0RGlyZWN0aXZlPiB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBzaG93UmlnaHRQYW5lU00gPSBmYWxzZTtcclxuICBwcml2YXRlIHJvdXRlclN1YiQ6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHB1YmxpYyBhY3RpdmVDb25maWc6IElTaGVsbENvbmZpZyA9IG5ldyBEZWZhdWx0U2hlbGxDb25maWcoKTtcclxuICBwdWJsaWMgbG9hZGVkID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBASW5qZWN0KFNIRUxMX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IElTaGVsbENvbmZpZyB8IG51bGwsXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudExvYWRlckZhY3Rvcnk6IENvbXBvbmVudExvYWRlckZhY3RvcnlcclxuICApIHtcclxuICAgIGlmICghY29uZmlnKSB7XHJcbiAgICAgIGNvbmZpZyA9IG5ldyBEZWZhdWx0U2hlbGxDb25maWcoKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlQ29uZmlnID0gY29uZmlnO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMubG9hZGVkID0gdHJ1ZTsgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXJTdWIkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBBY3RpdmF0aW9uU3RhcnQpKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ1NoZWxsTGF5b3V0Q29tcG9uZW50IEFjdGl2YXRpb25TdGFydCcsIGUpO1xyXG4gICAgICBpZiAoKGUgYXMgQWN0aXZhdGlvblN0YXJ0KT8uc25hcHNob3QpIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnU2hlbGxMYXlvdXRDb21wb25lbnQgQWN0aXZhdGlvblN0YXJ0IHNuYXBzaG90JywgKGUgYXMgQWN0aXZhdGlvblN0YXJ0KT8uc25hcHNob3QpO1xyXG4gICAgICAgIGlmICgoZSBhcyBBY3RpdmF0aW9uU3RhcnQpPy5zbmFwc2hvdD8uZGF0YSkge1xyXG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ1NoZWxsTGF5b3V0Q29tcG9uZW50IEFjdGl2YXRpb25TdGFydCBzbmFwc2hvdCBkYXRhJywgKGUgYXMgQWN0aXZhdGlvblN0YXJ0KT8uc25hcHNob3QuZGF0YSk7XHJcbiAgICAgICAgICBpZiAoKGUgYXMgQWN0aXZhdGlvblN0YXJ0KT8uc25hcHNob3Q/LmRhdGEuc2hlbGwpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1NoZWxsTGF5b3V0Q29tcG9uZW50IEFjdGl2YXRpb25TdGFydCBzbmFwc2hvdCBkYXRhIHNoZWxsIHBhcmFtcycsXHJcbiAgICAgICAgICAgIC8vIChlIGFzIEFjdGl2YXRpb25TdGFydCk/LnNuYXBzaG90LmRhdGEuc2hlbGwpO1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUNvbmZpZyA9IChlIGFzIEFjdGl2YXRpb25TdGFydCk/LnNuYXBzaG90LmRhdGEuc2hlbGwgYXMgSVNoZWxsQ29uZmlnO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnU2hlbGxMYXlvdXRDb21wb25lbnQgYWN0aXZlQ29uZmlnIGZyb20gcm91dGU6ICcsIHRoaXMuYWN0aXZlQ29uZmlnKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlQ29uZmlnLmN1c3RvbUhlYWRlckNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5pdEN1c3RvbUNvbXBvbmVudHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVDb25maWcgPSB0aGlzLmNvbmZpZyA/IHRoaXMuY29uZmlnIDogbmV3IERlZmF1bHRTaGVsbENvbmZpZygpO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnU2hlbGxMYXlvdXRDb21wb25lbnQgZGVmYXVsdCBhY3RpdmVDb25maWc6ICcsIHRoaXMuYWN0aXZlQ29uZmlnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0Q3VzdG9tQ29tcG9uZW50cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q3VzdG9tQ29tcG9uZW50cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmR5bmFtaWNDb21wb25lbnRIb3N0cyAmJiB0aGlzLmR5bmFtaWNDb21wb25lbnRIb3N0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubG9hZEN1c3RvbUNvbXBvbmVudCh0aGlzLmR5bmFtaWNDb21wb25lbnRIb3N0cy5maW5kKChfKSA9PiBfLmhvc3ROYW1lID09PSAnSGVhZGVyJykpO1xyXG4gICAgICAvLyBzaW5jZSB5b3UncmUgbm90IHVzaW5nIGl0Li4uXHJcbiAgICAgIC8vIHRoaXMubG9hZEN1c3RvbUNvbXBvbmVudCh0aGlzLmR5bmFtaWNDb21wb25lbnRIb3N0cy5maW5kKF8gPT4gXy5ob3N0TmFtZSA9PT0gJ0Zvb3RlcicpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucm91dGVyU3ViJCkge1xyXG4gICAgICB0aGlzLnJvdXRlclN1YiQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEN1c3RvbUNvbXBvbmVudChob3N0OiBEeW5hbWljQ29tcG9uZW50SG9zdERpcmVjdGl2ZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgaWYgKGhvc3QpIHtcclxuICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IGhvc3Qudmlld0NvbnRhaW5lclJlZjtcclxuICAgICAgaWYgKHZpZXdDb250YWluZXJSZWYgJiYgdGhpcy5hY3RpdmVDb25maWcuY3VzdG9tSGVhZGVyQ29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgY2xmID0gdGhpcy5jb21wb25lbnRMb2FkZXJGYWN0b3J5LmNyZWF0ZUxvYWRlcih2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgICBjb25zdCBoZWFkZXJDb21wUmVmID0gY2xmLmF0dGFjaCh0aGlzLmFjdGl2ZUNvbmZpZy5jdXN0b21IZWFkZXJDb21wb25lbnQpLnRvKHZpZXdDb250YWluZXJSZWYuZWxlbWVudCkuc2hvdygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJsb2FkZWRcIiBbc3R5bGUuZGlzcGxheV09XCIhbG9hZGVkID8gJ25vbmUnOidibG9jaydcIiBjbGFzcz1cInNoZWxsLWNvbnRhaW5lciBhY3RpdmUtc2lkZS1wYW5lXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzaGVsbC1oZWFkZXItY29udGFpbmVyXCIgKm5nSWY9XCJhY3RpdmVDb25maWcuc2hvd0hlYWRlclwiPlxyXG4gICAgPGRpdiBbY2xhc3NdPVwiYWN0aXZlQ29uZmlnLmZsdWlkID8gJ3NoZWxsLWhlYWRlci1jb250YWluZXItaW5uZXItZmx1aWQnIDogJ3NoZWxsLWhlYWRlci1jb250YWluZXItaW5uZXInXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVDb25maWcuY3VzdG9tSGVhZGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGRpdiBhcHBEeW5hbWljQ29tcG9uZW50SG9zdCA9XCJIZWFkZXJcIj48L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxsaWItc2hlbGwtaGVhZGVyICpuZ0lmPVwiIWFjdGl2ZUNvbmZpZy5jdXN0b21IZWFkZXJDb21wb25lbnRcIlxyXG4gICAgICAgIFtsYW5nc109XCJhY3RpdmVDb25maWcubGFuZ3NcIlxyXG4gICAgICAgIFtzaG93LXVzZXJOYW1lXT1cImFjdGl2ZUNvbmZpZy5zaG93VXNlck5hbWVPbkhlYWRlclwiXHJcbiAgICAgICAgW3Nob3ctYWxlcnRzXT1cImFjdGl2ZUNvbmZpZy5zaG93QWxlcnRzT25IZWFkZXJcIj48L2xpYi1zaGVsbC1oZWFkZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG1haW4gW2NsYXNzXT1cImFjdGl2ZUNvbmZpZy5zaG93SGVhZGVyID8gJ3NoZWxsLWNvbnRlbnQtY29udGFpbmVyJyA6ICdzaGVsbC1jb250ZW50LWNvbnRhaW5lci1uby1oZWFkZXInXCI+XHJcbiAgICA8ZGl2IFtjbGFzc109XCJhY3RpdmVDb25maWcuZmx1aWQgPyAnc2hlbGwtY29udGVudC1jb250YWluZXItaW5uZXItZmx1aWQnIDogJ3NoZWxsLWNvbnRlbnQtY29udGFpbmVyLWlubmVyJ1wiPlxyXG4gICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L21haW4+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzaGVsbC1mb290ZXItY29udGFpbmVyXCIgKm5nSWY9XCJhY3RpdmVDb25maWcuc2hvd0Zvb3RlclwiPlxyXG4gICAgPGRpdiBbY2xhc3NdPVwiYWN0aXZlQ29uZmlnLmZsdWlkID8gJ3NoZWxsLWZvb3Rlci1jb250YWluZXItaW5uZXItZmx1aWQnIDogJ3NoZWxsLWZvb3Rlci1jb250YWluZXItaW5uZXInXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVDb25maWcuY3VzdG9tRm9vdGVyQ29tcG9uZW50XCI+XHJcbiAgICAgICAgPGRpdiBhcHBEeW5hbWljQ29tcG9uZW50SG9zdCBob3N0TmFtZT1cIkZvb3RlclwiPjwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGxpYi1zaGVsbC1mb290ZXIgKm5nSWY9XCIhYWN0aXZlQ29uZmlnLmN1c3RvbUZvb3RlckNvbXBvbmVudFwiPjwvbGliLXNoZWxsLWZvb3Rlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bGliLXNpZGUtcGFuZSAjcmlnaHRQYW5lPlxyXG4gICAgPHJvdXRlci1vdXRsZXQgbmFtZT1cInJpZ2h0cGFuZVwiIChhY3RpdmF0ZSk9XCJyaWdodFBhbmUub25TaWRlUGFuZUFjdGl2YXRlZCgkZXZlbnQpXCIgKGRlYWN0aXZhdGUpPVwicmlnaHRQYW5lLm9uU2lkZVBhbmVEZWFjdGl2YXRlZCgkZXZlbnQpXCI+PC9yb3V0ZXItb3V0bGV0PlxyXG4gIDwvbGliLXNpZGUtcGFuZT5cclxuXHJcbiAgPGxpYi10b2FzdGVyLWNvbnRhaW5lcj48L2xpYi10b2FzdGVyLWNvbnRhaW5lcj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { fromEvent } from 'rxjs';
|
|
3
|
+
import { map, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
import * as i2 from "../../../controls/side-pane/side-pane.component";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
export class FormLayoutComponent {
|
|
9
|
+
constructor(router$) {
|
|
10
|
+
this.router$ = router$;
|
|
11
|
+
this.title = null;
|
|
12
|
+
// tslint:disable-next-line:no-input-rename
|
|
13
|
+
this.searchPlaceholder = 'αναζήτηση';
|
|
14
|
+
this.actions = null;
|
|
15
|
+
// tslint:disable-next-line:no-input-rename
|
|
16
|
+
this.subTitle = null;
|
|
17
|
+
// tslint:disable-next-line:no-output-on-prefix
|
|
18
|
+
this.onAction = new EventEmitter();
|
|
19
|
+
// tslint:disable-next-line:no-output-on-prefix
|
|
20
|
+
this.onSearch = new EventEmitter();
|
|
21
|
+
this.onComplete = new EventEmitter();
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
if (this.searchInput$?.nativeElement) {
|
|
25
|
+
fromEvent(this.searchInput$.nativeElement, 'keyup').pipe(map((event) => {
|
|
26
|
+
return event.target.value; // Get input value.
|
|
27
|
+
}), filter(inputValue => inputValue.length >= 3 || inputValue.length === 0),
|
|
28
|
+
// If character length greater than minimumSearchCharacters setting.
|
|
29
|
+
debounceTime(1000), // Time in milliseconds between key events.
|
|
30
|
+
distinctUntilChanged() // If previous query is different from current.
|
|
31
|
+
).subscribe();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
onSidePaneDeactivated($event) {
|
|
35
|
+
this.onComplete.emit(true);
|
|
36
|
+
}
|
|
37
|
+
emitActionClick(action) {
|
|
38
|
+
this.onAction.emit(action);
|
|
39
|
+
}
|
|
40
|
+
searchActionClick(action, text) {
|
|
41
|
+
this.onSearch.emit(text);
|
|
42
|
+
}
|
|
43
|
+
searchActionType(text) {
|
|
44
|
+
this.onSearch.emit(this.searchInput$?.nativeElement.value);
|
|
45
|
+
}
|
|
46
|
+
routerLinkActionClick(action, relative = false) {
|
|
47
|
+
if (action.outlet) {
|
|
48
|
+
this.router$.navigate(['', { outlets: { formRightPane: action.link } }]);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.router$.navigate([action.link]);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
FormLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: FormLayoutComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
FormLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: FormLayoutComponent, selector: "lib-form-layout", inputs: { title: "title", searchPlaceholder: ["search-placeholder", "searchPlaceholder"], actions: "actions", subTitle: ["sub-title", "subTitle"] }, outputs: { onAction: "onAction", onSearch: "onSearch", onComplete: "onComplete" }, viewQueries: [{ propertyName: "searchInput$", first: true, predicate: ["search"], descendants: true }], ngImport: i0, template: "<div class=\"form-layout-container\">\r\n <div class=\"form-header\" *ngIf=\"title || subTitle || actions\">\r\n <div class=\"form-header-inner\">\r\n <h3 class=\"form-title\">\r\n {{ title }}\r\n </h3>\r\n <p class=\"form-subtitle\">\r\n {{ subTitle }}\r\n </p>\r\n </div>\r\n <div class=\"form-header-actions\">\r\n <ng-container *ngFor=\"let action of actions\" [ngSwitch]=\"action.type\">\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <label for=\"search\" class=\"sr-only\">Search</label>\r\n <div class=\"search-container\">\r\n <div class=\"pointer-events-none absolute inset-y-0 left-0 pl-3 flex items-center\">\r\n <!--<svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\" clip-rule=\"evenodd\" />\r\n </svg>-->\r\n </div>\r\n <input id=\"search\"\r\n #search\r\n class=\"form-search-input\"\r\n [placeholder]=\"searchPlaceholder\"\r\n type=\"search\"\r\n name=\"search\"\r\n (input)=\"searchActionType(search.value)\">\r\n </div>\r\n <button type=\"button\"\r\n href=\"#\"\r\n class=\"btn-form-view-header-search\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"searchActionClick(action, search.value)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'router-link'\">\r\n <button type=\"button\"\r\n href=\"#\"\r\n class=\"ml-1 btn-form-view-header\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"routerLinkActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button type=\"button\"\r\n class=\"ml-1 btn-form-view-header\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"emitActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"form-content-container\">\r\n <div [ngClass]=\"{'form-content-container-inner': actions}\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n <lib-side-pane #formPane (onComplete)=\"onSidePaneDeactivated($event)\">\r\n <router-outlet name=\"formRightPane\"\r\n (activate)=\"formPane.onSidePaneActivated($event)\"\r\n (deactivate)=\"formPane.onSidePaneDeactivated($event)\"></router-outlet>\r\n </lib-side-pane>\r\n</div>\r\n", components: [{ type: i2.SidePaneComponent, selector: "lib-side-pane", inputs: ["visible"], outputs: ["onComplete"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: FormLayoutComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'lib-form-layout', template: "<div class=\"form-layout-container\">\r\n <div class=\"form-header\" *ngIf=\"title || subTitle || actions\">\r\n <div class=\"form-header-inner\">\r\n <h3 class=\"form-title\">\r\n {{ title }}\r\n </h3>\r\n <p class=\"form-subtitle\">\r\n {{ subTitle }}\r\n </p>\r\n </div>\r\n <div class=\"form-header-actions\">\r\n <ng-container *ngFor=\"let action of actions\" [ngSwitch]=\"action.type\">\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <label for=\"search\" class=\"sr-only\">Search</label>\r\n <div class=\"search-container\">\r\n <div class=\"pointer-events-none absolute inset-y-0 left-0 pl-3 flex items-center\">\r\n <!--<svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\" d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\" clip-rule=\"evenodd\" />\r\n </svg>-->\r\n </div>\r\n <input id=\"search\"\r\n #search\r\n class=\"form-search-input\"\r\n [placeholder]=\"searchPlaceholder\"\r\n type=\"search\"\r\n name=\"search\"\r\n (input)=\"searchActionType(search.value)\">\r\n </div>\r\n <button type=\"button\"\r\n href=\"#\"\r\n class=\"btn-form-view-header-search\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"searchActionClick(action, search.value)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'router-link'\">\r\n <button type=\"button\"\r\n href=\"#\"\r\n class=\"ml-1 btn-form-view-header\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"routerLinkActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button type=\"button\"\r\n class=\"ml-1 btn-form-view-header\"\r\n [title]=\"action.tooltip\"\r\n (click)=\"emitActionClick(action)\">\r\n <i [class]=\"action.icon\"></i>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"form-content-container\">\r\n <div [ngClass]=\"{'form-content-container-inner': actions}\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n <lib-side-pane #formPane (onComplete)=\"onSidePaneDeactivated($event)\">\r\n <router-outlet name=\"formRightPane\"\r\n (activate)=\"formPane.onSidePaneActivated($event)\"\r\n (deactivate)=\"formPane.onSidePaneDeactivated($event)\"></router-outlet>\r\n </lib-side-pane>\r\n</div>\r\n" }]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { searchInput$: [{
|
|
61
|
+
type: ViewChild,
|
|
62
|
+
args: ['search']
|
|
63
|
+
}], title: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], searchPlaceholder: [{
|
|
66
|
+
type: Input,
|
|
67
|
+
args: ['search-placeholder']
|
|
68
|
+
}], actions: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], subTitle: [{
|
|
71
|
+
type: Input,
|
|
72
|
+
args: ['sub-title']
|
|
73
|
+
}], onAction: [{
|
|
74
|
+
type: Output
|
|
75
|
+
}], onSearch: [{
|
|
76
|
+
type: Output
|
|
77
|
+
}], onComplete: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2xheW91dHMvdmlld3MvZm9ybS1sYXlvdXQvZm9ybS1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2xheW91dHMvdmlld3MvZm9ybS1sYXlvdXQvZm9ybS1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFPakYsTUFBTSxPQUFPLG1CQUFtQjtJQWU5QixZQUFvQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQVoxQixVQUFLLEdBQWtCLElBQUksQ0FBQztRQUNyQywyQ0FBMkM7UUFDZCxzQkFBaUIsR0FBa0IsV0FBVyxDQUFBO1FBQ2xFLFlBQU8sR0FBd0IsSUFBSSxDQUFDO1FBQzdDLDJDQUEyQztRQUN2QixhQUFRLEdBQWtCLElBQUksQ0FBQztRQUNuRCwrQ0FBK0M7UUFDckMsYUFBUSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBQzlFLCtDQUErQztRQUNyQyxhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUQsZUFBVSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO0lBRW5DLENBQUM7SUFFeEMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUM7WUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxtQkFBbUI7WUFDaEQsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFDdkUsb0VBQW9FO1lBQ3BFLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSwyQ0FBMkM7WUFDL0Qsb0JBQW9CLEVBQUUsQ0FBQywrQ0FBK0M7YUFDdkUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNmO0lBQ0gsQ0FBQztJQUVNLHFCQUFxQixDQUFDLE1BQVc7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFrQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBa0IsRUFBRSxJQUFZO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxNQUE4QixFQUFFLFdBQW9CLEtBQUs7UUFDcEYsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMxRTthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7O2dIQXJEVSxtQkFBbUI7b0dBQW5CLG1CQUFtQix1WUNWaEMsa2hHQW1FQTsyRkR6RGEsbUJBQW1CO2tCQUovQixTQUFTOytCQUNFLGlCQUFpQjs2RkFLRSxZQUFZO3NCQUF4QyxTQUFTO3VCQUFDLFFBQVE7Z0JBQ1YsS0FBSztzQkFBYixLQUFLO2dCQUV1QixpQkFBaUI7c0JBQTdDLEtBQUs7dUJBQUMsb0JBQW9CO2dCQUNsQixPQUFPO3NCQUFmLEtBQUs7Z0JBRWMsUUFBUTtzQkFBM0IsS0FBSzt1QkFBQyxXQUFXO2dCQUVSLFFBQVE7c0JBQWpCLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIGZpbHRlciwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUm91dGVyVmlld0FjdGlvbiwgVmlld0FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWZvcm0tbGF5b3V0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1sYXlvdXQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoJykgcHJpdmF0ZSBzZWFyY2hJbnB1dCQ/OiBFbGVtZW50UmVmO1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8taW5wdXQtcmVuYW1lXHJcbiAgQElucHV0KCdzZWFyY2gtcGxhY2Vob2xkZXInKSBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nIHwgbnVsbCA9ICfOsc69zrHOts6uz4TOt8+DzrcnXHJcbiAgQElucHV0KCkgYWN0aW9uczogVmlld0FjdGlvbltdIHwgbnVsbCA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnc3ViLXRpdGxlJykgc3ViVGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtb24tcHJlZml4XHJcbiAgQE91dHB1dCgpIG9uQWN0aW9uOiBFdmVudEVtaXR0ZXI8Vmlld0FjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFZpZXdBY3Rpb24+KCk7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW91dHB1dC1vbi1wcmVmaXhcclxuICBAT3V0cHV0KCkgb25TZWFyY2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXIkOiBSb3V0ZXIpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaElucHV0JD8ubmF0aXZlRWxlbWVudCl7XHJcbiAgICAgIGZyb21FdmVudCh0aGlzLnNlYXJjaElucHV0JC5uYXRpdmVFbGVtZW50LCAna2V5dXAnKS5waXBlKFxyXG4gICAgICAgIG1hcCgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGV2ZW50LnRhcmdldC52YWx1ZTsgLy8gR2V0IGlucHV0IHZhbHVlLlxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGZpbHRlcihpbnB1dFZhbHVlID0+IGlucHV0VmFsdWUubGVuZ3RoID49IDMgfHwgaW5wdXRWYWx1ZS5sZW5ndGggPT09IDApLFxyXG4gICAgICAgIC8vIElmIGNoYXJhY3RlciBsZW5ndGggZ3JlYXRlciB0aGFuIG1pbmltdW1TZWFyY2hDaGFyYWN0ZXJzIHNldHRpbmcuXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLCAvLyBUaW1lIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIGtleSBldmVudHMuXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyBJZiBwcmV2aW91cyBxdWVyeSBpcyBkaWZmZXJlbnQgZnJvbSBjdXJyZW50LlxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2lkZVBhbmVEZWFjdGl2YXRlZCgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdEFjdGlvbkNsaWNrKGFjdGlvbjogVmlld0FjdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5vbkFjdGlvbi5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hBY3Rpb25DbGljayhhY3Rpb246IFZpZXdBY3Rpb24sIHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5vblNlYXJjaC5lbWl0KHRleHQpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoQWN0aW9uVHlwZSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub25TZWFyY2guZW1pdCh0aGlzLnNlYXJjaElucHV0JD8ubmF0aXZlRWxlbWVudC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcm91dGVyTGlua0FjdGlvbkNsaWNrKGFjdGlvbjogUm91dGVyVmlld0FjdGlvbiB8IGFueSwgcmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgaWYgKGFjdGlvbi5vdXRsZXQpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIkLm5hdmlnYXRlKFsnJywgeyBvdXRsZXRzOiB7IGZvcm1SaWdodFBhbmU6IGFjdGlvbi5saW5rIH0gfV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIkLm5hdmlnYXRlKFthY3Rpb24ubGlua10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZvcm0tbGF5b3V0LWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlclwiICpuZ0lmPVwidGl0bGUgfHwgc3ViVGl0bGUgfHwgYWN0aW9uc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyLWlubmVyXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cImZvcm0tdGl0bGVcIj5cclxuICAgICAgICB7eyB0aXRsZSB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgICA8cCBjbGFzcz1cImZvcm0tc3VidGl0bGVcIj5cclxuICAgICAgICB7eyBzdWJUaXRsZSB9fVxyXG4gICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlci1hY3Rpb25zXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zXCIgW25nU3dpdGNoXT1cImFjdGlvbi50eXBlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlYXJjaCdcIj5cclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzZWFyY2hcIiBjbGFzcz1cInNyLW9ubHlcIj5TZWFyY2g8L2xhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCBwbC0zIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPCEtLTxzdmcgY2xhc3M9XCJoLTUgdy01XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04IDRhNCA0IDAgMTAwIDggNCA0IDAgMDAwLTh6TTIgOGE2IDYgMCAxMTEwLjg5IDMuNDc2bDQuODE3IDQuODE3YTEgMSAwIDAxLTEuNDE0IDEuNDE0bC00LjgxNi00LjgxNkE2IDYgMCAwMTIgOHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4tLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cInNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAjc2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VhcmNoLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInNlYXJjaEFjdGlvblR5cGUoc2VhcmNoLnZhbHVlKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWZvcm0tdmlldy1oZWFkZXItc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImFjdGlvbi50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaEFjdGlvbkNsaWNrKGFjdGlvbiwgc2VhcmNoLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICA8aSBbY2xhc3NdPVwiYWN0aW9uLmljb25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncm91dGVyLWxpbmsnXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMSBidG4tZm9ybS12aWV3LWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJhY3Rpb24udG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyb3V0ZXJMaW5rQWN0aW9uQ2xpY2soYWN0aW9uKVwiPlxyXG4gICAgICAgICAgICA8aSBbY2xhc3NdPVwiYWN0aW9uLmljb25cIj48L2k+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTEgYnRuLWZvcm0tdmlldy1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYWN0aW9uLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdEFjdGlvbkNsaWNrKGFjdGlvbilcIj5cclxuICAgICAgICAgICAgPGkgW2NsYXNzXT1cImFjdGlvbi5pY29uXCI+PC9pPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tY29udGVudC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieydmb3JtLWNvbnRlbnQtY29udGFpbmVyLWlubmVyJzogYWN0aW9uc31cIj5cclxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGxpYi1zaWRlLXBhbmUgI2Zvcm1QYW5lIChvbkNvbXBsZXRlKT1cIm9uU2lkZVBhbmVEZWFjdGl2YXRlZCgkZXZlbnQpXCI+XHJcbiAgICA8cm91dGVyLW91dGxldCBuYW1lPVwiZm9ybVJpZ2h0UGFuZVwiXHJcbiAgICAgICAgICAgICAgICAgICAoYWN0aXZhdGUpPVwiZm9ybVBhbmUub25TaWRlUGFuZUFjdGl2YXRlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIChkZWFjdGl2YXRlKT1cImZvcm1QYW5lLm9uU2lkZVBhbmVEZWFjdGl2YXRlZCgkZXZlbnQpXCI+PC9yb3V0ZXItb3V0bGV0PlxyXG4gIDwvbGliLXNpZGUtcGFuZT5cclxuPC9kaXY+XHJcbiJdfQ==
|