@energycap/components 0.44.8 → 0.44.9-Angular19Upgrade.20260217-1620
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/fesm2022/energycap-components.mjs +379 -354
- package/fesm2022/energycap-components.mjs.map +1 -1
- package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
- package/lib/controls/date-input/date-input.component.d.ts +1 -1
- package/lib/controls/form-control-base.d.ts +1 -1
- package/lib/core/date-time-helper.d.ts +2 -2
- package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
- package/lib/display/resizable/resizable-base.d.ts +1 -1
- package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
- package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
- package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
- package/package.json +1 -3
- package/schematics/utilities/typescript.js +3 -4
- package/schematics/utilities/typescript.js.map +1 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +48 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -425
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
- package/esm2022/lib/controls/button/button.component.mjs +0 -114
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -61
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -257
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -82
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tree/tree.component.mjs +0 -139
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- package/esm2022/public-api.mjs +0 -115
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { HierarchyBase } from '../hierarchy-base';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../../core/scroll.service";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@angular/router";
|
|
8
|
-
import * as i4 from "../../../controls/navigation/nav-item-active.directive";
|
|
9
|
-
import * as i5 from "../../../controls/collapsible-toggle/collapsible-toggle.component";
|
|
10
|
-
export class HierarchyTreeComponent extends HierarchyBase {
|
|
11
|
-
constructor(scrollService, injector) {
|
|
12
|
-
super(injector);
|
|
13
|
-
this.scrollService = scrollService;
|
|
14
|
-
/** Allows the root node to be collapsible with a toggle */
|
|
15
|
-
this.collapsibleRootNode = false;
|
|
16
|
-
/** The value of the id attribute of the tree's root HTMLUListElement, suffixed with '_root' */
|
|
17
|
-
this.id = 'HierarchyTree';
|
|
18
|
-
/** Emits a HierarchyItem whenever one is selected by clicking */
|
|
19
|
-
this.itemSelected = new Subject();
|
|
20
|
-
/** The width of the spacing before a tree node, multipled by a HierarchyItem's level. Value is in pixels */
|
|
21
|
-
this.indent = 16;
|
|
22
|
-
/** The value of the id attribute of the tree's scroll container element, used to scroll a selected item into view. */
|
|
23
|
-
this.scrollContainerId = '';
|
|
24
|
-
}
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
this.scrollContainerId = `${this.id}_root`;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Scroll to the item currently marked as is-selected. Wait a tick for the
|
|
30
|
-
* NavItemActiveDirective to update the selected class.
|
|
31
|
-
*/
|
|
32
|
-
scrollToSelectedItem() {
|
|
33
|
-
window.setTimeout(() => {
|
|
34
|
-
const linkSelector = `.item-wrapper.is-selected`;
|
|
35
|
-
this.scrollService.scrollToItem(`#${this.scrollContainerId}`, linkSelector);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* When a HierarchyItem is selected, update the value of the activeUrl property with the value
|
|
40
|
-
* of that item's url property and emit the item to any subscribers.
|
|
41
|
-
*/
|
|
42
|
-
selectItem(item) {
|
|
43
|
-
this.itemSelected.next(item);
|
|
44
|
-
if (item.display === 'heading' && !item.hideToggle) {
|
|
45
|
-
this.toggleItemClicked(item, !item.expanded);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HierarchyTreeComponent, deps: [{ token: i1.ScrollService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: HierarchyTreeComponent, selector: "ec-hierarchy-tree", inputs: { collapsibleRootNode: "collapsibleRootNode", id: "id", hideRootNode: "hideRootNode", customItemTemplate: "customItemTemplate" }, outputs: { itemSelected: "itemSelected" }, usesInheritance: true, ngImport: i0, template: "<ul id=\"{{scrollContainerId}}\"\n class=\"flex-grow scroll-y py-1\">\n\n <li *ngIf=\"!hideRootNode && rootNode\">\n <div class=\"item-wrapper\"\n title=\"{{rootNode?.tooltip ?? rootNode?.label}}\"\n [ngClass]=\"{'is-heading': rootNode?.display === 'heading'}\"\n ecNavItemActive=\"is-selected\"\n [ecNavItemActiveUrl]=\"rootNode?.url\"\n [ecNavItemActiveExactMatch]='rootNode?.isActiveExactMatch'>\n\n <ec-collapsible-toggle id=\"toggle_{{rootNode.id}}\"\n class=\"flex-shrink\"\n [style.width.px]=\"indent\"\n *ngIf=\"rootNode.hasChildren && collapsibleRootNode\"\n [expanded]=\"rootNode.expanded\"\n (expandedChange)=\"toggleItemClicked(rootNode, $event)\">\n </ec-collapsible-toggle>\n\n <a id=\"rootNode_{{rootNode?.id}}_link\"\n class=\"item flex-grow d-flex align-items-center\"\n routerLink=\"{{rootNode?.url}}\"\n [queryParams]=\"rootNode?.queryParams\">\n <ng-container\n *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: rootNode }\"></ng-container>\n </a>\n </div>\n </li>\n\n <ng-template #hierarchyView\n let-items>\n\n @for(item of items; let index = $index; let first = $first; track item) {\n @if(!collapsibleRootNode || (hideRootNode ? true : rootNode.expanded)) {\n <li [ngClass]=\"{'divider': item.display === 'divider'}\"\n id=\"treeItem_{{item.id}}\">\n <div class=\"item-wrapper\"\n title=\"{{item.tooltip ?? item.label}}\"\n [ngClass]=\"{'is-heading': item.display === 'heading'}\"\n ecNavItemActive=\"is-selected\"\n [ecNavItemActiveUrl]=\"item.url\"\n [ecNavItemActiveExactMatch]=\"item.isActiveExactMatch\"\n [ecNavItemActiveQueryParams]=\"item.queryParams\">\n\n <!-- This element provides the indentation for each level -->\n <span id=\"indent_{{item.id}}\"\n *ngIf=\"!item.noIndent\"\n class=\"d-block h-100\"\n [style.width.px]=\"(indent) * (item.level - 1) + (item.level * 4) + (item.hasChildren ? 0 : indent)\">\n </span>\n\n <!-- Toggle the button icon to be a spinner when item.status is pending -->\n <ec-collapsible-toggle id=\"toggle_{{item.id}}\"\n class=\"flex-shrink\"\n [style.width.px]=\"indent\"\n *ngIf=\"item.hasChildren && !item.hideToggle\"\n [hidden]=\"item.status === 'pending'\"\n [expanded]=\"item.expanded\"\n (expandedChange)=\"toggleItemClicked(item, $event)\">\n </ec-collapsible-toggle>\n\n <i class=\"ec-icon icon-loading my-1\"\n [hidden]=\"item.status !== 'pending'\"></i>\n\n <a id=\"treeItem_{{item.id}}_link\"\n class=\"item\"\n *ngIf=\"item.url\"\n (click)=\"selectItem(item)\"\n [routerLink]=\"item.url\"\n [queryParams]=\"item.queryParams\"\n [queryParamsHandling]=\"item.queryParamsHandling || ''\">\n <ng-container\n *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: item }\"></ng-container>\n </a>\n <div id=\"treeItem_{{item.id}}_heading\"\n class=\"item\"\n *ngIf=\"!item.url\"\n (click)=\"selectItem(item)\">\n <ng-container\n *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: item }\"></ng-container>\n </div>\n </div>\n\n\n <ul *ngIf=\"item.children.length > 0 && item.expanded\">\n <ng-container *ngTemplateOutlet=\"hierarchyView; context:{ $implicit: item.children }\"></ng-container>\n </ul>\n </li>\n }\n }\n\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"hierarchyView; context:{ $implicit: rootNode?.children }\"></ng-container>\n</ul>\n\n<ng-template #defaultItemTemplate\n let-item>\n <i class=\"ec-icon {{item.icon}} mx-1 flex-shrink\"\n [attr.title]=\"item.iconTooltip\"\n *ngIf=\"item.icon\"></i>\n <span class=\"mx-1 text-truncate\">{{item.label}}</span>\n</ng-template>", styles: [":host{display:block;font-size:var(--ec-menu-font-size, var(--ec-font-size-action));background-color:var(--ec-menu-background-color, var(--ec-background-color))}ul{padding:0;margin:0;list-style:none;overflow-x:hidden}ul li{white-space:nowrap;padding:0}ul li.divider{border-bottom:1px solid var(--ec-border-color);padding-bottom:.25rem;margin-bottom:.25rem}ul .item-wrapper{display:flex;align-items:center;padding:0 .25rem;margin:0 .25rem;height:1.75rem;border-radius:var(--ec-border-radius)}ul .item-wrapper.is-heading{cursor:pointer;color:var(--ec-color-hint-dark);text-transform:uppercase;font-weight:var(--ec-font-weight-bold);font-size:var(--ec-font-size-label)}ul .item-wrapper:hover{background-color:var(--ec-background-color-hover)}ul .item-wrapper.is-selected{font-weight:700}ul .item-wrapper a{text-decoration:none}ul .item{color:inherit;display:flex;align-items:center;flex:1 1;min-height:0;min-width:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.NavItemActiveDirective, selector: "[ecNavItemActive]", inputs: ["ecNavItemActive", "ecNavItemActiveExactMatch", "ecNavItemActiveQueryParams", "ecNavItemActiveUrl"], outputs: ["routerLinkActivated"] }, { kind: "component", type: i5.CollapsibleToggleComponent, selector: "ec-collapsible-toggle", inputs: ["id", "expanded", "tabindex"], outputs: ["expandedChange"] }] }); }
|
|
50
|
-
}
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HierarchyTreeComponent, decorators: [{
|
|
52
|
-
type: Component,
|
|
53
|
-
args: [{ selector: 'ec-hierarchy-tree', template: "<ul id=\"{{scrollContainerId}}\"\n class=\"flex-grow scroll-y py-1\">\n\n <li *ngIf=\"!hideRootNode && rootNode\">\n <div class=\"item-wrapper\"\n title=\"{{rootNode?.tooltip ?? rootNode?.label}}\"\n [ngClass]=\"{'is-heading': rootNode?.display === 'heading'}\"\n ecNavItemActive=\"is-selected\"\n [ecNavItemActiveUrl]=\"rootNode?.url\"\n [ecNavItemActiveExactMatch]='rootNode?.isActiveExactMatch'>\n\n <ec-collapsible-toggle id=\"toggle_{{rootNode.id}}\"\n class=\"flex-shrink\"\n [style.width.px]=\"indent\"\n *ngIf=\"rootNode.hasChildren && collapsibleRootNode\"\n [expanded]=\"rootNode.expanded\"\n (expandedChange)=\"toggleItemClicked(rootNode, $event)\">\n </ec-collapsible-toggle>\n\n <a id=\"rootNode_{{rootNode?.id}}_link\"\n class=\"item flex-grow d-flex align-items-center\"\n routerLink=\"{{rootNode?.url}}\"\n [queryParams]=\"rootNode?.queryParams\">\n <ng-container\n *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: rootNode }\"></ng-container>\n </a>\n </div>\n </li>\n\n <ng-template #hierarchyView\n let-items>\n\n @for(item of items; let index = $index; let first = $first; track item) {\n @if(!collapsibleRootNode || (hideRootNode ? true : rootNode.expanded)) {\n <li [ngClass]=\"{'divider': item.display === 'divider'}\"\n id=\"treeItem_{{item.id}}\">\n <div class=\"item-wrapper\"\n title=\"{{item.tooltip ?? item.label}}\"\n [ngClass]=\"{'is-heading': item.display === 'heading'}\"\n ecNavItemActive=\"is-selected\"\n [ecNavItemActiveUrl]=\"item.url\"\n [ecNavItemActiveExactMatch]=\"item.isActiveExactMatch\"\n [ecNavItemActiveQueryParams]=\"item.queryParams\">\n\n <!-- This element provides the indentation for each level -->\n <span id=\"indent_{{item.id}}\"\n *ngIf=\"!item.noIndent\"\n class=\"d-block h-100\"\n [style.width.px]=\"(indent) * (item.level - 1) + (item.level * 4) + (item.hasChildren ? 0 : indent)\">\n </span>\n\n <!-- Toggle the button icon to be a spinner when item.status is pending -->\n <ec-collapsible-toggle id=\"toggle_{{item.id}}\"\n class=\"flex-shrink\"\n [style.width.px]=\"indent\"\n *ngIf=\"item.hasChildren && !item.hideToggle\"\n [hidden]=\"item.status === 'pending'\"\n [expanded]=\"item.expanded\"\n (expandedChange)=\"toggleItemClicked(item, $event)\">\n </ec-collapsible-toggle>\n\n <i class=\"ec-icon icon-loading my-1\"\n [hidden]=\"item.status !== 'pending'\"></i>\n\n <a id=\"treeItem_{{item.id}}_link\"\n class=\"item\"\n *ngIf=\"item.url\"\n (click)=\"selectItem(item)\"\n [routerLink]=\"item.url\"\n [queryParams]=\"item.queryParams\"\n [queryParamsHandling]=\"item.queryParamsHandling || ''\">\n <ng-container\n *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: item }\"></ng-container>\n </a>\n <div id=\"treeItem_{{item.id}}_heading\"\n class=\"item\"\n *ngIf=\"!item.url\"\n (click)=\"selectItem(item)\">\n <ng-container\n *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: item }\"></ng-container>\n </div>\n </div>\n\n\n <ul *ngIf=\"item.children.length > 0 && item.expanded\">\n <ng-container *ngTemplateOutlet=\"hierarchyView; context:{ $implicit: item.children }\"></ng-container>\n </ul>\n </li>\n }\n }\n\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"hierarchyView; context:{ $implicit: rootNode?.children }\"></ng-container>\n</ul>\n\n<ng-template #defaultItemTemplate\n let-item>\n <i class=\"ec-icon {{item.icon}} mx-1 flex-shrink\"\n [attr.title]=\"item.iconTooltip\"\n *ngIf=\"item.icon\"></i>\n <span class=\"mx-1 text-truncate\">{{item.label}}</span>\n</ng-template>", styles: [":host{display:block;font-size:var(--ec-menu-font-size, var(--ec-font-size-action));background-color:var(--ec-menu-background-color, var(--ec-background-color))}ul{padding:0;margin:0;list-style:none;overflow-x:hidden}ul li{white-space:nowrap;padding:0}ul li.divider{border-bottom:1px solid var(--ec-border-color);padding-bottom:.25rem;margin-bottom:.25rem}ul .item-wrapper{display:flex;align-items:center;padding:0 .25rem;margin:0 .25rem;height:1.75rem;border-radius:var(--ec-border-radius)}ul .item-wrapper.is-heading{cursor:pointer;color:var(--ec-color-hint-dark);text-transform:uppercase;font-weight:var(--ec-font-weight-bold);font-size:var(--ec-font-size-label)}ul .item-wrapper:hover{background-color:var(--ec-background-color-hover)}ul .item-wrapper.is-selected{font-weight:700}ul .item-wrapper a{text-decoration:none}ul .item{color:inherit;display:flex;align-items:center;flex:1 1;min-height:0;min-width:0}\n"] }]
|
|
54
|
-
}], ctorParameters: () => [{ type: i1.ScrollService }, { type: i0.Injector }], propDecorators: { collapsibleRootNode: [{
|
|
55
|
-
type: Input
|
|
56
|
-
}], id: [{
|
|
57
|
-
type: Input
|
|
58
|
-
}], hideRootNode: [{
|
|
59
|
-
type: Input
|
|
60
|
-
}], customItemTemplate: [{
|
|
61
|
-
type: Input
|
|
62
|
-
}], itemSelected: [{
|
|
63
|
-
type: Output
|
|
64
|
-
}] } });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2h5LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvaGllcmFyY2h5L2hpZXJhcmNoeS10cmVlL2hpZXJhcmNoeS10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2hpZXJhcmNoeS9oaWVyYXJjaHktdHJlZS9oaWVyYXJjaHktdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFZLEtBQUssRUFBVSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBdUJ2RCxZQUNVLGFBQTRCLEVBQ3BDLFFBQWtCO1FBQ2hCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZWLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBdEJ0QywyREFBMkQ7UUFDM0Msd0JBQW1CLEdBQWEsS0FBSyxDQUFDO1FBRXRELCtGQUErRjtRQUMvRSxPQUFFLEdBQVcsZUFBZSxDQUFDO1FBUTdDLGlFQUFpRTtRQUNoRCxpQkFBWSxHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRXRFLDRHQUE0RztRQUNyRyxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRW5CLHVIQUF1SDtRQUNoSCxzQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFLVCxDQUFDO0lBRWYsUUFBUTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksb0JBQW9CO1FBQ3pCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLElBQW1CO1FBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzsrR0FwRFUsc0JBQXNCO21HQUF0QixzQkFBc0IscVFDVm5DLG0ySUFzR2M7OzRGRDVGRCxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1CO3lHQU9iLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFHVSxFQUFFO3NCQUFqQixLQUFLO2dCQUdVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBR1Usa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUdXLFlBQVk7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTY3JvbGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zY3JvbGwuc2VydmljZSc7XG5pbXBvcnQgeyBIaWVyYXJjaHlCYXNlLCBIaWVyYXJjaHlJdGVtIH0gZnJvbSAnLi4vaGllcmFyY2h5LWJhc2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlYy1oaWVyYXJjaHktdHJlZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9oaWVyYXJjaHktdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hpZXJhcmNoeS10cmVlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSGllcmFyY2h5VHJlZUNvbXBvbmVudCBleHRlbmRzIEhpZXJhcmNoeUJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8qKiBBbGxvd3MgdGhlIHJvb3Qgbm9kZSB0byBiZSBjb2xsYXBzaWJsZSB3aXRoIGEgdG9nZ2xlICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2xsYXBzaWJsZVJvb3ROb2RlPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGlkIGF0dHJpYnV0ZSBvZiB0aGUgdHJlZSdzIHJvb3QgSFRNTFVMaXN0RWxlbWVudCwgc3VmZml4ZWQgd2l0aCAnX3Jvb3QnICovXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gJ0hpZXJhcmNoeVRyZWUnO1xuXG4gIC8qKiBIaWRlIHRoZSByb290IG5vZGUgKi9cbiAgQElucHV0KCkgcHVibGljIGhpZGVSb290Tm9kZT86IGJvb2xlYW47XG5cbiAgLyoqIEN1c3RvbSBpdGVtIHRlbXBsYXRlIHRvIHVzZSBpbiBwbGFjZSBvZiB0aGUgZGVmYXVsdCBvbmUgKi9cbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIEVtaXRzIGEgSGllcmFyY2h5SXRlbSB3aGVuZXZlciBvbmUgaXMgc2VsZWN0ZWQgYnkgY2xpY2tpbmcgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyBpdGVtU2VsZWN0ZWQ6IFN1YmplY3Q8SGllcmFyY2h5SXRlbT4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8qKiBUaGUgd2lkdGggb2YgdGhlIHNwYWNpbmcgYmVmb3JlIGEgdHJlZSBub2RlLCBtdWx0aXBsZWQgYnkgYSBIaWVyYXJjaHlJdGVtJ3MgbGV2ZWwuIFZhbHVlIGlzIGluIHBpeGVscyAqL1xuICBwdWJsaWMgaW5kZW50ID0gMTY7XG5cbiAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgaWQgYXR0cmlidXRlIG9mIHRoZSB0cmVlJ3Mgc2Nyb2xsIGNvbnRhaW5lciBlbGVtZW50LCB1c2VkIHRvIHNjcm9sbCBhIHNlbGVjdGVkIGl0ZW0gaW50byB2aWV3LiAgKi9cbiAgcHVibGljIHNjcm9sbENvbnRhaW5lcklkID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzY3JvbGxTZXJ2aWNlOiBTY3JvbGxTZXJ2aWNlLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7IHN1cGVyKGluamVjdG9yKTsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lcklkID0gYCR7dGhpcy5pZH1fcm9vdGA7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xsIHRvIHRoZSBpdGVtIGN1cnJlbnRseSBtYXJrZWQgYXMgaXMtc2VsZWN0ZWQuIFdhaXQgYSB0aWNrIGZvciB0aGVcbiAgICogTmF2SXRlbUFjdGl2ZURpcmVjdGl2ZSB0byB1cGRhdGUgdGhlIHNlbGVjdGVkIGNsYXNzLlxuICAgKi9cbiAgcHVibGljIHNjcm9sbFRvU2VsZWN0ZWRJdGVtKCk6IHZvaWQge1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmtTZWxlY3RvciA9IGAuaXRlbS13cmFwcGVyLmlzLXNlbGVjdGVkYDtcbiAgICAgIHRoaXMuc2Nyb2xsU2VydmljZS5zY3JvbGxUb0l0ZW0oYCMke3RoaXMuc2Nyb2xsQ29udGFpbmVySWR9YCwgbGlua1NlbGVjdG9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGEgSGllcmFyY2h5SXRlbSBpcyBzZWxlY3RlZCwgdXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgYWN0aXZlVXJsIHByb3BlcnR5IHdpdGggdGhlIHZhbHVlXG4gICAqIG9mIHRoYXQgaXRlbSdzIHVybCBwcm9wZXJ0eSBhbmQgZW1pdCB0aGUgaXRlbSB0byBhbnkgc3Vic2NyaWJlcnMuXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0SXRlbShpdGVtOiBIaWVyYXJjaHlJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQubmV4dChpdGVtKTtcbiAgICBpZiAoaXRlbS5kaXNwbGF5ID09PSAnaGVhZGluZycgJiYgIWl0ZW0uaGlkZVRvZ2dsZSkge1xuICAgICAgdGhpcy50b2dnbGVJdGVtQ2xpY2tlZChpdGVtLCAhaXRlbS5leHBhbmRlZCk7XG4gICAgfVxuICB9XG59XG4iLCI8dWwgaWQ9XCJ7e3Njcm9sbENvbnRhaW5lcklkfX1cIlxuICAgIGNsYXNzPVwiZmxleC1ncm93IHNjcm9sbC15IHB5LTFcIj5cblxuICA8bGkgKm5nSWY9XCIhaGlkZVJvb3ROb2RlICYmIHJvb3ROb2RlXCI+XG4gICAgPGRpdiBjbGFzcz1cIml0ZW0td3JhcHBlclwiXG4gICAgICAgICB0aXRsZT1cInt7cm9vdE5vZGU/LnRvb2x0aXAgPz8gcm9vdE5vZGU/LmxhYmVsfX1cIlxuICAgICAgICAgW25nQ2xhc3NdPVwieydpcy1oZWFkaW5nJzogcm9vdE5vZGU/LmRpc3BsYXkgPT09ICdoZWFkaW5nJ31cIlxuICAgICAgICAgZWNOYXZJdGVtQWN0aXZlPVwiaXMtc2VsZWN0ZWRcIlxuICAgICAgICAgW2VjTmF2SXRlbUFjdGl2ZVVybF09XCJyb290Tm9kZT8udXJsXCJcbiAgICAgICAgIFtlY05hdkl0ZW1BY3RpdmVFeGFjdE1hdGNoXT0ncm9vdE5vZGU/LmlzQWN0aXZlRXhhY3RNYXRjaCc+XG5cbiAgICAgIDxlYy1jb2xsYXBzaWJsZS10b2dnbGUgaWQ9XCJ0b2dnbGVfe3tyb290Tm9kZS5pZH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJpbmRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJvb3ROb2RlLmhhc0NoaWxkcmVuICYmIGNvbGxhcHNpYmxlUm9vdE5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwicm9vdE5vZGUuZXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwYW5kZWRDaGFuZ2UpPVwidG9nZ2xlSXRlbUNsaWNrZWQocm9vdE5vZGUsICRldmVudClcIj5cbiAgICAgIDwvZWMtY29sbGFwc2libGUtdG9nZ2xlPlxuXG4gICAgICA8YSBpZD1cInJvb3ROb2RlX3t7cm9vdE5vZGU/LmlkfX1fbGlua1wiXG4gICAgICAgICBjbGFzcz1cIml0ZW0gZmxleC1ncm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgcm91dGVyTGluaz1cInt7cm9vdE5vZGU/LnVybH19XCJcbiAgICAgICAgIFtxdWVyeVBhcmFtc109XCJyb290Tm9kZT8ucXVlcnlQYXJhbXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb290Tm9kZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvbGk+XG5cbiAgPG5nLXRlbXBsYXRlICNoaWVyYXJjaHlWaWV3XG4gICAgICAgICAgICAgICBsZXQtaXRlbXM+XG5cbiAgICBAZm9yKGl0ZW0gb2YgaXRlbXM7IGxldCBpbmRleCA9ICRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0OyB0cmFjayBpdGVtKSB7XG4gICAgQGlmKCFjb2xsYXBzaWJsZVJvb3ROb2RlIHx8IChoaWRlUm9vdE5vZGUgPyB0cnVlIDogcm9vdE5vZGUuZXhwYW5kZWQpKSB7XG4gICAgPGxpIFtuZ0NsYXNzXT1cInsnZGl2aWRlcic6IGl0ZW0uZGlzcGxheSA9PT0gJ2RpdmlkZXInfVwiXG4gICAgICAgIGlkPVwidHJlZUl0ZW1fe3tpdGVtLmlkfX1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXdyYXBwZXJcIlxuICAgICAgICAgICB0aXRsZT1cInt7aXRlbS50b29sdGlwID8/IGl0ZW0ubGFiZWx9fVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaGVhZGluZyc6IGl0ZW0uZGlzcGxheSA9PT0gJ2hlYWRpbmcnfVwiXG4gICAgICAgICAgIGVjTmF2SXRlbUFjdGl2ZT1cImlzLXNlbGVjdGVkXCJcbiAgICAgICAgICAgW2VjTmF2SXRlbUFjdGl2ZVVybF09XCJpdGVtLnVybFwiXG4gICAgICAgICAgIFtlY05hdkl0ZW1BY3RpdmVFeGFjdE1hdGNoXT1cIml0ZW0uaXNBY3RpdmVFeGFjdE1hdGNoXCJcbiAgICAgICAgICAgW2VjTmF2SXRlbUFjdGl2ZVF1ZXJ5UGFyYW1zXT1cIml0ZW0ucXVlcnlQYXJhbXNcIj5cblxuICAgICAgICA8IS0tIFRoaXMgZWxlbWVudCBwcm92aWRlcyB0aGUgaW5kZW50YXRpb24gZm9yIGVhY2ggbGV2ZWwgLS0+XG4gICAgICAgIDxzcGFuIGlkPVwiaW5kZW50X3t7aXRlbS5pZH19XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5ub0luZGVudFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9jayBoLTEwMFwiXG4gICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIoaW5kZW50KSAqIChpdGVtLmxldmVsIC0gMSkgKyAoaXRlbS5sZXZlbCAqIDQpICsgKGl0ZW0uaGFzQ2hpbGRyZW4gPyAwIDogaW5kZW50KVwiPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPCEtLSBUb2dnbGUgdGhlIGJ1dHRvbiBpY29uIHRvIGJlIGEgc3Bpbm5lciB3aGVuIGl0ZW0uc3RhdHVzIGlzIHBlbmRpbmcgLS0+XG4gICAgICAgIDxlYy1jb2xsYXBzaWJsZS10b2dnbGUgaWQ9XCJ0b2dnbGVfe3tpdGVtLmlkfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1zaHJpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJpbmRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5oYXNDaGlsZHJlbiAmJiAhaXRlbS5oaWRlVG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uc3RhdHVzID09PSAncGVuZGluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJpdGVtLmV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwYW5kZWRDaGFuZ2UpPVwidG9nZ2xlSXRlbUNsaWNrZWQoaXRlbSwgJGV2ZW50KVwiPlxuICAgICAgICA8L2VjLWNvbGxhcHNpYmxlLXRvZ2dsZT5cblxuICAgICAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1sb2FkaW5nIG15LTFcIlxuICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uc3RhdHVzICE9PSAncGVuZGluZydcIj48L2k+XG5cbiAgICAgICAgPGEgaWQ9XCJ0cmVlSXRlbV97e2l0ZW0uaWR9fV9saW5rXCJcbiAgICAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgICAgKm5nSWY9XCJpdGVtLnVybFwiXG4gICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIlxuICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cIml0ZW0ucXVlcnlQYXJhbXNIYW5kbGluZyB8fCAnJ1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgICAgICA8ZGl2IGlkPVwidHJlZUl0ZW1fe3tpdGVtLmlkfX1faGVhZGluZ1wiXG4gICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLnVybFwiXG4gICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oaXRlbSlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUl0ZW1UZW1wbGF0ZSB8fCBkZWZhdWx0SXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cblxuICAgICAgPHVsICpuZ0lmPVwiaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwICYmIGl0ZW0uZXhwYW5kZWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhpZXJhcmNoeVZpZXc7IGNvbnRleHQ6eyAkaW1wbGljaXQ6IGl0ZW0uY2hpbGRyZW4gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC91bD5cbiAgICA8L2xpPlxuICAgIH1cbiAgICB9XG5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGllcmFyY2h5VmlldzsgY29udGV4dDp7ICRpbXBsaWNpdDogcm9vdE5vZGU/LmNoaWxkcmVuIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvdWw+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZVxuICAgICAgICAgICAgIGxldC1pdGVtPlxuICA8aSBjbGFzcz1cImVjLWljb24ge3tpdGVtLmljb259fSBteC0xIGZsZXgtc2hyaW5rXCJcbiAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS5pY29uVG9vbHRpcFwiXG4gICAgICpuZ0lmPVwiaXRlbS5pY29uXCI+PC9pPlxuICA8c3BhbiBjbGFzcz1cIm14LTEgdGV4dC10cnVuY2F0ZVwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { Component, Input, HostBinding } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "../../controls/help-popover/help-popover.component";
|
|
6
|
-
import * as i4 from "@ngx-translate/core";
|
|
7
|
-
export class ItemDisplayComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
/** The value of the host element's id attribute */
|
|
10
|
-
this.id = '';
|
|
11
|
-
this.internalValue = { value: '' };
|
|
12
|
-
/**
|
|
13
|
-
* Set link as an href or routerLink
|
|
14
|
-
*/
|
|
15
|
-
this.externalLink = false;
|
|
16
|
-
this.condensed = false;
|
|
17
|
-
/**
|
|
18
|
-
* The link target when url is provided. Defaults to _self (same window)
|
|
19
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
|
|
20
|
-
*/
|
|
21
|
-
this.target = '_self';
|
|
22
|
-
}
|
|
23
|
-
set labelHelpPopover(labelHelpPopover) {
|
|
24
|
-
if (typeof labelHelpPopover === 'string') {
|
|
25
|
-
this._labelHelpPopover = { text: labelHelpPopover };
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this._labelHelpPopover = labelHelpPopover;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
get labelHelpPopover() {
|
|
32
|
-
return this._labelHelpPopover;
|
|
33
|
-
}
|
|
34
|
-
set value(value) {
|
|
35
|
-
if (typeof value === 'string') {
|
|
36
|
-
this.internalValue = { value: value };
|
|
37
|
-
}
|
|
38
|
-
else if (value) {
|
|
39
|
-
this.internalValue = value;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this.internalValue = { value: '' };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
;
|
|
46
|
-
/**
|
|
47
|
-
* When provided, displays the value as a link
|
|
48
|
-
*/
|
|
49
|
-
set url(value) {
|
|
50
|
-
this.externalLink = (value?.startsWith('http')) ? true : false;
|
|
51
|
-
this._url = value;
|
|
52
|
-
}
|
|
53
|
-
;
|
|
54
|
-
get url() {
|
|
55
|
-
return this._url;
|
|
56
|
-
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ItemDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ItemDisplayComponent, selector: "ec-item-display", inputs: { id: "id", label: "label", labelHelpPopover: "labelHelpPopover", value: "value", url: "url", queryParams: "queryParams", condensed: "condensed", target: "target" }, host: { properties: { "attr.id": "this.id" } }, ngImport: i0, template: "<div id=\"{{id}}_label_0\"\n class=\"text-caption-1 d-flex align-items-center\">\n <span>{{label | translate}}</span>\n <ec-help-popover *ngIf=\"labelHelpPopover\"\n class=\"mx-n1 my-n2\"\n [text]=\"labelHelpPopover.text\"\n [contentPosition]=\"labelHelpPopover?.contentPosition ?? 'top-left'\"\n [maxWidth]=\"labelHelpPopover?.maxWidth ?? '15rem'\">\n </ec-help-popover>\n</div>\n\n<div id=\"{{id}}_value_0\" class=\"{{condensed ? 'text-body-2' : 'text-display-1'}} {{internalValue.classnames}}\"\n [class.font-color-hint]=\"!internalValue.value && internalValue.noValueText\"\n title=\"{{internalValue.tooltip}}\">\n\n <ng-container *ngIf=\"url else content\">\n <a *ngIf=\"!externalLink\"\n id=\"{{id}}_link\"\n [routerLink]=\"url\"\n [queryParams]=\"queryParams\"\n target=\"{{target}}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n <a *ngIf=\"externalLink\"\n id=\"{{id}}_link\"\n href=\"{{url}}\"\n target=\"{{target}}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n </ng-container>\n</div>\n\n\n<ng-template #content>\n <i *ngIf=\"internalValue?.icon\" class=\"ec-icon {{internalValue?.icon}}\"></i>\n <span>{{(internalValue?.value || internalValue?.noValueText) | translate}}</span>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;margin-bottom:1rem;vertical-align:top}.ec-icon{font-size:1em;top:.125em;position:relative;margin-right:.25em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.HelpPopoverComponent, selector: "ec-help-popover", inputs: ["id", "text", "contentPosition", "maxWidth"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
59
|
-
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ItemDisplayComponent, decorators: [{
|
|
61
|
-
type: Component,
|
|
62
|
-
args: [{ selector: 'ec-item-display', template: "<div id=\"{{id}}_label_0\"\n class=\"text-caption-1 d-flex align-items-center\">\n <span>{{label | translate}}</span>\n <ec-help-popover *ngIf=\"labelHelpPopover\"\n class=\"mx-n1 my-n2\"\n [text]=\"labelHelpPopover.text\"\n [contentPosition]=\"labelHelpPopover?.contentPosition ?? 'top-left'\"\n [maxWidth]=\"labelHelpPopover?.maxWidth ?? '15rem'\">\n </ec-help-popover>\n</div>\n\n<div id=\"{{id}}_value_0\" class=\"{{condensed ? 'text-body-2' : 'text-display-1'}} {{internalValue.classnames}}\"\n [class.font-color-hint]=\"!internalValue.value && internalValue.noValueText\"\n title=\"{{internalValue.tooltip}}\">\n\n <ng-container *ngIf=\"url else content\">\n <a *ngIf=\"!externalLink\"\n id=\"{{id}}_link\"\n [routerLink]=\"url\"\n [queryParams]=\"queryParams\"\n target=\"{{target}}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n <a *ngIf=\"externalLink\"\n id=\"{{id}}_link\"\n href=\"{{url}}\"\n target=\"{{target}}\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n </ng-container>\n</div>\n\n\n<ng-template #content>\n <i *ngIf=\"internalValue?.icon\" class=\"ec-icon {{internalValue?.icon}}\"></i>\n <span>{{(internalValue?.value || internalValue?.noValueText) | translate}}</span>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:inline-block;margin-bottom:1rem;vertical-align:top}.ec-icon{font-size:1em;top:.125em;position:relative;margin-right:.25em}\n"] }]
|
|
63
|
-
}], propDecorators: { id: [{
|
|
64
|
-
type: HostBinding,
|
|
65
|
-
args: ['attr.id']
|
|
66
|
-
}, {
|
|
67
|
-
type: Input
|
|
68
|
-
}], label: [{
|
|
69
|
-
type: Input
|
|
70
|
-
}], labelHelpPopover: [{
|
|
71
|
-
type: Input
|
|
72
|
-
}], value: [{
|
|
73
|
-
type: Input
|
|
74
|
-
}], url: [{
|
|
75
|
-
type: Input
|
|
76
|
-
}], queryParams: [{
|
|
77
|
-
type: Input
|
|
78
|
-
}], condensed: [{
|
|
79
|
-
type: Input
|
|
80
|
-
}], target: [{
|
|
81
|
-
type: Input
|
|
82
|
-
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2l0ZW0tZGlzcGxheS9pdGVtLWRpc3BsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvaXRlbS1kaXNwbGF5L2l0ZW0tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQXVCOUQsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU9FLG1EQUFtRDtRQUVuQyxPQUFFLEdBQVcsRUFBRSxDQUFDO1FBMEJ6QixrQkFBYSxHQUFpQixFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztRQW9CakQ7O1dBRUc7UUFDSSxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUVyQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxDOzs7V0FHRztRQUNhLFdBQU0sR0FBZSxPQUFPLENBQUM7S0FDOUM7SUFyREMsSUFBYSxnQkFBZ0IsQ0FBQyxnQkFBd0Q7UUFDcEYsSUFBRyxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUdELElBQWEsS0FBSyxDQUFDLEtBQXdDO1FBQ3pELElBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFBQSxDQUFDO0lBR0Y7O09BRUc7SUFDSCxJQUFhLEdBQUcsQ0FBQyxLQUF5QjtRQUN4QyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQUEsQ0FBQztJQUNGLElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDOytHQXpDVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixxUkN2QmpDLDg2Q0FzQ0E7OzRGRGZhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUI7OEJBUVgsRUFBRTtzQkFEakIsV0FBVzt1QkFBQyxTQUFTOztzQkFDckIsS0FBSztnQkFFVSxLQUFLO3NCQUFwQixLQUFLO2dCQUdPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFZTyxLQUFLO3NCQUFqQixLQUFLO2dCQWNPLEdBQUc7c0JBQWYsS0FBSztnQkFhVSxXQUFXO3NCQUExQixLQUFLO2dCQU9VLFNBQVM7c0JBQXhCLEtBQUs7Z0JBTVUsTUFBTTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3BvdmVyQ29udGVudFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaW5rVGFyZ2V0IH0gZnJvbSAnLi4vdGFncy90YWcnO1xuXG5leHBvcnQgdHlwZSBEaXNwbGF5VmFsdWUgPSB7XG4gIHZhbHVlOnN0cmluZyxcbiAgY2xhc3NuYW1lcz86c3RyaW5nLFxuICBpY29uPzpzdHJpbmcsXG4gIG5vVmFsdWVUZXh0PzpzdHJpbmcsXG4gIHRvb2x0aXA/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgSGVscFBvcG92ZXJDb25maWcgPSB7XG4gIHRleHQ6IHN0cmluZztcbiAgY29udGVudFBvc2l0aW9uPzogUG9wb3ZlckNvbnRlbnRQb3NpdGlvbjtcbiAgbWF4V2lkdGg/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjLWl0ZW0tZGlzcGxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pdGVtLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pdGVtLWRpc3BsYXkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJdGVtRGlzcGxheUNvbXBvbmVudCB7XG5cbiAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgaG9zdCBlbGVtZW50J3MgaWQgYXR0cmlidXRlICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgcHVibGljIGxhYmVsITogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2xhYmVsSGVscFBvcG92ZXI/OiBIZWxwUG9wb3ZlckNvbmZpZztcbiAgQElucHV0KCkgc2V0IGxhYmVsSGVscFBvcG92ZXIobGFiZWxIZWxwUG9wb3Zlcjogc3RyaW5nIHwgSGVscFBvcG92ZXJDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICBpZih0eXBlb2YgbGFiZWxIZWxwUG9wb3ZlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2xhYmVsSGVscFBvcG92ZXIgPSB7IHRleHQ6IGxhYmVsSGVscFBvcG92ZXIgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGFiZWxIZWxwUG9wb3ZlciA9IGxhYmVsSGVscFBvcG92ZXI7XG4gICAgfVxuICB9XG4gIGdldCBsYWJlbEhlbHBQb3BvdmVyKCk6IEhlbHBQb3BvdmVyQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxIZWxwUG9wb3ZlcjtcbiAgfVxuXG5cbiAgQElucHV0KCkgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEaXNwbGF5VmFsdWUgfCB1bmRlZmluZWQpIHtcbiAgICBpZih0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB7dmFsdWU6IHZhbHVlfTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlID0ge3ZhbHVlOiAnJ307XG4gICAgfVxuICB9O1xuICBwdWJsaWMgaW50ZXJuYWxWYWx1ZTogRGlzcGxheVZhbHVlID0ge3ZhbHVlOiAnJ307XG5cbiAgLyoqXG4gICAqIFdoZW4gcHJvdmlkZWQsIGRpc3BsYXlzIHRoZSB2YWx1ZSBhcyBhIGxpbmtcbiAgICovXG4gIEBJbnB1dCgpIHNldCB1cmwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuZXh0ZXJuYWxMaW5rID0gKHZhbHVlPy5zdGFydHNXaXRoKCdodHRwJykpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuX3VybCA9IHZhbHVlO1xuICB9O1xuICBnZXQgdXJsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuICBwcml2YXRlIF91cmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSBVUkwuIFdoZW4gcHJvdmlkZWQsIHRoZXNlIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHBhcnNpbmcgcXVlcnkgcGFyYW1zIGZyb20gdGhlIFVSTCBzdHJpbmcuXG4gICAqIFRoaXMgcHJldmVudHMgVVJMIGVuY29kaW5nIGlzc3VlcyB3aXRoIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBTZXQgbGluayBhcyBhbiBocmVmIG9yIHJvdXRlckxpbmtcbiAgICovXG4gIHB1YmxpYyBleHRlcm5hbExpbms6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgY29uZGVuc2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBsaW5rIHRhcmdldCB3aGVuIHVybCBpcyBwcm92aWRlZC4gRGVmYXVsdHMgdG8gX3NlbGYgKHNhbWUgd2luZG93KVxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9hXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgdGFyZ2V0OiBMaW5rVGFyZ2V0ID0gJ19zZWxmJztcbn1cbiIsIjxkaXYgaWQ9XCJ7e2lkfX1fbGFiZWxfMFwiXG4gICAgIGNsYXNzPVwidGV4dC1jYXB0aW9uLTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICA8c3Bhbj57e2xhYmVsIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gIDxlYy1oZWxwLXBvcG92ZXIgKm5nSWY9XCJsYWJlbEhlbHBQb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm14LW4xIG15LW4yXCJcbiAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJsYWJlbEhlbHBQb3BvdmVyLnRleHRcIlxuICAgICAgICAgICAgICAgICAgIFtjb250ZW50UG9zaXRpb25dPVwibGFiZWxIZWxwUG9wb3Zlcj8uY29udGVudFBvc2l0aW9uID8/ICd0b3AtbGVmdCdcIlxuICAgICAgICAgICAgICAgICAgIFttYXhXaWR0aF09XCJsYWJlbEhlbHBQb3BvdmVyPy5tYXhXaWR0aCA/PyAnMTVyZW0nXCI+XG4gIDwvZWMtaGVscC1wb3BvdmVyPlxuPC9kaXY+XG5cbjxkaXYgaWQ9XCJ7e2lkfX1fdmFsdWVfMFwiIGNsYXNzPVwie3tjb25kZW5zZWQgPyAndGV4dC1ib2R5LTInIDogJ3RleHQtZGlzcGxheS0xJ319IHt7aW50ZXJuYWxWYWx1ZS5jbGFzc25hbWVzfX1cIlxuICAgICBbY2xhc3MuZm9udC1jb2xvci1oaW50XT1cIiFpbnRlcm5hbFZhbHVlLnZhbHVlICYmIGludGVybmFsVmFsdWUubm9WYWx1ZVRleHRcIlxuICAgICB0aXRsZT1cInt7aW50ZXJuYWxWYWx1ZS50b29sdGlwfX1cIj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidXJsIGVsc2UgY29udGVudFwiPlxuICAgIDxhICpuZ0lmPVwiIWV4dGVybmFsTGlua1wiXG4gICAgICAgIGlkPVwie3tpZH19X2xpbmtcIlxuICAgICAgICBbcm91dGVyTGlua109XCJ1cmxcIlxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwicXVlcnlQYXJhbXNcIlxuICAgICAgICB0YXJnZXQ9XCJ7e3RhcmdldH19XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYT5cbiAgICA8YSAqbmdJZj1cImV4dGVybmFsTGlua1wiXG4gICAgICAgIGlkPVwie3tpZH19X2xpbmtcIlxuICAgICAgICBocmVmPVwie3t1cmx9fVwiXG4gICAgICAgIHRhcmdldD1cInt7dGFyZ2V0fX1cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9hPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPGkgKm5nSWY9XCJpbnRlcm5hbFZhbHVlPy5pY29uXCIgY2xhc3M9XCJlYy1pY29uIHt7aW50ZXJuYWxWYWx1ZT8uaWNvbn19XCI+PC9pPlxuICA8c3Bhbj57eyhpbnRlcm5hbFZhbHVlPy52YWx1ZSB8fCBpbnRlcm5hbFZhbHVlPy5ub1ZhbHVlVGV4dCkgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
-
import { UntypedFormControl } from '@angular/forms';
|
|
3
|
-
import { JsonHelper } from '../../shared/json-helper';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@ngx-translate/core";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "../../controls/button/button.component";
|
|
8
|
-
import * as i4 from "../../controls/button/copy-button.directive";
|
|
9
|
-
export class JsonDisplayComponent {
|
|
10
|
-
constructor(translate) {
|
|
11
|
-
this.translate = translate;
|
|
12
|
-
this.maxLength = 10000;
|
|
13
|
-
this.jsonDisplay = new UntypedFormControl('');
|
|
14
|
-
}
|
|
15
|
-
ngOnChanges() {
|
|
16
|
-
if (this.id) {
|
|
17
|
-
this.attrId = this.id;
|
|
18
|
-
}
|
|
19
|
-
if (this.jsonString) {
|
|
20
|
-
let display = this.jsonString;
|
|
21
|
-
let parsedJson = JsonHelper.tryParseJSON(this.jsonString);
|
|
22
|
-
if (parsedJson) {
|
|
23
|
-
display = JSON.stringify(parsedJson, null, 2);
|
|
24
|
-
}
|
|
25
|
-
if (display.length > this.maxLength) {
|
|
26
|
-
display = display.substr(0, this.maxLength) + `\r\n${this.translate.instant('MessageTooLong_Truncated_SC')}`;
|
|
27
|
-
}
|
|
28
|
-
this.jsonDisplay.patchValue(display);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: JsonDisplayComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: JsonDisplayComponent, selector: "ec-json-display", inputs: { id: "id", jsonString: "jsonString", maxLength: "maxLength" }, host: { properties: { "attr.id": "this.attrId" } }, usesOnChanges: true, ngImport: i0, template: "<ec-button id=\"{{id}}_copy\"\n class=\"copy-button\"\n *ngIf=\"jsonDisplay.value\"\n type=\"icon\"\n icon=\"icon-copy\"\n [ecCopyButton]=\"jsonDisplay\">\n</ec-button>\n<pre><code>{{jsonDisplay.value}}</code></pre>", styles: [":host{display:block;position:relative;color:var(--ec-color-primary-light);background:#354751;max-height:15rem;min-height:2.125rem;font-size:var(--ec-font-size-label);border-radius:var(--ec-border-radius-card);overflow-x:auto;overflow-y:auto;text-align:right}pre{margin-bottom:0;margin-top:-2rem;text-align:left}pre code{display:block;padding:.5rem}.copy-button{position:sticky;top:0}.copy-button ::ng-deep .ec-icon{color:var(--ec-color-secondary-light)!important}.copy-button ::ng-deep button:hover{background-color:transparent!important}.copy-button ::ng-deep button:hover .ec-icon{color:var(--ec-color-primary-light)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "lockButton", "icon", "iconColor", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "directive", type: i4.CopyButtonDirective, selector: "[ecCopyButton]", inputs: ["ecCopyButton"] }] }); }
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: JsonDisplayComponent, decorators: [{
|
|
35
|
-
type: Component,
|
|
36
|
-
args: [{ selector: 'ec-json-display', template: "<ec-button id=\"{{id}}_copy\"\n class=\"copy-button\"\n *ngIf=\"jsonDisplay.value\"\n type=\"icon\"\n icon=\"icon-copy\"\n [ecCopyButton]=\"jsonDisplay\">\n</ec-button>\n<pre><code>{{jsonDisplay.value}}</code></pre>", styles: [":host{display:block;position:relative;color:var(--ec-color-primary-light);background:#354751;max-height:15rem;min-height:2.125rem;font-size:var(--ec-font-size-label);border-radius:var(--ec-border-radius-card);overflow-x:auto;overflow-y:auto;text-align:right}pre{margin-bottom:0;margin-top:-2rem;text-align:left}pre code{display:block;padding:.5rem}.copy-button{position:sticky;top:0}.copy-button ::ng-deep .ec-icon{color:var(--ec-color-secondary-light)!important}.copy-button ::ng-deep button:hover{background-color:transparent!important}.copy-button ::ng-deep button:hover .ec-icon{color:var(--ec-color-primary-light)!important}\n"] }]
|
|
37
|
-
}], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { id: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}], attrId: [{
|
|
40
|
-
type: HostBinding,
|
|
41
|
-
args: ['attr.id']
|
|
42
|
-
}], jsonString: [{
|
|
43
|
-
type: Input
|
|
44
|
-
}], maxLength: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2pzb24tZGlzcGxheS9qc29uLWRpc3BsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvanNvbi1kaXNwbGF5L2pzb24tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFPdEQsTUFBTSxPQUFPLG9CQUFvQjtJQVEvQixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUh0QyxjQUFTLEdBQVcsS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVHLENBQUM7SUFFcEQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBRTlCLElBQUksVUFBVSxHQUF3QixVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFLENBQUM7WUFDL0csQ0FBQztZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDOytHQTdCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix3TUNWakMsMlFBTzZDOzs0RkRHaEMsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGlCQUFpQjtxRkFNbEIsRUFBRTtzQkFBVixLQUFLO2dCQUNrQixNQUFNO3NCQUE3QixXQUFXO3VCQUFDLFNBQVM7Z0JBQ2IsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSnNvbkhlbHBlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9qc29uLWhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjLWpzb24tZGlzcGxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9qc29uLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9qc29uLWRpc3BsYXkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBKc29uRGlzcGxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIGF0dHJJZD86IHN0cmluZztcbiAgQElucHV0KCkganNvblN0cmluZz86IHN0cmluZztcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXIgPSAxMDAwMDtcbiAgcHVibGljIGpzb25EaXNwbGF5ID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHsgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICB0aGlzLmF0dHJJZCA9IHRoaXMuaWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuanNvblN0cmluZykge1xuICAgICAgbGV0IGRpc3BsYXkgPSB0aGlzLmpzb25TdHJpbmc7XG5cbiAgICAgIGxldCBwYXJzZWRKc29uOiB1bmtub3duIHwgdW5kZWZpbmVkID0gSnNvbkhlbHBlci50cnlQYXJzZUpTT04odGhpcy5qc29uU3RyaW5nKTtcbiAgICAgIGlmIChwYXJzZWRKc29uKSB7XG4gICAgICAgIGRpc3BsYXkgPSBKU09OLnN0cmluZ2lmeShwYXJzZWRKc29uLCBudWxsLCAyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc3BsYXkubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgZGlzcGxheSA9IGRpc3BsYXkuc3Vic3RyKDAsIHRoaXMubWF4TGVuZ3RoKSArIGBcXHJcXG4ke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ01lc3NhZ2VUb29Mb25nX1RydW5jYXRlZF9TQycpfWA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuanNvbkRpc3BsYXkucGF0Y2hWYWx1ZShkaXNwbGF5KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxlYy1idXR0b24gaWQ9XCJ7e2lkfX1fY29weVwiXG4gICAgICAgICAgIGNsYXNzPVwiY29weS1idXR0b25cIlxuICAgICAgICAgICAqbmdJZj1cImpzb25EaXNwbGF5LnZhbHVlXCJcbiAgICAgICAgICAgdHlwZT1cImljb25cIlxuICAgICAgICAgICBpY29uPVwiaWNvbi1jb3B5XCJcbiAgICAgICAgICAgW2VjQ29weUJ1dHRvbl09XCJqc29uRGlzcGxheVwiPlxuPC9lYy1idXR0b24+XG48cHJlPjxjb2RlPnt7anNvbkRpc3BsYXkudmFsdWV9fTwvY29kZT48L3ByZT4iXX0=
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { Inject, Input, Directive } from '@angular/core';
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../core/cache.service";
|
|
5
|
-
/**
|
|
6
|
-
* Base class for handling click and drag resizing of elements with a mouse.
|
|
7
|
-
* Derived classes must provide the element to be resized and implement the setWidth function.
|
|
8
|
-
*/
|
|
9
|
-
export class ResizableBase {
|
|
10
|
-
ngAfterViewInit() {
|
|
11
|
-
if (this.rememberWidth && this.id) {
|
|
12
|
-
let cached = this.cacheService.getItem('resizable-' + this.id);
|
|
13
|
-
if (cached && cached.widths && cached.widths.length > 0) {
|
|
14
|
-
this.restoreWidths(cached.widths);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
constructor(renderer, cacheService, document) {
|
|
19
|
-
this.renderer = renderer;
|
|
20
|
-
this.cacheService = cacheService;
|
|
21
|
-
this.document = document;
|
|
22
|
-
/**Set to true if the resizable should remember its width. Requires the element to have an ID*/
|
|
23
|
-
this.rememberWidth = false;
|
|
24
|
-
/**The id of the resizable, used for GI and for remembering the width */
|
|
25
|
-
this.id = '';
|
|
26
|
-
/** The element that is current being resized */
|
|
27
|
-
this.currentEl = null;
|
|
28
|
-
/** The x position of the mouse when dragging starts. Relative to the viewport. */
|
|
29
|
-
this.startScreenX = 0;
|
|
30
|
-
/** The width of the current element when dragging starts. */
|
|
31
|
-
this.startElWidth = 0;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* On a mousedown event
|
|
35
|
-
* * store the width of the current element to calculate the new width
|
|
36
|
-
* * store the horizontal position of the pointer to calculate the new width.
|
|
37
|
-
* * add the 'is-active' class to the current element
|
|
38
|
-
* * set up listeners on the document to know when dragging starts and stops.
|
|
39
|
-
* Mouse event listeners are added to the document because the cursor may move
|
|
40
|
-
* off the current element while dragging.
|
|
41
|
-
*/
|
|
42
|
-
startDrag(event) {
|
|
43
|
-
if (this.currentEl) {
|
|
44
|
-
this.startElWidth = this.currentEl.offsetWidth;
|
|
45
|
-
this.startScreenX = event.screenX;
|
|
46
|
-
this.renderer.addClass(this.currentEl, 'is-active');
|
|
47
|
-
this.renderer.setStyle(this.document.body, 'cursor', 'col-resize');
|
|
48
|
-
// Remove any listeners that may have not been cleaned up before we register new listeners.
|
|
49
|
-
if (this.mouseupListener) {
|
|
50
|
-
this.mouseupListener();
|
|
51
|
-
this.mouseupListener = undefined;
|
|
52
|
-
}
|
|
53
|
-
if (this.mousemoveListener) {
|
|
54
|
-
this.mousemoveListener();
|
|
55
|
-
this.mousemoveListener = undefined;
|
|
56
|
-
}
|
|
57
|
-
this.mouseupListener = this.renderer.listen(this.document, 'mouseup', this.stopDrag.bind(this));
|
|
58
|
-
this.mousemoveListener = this.renderer.listen(this.document, 'mousemove', this.drag.bind(this));
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
throw new Error(`currentEl is ${this.currentEl}. currentEl must be assigned before startDrag() is called.`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* On a mousemove event, calculate the new width of the current element by
|
|
66
|
-
* adding the difference of the start pageX position and the current pageX
|
|
67
|
-
* position to the width of the element when we started dragging. Pass the
|
|
68
|
-
* calculated with to the setWidth method.
|
|
69
|
-
*/
|
|
70
|
-
drag(event) {
|
|
71
|
-
this.setWidth(this.startElWidth + (event.screenX - this.startScreenX));
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* On a mouseup event
|
|
75
|
-
* * remove the mouse event listeners on the document.
|
|
76
|
-
* * remove the 'is-active' class from the current element
|
|
77
|
-
* * reset the cursor style on the body
|
|
78
|
-
*/
|
|
79
|
-
stopDrag(event) {
|
|
80
|
-
if (this.mousemoveListener) {
|
|
81
|
-
this.mousemoveListener();
|
|
82
|
-
this.mousemoveListener = undefined;
|
|
83
|
-
}
|
|
84
|
-
if (this.mouseupListener) {
|
|
85
|
-
this.mouseupListener();
|
|
86
|
-
this.mouseupListener = undefined;
|
|
87
|
-
}
|
|
88
|
-
if (this.currentEl) {
|
|
89
|
-
this.renderer.removeClass(this.currentEl, 'is-active');
|
|
90
|
-
}
|
|
91
|
-
this.renderer.removeStyle(this.document.body, 'cursor');
|
|
92
|
-
}
|
|
93
|
-
/**Called after the view initializes if the component supports restoring widths and there are cached widths to restore.
|
|
94
|
-
* To be overridden in a derived class if it supports restoring widths, defaults to a no-op*/
|
|
95
|
-
restoreWidths(widths) { }
|
|
96
|
-
/** Store the provided widths in cache so they can be retrieved later */
|
|
97
|
-
saveWidths(widths) {
|
|
98
|
-
if (this.rememberWidth && this.id) {
|
|
99
|
-
this.cacheService.setItem('resizable-' + this.id, {
|
|
100
|
-
widths: widths
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
else if (this.rememberWidth) {
|
|
104
|
-
console.error('rememberWidth is set but will not take effect unless ID is also set');
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizableBase, deps: [{ token: i0.Renderer2 }, { token: i1.CacheService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
108
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ResizableBase, inputs: { rememberWidth: "rememberWidth", id: "id" }, ngImport: i0 }); }
|
|
109
|
-
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizableBase, decorators: [{
|
|
111
|
-
type: Directive
|
|
112
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.CacheService }, { type: Document, decorators: [{
|
|
113
|
-
type: Inject,
|
|
114
|
-
args: [DOCUMENT]
|
|
115
|
-
}] }], propDecorators: { rememberWidth: [{
|
|
116
|
-
type: Input
|
|
117
|
-
}], id: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}] } });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9yZXNpemFibGUvcmVzaXphYmxlLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLE1BQU0sRUFBRSxLQUFLLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUszQzs7O0dBR0c7QUFFSCxNQUFNLE9BQWdCLGFBQWE7SUFDakMsZUFBZTtRQUNiLElBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFDLENBQUM7WUFDaEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQW1CLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakYsSUFBRyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBeUJELFlBQ1ksUUFBbUIsRUFDckIsWUFBMEIsRUFDTixRQUFrQjtRQUZwQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ04sYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTFCaEQsK0ZBQStGO1FBRXhGLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRXRDLHlFQUF5RTtRQUVsRSxPQUFFLEdBQVcsRUFBRSxDQUFDO1FBRXZCLGdEQUFnRDtRQUN0QyxjQUFTLEdBQXVCLElBQUksQ0FBQztRQUUvQyxrRkFBa0Y7UUFDeEUsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFFbEMsNkRBQTZEO1FBQ3BELGlCQUFZLEdBQVcsQ0FBQyxDQUFDO0lBWWpDLENBQUM7SUFFSDs7Ozs7Ozs7T0FRRztJQUNJLFNBQVMsQ0FBQyxLQUFpQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1lBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVuRSwyRkFBMkY7WUFDM0YsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7WUFDbkMsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1lBQ3JDLENBQUM7WUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDaEcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEcsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsU0FBUyw0REFBNEQsQ0FBQyxDQUFDO1FBQzlHLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxJQUFJLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBT0Q7Ozs7O09BS0c7SUFDTyxRQUFRLENBQUMsS0FBaUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDbkMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDtpR0FDNkY7SUFDbkYsYUFBYSxDQUFDLE1BQWdCLElBQVUsQ0FBQztJQUVuRCx3RUFBd0U7SUFDOUQsVUFBVSxDQUFDLE1BQWdCO1FBQ25DLElBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQXFCO2dCQUNuRSxNQUFNLEVBQUUsTUFBTTthQUNmLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFHLElBQUksQ0FBQyxhQUFhLEVBQUMsQ0FBQztZQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7K0dBNUhtQixhQUFhLHVFQW9DdkIsUUFBUTttR0FwQ0UsYUFBYTs7NEZBQWIsYUFBYTtrQkFEbEMsU0FBUzs7MEJBcUNMLE1BQU07MkJBQUMsUUFBUTt5Q0F4QlgsYUFBYTtzQkFEbkIsS0FBSztnQkFLQyxFQUFFO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW5kZXJlcjIsIEluamVjdCwgSW5wdXQsIEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jYWNoZS5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgUmVzaXplQ2FjaGVFbnRyeSA9IHsgd2lkdGhzOiBudW1iZXJbXSB9O1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGhhbmRsaW5nIGNsaWNrIGFuZCBkcmFnIHJlc2l6aW5nIG9mIGVsZW1lbnRzIHdpdGggYSBtb3VzZS4gXG4gKiBEZXJpdmVkIGNsYXNzZXMgbXVzdCBwcm92aWRlIHRoZSBlbGVtZW50IHRvIGJlIHJlc2l6ZWQgYW5kIGltcGxlbWVudCB0aGUgc2V0V2lkdGggZnVuY3Rpb24uXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlc2l6YWJsZUJhc2UgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmKHRoaXMucmVtZW1iZXJXaWR0aCAmJiB0aGlzLmlkKXtcbiAgICAgIGxldCBjYWNoZWQgPSB0aGlzLmNhY2hlU2VydmljZS5nZXRJdGVtPFJlc2l6ZUNhY2hlRW50cnk+KCdyZXNpemFibGUtJyArIHRoaXMuaWQpO1xuICAgICAgaWYoY2FjaGVkICYmIGNhY2hlZC53aWR0aHMgJiYgY2FjaGVkLndpZHRocy5sZW5ndGggPiAwKXtcbiAgICAgICAgdGhpcy5yZXN0b3JlV2lkdGhzKGNhY2hlZC53aWR0aHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlNldCB0byB0cnVlIGlmIHRoZSByZXNpemFibGUgc2hvdWxkIHJlbWVtYmVyIGl0cyB3aWR0aC4gUmVxdWlyZXMgdGhlIGVsZW1lbnQgdG8gaGF2ZSBhbiBJRCovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW1lbWJlcldpZHRoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqVGhlIGlkIG9mIHRoZSByZXNpemFibGUsIHVzZWQgZm9yIEdJIGFuZCBmb3IgcmVtZW1iZXJpbmcgdGhlIHdpZHRoICAqL1xuICBASW5wdXQoKSBcbiAgcHVibGljIGlkOiBzdHJpbmcgPSAnJztcblxuICAvKiogVGhlIGVsZW1lbnQgdGhhdCBpcyBjdXJyZW50IGJlaW5nIHJlc2l6ZWQgKi9cbiAgcHJvdGVjdGVkIGN1cnJlbnRFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAvKiogVGhlIHggcG9zaXRpb24gb2YgdGhlIG1vdXNlIHdoZW4gZHJhZ2dpbmcgc3RhcnRzLiBSZWxhdGl2ZSB0byB0aGUgdmlld3BvcnQuICovXG4gIHByb3RlY3RlZCBzdGFydFNjcmVlblg6IG51bWJlciA9IDA7XG5cbiAgIC8qKiBUaGUgd2lkdGggb2YgdGhlIGN1cnJlbnQgZWxlbWVudCB3aGVuIGRyYWdnaW5nIHN0YXJ0cy4gKi9cbiAgcHJvdGVjdGVkIHN0YXJ0RWxXaWR0aDogbnVtYmVyID0gMDtcblxuICAvKiogXG4gICAqIFN0b3JlZCAndW5saXN0ZW4nIGZ1bmN0aW9ucyB0aGF0IHJlbW92ZSB0aGVpciByZXNwZWN0aXZlIGxpc3RlbmVycyB3aGVuIGNhbGxlZCBcbiAgICovXG4gIHByb3RlY3RlZCBtb3VzZXVwTGlzdGVuZXI/OiAoKSA9PiB2b2lkO1xuICBwcm90ZWN0ZWQgbW91c2Vtb3ZlTGlzdGVuZXI/OiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLCBcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByb3RlY3RlZCBkb2N1bWVudDogRG9jdW1lbnRcbiAgKXt9XG5cbiAgLyoqIFxuICAgKiBPbiBhIG1vdXNlZG93biBldmVudFxuICAgKiAqIHN0b3JlIHRoZSB3aWR0aCBvZiB0aGUgY3VycmVudCBlbGVtZW50IHRvIGNhbGN1bGF0ZSB0aGUgbmV3IHdpZHRoXG4gICAqICogc3RvcmUgdGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIHBvaW50ZXIgdG8gY2FsY3VsYXRlIHRoZSBuZXcgd2lkdGguIFxuICAgKiAqIGFkZCB0aGUgJ2lzLWFjdGl2ZScgY2xhc3MgdG8gdGhlIGN1cnJlbnQgZWxlbWVudFxuICAgKiAqIHNldCB1cCBsaXN0ZW5lcnMgb24gdGhlIGRvY3VtZW50IHRvIGtub3cgd2hlbiBkcmFnZ2luZyBzdGFydHMgYW5kIHN0b3BzLiBcbiAgICogTW91c2UgZXZlbnQgbGlzdGVuZXJzIGFyZSBhZGRlZCB0byB0aGUgZG9jdW1lbnQgYmVjYXVzZSB0aGUgY3Vyc29yIG1heSBtb3ZlIFxuICAgKiBvZmYgdGhlIGN1cnJlbnQgZWxlbWVudCB3aGlsZSBkcmFnZ2luZy5cbiAgICovXG4gIHB1YmxpYyBzdGFydERyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RWwpIHtcbiAgICAgIHRoaXMuc3RhcnRFbFdpZHRoID0gdGhpcy5jdXJyZW50RWwub2Zmc2V0V2lkdGg7XG4gICAgICB0aGlzLnN0YXJ0U2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuY3VycmVudEVsLCAnaXMtYWN0aXZlJyk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSwgJ2N1cnNvcicsICdjb2wtcmVzaXplJyk7XG5cbiAgICAgIC8vIFJlbW92ZSBhbnkgbGlzdGVuZXJzIHRoYXQgbWF5IGhhdmUgbm90IGJlZW4gY2xlYW5lZCB1cCBiZWZvcmUgd2UgcmVnaXN0ZXIgbmV3IGxpc3RlbmVycy5cbiAgICAgIGlmICh0aGlzLm1vdXNldXBMaXN0ZW5lcikge1xuICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lcigpO1xuICAgICAgICB0aGlzLm1vdXNldXBMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1vdXNlbW92ZUxpc3RlbmVyKSB7XG4gICAgICAgIHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5tb3VzZW1vdmVMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tb3VzZXVwTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMuc3RvcERyYWcuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLm1vdXNlbW92ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ21vdXNlbW92ZScsIHRoaXMuZHJhZy5iaW5kKHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjdXJyZW50RWwgaXMgJHt0aGlzLmN1cnJlbnRFbH0uIGN1cnJlbnRFbCBtdXN0IGJlIGFzc2lnbmVkIGJlZm9yZSBzdGFydERyYWcoKSBpcyBjYWxsZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9uIGEgbW91c2Vtb3ZlIGV2ZW50LCBjYWxjdWxhdGUgdGhlIG5ldyB3aWR0aCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGJ5IFxuICAgKiBhZGRpbmcgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIHN0YXJ0IHBhZ2VYIHBvc2l0aW9uIGFuZCB0aGUgY3VycmVudCBwYWdlWCBcbiAgICogcG9zaXRpb24gdG8gdGhlIHdpZHRoIG9mIHRoZSBlbGVtZW50IHdoZW4gd2Ugc3RhcnRlZCBkcmFnZ2luZy4gUGFzcyB0aGUgXG4gICAqIGNhbGN1bGF0ZWQgd2l0aCB0byB0aGUgc2V0V2lkdGggbWV0aG9kLlxuICAgKi9cbiAgcHJvdGVjdGVkIGRyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNldFdpZHRoKHRoaXMuc3RhcnRFbFdpZHRoICsgKGV2ZW50LnNjcmVlblggLSB0aGlzLnN0YXJ0U2NyZWVuWCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgY3VycmVudCBlbGVtZW50J3Mgd2lkdGguIENhbGxlZCBhZnRlciBhIG1vdXNlbW92ZSBldmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRXaWR0aCh3aWR0aDogbnVtYmVyKTogdm9pZDtcblxuICAvKipcbiAgICogT24gYSBtb3VzZXVwIGV2ZW50XG4gICAqICogcmVtb3ZlIHRoZSBtb3VzZSBldmVudCBsaXN0ZW5lcnMgb24gdGhlIGRvY3VtZW50LlxuICAgKiAqIHJlbW92ZSB0aGUgJ2lzLWFjdGl2ZScgY2xhc3MgZnJvbSB0aGUgY3VycmVudCBlbGVtZW50XG4gICAqICogcmVzZXQgdGhlIGN1cnNvciBzdHlsZSBvbiB0aGUgYm9keVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0b3BEcmFnKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMubW91c2Vtb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLm1vdXNldXBMaXN0ZW5lcikge1xuICAgICAgdGhpcy5tb3VzZXVwTGlzdGVuZXIoKTtcbiAgICAgIHRoaXMubW91c2V1cExpc3RlbmVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5jdXJyZW50RWwpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5jdXJyZW50RWwsICdpcy1hY3RpdmUnKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSwgJ2N1cnNvcicpO1xuICB9XG5cbiAgLyoqQ2FsbGVkIGFmdGVyIHRoZSB2aWV3IGluaXRpYWxpemVzIGlmIHRoZSBjb21wb25lbnQgc3VwcG9ydHMgcmVzdG9yaW5nIHdpZHRocyBhbmQgdGhlcmUgYXJlIGNhY2hlZCB3aWR0aHMgdG8gcmVzdG9yZS4gXG4gICAqIFRvIGJlIG92ZXJyaWRkZW4gaW4gYSBkZXJpdmVkIGNsYXNzIGlmIGl0IHN1cHBvcnRzIHJlc3RvcmluZyB3aWR0aHMsIGRlZmF1bHRzIHRvIGEgbm8tb3AqL1xuICBwcm90ZWN0ZWQgcmVzdG9yZVdpZHRocyh3aWR0aHM6IG51bWJlcltdKTogdm9pZCB7IH1cblxuICAvKiogU3RvcmUgdGhlIHByb3ZpZGVkIHdpZHRocyBpbiBjYWNoZSBzbyB0aGV5IGNhbiBiZSByZXRyaWV2ZWQgbGF0ZXIgKi9cbiAgcHJvdGVjdGVkIHNhdmVXaWR0aHMod2lkdGhzOiBudW1iZXJbXSl7XG4gICAgaWYodGhpcy5yZW1lbWJlcldpZHRoICYmIHRoaXMuaWQpe1xuICAgICAgdGhpcy5jYWNoZVNlcnZpY2Uuc2V0SXRlbSgncmVzaXphYmxlLScgKyB0aGlzLmlkLCA8UmVzaXplQ2FjaGVFbnRyeT4ge1xuICAgICAgICB3aWR0aHM6IHdpZHRoc1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmKHRoaXMucmVtZW1iZXJXaWR0aCl7XG4gICAgICBjb25zb2xlLmVycm9yKCdyZW1lbWJlcldpZHRoIGlzIHNldCBidXQgd2lsbCBub3QgdGFrZSBlZmZlY3QgdW5sZXNzIElEIGlzIGFsc28gc2V0Jyk7XG4gICAgfVxuICB9XG59Il19
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Component, Inject } from '@angular/core';
|
|
3
|
-
import { ResizableBase } from './resizable-base';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../core/cache.service";
|
|
6
|
-
/**
|
|
7
|
-
* Make an element resizable horizontally by wrapping it in the ResizableComponent.
|
|
8
|
-
* Default widths / limits are applied but you can optionally override them
|
|
9
|
-
* with min-width and max-width with style attributes
|
|
10
|
-
* @example
|
|
11
|
-
* <ec-resizable [style.width.px]="200"
|
|
12
|
-
* [style.min-width.px]="75"
|
|
13
|
-
* [style.max-width.px]="300">
|
|
14
|
-
* <div> ... </div>
|
|
15
|
-
* </ec-resizable>
|
|
16
|
-
*/
|
|
17
|
-
export class ResizableComponent extends ResizableBase {
|
|
18
|
-
constructor(el, renderer, cacheService, document) {
|
|
19
|
-
super(renderer, cacheService, document);
|
|
20
|
-
this.el = el;
|
|
21
|
-
//default rememberWidth to true for standard resizable, resizable tables default to false
|
|
22
|
-
this.rememberWidth = true;
|
|
23
|
-
}
|
|
24
|
-
/** Store the host element to reference later */
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
this.currentEl = this.el.nativeElement;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Set the new width of the element and emit the new width to subscribers
|
|
30
|
-
*/
|
|
31
|
-
setWidth(width) {
|
|
32
|
-
this.renderer.setStyle(this.currentEl, 'width', width + 'px');
|
|
33
|
-
this.saveWidths([width]);
|
|
34
|
-
}
|
|
35
|
-
/**Called from the base class when cached widths are available and restoring
|
|
36
|
-
* width is enabled. We only care about the first one because we only have one width
|
|
37
|
-
*/
|
|
38
|
-
restoreWidths(widths) {
|
|
39
|
-
this.setWidth(widths[0]);
|
|
40
|
-
}
|
|
41
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizableComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.CacheService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResizableComponent, selector: "ec-resizable", usesInheritance: true, ngImport: i0, template: `<div class="content">
|
|
43
|
-
<ng-content></ng-content>
|
|
44
|
-
</div>
|
|
45
|
-
<div class="handle" (mousedown)="startDrag($event)"></div>`, isInline: true, styles: [":host{width:240px;max-width:480px;min-width:100px;position:relative;border-right:1px solid var(--ec-border-color);display:flex}:host.is-active{-webkit-user-select:none;user-select:none}:host.is-active .handle:after{background-color:var(--ec-color-interactive)}.handle{position:absolute;right:-7px;width:13px;height:100%;top:0;padding:0 5px;z-index:var(--ec-z-index-splitter)}.handle:after{content:\"\";display:block;transition:background-color .3s ease;height:100%;position:relative}.handle:hover{cursor:col-resize}.handle:hover:after{background-color:var(--ec-color-interactive)}.content{overflow:hidden;display:flex;flex:1 1;min-height:0;min-width:0}.content ::ng-deep>*{flex:1 1;min-height:0;min-width:0}\n"] }); }
|
|
46
|
-
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResizableComponent, decorators: [{
|
|
48
|
-
type: Component,
|
|
49
|
-
args: [{ selector: 'ec-resizable', template: `<div class="content">
|
|
50
|
-
<ng-content></ng-content>
|
|
51
|
-
</div>
|
|
52
|
-
<div class="handle" (mousedown)="startDrag($event)"></div>`, styles: [":host{width:240px;max-width:480px;min-width:100px;position:relative;border-right:1px solid var(--ec-border-color);display:flex}:host.is-active{-webkit-user-select:none;user-select:none}:host.is-active .handle:after{background-color:var(--ec-color-interactive)}.handle{position:absolute;right:-7px;width:13px;height:100%;top:0;padding:0 5px;z-index:var(--ec-z-index-splitter)}.handle:after{content:\"\";display:block;transition:background-color .3s ease;height:100%;position:relative}.handle:hover{cursor:col-resize}.handle:hover:after{background-color:var(--ec-color-interactive)}.content{overflow:hidden;display:flex;flex:1 1;min-height:0;min-width:0}.content ::ng-deep>*{flex:1 1;min-height:0;min-width:0}\n"] }]
|
|
53
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.CacheService }, { type: Document, decorators: [{
|
|
54
|
-
type: Inject,
|
|
55
|
-
args: [DOCUMENT]
|
|
56
|
-
}] }] });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3Jlc2l6YWJsZS9yZXNpemFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFHakQ7Ozs7Ozs7Ozs7R0FVRztBQVNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxhQUFhO0lBQ25ELFlBQ1UsRUFBYyxFQUN0QixRQUFtQixFQUNuQixZQUEwQixFQUNSLFFBQWtCO1FBRXBDLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBTGhDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFPdEIseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnREFBZ0Q7SUFDekMsUUFBUTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ08sUUFBUSxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNPLGFBQWEsQ0FBQyxNQUFnQjtRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7K0dBL0JVLGtCQUFrQixpR0FLbkIsUUFBUTttR0FMUCxrQkFBa0IsMkVBTm5COzs7dUVBRzJEOzs0RkFHMUQsa0JBQWtCO2tCQVI5QixTQUFTOytCQUNFLGNBQWMsWUFDZDs7O3VFQUcyRDs7MEJBUWxFLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2NhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzaXphYmxlQmFzZSB9IGZyb20gJy4vcmVzaXphYmxlLWJhc2UnO1xuXG5cbi8qKlxuICogTWFrZSBhbiBlbGVtZW50IHJlc2l6YWJsZSBob3Jpem9udGFsbHkgYnkgd3JhcHBpbmcgaXQgaW4gdGhlIFJlc2l6YWJsZUNvbXBvbmVudC5cbiAqIERlZmF1bHQgd2lkdGhzIC8gbGltaXRzIGFyZSBhcHBsaWVkIGJ1dCB5b3UgY2FuIG9wdGlvbmFsbHkgb3ZlcnJpZGUgdGhlbVxuICogd2l0aCBtaW4td2lkdGggYW5kIG1heC13aWR0aCB3aXRoIHN0eWxlIGF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKiA8ZWMtcmVzaXphYmxlIFtzdHlsZS53aWR0aC5weF09XCIyMDBcIlxuICogICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIjc1XCJcbiAqICAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5weF09XCIzMDBcIj5cbiAqICAgIDxkaXY+IC4uLiA8L2Rpdj5cbiAqIDwvZWMtcmVzaXphYmxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlYy1yZXNpemFibGUnLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhhbmRsZVwiIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudClcIj48L2Rpdj5gLFxuICBzdHlsZVVybHM6IFsnLi9yZXNpemFibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXNpemFibGVDb21wb25lbnQgZXh0ZW5kcyBSZXNpemFibGVCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBEb2N1bWVudClcbiAge1xuICAgIHN1cGVyKHJlbmRlcmVyLCBjYWNoZVNlcnZpY2UsIGRvY3VtZW50KTtcblxuICAgIC8vZGVmYXVsdCByZW1lbWJlcldpZHRoIHRvIHRydWUgZm9yIHN0YW5kYXJkIHJlc2l6YWJsZSwgcmVzaXphYmxlIHRhYmxlcyBkZWZhdWx0IHRvIGZhbHNlXG4gICAgdGhpcy5yZW1lbWJlcldpZHRoID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBTdG9yZSB0aGUgaG9zdCBlbGVtZW50IHRvIHJlZmVyZW5jZSBsYXRlciAqL1xuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBuZXcgd2lkdGggb2YgdGhlIGVsZW1lbnQgYW5kIGVtaXQgdGhlIG5ldyB3aWR0aCB0byBzdWJzY3JpYmVyc1xuICAgKi9cbiAgcHJvdGVjdGVkIHNldFdpZHRoKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY3VycmVudEVsLCAnd2lkdGgnLCB3aWR0aCArICdweCcpO1xuICAgIHRoaXMuc2F2ZVdpZHRocyhbd2lkdGhdKTtcbiAgfVxuXG4gIC8qKkNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzIHdoZW4gY2FjaGVkIHdpZHRocyBhcmUgYXZhaWxhYmxlIGFuZCByZXN0b3JpbmdcbiAgICogd2lkdGggaXMgZW5hYmxlZC4gV2Ugb25seSBjYXJlIGFib3V0IHRoZSBmaXJzdCBvbmUgYmVjYXVzZSB3ZSBvbmx5IGhhdmUgb25lIHdpZHRoXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzdG9yZVdpZHRocyh3aWR0aHM6IG51bWJlcltdKXtcbiAgICB0aGlzLnNldFdpZHRoKHdpZHRoc1swXSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/** Exposes the markup and styles that represent the spinner. No inputs or outputs defined because it is just a visual component*/
|
|
4
|
-
export class SpinnerComponent {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SpinnerComponent, selector: "ec-spinner", ngImport: i0, template: "<div class=\"spinner\">\n <span class=\"spinner-dot\"></span>\n <span class=\"spinner-dot\"></span>\n <span class=\"spinner-dot\"></span>\n <span class=\"spinner-dot\"></span>\n</div>", styles: ["@keyframes sk-bouncedelay{0%,80%,to{opacity:0}40%{opacity:1}}.spinner{display:flex}.spinner-dot{width:.75rem;height:.75rem;background-color:var(--ec-spinner-color, var(--ec-color-purple-5));animation:sk-bouncedelay 1.7s infinite ease-in-out both;margin-right:.25rem}.spinner-dot:nth-child(1){animation-delay:-.6s}.spinner-dot:nth-child(2){animation-delay:-.4s}.spinner-dot:nth-child(3){animation-delay:-.2s}:host(.spinner-small) .spinner-dot{width:.5rem;height:.5rem;background-color:var(--ec-spinner-color, var(--ec-color-purple-5));animation:sk-bouncedelay 1.7s infinite ease-in-out both;margin-right:.1666666667rem}:host(.spinner-small) .spinner-dot:nth-child(1){animation-delay:-.6s}:host(.spinner-small) .spinner-dot:nth-child(2){animation-delay:-.4s}:host(.spinner-small) .spinner-dot:nth-child(3){animation-delay:-.2s}\n"] }); }
|
|
7
|
-
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SpinnerComponent, decorators: [{
|
|
9
|
-
type: Component,
|
|
10
|
-
args: [{ selector: 'ec-spinner', template: "<div class=\"spinner\">\n <span class=\"spinner-dot\"></span>\n <span class=\"spinner-dot\"></span>\n <span class=\"spinner-dot\"></span>\n <span class=\"spinner-dot\"></span>\n</div>", styles: ["@keyframes sk-bouncedelay{0%,80%,to{opacity:0}40%{opacity:1}}.spinner{display:flex}.spinner-dot{width:.75rem;height:.75rem;background-color:var(--ec-spinner-color, var(--ec-color-purple-5));animation:sk-bouncedelay 1.7s infinite ease-in-out both;margin-right:.25rem}.spinner-dot:nth-child(1){animation-delay:-.6s}.spinner-dot:nth-child(2){animation-delay:-.4s}.spinner-dot:nth-child(3){animation-delay:-.2s}:host(.spinner-small) .spinner-dot{width:.5rem;height:.5rem;background-color:var(--ec-spinner-color, var(--ec-color-purple-5));animation:sk-bouncedelay 1.7s infinite ease-in-out both;margin-right:.1666666667rem}:host(.spinner-small) .spinner-dot:nth-child(1){animation-delay:-.6s}:host(.spinner-small) .spinner-dot:nth-child(2){animation-delay:-.4s}:host(.spinner-small) .spinner-dot:nth-child(3){animation-delay:-.2s}\n"] }]
|
|
11
|
-
}] });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9zcGlubmVyL3NwaW5uZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTFDLGtJQUFrSTtBQUNsSSxNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7bUdBQWhCLGdCQUFnQixrRENUN0IsNkxBS007OzRGRElPLGdCQUFnQjtrQkFQNUIsU0FBUzsrQkFDRSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjLXNwaW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NwaW5uZXIuY29tcG9uZW50LnNjc3MnXVxufSlcblxuLyoqIEV4cG9zZXMgdGhlIG1hcmt1cCBhbmQgc3R5bGVzIHRoYXQgcmVwcmVzZW50IHRoZSBzcGlubmVyLiBObyBpbnB1dHMgb3Igb3V0cHV0cyBkZWZpbmVkIGJlY2F1c2UgaXQgaXMganVzdCBhIHZpc3VhbCBjb21wb25lbnQqL1xuZXhwb3J0IGNsYXNzIFNwaW5uZXJDb21wb25lbnQgeyB9XG4iLCI8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPlxuICA8c3BhbiBjbGFzcz1cInNwaW5uZXItZG90XCI+PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInNwaW5uZXItZG90XCI+PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInNwaW5uZXItZG90XCI+PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cInNwaW5uZXItZG90XCI+PC9zcGFuPlxuPC9kaXY+Il19
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { interval, race, Subject, timer } from 'rxjs';
|
|
3
|
-
import { takeUntil, tap } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./splash.service";
|
|
6
|
-
export class SplashComponent {
|
|
7
|
-
constructor(splashService) {
|
|
8
|
-
this.splashService = splashService;
|
|
9
|
-
/** Sets the visibility of the splash display */
|
|
10
|
-
this.isVisible = true;
|
|
11
|
-
this.stopAnimation = false;
|
|
12
|
-
this.currentMessageIndex = 0;
|
|
13
|
-
/** Emits when the component is destroyed */
|
|
14
|
-
this.destroyed = new Subject();
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
this.splashService.splashVisibility.pipe(takeUntil(this.destroyed), tap(({ show }) => {
|
|
18
|
-
if (show) {
|
|
19
|
-
this.stopAnimation = false;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
// Prevent animation from continuing after splash screen is hidden
|
|
23
|
-
// but if we hide it then show while the timer is running, don't stop the animation after all
|
|
24
|
-
timer(1000).pipe(takeUntil(this.splashService.splashVisibility)).subscribe(() => {
|
|
25
|
-
this.stopAnimation = true;
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
})).subscribe(({ show, title, messages }) => {
|
|
29
|
-
this.isVisible = show;
|
|
30
|
-
this.title = title;
|
|
31
|
-
this.messages = messages;
|
|
32
|
-
if (show && messages && messages.length > 0) {
|
|
33
|
-
this.startMessageRotation();
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
ngOnDestroy() {
|
|
38
|
-
this.destroyed.next();
|
|
39
|
-
this.destroyed.unsubscribe();
|
|
40
|
-
}
|
|
41
|
-
startMessageRotation() {
|
|
42
|
-
if (!this.messages || this.messages.length === 0) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
// Randomize the starting message
|
|
46
|
-
this.currentMessageIndex = Math.floor(Math.random() * this.messages.length);
|
|
47
|
-
interval(5000).pipe(
|
|
48
|
-
// Stop the interval when the component is destroyed or a new splash event occurs
|
|
49
|
-
takeUntil(race(this.destroyed, this.splashService.splashVisibility))).subscribe(() => {
|
|
50
|
-
const nextIndex = this.currentMessageIndex + 1;
|
|
51
|
-
this.currentMessageIndex = nextIndex >= this.messages.length ? 0 : nextIndex;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SplashComponent, deps: [{ token: i1.SplashService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SplashComponent, selector: "ec-splash", ngImport: i0, template: "<div class=\"app-splash\"\n [class.app-loaded]=\"!isVisible\">\n <div class=\"splash-loader\"\n role=\"status\"\n aria-live=\"polite\">\n <div class=\"splash-icon-wrapper\">\n <img src=\"/assets/images/splash-electric.svg\"\n alt=\"Electricity Icon\" />\n <img src=\"/assets/images/splash-water.svg\"\n alt=\"Water Icon\" />\n <img src=\"/assets/images/splash-interval.svg\"\n alt=\"Interval Data Icon\" />\n <img src=\"/assets/images/splash-seedling.svg\"\n alt=\"Seedling Icon\" />\n </div>\n </div>\n\n @if ((messages && messages.length > 0) || title) {\n <div class=\"splash-message-container\">\n @if (title) {\n <h1 class=\"splash-title\">{{title}}</h1>\n }\n @if (messages && messages.length > 0) {\n @for (message of messages; track $index; let i = $index) {\n <p class=\"splash-message\"\n [class.is-visible]=\"i === currentMessageIndex\">{{message}}</p>\n } }\n </div>\n }\n</div>" }); }
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SplashComponent, decorators: [{
|
|
58
|
-
type: Component,
|
|
59
|
-
args: [{ selector: 'ec-splash', template: "<div class=\"app-splash\"\n [class.app-loaded]=\"!isVisible\">\n <div class=\"splash-loader\"\n role=\"status\"\n aria-live=\"polite\">\n <div class=\"splash-icon-wrapper\">\n <img src=\"/assets/images/splash-electric.svg\"\n alt=\"Electricity Icon\" />\n <img src=\"/assets/images/splash-water.svg\"\n alt=\"Water Icon\" />\n <img src=\"/assets/images/splash-interval.svg\"\n alt=\"Interval Data Icon\" />\n <img src=\"/assets/images/splash-seedling.svg\"\n alt=\"Seedling Icon\" />\n </div>\n </div>\n\n @if ((messages && messages.length > 0) || title) {\n <div class=\"splash-message-container\">\n @if (title) {\n <h1 class=\"splash-title\">{{title}}</h1>\n }\n @if (messages && messages.length > 0) {\n @for (message of messages; track $index; let i = $index) {\n <p class=\"splash-message\"\n [class.is-visible]=\"i === currentMessageIndex\">{{message}}</p>\n } }\n </div>\n }\n</div>" }]
|
|
60
|
-
}], ctorParameters: () => [{ type: i1.SplashService }] });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsYXNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3NwbGFzaC9zcGxhc2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvc3BsYXNoL3NwbGFzaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU9oRCxNQUFNLE9BQU8sZUFBZTtJQVkxQixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVhoRCxnREFBZ0Q7UUFDekMsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUkvQix3QkFBbUIsR0FBRyxDQUFDLENBQUM7UUFFL0IsNENBQTRDO1FBQ3BDLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVHLENBQUM7SUFFckQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN0QyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDZixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixrRUFBa0U7Z0JBQ2xFLDZGQUE2RjtnQkFDN0YsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDOUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFFekIsSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakQsT0FBTztRQUNULENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUk7UUFDakIsaUZBQWlGO1FBQ2pGLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FDckUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNoRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBM0RVLGVBQWU7bUdBQWYsZUFBZSxpRENUNUIsKytCQTZCTTs7NEZEcEJPLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGludGVydmFsLCByYWNlLCBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTcGxhc2hTZXJ2aWNlIH0gZnJvbSAnLi9zcGxhc2guc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjLXNwbGFzaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGxhc2guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNwbGFzaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIFNldHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHNwbGFzaCBkaXNwbGF5ICovXG4gIHB1YmxpYyBpc1Zpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc3RvcEFuaW1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0aXRsZT86IHN0cmluZztcbiAgcHVibGljIG1lc3NhZ2VzPzogc3RyaW5nW107XG4gIHB1YmxpYyBjdXJyZW50TWVzc2FnZUluZGV4ID0gMDtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCAqL1xuICBwcml2YXRlIGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzcGxhc2hTZXJ2aWNlOiBTcGxhc2hTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNwbGFzaFNlcnZpY2Uuc3BsYXNoVmlzaWJpbGl0eS5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcbiAgICAgIHRhcCgoeyBzaG93IH0pID0+IHtcbiAgICAgICAgaWYgKHNob3cpIHtcbiAgICAgICAgICB0aGlzLnN0b3BBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQcmV2ZW50IGFuaW1hdGlvbiBmcm9tIGNvbnRpbnVpbmcgYWZ0ZXIgc3BsYXNoIHNjcmVlbiBpcyBoaWRkZW5cbiAgICAgICAgICAvLyBidXQgaWYgd2UgaGlkZSBpdCB0aGVuIHNob3cgd2hpbGUgdGhlIHRpbWVyIGlzIHJ1bm5pbmcsIGRvbid0IHN0b3AgdGhlIGFuaW1hdGlvbiBhZnRlciBhbGxcbiAgICAgICAgICB0aW1lcigxMDAwKS5waXBlKHRha2VVbnRpbCh0aGlzLnNwbGFzaFNlcnZpY2Uuc3BsYXNoVmlzaWJpbGl0eSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3BBbmltYXRpb24gPSB0cnVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKCh7IHNob3csIHRpdGxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IHNob3c7XG4gICAgICB0aGlzLnRpdGxlID0gdGl0bGU7XG4gICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXM7XG5cbiAgICAgIGlmIChzaG93ICYmIG1lc3NhZ2VzICYmIG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zdGFydE1lc3NhZ2VSb3RhdGlvbigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0TWVzc2FnZVJvdGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tZXNzYWdlcyB8fCB0aGlzLm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJhbmRvbWl6ZSB0aGUgc3RhcnRpbmcgbWVzc2FnZVxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2VJbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMubWVzc2FnZXMubGVuZ3RoKTtcblxuICAgIGludGVydmFsKDUwMDApLnBpcGUoXG4gICAgICAvLyBTdG9wIHRoZSBpbnRlcnZhbCB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkIG9yIGEgbmV3IHNwbGFzaCBldmVudCBvY2N1cnNcbiAgICAgIHRha2VVbnRpbChyYWNlKHRoaXMuZGVzdHJveWVkLCB0aGlzLnNwbGFzaFNlcnZpY2Uuc3BsYXNoVmlzaWJpbGl0eSkpXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgbmV4dEluZGV4ID0gdGhpcy5jdXJyZW50TWVzc2FnZUluZGV4ICsgMTtcbiAgICAgIHRoaXMuY3VycmVudE1lc3NhZ2VJbmRleCA9IG5leHRJbmRleCA+PSB0aGlzLm1lc3NhZ2VzIS5sZW5ndGggPyAwIDogbmV4dEluZGV4O1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwLXNwbGFzaFwiXG4gICAgIFtjbGFzcy5hcHAtbG9hZGVkXT1cIiFpc1Zpc2libGVcIj5cbiAgPGRpdiBjbGFzcz1cInNwbGFzaC1sb2FkZXJcIlxuICAgICAgIHJvbGU9XCJzdGF0dXNcIlxuICAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzcGxhc2gtaWNvbi13cmFwcGVyXCI+XG4gICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL3NwbGFzaC1lbGVjdHJpYy5zdmdcIlxuICAgICAgICAgICBhbHQ9XCJFbGVjdHJpY2l0eSBJY29uXCIgLz5cbiAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvc3BsYXNoLXdhdGVyLnN2Z1wiXG4gICAgICAgICAgIGFsdD1cIldhdGVyIEljb25cIiAvPlxuICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9zcGxhc2gtaW50ZXJ2YWwuc3ZnXCJcbiAgICAgICAgICAgYWx0PVwiSW50ZXJ2YWwgRGF0YSBJY29uXCIgLz5cbiAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvc3BsYXNoLXNlZWRsaW5nLnN2Z1wiXG4gICAgICAgICAgIGFsdD1cIlNlZWRsaW5nIEljb25cIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICBAaWYgKChtZXNzYWdlcyAmJiBtZXNzYWdlcy5sZW5ndGggPiAwKSB8fCB0aXRsZSkge1xuICA8ZGl2IGNsYXNzPVwic3BsYXNoLW1lc3NhZ2UtY29udGFpbmVyXCI+XG4gICAgQGlmICh0aXRsZSkge1xuICAgIDxoMSBjbGFzcz1cInNwbGFzaC10aXRsZVwiPnt7dGl0bGV9fTwvaDE+XG4gICAgfVxuICAgIEBpZiAobWVzc2FnZXMgJiYgbWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgIEBmb3IgKG1lc3NhZ2Ugb2YgbWVzc2FnZXM7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8cCBjbGFzcz1cInNwbGFzaC1tZXNzYWdlXCJcbiAgICAgICBbY2xhc3MuaXMtdmlzaWJsZV09XCJpID09PSBjdXJyZW50TWVzc2FnZUluZGV4XCI+e3ttZXNzYWdlfX08L3A+XG4gICAgfSB9XG4gIDwvZGl2PlxuICB9XG48L2Rpdj4iXX0=
|