@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,235 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding, HostListener, Input } from '@angular/core';
|
|
2
|
-
import { UntypedFormArray, UntypedFormControl } from '@angular/forms';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "../../controls/checkbox/checkbox.component";
|
|
8
|
-
import * as i3 from "./table-locked-column.component";
|
|
9
|
-
export class TableSelectableRowContext {
|
|
10
|
-
constructor() {
|
|
11
|
-
/**specify the form control to use for the selectAll checkbox or provide your own.
|
|
12
|
-
* This can be useful if you want to subscribe to changes to change button states as the selection changes
|
|
13
|
-
* or if you want to add it to an already-existing form group
|
|
14
|
-
*/
|
|
15
|
-
this.selectAllCheckbox = new UntypedFormControl(false);
|
|
16
|
-
/**specify the FormArray to use for the dependent checkboxes of the selectAll checkbox
|
|
17
|
-
* The dependent checkboxes will add and remove themselves automatically and the selectAll
|
|
18
|
-
* box will react accordingly. Do not provide your own controls
|
|
19
|
-
* This can be useful if you want to subscribe to changes to change button states as the selection changes
|
|
20
|
-
* or if you want to add it to an already-existing form group
|
|
21
|
-
*/
|
|
22
|
-
this.rowCheckboxes = new UntypedFormArray([]);
|
|
23
|
-
/**The index of the last row the user clicked. This allows multiple directives on a screen to coordinate
|
|
24
|
-
* for reacting to shift+click actions that should automatically select multiple rows between the clicked rows
|
|
25
|
-
* defaults to -1 to indicate that no user click has been captured
|
|
26
|
-
*/
|
|
27
|
-
this.lastClickedIndex = -1;
|
|
28
|
-
/**A subject that is triggered when a row-based directive is added or removed. It allows
|
|
29
|
-
* the master checkbox in the header to know that it needs to reset tracking information
|
|
30
|
-
* without replacing the actual FormArray that the hosting component may be subscribed to for changes
|
|
31
|
-
*/
|
|
32
|
-
this.rowAddedOrRemoved = new Subject();
|
|
33
|
-
/**
|
|
34
|
-
* Set to true to disable Shift-Click/Ctrl-Click functionality
|
|
35
|
-
*/
|
|
36
|
-
this.disableAdvancedRowClickBehavior = false;
|
|
37
|
-
/**
|
|
38
|
-
* Set to list of indices of controls that should not toggle when master/header checkbox toggles
|
|
39
|
-
*/
|
|
40
|
-
this.nonDependentCheckboxes = [];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
export class TableSelectableRowComponent {
|
|
44
|
-
constructor() {
|
|
45
|
-
/**The ID root to use for the checkbox and table cell */
|
|
46
|
-
this.id = '';
|
|
47
|
-
this._selectionEnabled = true;
|
|
48
|
-
/*Required for all rows. The row index this component represents, to allow it to know how to handle shift+clicks.
|
|
49
|
-
Defaults to -1 which will cause the directive to behave as a header row*/
|
|
50
|
-
this.rowIndex = -1;
|
|
51
|
-
/**The options used to lock the checkbox column to the left of the table, must be modified by host
|
|
52
|
-
* if the checkbox is not the first column in the table
|
|
53
|
-
*/
|
|
54
|
-
this.lockedColOptions = { border: false, left: 0 };
|
|
55
|
-
/** Automatically set to true based on checkbox state, used to highlight the row to match our table selected row styles */
|
|
56
|
-
this.isSelected = false;
|
|
57
|
-
/** Automatically set to true if no rowIndex is provided or the row index is less than zero */
|
|
58
|
-
this.isHeader = false;
|
|
59
|
-
/**
|
|
60
|
-
* Set to true if you want the checkbox to be disabled.
|
|
61
|
-
*
|
|
62
|
-
* When you use this property, make sure you set `disableAdvancedRowClickBehavior: true`
|
|
63
|
-
* in the `TableSelectableRowContext`, or undesired side-effects will occur.
|
|
64
|
-
*/
|
|
65
|
-
this.isCheckboxDisabled = false;
|
|
66
|
-
/* A reference that we can change when a control is replaced to force the master checkbox reference to update
|
|
67
|
-
without also replacing the form array that the host component may be watching for selected row changes */
|
|
68
|
-
this.dependentCheckboxesReference = { controls: [] };
|
|
69
|
-
this.checkboxAttributeID = '';
|
|
70
|
-
/**Sends an event when the component is destroyed so that it can unsubscribe from any observables */
|
|
71
|
-
this.destroyed = new Subject();
|
|
72
|
-
}
|
|
73
|
-
/** Disables the selection functionality when false */
|
|
74
|
-
set isSelectionEnabled(value) { this._selectionEnabled = value !== false; }
|
|
75
|
-
get isSelectionEnabled() { return this._selectionEnabled; }
|
|
76
|
-
/**Validate and populate the context as the table is dynamically built. Because the context is shared between the
|
|
77
|
-
* header and each of the rows, changes to it can be used to determine what is happening and hook up the correct
|
|
78
|
-
* subscriptions for selectAll. The user can provide an existing formArray for the rows and form control for the header,
|
|
79
|
-
* or it can just be the default empty ones created by the context class.
|
|
80
|
-
*/
|
|
81
|
-
ngOnInit() {
|
|
82
|
-
this.isHeader = this.rowIndex < 0;
|
|
83
|
-
if (!this.context) {
|
|
84
|
-
console.error('ecTableSelectableRow requires a defined SelectableTableRowContext to be shared with all instances in one table.');
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
let rowCheckbox = this.context?.rowCheckboxes?.at(this.rowIndex);
|
|
88
|
-
if (!this.isHeader && !rowCheckbox) {
|
|
89
|
-
rowCheckbox = new UntypedFormControl(this.isSelected);
|
|
90
|
-
this.context?.rowCheckboxes.push(rowCheckbox);
|
|
91
|
-
}
|
|
92
|
-
this.formControl = this.isHeader ? this.context.selectAllCheckbox : rowCheckbox;
|
|
93
|
-
this.watchForChanges();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**Watch for changes to the row index that can occur if the table is reordered in-place instead of
|
|
97
|
-
* recreated from scratch. Re-capture the correct form control to keep everything in sync
|
|
98
|
-
*/
|
|
99
|
-
ngOnChanges(changes) {
|
|
100
|
-
if (changes.rowIndex && !this.isHeader) {
|
|
101
|
-
this.formControl = this.context.rowCheckboxes.at(this.rowIndex);
|
|
102
|
-
this.checkboxAttributeID = `${this.id}_row${this.rowIndex}_ecCheckbox`;
|
|
103
|
-
}
|
|
104
|
-
if (changes.isSelectionEnabled && !this.isSelectionEnabled && this.formControl?.value === true) {
|
|
105
|
-
this.formControl.setValue(false);
|
|
106
|
-
}
|
|
107
|
-
if (changes.isSelected && this.formControl) {
|
|
108
|
-
this.formControl.setValue(this.isSelected);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/** Tell the header checkbox to refresh the selectAll subscription because a row was removed*/
|
|
112
|
-
ngOnDestroy() {
|
|
113
|
-
if (!this.isHeader && this.formControl) {
|
|
114
|
-
this.context.rowAddedOrRemoved.next();
|
|
115
|
-
//find the location in the array that matches the checkbox. If many rows are being removed it may not match rowIndex yet
|
|
116
|
-
let matchIndex = this.context.rowCheckboxes.controls.findIndex(c => c == this.formControl);
|
|
117
|
-
if (matchIndex >= 0) {
|
|
118
|
-
this.context.rowCheckboxes.removeAt(matchIndex);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**Handle when a user clicks on a table row (or something inside it which bubbles up) to increase the hit area for row selection
|
|
123
|
-
* Only work on the table body (not the header) because the header may have other click handlers for sort etc that we don't care about.
|
|
124
|
-
* Handle shift and control select as well as checkbox click like windows explorer or the original bill lists do.
|
|
125
|
-
*/
|
|
126
|
-
rowClicked(event) {
|
|
127
|
-
if (!this.isHeader && this.isSelectionEnabled && !this.isCheckboxDisabled) {
|
|
128
|
-
let targetEl = event?.target;
|
|
129
|
-
//clicking on a row always toggles that row. Sometimes the shift-select will toggle it back
|
|
130
|
-
this.formControl.setValue(!this.formControl.value);
|
|
131
|
-
if (!this.context.disableAdvancedRowClickBehavior) {
|
|
132
|
-
this.handleShiftSelect(event);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
watchForChanges() {
|
|
137
|
-
//watch for rows being replaced so that the master checkbox and shift-select support can be reset to match
|
|
138
|
-
//this keeps the master in sync as the table changes pages etc and stops unexpected rows from being selected after redraw
|
|
139
|
-
if (this.isHeader) {
|
|
140
|
-
this.context.rowAddedOrRemoved.pipe(debounceTime(10), takeUntil(this.destroyed)).subscribe(() => {
|
|
141
|
-
this.context.lastClickedIndex = -1;
|
|
142
|
-
// exclude nonDependentCheckboxes (some may not be allowed to be deselected)
|
|
143
|
-
let dependentCheckboxes = [];
|
|
144
|
-
this.context.rowCheckboxes.controls.forEach((control, index) => {
|
|
145
|
-
if (!this.context.nonDependentCheckboxes.includes(index)) {
|
|
146
|
-
dependentCheckboxes.push(control);
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
this.dependentCheckboxesReference = { controls: dependentCheckboxes };
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
this.context.rowAddedOrRemoved.next();
|
|
154
|
-
//watch for the checkbox state to change on a child row and set the row isSelected class / highlight to match
|
|
155
|
-
//this way the rows match even if external code updates the form model
|
|
156
|
-
this.formControl?.valueChanges.pipe(takeUntil(this.destroyed)).subscribe((value) => {
|
|
157
|
-
this.isSelected = value;
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* If they are holding the shift key, try to select all the checkboxes between their last selection
|
|
163
|
-
* and most recent selection. The logic is setup to behave the way windows explorer behaves
|
|
164
|
-
* We don't allow drag-to-select like the kendo tables, but it means users can highlight text and copy+paste to excel etc
|
|
165
|
-
* so I think this is actually preferable
|
|
166
|
-
*/
|
|
167
|
-
handleShiftSelect(event) {
|
|
168
|
-
let lastIndex = this.context.lastClickedIndex;
|
|
169
|
-
let curIndex = this.rowIndex;
|
|
170
|
-
if (event.shiftKey && lastIndex >= 0) {
|
|
171
|
-
this.clearAllRows();
|
|
172
|
-
if (curIndex > lastIndex) {
|
|
173
|
-
for (var index = lastIndex; index <= curIndex; index++) {
|
|
174
|
-
this.context.rowCheckboxes.at(index).setValue(true);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
else if (curIndex < lastIndex) {
|
|
178
|
-
for (var index = lastIndex; index >= curIndex; index--) {
|
|
179
|
-
this.context.rowCheckboxes.at(index).setValue(true);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
else if (curIndex === lastIndex) {
|
|
183
|
-
this.formControl.setValue(true);
|
|
184
|
-
}
|
|
185
|
-
document.getSelection()?.removeAllRanges();
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
//record the current row index for future row clicks to know where they last interacted
|
|
189
|
-
//but only if they don't have shift down for this click. If shift is down then the next shift+click
|
|
190
|
-
//should be considered an extension (or contraction) of the original multi-row selection
|
|
191
|
-
this.context.lastClickedIndex = this.rowIndex;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
clearAllRows() {
|
|
195
|
-
this.context.rowCheckboxes.controls.forEach(control => control.setValue(false));
|
|
196
|
-
}
|
|
197
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableSelectableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
198
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableSelectableRowComponent, selector: "[ecTableSelectableRow]", inputs: { id: "id", isSelectionEnabled: ["ecTableSelectableRow", "isSelectionEnabled"], context: ["selectionContext", "context"], rowIndex: "rowIndex", lockedColOptions: "lockedColOptions", isSelected: "isSelected", isCheckboxDisabled: "isCheckboxDisabled" }, host: { listeners: { "click": "rowClicked($event)" }, properties: { "attr.id": "this.id", "class.is-enabled": "this.isSelectionEnabled", "class.is-selected": "this.isSelected", "class.is-header": "this.isHeader" } }, usesOnChanges: true, ngImport: i0, template: "<!-- any elements of the existing table row that must go before the row selection checkbox can be marked with a class of before-checkbox -->\n<ng-content select=\".before-checkbox\"></ng-content>\n<ng-container *ngIf=\"isSelectionEnabled\">\n <th *ngIf=\"isHeader\"\n class=\"checkbox\"\n [ecTableLockedColumn]=\"lockedColOptions\">\n <ec-checkbox id=\"{{id}}_selectAll\"\n class=\"m-0\"\n *ngIf=\"context?.selectAllCheckbox\"\n [formModel]=\"context?.selectAllCheckbox\"\n [dependentCheckboxesGroup]=\"dependentCheckboxesReference\"\n [ignoreDisabledDependents]=\"false\">\n </ec-checkbox>\n </th>\n <td *ngIf=\"!isHeader && formControl\"\n class=\"checkbox\"\n [ecTableLockedColumn]=\"lockedColOptions\">\n <!-- Use [readonly] and not [disabled] for isCheckboxDisabled to prevent user interaction\n and allow the value to be visible to other components (for example, when they subscribe\n to valueChanges on the FormArray that contains all the checkbox FormControls). -->\n <ec-checkbox id=\"{{id}}_row{{rowIndex}}_checkbox\"\n [readonly]=\"isCheckboxDisabled\"\n [attr.id]=\"checkboxAttributeID\"\n class=\"m-0 row-checkbox\"\n [formModel]=\"formControl\">\n </ec-checkbox>\n </td>\n</ng-container>\n<!-- The rest of the table row -->\n<ng-content></ng-content>", styles: [":host.is-enabled:not(.is-header){cursor:pointer}:host .checkbox{padding-left:2px;padding-right:2px;width:1.25rem}:host .checkbox:first-child{padding-left:.5rem;width:1.625rem}:host.border-bottom-0 .checkbox{border-bottom:0}td.checkbox ec-checkbox ::ng-deep *{pointer-events:none}th.checkbox{vertical-align:var(--ec-table-selectable-row-vertical-align-checkbox-th, middle)}td.checkbox{vertical-align:var(--ec-table-selectable-row-vertical-align-checkbox-td, top)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CheckboxComponent, selector: "ec-checkbox", inputs: ["name", "dependentCheckboxesGroup", "ignoreDisabledDependents"] }, { kind: "component", type: i3.TableLockedColumnComponent, selector: "[ecTableLockedColumn]", inputs: ["ecTableLockedColumn"] }] }); }
|
|
199
|
-
}
|
|
200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableSelectableRowComponent, decorators: [{
|
|
201
|
-
type: Component,
|
|
202
|
-
args: [{ selector: '[ecTableSelectableRow]', template: "<!-- any elements of the existing table row that must go before the row selection checkbox can be marked with a class of before-checkbox -->\n<ng-content select=\".before-checkbox\"></ng-content>\n<ng-container *ngIf=\"isSelectionEnabled\">\n <th *ngIf=\"isHeader\"\n class=\"checkbox\"\n [ecTableLockedColumn]=\"lockedColOptions\">\n <ec-checkbox id=\"{{id}}_selectAll\"\n class=\"m-0\"\n *ngIf=\"context?.selectAllCheckbox\"\n [formModel]=\"context?.selectAllCheckbox\"\n [dependentCheckboxesGroup]=\"dependentCheckboxesReference\"\n [ignoreDisabledDependents]=\"false\">\n </ec-checkbox>\n </th>\n <td *ngIf=\"!isHeader && formControl\"\n class=\"checkbox\"\n [ecTableLockedColumn]=\"lockedColOptions\">\n <!-- Use [readonly] and not [disabled] for isCheckboxDisabled to prevent user interaction\n and allow the value to be visible to other components (for example, when they subscribe\n to valueChanges on the FormArray that contains all the checkbox FormControls). -->\n <ec-checkbox id=\"{{id}}_row{{rowIndex}}_checkbox\"\n [readonly]=\"isCheckboxDisabled\"\n [attr.id]=\"checkboxAttributeID\"\n class=\"m-0 row-checkbox\"\n [formModel]=\"formControl\">\n </ec-checkbox>\n </td>\n</ng-container>\n<!-- The rest of the table row -->\n<ng-content></ng-content>", styles: [":host.is-enabled:not(.is-header){cursor:pointer}:host .checkbox{padding-left:2px;padding-right:2px;width:1.25rem}:host .checkbox:first-child{padding-left:.5rem;width:1.625rem}:host.border-bottom-0 .checkbox{border-bottom:0}td.checkbox ec-checkbox ::ng-deep *{pointer-events:none}th.checkbox{vertical-align:var(--ec-table-selectable-row-vertical-align-checkbox-th, middle)}td.checkbox{vertical-align:var(--ec-table-selectable-row-vertical-align-checkbox-td, top)}\n"] }]
|
|
203
|
-
}], propDecorators: { id: [{
|
|
204
|
-
type: HostBinding,
|
|
205
|
-
args: ['attr.id']
|
|
206
|
-
}, {
|
|
207
|
-
type: Input
|
|
208
|
-
}], isSelectionEnabled: [{
|
|
209
|
-
type: HostBinding,
|
|
210
|
-
args: ['class.is-enabled']
|
|
211
|
-
}, {
|
|
212
|
-
type: Input,
|
|
213
|
-
args: ['ecTableSelectableRow']
|
|
214
|
-
}], context: [{
|
|
215
|
-
type: Input,
|
|
216
|
-
args: ['selectionContext']
|
|
217
|
-
}], rowIndex: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], lockedColOptions: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], isSelected: [{
|
|
222
|
-
type: HostBinding,
|
|
223
|
-
args: ['class.is-selected']
|
|
224
|
-
}, {
|
|
225
|
-
type: Input
|
|
226
|
-
}], isHeader: [{
|
|
227
|
-
type: HostBinding,
|
|
228
|
-
args: ['class.is-header']
|
|
229
|
-
}], isCheckboxDisabled: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], rowClicked: [{
|
|
232
|
-
type: HostListener,
|
|
233
|
-
args: ['click', ['$event']]
|
|
234
|
-
}] } });
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFekQsTUFBTSxPQUFPLHlCQUF5QjtJQUF0QztRQUNFOzs7V0FHRztRQUNJLHNCQUFpQixHQUFvQixJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFFOzs7OztXQUtHO1FBQ0ksa0JBQWEsR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsRTs7O1dBR0c7UUFDSSxxQkFBZ0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUVyQzs7O1dBR0c7UUFDSSxzQkFBaUIsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV4RDs7V0FFRztRQUNJLG9DQUErQixHQUFZLEtBQUssQ0FBQztRQUV4RDs7V0FFRztRQUNJLDJCQUFzQixHQUFhLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0NBQUE7QUFPRCxNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBTUUsd0RBQXdEO1FBR2pELE9BQUUsR0FBVyxFQUFFLENBQUM7UUFPZixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFPMUM7bUZBQzJFO1FBRXBFLGFBQVEsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUU3Qjs7V0FFRztRQUVJLHFCQUFnQixHQUF1RCxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRXpHLDBIQUEwSDtRQUduSCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTFCLDhGQUE4RjtRQUV2RixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRWpDOzs7OztXQUtHO1FBRUksdUJBQWtCLEdBQWEsS0FBSyxDQUFDO1FBRTVDO29IQUM0RztRQUNyRyxpQ0FBNEIsR0FBb0MsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFLakYsd0JBQW1CLEdBQVcsRUFBRSxDQUFDO1FBRXhDLG9HQUFvRztRQUM1RixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQXlJekM7SUE1TEMsc0RBQXNEO0lBQ3RELElBRVcsa0JBQWtCLENBQUMsS0FBaUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUcsSUFBVyxrQkFBa0IsS0FBSyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFpRGxFOzs7O01BSUU7SUFDSyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUhBQWlILENBQUMsQ0FBQztRQUNuSSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFakUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkMsV0FBVyxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQ2hGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxhQUFhLENBQUM7UUFDekUsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQy9GLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELDhGQUE4RjtJQUN2RixXQUFXO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1lBRXRDLHdIQUF3SDtZQUN4SCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzRixJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7TUFHRTtJQUVLLFVBQVUsQ0FBQyxLQUFpQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxRSxJQUFJLFFBQVEsR0FBRyxLQUFLLEVBQUUsTUFBcUIsQ0FBQztZQUU1QywyRkFBMkY7WUFDM0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRW5ELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLDBHQUEwRztRQUMxRyx5SEFBeUg7UUFDekgsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM5RixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUVuQyw0RUFBNEU7Z0JBQzVFLElBQUksbUJBQW1CLEdBQXNCLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3pELG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDcEMsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztZQUN4RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUV0Qyw2R0FBNkc7WUFDN0csc0VBQXNFO1lBQ3RFLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7Z0JBQzFGLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUVILENBQUM7SUFFRDs7Ozs7UUFLSTtJQUNJLGlCQUFpQixDQUFDLEtBQWlCO1FBQ3pDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLFFBQVEsR0FBRyxTQUFTLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxJQUFJLEtBQUssR0FBRyxTQUFTLEVBQUUsS0FBSyxJQUFJLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLFFBQVEsR0FBRyxTQUFTLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxJQUFJLEtBQUssR0FBRyxTQUFTLEVBQUUsS0FBSyxJQUFJLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUVELFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUM3QyxDQUFDO2FBQU0sQ0FBQztZQUNOLHVGQUF1RjtZQUN2RixtR0FBbUc7WUFDbkcsd0ZBQXdGO1lBQ3hGLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDOytHQWpNVSwyQkFBMkI7bUdBQTNCLDJCQUEyQixnakJDaER4Qyx5N0NBNkJ5Qjs7NEZEbUJaLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx3QkFBd0I7OEJBUTNCLEVBQUU7c0JBRlIsV0FBVzt1QkFBQyxTQUFTOztzQkFDckIsS0FBSztnQkFNSyxrQkFBa0I7c0JBRjVCLFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsS0FBSzt1QkFBQyxzQkFBc0I7Z0JBUXRCLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBTWxCLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBTUMsVUFBVTtzQkFGaEIsV0FBVzt1QkFBQyxtQkFBbUI7O3NCQUMvQixLQUFLO2dCQUtDLFFBQVE7c0JBRGQsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBVXZCLGtCQUFrQjtzQkFEeEIsS0FBSztnQkF5RUMsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dCB7XG4gIC8qKnNwZWNpZnkgdGhlIGZvcm0gY29udHJvbCB0byB1c2UgZm9yIHRoZSBzZWxlY3RBbGwgY2hlY2tib3ggb3IgcHJvdmlkZSB5b3VyIG93bi5cbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN1YnNjcmliZSB0byBjaGFuZ2VzIHRvIGNoYW5nZSBidXR0b24gc3RhdGVzIGFzIHRoZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgKiBvciBpZiB5b3Ugd2FudCB0byBhZGQgaXQgdG8gYW4gYWxyZWFkeS1leGlzdGluZyBmb3JtIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0QWxsQ2hlY2tib3g6IEFic3RyYWN0Q29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UpO1xuXG4gIC8qKnNwZWNpZnkgdGhlIEZvcm1BcnJheSB0byB1c2UgZm9yIHRoZSBkZXBlbmRlbnQgY2hlY2tib3hlcyBvZiB0aGUgc2VsZWN0QWxsIGNoZWNrYm94XG4gICAqIFRoZSBkZXBlbmRlbnQgY2hlY2tib3hlcyB3aWxsIGFkZCBhbmQgcmVtb3ZlIHRoZW1zZWx2ZXMgYXV0b21hdGljYWxseSBhbmQgdGhlIHNlbGVjdEFsbFxuICAgKiBib3ggd2lsbCByZWFjdCBhY2NvcmRpbmdseS4gRG8gbm90IHByb3ZpZGUgeW91ciBvd24gY29udHJvbHNcbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN1YnNjcmliZSB0byBjaGFuZ2VzIHRvIGNoYW5nZSBidXR0b24gc3RhdGVzIGFzIHRoZSBzZWxlY3Rpb24gY2hhbmdlc1xuICAgKiBvciBpZiB5b3Ugd2FudCB0byBhZGQgaXQgdG8gYW4gYWxyZWFkeS1leGlzdGluZyBmb3JtIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgcm93Q2hlY2tib3hlczogVW50eXBlZEZvcm1BcnJheSA9IG5ldyBVbnR5cGVkRm9ybUFycmF5KFtdKTtcblxuICAvKipUaGUgaW5kZXggb2YgdGhlIGxhc3Qgcm93IHRoZSB1c2VyIGNsaWNrZWQuIFRoaXMgYWxsb3dzIG11bHRpcGxlIGRpcmVjdGl2ZXMgb24gYSBzY3JlZW4gdG8gY29vcmRpbmF0ZVxuICAgKiBmb3IgcmVhY3RpbmcgdG8gc2hpZnQrY2xpY2sgYWN0aW9ucyB0aGF0IHNob3VsZCBhdXRvbWF0aWNhbGx5IHNlbGVjdCBtdWx0aXBsZSByb3dzIGJldHdlZW4gdGhlIGNsaWNrZWQgcm93c1xuICAgKiBkZWZhdWx0cyB0byAtMSB0byBpbmRpY2F0ZSB0aGF0IG5vIHVzZXIgY2xpY2sgaGFzIGJlZW4gY2FwdHVyZWRcbiAgICovXG4gIHB1YmxpYyBsYXN0Q2xpY2tlZEluZGV4OiBudW1iZXIgPSAtMTtcblxuICAvKipBIHN1YmplY3QgdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiBhIHJvdy1iYXNlZCBkaXJlY3RpdmUgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gSXQgYWxsb3dzXG4gICAqIHRoZSBtYXN0ZXIgY2hlY2tib3ggaW4gdGhlIGhlYWRlciB0byBrbm93IHRoYXQgaXQgbmVlZHMgdG8gcmVzZXQgdHJhY2tpbmcgaW5mb3JtYXRpb25cbiAgICogd2l0aG91dCByZXBsYWNpbmcgdGhlIGFjdHVhbCBGb3JtQXJyYXkgdGhhdCB0aGUgaG9zdGluZyBjb21wb25lbnQgbWF5IGJlIHN1YnNjcmliZWQgdG8gZm9yIGNoYW5nZXNcbiAgICovXG4gIHB1YmxpYyByb3dBZGRlZE9yUmVtb3ZlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIHRvIGRpc2FibGUgU2hpZnQtQ2xpY2svQ3RybC1DbGljayBmdW5jdGlvbmFsaXR5XG4gICAqL1xuICBwdWJsaWMgZGlzYWJsZUFkdmFuY2VkUm93Q2xpY2tCZWhhdmlvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gbGlzdCBvZiBpbmRpY2VzIG9mIGNvbnRyb2xzIHRoYXQgc2hvdWxkIG5vdCB0b2dnbGUgd2hlbiBtYXN0ZXIvaGVhZGVyIGNoZWNrYm94IHRvZ2dsZXNcbiAgICovXG4gIHB1YmxpYyBub25EZXBlbmRlbnRDaGVja2JveGVzOiBudW1iZXJbXSA9IFtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZWNUYWJsZVNlbGVjdGFibGVSb3ddJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgLyoqVGhlIElEIHJvb3QgdG8gdXNlIGZvciB0aGUgY2hlY2tib3ggYW5kIHRhYmxlIGNlbGwgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgQElucHV0KClcbiAgcHVibGljIGlkOiBzdHJpbmcgPSAnJztcblxuICAvKiogRGlzYWJsZXMgdGhlIHNlbGVjdGlvbiBmdW5jdGlvbmFsaXR5IHdoZW4gZmFsc2UgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1lbmFibGVkJylcbiAgQElucHV0KCdlY1RhYmxlU2VsZWN0YWJsZVJvdycpXG4gIHB1YmxpYyBzZXQgaXNTZWxlY3Rpb25FbmFibGVkKHZhbHVlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCkgeyB0aGlzLl9zZWxlY3Rpb25FbmFibGVkID0gdmFsdWUgIT09IGZhbHNlOyB9XG4gIHB1YmxpYyBnZXQgaXNTZWxlY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0aW9uRW5hYmxlZDsgfVxuICBwcml2YXRlIF9zZWxlY3Rpb25FbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipTaGFyZWQgY29udGV4dCBiZXR3ZWVuIG1hc3RlciBhbmQgY2hpbGRyZW4uIENoaWxkIGRpcmVjdGl2ZSBhZGRzIGl0cyBvd24gRm9ybUNvbnRyb2wgdG8gdGhpc1xuICBhbmQgcmVtb3ZlcyBpdCBvbkRlc3Ryb3kuIFRoZSBzYW1lIGNvbnRleHQgb2JqZWN0IG11c3QgYmUgdXNlZCBmb3IgYWxsIGRpcmVjdGl2ZXMgaW4gYSBzaW5nbGUgdGFibGUqL1xuICBASW5wdXQoJ3NlbGVjdGlvbkNvbnRleHQnKVxuICBwdWJsaWMgY29udGV4dCE6IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQ7XG5cbiAgLypSZXF1aXJlZCBmb3IgYWxsIHJvd3MuIFRoZSByb3cgaW5kZXggdGhpcyBjb21wb25lbnQgcmVwcmVzZW50cywgdG8gYWxsb3cgaXQgdG8ga25vdyBob3cgdG8gaGFuZGxlIHNoaWZ0K2NsaWNrcy5cbiAgICBEZWZhdWx0cyB0byAtMSB3aGljaCB3aWxsIGNhdXNlIHRoZSBkaXJlY3RpdmUgdG8gYmVoYXZlIGFzIGEgaGVhZGVyIHJvdyovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgLyoqVGhlIG9wdGlvbnMgdXNlZCB0byBsb2NrIHRoZSBjaGVja2JveCBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgdGhlIHRhYmxlLCBtdXN0IGJlIG1vZGlmaWVkIGJ5IGhvc3RcbiAgICogaWYgdGhlIGNoZWNrYm94IGlzIG5vdCB0aGUgZmlyc3QgY29sdW1uIGluIHRoZSB0YWJsZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxvY2tlZENvbE9wdGlvbnM6IHsgYm9yZGVyOiBib29sZWFuLCBsZWZ0PzogbnVtYmVyLCByaWdodD86IG51bWJlciB9ID0geyBib3JkZXI6IGZhbHNlLCBsZWZ0OiAwIH07XG5cbiAgLyoqIEF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUgYmFzZWQgb24gY2hlY2tib3ggc3RhdGUsIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSByb3cgdG8gbWF0Y2ggb3VyIHRhYmxlIHNlbGVjdGVkIHJvdyBzdHlsZXMgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zZWxlY3RlZCcpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1NlbGVjdGVkID0gZmFsc2U7XG5cbiAgLyoqIEF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUgaWYgbm8gcm93SW5kZXggaXMgcHJvdmlkZWQgb3IgdGhlIHJvdyBpbmRleCBpcyBsZXNzIHRoYW4gemVybyAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWhlYWRlcicpXG4gIHB1YmxpYyBpc0hlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgY2hlY2tib3ggdG8gYmUgZGlzYWJsZWQuXG4gICAqXG4gICAqIFdoZW4geW91IHVzZSB0aGlzIHByb3BlcnR5LCBtYWtlIHN1cmUgeW91IHNldCBgZGlzYWJsZUFkdmFuY2VkUm93Q2xpY2tCZWhhdmlvcjogdHJ1ZWBcbiAgICogaW4gdGhlIGBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0YCwgb3IgdW5kZXNpcmVkIHNpZGUtZWZmZWN0cyB3aWxsIG9jY3VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlzQ2hlY2tib3hEaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiBBIHJlZmVyZW5jZSB0aGF0IHdlIGNhbiBjaGFuZ2Ugd2hlbiBhIGNvbnRyb2wgaXMgcmVwbGFjZWQgdG8gZm9yY2UgdGhlIG1hc3RlciBjaGVja2JveCByZWZlcmVuY2UgdG8gdXBkYXRlXG4gICAgIHdpdGhvdXQgYWxzbyByZXBsYWNpbmcgdGhlIGZvcm0gYXJyYXkgdGhhdCB0aGUgaG9zdCBjb21wb25lbnQgbWF5IGJlIHdhdGNoaW5nIGZvciBzZWxlY3RlZCByb3cgY2hhbmdlcyAqL1xuICBwdWJsaWMgZGVwZW5kZW50Q2hlY2tib3hlc1JlZmVyZW5jZTogeyBjb250cm9sczogQWJzdHJhY3RDb250cm9sW10gfSA9IHsgY29udHJvbHM6IFtdIH07XG5cbiAgLypDYXB0dXJlIHRoZSBmb3JtIGNvbnRyb2wgdGhpcyBjb21wb25lbnQgY3JlYXRlcyB0byBhbGxvdyBjbGVhbnVwIGxhdGVyIG9uIGFuZCBleHBvc2UgaXQgdG8gdGhlIHJvdyovXG4gIHB1YmxpYyBmb3JtQ29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcblxuICBwdWJsaWMgY2hlY2tib3hBdHRyaWJ1dGVJRDogc3RyaW5nID0gJyc7XG5cbiAgLyoqU2VuZHMgYW4gZXZlbnQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCBzbyB0aGF0IGl0IGNhbiB1bnN1YnNjcmliZSBmcm9tIGFueSBvYnNlcnZhYmxlcyAqL1xuICBwcml2YXRlIGRlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqVmFsaWRhdGUgYW5kIHBvcHVsYXRlIHRoZSBjb250ZXh0IGFzIHRoZSB0YWJsZSBpcyBkeW5hbWljYWxseSBidWlsdC4gQmVjYXVzZSB0aGUgY29udGV4dCBpcyBzaGFyZWQgYmV0d2VlbiB0aGVcbiAgICogaGVhZGVyIGFuZCBlYWNoIG9mIHRoZSByb3dzLCBjaGFuZ2VzIHRvIGl0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGF0IGlzIGhhcHBlbmluZyBhbmQgaG9vayB1cCB0aGUgY29ycmVjdFxuICAgKiBzdWJzY3JpcHRpb25zIGZvciBzZWxlY3RBbGwuIFRoZSB1c2VyIGNhbiBwcm92aWRlIGFuIGV4aXN0aW5nIGZvcm1BcnJheSBmb3IgdGhlIHJvd3MgYW5kIGZvcm0gY29udHJvbCBmb3IgdGhlIGhlYWRlcixcbiAgICogb3IgaXQgY2FuIGp1c3QgYmUgdGhlIGRlZmF1bHQgZW1wdHkgb25lcyBjcmVhdGVkIGJ5IHRoZSBjb250ZXh0IGNsYXNzLlxuICAqL1xuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc0hlYWRlciA9IHRoaXMucm93SW5kZXggPCAwO1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdlY1RhYmxlU2VsZWN0YWJsZVJvdyByZXF1aXJlcyBhIGRlZmluZWQgU2VsZWN0YWJsZVRhYmxlUm93Q29udGV4dCB0byBiZSBzaGFyZWQgd2l0aCBhbGwgaW5zdGFuY2VzIGluIG9uZSB0YWJsZS4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJvd0NoZWNrYm94ID0gdGhpcy5jb250ZXh0Py5yb3dDaGVja2JveGVzPy5hdCh0aGlzLnJvd0luZGV4KTtcblxuICAgICAgaWYgKCF0aGlzLmlzSGVhZGVyICYmICFyb3dDaGVja2JveCkge1xuICAgICAgICByb3dDaGVja2JveCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5pc1NlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5jb250ZXh0Py5yb3dDaGVja2JveGVzLnB1c2gocm93Q2hlY2tib3gpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5pc0hlYWRlciA/IHRoaXMuY29udGV4dC5zZWxlY3RBbGxDaGVja2JveCA6IHJvd0NoZWNrYm94O1xuICAgICAgdGhpcy53YXRjaEZvckNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipXYXRjaCBmb3IgY2hhbmdlcyB0byB0aGUgcm93IGluZGV4IHRoYXQgY2FuIG9jY3VyIGlmIHRoZSB0YWJsZSBpcyByZW9yZGVyZWQgaW4tcGxhY2UgaW5zdGVhZCBvZlxuICAgKiByZWNyZWF0ZWQgZnJvbSBzY3JhdGNoLiBSZS1jYXB0dXJlIHRoZSBjb3JyZWN0IGZvcm0gY29udHJvbCB0byBrZWVwIGV2ZXJ5dGhpbmcgaW4gc3luY1xuICAgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5yb3dJbmRleCAmJiAhdGhpcy5pc0hlYWRlcikge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IHRoaXMuY29udGV4dC5yb3dDaGVja2JveGVzLmF0KHRoaXMucm93SW5kZXgpO1xuICAgICAgdGhpcy5jaGVja2JveEF0dHJpYnV0ZUlEID0gYCR7dGhpcy5pZH1fcm93JHt0aGlzLnJvd0luZGV4fV9lY0NoZWNrYm94YDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5pc1NlbGVjdGlvbkVuYWJsZWQgJiYgIXRoaXMuaXNTZWxlY3Rpb25FbmFibGVkICYmIHRoaXMuZm9ybUNvbnRyb2w/LnZhbHVlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5pc1NlbGVjdGVkICYmIHRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5pc1NlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGVsbCB0aGUgaGVhZGVyIGNoZWNrYm94IHRvIHJlZnJlc2ggdGhlIHNlbGVjdEFsbCBzdWJzY3JpcHRpb24gYmVjYXVzZSBhIHJvdyB3YXMgcmVtb3ZlZCovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAoIXRoaXMuaXNIZWFkZXIgJiYgdGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgdGhpcy5jb250ZXh0LnJvd0FkZGVkT3JSZW1vdmVkLm5leHQoKTtcblxuICAgICAgLy9maW5kIHRoZSBsb2NhdGlvbiBpbiB0aGUgYXJyYXkgdGhhdCBtYXRjaGVzIHRoZSBjaGVja2JveC4gSWYgbWFueSByb3dzIGFyZSBiZWluZyByZW1vdmVkIGl0IG1heSBub3QgbWF0Y2ggcm93SW5kZXggeWV0XG4gICAgICBsZXQgbWF0Y2hJbmRleCA9IHRoaXMuY29udGV4dC5yb3dDaGVja2JveGVzLmNvbnRyb2xzLmZpbmRJbmRleChjID0+IGMgPT0gdGhpcy5mb3JtQ29udHJvbCk7XG4gICAgICBpZiAobWF0Y2hJbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5yb3dDaGVja2JveGVzLnJlbW92ZUF0KG1hdGNoSW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKkhhbmRsZSB3aGVuIGEgdXNlciBjbGlja3Mgb24gYSB0YWJsZSByb3cgKG9yIHNvbWV0aGluZyBpbnNpZGUgaXQgd2hpY2ggYnViYmxlcyB1cCkgdG8gaW5jcmVhc2UgdGhlIGhpdCBhcmVhIGZvciByb3cgc2VsZWN0aW9uXG4gICAqIE9ubHkgd29yayBvbiB0aGUgdGFibGUgYm9keSAobm90IHRoZSBoZWFkZXIpIGJlY2F1c2UgdGhlIGhlYWRlciBtYXkgaGF2ZSBvdGhlciBjbGljayBoYW5kbGVycyBmb3Igc29ydCBldGMgdGhhdCB3ZSBkb24ndCBjYXJlIGFib3V0LlxuICAgKiBIYW5kbGUgc2hpZnQgYW5kIGNvbnRyb2wgc2VsZWN0IGFzIHdlbGwgYXMgY2hlY2tib3ggY2xpY2sgbGlrZSB3aW5kb3dzIGV4cGxvcmVyIG9yIHRoZSBvcmlnaW5hbCBiaWxsIGxpc3RzIGRvLlxuICAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyByb3dDbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzSGVhZGVyICYmIHRoaXMuaXNTZWxlY3Rpb25FbmFibGVkICYmICF0aGlzLmlzQ2hlY2tib3hEaXNhYmxlZCkge1xuICAgICAgbGV0IHRhcmdldEVsID0gZXZlbnQ/LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgLy9jbGlja2luZyBvbiBhIHJvdyBhbHdheXMgdG9nZ2xlcyB0aGF0IHJvdy4gU29tZXRpbWVzIHRoZSBzaGlmdC1zZWxlY3Qgd2lsbCB0b2dnbGUgaXQgYmFja1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSghdGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XG5cbiAgICAgIGlmICghdGhpcy5jb250ZXh0LmRpc2FibGVBZHZhbmNlZFJvd0NsaWNrQmVoYXZpb3IpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTaGlmdFNlbGVjdChldmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaEZvckNoYW5nZXMoKSB7XG4gICAgLy93YXRjaCBmb3Igcm93cyBiZWluZyByZXBsYWNlZCBzbyB0aGF0IHRoZSBtYXN0ZXIgY2hlY2tib3ggYW5kIHNoaWZ0LXNlbGVjdCBzdXBwb3J0IGNhbiBiZSByZXNldCB0byBtYXRjaFxuICAgIC8vdGhpcyBrZWVwcyB0aGUgbWFzdGVyIGluIHN5bmMgYXMgdGhlIHRhYmxlIGNoYW5nZXMgcGFnZXMgZXRjIGFuZCBzdG9wcyB1bmV4cGVjdGVkIHJvd3MgZnJvbSBiZWluZyBzZWxlY3RlZCBhZnRlciByZWRyYXdcbiAgICBpZiAodGhpcy5pc0hlYWRlcikge1xuICAgICAgdGhpcy5jb250ZXh0LnJvd0FkZGVkT3JSZW1vdmVkLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0Lmxhc3RDbGlja2VkSW5kZXggPSAtMTtcblxuICAgICAgICAvLyBleGNsdWRlIG5vbkRlcGVuZGVudENoZWNrYm94ZXMgKHNvbWUgbWF5IG5vdCBiZSBhbGxvd2VkIHRvIGJlIGRlc2VsZWN0ZWQpXG4gICAgICAgIGxldCBkZXBlbmRlbnRDaGVja2JveGVzOiBBYnN0cmFjdENvbnRyb2xbXSA9IFtdO1xuICAgICAgICB0aGlzLmNvbnRleHQucm93Q2hlY2tib3hlcy5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5jb250ZXh0Lm5vbkRlcGVuZGVudENoZWNrYm94ZXMuaW5jbHVkZXMoaW5kZXgpKSB7XG4gICAgICAgICAgICBkZXBlbmRlbnRDaGVja2JveGVzLnB1c2goY29udHJvbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRlcGVuZGVudENoZWNrYm94ZXNSZWZlcmVuY2UgPSB7IGNvbnRyb2xzOiBkZXBlbmRlbnRDaGVja2JveGVzIH07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250ZXh0LnJvd0FkZGVkT3JSZW1vdmVkLm5leHQoKTtcblxuICAgICAgLy93YXRjaCBmb3IgdGhlIGNoZWNrYm94IHN0YXRlIHRvIGNoYW5nZSBvbiBhIGNoaWxkIHJvdyBhbmQgc2V0IHRoZSByb3cgaXNTZWxlY3RlZCBjbGFzcyAvIGhpZ2hsaWdodCB0byBtYXRjaFxuICAgICAgLy90aGlzIHdheSB0aGUgcm93cyBtYXRjaCBldmVuIGlmIGV4dGVybmFsIGNvZGUgdXBkYXRlcyB0aGUgZm9ybSBtb2RlbFxuICAgICAgdGhpcy5mb3JtQ29udHJvbD8udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAgKiBJZiB0aGV5IGFyZSBob2xkaW5nIHRoZSBzaGlmdCBrZXksIHRyeSB0byBzZWxlY3QgYWxsIHRoZSBjaGVja2JveGVzIGJldHdlZW4gdGhlaXIgbGFzdCBzZWxlY3Rpb25cbiAgICAqIGFuZCBtb3N0IHJlY2VudCBzZWxlY3Rpb24uIFRoZSBsb2dpYyBpcyBzZXR1cCB0byBiZWhhdmUgdGhlIHdheSB3aW5kb3dzIGV4cGxvcmVyIGJlaGF2ZXNcbiAgICAqIFdlIGRvbid0IGFsbG93IGRyYWctdG8tc2VsZWN0IGxpa2UgdGhlIGtlbmRvIHRhYmxlcywgYnV0IGl0IG1lYW5zIHVzZXJzIGNhbiBoaWdobGlnaHQgdGV4dCBhbmQgY29weStwYXN0ZSB0byBleGNlbCBldGNcbiAgICAqIHNvIEkgdGhpbmsgdGhpcyBpcyBhY3R1YWxseSBwcmVmZXJhYmxlXG4gICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVTaGlmdFNlbGVjdChldmVudDogTW91c2VFdmVudCkge1xuICAgIGxldCBsYXN0SW5kZXggPSB0aGlzLmNvbnRleHQubGFzdENsaWNrZWRJbmRleDtcbiAgICBsZXQgY3VySW5kZXggPSB0aGlzLnJvd0luZGV4O1xuICAgIGlmIChldmVudC5zaGlmdEtleSAmJiBsYXN0SW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5jbGVhckFsbFJvd3MoKTtcbiAgICAgIGlmIChjdXJJbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgICBmb3IgKHZhciBpbmRleCA9IGxhc3RJbmRleDsgaW5kZXggPD0gY3VySW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgICB0aGlzLmNvbnRleHQucm93Q2hlY2tib3hlcy5hdChpbmRleCkuc2V0VmFsdWUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY3VySW5kZXggPCBsYXN0SW5kZXgpIHtcbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSBsYXN0SW5kZXg7IGluZGV4ID49IGN1ckluZGV4OyBpbmRleC0tKSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LnJvd0NoZWNrYm94ZXMuYXQoaW5kZXgpLnNldFZhbHVlKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGN1ckluZGV4ID09PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk/LnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3JlY29yZCB0aGUgY3VycmVudCByb3cgaW5kZXggZm9yIGZ1dHVyZSByb3cgY2xpY2tzIHRvIGtub3cgd2hlcmUgdGhleSBsYXN0IGludGVyYWN0ZWRcbiAgICAgIC8vYnV0IG9ubHkgaWYgdGhleSBkb24ndCBoYXZlIHNoaWZ0IGRvd24gZm9yIHRoaXMgY2xpY2suIElmIHNoaWZ0IGlzIGRvd24gdGhlbiB0aGUgbmV4dCBzaGlmdCtjbGlja1xuICAgICAgLy9zaG91bGQgYmUgY29uc2lkZXJlZCBhbiBleHRlbnNpb24gKG9yIGNvbnRyYWN0aW9uKSBvZiB0aGUgb3JpZ2luYWwgbXVsdGktcm93IHNlbGVjdGlvblxuICAgICAgdGhpcy5jb250ZXh0Lmxhc3RDbGlja2VkSW5kZXggPSB0aGlzLnJvd0luZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJBbGxSb3dzKCkge1xuICAgIHRoaXMuY29udGV4dC5yb3dDaGVja2JveGVzLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiBjb250cm9sLnNldFZhbHVlKGZhbHNlKSk7XG4gIH1cbn1cbiIsIjwhLS0gYW55IGVsZW1lbnRzIG9mIHRoZSBleGlzdGluZyB0YWJsZSByb3cgdGhhdCBtdXN0IGdvIGJlZm9yZSB0aGUgcm93IHNlbGVjdGlvbiBjaGVja2JveCBjYW4gYmUgbWFya2VkIHdpdGggYSBjbGFzcyBvZiBiZWZvcmUtY2hlY2tib3ggLS0+XG48bmctY29udGVudCBzZWxlY3Q9XCIuYmVmb3JlLWNoZWNrYm94XCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2VsZWN0aW9uRW5hYmxlZFwiPlxuICA8dGggKm5nSWY9XCJpc0hlYWRlclwiXG4gICAgICBjbGFzcz1cImNoZWNrYm94XCJcbiAgICAgIFtlY1RhYmxlTG9ja2VkQ29sdW1uXT1cImxvY2tlZENvbE9wdGlvbnNcIj5cbiAgICA8ZWMtY2hlY2tib3ggaWQ9XCJ7e2lkfX1fc2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLTBcIlxuICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRleHQ/LnNlbGVjdEFsbENoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgW2Zvcm1Nb2RlbF09XCJjb250ZXh0Py5zZWxlY3RBbGxDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgIFtkZXBlbmRlbnRDaGVja2JveGVzR3JvdXBdPVwiZGVwZW5kZW50Q2hlY2tib3hlc1JlZmVyZW5jZVwiXG4gICAgICAgICAgICAgICAgIFtpZ25vcmVEaXNhYmxlZERlcGVuZGVudHNdPVwiZmFsc2VcIj5cbiAgICA8L2VjLWNoZWNrYm94PlxuICA8L3RoPlxuICA8dGQgKm5nSWY9XCIhaXNIZWFkZXIgJiYgZm9ybUNvbnRyb2xcIlxuICAgICAgY2xhc3M9XCJjaGVja2JveFwiXG4gICAgICBbZWNUYWJsZUxvY2tlZENvbHVtbl09XCJsb2NrZWRDb2xPcHRpb25zXCI+XG4gICAgPCEtLSBVc2UgW3JlYWRvbmx5XSBhbmQgbm90IFtkaXNhYmxlZF0gZm9yIGlzQ2hlY2tib3hEaXNhYmxlZCB0byBwcmV2ZW50IHVzZXIgaW50ZXJhY3Rpb25cbiAgICAgICAgIGFuZCBhbGxvdyB0aGUgdmFsdWUgdG8gYmUgdmlzaWJsZSB0byBvdGhlciBjb21wb25lbnRzIChmb3IgZXhhbXBsZSwgd2hlbiB0aGV5IHN1YnNjcmliZVxuICAgICAgICAgdG8gdmFsdWVDaGFuZ2VzIG9uIHRoZSBGb3JtQXJyYXkgdGhhdCBjb250YWlucyBhbGwgdGhlIGNoZWNrYm94IEZvcm1Db250cm9scykuIC0tPlxuICAgIDxlYy1jaGVja2JveCBpZD1cInt7aWR9fV9yb3d7e3Jvd0luZGV4fX1fY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNDaGVja2JveERpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiY2hlY2tib3hBdHRyaWJ1dGVJRFwiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwibS0wIHJvdy1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgIFtmb3JtTW9kZWxdPVwiZm9ybUNvbnRyb2xcIj5cbiAgICA8L2VjLWNoZWNrYm94PlxuICA8L3RkPlxuPC9uZy1jb250YWluZXI+XG48IS0tIFRoZSByZXN0IG9mIHRoZSB0YWJsZSByb3cgLS0+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+Il19
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { Component, ContentChildren, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { cloneDeep, isEqual } from 'lodash';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { ResizableColumnComponent } from './resizable-column.component';
|
|
6
|
-
import { TableMasterRowComponent } from './table-master-row.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common";
|
|
9
|
-
import * as i2 from "@angular/cdk/scrolling";
|
|
10
|
-
import * as i3 from "./resizable-table.directive";
|
|
11
|
-
export class TableComponent {
|
|
12
|
-
get hasHeaderTitleTemplate() {
|
|
13
|
-
return !!this.headerTitleTemplate;
|
|
14
|
-
}
|
|
15
|
-
constructor(renderer, el) {
|
|
16
|
-
this.renderer = renderer;
|
|
17
|
-
this.el = el;
|
|
18
|
-
this.id = '';
|
|
19
|
-
/**
|
|
20
|
-
* Enables table scrolling with a sticky header and footer. Use
|
|
21
|
-
* <thead> and <tfoot> elements for styles to be applied correctly.
|
|
22
|
-
*/
|
|
23
|
-
this.scrollable = false;
|
|
24
|
-
/**
|
|
25
|
-
* Enables resizable table columns. Apply the 'is-resizable' class
|
|
26
|
-
* to the <th> of a table column than can be resized.
|
|
27
|
-
*/
|
|
28
|
-
this.resizable = false;
|
|
29
|
-
/**
|
|
30
|
-
* Turns on condensed table styling. By default a condensed table
|
|
31
|
-
* has no row borders. To show borders, apply the 'has-borders' class
|
|
32
|
-
* to the <ec-table> element
|
|
33
|
-
*/
|
|
34
|
-
this.condensed = false;
|
|
35
|
-
/**
|
|
36
|
-
* Enables sorting by clicking on table columns. To make a column sortable
|
|
37
|
-
* apply the `data-sortable` attribute to the columns `<th>` element with
|
|
38
|
-
* the value of the field used to sort the column. When a column is clicked
|
|
39
|
-
* the fields and current sort direction is emitted from the `sortChange`
|
|
40
|
-
* output
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```html
|
|
44
|
-
* <ec-table [sortable]="true" [sort]="currentSort" (sortChange)="onSort($event)">
|
|
45
|
-
* <thead>
|
|
46
|
-
* <th data-sortable="name">Name</th>
|
|
47
|
-
* <th data-sortable="qty">Qty.</th>
|
|
48
|
-
* <th data-sortable="price">Price</th>
|
|
49
|
-
* </thead>
|
|
50
|
-
* ...
|
|
51
|
-
* </ec-table>
|
|
52
|
-
* ```
|
|
53
|
-
*/
|
|
54
|
-
this.sortable = false;
|
|
55
|
-
/** Set to true if selectionContext is defined */
|
|
56
|
-
this.selectable = false;
|
|
57
|
-
/** Hides/shows the selection toolbar template when 1 or more rows is selected */
|
|
58
|
-
this.hasSelection = false;
|
|
59
|
-
/**
|
|
60
|
-
* Enables form table styling to allow form controls inside table cells.
|
|
61
|
-
*/
|
|
62
|
-
this.isForm = false;
|
|
63
|
-
/**
|
|
64
|
-
* Emits the new sort value whenever a sortable column is clicked
|
|
65
|
-
*/
|
|
66
|
-
this.sortChange = new EventEmitter();
|
|
67
|
-
/**
|
|
68
|
-
* True if a TableMasterRowComponent exists in the table content
|
|
69
|
-
*/
|
|
70
|
-
this.hasMasterDetailRows = false;
|
|
71
|
-
/**
|
|
72
|
-
* Unlisten function returned by `renderer.listen()` that are called
|
|
73
|
-
* OnDestroy to clean up all listeners
|
|
74
|
-
*/
|
|
75
|
-
this.unlisteners = [];
|
|
76
|
-
/** A map of sortable `<th>` elements */
|
|
77
|
-
this.sortableCols = {};
|
|
78
|
-
this.destroyed = new Subject();
|
|
79
|
-
}
|
|
80
|
-
ngOnChanges(changes) {
|
|
81
|
-
if (this.sortable && changes.sort && changes.sort.currentValue && !changes.sort.firstChange) {
|
|
82
|
-
const newValue = changes.sort.currentValue;
|
|
83
|
-
if (!this.currentSort || !isEqual(newValue, this.currentSort)) {
|
|
84
|
-
this.onSort(newValue);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
ngAfterContentInit() {
|
|
89
|
-
this.hasMasterDetailRows = !!this.masterRows.length;
|
|
90
|
-
this.masterRows.changes.pipe(takeUntil(this.destroyed)).subscribe(() => {
|
|
91
|
-
this.hasMasterDetailRows = !!this.masterRows.length;
|
|
92
|
-
});
|
|
93
|
-
this.resizableColumns = this.searchableTableResizableColumns || this._resizableColumns;
|
|
94
|
-
}
|
|
95
|
-
ngAfterViewInit() {
|
|
96
|
-
if (this.sortable) {
|
|
97
|
-
this.initSortable();
|
|
98
|
-
}
|
|
99
|
-
if (this.selectable) {
|
|
100
|
-
this.initSelectable();
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
ngOnDestroy() {
|
|
104
|
-
if (this.unlisteners.length) {
|
|
105
|
-
this.unlisteners.forEach(unlisten => unlisten());
|
|
106
|
-
}
|
|
107
|
-
this.destroyed.next();
|
|
108
|
-
this.destroyed.unsubscribe();
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Get all elements inside the host element that match a selector
|
|
112
|
-
* @param selector - Any valid selector for [querySelectorAll](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll)
|
|
113
|
-
*/
|
|
114
|
-
queryElements(selector) {
|
|
115
|
-
const table = this.el.nativeElement;
|
|
116
|
-
return Array.from(table.querySelectorAll(selector));
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Store a `<th>` for each sortable column and attach a click
|
|
120
|
-
* event listener.
|
|
121
|
-
*/
|
|
122
|
-
initSortable() {
|
|
123
|
-
this.queryElements('th').forEach(th => {
|
|
124
|
-
if (th.hasAttribute('data-sortfield')) {
|
|
125
|
-
const field = th.getAttribute('data-sortfield');
|
|
126
|
-
if (field) {
|
|
127
|
-
this.sortableCols[field] = th;
|
|
128
|
-
const unlisten = this.renderer.listen(th, 'click', (event) => {
|
|
129
|
-
// Do not sort if the event target was the resizable handle
|
|
130
|
-
if (th.classList.contains('is-resizable') && event.target && event.target.classList.contains('handle')) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
let direction;
|
|
134
|
-
if (th.classList.contains('is-sorted-desc')) {
|
|
135
|
-
direction = 'asc';
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
direction = 'desc';
|
|
139
|
-
}
|
|
140
|
-
this.onSort({ field, direction });
|
|
141
|
-
});
|
|
142
|
-
// Store unlisten function to remove listener when component is destroyed
|
|
143
|
-
this.unlisteners.push(unlisten);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
console.error(`data-sortfield attribute was not assigned a value.`, th);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
// Set the initial sort
|
|
151
|
-
if (this.sort) {
|
|
152
|
-
this.onSort(this.sort);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Find the sorted column and apply the desc or asc class in order
|
|
157
|
-
* to show the correct sort icon. If another field was sorted, reset it.
|
|
158
|
-
* Emit the current field and direction of the sorted column
|
|
159
|
-
* @param field
|
|
160
|
-
*/
|
|
161
|
-
onSort(sort) {
|
|
162
|
-
this.clearSort();
|
|
163
|
-
if (Array.isArray(sort)) {
|
|
164
|
-
sort.forEach(s => this.applySort(s));
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
this.applySort(sort);
|
|
168
|
-
}
|
|
169
|
-
this.currentSort = cloneDeep(sort);
|
|
170
|
-
this.sortChange.emit(this.currentSort);
|
|
171
|
-
}
|
|
172
|
-
clearSort() {
|
|
173
|
-
Object.values(this.sortableCols).forEach(th => {
|
|
174
|
-
this.renderer.removeClass(th, `is-sorted-asc`);
|
|
175
|
-
this.renderer.removeClass(th, `is-sorted-desc`);
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
applySort(sort) {
|
|
179
|
-
const th = this.sortableCols[sort.field];
|
|
180
|
-
if (!th) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
this.renderer.addClass(th, `is-sorted-${sort.direction}`);
|
|
184
|
-
}
|
|
185
|
-
initSelectable() {
|
|
186
|
-
this.selectionContext.rowCheckboxes.valueChanges.pipe(takeUntil(this.destroyed)).subscribe((value) => {
|
|
187
|
-
this.hasSelection = value.some(v => v);
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TableComponent, selector: "ec-table", inputs: { id: "id", scrollable: "scrollable", resizable: "resizable", condensed: "condensed", sortable: "sortable", selectionContext: "selectionContext", selectionToolbarTemplate: "selectionToolbarTemplate", headerTitleTemplate: "headerTitleTemplate", selectable: "selectable", isForm: "isForm", sort: "sort", searchableTableResizableColumns: ["resizableColumns", "searchableTableResizableColumns"] }, outputs: { sortChange: "sortChange" }, host: { properties: { "attr.id": "this.id", "class.is-scrollable": "this.scrollable", "class.is-resizable": "this.resizable", "class.is-condensed": "this.condensed", "class.is-sortable": "this.sortable", "class.has-title": "this.hasHeaderTitleTemplate", "class.is-selectable": "this.selectable", "class.is-form-table": "this.isForm", "class.is-master-detail": "this.hasMasterDetailRows" } }, queries: [{ propertyName: "masterRows", predicate: TableMasterRowComponent, descendants: true }, { propertyName: "_resizableColumns", predicate: ResizableColumnComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (headerTitleTemplate) {\n<header class=\"table-title\">\n <ng-container *ngTemplateOutlet=\"headerTitleTemplate\"></ng-container>\n</header>\n}\n\n<div class=\"selectable-table-toolbar\"\n *ngIf=\"hasSelection && selectionToolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"selectionToolbarTemplate\"></ng-container>\n</div>\n\n<div id=\"{{id}}-scroll-container\" \n class=\"table-scroll-container\"\n cdkScrollable>\n <table class=\"main-table\"\n id=\"{{id}}\"\n [ecResizableTable]=\"resizable\"\n [containerEl]=\"el\"\n [sortableTable]=\"sortable\"\n [resizableColumns]=\"resizableColumns\">\n <ng-content></ng-content>\n </table>\n</div>\n", styles: ["ec-table{display:flex;flex-direction:column;position:relative;min-height:0}ec-table .table-scroll-container{flex:1 1;min-height:0;overflow-y:auto}ec-table .main-table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--ec-font-size-label)}ec-table .main-table th{height:2rem;line-height:1rem;padding:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid var(--ec-border-color-dark);color:var(--ec-color-secondary-dark);font-weight:400;vertical-align:middle}ec-table .main-table th:first-child{padding-left:1rem}ec-table .main-table th:last-child{padding-right:1rem}ec-table .main-table td{height:2rem;line-height:1rem;padding:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-top:1px solid var(--ec-border-color);vertical-align:top}ec-table .main-table td:first-child{padding-left:1rem}ec-table .main-table td:last-child{padding-right:1rem}ec-table .main-table tbody>tr:first-child td{border-top:0}ec-table .main-table tbody>tr.is-error td{background-color:var(--ec-background-color-danger)}ec-table .main-table tbody>tr.is-success td{background-color:var(--ec-background-color-success)}ec-table .main-table tfoot td{font-weight:700}ec-table .main-table tbody>tr.is-selected>td,ec-table .main-table tbody>tr.is-selected{background-color:var(--ec-background-color-selected)}ec-table .main-table tr.is-heading td{color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-label);font-weight:var(--ec-font-weight-bold);line-height:1.333333333;text-transform:uppercase;padding-bottom:0;vertical-align:bottom;border-top:0}ec-table .main-table tr.is-heading+tr td{border-top:0}ec-table .main-table th.actions-col,ec-table .main-table td.actions-col{padding:0}ec-table .main-table th.actions-1,ec-table .main-table td.actions-1{width:2.0625rem}ec-table .main-table th.actions-2,ec-table .main-table td.actions-2{width:4.0625rem}ec-table .main-table th.actions-3,ec-table .main-table td.actions-3{width:6.0625rem}ec-table .main-table th.actions-4,ec-table .main-table td.actions-4{width:8.0625rem}ec-table .main-table th.actions-5,ec-table .main-table td.actions-5{width:10.0625rem}ec-table.is-condensed th,ec-table.is-condensed td{padding-top:.25rem;padding-bottom:.25rem;height:1.5rem}ec-table.is-condensed:not(.has-borders)>table td{border-bottom-width:0;border-top-width:0}ec-table .table-title{height:2.5rem;display:flex;align-items:center;padding:0 .5rem}ec-table .selectable-table-toolbar{align-items:center;background-color:var(--ec-background-color);border-bottom:1px solid var(--ec-border-color-dark);display:flex;padding:0 .5rem;position:absolute;left:calc(var(--selection-toolbar-left, 0rem) + 1.625rem);top:0;height:2.5rem;right:0;z-index:calc(var(--ec-z-index-sticky-header) + 3)}ec-table.has-title .selectable-table-toolbar{left:0}ec-table.is-scrollable>.table-scroll-container>table{position:relative}ec-table.is-scrollable>.table-scroll-container>table>thead th{background-color:var(--ec-background-color);position:sticky!important;top:0;z-index:var(--ec-z-index-sticky-header)}ec-table.is-scrollable>.table-scroll-container>table>tfoot td{background-color:var(--ec-background-color);position:sticky!important;bottom:0;z-index:var(--ec-z-index-sticky-header)}ec-table.is-scrollable.bg-body>.table-scroll-container>table>thead th{background-color:var(--ec-background-color-body)}ec-table.is-scrollable.bg-body>.table-scroll-container>table>tfoot td{background-color:var(--ec-background-color-body)}ec-table.is-sortable th[data-sortfield]{-webkit-user-select:none;user-select:none}ec-table.is-sortable th[data-sortfield].is-resizable .content-wrapper{display:flex;cursor:pointer}ec-table.is-sortable th[data-sortfield].is-resizable .content{flex:0 1 auto}ec-table.is-sortable th[data-sortfield].is-resizable .content-wrapper:after{flex:none;width:.875rem;height:.875rem;margin:0 .25rem;font-size:.75rem;display:none;align-items:center;justify-content:center}ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-desc .content-wrapper:after,ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-asc .content-wrapper:after{font:var(--fa-font-solid);content:\"\\f062\";display:inline-flex}ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-desc .content-wrapper:after{transform:scaleY(-1)}ec-table.is-sortable th[data-sortfield].is-resizable.text-right .content-wrapper{flex-direction:row-reverse}ec-table.is-sortable th[data-sortfield]:not(.is-resizable){cursor:pointer}ec-table.is-sortable th[data-sortfield]:not(.is-resizable):after{width:.875rem;height:.875rem;margin:0 .25rem;font-size:.75rem;display:none;align-items:center;justify-content:center}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-desc:after,ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-asc:after{font:var(--fa-font-solid);content:\"\\f062\";display:inline-flex}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-desc:after{transform:scaleY(-1)}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right:after{content:\"\";display:none!important}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right:before{width:.875rem;height:.875rem;margin:0 .25rem;font-size:.75rem;display:none;align-items:center;justify-content:center}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-desc:before,ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-asc:before{font:var(--fa-font-solid);content:\"\\f062\";display:inline-block}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-desc:before{transform:scaleY(-1)}ec-table.is-resizable .main-table{table-layout:fixed;width:100%}ec-table.is-resizable th.is-resizable{position:relative;overflow:visible;z-index:var(--ec-z-index-sticky-header)}ec-table.is-resizable th.is-resizable.is-active{-webkit-user-select:none;user-select:none}ec-table.is-resizable th.is-resizable.is-active .handle:after{background-color:var(--ec-color-interactive)}ec-table.is-resizable th.is-resizable .handle{position:absolute;width:13px;height:100%;top:0;padding:0 5px;z-index:var(--ec-z-index-splitter);right:0;padding:.5rem 0 .5rem 10px}ec-table.is-resizable th.is-resizable .handle:after{content:\"\";display:block;transition:background-color .3s ease;height:100%;position:relative}ec-table.is-resizable th.is-resizable .handle:hover{cursor:col-resize}ec-table.is-resizable th.is-resizable .handle:hover:after{background-color:var(--ec-color-interactive)}ec-table.is-resizable th.is-resizable .handle:before{content:\"\";display:block;width:1px;background-color:var(--ec-border-color);position:absolute;top:.5rem;bottom:.5rem;right:0}ec-table.is-resizable th.is-resizable .content{overflow:hidden;text-overflow:clip;white-space:nowrap}ec-table.is-resizable th.is-resizable:last-child .handle:before{display:none}ec-table.is-resizable td,ec-table.is-resizable th{overflow:hidden;text-overflow:clip;white-space:nowrap}ec-table.is-selectable .main-table thead th{height:2.5rem}ec-table.is-selectable .main-table tbody>tr:hover>td{background-color:var(--ec-background-color-hover);border-color:transparent;cursor:pointer}ec-table.is-selectable .main-table tbody>tr:hover.is-selected{background-color:var(--ec-background-color-selected)}ec-table.is-selectable .main-table tbody>tr:hover+tr>td{border-color:var(--ec-background-color-hover)}ec-table.is-selectable th.is-resizable .handle{padding-top:.75rem;padding-bottom:.75rem}ec-table.is-selectable th.is-resizable .handle:before{top:.75rem;bottom:.75rem}ec-table.is-master-detail>table{table-layout:fixed}ec-table.is-form-table td{padding-bottom:.25rem;padding-top:.25rem;height:2.5rem;line-height:2rem;border-top:0;font-size:var(--ec-font-size-body)}ec-table.is-form-table tr:first-child td{padding-top:.5rem;height:2.75rem}ec-table.is-form-table tr:last-child td{padding-bottom:.5rem;height:2.75rem}ec-table.is-fixed .main-table{table-layout:fixed}\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.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "directive", type: i3.ResizableTableDirective, selector: "[ecResizableTable]", inputs: ["ecResizableTable", "containerEl", "sortableTable", "resizableColumns"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
192
|
-
}
|
|
193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
|
|
194
|
-
type: Component,
|
|
195
|
-
args: [{ selector: 'ec-table', encapsulation: ViewEncapsulation.None, template: "@if (headerTitleTemplate) {\n<header class=\"table-title\">\n <ng-container *ngTemplateOutlet=\"headerTitleTemplate\"></ng-container>\n</header>\n}\n\n<div class=\"selectable-table-toolbar\"\n *ngIf=\"hasSelection && selectionToolbarTemplate\">\n <ng-container *ngTemplateOutlet=\"selectionToolbarTemplate\"></ng-container>\n</div>\n\n<div id=\"{{id}}-scroll-container\" \n class=\"table-scroll-container\"\n cdkScrollable>\n <table class=\"main-table\"\n id=\"{{id}}\"\n [ecResizableTable]=\"resizable\"\n [containerEl]=\"el\"\n [sortableTable]=\"sortable\"\n [resizableColumns]=\"resizableColumns\">\n <ng-content></ng-content>\n </table>\n</div>\n", styles: ["ec-table{display:flex;flex-direction:column;position:relative;min-height:0}ec-table .table-scroll-container{flex:1 1;min-height:0;overflow-y:auto}ec-table .main-table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--ec-font-size-label)}ec-table .main-table th{height:2rem;line-height:1rem;padding:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid var(--ec-border-color-dark);color:var(--ec-color-secondary-dark);font-weight:400;vertical-align:middle}ec-table .main-table th:first-child{padding-left:1rem}ec-table .main-table th:last-child{padding-right:1rem}ec-table .main-table td{height:2rem;line-height:1rem;padding:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-top:1px solid var(--ec-border-color);vertical-align:top}ec-table .main-table td:first-child{padding-left:1rem}ec-table .main-table td:last-child{padding-right:1rem}ec-table .main-table tbody>tr:first-child td{border-top:0}ec-table .main-table tbody>tr.is-error td{background-color:var(--ec-background-color-danger)}ec-table .main-table tbody>tr.is-success td{background-color:var(--ec-background-color-success)}ec-table .main-table tfoot td{font-weight:700}ec-table .main-table tbody>tr.is-selected>td,ec-table .main-table tbody>tr.is-selected{background-color:var(--ec-background-color-selected)}ec-table .main-table tr.is-heading td{color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-label);font-weight:var(--ec-font-weight-bold);line-height:1.333333333;text-transform:uppercase;padding-bottom:0;vertical-align:bottom;border-top:0}ec-table .main-table tr.is-heading+tr td{border-top:0}ec-table .main-table th.actions-col,ec-table .main-table td.actions-col{padding:0}ec-table .main-table th.actions-1,ec-table .main-table td.actions-1{width:2.0625rem}ec-table .main-table th.actions-2,ec-table .main-table td.actions-2{width:4.0625rem}ec-table .main-table th.actions-3,ec-table .main-table td.actions-3{width:6.0625rem}ec-table .main-table th.actions-4,ec-table .main-table td.actions-4{width:8.0625rem}ec-table .main-table th.actions-5,ec-table .main-table td.actions-5{width:10.0625rem}ec-table.is-condensed th,ec-table.is-condensed td{padding-top:.25rem;padding-bottom:.25rem;height:1.5rem}ec-table.is-condensed:not(.has-borders)>table td{border-bottom-width:0;border-top-width:0}ec-table .table-title{height:2.5rem;display:flex;align-items:center;padding:0 .5rem}ec-table .selectable-table-toolbar{align-items:center;background-color:var(--ec-background-color);border-bottom:1px solid var(--ec-border-color-dark);display:flex;padding:0 .5rem;position:absolute;left:calc(var(--selection-toolbar-left, 0rem) + 1.625rem);top:0;height:2.5rem;right:0;z-index:calc(var(--ec-z-index-sticky-header) + 3)}ec-table.has-title .selectable-table-toolbar{left:0}ec-table.is-scrollable>.table-scroll-container>table{position:relative}ec-table.is-scrollable>.table-scroll-container>table>thead th{background-color:var(--ec-background-color);position:sticky!important;top:0;z-index:var(--ec-z-index-sticky-header)}ec-table.is-scrollable>.table-scroll-container>table>tfoot td{background-color:var(--ec-background-color);position:sticky!important;bottom:0;z-index:var(--ec-z-index-sticky-header)}ec-table.is-scrollable.bg-body>.table-scroll-container>table>thead th{background-color:var(--ec-background-color-body)}ec-table.is-scrollable.bg-body>.table-scroll-container>table>tfoot td{background-color:var(--ec-background-color-body)}ec-table.is-sortable th[data-sortfield]{-webkit-user-select:none;user-select:none}ec-table.is-sortable th[data-sortfield].is-resizable .content-wrapper{display:flex;cursor:pointer}ec-table.is-sortable th[data-sortfield].is-resizable .content{flex:0 1 auto}ec-table.is-sortable th[data-sortfield].is-resizable .content-wrapper:after{flex:none;width:.875rem;height:.875rem;margin:0 .25rem;font-size:.75rem;display:none;align-items:center;justify-content:center}ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-desc .content-wrapper:after,ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-asc .content-wrapper:after{font:var(--fa-font-solid);content:\"\\f062\";display:inline-flex}ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-desc .content-wrapper:after{transform:scaleY(-1)}ec-table.is-sortable th[data-sortfield].is-resizable.text-right .content-wrapper{flex-direction:row-reverse}ec-table.is-sortable th[data-sortfield]:not(.is-resizable){cursor:pointer}ec-table.is-sortable th[data-sortfield]:not(.is-resizable):after{width:.875rem;height:.875rem;margin:0 .25rem;font-size:.75rem;display:none;align-items:center;justify-content:center}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-desc:after,ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-asc:after{font:var(--fa-font-solid);content:\"\\f062\";display:inline-flex}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-desc:after{transform:scaleY(-1)}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right:after{content:\"\";display:none!important}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right:before{width:.875rem;height:.875rem;margin:0 .25rem;font-size:.75rem;display:none;align-items:center;justify-content:center}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-desc:before,ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-asc:before{font:var(--fa-font-solid);content:\"\\f062\";display:inline-block}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-desc:before{transform:scaleY(-1)}ec-table.is-resizable .main-table{table-layout:fixed;width:100%}ec-table.is-resizable th.is-resizable{position:relative;overflow:visible;z-index:var(--ec-z-index-sticky-header)}ec-table.is-resizable th.is-resizable.is-active{-webkit-user-select:none;user-select:none}ec-table.is-resizable th.is-resizable.is-active .handle:after{background-color:var(--ec-color-interactive)}ec-table.is-resizable th.is-resizable .handle{position:absolute;width:13px;height:100%;top:0;padding:0 5px;z-index:var(--ec-z-index-splitter);right:0;padding:.5rem 0 .5rem 10px}ec-table.is-resizable th.is-resizable .handle:after{content:\"\";display:block;transition:background-color .3s ease;height:100%;position:relative}ec-table.is-resizable th.is-resizable .handle:hover{cursor:col-resize}ec-table.is-resizable th.is-resizable .handle:hover:after{background-color:var(--ec-color-interactive)}ec-table.is-resizable th.is-resizable .handle:before{content:\"\";display:block;width:1px;background-color:var(--ec-border-color);position:absolute;top:.5rem;bottom:.5rem;right:0}ec-table.is-resizable th.is-resizable .content{overflow:hidden;text-overflow:clip;white-space:nowrap}ec-table.is-resizable th.is-resizable:last-child .handle:before{display:none}ec-table.is-resizable td,ec-table.is-resizable th{overflow:hidden;text-overflow:clip;white-space:nowrap}ec-table.is-selectable .main-table thead th{height:2.5rem}ec-table.is-selectable .main-table tbody>tr:hover>td{background-color:var(--ec-background-color-hover);border-color:transparent;cursor:pointer}ec-table.is-selectable .main-table tbody>tr:hover.is-selected{background-color:var(--ec-background-color-selected)}ec-table.is-selectable .main-table tbody>tr:hover+tr>td{border-color:var(--ec-background-color-hover)}ec-table.is-selectable th.is-resizable .handle{padding-top:.75rem;padding-bottom:.75rem}ec-table.is-selectable th.is-resizable .handle:before{top:.75rem;bottom:.75rem}ec-table.is-master-detail>table{table-layout:fixed}ec-table.is-form-table td{padding-bottom:.25rem;padding-top:.25rem;height:2.5rem;line-height:2rem;border-top:0;font-size:var(--ec-font-size-body)}ec-table.is-form-table tr:first-child td{padding-top:.5rem;height:2.75rem}ec-table.is-form-table tr:last-child td{padding-bottom:.5rem;height:2.75rem}ec-table.is-fixed .main-table{table-layout:fixed}\n"] }]
|
|
196
|
-
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { id: [{
|
|
197
|
-
type: HostBinding,
|
|
198
|
-
args: ['attr.id']
|
|
199
|
-
}, {
|
|
200
|
-
type: Input
|
|
201
|
-
}], scrollable: [{
|
|
202
|
-
type: HostBinding,
|
|
203
|
-
args: ['class.is-scrollable']
|
|
204
|
-
}, {
|
|
205
|
-
type: Input
|
|
206
|
-
}], resizable: [{
|
|
207
|
-
type: HostBinding,
|
|
208
|
-
args: ['class.is-resizable']
|
|
209
|
-
}, {
|
|
210
|
-
type: Input
|
|
211
|
-
}], condensed: [{
|
|
212
|
-
type: HostBinding,
|
|
213
|
-
args: ['class.is-condensed']
|
|
214
|
-
}, {
|
|
215
|
-
type: Input
|
|
216
|
-
}], sortable: [{
|
|
217
|
-
type: HostBinding,
|
|
218
|
-
args: ['class.is-sortable']
|
|
219
|
-
}, {
|
|
220
|
-
type: Input
|
|
221
|
-
}], selectionContext: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}], selectionToolbarTemplate: [{
|
|
224
|
-
type: Input
|
|
225
|
-
}], headerTitleTemplate: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], hasHeaderTitleTemplate: [{
|
|
228
|
-
type: HostBinding,
|
|
229
|
-
args: ['class.has-title']
|
|
230
|
-
}], selectable: [{
|
|
231
|
-
type: HostBinding,
|
|
232
|
-
args: ['class.is-selectable']
|
|
233
|
-
}, {
|
|
234
|
-
type: Input
|
|
235
|
-
}], isForm: [{
|
|
236
|
-
type: HostBinding,
|
|
237
|
-
args: ['class.is-form-table']
|
|
238
|
-
}, {
|
|
239
|
-
type: Input
|
|
240
|
-
}], sort: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], sortChange: [{
|
|
243
|
-
type: Output
|
|
244
|
-
}], hasMasterDetailRows: [{
|
|
245
|
-
type: HostBinding,
|
|
246
|
-
args: ['class.is-master-detail']
|
|
247
|
-
}], masterRows: [{
|
|
248
|
-
type: ContentChildren,
|
|
249
|
-
args: [TableMasterRowComponent, { descendants: true }]
|
|
250
|
-
}], _resizableColumns: [{
|
|
251
|
-
type: ContentChildren,
|
|
252
|
-
args: [ResizableColumnComponent, { descendants: true }]
|
|
253
|
-
}], searchableTableResizableColumns: [{
|
|
254
|
-
type: Input,
|
|
255
|
-
args: ['resizableColumns']
|
|
256
|
-
}] } });
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUF3QixNQUFNLEVBQW9ELGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdPLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7OztBQWV2RSxNQUFNLE9BQU8sY0FBYztJQWdFekIsSUFDVyxzQkFBc0I7UUFDL0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFtREQsWUFBb0IsUUFBbUIsRUFBUyxFQUFjO1FBQTFDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBcEhyRCxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBRWpCOzs7V0FHRztRQUVNLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFNUI7OztXQUdHO1FBRU0sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7OztXQUlHO1FBRU0sY0FBUyxHQUFHLEtBQUss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QUk7c0JBQVosS0FBSztnQkFLSSxVQUFVO3NCQUFuQixNQUFNO2dCQUtnQyxtQkFBbUI7c0JBQXpELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUUwQixVQUFVO3NCQUF4RSxlQUFlO3VCQUFDLHVCQUF1QixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFHRyxpQkFBaUI7c0JBQWhGLGVBQWU7dUJBQUMsd0JBQXdCLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQUVuQywrQkFBK0I7c0JBQXpELEtBQUs7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBRdWVyeUxpc3QsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9yZXNpemFibGUtY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZU1hc3RlclJvd0NvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dCB9IGZyb20gJy4vdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVGFibGVTb3J0RGlyZWN0aW9uID0gJ2Rlc2MnIHwgJ2FzYyc7XG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU29ydCB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGRpcmVjdGlvbjogVGFibGVTb3J0RGlyZWN0aW9uO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlYy10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgQElucHV0KCkgaWQgPSAnJztcblxuICAvKipcbiAgICogRW5hYmxlcyB0YWJsZSBzY3JvbGxpbmcgd2l0aCBhIHN0aWNreSBoZWFkZXIgYW5kIGZvb3Rlci4gVXNlXG4gICAqIDx0aGVhZD4gYW5kIDx0Zm9vdD4gZWxlbWVudHMgZm9yIHN0eWxlcyB0byBiZSBhcHBsaWVkIGNvcnJlY3RseS4gXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNjcm9sbGFibGUnKVxuICBASW5wdXQoKSBzY3JvbGxhYmxlID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogRW5hYmxlcyByZXNpemFibGUgdGFibGUgY29sdW1ucy4gQXBwbHkgdGhlICdpcy1yZXNpemFibGUnIGNsYXNzXG4gICAqIHRvIHRoZSA8dGg+IG9mIGEgdGFibGUgY29sdW1uIHRoYW4gY2FuIGJlIHJlc2l6ZWQuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXJlc2l6YWJsZScpXG4gIEBJbnB1dCgpIHJlc2l6YWJsZSA9IGZhbHNlO1xuICBcbiAgLyoqIFxuICAgKiBUdXJucyBvbiBjb25kZW5zZWQgdGFibGUgc3R5bGluZy4gQnkgZGVmYXVsdCBhIGNvbmRlbnNlZCB0YWJsZVxuICAgKiBoYXMgbm8gcm93IGJvcmRlcnMuIFRvIHNob3cgYm9yZGVycywgYXBwbHkgdGhlICdoYXMtYm9yZGVycycgY2xhc3NcbiAgICogdG8gdGhlIDxlYy10YWJsZT4gZWxlbWVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1jb25kZW5zZWQnKVxuICBASW5wdXQoKSBjb25kZW5zZWQgPSBmYWxzZTtcbiAgXG4gIC8qKiBcbiAgICogRW5hYmxlcyBzb3J0aW5nIGJ5IGNsaWNraW5nIG9uIHRhYmxlIGNvbHVtbnMuIFRvIG1ha2UgYSBjb2x1bW4gc29ydGFibGVcbiAgICogYXBwbHkgdGhlIGBkYXRhLXNvcnRhYmxlYCBhdHRyaWJ1dGUgdG8gdGhlIGNvbHVtbnMgYDx0aD5gIGVsZW1lbnQgd2l0aCBcbiAgICogdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCB1c2VkIHRvIHNvcnQgdGhlIGNvbHVtbi4gV2hlbiBhIGNvbHVtbiBpcyBjbGlja2VkXG4gICAqIHRoZSBmaWVsZHMgYW5kIGN1cnJlbnQgc29ydCBkaXJlY3Rpb24gaXMgZW1pdHRlZCBmcm9tIHRoZSBgc29ydENoYW5nZWBcbiAgICogb3V0cHV0XG4gICAqIFxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxlYy10YWJsZSBbc29ydGFibGVdPVwidHJ1ZVwiIFtzb3J0XT1cImN1cnJlbnRTb3J0XCIgKHNvcnRDaGFuZ2UpPVwib25Tb3J0KCRldmVudClcIj5cbiAgICogIDx0aGVhZD5cbiAgICogICAgPHRoIGRhdGEtc29ydGFibGU9XCJuYW1lXCI+TmFtZTwvdGg+XG4gICAqICAgIDx0aCBkYXRhLXNvcnRhYmxlPVwicXR5XCI+UXR5LjwvdGg+XG4gICAqICAgIDx0aCBkYXRhLXNvcnRhYmxlPVwicHJpY2VcIj5QcmljZTwvdGg+XG4gICAqICA8L3RoZWFkPlxuICAgKiAgLi4uXG4gICAqIDwvZWMtdGFibGU+XG4gICAqIGBgYFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zb3J0YWJsZScpXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogU2hhcmVkIGNvbnRleHQgb2YgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50cyBpbiB0aGUgdGFibGUuIFdpbGwgdHVybiBvbiBoaWdobGlnaHRpbmcgb24gcm93IGhvdmVyLlxuICAgKiBBZGQgdGhlIGBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnRgIHRvIHRoZSB0YWJsZSBjb250ZW50IHRvIGFkZCBjaGVja2JveGVzIHRvIGVhY2ggcm93IGFuZCBhc3NpZ24gYSBcbiAgICogVGVtcGxhdGVSZWYgdG8gdGhlIGBbc2VsZWN0aW9uVG9vbGJhclRlbXBsYXRlXWAgaW5wdXQgdGhhdCBpbmNsdWRlcyBhY3Rpb25zIHRvIHRha2Ugb24gc2VsZWN0ZWQgaXRlbXMgXG4gICAqIHRoYXQgd2lsbCBhcHBlYXIgb3ZlciB0aGUgdGFibGUgaGVhZGVyIHdoZW4gMSBvciBtb3JlIHJvd3MgYXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0aW9uQ29udGV4dD86IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQ7XG5cbiAgLyoqIEluY2x1ZGUgYWN0aW9ucyB0byBkaXNwbGF5IGluIGEgYmFyIG92ZXIgdGhlIHRhYmxlIGhlYWRlciB3aGVuIDEgb3IgbW9yZSByb3dzIGFyZSBzZWxlY3RlZC4gUmVxdWlyZXMgYFtzZWxlY3Rpb25Db250ZXh0XWAgdG8gYmUgZGVmaW5lZCAqL1xuICBASW5wdXQoKSBzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBcbiAgLyoqIEluY2x1ZGUgYSB0ZW1wbGF0ZSB0byBkaXNwbGF5IGluIHRoZSB0YWJsZSBoZWFkZXIuIFRoaXMgd2lsbCBiZSBkaXNwbGF5ZWQgYWJvdmUgdGhlIHRhYmxlIGNvbnRlbnQuIFdoZW4gcGFpcmVkIHdpdGggdGhlIHNlbGVjdGlvblRvb2xiYXJUZW1wbGF0ZVxuICAgKiAgdGhlIGhlYWRlclRpdGxlVGVtcGxhdGUgd2lsbCBzd2FwIHBvc2l0aW9ucyB3aXRoIHRoZSBzZWxlY3Rpb24gdG9vbGJhciBhbmQgbm90IGNvdmVyIHVwIHRoZSB0YWJsZSBjb2x1bW4gaGVhZGVycy5cbiAgKi9cbiAgQElucHV0KCkgaGVhZGVyVGl0bGVUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtdGl0bGUnKVxuICBwdWJsaWMgZ2V0IGhhc0hlYWRlclRpdGxlVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5oZWFkZXJUaXRsZVRlbXBsYXRlO1xuICB9XG5cbiAgLyoqIFNldCB0byB0cnVlIGlmIHNlbGVjdGlvbkNvbnRleHQgaXMgZGVmaW5lZCAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNlbGVjdGFibGUnKVxuICBASW5wdXQoKSBzZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgLyoqIEhpZGVzL3Nob3dzIHRoZSBzZWxlY3Rpb24gdG9vbGJhciB0ZW1wbGF0ZSB3aGVuIDEgb3IgbW9yZSByb3dzIGlzIHNlbGVjdGVkICovXG4gIGhhc1NlbGVjdGlvbiA9IGZhbHNlXG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgZm9ybSB0YWJsZSBzdHlsaW5nIHRvIGFsbG93IGZvcm0gY29udHJvbHMgaW5zaWRlIHRhYmxlIGNlbGxzLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1mb3JtLXRhYmxlJylcbiAgQElucHV0KCkgaXNGb3JtID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgc29ydCBmaWVsZCBhbmQgZGlyZWN0aW9uICgnZGVzYycgb3IgJ2FzYycpXG4gICAqL1xuICBASW5wdXQoKSBzb3J0PzogVGFibGVTb3J0IHwgVGFibGVTb3J0W107XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBuZXcgc29ydCB2YWx1ZSB3aGVuZXZlciBhIHNvcnRhYmxlIGNvbHVtbiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgc29ydENoYW5nZTogRXZlbnRFbWl0dGVyPFRhYmxlU29ydCB8IFRhYmxlU29ydFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogVHJ1ZSBpZiBhIFRhYmxlTWFzdGVyUm93Q29tcG9uZW50IGV4aXN0cyBpbiB0aGUgdGFibGUgY29udGVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1tYXN0ZXItZGV0YWlsJykgaGFzTWFzdGVyRGV0YWlsUm93cyA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFibGVNYXN0ZXJSb3dDb21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pIG1hc3RlclJvd3MhOiBRdWVyeUxpc3Q8VGFibGVNYXN0ZXJSb3dDb21wb25lbnQ+O1xuXG4gIHB1YmxpYyByZXNpemFibGVDb2x1bW5zITogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XG4gIEBDb250ZW50Q2hpbGRyZW4oUmVzaXphYmxlQ29sdW1uQ29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfcmVzaXphYmxlQ29sdW1ucyE6IFF1ZXJ5TGlzdDxSZXNpemFibGVDb2x1bW5Db21wb25lbnQ+O1xuXG4gIEBJbnB1dCgncmVzaXphYmxlQ29sdW1ucycpIHNlYXJjaGFibGVUYWJsZVJlc2l6YWJsZUNvbHVtbnM/OiBRdWVyeUxpc3Q8UmVzaXphYmxlQ29sdW1uQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogVW5saXN0ZW4gZnVuY3Rpb24gcmV0dXJuZWQgYnkgYHJlbmRlcmVyLmxpc3RlbigpYCB0aGF0IGFyZSBjYWxsZWRcbiAgICogT25EZXN0cm95IHRvIGNsZWFuIHVwIGFsbCBsaXN0ZW5lcnNcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG4gIFxuICAvKiogVGhlIGN1cnJlbnQgc29ydCB2YWx1ZSAqL1xuICBwcml2YXRlIGN1cnJlbnRTb3J0PzogVGFibGVTb3J0IHwgVGFibGVTb3J0W107XG4gIFxuICAvKiogQSBtYXAgb2Ygc29ydGFibGUgYDx0aD5gIGVsZW1lbnRzICovXG4gIHByaXZhdGUgc29ydGFibGVDb2xzOiB7W2ZpZWxkOiBzdHJpbmddOiBIVE1MVGFibGVIZWFkZXJDZWxsRWxlbWVudH0gPSB7fTtcblxuICBwcml2YXRlIGRlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBlbDogRWxlbWVudFJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydGFibGUgJiYgY2hhbmdlcy5zb3J0ICYmIGNoYW5nZXMuc29ydC5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuc29ydC5maXJzdENoYW5nZSkge1xuICAgICAgY29uc3QgbmV3VmFsdWU6IFRhYmxlU29ydCB8IFRhYmxlU29ydFtdID0gY2hhbmdlcy5zb3J0LmN1cnJlbnRWYWx1ZTtcbiAgICAgIGlmICghdGhpcy5jdXJyZW50U29ydCB8fCAhaXNFcXVhbChuZXdWYWx1ZSwgdGhpcy5jdXJyZW50U29ydCkpe1xuICAgICAgICB0aGlzLm9uU29ydChuZXdWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaGFzTWFzdGVyRGV0YWlsUm93cyA9ICEhdGhpcy5tYXN0ZXJSb3dzLmxlbmd0aDtcbiAgICBcbiAgICB0aGlzLm1hc3RlclJvd3MuY2hhbmdlcy5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuaGFzTWFzdGVyRGV0YWlsUm93cyA9ICEhdGhpcy5tYXN0ZXJSb3dzLmxlbmd0aDtcbiAgICB9KTtcblxuICAgIHRoaXMucmVzaXphYmxlQ29sdW1ucyA9IHRoaXMuc2VhcmNoYWJsZVRhYmxlUmVzaXphYmxlQ29sdW1ucyB8fCB0aGlzLl9yZXNpemFibGVDb2x1bW5zO1xuICB9XG4gIFxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydGFibGUpIHtcbiAgICAgIHRoaXMuaW5pdFNvcnRhYmxlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5pbml0U2VsZWN0YWJsZSgpO1xuICAgIH1cbiAgfVxuICBcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudW5saXN0ZW5lcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVubGlzdGVuZXJzLmZvckVhY2godW5saXN0ZW4gPT4gdW5saXN0ZW4oKSk7XG4gICAgfVxuICAgIFxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgZWxlbWVudHMgaW5zaWRlIHRoZSBob3N0IGVsZW1lbnQgdGhhdCBtYXRjaCBhIHNlbGVjdG9yIFxuICAgKiBAcGFyYW0gc2VsZWN0b3IgLSBBbnkgdmFsaWQgc2VsZWN0b3IgZm9yIFtxdWVyeVNlbGVjdG9yQWxsXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRG9jdW1lbnQvcXVlcnlTZWxlY3RvckFsbClcbiAgICovXG4gIHByaXZhdGUgcXVlcnlFbGVtZW50czxUPihzZWxlY3Rvcjogc3RyaW5nKTogVFtdIHtcbiAgICBjb25zdCB0YWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgYSBgPHRoPmAgZm9yIGVhY2ggc29ydGFibGUgY29sdW1uIGFuZCBhdHRhY2ggYSBjbGlja1xuICAgKiBldmVudCBsaXN0ZW5lci4gXG4gICAqL1xuICBwcml2YXRlIGluaXRTb3J0YWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5RWxlbWVudHM8SFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnQ+KCd0aCcpLmZvckVhY2godGggPT4ge1xuICAgICAgaWYgKHRoLmhhc0F0dHJpYnV0ZSgnZGF0YS1zb3J0ZmllbGQnKSkge1xuICAgICAgICBcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc29ydGZpZWxkJyk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgIHRoaXMuc29ydGFibGVDb2xzW2ZpZWxkXSA9IHRoO1xuICAgICAgICAgIGNvbnN0IHVubGlzdGVuID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGgsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuXG4gICAgICAgICAgICAvLyBEbyBub3Qgc29ydCBpZiB0aGUgZXZlbnQgdGFyZ2V0IHdhcyB0aGUgcmVzaXphYmxlIGhhbmRsZVxuICAgICAgICAgICAgaWYgKHRoLmNsYXNzTGlzdC5jb250YWlucygnaXMtcmVzaXphYmxlJykgJiYgZXZlbnQudGFyZ2V0ICYmICg8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5jbGFzc0xpc3QuY29udGFpbnMoJ2hhbmRsZScpKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGRpcmVjdGlvbjogVGFibGVTb3J0RGlyZWN0aW9uO1xuXG4gICAgICAgICAgICBpZiAodGguY2xhc3NMaXN0LmNvbnRhaW5zKCdpcy1zb3J0ZWQtZGVzYycpKSB7XG4gICAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdhc2MnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGlyZWN0aW9uID0gJ2Rlc2MnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uU29ydCh7IGZpZWxkLCBkaXJlY3Rpb24gfSk7XG4gICAgICAgICAgfSk7XG4gIFxuICAgICAgICAgIC8vIFN0b3JlIHVubGlzdGVuIGZ1bmN0aW9uIHRvIHJlbW92ZSBsaXN0ZW5lciB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICAgICAgICB0aGlzLnVubGlzdGVuZXJzLnB1c2godW5saXN0ZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYGRhdGEtc29ydGZpZWxkIGF0dHJpYnV0ZSB3YXMgbm90IGFzc2lnbmVkIGEgdmFsdWUuYCwgdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTZXQgdGhlIGluaXRpYWwgc29ydFxuICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgIHRoaXMub25Tb3J0KHRoaXMuc29ydCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIHNvcnRlZCBjb2x1bW4gYW5kIGFwcGx5IHRoZSBkZXNjIG9yIGFzYyBjbGFzcyBpbiBvcmRlclxuICAgKiB0byBzaG93IHRoZSBjb3JyZWN0IHNvcnQgaWNvbi4gSWYgYW5vdGhlciBmaWVsZCB3YXMgc29ydGVkLCByZXNldCBpdC5cbiAgICogRW1pdCB0aGUgY3VycmVudCBmaWVsZCBhbmQgZGlyZWN0aW9uIG9mIHRoZSBzb3J0ZWQgY29sdW1uXG4gICAqIEBwYXJhbSBmaWVsZCBcbiAgICovXG4gIHByaXZhdGUgb25Tb3J0KHNvcnQ6IFRhYmxlU29ydCB8IFRhYmxlU29ydFtdKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclNvcnQoKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHNvcnQpKSB7XG4gICAgICBzb3J0LmZvckVhY2gocyA9PiB0aGlzLmFwcGx5U29ydChzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwbHlTb3J0KHNvcnQpO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFNvcnQgPSBjbG9uZURlZXAoc29ydCk7XG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQodGhpcy5jdXJyZW50U29ydCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyU29ydCgpIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuc29ydGFibGVDb2xzKS5mb3JFYWNoKHRoID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGgsIGBpcy1zb3J0ZWQtYXNjYCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoLCBgaXMtc29ydGVkLWRlc2NgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTb3J0KHNvcnQ6IFRhYmxlU29ydCkge1xuICAgIGNvbnN0IHRoID0gdGhpcy5zb3J0YWJsZUNvbHNbc29ydC5maWVsZF07XG4gICAgaWYgKCF0aCkgeyByZXR1cm47IH1cblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGgsIGBpcy1zb3J0ZWQtJHtzb3J0LmRpcmVjdGlvbn1gKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNlbGVjdGFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25Db250ZXh0IS5yb3dDaGVja2JveGVzLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxuICAgICkuc3Vic2NyaWJlKCh2YWx1ZTogYm9vbGVhbltdKSA9PiB7XG4gICAgICB0aGlzLmhhc1NlbGVjdGlvbiA9IHZhbHVlLnNvbWUodiA9PiB2KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiQGlmIChoZWFkZXJUaXRsZVRlbXBsYXRlKSB7XG48aGVhZGVyIGNsYXNzPVwidGFibGUtdGl0bGVcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvaGVhZGVyPlxufVxuXG48ZGl2IGNsYXNzPVwic2VsZWN0YWJsZS10YWJsZS10b29sYmFyXCJcbiAgICAgKm5nSWY9XCJoYXNTZWxlY3Rpb24gJiYgc2VsZWN0aW9uVG9vbGJhclRlbXBsYXRlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGlkPVwie3tpZH19LXNjcm9sbC1jb250YWluZXJcIiBcbiAgICAgY2xhc3M9XCJ0YWJsZS1zY3JvbGwtY29udGFpbmVyXCJcbiAgICAgY2RrU2Nyb2xsYWJsZT5cbiAgPHRhYmxlIGNsYXNzPVwibWFpbi10YWJsZVwiXG4gICAgICAgICBpZD1cInt7aWR9fVwiXG4gICAgICAgICBbZWNSZXNpemFibGVUYWJsZV09XCJyZXNpemFibGVcIlxuICAgICAgICAgW2NvbnRhaW5lckVsXT1cImVsXCJcbiAgICAgICAgIFtzb3J0YWJsZVRhYmxlXT1cInNvcnRhYmxlXCJcbiAgICAgICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInJlc2l6YWJsZUNvbHVtbnNcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==
|