@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.
Files changed (145) hide show
  1. package/fesm2022/energycap-components.mjs +379 -354
  2. package/fesm2022/energycap-components.mjs.map +1 -1
  3. package/lib/controls/button/copy-button-base.directive.d.ts +1 -1
  4. package/lib/controls/date-input/date-input.component.d.ts +1 -1
  5. package/lib/controls/form-control-base.d.ts +1 -1
  6. package/lib/core/date-time-helper.d.ts +2 -2
  7. package/lib/display/hierarchy/hierarchy-base.d.ts +1 -1
  8. package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +1 -1
  9. package/lib/display/resizable/resizable-base.d.ts +1 -1
  10. package/lib/shared/display/pipes/date-display.pipe.d.ts +1 -1
  11. package/lib/shared/page/page-base/page-base.component.d.ts +1 -1
  12. package/lib/shared/testing/public-mocks.spec.d.ts +1 -1
  13. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +1 -1
  14. package/package.json +1 -3
  15. package/schematics/utilities/typescript.js +3 -4
  16. package/schematics/utilities/typescript.js.map +1 -1
  17. package/schematics/utilities/workspace.d.ts +0 -8
  18. package/schematics/utilities/workspace.js +48 -71
  19. package/schematics/utilities/workspace.js.map +1 -1
  20. package/esm2022/energycap-components.mjs +0 -5
  21. package/esm2022/lib/components.module.mjs +0 -425
  22. package/esm2022/lib/controls/banner/banner.component.mjs +0 -112
  23. package/esm2022/lib/controls/button/button.component.mjs +0 -114
  24. package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
  25. package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
  26. package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
  27. package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
  28. package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -251
  29. package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
  30. package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
  31. package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
  32. package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
  33. package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
  34. package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
  35. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
  36. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
  37. package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
  38. package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
  39. package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
  40. package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
  41. package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -466
  42. package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
  43. package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
  44. package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
  45. package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -110
  46. package/esm2022/lib/controls/form-control-base.mjs +0 -151
  47. package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
  48. package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
  49. package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
  50. package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
  51. package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
  52. package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
  53. package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
  54. package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
  55. package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
  56. package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
  57. package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
  58. package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
  59. package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
  60. package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
  61. package/esm2022/lib/controls/select/select.component.mjs +0 -88
  62. package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
  63. package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
  64. package/esm2022/lib/core/cache.service.mjs +0 -105
  65. package/esm2022/lib/core/custom-validators.mjs +0 -29
  66. package/esm2022/lib/core/date-time-helper.mjs +0 -228
  67. package/esm2022/lib/core/error.service.mjs +0 -61
  68. package/esm2022/lib/core/router-helper.service.mjs +0 -111
  69. package/esm2022/lib/core/scroll.service.mjs +0 -89
  70. package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
  71. package/esm2022/lib/core/telemetry.service.mjs +0 -38
  72. package/esm2022/lib/core/validation-message.service.mjs +0 -185
  73. package/esm2022/lib/core/validation-patterns.mjs +0 -31
  74. package/esm2022/lib/core/window.service.mjs +0 -186
  75. package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -49
  76. package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
  77. package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
  78. package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
  79. package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
  80. package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
  81. package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
  82. package/esm2022/lib/display/dialog/dialog.component.mjs +0 -287
  83. package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
  84. package/esm2022/lib/display/help/help-types.mjs +0 -2
  85. package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
  86. package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
  87. package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -65
  88. package/esm2022/lib/display/item-display/item-display.component.mjs +0 -83
  89. package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
  90. package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
  91. package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
  92. package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
  93. package/esm2022/lib/display/splash/splash.component.mjs +0 -61
  94. package/esm2022/lib/display/splash/splash.service.mjs +0 -35
  95. package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
  96. package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
  97. package/esm2022/lib/display/table/searchable-table.component.mjs +0 -344
  98. package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
  99. package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
  100. package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
  101. package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
  102. package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
  103. package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
  104. package/esm2022/lib/display/table/table.component.mjs +0 -257
  105. package/esm2022/lib/display/tags/tag.mjs +0 -18
  106. package/esm2022/lib/display/tags/tags.component.mjs +0 -82
  107. package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
  108. package/esm2022/lib/display/toast/toast-types.mjs +0 -8
  109. package/esm2022/lib/display/toast/toast.service.mjs +0 -35
  110. package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
  111. package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
  112. package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
  113. package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
  114. package/esm2022/lib/display/tree/tree.component.mjs +0 -139
  115. package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
  116. package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
  117. package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
  118. package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -103
  119. package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
  120. package/esm2022/lib/shared/display/pipes/date-display-2.pipe.mjs +0 -39
  121. package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -51
  122. package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
  123. package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
  124. package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
  125. package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
  126. package/esm2022/lib/shared/display.mjs +0 -6
  127. package/esm2022/lib/shared/form-group.helper.mjs +0 -67
  128. package/esm2022/lib/shared/json-helper.mjs +0 -19
  129. package/esm2022/lib/shared/lodash-helper.mjs +0 -52
  130. package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
  131. package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
  132. package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
  133. package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
  134. package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
  135. package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
  136. package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
  137. package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
  138. package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
  139. package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
  140. package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
  141. package/esm2022/lib/shared/user-preference.service.mjs +0 -17
  142. package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
  143. package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
  144. package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
  145. package/esm2022/public-api.mjs +0 -115
@@ -1,173 +0,0 @@
1
- import { Directive, HostListener, Input } from '@angular/core';
2
- import { of, Subject } from 'rxjs';
3
- import { delay, switchMap, takeUntil } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./../tooltip/tooltip.service";
6
- export class TooltipDirective {
7
- constructor(tooltipService, element, renderer2) {
8
- this.tooltipService = tooltipService;
9
- this.element = element;
10
- this.renderer2 = renderer2;
11
- //TooltipConfig: receives all the tooltip options to overwrite the
12
- //default configuration of the tooltip
13
- this.tooltipConfig = undefined;
14
- //TooltipText: receives plain text to display in the default tooltip
15
- this.tooltipText = undefined;
16
- //TooltipCustomContent: receives a template reference to display
17
- //into the tooltip content
18
- this.tooltipCustomContent = undefined;
19
- //This Input will remain as Input because tooltipPosition is not part
20
- //of TooltipOptions type of object
21
- this.tooltipPosition = "top-center";
22
- //************************************************************//
23
- //Events related
24
- this.mouseOver = new Subject();
25
- this.interrupt = new Subject();
26
- this.hideCompleted = new Subject();
27
- //Object with the tooltip options builded with the Input parameters
28
- //and use it in tooltipService - show()
29
- this.tooltipOptions = {};
30
- /**Set when we show a tooltip, to allow us to unsubscribe to mouse move when hide fires.
31
- * if we never showed the tooltip this will remain null and we won't have an event to unsubscribe to
32
- */
33
- this.mouseMoveUnsubscribe = null;
34
- }
35
- ngOnInit() {
36
- //checkInputsValue(): if there is an error it will prevent to execute
37
- //any code related with the tooltip setup
38
- if (this.checkInputsValue()) {
39
- //Create the object with the tooltip options provided as @Inputs
40
- this.createTooltipOptions();
41
- //MouseOver flow: start the process of showing the tooltip
42
- //until the mouse leaves the anchor element with this.interrupt
43
- this.mouseOver
44
- .pipe(switchMap(v => of(v).pipe(delay(300), //delays the time previous of showing the tooltip
45
- takeUntil(this.interrupt))))
46
- .subscribe(() => this.show()); //Calls the function responsable of using the tooltipService
47
- //Mouse leave flow: start the process of removing the tooltip when the mouse is away of the anchor element
48
- this.interrupt.pipe(switchMap(v => of(v).pipe(delay(50), takeUntil(this.hideCompleted)))).subscribe(() => this.hide()); //hide the tooltip and triggers the completed cycle flag this.hideCompleted
49
- }
50
- else {
51
- console.error('There are too many parameters or none parameter to config the tooltip options');
52
- }
53
- }
54
- /**Detects where the mouse is to trigger the leave/hide process
55
- * This is a backstop protection against us missing the mouseleave event and leaving a hanging chad.
56
- * On some browsers, and on some actions (especially scroll) the mouseLeave seems to never fire */
57
- onMouseMove(event) {
58
- let callCallback = false;
59
- if (this.contentRect) {
60
- callCallback = this.tooltipService.onMove(event, this.contentRect);
61
- if (callCallback) {
62
- //trigger on hide process
63
- this.interrupt.next();
64
- //reset the contentRec for a new tooltip
65
- this.contentRect = undefined;
66
- }
67
- }
68
- }
69
- //Trigger the process to show the tooltip
70
- onMouseOver() {
71
- this.mouseOver.next();
72
- }
73
- //Trigger the process to hide and later the process
74
- //to mark as complete the cycle of show and hide the tooltip
75
- onLeave() {
76
- this.interrupt.next();
77
- }
78
- checkInputsValue() {
79
- let parametersWithValue = 0;
80
- if (this.tooltipText) {
81
- parametersWithValue = parametersWithValue + 1;
82
- }
83
- if (this.tooltipCustomContent) {
84
- parametersWithValue = parametersWithValue + 1;
85
- }
86
- if (this.tooltipConfig) {
87
- parametersWithValue = parametersWithValue + 1;
88
- }
89
- if (parametersWithValue === 1) {
90
- return true;
91
- }
92
- else {
93
- return false;
94
- }
95
- }
96
- /**
97
- * createTooltipOptions
98
- * will only be executed after manageError() verifies
99
- * if the parameters are not overlapping each other
100
- * and it will build the tooltipOptions object
101
- */
102
- createTooltipOptions() {
103
- this.tooltipOptions = {
104
- id: `tooltip_${this.tooltipConfig?.id ? this.tooltipConfig?.id : ''}`,
105
- text: this.tooltipConfig?.text || this.tooltipText,
106
- title: this.tooltipConfig?.title,
107
- subtitle: this.tooltipConfig?.subtitle,
108
- customContent: this.tooltipConfig?.customContent || this.tooltipCustomContent,
109
- dismissible: this.tooltipConfig?.dismissible || false,
110
- maxWidth: this.tooltipConfig?.maxWidth,
111
- width: this.tooltipConfig?.width,
112
- backgroundColor: this.tooltipConfig?.backgroundColor,
113
- };
114
- }
115
- show() {
116
- //Reference to the element where to tooltip is attached
117
- const element = this.element.nativeElement;
118
- //contentRect will be assing only after showing a tooltip/popover and it will be
119
- //reset after hide the same tooltip/popover
120
- this.contentRect = this.element.nativeElement.getBoundingClientRect();
121
- //tooltipPosition is never undefined, default value = "top-center"
122
- if (!this.tooltip) {
123
- this.tooltip = this.tooltipService.show(element, this.tooltipPosition, this.tooltipOptions);
124
- this.mouseMoveUnsubscribe = this.renderer2.listen(document, 'mousemove', this.onMouseMove.bind(this));
125
- }
126
- }
127
- hide() {
128
- //There is a timing issue between the show - hide with
129
- //liner tooltip elements, so the below line
130
- //makes sure the app doesn't break
131
- if (this.tooltip) {
132
- //Call the hide() from the tooltip component
133
- this.tooltip.hide();
134
- this.tooltip = undefined;
135
- if (this.mouseMoveUnsubscribe) {
136
- this.mouseMoveUnsubscribe();
137
- }
138
- }
139
- //Interrupt the flow of mouseover with a delay and triggers the
140
- //flow to hide the tooltip with a delay
141
- this.interrupt.next();
142
- //Work as a flag to indicate the flow of show and hide has been completed
143
- this.hideCompleted.next();
144
- }
145
- //When the element where the tooltip is attached disappears
146
- //the tooltip should be destroy as well
147
- ngOnDestroy() {
148
- this.interrupt.next();
149
- }
150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TooltipDirective, deps: [{ token: i1.TooltipService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
151
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TooltipDirective, selector: "[ecTooltip]", inputs: { tooltipConfig: "tooltipConfig", tooltipText: "tooltipText", tooltipCustomContent: "tooltipCustomContent", tooltipPosition: "tooltipPosition" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, ngImport: i0 }); }
152
- }
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TooltipDirective, decorators: [{
154
- type: Directive,
155
- args: [{
156
- selector: '[ecTooltip]'
157
- }]
158
- }], ctorParameters: () => [{ type: i1.TooltipService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { tooltipConfig: [{
159
- type: Input
160
- }], tooltipText: [{
161
- type: Input
162
- }], tooltipCustomContent: [{
163
- type: Input
164
- }], tooltipPosition: [{
165
- type: Input
166
- }], onMouseOver: [{
167
- type: HostListener,
168
- args: ['mouseover']
169
- }], onLeave: [{
170
- type: HostListener,
171
- args: ['mouseleave']
172
- }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90b29sdGlwLWRpcmVjdGl2ZS90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWtDLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRN0QsTUFBTSxPQUFPLGdCQUFnQjtJQTJDM0IsWUFDVSxjQUE4QixFQUM5QixPQUFtQixFQUNuQixTQUFvQjtRQUZwQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBNUM5QixrRUFBa0U7UUFDbEUsc0NBQXNDO1FBQ3RCLGtCQUFhLEdBQW9CLFNBQVMsQ0FBQTtRQUUxRCxvRUFBb0U7UUFDcEQsZ0JBQVcsR0FBWSxTQUFTLENBQUM7UUFFakQsZ0VBQWdFO1FBQ2hFLDBCQUEwQjtRQUNWLHlCQUFvQixHQUFzQixTQUFTLENBQUM7UUFHcEUscUVBQXFFO1FBQ3JFLGtDQUFrQztRQUNsQixvQkFBZSxHQUFvQixZQUFZLENBQUM7UUFJaEUsZ0VBQWdFO1FBRWhFLGdCQUFnQjtRQUNSLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVE1QyxtRUFBbUU7UUFDbkUsdUNBQXVDO1FBQy9CLG1CQUFjLEdBQW1CLEVBQUUsQ0FB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bkluaXQsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50LCBUb29sdGlwT3B0aW9ucywgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi8uLi90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2x0aXBTZXJ2aWNlIH0gZnJvbSAnLi8uLi90b29sdGlwL3Rvb2x0aXAuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlY1Rvb2x0aXBdJ1xufSlcblxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8vVG9vbHRpcENvbmZpZzogcmVjZWl2ZXMgYWxsIHRoZSB0b29sdGlwIG9wdGlvbnMgdG8gb3ZlcndyaXRlIHRoZVxuICAvL2RlZmF1bHQgY29uZmlndXJhdGlvbiBvZiB0aGUgdG9vbHRpcFxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcENvbmZpZz86IFRvb2x0aXBPcHRpb25zID0gdW5kZWZpbmVkXG5cbiAgLy9Ub29sdGlwVGV4dDogcmVjZWl2ZXMgcGxhaW4gdGV4dCB0byBkaXNwbGF5IGluIHRoZSBkZWZhdWx0IHRvb2x0aXBcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBUZXh0Pzogc3RyaW5nID0gdW5kZWZpbmVkOyBcblxuICAvL1Rvb2x0aXBDdXN0b21Db250ZW50OiByZWNlaXZlcyBhIHRlbXBsYXRlIHJlZmVyZW5jZSB0byBkaXNwbGF5XG4gIC8vaW50byB0aGUgdG9vbHRpcCBjb250ZW50XG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwQ3VzdG9tQ29udGVudD86IFRlbXBsYXRlUmVmPGFueT4gPSB1bmRlZmluZWQ7XG4gIFxuICBcbiAgLy9UaGlzIElucHV0IHdpbGwgcmVtYWluIGFzIElucHV0IGJlY2F1c2UgdG9vbHRpcFBvc2l0aW9uIGlzIG5vdCBwYXJ0XG4gIC8vb2YgVG9vbHRpcE9wdGlvbnMgdHlwZSBvZiBvYmplY3RcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBQb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uID0gXCJ0b3AtY2VudGVyXCI7XG5cblxuXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuICAvL0V2ZW50cyByZWxhdGVkXG4gIHByaXZhdGUgbW91c2VPdmVyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBpbnRlcnJ1cHQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGhpZGVDb21wbGV0ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGNvbnRlbnRSZWN0OiBET01SZWN0IHwgdW5kZWZpbmVkO1xuXG4gIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuICAvL1JlZmVyZW5jZSB0byBUb29sdGlwQ29tcG9uZW50LCB3aWxsIGJlIGRlZmluZWQgYmVsb3cgaW4gdGhpcy5zaG93KClcbiAgcHJpdmF0ZSB0b29sdGlwPzogVG9vbHRpcENvbXBvbmVudDtcblxuICAvL09iamVjdCB3aXRoIHRoZSB0b29sdGlwIG9wdGlvbnMgYnVpbGRlZCB3aXRoIHRoZSBJbnB1dCBwYXJhbWV0ZXJzXG4gIC8vYW5kIHVzZSBpdCBpbiB0b29sdGlwU2VydmljZSAtIHNob3coKVxuICBwcml2YXRlIHRvb2x0aXBPcHRpb25zPzpUb29sdGlwT3B0aW9ucyA9IHt9XG4gIFxuXG4gIC8qKlNldCB3aGVuIHdlIHNob3cgYSB0b29sdGlwLCB0byBhbGxvdyB1cyB0byB1bnN1YnNjcmliZSB0byBtb3VzZSBtb3ZlIHdoZW4gaGlkZSBmaXJlcy5cbiAgICogaWYgd2UgbmV2ZXIgc2hvd2VkIHRoZSB0b29sdGlwIHRoaXMgd2lsbCByZW1haW4gbnVsbCBhbmQgd2Ugd29uJ3QgaGF2ZSBhbiBldmVudCB0byB1bnN1YnNjcmliZSB0b1xuICAgKi9cbiAgcHJpdmF0ZSBtb3VzZU1vdmVVbnN1YnNjcmliZTogKCgpPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRvb2x0aXBTZXJ2aWNlOiBUb29sdGlwU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIFxuICAgIHByaXZhdGUgcmVuZGVyZXIyOiBSZW5kZXJlcjJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vY2hlY2tJbnB1dHNWYWx1ZSgpOiBpZiB0aGVyZSBpcyBhbiBlcnJvciBpdCB3aWxsIHByZXZlbnQgdG8gZXhlY3V0ZVxuICAgIC8vYW55IGNvZGUgcmVsYXRlZCB3aXRoIHRoZSB0b29sdGlwIHNldHVwXG4gICAgaWYodGhpcy5jaGVja0lucHV0c1ZhbHVlKCkpIHtcbiAgICAgIC8vQ3JlYXRlIHRoZSBvYmplY3Qgd2l0aCB0aGUgdG9vbHRpcCBvcHRpb25zIHByb3ZpZGVkIGFzIEBJbnB1dHNcbiAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcE9wdGlvbnMoKTtcblxuICAgICAgLy9Nb3VzZU92ZXIgZmxvdzogc3RhcnQgdGhlIHByb2Nlc3Mgb2Ygc2hvd2luZyB0aGUgdG9vbHRpcFxuICAgICAgLy91bnRpbCB0aGUgbW91c2UgbGVhdmVzIHRoZSBhbmNob3IgZWxlbWVudCB3aXRoIHRoaXMuaW50ZXJydXB0XG4gICAgICB0aGlzLm1vdXNlT3ZlclxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCh2ID0+XG4gICAgICAgICAgb2YodikucGlwZShcbiAgICAgICAgICAgIGRlbGF5KDMwMCksIC8vZGVsYXlzIHRoZSB0aW1lIHByZXZpb3VzIG9mIHNob3dpbmcgdGhlIHRvb2x0aXBcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmludGVycnVwdClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zaG93KCkpOyAvL0NhbGxzIHRoZSBmdW5jdGlvbiByZXNwb25zYWJsZSBvZiB1c2luZyB0aGUgdG9vbHRpcFNlcnZpY2VcbiAgXG4gICAgICAvL01vdXNlIGxlYXZlIGZsb3c6IHN0YXJ0IHRoZSBwcm9jZXNzIG9mIHJlbW92aW5nIHRoZSB0b29sdGlwIHdoZW4gdGhlIG1vdXNlIGlzIGF3YXkgb2YgdGhlIGFuY2hvciBlbGVtZW50XG4gICAgICB0aGlzLmludGVycnVwdC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodiA9PiBcbiAgICAgICAgICBvZih2KS5waXBlKFxuICAgICAgICAgICAgZGVsYXkoNTApLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuaGlkZUNvbXBsZXRlZClcbiAgICAgICAgICApKVxuICAgICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlKCkpOyAvL2hpZGUgdGhlIHRvb2x0aXAgYW5kIHRyaWdnZXJzIHRoZSBjb21wbGV0ZWQgY3ljbGUgZmxhZyB0aGlzLmhpZGVDb21wbGV0ZWRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgYXJlIHRvbyBtYW55IHBhcmFtZXRlcnMgb3Igbm9uZSBwYXJhbWV0ZXIgdG8gY29uZmlnIHRoZSB0b29sdGlwIG9wdGlvbnMnKTtcbiAgICB9XG4gIH1cblxuICAvKipEZXRlY3RzIHdoZXJlIHRoZSBtb3VzZSBpcyB0byB0cmlnZ2VyIHRoZSBsZWF2ZS9oaWRlIHByb2Nlc3NcbiAgICogVGhpcyBpcyBhIGJhY2tzdG9wIHByb3RlY3Rpb24gYWdhaW5zdCB1cyBtaXNzaW5nIHRoZSBtb3VzZWxlYXZlIGV2ZW50IGFuZCBsZWF2aW5nIGEgaGFuZ2luZyBjaGFkLlxuICAgKiBPbiBzb21lIGJyb3dzZXJzLCBhbmQgb24gc29tZSBhY3Rpb25zIChlc3BlY2lhbGx5IHNjcm9sbCkgdGhlIG1vdXNlTGVhdmUgc2VlbXMgdG8gbmV2ZXIgZmlyZSAqL1xuICBwdWJsaWMgb25Nb3VzZU1vdmUoZXZlbnQ6TW91c2VFdmVudCkge1xuICAgIGxldCBjYWxsQ2FsbGJhY2sgPSBmYWxzZTtcbiAgICBpZih0aGlzLmNvbnRlbnRSZWN0KSB7XG4gICAgICBjYWxsQ2FsbGJhY2sgPSB0aGlzLnRvb2x0aXBTZXJ2aWNlLm9uTW92ZShldmVudCwgdGhpcy5jb250ZW50UmVjdCEpO1xuICAgICAgaWYoY2FsbENhbGxiYWNrKSB7XG4gICAgICAgIC8vdHJpZ2dlciBvbiBoaWRlIHByb2Nlc3NcbiAgICAgICAgdGhpcy5pbnRlcnJ1cHQubmV4dCgpOyBcbiAgICAgICAgLy9yZXNldCB0aGUgY29udGVudFJlYyBmb3IgYSBuZXcgdG9vbHRpcFxuICAgICAgICB0aGlzLmNvbnRlbnRSZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vVHJpZ2dlciB0aGUgcHJvY2VzcyB0byBzaG93IHRoZSB0b29sdGlwXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXG4gIHB1YmxpYyBvbk1vdXNlT3ZlcigpIHtcbiAgICB0aGlzLm1vdXNlT3Zlci5uZXh0KCk7XG4gIH1cbiAgXG4gIC8vVHJpZ2dlciB0aGUgcHJvY2VzcyB0byBoaWRlIGFuZCBsYXRlciB0aGUgcHJvY2Vzc1xuICAvL3RvIG1hcmsgYXMgY29tcGxldGUgdGhlIGN5Y2xlIG9mIHNob3cgYW5kIGhpZGUgdGhlIHRvb2x0aXBcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIHB1YmxpYyBvbkxlYXZlKCkge1xuICAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJbnB1dHNWYWx1ZSgpOmJvb2xlYW4ge1xuICAgIGxldCBwYXJhbWV0ZXJzV2l0aFZhbHVlID0gMDtcbiAgICBpZih0aGlzLnRvb2x0aXBUZXh0KSB7XG4gICAgICBwYXJhbWV0ZXJzV2l0aFZhbHVlID0gcGFyYW1ldGVyc1dpdGhWYWx1ZSArIDFcbiAgICB9IFxuICAgIGlmKHRoaXMudG9vbHRpcEN1c3RvbUNvbnRlbnQpIHtcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxuICAgIH1cbiAgICBpZih0aGlzLnRvb2x0aXBDb25maWcpIHtcbiAgICAgIHBhcmFtZXRlcnNXaXRoVmFsdWUgPSBwYXJhbWV0ZXJzV2l0aFZhbHVlICsgMVxuICAgIH1cbiAgICBpZihwYXJhbWV0ZXJzV2l0aFZhbHVlID09PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogY3JlYXRlVG9vbHRpcE9wdGlvbnNcbiAgICogd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIGFmdGVyIG1hbmFnZUVycm9yKCkgdmVyaWZpZXMgXG4gICAqIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBub3Qgb3ZlcmxhcHBpbmcgZWFjaCBvdGhlclxuICAgKiBhbmQgaXQgd2lsbCBidWlsZCB0aGUgdG9vbHRpcE9wdGlvbnMgb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVRvb2x0aXBPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSB7XG4gICAgICBpZDogYHRvb2x0aXBfJHt0aGlzLnRvb2x0aXBDb25maWc/LmlkPyB0aGlzLnRvb2x0aXBDb25maWc/LmlkOiAnJ31gLFxuICAgICAgdGV4dDogdGhpcy50b29sdGlwQ29uZmlnPy50ZXh0IHx8IHRoaXMudG9vbHRpcFRleHQsXG4gICAgICB0aXRsZTogdGhpcy50b29sdGlwQ29uZmlnPy50aXRsZSxcbiAgICAgIHN1YnRpdGxlOiB0aGlzLnRvb2x0aXBDb25maWc/LnN1YnRpdGxlLFxuICAgICAgY3VzdG9tQ29udGVudDogdGhpcy50b29sdGlwQ29uZmlnPy5jdXN0b21Db250ZW50IHx8IHRoaXMudG9vbHRpcEN1c3RvbUNvbnRlbnQsXG4gICAgICBkaXNtaXNzaWJsZTogdGhpcy50b29sdGlwQ29uZmlnPy5kaXNtaXNzaWJsZSB8fCBmYWxzZSxcbiAgICAgIG1heFdpZHRoOiB0aGlzLnRvb2x0aXBDb25maWc/Lm1heFdpZHRoLFxuICAgICAgd2lkdGg6IHRoaXMudG9vbHRpcENvbmZpZz8ud2lkdGgsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMudG9vbHRpcENvbmZpZz8uYmFja2dyb3VuZENvbG9yLFxuICAgIH07XG4gIH1cblxuXG4gIHByaXZhdGUgc2hvdygpOnZvaWQge1xuICAgIC8vUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHdoZXJlIHRvIHRvb2x0aXAgaXMgYXR0YWNoZWRcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgLy9jb250ZW50UmVjdCB3aWxsIGJlIGFzc2luZyBvbmx5IGFmdGVyIHNob3dpbmcgYSB0b29sdGlwL3BvcG92ZXIgYW5kIGl0IHdpbGwgYmVcbiAgICAvL3Jlc2V0IGFmdGVyIGhpZGUgdGhlIHNhbWUgdG9vbHRpcC9wb3BvdmVyXG4gICAgdGhpcy5jb250ZW50UmVjdCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIC8vdG9vbHRpcFBvc2l0aW9uIGlzIG5ldmVyIHVuZGVmaW5lZCwgZGVmYXVsdCB2YWx1ZSA9IFwidG9wLWNlbnRlclwiXG4gICAgaWYoIXRoaXMudG9vbHRpcCkge1xuICAgICAgdGhpcy50b29sdGlwID0gdGhpcy50b29sdGlwU2VydmljZS5zaG93KGVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsIHRoaXMudG9vbHRpcFBvc2l0aW9uLCB0aGlzLnRvb2x0aXBPcHRpb25zKTtcbiAgICAgIHRoaXMubW91c2VNb3ZlVW5zdWJzY3JpYmUgPSB0aGlzLnJlbmRlcmVyMi5saXN0ZW4oZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLm9uTW91c2VNb3ZlLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlkZSgpOnZvaWQge1xuICAgIC8vVGhlcmUgaXMgYSB0aW1pbmcgaXNzdWUgYmV0d2VlbiB0aGUgc2hvdyAtIGhpZGUgd2l0aCBcbiAgICAvL2xpbmVyIHRvb2x0aXAgZWxlbWVudHMsIHNvIHRoZSBiZWxvdyBsaW5lXG4gICAgLy9tYWtlcyBzdXJlIHRoZSBhcHAgZG9lc24ndCBicmVha1xuICAgIGlmKHRoaXMudG9vbHRpcCkge1xuICAgICAgLy9DYWxsIHRoZSBoaWRlKCkgZnJvbSB0aGUgdG9vbHRpcCBjb21wb25lbnRcbiAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XG4gICAgICB0aGlzLnRvb2x0aXAgPSB1bmRlZmluZWQ7XG4gICAgICBcbiAgICAgIGlmKHRoaXMubW91c2VNb3ZlVW5zdWJzY3JpYmUpe1xuICAgICAgICB0aGlzLm1vdXNlTW92ZVVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9JbnRlcnJ1cHQgdGhlIGZsb3cgb2YgbW91c2VvdmVyIHdpdGggYSBkZWxheSBhbmQgdHJpZ2dlcnMgdGhlIFxuICAgIC8vZmxvdyB0byBoaWRlIHRoZSB0b29sdGlwIHdpdGggYSBkZWxheSBcbiAgICB0aGlzLmludGVycnVwdC5uZXh0KCk7XG4gICAgLy9Xb3JrIGFzIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGUgZmxvdyBvZiBzaG93IGFuZCBoaWRlIGhhcyBiZWVuIGNvbXBsZXRlZFxuICAgIHRoaXMuaGlkZUNvbXBsZXRlZC5uZXh0KCk7XG4gIH1cblxuICAvL1doZW4gdGhlIGVsZW1lbnQgd2hlcmUgdGhlIHRvb2x0aXAgaXMgYXR0YWNoZWQgZGlzYXBwZWFyc1xuICAvL3RoZSB0b29sdGlwIHNob3VsZCBiZSBkZXN0cm95IGFzIHdlbGwgIFxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgIHRoaXMuaW50ZXJydXB0Lm5leHQoKTtcbiAgfVxuXG59XG4iXX0=
@@ -1,139 +0,0 @@
1
- import { Component, Input, HostBinding, Output, EventEmitter, ViewChild } from '@angular/core';
2
- import { MenuComponent } from '../../controls/menu/menu.component';
3
- import { HierarchyTreeComponent } from '../hierarchy/hierarchy-tree/hierarchy-tree.component';
4
- import { Overlay } from '../view-overlay/view-overlay.component';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "../view-overlay/view-overlay.component";
8
- import * as i3 from "../../controls/menu/menu.component";
9
- import * as i4 from "../../controls/dropdown/dropdown.component";
10
- import * as i5 from "../hierarchy/hierarchy-tree/hierarchy-tree.component";
11
- import * as i6 from "@ngx-translate/core";
12
- export class TreeComponent {
13
- /**
14
- * The ID of the component, bound to the host element's id attribute and passed
15
- * to child components
16
- */
17
- set id(value) {
18
- this._id = value;
19
- this.attrId = value;
20
- }
21
- ;
22
- get id() {
23
- return this._id;
24
- }
25
- constructor() {
26
- /** The value of the host elements id attribute */
27
- this.attrId = '';
28
- this._id = '';
29
- /** The tree's title displayed in the header */
30
- this.treeTitle = '';
31
- /** Hides the tree header when set to true */
32
- this.hideTreeHeader = false;
33
- /** Allows the root node to be collapsible with a toggle */
34
- this.collapsibleRootNode = false;
35
- /** Used when the tree is in menu mode to tell the menu if it should maintain the selected item
36
- * Useful in side nav components where this tree component may exist alongside other trees or menus
37
- * used for navigation. If this tree is in menu mode you would want this set to false so when you select an item
38
- * from a sibling navigation element the selection will not be maintained.
39
- */
40
- this.treeMenuMaintainSelectedItem = true;
41
- /** Tree overlay */
42
- this.status = new Overlay('hasData');
43
- /** Display the tree items with a MenuComponent or a HierarchyTreeComponent */
44
- this.type = 'hierarchy';
45
- /** Tree dropdown menu overlay */
46
- this.menuStatus = new Overlay('hasData');
47
- /** The menu item template */
48
- this.menuTemplateType = "checkAndLabel";
49
- /**
50
- * When true, the space for the icon is preserved for menu items that do not have icons.
51
- * Only applicable for iconAndLabel menus. Not applicable to hierarchy trees.
52
- */
53
- this.preserveIconSpace = false;
54
- /** Emits the item currently selected item in the tree */
55
- this.treeSelection = new EventEmitter();
56
- /** Emits when a hierarchy tree item is expanded as a hook to load the item's children */
57
- this.getTreeItemChildren = new EventEmitter();
58
- /** Emits when a hierarchy tree item is expanded or collapsed */
59
- this.treeItemToggled = new EventEmitter();
60
- this.templateType = 'label';
61
- }
62
- /** Emits when a tree item is selected */
63
- onItemSelected(item) {
64
- this.treeSelection.emit(item);
65
- }
66
- /** Emits when a hierarchy tree item is expanded to load the item's children */
67
- onHierarchyGetItemChildren(item) {
68
- this.getTreeItemChildren.emit(item);
69
- }
70
- /** Emits when a hierarchy tree item is expanded or collapsed */
71
- onHierarchyItemToggled(item) {
72
- this.treeItemToggled.emit(item);
73
- }
74
- /** Scroll to the tree item that is currently selected. */
75
- scrollToSelectedItem() {
76
- if (this.menuComponent) {
77
- this.menuComponent.scrollToSelectedItem();
78
- }
79
- if (this.hierarchyTreeComponent) {
80
- this.hierarchyTreeComponent.scrollToSelectedItem();
81
- }
82
- }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TreeComponent, selector: "ec-tree", inputs: { id: "id", treeTitle: "treeTitle", hideTreeHeader: "hideTreeHeader", treeItems: "treeItems", treeHierarchyHideRootNode: "treeHierarchyHideRootNode", collapsibleRootNode: "collapsibleRootNode", treeHierarchy: "treeHierarchy", treeMenuMaintainSelectedItem: "treeMenuMaintainSelectedItem", customTreeMenuTemplate: "customTreeMenuTemplate", customHierarchyItemTemplate: "customHierarchyItemTemplate", status: "status", type: "type", menuItems: "menuItems", menuStatus: "menuStatus", menuTemplateType: "menuTemplateType", preserveIconSpace: "preserveIconSpace", templateType: "templateType" }, outputs: { treeSelection: "treeSelection", getTreeItemChildren: "getTreeItemChildren", treeItemToggled: "treeItemToggled" }, host: { properties: { "attr.id": "this.attrId" } }, viewQueries: [{ propertyName: "menuComponent", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "hierarchyTreeComponent", first: true, predicate: HierarchyTreeComponent, descendants: true }], ngImport: i0, template: "<header *ngIf=\"!hideTreeHeader\"\n class=\"flex-shrink d-flex align-items-center\">\n <h2 id=\"{{id}}_title\"\n class=\"flex-grow mr-2 text-heading-1\">{{treeTitle | translate}}</h2>\n <ec-dropdown *ngIf=\"menuItems?.length\"\n id=\"{{id}}_dropdown\"\n class=\"flex-shrink\"\n icon=\"icon-menu\"\n [menuTemplateType]=\"menuTemplateType\"\n menuPosition=\"left\"\n [status]=\"menuStatus\"\n [popupFixed]=\"true\"\n [showArrow]=\"false\"\n [menuMinWidth]=\"240\"\n [items]=\"menuItems\">\n </ec-dropdown>\n</header>\n\n<div class=\"flex-grow d-flex\"\n ecOverlay\n [status]=\"status?.status\"\n [message]=\"status?.message\"\n [displayAsMask]=\"true\">\n <ng-container *ngIf=\"type === 'menu'\">\n <ec-menu [id]=\"id\"\n [items]=\"treeItems\"\n [templateType]=\"templateType\"\n [maintainSelectedItem]=\"treeMenuMaintainSelectedItem\"\n [truncateItems]=\"true\"\n (selectedChanged)=\"onItemSelected($event)\"\n [customMenuTemplate]=\"customTreeMenuTemplate ? customTreeMenuTemplate : undefined\"\n [preserveIconSpace]=\"preserveIconSpace\"\n class=\"flex-grow\">\n </ec-menu>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'hierarchy'\">\n <ec-hierarchy-tree [id]=\"id\"\n [rootNode]=\"treeHierarchy\"\n [hideRootNode]=\"treeHierarchyHideRootNode\"\n [collapsibleRootNode]=\"collapsibleRootNode\"\n (getItemChildren)=\"onHierarchyGetItemChildren($event)\"\n (itemToggled)=\"onHierarchyItemToggled($event)\"\n (itemSelected)=\"onItemSelected($event)\"\n [customItemTemplate]=\"customHierarchyItemTemplate\"\n class=\"flex-grow d-flex\">\n </ec-hierarchy-tree>\n </ng-container>\n</div>", styles: [":host{display:flex;flex-direction:column}header{height:var(--ec-tree-height-header, 3rem);background-color:var(--ec-tree-background-color, var(--ec-background-color));padding:var(--ec-tree-padding-header, 0 .25rem 0 .5rem);border-bottom:var(--ec-tree-border-bottom-header, var(--ec-border-width) solid var(--ec-border-color))}ec-dropdown.fill{height:var(--ec-tree-height-header, 3rem);width:var(--ec-tree-height-header, 3rem)}ec-menu,ec-hierarchy-tree{--ec-menu-background-color: var(--ec-tree-background-color)}[ecOverlay]{--ec-overlay-background-color: var(--ec-tree-background-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ViewOverlayComponent, selector: "[ecOverlay]", inputs: ["status", "message", "action", "noDataTemplate", "displayAsMask", "overlayClassList"] }, { kind: "component", type: i3.MenuComponent, selector: "ec-menu", inputs: ["id", "items", "selected", "parent", "templateType", "customMenuTemplate", "title", "showNoItems", "noDataText", "enableKeyNav", "highlightedItem", "maintainSelectedItem", "truncateItems", "preserveIconSpace", "dropdownToggleButton"], outputs: ["selectedChanged", "menuClosed"] }, { kind: "component", type: i4.DropdownComponent, selector: "ec-dropdown", inputs: ["id", "autofocus", "status", "disabled", "label", "icon", "buttonType", "buttonAlignment", "buttonTitle", "tabindex", "showArrow", "items", "menuTemplateType", "menuTitle", "menuHeight", "menuWidth", "menuMinWidth", "menuPosition", "menuFooter", "popupFixed", "buttonCustomTemplate", "pending"], outputs: ["itemSelected", "popupOpened"] }, { kind: "component", type: i5.HierarchyTreeComponent, selector: "ec-hierarchy-tree", inputs: ["collapsibleRootNode", "id", "hideRootNode", "customItemTemplate"], outputs: ["itemSelected"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TreeComponent, decorators: [{
87
- type: Component,
88
- args: [{ selector: 'ec-tree', template: "<header *ngIf=\"!hideTreeHeader\"\n class=\"flex-shrink d-flex align-items-center\">\n <h2 id=\"{{id}}_title\"\n class=\"flex-grow mr-2 text-heading-1\">{{treeTitle | translate}}</h2>\n <ec-dropdown *ngIf=\"menuItems?.length\"\n id=\"{{id}}_dropdown\"\n class=\"flex-shrink\"\n icon=\"icon-menu\"\n [menuTemplateType]=\"menuTemplateType\"\n menuPosition=\"left\"\n [status]=\"menuStatus\"\n [popupFixed]=\"true\"\n [showArrow]=\"false\"\n [menuMinWidth]=\"240\"\n [items]=\"menuItems\">\n </ec-dropdown>\n</header>\n\n<div class=\"flex-grow d-flex\"\n ecOverlay\n [status]=\"status?.status\"\n [message]=\"status?.message\"\n [displayAsMask]=\"true\">\n <ng-container *ngIf=\"type === 'menu'\">\n <ec-menu [id]=\"id\"\n [items]=\"treeItems\"\n [templateType]=\"templateType\"\n [maintainSelectedItem]=\"treeMenuMaintainSelectedItem\"\n [truncateItems]=\"true\"\n (selectedChanged)=\"onItemSelected($event)\"\n [customMenuTemplate]=\"customTreeMenuTemplate ? customTreeMenuTemplate : undefined\"\n [preserveIconSpace]=\"preserveIconSpace\"\n class=\"flex-grow\">\n </ec-menu>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'hierarchy'\">\n <ec-hierarchy-tree [id]=\"id\"\n [rootNode]=\"treeHierarchy\"\n [hideRootNode]=\"treeHierarchyHideRootNode\"\n [collapsibleRootNode]=\"collapsibleRootNode\"\n (getItemChildren)=\"onHierarchyGetItemChildren($event)\"\n (itemToggled)=\"onHierarchyItemToggled($event)\"\n (itemSelected)=\"onItemSelected($event)\"\n [customItemTemplate]=\"customHierarchyItemTemplate\"\n class=\"flex-grow d-flex\">\n </ec-hierarchy-tree>\n </ng-container>\n</div>", styles: [":host{display:flex;flex-direction:column}header{height:var(--ec-tree-height-header, 3rem);background-color:var(--ec-tree-background-color, var(--ec-background-color));padding:var(--ec-tree-padding-header, 0 .25rem 0 .5rem);border-bottom:var(--ec-tree-border-bottom-header, var(--ec-border-width) solid var(--ec-border-color))}ec-dropdown.fill{height:var(--ec-tree-height-header, 3rem);width:var(--ec-tree-height-header, 3rem)}ec-menu,ec-hierarchy-tree{--ec-menu-background-color: var(--ec-tree-background-color)}[ecOverlay]{--ec-overlay-background-color: var(--ec-tree-background-color)}\n"] }]
89
- }], ctorParameters: () => [], propDecorators: { attrId: [{
90
- type: HostBinding,
91
- args: ['attr.id']
92
- }], id: [{
93
- type: Input
94
- }], treeTitle: [{
95
- type: Input
96
- }], hideTreeHeader: [{
97
- type: Input
98
- }], treeItems: [{
99
- type: Input
100
- }], treeHierarchyHideRootNode: [{
101
- type: Input
102
- }], collapsibleRootNode: [{
103
- type: Input
104
- }], treeHierarchy: [{
105
- type: Input
106
- }], treeMenuMaintainSelectedItem: [{
107
- type: Input
108
- }], customTreeMenuTemplate: [{
109
- type: Input
110
- }], customHierarchyItemTemplate: [{
111
- type: Input
112
- }], status: [{
113
- type: Input
114
- }], type: [{
115
- type: Input
116
- }], menuItems: [{
117
- type: Input
118
- }], menuStatus: [{
119
- type: Input
120
- }], menuTemplateType: [{
121
- type: Input
122
- }], preserveIconSpace: [{
123
- type: Input
124
- }], treeSelection: [{
125
- type: Output
126
- }], getTreeItemChildren: [{
127
- type: Output
128
- }], treeItemToggled: [{
129
- type: Output
130
- }], menuComponent: [{
131
- type: ViewChild,
132
- args: [MenuComponent]
133
- }], hierarchyTreeComponent: [{
134
- type: ViewChild,
135
- args: [HierarchyTreeComponent]
136
- }], templateType: [{
137
- type: Input
138
- }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUE4QixNQUFNLG9DQUFvQyxDQUFDO0FBRS9GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7QUFTakUsTUFBTSxPQUFPLGFBQWE7SUFLeEI7OztPQUdHO0lBQ0gsSUFDVyxFQUFFLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBQUEsQ0FBQztJQUNGLElBQVcsRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBd0VEO1FBdEZBLGtEQUFrRDtRQUNuQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBYzNDLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFFekIsK0NBQStDO1FBQy9CLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFFdkMsNkNBQTZDO1FBQzdCLG1CQUFjLEdBQWEsS0FBSyxDQUFDO1FBUWpELDJEQUEyRDtRQUMzQyx3QkFBbUIsR0FBYSxLQUFLLENBQUM7UUFLdEQ7Ozs7V0FJRztRQUNhLGlDQUE0QixHQUFZLElBQUksQ0FBQztRQVE3RCxtQkFBbUI7UUFDSCxXQUFNLEdBQWEsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUQsOEVBQThFO1FBQzlELFNBQUksR0FBYyxXQUFXLENBQUM7UUFLOUMsaUNBQWlDO1FBQ2pCLGVBQVUsR0FBYSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU5RCw2QkFBNkI7UUFDYixxQkFBZ0IsR0FBc0IsZUFBZSxDQUFDO1FBRXRFOzs7V0FHRztRQUNhLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUVuRCx5REFBeUQ7UUFDeEMsa0JBQWEsR0FBMkMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1Rix5RkFBeUY7UUFDeEUsd0JBQW1CLEdBQWdDLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdkYsZ0VBQWdFO1FBQy9DLG9CQUFlLEdBQXVDLElBQUksWUFBWSxFQUF3QixDQUFDO1FBUWhHLGlCQUFZLEdBQXFCLE9BQU8sQ0FBQztJQUV6QyxDQUFDO0lBRWpCLHlDQUF5QztJQUNsQyxjQUFjLENBQUMsSUFBOEI7UUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELCtFQUErRTtJQUN4RSwwQkFBMEIsQ0FBQyxJQUFtQjtRQUNuRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnRUFBZ0U7SUFDekQsc0JBQXNCLENBQUMsSUFBMEI7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELDBEQUEwRDtJQUNuRCxvQkFBb0I7UUFDekIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDOytHQWxIVSxhQUFhO21HQUFiLGFBQWEscTJCQWlGYixhQUFhLHlGQUdiLHNCQUFzQixnRENqR25DLGtnRUFnRE07OzRGRG5DTyxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFNBQVM7d0RBT1ksTUFBTTtzQkFBcEMsV0FBVzt1QkFBQyxTQUFTO2dCQU9YLEVBQUU7c0JBRFosS0FBSztnQkFXVSxTQUFTO3NCQUF4QixLQUFLO2dCQUdVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBR1UsU0FBUztzQkFBeEIsS0FBSztnQkFHVSx5QkFBeUI7c0JBQXhDLEtBQUs7Z0JBR1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUdVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBT1UsNEJBQTRCO3NCQUEzQyxLQUFLO2dCQUdVLHNCQUFzQjtzQkFBckMsS0FBSztnQkFHVSwyQkFBMkI7c0JBQTFDLEtBQUs7Z0JBR1UsTUFBTTtzQkFBckIsS0FBSztnQkFHVSxJQUFJO3NCQUFuQixLQUFLO2dCQUdVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBR1UsVUFBVTtzQkFBekIsS0FBSztnQkFHVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBTVUsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUdXLGFBQWE7c0JBQTdCLE1BQU07Z0JBR1UsbUJBQW1CO3NCQUFuQyxNQUFNO2dCQUdVLGVBQWU7c0JBQS9CLE1BQU07Z0JBRzBCLGFBQWE7c0JBQTdDLFNBQVM7dUJBQUMsYUFBYTtnQkFHa0Isc0JBQXNCO3NCQUEvRCxTQUFTO3VCQUFDLHNCQUFzQjtnQkFFakIsWUFBWTtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RCaW5kaW5nLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUNvbXBvbmVudCwgTWVudUl0ZW0sIE1lbnVUZW1wbGF0ZVR5cGUgfSBmcm9tICcuLi8uLi9jb250cm9scy9tZW51L21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRvZ2dsZWRIaWVyYXJjaHlJdGVtLCBIaWVyYXJjaHlJdGVtIH0gZnJvbSAnLi4vaGllcmFyY2h5L2hpZXJhcmNoeS1iYXNlJztcbmltcG9ydCB7IEhpZXJhcmNoeVRyZWVDb21wb25lbnQgfSBmcm9tICcuLi9oaWVyYXJjaHkvaGllcmFyY2h5LXRyZWUvaGllcmFyY2h5LXRyZWUuY29tcG9uZW50JztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi92aWV3LW92ZXJsYXkvdmlldy1vdmVybGF5LmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIFRyZWVUeXBlID0gJ2hpZXJhcmNoeScgfCAnbWVudSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VjLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUcmVlQ29tcG9uZW50IHtcblxuICAvKiogVGhlIHZhbHVlIG9mIHRoZSBob3N0IGVsZW1lbnRzIGlkIGF0dHJpYnV0ZSAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBwdWJsaWMgYXR0cklkOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBjb21wb25lbnQsIGJvdW5kIHRvIHRoZSBob3N0IGVsZW1lbnQncyBpZCBhdHRyaWJ1dGUgYW5kIHBhc3NlZFxuICAgKiB0byBjaGlsZCBjb21wb25lbnRzXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlO1xuICAgIHRoaXMuYXR0cklkID0gdmFsdWU7XG4gIH07XG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cbiAgcHJpdmF0ZSBfaWQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUaGUgdHJlZSdzIHRpdGxlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyICovXG4gIEBJbnB1dCgpIHB1YmxpYyB0cmVlVGl0bGU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBIaWRlcyB0aGUgdHJlZSBoZWFkZXIgd2hlbiBzZXQgdG8gdHJ1ZSAqL1xuICBASW5wdXQoKSBwdWJsaWMgaGlkZVRyZWVIZWFkZXI/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIHRyZWUgd2hlbiB0eXBlIGlzICdtZW51JyAqL1xuICBASW5wdXQoKSBwdWJsaWMgdHJlZUl0ZW1zPzogTWVudUl0ZW1bXTtcblxuICAvKiogSGlkZSB0aGUgcm9vdCB0cmVlIGl0ZW0gd2hlbiB0eXBlIGlzICdoaWVyYXJjaHknICovXG4gIEBJbnB1dCgpIHB1YmxpYyB0cmVlSGllcmFyY2h5SGlkZVJvb3ROb2RlPzogYm9vbGVhbjtcblxuICAvKiogQWxsb3dzIHRoZSByb290IG5vZGUgdG8gYmUgY29sbGFwc2libGUgd2l0aCBhIHRvZ2dsZSAqL1xuICBASW5wdXQoKSBwdWJsaWMgY29sbGFwc2libGVSb290Tm9kZT86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgdHJlZSB3aGVuIHR5cGUgaXMgJ2hpZXJhcmNoeScgKi9cbiAgQElucHV0KCkgcHVibGljIHRyZWVIaWVyYXJjaHk/OiBIaWVyYXJjaHlJdGVtO1xuXG4gIC8qKiBVc2VkIHdoZW4gdGhlIHRyZWUgaXMgaW4gbWVudSBtb2RlIHRvIHRlbGwgdGhlIG1lbnUgaWYgaXQgc2hvdWxkIG1haW50YWluIHRoZSBzZWxlY3RlZCBpdGVtXG4gICAqICBVc2VmdWwgaW4gc2lkZSBuYXYgY29tcG9uZW50cyB3aGVyZSB0aGlzIHRyZWUgY29tcG9uZW50IG1heSBleGlzdCBhbG9uZ3NpZGUgb3RoZXIgdHJlZXMgb3IgbWVudXNcbiAgICogIHVzZWQgZm9yIG5hdmlnYXRpb24uIElmIHRoaXMgdHJlZSBpcyBpbiBtZW51IG1vZGUgeW91IHdvdWxkIHdhbnQgdGhpcyBzZXQgdG8gZmFsc2Ugc28gd2hlbiB5b3Ugc2VsZWN0IGFuIGl0ZW1cbiAgICogIGZyb20gYSBzaWJsaW5nIG5hdmlnYXRpb24gZWxlbWVudCB0aGUgc2VsZWN0aW9uIHdpbGwgbm90IGJlIG1haW50YWluZWQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgdHJlZU1lbnVNYWludGFpblNlbGVjdGVkSXRlbTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqIFVzZWQgd2hlbiBhIGN1c3RvbSB0ZW1wbGF0ZSBpcyBuZWVkZWQgZm9yIHRoZSBtZW51IGl0ZW1zIHdoZW4gdGhlIHRyZWUgaXMgaW4gbWVudSBtb2RlICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21UcmVlTWVudVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogVXNlZCB3aGVuIGEgY3VzdG9tIHRlbXBsYXRlIGlzIG5lZWRlZCBmb3IgdGhlIGhpZXJhcmNoeSBpdGVtcyB3aGVuIHRoZSB0cmVlIGlzIGluIGhpZXJhcmNoeSBtb2RlICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21IaWVyYXJjaHlJdGVtVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBUcmVlIG92ZXJsYXkgKi9cbiAgQElucHV0KCkgcHVibGljIHN0YXR1cz86IE92ZXJsYXkgPSBuZXcgT3ZlcmxheSgnaGFzRGF0YScpO1xuXG4gIC8qKiBEaXNwbGF5IHRoZSB0cmVlIGl0ZW1zIHdpdGggYSBNZW51Q29tcG9uZW50IG9yIGEgSGllcmFyY2h5VHJlZUNvbXBvbmVudCAqL1xuICBASW5wdXQoKSBwdWJsaWMgdHlwZT86IFRyZWVUeXBlID0gJ2hpZXJhcmNoeSc7XG5cbiAgLyoqIEl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIGRyb3Bkb3duIG1lbnUgKi9cbiAgQElucHV0KCkgcHVibGljIG1lbnVJdGVtcz86IE1lbnVJdGVtW107XG5cbiAgLyoqIFRyZWUgZHJvcGRvd24gbWVudSBvdmVybGF5ICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtZW51U3RhdHVzPzogT3ZlcmxheSA9IG5ldyBPdmVybGF5KCdoYXNEYXRhJyk7XG5cbiAgLyoqIFRoZSBtZW51IGl0ZW0gdGVtcGxhdGUgKi9cbiAgQElucHV0KCkgcHVibGljIG1lbnVUZW1wbGF0ZVR5cGU/OiBNZW51VGVtcGxhdGVUeXBlID0gXCJjaGVja0FuZExhYmVsXCI7XG5cbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgdGhlIHNwYWNlIGZvciB0aGUgaWNvbiBpcyBwcmVzZXJ2ZWQgZm9yIG1lbnUgaXRlbXMgdGhhdCBkbyBub3QgaGF2ZSBpY29ucy5cbiAgICogT25seSBhcHBsaWNhYmxlIGZvciBpY29uQW5kTGFiZWwgbWVudXMuIE5vdCBhcHBsaWNhYmxlIHRvIGhpZXJhcmNoeSB0cmVlcy5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVzZXJ2ZUljb25TcGFjZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFbWl0cyB0aGUgaXRlbSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbSBpbiB0aGUgdHJlZSAqL1xuICBAT3V0cHV0KCkgcHVibGljIHRyZWVTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjxNZW51SXRlbSB8IEhpZXJhcmNoeUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIGEgaGllcmFyY2h5IHRyZWUgaXRlbSBpcyBleHBhbmRlZCBhcyBhIGhvb2sgdG8gbG9hZCB0aGUgaXRlbSdzIGNoaWxkcmVuICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgZ2V0VHJlZUl0ZW1DaGlsZHJlbjogRXZlbnRFbWl0dGVyPEhpZXJhcmNoeUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIGEgaGllcmFyY2h5IHRyZWUgaXRlbSBpcyBleHBhbmRlZCBvciBjb2xsYXBzZWQgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyB0cmVlSXRlbVRvZ2dsZWQ6IEV2ZW50RW1pdHRlcjxUb2dnbGVkSGllcmFyY2h5SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRvZ2dsZWRIaWVyYXJjaHlJdGVtPigpO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIE1lbnVDb21wb25lbnQgaW5zdGFuY2UgaW4gdGhlIHRlbXBsYXRlICovXG4gIEBWaWV3Q2hpbGQoTWVudUNvbXBvbmVudCkgcHVibGljIG1lbnVDb21wb25lbnQ/OiBNZW51Q29tcG9uZW50O1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIEhpZXJhcmNoeVRyZWVDb21wb25lbnQgaW5zdGFuY2UgaW4gdGhlIHRlbXBsYXRlICovXG4gIEBWaWV3Q2hpbGQoSGllcmFyY2h5VHJlZUNvbXBvbmVudCkgcHVibGljIGhpZXJhcmNoeVRyZWVDb21wb25lbnQ/OiBIaWVyYXJjaHlUcmVlQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyB0ZW1wbGF0ZVR5cGU6IE1lbnVUZW1wbGF0ZVR5cGUgPSAnbGFiZWwnO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLyoqIEVtaXRzIHdoZW4gYSB0cmVlIGl0ZW0gaXMgc2VsZWN0ZWQgKi9cbiAgcHVibGljIG9uSXRlbVNlbGVjdGVkKGl0ZW06IE1lbnVJdGVtIHwgSGllcmFyY2h5SXRlbSkge1xuICAgIHRoaXMudHJlZVNlbGVjdGlvbi5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgLyoqIEVtaXRzIHdoZW4gYSBoaWVyYXJjaHkgdHJlZSBpdGVtIGlzIGV4cGFuZGVkIHRvIGxvYWQgdGhlIGl0ZW0ncyBjaGlsZHJlbiAqL1xuICBwdWJsaWMgb25IaWVyYXJjaHlHZXRJdGVtQ2hpbGRyZW4oaXRlbTogSGllcmFyY2h5SXRlbSkge1xuICAgIHRoaXMuZ2V0VHJlZUl0ZW1DaGlsZHJlbi5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgLyoqIEVtaXRzIHdoZW4gYSBoaWVyYXJjaHkgdHJlZSBpdGVtIGlzIGV4cGFuZGVkIG9yIGNvbGxhcHNlZCAqL1xuICBwdWJsaWMgb25IaWVyYXJjaHlJdGVtVG9nZ2xlZChpdGVtOiBUb2dnbGVkSGllcmFyY2h5SXRlbSkge1xuICAgIHRoaXMudHJlZUl0ZW1Ub2dnbGVkLmVtaXQoaXRlbSk7XG4gIH1cblxuICAvKiogU2Nyb2xsIHRvIHRoZSB0cmVlIGl0ZW0gdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuICovXG4gIHB1YmxpYyBzY3JvbGxUb1NlbGVjdGVkSXRlbSgpIHtcbiAgICBpZiAodGhpcy5tZW51Q29tcG9uZW50KSB7XG4gICAgICB0aGlzLm1lbnVDb21wb25lbnQuc2Nyb2xsVG9TZWxlY3RlZEl0ZW0oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oaWVyYXJjaHlUcmVlQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLmhpZXJhcmNoeVRyZWVDb21wb25lbnQuc2Nyb2xsVG9TZWxlY3RlZEl0ZW0oKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxoZWFkZXIgKm5nSWY9XCIhaGlkZVRyZWVIZWFkZXJcIlxuICAgICAgICBjbGFzcz1cImZsZXgtc2hyaW5rIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPGgyIGlkPVwie3tpZH19X3RpdGxlXCJcbiAgICAgIGNsYXNzPVwiZmxleC1ncm93IG1yLTIgdGV4dC1oZWFkaW5nLTFcIj57e3RyZWVUaXRsZSB8IHRyYW5zbGF0ZX19PC9oMj5cbiAgPGVjLWRyb3Bkb3duICpuZ0lmPVwibWVudUl0ZW1zPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgaWQ9XCJ7e2lkfX1fZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LXNocmlua1wiXG4gICAgICAgICAgICAgICBpY29uPVwiaWNvbi1tZW51XCJcbiAgICAgICAgICAgICAgIFttZW51VGVtcGxhdGVUeXBlXT1cIm1lbnVUZW1wbGF0ZVR5cGVcIlxuICAgICAgICAgICAgICAgbWVudVBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgICAgICBbc3RhdHVzXT1cIm1lbnVTdGF0dXNcIlxuICAgICAgICAgICAgICAgW3BvcHVwRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICBbc2hvd0Fycm93XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgIFttZW51TWluV2lkdGhdPVwiMjQwXCJcbiAgICAgICAgICAgICAgIFtpdGVtc109XCJtZW51SXRlbXNcIj5cbiAgPC9lYy1kcm9wZG93bj5cbjwvaGVhZGVyPlxuXG48ZGl2IGNsYXNzPVwiZmxleC1ncm93IGQtZmxleFwiXG4gICAgIGVjT3ZlcmxheVxuICAgICBbc3RhdHVzXT1cInN0YXR1cz8uc3RhdHVzXCJcbiAgICAgW21lc3NhZ2VdPVwic3RhdHVzPy5tZXNzYWdlXCJcbiAgICAgW2Rpc3BsYXlBc01hc2tdPVwidHJ1ZVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ21lbnUnXCI+XG4gICAgPGVjLW1lbnUgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICBbaXRlbXNdPVwidHJlZUl0ZW1zXCJcbiAgICAgICAgICAgICBbdGVtcGxhdGVUeXBlXT1cInRlbXBsYXRlVHlwZVwiXG4gICAgICAgICAgICAgW21haW50YWluU2VsZWN0ZWRJdGVtXT1cInRyZWVNZW51TWFpbnRhaW5TZWxlY3RlZEl0ZW1cIlxuICAgICAgICAgICAgIFt0cnVuY2F0ZUl0ZW1zXT1cInRydWVcIlxuICAgICAgICAgICAgIChzZWxlY3RlZENoYW5nZWQpPVwib25JdGVtU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgW2N1c3RvbU1lbnVUZW1wbGF0ZV09XCJjdXN0b21UcmVlTWVudVRlbXBsYXRlID8gY3VzdG9tVHJlZU1lbnVUZW1wbGF0ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgW3ByZXNlcnZlSWNvblNwYWNlXT1cInByZXNlcnZlSWNvblNwYWNlXCJcbiAgICAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxuICAgIDwvZWMtbWVudT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdoaWVyYXJjaHknXCI+XG4gICAgPGVjLWhpZXJhcmNoeS10cmVlIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtyb290Tm9kZV09XCJ0cmVlSGllcmFyY2h5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVSb290Tm9kZV09XCJ0cmVlSGllcmFyY2h5SGlkZVJvb3ROb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxhcHNpYmxlUm9vdE5vZGVdPVwiY29sbGFwc2libGVSb290Tm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChnZXRJdGVtQ2hpbGRyZW4pPVwib25IaWVyYXJjaHlHZXRJdGVtQ2hpbGRyZW4oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChpdGVtVG9nZ2xlZCk9XCJvbkhpZXJhcmNoeUl0ZW1Ub2dnbGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAoaXRlbVNlbGVjdGVkKT1cIm9uSXRlbVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tSXRlbVRlbXBsYXRlXT1cImN1c3RvbUhpZXJhcmNoeUl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ncm93IGQtZmxleFwiPlxuICAgIDwvZWMtaGllcmFyY2h5LXRyZWU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
@@ -1,58 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "../../controls/button/button.component";
5
- import * as i3 from "../spinner/spinner.component";
6
- import * as i4 from "@ngx-translate/core";
7
- export class Overlay {
8
- constructor(status, message) {
9
- this.status = 'hasData';
10
- this.message = '';
11
- this.setStatus(status, message);
12
- }
13
- setStatus(status, message, action, noDataTemplate, overlayClassList) {
14
- this.status = status;
15
- this.message = message || '';
16
- this.action = action || undefined;
17
- this.noDataTemplate = noDataTemplate || undefined;
18
- this.overlayClassList = overlayClassList || '';
19
- }
20
- }
21
- /**
22
- * Wraps content in order to show pending, error, and no data states with an optional message/noDataTemplate
23
- */
24
- export class ViewOverlayComponent {
25
- constructor() {
26
- this.status = 'hasData';
27
- }
28
- setStatus(status, message, action, noDataTemplate) {
29
- this.status = status;
30
- this.message = message || '';
31
- this.action = action || undefined;
32
- this.noDataTemplate = noDataTemplate || undefined;
33
- }
34
- actionClicked(event) {
35
- if (this.action && this.action.onClick) {
36
- this.action.onClick(event);
37
- }
38
- }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ViewOverlayComponent, selector: "[ecOverlay]", inputs: { status: "status", message: "message", action: "action", noDataTemplate: "noDataTemplate", displayAsMask: "displayAsMask", overlayClassList: "overlayClassList" }, ngImport: i0, template: "<!-- Transcluded Content -->\n<ng-content *ngIf=\"displayAsMask || (!displayAsMask && status === 'hasData')\"></ng-content>\n<!--Used by GI tests to know the overlay status whether we use ngIf or mask version. No visual impact-->\n<span [hidden]=\"true\"\n\t class=\"overlay-status-{{status}}\"></span>\n<!-- Overlay goes last so it is rendered on top of preceding content due to source order -->\n<div *ngIf=\"status !== 'hasData'\"\n\t class=\"overlay flex-grow {{overlayClassList}}\"\n\t [ngClass]=\"{'not-mask': !displayAsMask,\n\t\t\t\t'overlay-error': status === 'error',\n\t\t\t\t'overlay-nodata': status === 'noData',\n\t\t\t\t'overlay-pending': status === 'pending'}\">\n\n\t<!--Pending Spinner-->\n\t<ec-spinner [hidden]=\"status !== 'pending'\"></ec-spinner>\n\n\t<ng-template [ngIf]=\"status === 'noData' && noDataTemplate\">\n\t\t<ng-container *ngTemplateOutlet=\"noDataTemplate\"></ng-container>\n\t</ng-template>\n\n\t<ng-container *ngIf=\"(status === 'noData' && !noDataTemplate) || status !== 'noData'\">\n\t\t<!--Status Message-->\n\t\t<div id=\"statusMessage\"\n\t\t\t class=\"message\"\n\t\t\t *ngIf=\"message\"\n\t\t\t [ngClass]=\"{'error': status === 'error', 'mt-1': status === 'pending'}\"\n\t\t\t [innerHtml]=\"message | translate\">\n\t\t</div>\n\n\t\t<!-- Action -->\n\t\t<ec-button type=\"common\"\n\t\t\t\t class=\"mt-3\"\n\t\t\t\t *ngIf=\"action?.onClick\"\n\t\t\t\t [icon]=\"action?.icon\"\n\t\t\t\t (clicked)=\"actionClicked($event)\"\n\t\t\t\t [label]=\"action?.label\"\n\t\t\t\t [hidden]=\"status === 'pending'\">\n\t\t</ec-button>\n\t</ng-container>\n\n</div>", styles: [":host{position:relative}:host(.bg-body)>.overlay{background-color:var(--ec-background-color-body)}:host(.bg-body).is-translucent>.overlay{background-color:var(--ec-background-color-overlay)}:host(.bg-content)>.overlay{background-color:var(--ec-background-color)}:host(.bg-content).is-translucent>.overlay{background-color:var(--ec-background-color-overlay)}.overlay{align-items:center;background-color:var(--ec-overlay-background-color, var(--ec-background-color));display:flex;flex-direction:column;justify-content:center;padding:3rem 4rem;z-index:var(--ec-z-index-overlay);position:absolute;inset:0}.overlay.not-mask{position:relative;min-height:100%}.message{color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-title)}.message.error{color:var(--ec-color-danger);font-size:var(--ec-font-size-title)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "lockButton", "icon", "iconColor", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "component", type: i3.SpinnerComponent, selector: "ec-spinner" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewOverlayComponent, decorators: [{
43
- type: Component,
44
- args: [{ selector: '[ecOverlay]', template: "<!-- Transcluded Content -->\n<ng-content *ngIf=\"displayAsMask || (!displayAsMask && status === 'hasData')\"></ng-content>\n<!--Used by GI tests to know the overlay status whether we use ngIf or mask version. No visual impact-->\n<span [hidden]=\"true\"\n\t class=\"overlay-status-{{status}}\"></span>\n<!-- Overlay goes last so it is rendered on top of preceding content due to source order -->\n<div *ngIf=\"status !== 'hasData'\"\n\t class=\"overlay flex-grow {{overlayClassList}}\"\n\t [ngClass]=\"{'not-mask': !displayAsMask,\n\t\t\t\t'overlay-error': status === 'error',\n\t\t\t\t'overlay-nodata': status === 'noData',\n\t\t\t\t'overlay-pending': status === 'pending'}\">\n\n\t<!--Pending Spinner-->\n\t<ec-spinner [hidden]=\"status !== 'pending'\"></ec-spinner>\n\n\t<ng-template [ngIf]=\"status === 'noData' && noDataTemplate\">\n\t\t<ng-container *ngTemplateOutlet=\"noDataTemplate\"></ng-container>\n\t</ng-template>\n\n\t<ng-container *ngIf=\"(status === 'noData' && !noDataTemplate) || status !== 'noData'\">\n\t\t<!--Status Message-->\n\t\t<div id=\"statusMessage\"\n\t\t\t class=\"message\"\n\t\t\t *ngIf=\"message\"\n\t\t\t [ngClass]=\"{'error': status === 'error', 'mt-1': status === 'pending'}\"\n\t\t\t [innerHtml]=\"message | translate\">\n\t\t</div>\n\n\t\t<!-- Action -->\n\t\t<ec-button type=\"common\"\n\t\t\t\t class=\"mt-3\"\n\t\t\t\t *ngIf=\"action?.onClick\"\n\t\t\t\t [icon]=\"action?.icon\"\n\t\t\t\t (clicked)=\"actionClicked($event)\"\n\t\t\t\t [label]=\"action?.label\"\n\t\t\t\t [hidden]=\"status === 'pending'\">\n\t\t</ec-button>\n\t</ng-container>\n\n</div>", styles: [":host{position:relative}:host(.bg-body)>.overlay{background-color:var(--ec-background-color-body)}:host(.bg-body).is-translucent>.overlay{background-color:var(--ec-background-color-overlay)}:host(.bg-content)>.overlay{background-color:var(--ec-background-color)}:host(.bg-content).is-translucent>.overlay{background-color:var(--ec-background-color-overlay)}.overlay{align-items:center;background-color:var(--ec-overlay-background-color, var(--ec-background-color));display:flex;flex-direction:column;justify-content:center;padding:3rem 4rem;z-index:var(--ec-z-index-overlay);position:absolute;inset:0}.overlay.not-mask{position:relative;min-height:100%}.message{color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-title)}.message.error{color:var(--ec-color-danger);font-size:var(--ec-font-size-title)}\n"] }]
45
- }], propDecorators: { status: [{
46
- type: Input
47
- }], message: [{
48
- type: Input
49
- }], action: [{
50
- type: Input
51
- }], noDataTemplate: [{
52
- type: Input
53
- }], displayAsMask: [{
54
- type: Input
55
- }], overlayClassList: [{
56
- type: Input
57
- }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBSTlELE1BQU0sT0FBTyxPQUFPO0lBV2xCLFlBQVksTUFBa0IsRUFBRSxPQUFnQjtRQU5oRCxXQUFNLEdBQWUsU0FBUyxDQUFDO1FBQy9CLFlBQU8sR0FBWSxFQUFFLENBQUM7UUFNcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFrQixFQUFFLE9BQWdCLEVBQUUsTUFBZ0IsRUFBRSxjQUFpQyxFQUFFLGdCQUF5QjtRQUM1SCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxJQUFJLFNBQVMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDO0lBQ2pELENBQUM7Q0FDRjtBQUdEOztHQUVHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFdBQU0sR0FBZSxTQUFTLENBQUM7S0E2QnpDO0lBWkMsU0FBUyxDQUFDLE1BQWtCLEVBQUUsT0FBZ0IsRUFBRSxNQUFnQixFQUFFLGNBQWlDO1FBQ2pHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLElBQUksU0FBUyxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVTtRQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzsrR0E3QlUsb0JBQW9CO21HQUFwQixvQkFBb0IsK05DcENqQyx5a0RBd0NNOzs0RkRKTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsYUFBYTs4QkFLZCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuLi8uLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1pdGVtJztcbmltcG9ydCB7IERpc3BsYXlTdGF0dXMsIFZpZXdTdGF0dXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlzcGxheSc7XG5cbmV4cG9ydCBjbGFzcyBPdmVybGF5IGltcGxlbWVudHMgRGlzcGxheVN0YXR1cyB7XG4gIC8qKiAgQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZCBkdWUgdG8gbm9EYXRhVGVtcGxhdGUgYmVpbmcgcHJlZmVyZWQgKi9cbiAgYWN0aW9uPzogTmF2SXRlbTtcbiAgbm9EYXRhVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBkaXNwbGF5QXNNYXNrPzogYm9vbGVhbjtcbiAgc3RhdHVzOiBWaWV3U3RhdHVzID0gJ2hhc0RhdGEnO1xuICBtZXNzYWdlPzogc3RyaW5nID0gJyc7XG5cbiAgLyoqIEFkZGl0aW9uIGNzcyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSAub3ZlcmxheSBlbGVtZW50ICovXG4gIG92ZXJsYXlDbGFzc0xpc3Q/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc3RhdHVzOiBWaWV3U3RhdHVzLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRTdGF0dXMoc3RhdHVzLCBtZXNzYWdlKTtcbiAgfVxuICBzZXRTdGF0dXMoc3RhdHVzOiBWaWV3U3RhdHVzLCBtZXNzYWdlPzogc3RyaW5nLCBhY3Rpb24/OiBOYXZJdGVtLCBub0RhdGFUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4sIG92ZXJsYXlDbGFzc0xpc3Q/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICcnO1xuICAgIHRoaXMuYWN0aW9uID0gYWN0aW9uIHx8IHVuZGVmaW5lZDtcbiAgICB0aGlzLm5vRGF0YVRlbXBsYXRlID0gbm9EYXRhVGVtcGxhdGUgfHwgdW5kZWZpbmVkO1xuICAgIHRoaXMub3ZlcmxheUNsYXNzTGlzdCA9IG92ZXJsYXlDbGFzc0xpc3QgfHwgJyc7XG4gIH1cbn1cblxuXG4vKipcbiAqIFdyYXBzIGNvbnRlbnQgaW4gb3JkZXIgdG8gc2hvdyBwZW5kaW5nLCBlcnJvciwgYW5kIG5vIGRhdGEgc3RhdGVzIHdpdGggYW4gb3B0aW9uYWwgbWVzc2FnZS9ub0RhdGFUZW1wbGF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZWNPdmVybGF5XScsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LW92ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LW92ZXJsYXkuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3T3ZlcmxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE92ZXJsYXkge1xuICBASW5wdXQoKSBzdGF0dXM6IFZpZXdTdGF0dXMgPSAnaGFzRGF0YSc7XG4gIEBJbnB1dCgpIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqICBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIGR1ZSB0byBub0RhdGFUZW1wbGF0ZSBiZWluZyBwcmVmZXJlZCAqL1xuICBASW5wdXQoKSBhY3Rpb24/OiBOYXZJdGVtIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBub0RhdGFUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIE1hc2sgKG5vdCByZW1vdmUpIHRoZSB0cmFuc2NsdWRlZCBjb250ZW50IGZyb20gdGhlIGRvbSB3aGlsZSBub3QgaGFzRGF0YSBzdGF0dXMuXG4gICAqL1xuICBASW5wdXQoKSBkaXNwbGF5QXNNYXNrPzogYm9vbGVhbjtcblxuICAvKiogXG4gICAqIEFkZGl0aW9uYWwgY3NzIGNsYXNzZXMgdG8gYXBwbHkgdG8gdGhlIC5vdmVybGF5IGVsZW1lbnQgXG4gICAqL1xuICBASW5wdXQoKSBvdmVybGF5Q2xhc3NMaXN0Pzogc3RyaW5nO1xuXG4gIHNldFN0YXR1cyhzdGF0dXM6IFZpZXdTdGF0dXMsIG1lc3NhZ2U/OiBzdHJpbmcsIGFjdGlvbj86IE5hdkl0ZW0sIG5vRGF0YVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzO1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJyc7XG4gICAgdGhpcy5hY3Rpb24gPSBhY3Rpb24gfHwgdW5kZWZpbmVkO1xuICAgIHRoaXMubm9EYXRhVGVtcGxhdGUgPSBub0RhdGFUZW1wbGF0ZSB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICBhY3Rpb25DbGlja2VkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3Rpb24gJiYgdGhpcy5hY3Rpb24ub25DbGljaykge1xuICAgICAgdGhpcy5hY3Rpb24ub25DbGljayhldmVudCk7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tIFRyYW5zY2x1ZGVkIENvbnRlbnQgLS0+XG48bmctY29udGVudCAqbmdJZj1cImRpc3BsYXlBc01hc2sgfHwgKCFkaXNwbGF5QXNNYXNrICYmIHN0YXR1cyA9PT0gJ2hhc0RhdGEnKVwiPjwvbmctY29udGVudD5cbjwhLS1Vc2VkIGJ5IEdJIHRlc3RzIHRvIGtub3cgdGhlIG92ZXJsYXkgc3RhdHVzIHdoZXRoZXIgd2UgdXNlIG5nSWYgb3IgbWFzayB2ZXJzaW9uLiBObyB2aXN1YWwgaW1wYWN0LS0+XG48c3BhbiBbaGlkZGVuXT1cInRydWVcIlxuXHQgIGNsYXNzPVwib3ZlcmxheS1zdGF0dXMte3tzdGF0dXN9fVwiPjwvc3Bhbj5cbjwhLS0gT3ZlcmxheSBnb2VzIGxhc3Qgc28gaXQgaXMgcmVuZGVyZWQgb24gdG9wIG9mIHByZWNlZGluZyBjb250ZW50IGR1ZSB0byBzb3VyY2Ugb3JkZXIgLS0+XG48ZGl2ICpuZ0lmPVwic3RhdHVzICE9PSAnaGFzRGF0YSdcIlxuXHQgY2xhc3M9XCJvdmVybGF5IGZsZXgtZ3JvdyB7e292ZXJsYXlDbGFzc0xpc3R9fVwiXG5cdCBbbmdDbGFzc109XCJ7J25vdC1tYXNrJzogIWRpc3BsYXlBc01hc2ssXG5cdFx0XHRcdCdvdmVybGF5LWVycm9yJzogc3RhdHVzID09PSAnZXJyb3InLFxuXHRcdFx0XHQnb3ZlcmxheS1ub2RhdGEnOiBzdGF0dXMgPT09ICdub0RhdGEnLFxuXHRcdFx0XHQnb3ZlcmxheS1wZW5kaW5nJzogc3RhdHVzID09PSAncGVuZGluZyd9XCI+XG5cblx0PCEtLVBlbmRpbmcgU3Bpbm5lci0tPlxuXHQ8ZWMtc3Bpbm5lciBbaGlkZGVuXT1cInN0YXR1cyAhPT0gJ3BlbmRpbmcnXCI+PC9lYy1zcGlubmVyPlxuXG5cdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdGF0dXMgPT09ICdub0RhdGEnICYmIG5vRGF0YVRlbXBsYXRlXCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vRGF0YVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG5cdDwvbmctdGVtcGxhdGU+XG5cblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIihzdGF0dXMgPT09ICdub0RhdGEnICYmICFub0RhdGFUZW1wbGF0ZSkgfHwgc3RhdHVzICE9PSAnbm9EYXRhJ1wiPlxuXHRcdDwhLS1TdGF0dXMgTWVzc2FnZS0tPlxuXHRcdDxkaXYgaWQ9XCJzdGF0dXNNZXNzYWdlXCJcblx0XHRcdCBjbGFzcz1cIm1lc3NhZ2VcIlxuXHRcdFx0ICpuZ0lmPVwibWVzc2FnZVwiXG5cdFx0XHQgW25nQ2xhc3NdPVwieydlcnJvcic6IHN0YXR1cyA9PT0gJ2Vycm9yJywgJ210LTEnOiBzdGF0dXMgPT09ICdwZW5kaW5nJ31cIlxuXHRcdFx0IFtpbm5lckh0bWxdPVwibWVzc2FnZSB8IHRyYW5zbGF0ZVwiPlxuXHRcdDwvZGl2PlxuXG5cdFx0PCEtLSBBY3Rpb24gLS0+XG5cdFx0PGVjLWJ1dHRvbiB0eXBlPVwiY29tbW9uXCJcblx0XHRcdFx0ICAgY2xhc3M9XCJtdC0zXCJcblx0XHRcdFx0ICAgKm5nSWY9XCJhY3Rpb24/Lm9uQ2xpY2tcIlxuXHRcdFx0XHQgICBbaWNvbl09XCJhY3Rpb24/Lmljb25cIlxuXHRcdFx0XHQgICAoY2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkKCRldmVudClcIlxuXHRcdFx0XHQgICBbbGFiZWxdPVwiYWN0aW9uPy5sYWJlbFwiXG5cdFx0XHRcdCAgIFtoaWRkZW5dPVwic3RhdHVzID09PSAncGVuZGluZydcIj5cblx0XHQ8L2VjLWJ1dHRvbj5cblx0PC9uZy1jb250YWluZXI+XG5cbjwvZGl2PiJdfQ==
@@ -1,32 +0,0 @@
1
- import { Directive, Input, HostListener, HostBinding } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ClickAreaForDirective {
4
- constructor() { }
5
- ngOnInit() {
6
- this.isTargetClickable = typeof this.targetEl?.dispatchEvent === 'function';
7
- }
8
- onClick(event) {
9
- if (this.isTargetClickable) {
10
- event.preventDefault();
11
- this.targetEl.dispatchEvent(new Event('click'));
12
- }
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClickAreaForDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ClickAreaForDirective, selector: "[ecClickAreaFor]", inputs: { targetEl: ["ecClickAreaFor", "targetEl"] }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.cursor-pointer": "this.targetEl" } }, ngImport: i0 }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClickAreaForDirective, decorators: [{
18
- type: Directive,
19
- args: [{
20
- selector: '[ecClickAreaFor]'
21
- }]
22
- }], ctorParameters: () => [], propDecorators: { targetEl: [{
23
- type: HostBinding,
24
- args: ['class.cursor-pointer']
25
- }, {
26
- type: Input,
27
- args: ['ecClickAreaFor']
28
- }], onClick: [{
29
- type: HostListener,
30
- args: ['click', ['$event']]
31
- }] } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stYXJlYS1mb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL2NsaWNrLWFyZWEtZm9yL2NsaWNrLWFyZWEtZm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQVNwRixNQUFNLE9BQU8scUJBQXFCO0lBUWhDLGdCQUFlLENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxLQUFLLFVBQVUsQ0FBQztJQUM5RSxDQUFDO0lBRWtDLE9BQU8sQ0FBQyxLQUFZO1FBQ3JELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7K0dBbkJVLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCO3dEQUtRLFFBQVE7c0JBRmQsV0FBVzt1QkFBQyxzQkFBc0I7O3NCQUNsQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFXWSxPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIEhvc3RMaXN0ZW5lciwgSG9zdEJpbmRpbmcsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrYWJsZUVsZW1lbnQge1xuICBkaXNwYXRjaEV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQ7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlY0NsaWNrQXJlYUZvcl0nXG59KVxuZXhwb3J0IGNsYXNzIENsaWNrQXJlYUZvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jdXJzb3ItcG9pbnRlcicpXG4gIEBJbnB1dCgnZWNDbGlja0FyZWFGb3InKSBcbiAgcHVibGljIHRhcmdldEVsPzogYW55O1xuXG4gIHByaXZhdGUgaXNUYXJnZXRDbGlja2FibGUhOiBib29sZWFuO1xuICBcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNUYXJnZXRDbGlja2FibGUgPSB0eXBlb2YgdGhpcy50YXJnZXRFbD8uZGlzcGF0Y2hFdmVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1RhcmdldENsaWNrYWJsZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudGFyZ2V0RWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NsaWNrJykpO1xuICAgIH1cbiAgfVxufVxuIl19