cps-ui-kit 0.135.0 → 0.136.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +3 -3
- package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +3 -3
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +3 -3
- package/esm2020/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +79 -0
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +344 -0
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +120 -0
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +3 -3
- package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +2 -2
- package/esm2020/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +5 -3
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +3 -3
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +3 -3
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +279 -110
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +2 -2
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +4 -3
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +2 -1
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +2 -1
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +2 -1
- package/fesm2015/cps-ui-kit.mjs +529 -325
- package/fesm2015/cps-ui-kit.mjs.map +1 -1
- package/fesm2020/cps-ui-kit.mjs +520 -321
- package/fesm2020/cps-ui-kit.mjs.map +1 -1
- package/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.d.ts +24 -0
- package/lib/components/cps-table/{table-column-filter → components/internal/table-column-filter}/table-column-filter.component.d.ts +6 -3
- package/lib/components/cps-table/{table-column-filter → components/internal}/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +3 -3
- package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-sortable.directive.d.ts +3 -2
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +22 -14
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.d.ts +2 -2
- package/package.json +1 -1
- package/styles/_colors.scss +2 -0
- package/esm2020/lib/components/cps-table/table-column-filter/table-column-filter-constraint/table-column-filter-constraint.component.mjs +0 -120
- package/esm2020/lib/components/cps-table/table-column-filter/table-column-filter.component.mjs +0 -322
- package/esm2020/lib/components/cps-tree-table/tree-table-sort-icon/tree-table-sort-icon.component.mjs +0 -71
- package/lib/components/cps-tree-table/tree-table-sort-icon/tree-table-sort-icon.component.d.ts +0 -21
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { Component, HostListener, Input, Optional, ViewChild, ViewChildren } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { FilterOperator } from 'primeng/api';
|
|
5
|
+
import { Table } from 'primeng/table';
|
|
6
|
+
import { CpsColumnFilterMatchMode } from '../../../cps-column-filter-types';
|
|
7
|
+
import { CpsButtonComponent } from '../../../../cps-button/cps-button.component';
|
|
8
|
+
import { CpsMenuComponent } from '../../../../cps-menu/cps-menu.component';
|
|
9
|
+
import { CpsIconComponent } from '../../../../cps-icon/cps-icon.component';
|
|
10
|
+
import { CpsSelectComponent } from '../../../../cps-select/cps-select.component';
|
|
11
|
+
import { TableColumnFilterConstraintComponent } from '../table-column-filter-constraint/table-column-filter-constraint.component';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "primeng/table";
|
|
14
|
+
import * as i2 from "primeng/treetable";
|
|
15
|
+
import * as i3 from "@angular/common";
|
|
16
|
+
import * as i4 from "@angular/forms";
|
|
17
|
+
export class TableColumnFilterComponent {
|
|
18
|
+
get isCategoryDropdownOpened() {
|
|
19
|
+
if (this.type !== 'category')
|
|
20
|
+
return false;
|
|
21
|
+
return this.constraintCompList?.first?.isCategoryDropdownOpened || false;
|
|
22
|
+
}
|
|
23
|
+
constructor(elementRef, dt, tt) {
|
|
24
|
+
this.elementRef = elementRef;
|
|
25
|
+
this.dt = dt;
|
|
26
|
+
this.tt = tt;
|
|
27
|
+
this.type = 'text';
|
|
28
|
+
this.persistent = false;
|
|
29
|
+
this.showClearButton = true;
|
|
30
|
+
this.showApplyButton = true;
|
|
31
|
+
this.showCloseButton = false;
|
|
32
|
+
this.showMatchModes = true;
|
|
33
|
+
this.matchModes = [];
|
|
34
|
+
this.showOperator = true;
|
|
35
|
+
this.maxConstraints = 2;
|
|
36
|
+
this.headerTitle = '';
|
|
37
|
+
this.hideOnClear = false;
|
|
38
|
+
this.categoryOptions = [];
|
|
39
|
+
this.asButtonToggle = false; // for category type only
|
|
40
|
+
this.singleSelection = false; // for category type only
|
|
41
|
+
this.placeholder = '';
|
|
42
|
+
this.operator = FilterOperator.AND;
|
|
43
|
+
this.operatorOptions = [
|
|
44
|
+
{ label: 'Match All', value: FilterOperator.AND, info: 'AND' },
|
|
45
|
+
{ label: 'Match Any', value: FilterOperator.OR, info: 'OR' }
|
|
46
|
+
];
|
|
47
|
+
this.matchModeLabels = {
|
|
48
|
+
startsWith: 'Starts with',
|
|
49
|
+
contains: 'Contains',
|
|
50
|
+
notContains: 'Does not contain',
|
|
51
|
+
endsWith: 'Ends with',
|
|
52
|
+
equals: 'Equals',
|
|
53
|
+
notEquals: 'Does not equal',
|
|
54
|
+
lt: 'Less than',
|
|
55
|
+
lte: 'Less than or equal to',
|
|
56
|
+
gt: 'Greater than',
|
|
57
|
+
gte: 'Greater than or equal to',
|
|
58
|
+
dateIs: 'Date is',
|
|
59
|
+
dateIsNot: 'Date is not',
|
|
60
|
+
dateBefore: 'Date is before',
|
|
61
|
+
dateAfter: 'Date is after'
|
|
62
|
+
};
|
|
63
|
+
this.filterMatchModeOptions = {
|
|
64
|
+
text: [
|
|
65
|
+
CpsColumnFilterMatchMode.STARTS_WITH,
|
|
66
|
+
CpsColumnFilterMatchMode.CONTAINS,
|
|
67
|
+
CpsColumnFilterMatchMode.NOT_CONTAINS,
|
|
68
|
+
CpsColumnFilterMatchMode.ENDS_WITH,
|
|
69
|
+
CpsColumnFilterMatchMode.EQUALS,
|
|
70
|
+
CpsColumnFilterMatchMode.NOT_EQUALS
|
|
71
|
+
],
|
|
72
|
+
number: [
|
|
73
|
+
CpsColumnFilterMatchMode.EQUALS,
|
|
74
|
+
CpsColumnFilterMatchMode.NOT_EQUALS,
|
|
75
|
+
CpsColumnFilterMatchMode.LESS_THAN,
|
|
76
|
+
CpsColumnFilterMatchMode.LESS_THAN_OR_EQUAL_TO,
|
|
77
|
+
CpsColumnFilterMatchMode.GREATER_THAN,
|
|
78
|
+
CpsColumnFilterMatchMode.GREATER_THAN_OR_EQUAL_TO
|
|
79
|
+
],
|
|
80
|
+
date: [
|
|
81
|
+
CpsColumnFilterMatchMode.DATE_IS,
|
|
82
|
+
CpsColumnFilterMatchMode.DATE_IS_NOT,
|
|
83
|
+
CpsColumnFilterMatchMode.DATE_BEFORE,
|
|
84
|
+
CpsColumnFilterMatchMode.DATE_AFTER
|
|
85
|
+
]
|
|
86
|
+
};
|
|
87
|
+
this.isFilterApplied = false;
|
|
88
|
+
this._tableInstance = dt || tt;
|
|
89
|
+
}
|
|
90
|
+
ngOnInit() {
|
|
91
|
+
if (this.matchModes.length > 0) {
|
|
92
|
+
this.filterMatchModeOptions[this.type] = this.matchModes;
|
|
93
|
+
}
|
|
94
|
+
this._tableInstance?.onFilter?.subscribe((value) => this._updateFilterApplied(value));
|
|
95
|
+
if (!this._tableInstance.filters[this.field]) {
|
|
96
|
+
this._initFieldFilterConstraint();
|
|
97
|
+
}
|
|
98
|
+
if (this.maxConstraints > 1 && this.type !== 'category') {
|
|
99
|
+
this.showApplyButton = true;
|
|
100
|
+
}
|
|
101
|
+
if (this.type === 'boolean') {
|
|
102
|
+
this.showApplyButton = false;
|
|
103
|
+
}
|
|
104
|
+
this.currentMatchModes = this.filterMatchModeOptions[this.type]?.map((key) => {
|
|
105
|
+
return { label: this.matchModeLabels[key], value: key };
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
_updateFilterApplied(value) {
|
|
109
|
+
const fieldFilter = value.filters[this.field];
|
|
110
|
+
if (fieldFilter) {
|
|
111
|
+
if (Array.isArray(fieldFilter)) {
|
|
112
|
+
this.isFilterApplied = fieldFilter.some((meta) => !this._tableInstance.isFilterBlank(meta.value));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
this.isFilterApplied = !this._tableInstance.isFilterBlank(fieldFilter.value);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.isFilterApplied = false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
_initFieldFilterConstraint() {
|
|
123
|
+
const defaultMatchMode = this.getDefaultMatchMode();
|
|
124
|
+
if (this._tableInstance instanceof Table) {
|
|
125
|
+
this._tableInstance.filters[this.field] = [
|
|
126
|
+
{
|
|
127
|
+
value: null,
|
|
128
|
+
matchMode: defaultMatchMode,
|
|
129
|
+
operator: this.operator
|
|
130
|
+
}
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this._tableInstance.filters[this.field] = {
|
|
135
|
+
value: null,
|
|
136
|
+
matchMode: defaultMatchMode
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
onCloseClick() {
|
|
141
|
+
this.hide();
|
|
142
|
+
}
|
|
143
|
+
onMenuMatchModeChange(value, filterMeta) {
|
|
144
|
+
filterMeta.matchMode = value;
|
|
145
|
+
if (!this.showApplyButton) {
|
|
146
|
+
this._tableInstance._filter();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
addConstraint() {
|
|
150
|
+
this._tableInstance.filters[this.field].push({
|
|
151
|
+
value: null,
|
|
152
|
+
matchMode: this.getDefaultMatchMode(),
|
|
153
|
+
operator: this.getDefaultOperator()
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
removeConstraint(filterMeta) {
|
|
157
|
+
this._tableInstance.filters[this.field] = (this._tableInstance.filters[this.field]).filter((meta) => meta !== filterMeta);
|
|
158
|
+
this._tableInstance._filter();
|
|
159
|
+
}
|
|
160
|
+
onOperatorChange(value) {
|
|
161
|
+
this._tableInstance.filters[this.field].forEach((filterMeta) => {
|
|
162
|
+
filterMeta.operator = value;
|
|
163
|
+
this.operator = value;
|
|
164
|
+
});
|
|
165
|
+
if (!this.showApplyButton) {
|
|
166
|
+
this._tableInstance._filter();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
getDefaultMatchMode() {
|
|
170
|
+
const getMatchMode = (val) => {
|
|
171
|
+
if (this.type in this.filterMatchModeOptions) {
|
|
172
|
+
return this.filterMatchModeOptions[this.type].includes(val)
|
|
173
|
+
? val
|
|
174
|
+
: this.filterMatchModeOptions[this.type][0];
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
return val;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
switch (this.type) {
|
|
181
|
+
case 'text':
|
|
182
|
+
return getMatchMode(CpsColumnFilterMatchMode.STARTS_WITH);
|
|
183
|
+
case 'number':
|
|
184
|
+
return getMatchMode(CpsColumnFilterMatchMode.EQUALS);
|
|
185
|
+
case 'date':
|
|
186
|
+
return getMatchMode(CpsColumnFilterMatchMode.DATE_IS);
|
|
187
|
+
case 'category':
|
|
188
|
+
return this.singleSelection
|
|
189
|
+
? CpsColumnFilterMatchMode.IS
|
|
190
|
+
: CpsColumnFilterMatchMode.IN;
|
|
191
|
+
default:
|
|
192
|
+
return getMatchMode(CpsColumnFilterMatchMode.CONTAINS);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
getDefaultOperator() {
|
|
196
|
+
return this._tableInstance.filters
|
|
197
|
+
? (this._tableInstance.filters[this.field])[0].operator
|
|
198
|
+
: this.operator;
|
|
199
|
+
}
|
|
200
|
+
get fieldConstraints() {
|
|
201
|
+
if (this._tableInstance instanceof Table) {
|
|
202
|
+
return this._tableInstance.filters
|
|
203
|
+
? this._tableInstance.filters[this.field]
|
|
204
|
+
: null;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
return this._tableInstance.filters
|
|
208
|
+
? [this._tableInstance.filters[this.field]]
|
|
209
|
+
: null;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
get showRemoveIcon() {
|
|
213
|
+
return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;
|
|
214
|
+
}
|
|
215
|
+
get isShowOperator() {
|
|
216
|
+
return (this.showOperator &&
|
|
217
|
+
this.maxConstraints > 1 &&
|
|
218
|
+
!['boolean', 'category'].includes(this.type));
|
|
219
|
+
}
|
|
220
|
+
get isShowAddConstraint() {
|
|
221
|
+
return (!['boolean', 'category'].includes(this.type) &&
|
|
222
|
+
this.fieldConstraints &&
|
|
223
|
+
this.fieldConstraints.length < this.maxConstraints);
|
|
224
|
+
}
|
|
225
|
+
hide() {
|
|
226
|
+
this.columnFilterMenu.hide();
|
|
227
|
+
}
|
|
228
|
+
clearFilter() {
|
|
229
|
+
this._initFieldFilterConstraint();
|
|
230
|
+
this._tableInstance._filter();
|
|
231
|
+
if (this.hideOnClear)
|
|
232
|
+
this.hide();
|
|
233
|
+
}
|
|
234
|
+
clearFilterValues() {
|
|
235
|
+
this._initFieldFilterConstraint();
|
|
236
|
+
this.isFilterApplied = false;
|
|
237
|
+
}
|
|
238
|
+
applyFilter() {
|
|
239
|
+
this._tableInstance._filter();
|
|
240
|
+
this.hide();
|
|
241
|
+
}
|
|
242
|
+
onMenuShown() {
|
|
243
|
+
const parent = this.elementRef?.nativeElement?.parentElement;
|
|
244
|
+
const className = 'cps-table-col-filter-menu-open';
|
|
245
|
+
parent.classList.add(className);
|
|
246
|
+
}
|
|
247
|
+
onBeforeMenuHidden() {
|
|
248
|
+
if (!this.isFilterApplied)
|
|
249
|
+
this._initFieldFilterConstraint();
|
|
250
|
+
}
|
|
251
|
+
onMenuHidden() {
|
|
252
|
+
const parent = this.elementRef?.nativeElement?.parentElement;
|
|
253
|
+
const className = 'cps-table-col-filter-menu-open';
|
|
254
|
+
parent.classList.remove(className);
|
|
255
|
+
}
|
|
256
|
+
onClick(event) {
|
|
257
|
+
event.stopPropagation();
|
|
258
|
+
}
|
|
259
|
+
_updateSortIconColor(color) {
|
|
260
|
+
const unsortedUp = this.elementRef?.nativeElement?.parentElement?.querySelector('.sort-unsorted-arrow-up');
|
|
261
|
+
if (unsortedUp) {
|
|
262
|
+
unsortedUp.style.borderBottomColor = color;
|
|
263
|
+
}
|
|
264
|
+
const unsortedDown = this.elementRef?.nativeElement?.parentElement?.querySelector('.sort-unsorted-arrow-down');
|
|
265
|
+
if (unsortedDown) {
|
|
266
|
+
unsortedDown.style.borderTopColor = color;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
onMouseOver() {
|
|
270
|
+
this._updateSortIconColor('var(--cps-color-line-dark)');
|
|
271
|
+
}
|
|
272
|
+
onMouseLeave() {
|
|
273
|
+
this._updateSortIconColor('');
|
|
274
|
+
}
|
|
275
|
+
ngOnDestroy() {
|
|
276
|
+
this._tableInstance?.onFilter?.unsubscribe();
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
TableColumnFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableColumnFilterComponent, deps: [{ token: i0.ElementRef }, { token: i1.Table, optional: true }, { token: i2.TreeTable, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
280
|
+
TableColumnFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: TableColumnFilterComponent, isStandalone: true, selector: "table-column-filter", inputs: { field: "field", type: "type", persistent: "persistent", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showCloseButton: "showCloseButton", showMatchModes: "showMatchModes", matchModes: "matchModes", showOperator: "showOperator", maxConstraints: "maxConstraints", headerTitle: "headerTitle", hideOnClear: "hideOnClear", categoryOptions: "categoryOptions", asButtonToggle: "asButtonToggle", singleSelection: "singleSelection", placeholder: "placeholder" }, host: { listeners: { "click": "onClick($event)", "mouseenter": "onMouseOver()", "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "columnFilterMenu", first: true, predicate: ["columnFilterMenu"], descendants: true }, { propertyName: "constraintCompList", predicate: ["constraintComponent"], descendants: true }], ngImport: i0, template: "<div class=\"cps-table-col-filter\">\n <cps-menu\n #columnFilterMenu\n [withArrow]=\"false\"\n hideTransitionOptions=\"0s linear\"\n [persistent]=\"persistent || (showApplyButton && isCategoryDropdownOpened)\"\n (menuShown)=\"onMenuShown()\"\n (menuHidden)=\"onMenuHidden()\"\n (beforeMenuHidden)=\"onBeforeMenuHidden()\">\n <div class=\"cps-table-col-filter-menu-content\">\n <div\n class=\"cps-table-col-filter-menu-content-header\"\n *ngIf=\"showCloseButton || headerTitle\">\n <span class=\"cps-table-col-filter-menu-content-header-title\">\n {{ headerTitle }}\n </span>\n <cps-icon\n *ngIf=\"showCloseButton\"\n icon=\"close-x\"\n (click)=\"onCloseClick()\"></cps-icon>\n </div>\n <div\n class=\"cps-table-col-filter-menu-content-operator\"\n *ngIf=\"isShowOperator\">\n <cps-select\n [hideDetails]=\"true\"\n [disabled]=\"!fieldConstraints || fieldConstraints.length < 2\"\n [returnObject]=\"false\"\n [options]=\"operatorOptions\"\n [ngModel]=\"operator\"\n (valueChanged)=\"onOperatorChange($event)\"></cps-select>\n </div>\n <div class=\"cps-table-col-filter-menu-content-constraints\">\n <div\n *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\"\n class=\"cps-table-col-filter-menu-content-constraint\">\n <cps-select\n *ngIf=\"showMatchModes && currentMatchModes\"\n class=\"cps-table-col-filter-match-mode-select\"\n [hideDetails]=\"true\"\n [returnObject]=\"false\"\n [options]=\"currentMatchModes\"\n [ngModel]=\"fieldConstraint.matchMode\"\n (valueChanged)=\"\n onMenuMatchModeChange($event, fieldConstraint)\n \"></cps-select>\n <table-column-filter-constraint\n #constraintComponent\n [type]=\"type\"\n [field]=\"field\"\n [asButtonToggle]=\"asButtonToggle\"\n [singleSelection]=\"singleSelection\"\n [categoryOptions]=\"categoryOptions\"\n [filterConstraint]=\"fieldConstraint\"\n [hasApplyButton]=\"showApplyButton\"\n [placeholder]=\"placeholder\">\n </table-column-filter-constraint>\n <div\n class=\"cps-table-col-filter-remove-rule-btn\"\n *ngIf=\"showRemoveIcon\">\n <cps-button\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"prepared\"\n icon=\"delete\"\n (clicked)=\"removeConstraint(fieldConstraint)\"\n label=\"Remove condition\">\n </cps-button>\n </div>\n </div>\n </div>\n <div\n class=\"cps-table-col-filter-add-rule-btn\"\n *ngIf=\"isShowAddConstraint\">\n <cps-button\n label=\"Add condition\"\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"surprise\"\n icon=\"add\"\n (clicked)=\"addConstraint()\">\n </cps-button>\n </div>\n <div class=\"cps-table-col-filter-buttonbar\">\n <cps-button\n *ngIf=\"showClearButton\"\n (clicked)=\"clearFilter()\"\n type=\"borderless\"\n color=\"prepared\"\n size=\"small\"\n label=\"Clear\"></cps-button>\n <cps-button\n *ngIf=\"showApplyButton\"\n (clicked)=\"applyFilter()\"\n color=\"prepared\"\n size=\"small\"\n label=\"Apply\"></cps-button>\n </div>\n </div>\n </cps-menu>\n <cps-icon\n [icon]=\"isFilterApplied ? 'filter-funnel-filled' : 'filter-funnel'\"\n size=\"13\"\n (click)=\"columnFilterMenu.toggle($event)\"\n class=\"cps-table-col-filter-menu-button\"\n [ngClass]=\"{\n 'cps-table-col-filter-menu-button-active': isFilterApplied\n }\"\n >>\n </cps-icon>\n</div>\n", styles: [":host .cps-table-col-filter{display:inline-flex}:host .cps-table-col-filter .cps-table-col-filter-menu-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative;padding-left:8px;padding-right:4px}:host .cps-table-col-filter .cps-table-col-filter-menu-button:not(.cps-table-col-filter-menu-button-active):hover{color:var(--cps-color-text-dark)}:host .cps-table-col-filter .cps-table-col-filter-menu-button-active{color:var(--cps-color-calm-lighten1)}.cps-table-col-filter-menu-content{padding-bottom:12px;min-width:200px;max-height:500px;overflow:auto}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header{min-height:32px;padding:8px;border-bottom:1px solid var(--cps-color-line-mid);background:var(--cps-color-bg-light);display:flex;justify-content:space-between;align-items:center}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header-title{font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-darkest);max-width:390px;cursor:default}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header cps-icon{margin-left:8px;cursor:pointer}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header cps-icon:hover{color:var(--cps-color-calm)}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-operator{padding:12px;border-bottom:1px solid var(--cps-color-line-mid);background:var(--cps-color-bg-light)}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint{border-bottom:1px solid var(--cps-color-line-mid);padding:12px}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint .cps-table-col-filter-match-mode-select{margin-bottom:8px}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint:last-child{border-bottom:none}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-remove-rule-btn{padding-top:8px}.cps-table-col-filter-menu-content .cps-table-col-filter-add-rule-btn{padding:8px 12px}.cps-table-col-filter-menu-content .cps-table-col-filter-buttonbar{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CpsButtonComponent, selector: "cps-button", inputs: ["color", "contentColor", "type", "label", "icon", "iconPosition", "size", "width", "height", "disabled", "loading"], outputs: ["clicked"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "value"], outputs: ["valueChanged"] }, { kind: "component", type: TableColumnFilterConstraintComponent, selector: "table-column-filter-constraint", inputs: ["type", "field", "filterConstraint", "categoryOptions", "asButtonToggle", "singleSelection", "placeholder", "hasApplyButton"] }] });
|
|
281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableColumnFilterComponent, decorators: [{
|
|
282
|
+
type: Component,
|
|
283
|
+
args: [{ selector: 'table-column-filter', standalone: true, imports: [
|
|
284
|
+
CommonModule,
|
|
285
|
+
FormsModule,
|
|
286
|
+
CpsButtonComponent,
|
|
287
|
+
CpsMenuComponent,
|
|
288
|
+
CpsIconComponent,
|
|
289
|
+
CpsSelectComponent,
|
|
290
|
+
TableColumnFilterConstraintComponent
|
|
291
|
+
], template: "<div class=\"cps-table-col-filter\">\n <cps-menu\n #columnFilterMenu\n [withArrow]=\"false\"\n hideTransitionOptions=\"0s linear\"\n [persistent]=\"persistent || (showApplyButton && isCategoryDropdownOpened)\"\n (menuShown)=\"onMenuShown()\"\n (menuHidden)=\"onMenuHidden()\"\n (beforeMenuHidden)=\"onBeforeMenuHidden()\">\n <div class=\"cps-table-col-filter-menu-content\">\n <div\n class=\"cps-table-col-filter-menu-content-header\"\n *ngIf=\"showCloseButton || headerTitle\">\n <span class=\"cps-table-col-filter-menu-content-header-title\">\n {{ headerTitle }}\n </span>\n <cps-icon\n *ngIf=\"showCloseButton\"\n icon=\"close-x\"\n (click)=\"onCloseClick()\"></cps-icon>\n </div>\n <div\n class=\"cps-table-col-filter-menu-content-operator\"\n *ngIf=\"isShowOperator\">\n <cps-select\n [hideDetails]=\"true\"\n [disabled]=\"!fieldConstraints || fieldConstraints.length < 2\"\n [returnObject]=\"false\"\n [options]=\"operatorOptions\"\n [ngModel]=\"operator\"\n (valueChanged)=\"onOperatorChange($event)\"></cps-select>\n </div>\n <div class=\"cps-table-col-filter-menu-content-constraints\">\n <div\n *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\"\n class=\"cps-table-col-filter-menu-content-constraint\">\n <cps-select\n *ngIf=\"showMatchModes && currentMatchModes\"\n class=\"cps-table-col-filter-match-mode-select\"\n [hideDetails]=\"true\"\n [returnObject]=\"false\"\n [options]=\"currentMatchModes\"\n [ngModel]=\"fieldConstraint.matchMode\"\n (valueChanged)=\"\n onMenuMatchModeChange($event, fieldConstraint)\n \"></cps-select>\n <table-column-filter-constraint\n #constraintComponent\n [type]=\"type\"\n [field]=\"field\"\n [asButtonToggle]=\"asButtonToggle\"\n [singleSelection]=\"singleSelection\"\n [categoryOptions]=\"categoryOptions\"\n [filterConstraint]=\"fieldConstraint\"\n [hasApplyButton]=\"showApplyButton\"\n [placeholder]=\"placeholder\">\n </table-column-filter-constraint>\n <div\n class=\"cps-table-col-filter-remove-rule-btn\"\n *ngIf=\"showRemoveIcon\">\n <cps-button\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"prepared\"\n icon=\"delete\"\n (clicked)=\"removeConstraint(fieldConstraint)\"\n label=\"Remove condition\">\n </cps-button>\n </div>\n </div>\n </div>\n <div\n class=\"cps-table-col-filter-add-rule-btn\"\n *ngIf=\"isShowAddConstraint\">\n <cps-button\n label=\"Add condition\"\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"surprise\"\n icon=\"add\"\n (clicked)=\"addConstraint()\">\n </cps-button>\n </div>\n <div class=\"cps-table-col-filter-buttonbar\">\n <cps-button\n *ngIf=\"showClearButton\"\n (clicked)=\"clearFilter()\"\n type=\"borderless\"\n color=\"prepared\"\n size=\"small\"\n label=\"Clear\"></cps-button>\n <cps-button\n *ngIf=\"showApplyButton\"\n (clicked)=\"applyFilter()\"\n color=\"prepared\"\n size=\"small\"\n label=\"Apply\"></cps-button>\n </div>\n </div>\n </cps-menu>\n <cps-icon\n [icon]=\"isFilterApplied ? 'filter-funnel-filled' : 'filter-funnel'\"\n size=\"13\"\n (click)=\"columnFilterMenu.toggle($event)\"\n class=\"cps-table-col-filter-menu-button\"\n [ngClass]=\"{\n 'cps-table-col-filter-menu-button-active': isFilterApplied\n }\"\n >>\n </cps-icon>\n</div>\n", styles: [":host .cps-table-col-filter{display:inline-flex}:host .cps-table-col-filter .cps-table-col-filter-menu-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative;padding-left:8px;padding-right:4px}:host .cps-table-col-filter .cps-table-col-filter-menu-button:not(.cps-table-col-filter-menu-button-active):hover{color:var(--cps-color-text-dark)}:host .cps-table-col-filter .cps-table-col-filter-menu-button-active{color:var(--cps-color-calm-lighten1)}.cps-table-col-filter-menu-content{padding-bottom:12px;min-width:200px;max-height:500px;overflow:auto}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header{min-height:32px;padding:8px;border-bottom:1px solid var(--cps-color-line-mid);background:var(--cps-color-bg-light);display:flex;justify-content:space-between;align-items:center}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header-title{font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-darkest);max-width:390px;cursor:default}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header cps-icon{margin-left:8px;cursor:pointer}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header cps-icon:hover{color:var(--cps-color-calm)}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-operator{padding:12px;border-bottom:1px solid var(--cps-color-line-mid);background:var(--cps-color-bg-light)}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint{border-bottom:1px solid var(--cps-color-line-mid);padding:12px}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint .cps-table-col-filter-match-mode-select{margin-bottom:8px}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint:last-child{border-bottom:none}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-remove-rule-btn{padding-top:8px}.cps-table-col-filter-menu-content .cps-table-col-filter-add-rule-btn{padding:8px 12px}.cps-table-col-filter-menu-content .cps-table-col-filter-buttonbar{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 0}\n"] }]
|
|
292
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Table, decorators: [{
|
|
293
|
+
type: Optional
|
|
294
|
+
}] }, { type: i2.TreeTable, decorators: [{
|
|
295
|
+
type: Optional
|
|
296
|
+
}] }]; }, propDecorators: { field: [{
|
|
297
|
+
type: Input
|
|
298
|
+
}], type: [{
|
|
299
|
+
type: Input
|
|
300
|
+
}], persistent: [{
|
|
301
|
+
type: Input
|
|
302
|
+
}], showClearButton: [{
|
|
303
|
+
type: Input
|
|
304
|
+
}], showApplyButton: [{
|
|
305
|
+
type: Input
|
|
306
|
+
}], showCloseButton: [{
|
|
307
|
+
type: Input
|
|
308
|
+
}], showMatchModes: [{
|
|
309
|
+
type: Input
|
|
310
|
+
}], matchModes: [{
|
|
311
|
+
type: Input
|
|
312
|
+
}], showOperator: [{
|
|
313
|
+
type: Input
|
|
314
|
+
}], maxConstraints: [{
|
|
315
|
+
type: Input
|
|
316
|
+
}], headerTitle: [{
|
|
317
|
+
type: Input
|
|
318
|
+
}], hideOnClear: [{
|
|
319
|
+
type: Input
|
|
320
|
+
}], categoryOptions: [{
|
|
321
|
+
type: Input
|
|
322
|
+
}], asButtonToggle: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], singleSelection: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], placeholder: [{
|
|
327
|
+
type: Input
|
|
328
|
+
}], constraintCompList: [{
|
|
329
|
+
type: ViewChildren,
|
|
330
|
+
args: ['constraintComponent']
|
|
331
|
+
}], columnFilterMenu: [{
|
|
332
|
+
type: ViewChild,
|
|
333
|
+
args: ['columnFilterMenu']
|
|
334
|
+
}], onClick: [{
|
|
335
|
+
type: HostListener,
|
|
336
|
+
args: ['click', ['$event']]
|
|
337
|
+
}], onMouseOver: [{
|
|
338
|
+
type: HostListener,
|
|
339
|
+
args: ['mouseenter']
|
|
340
|
+
}], onMouseLeave: [{
|
|
341
|
+
type: HostListener,
|
|
342
|
+
args: ['mouseleave']
|
|
343
|
+
}] } });
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFibGUvY29tcG9uZW50cy9pbnRlcm5hbC90YWJsZS1jb2x1bW4tZmlsdGVyL3RhYmxlLWNvbHVtbi1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2NvbXBvbmVudHMvaW50ZXJuYWwvdGFibGUtY29sdW1uLWZpbHRlci90YWJsZS1jb2x1bW4tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBRVIsU0FBUyxFQUNULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBa0IsY0FBYyxFQUFjLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEMsT0FBTyxFQUVMLHdCQUF3QixFQUV6QixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pG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QWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFHTixrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMscUJBQXFCO2dCQXVEbkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQWlPN0IsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFzQkwsV0FBVztzQkFBdEMsWUFBWTt1QkFBQyxZQUFZO2dCQUlFLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmlsdGVyTWV0YWRhdGEsIEZpbHRlck9wZXJhdG9yLCBTZWxlY3RJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcbmltcG9ydCB7XG4gIENwc0NvbHVtbkZpbHRlckNhdGVnb3J5T3B0aW9uLFxuICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUsXG4gIENwc0NvbHVtbkZpbHRlclR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vY3BzLWNvbHVtbi1maWx0ZXItdHlwZXMnO1xuaW1wb3J0IHsgQ3BzQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY3BzLWJ1dHRvbi9jcHMtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0ljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbkZpbHRlckNvbnN0cmFpbnRDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1jb2x1bW4tZmlsdGVyLWNvbnN0cmFpbnQvdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RhYmxlLWNvbHVtbi1maWx0ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENwc0J1dHRvbkNvbXBvbmVudCxcbiAgICBDcHNNZW51Q29tcG9uZW50LFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzU2VsZWN0Q29tcG9uZW50LFxuICAgIFRhYmxlQ29sdW1uRmlsdGVyQ29uc3RyYWludENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY29sdW1uLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWNvbHVtbi1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbkZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgdHlwZTogQ3BzQ29sdW1uRmlsdGVyVHlwZSA9ICd0ZXh0JztcbiAgQElucHV0KCkgcGVyc2lzdGVudCA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Q2xlYXJCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93QXBwbHlCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93Q2xvc2VCdXR0b24gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd01hdGNoTW9kZXMgPSB0cnVlO1xuICBASW5wdXQoKSBtYXRjaE1vZGVzOiBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGVbXSA9IFtdO1xuICBASW5wdXQoKSBzaG93T3BlcmF0b3IgPSB0cnVlO1xuICBASW5wdXQoKSBtYXhDb25zdHJhaW50cyA9IDI7XG4gIEBJbnB1dCgpIGhlYWRlclRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIGhpZGVPbkNsZWFyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhdGVnb3J5T3B0aW9uczogQ3BzQ29sdW1uRmlsdGVyQ2F0ZWdvcnlPcHRpb25bXSB8IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KCkgYXNCdXR0b25Ub2dnbGUgPSBmYWxzZTsgLy8gZm9yIGNhdGVnb3J5IHR5cGUgb25seVxuICBASW5wdXQoKSBzaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTsgLy8gZm9yIGNhdGVnb3J5IHR5cGUgb25seVxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2NvbnN0cmFpbnRDb21wb25lbnQnKVxuICBjb25zdHJhaW50Q29tcExpc3QhOiBRdWVyeUxpc3Q8VGFibGVDb2x1bW5GaWx0ZXJDb25zdHJhaW50Q29tcG9uZW50PjtcblxuICBvcGVyYXRvcjogc3RyaW5nID0gRmlsdGVyT3BlcmF0b3IuQU5EO1xuXG4gIG9wZXJhdG9yT3B0aW9ucyA9IFtcbiAgICB7IGxhYmVsOiAnTWF0Y2ggQWxsJywgdmFsdWU6IEZpbHRlck9wZXJhdG9yLkFORCwgaW5mbzogJ0FORCcgfSxcbiAgICB7IGxhYmVsOiAnTWF0Y2ggQW55JywgdmFsdWU6IEZpbHRlck9wZXJhdG9yLk9SLCBpbmZvOiAnT1InIH1cbiAgXTtcblxuICBwcml2YXRlIG1hdGNoTW9kZUxhYmVscyA9IHtcbiAgICBzdGFydHNXaXRoOiAnU3RhcnRzIHdpdGgnLFxuICAgIGNvbnRhaW5zOiAnQ29udGFpbnMnLFxuICAgIG5vdENvbnRhaW5zOiAnRG9lcyBub3QgY29udGFpbicsXG4gICAgZW5kc1dpdGg6ICdFbmRzIHdpdGgnLFxuICAgIGVxdWFsczogJ0VxdWFscycsXG4gICAgbm90RXF1YWxzOiAnRG9lcyBub3QgZXF1YWwnLFxuICAgIGx0OiAnTGVzcyB0aGFuJyxcbiAgICBsdGU6ICdMZXNzIHRoYW4gb3IgZXF1YWwgdG8nLFxuICAgIGd0OiAnR3JlYXRlciB0aGFuJyxcbiAgICBndGU6ICdHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8nLFxuICAgIGRhdGVJczogJ0RhdGUgaXMnLFxuICAgIGRhdGVJc05vdDogJ0RhdGUgaXMgbm90JyxcbiAgICBkYXRlQmVmb3JlOiAnRGF0ZSBpcyBiZWZvcmUnLFxuICAgIGRhdGVBZnRlcjogJ0RhdGUgaXMgYWZ0ZXInXG4gIH0gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICBwcml2YXRlIGZpbHRlck1hdGNoTW9kZU9wdGlvbnMgPSB7XG4gICAgdGV4dDogW1xuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLlNUQVJUU19XSVRILFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkNPTlRBSU5TLFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLk5PVF9DT05UQUlOUyxcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5FTkRTX1dJVEgsXG4gICAgICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuRVFVQUxTLFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLk5PVF9FUVVBTFNcbiAgICBdLFxuICAgIG51bWJlcjogW1xuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkVRVUFMUyxcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5OT1RfRVFVQUxTLFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkxFU1NfVEhBTixcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU5fT1JfRVFVQUxfVE8sXG4gICAgICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuR1JFQVRFUl9USEFOLFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT1xuICAgIF0sXG4gICAgZGF0ZTogW1xuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkRBVEVfSVMsXG4gICAgICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuREFURV9JU19OT1QsXG4gICAgICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuREFURV9CRUZPUkUsXG4gICAgICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuREFURV9BRlRFUlxuICAgIF1cbiAgfSBhcyB7IFtrZXk6IHN0cmluZ106IENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZVtdIH07XG5cbiAgY3VycmVudE1hdGNoTW9kZXM6IFNlbGVjdEl0ZW1bXSB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdjb2x1bW5GaWx0ZXJNZW51JylcbiAgY29sdW1uRmlsdGVyTWVudSE6IENwc01lbnVDb21wb25lbnQ7XG5cbiAgX3RhYmxlSW5zdGFuY2U6IFRhYmxlIHwgVHJlZVRhYmxlO1xuXG4gIGlzRmlsdGVyQXBwbGllZCA9IGZhbHNlO1xuXG4gIGdldCBpc0NhdGVnb3J5RHJvcGRvd25PcGVuZWQoKSB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2NhdGVnb3J5JykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cmFpbnRDb21wTGlzdD8uZmlyc3Q/LmlzQ2F0ZWdvcnlEcm9wZG93bk9wZW5lZCB8fCBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBkdDogVGFibGUsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHR0OiBUcmVlVGFibGVcbiAgKSB7XG4gICAgdGhpcy5fdGFibGVJbnN0YW5jZSA9IGR0IHx8IHR0O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubWF0Y2hNb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmZpbHRlck1hdGNoTW9kZU9wdGlvbnNbdGhpcy50eXBlXSA9IHRoaXMubWF0Y2hNb2RlcztcbiAgICB9XG4gICAgdGhpcy5fdGFibGVJbnN0YW5jZT8ub25GaWx0ZXI/LnN1YnNjcmliZSgodmFsdWUpID0+XG4gICAgICB0aGlzLl91cGRhdGVGaWx0ZXJBcHBsaWVkKHZhbHVlKVxuICAgICk7XG4gICAgaWYgKCF0aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXSkge1xuICAgICAgdGhpcy5faW5pdEZpZWxkRmlsdGVyQ29uc3RyYWludCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1heENvbnN0cmFpbnRzID4gMSAmJiB0aGlzLnR5cGUgIT09ICdjYXRlZ29yeScpIHtcbiAgICAgIHRoaXMuc2hvd0FwcGx5QnV0dG9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuc2hvd0FwcGx5QnV0dG9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50TWF0Y2hNb2RlcyA9IHRoaXMuZmlsdGVyTWF0Y2hNb2RlT3B0aW9uc1t0aGlzLnR5cGVdPy5tYXAoXG4gICAgICAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgbGFiZWw6IHRoaXMubWF0Y2hNb2RlTGFiZWxzW2tleV0sIHZhbHVlOiBrZXkgfTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRmlsdGVyQXBwbGllZCh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgZmllbGRGaWx0ZXIgPSB2YWx1ZS5maWx0ZXJzWzxzdHJpbmc+dGhpcy5maWVsZF07XG4gICAgaWYgKGZpZWxkRmlsdGVyKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZEZpbHRlcikpIHtcbiAgICAgICAgdGhpcy5pc0ZpbHRlckFwcGxpZWQgPSAoPEZpbHRlck1ldGFkYXRhW10+ZmllbGRGaWx0ZXIpLnNvbWUoXG4gICAgICAgICAgKG1ldGEpID0+ICF0aGlzLl90YWJsZUluc3RhbmNlLmlzRmlsdGVyQmxhbmsobWV0YS52YWx1ZSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNGaWx0ZXJBcHBsaWVkID0gIXRoaXMuX3RhYmxlSW5zdGFuY2UuaXNGaWx0ZXJCbGFuayhcbiAgICAgICAgICBmaWVsZEZpbHRlci52YWx1ZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRmlsdGVyQXBwbGllZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRGaWVsZEZpbHRlckNvbnN0cmFpbnQoKSB7XG4gICAgY29uc3QgZGVmYXVsdE1hdGNoTW9kZSA9IHRoaXMuZ2V0RGVmYXVsdE1hdGNoTW9kZSgpO1xuICAgIGlmICh0aGlzLl90YWJsZUluc3RhbmNlIGluc3RhbmNlb2YgVGFibGUpIHtcbiAgICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1s8c3RyaW5nPnRoaXMuZmllbGRdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgbWF0Y2hNb2RlOiBkZWZhdWx0TWF0Y2hNb2RlLFxuICAgICAgICAgIG9wZXJhdG9yOiB0aGlzLm9wZXJhdG9yXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1s8c3RyaW5nPnRoaXMuZmllbGRdID0ge1xuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgbWF0Y2hNb2RlOiBkZWZhdWx0TWF0Y2hNb2RlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2VDbGljaygpIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIG9uTWVudU1hdGNoTW9kZUNoYW5nZSh2YWx1ZTogYW55LCBmaWx0ZXJNZXRhOiBGaWx0ZXJNZXRhZGF0YSkge1xuICAgIGZpbHRlck1ldGEubWF0Y2hNb2RlID0gdmFsdWU7XG5cbiAgICBpZiAoIXRoaXMuc2hvd0FwcGx5QnV0dG9uKSB7XG4gICAgICB0aGlzLl90YWJsZUluc3RhbmNlLl9maWx0ZXIoKTtcbiAgICB9XG4gIH1cblxuICBhZGRDb25zdHJhaW50KCkge1xuICAgICg8RmlsdGVyTWV0YWRhdGFbXT50aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXSkucHVzaCh7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIG1hdGNoTW9kZTogdGhpcy5nZXREZWZhdWx0TWF0Y2hNb2RlKCksXG4gICAgICBvcGVyYXRvcjogdGhpcy5nZXREZWZhdWx0T3BlcmF0b3IoKVxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlQ29uc3RyYWludChmaWx0ZXJNZXRhOiBGaWx0ZXJNZXRhZGF0YSkge1xuICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1s8c3RyaW5nPnRoaXMuZmllbGRdID0gKDxGaWx0ZXJNZXRhZGF0YVtdPihcbiAgICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1s8c3RyaW5nPnRoaXMuZmllbGRdXG4gICAgKSkuZmlsdGVyKChtZXRhKSA9PiBtZXRhICE9PSBmaWx0ZXJNZXRhKTtcbiAgICB0aGlzLl90YWJsZUluc3RhbmNlLl9maWx0ZXIoKTtcbiAgfVxuXG4gIG9uT3BlcmF0b3JDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgICg8RmlsdGVyTWV0YWRhdGFbXT50aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXSkuZm9yRWFjaChcbiAgICAgIChmaWx0ZXJNZXRhKSA9PiB7XG4gICAgICAgIGZpbHRlck1ldGEub3BlcmF0b3IgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vcGVyYXRvciA9IHZhbHVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuc2hvd0FwcGx5QnV0dG9uKSB7XG4gICAgICB0aGlzLl90YWJsZUluc3RhbmNlLl9maWx0ZXIoKTtcbiAgICB9XG4gIH1cblxuICBnZXREZWZhdWx0TWF0Y2hNb2RlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZ2V0TWF0Y2hNb2RlID0gKHZhbDogQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlKSA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlIGluIHRoaXMuZmlsdGVyTWF0Y2hNb2RlT3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJNYXRjaE1vZGVPcHRpb25zW3RoaXMudHlwZV0uaW5jbHVkZXModmFsKVxuICAgICAgICAgID8gdmFsXG4gICAgICAgICAgOiB0aGlzLmZpbHRlck1hdGNoTW9kZU9wdGlvbnNbdGhpcy50eXBlXVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgcmV0dXJuIGdldE1hdGNoTW9kZShDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuU1RBUlRTX1dJVEgpO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmV0dXJuIGdldE1hdGNoTW9kZShDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuRVFVQUxTKTtcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICByZXR1cm4gZ2V0TWF0Y2hNb2RlKENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5EQVRFX0lTKTtcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2luZ2xlU2VsZWN0aW9uXG4gICAgICAgICAgPyBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuSVNcbiAgICAgICAgICA6IENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5JTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRNYXRjaE1vZGUoQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkNPTlRBSU5TKTtcbiAgICB9XG4gIH1cblxuICBnZXREZWZhdWx0T3BlcmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGVJbnN0YW5jZS5maWx0ZXJzXG4gICAgICA/ICg8RmlsdGVyTWV0YWRhdGFbXT4oXG4gICAgICAgICAgdGhpcy5fdGFibGVJbnN0YW5jZS5maWx0ZXJzWzxzdHJpbmc+KDxzdHJpbmc+dGhpcy5maWVsZCldXG4gICAgICAgICkpWzBdLm9wZXJhdG9yXG4gICAgICA6IHRoaXMub3BlcmF0b3I7XG4gIH1cblxuICBnZXQgZmllbGRDb25zdHJhaW50cygpOiBGaWx0ZXJNZXRhZGF0YVtdIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuX3RhYmxlSW5zdGFuY2UgaW5zdGFuY2VvZiBUYWJsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1xuICAgICAgICA/IDxGaWx0ZXJNZXRhZGF0YVtdPnRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1s8c3RyaW5nPnRoaXMuZmllbGRdXG4gICAgICAgIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1xuICAgICAgICA/IDxGaWx0ZXJNZXRhZGF0YVtdPlt0aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXV1cbiAgICAgICAgOiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93UmVtb3ZlSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZENvbnN0cmFpbnRzID8gdGhpcy5maWVsZENvbnN0cmFpbnRzLmxlbmd0aCA+IDEgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc1Nob3dPcGVyYXRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zaG93T3BlcmF0b3IgJiZcbiAgICAgIHRoaXMubWF4Q29uc3RyYWludHMgPiAxICYmXG4gICAgICAhWydib29sZWFuJywgJ2NhdGVnb3J5J10uaW5jbHVkZXModGhpcy50eXBlKVxuICAgICk7XG4gIH1cblxuICBnZXQgaXNTaG93QWRkQ29uc3RyYWludCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIChcbiAgICAgICFbJ2Jvb2xlYW4nLCAnY2F0ZWdvcnknXS5pbmNsdWRlcyh0aGlzLnR5cGUpICYmXG4gICAgICB0aGlzLmZpZWxkQ29uc3RyYWludHMgJiZcbiAgICAgIHRoaXMuZmllbGRDb25zdHJhaW50cy5sZW5ndGggPCB0aGlzLm1heENvbnN0cmFpbnRzXG4gICAgKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJNZW51LmhpZGUoKTtcbiAgfVxuXG4gIGNsZWFyRmlsdGVyKCkge1xuICAgIHRoaXMuX2luaXRGaWVsZEZpbHRlckNvbnN0cmFpbnQoKTtcbiAgICB0aGlzLl90YWJsZUluc3RhbmNlLl9maWx0ZXIoKTtcbiAgICBpZiAodGhpcy5oaWRlT25DbGVhcikgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBjbGVhckZpbHRlclZhbHVlcygpIHtcbiAgICB0aGlzLl9pbml0RmllbGRGaWx0ZXJDb25zdHJhaW50KCk7XG4gICAgdGhpcy5pc0ZpbHRlckFwcGxpZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyKCkge1xuICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UuX2ZpbHRlcigpO1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgb25NZW51U2hvd24oKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50O1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9ICdjcHMtdGFibGUtY29sLWZpbHRlci1tZW51LW9wZW4nO1xuICAgIHBhcmVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gIH1cblxuICBvbkJlZm9yZU1lbnVIaWRkZW4oKSB7XG4gICAgaWYgKCF0aGlzLmlzRmlsdGVyQXBwbGllZCkgdGhpcy5faW5pdEZpZWxkRmlsdGVyQ29uc3RyYWludCgpO1xuICB9XG5cbiAgb25NZW51SGlkZGVuKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudDtcbiAgICBjb25zdCBjbGFzc05hbWUgPSAnY3BzLXRhYmxlLWNvbC1maWx0ZXItbWVudS1vcGVuJztcbiAgICBwYXJlbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNvcnRJY29uQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIGNvbnN0IHVuc29ydGVkVXAgPVxuICAgICAgdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNvcnQtdW5zb3J0ZWQtYXJyb3ctdXAnXG4gICAgICApO1xuICAgIGlmICh1bnNvcnRlZFVwKSB7XG4gICAgICB1bnNvcnRlZFVwLnN0eWxlLmJvcmRlckJvdHRvbUNvbG9yID0gY29sb3I7XG4gICAgfVxuICAgIGNvbnN0IHVuc29ydGVkRG93biA9XG4gICAgICB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnBhcmVudEVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICcuc29ydC11bnNvcnRlZC1hcnJvdy1kb3duJ1xuICAgICAgKTtcbiAgICBpZiAodW5zb3J0ZWREb3duKSB7XG4gICAgICB1bnNvcnRlZERvd24uc3R5bGUuYm9yZGVyVG9wQ29sb3IgPSBjb2xvcjtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJykgb25Nb3VzZU92ZXIoKSB7XG4gICAgdGhpcy5fdXBkYXRlU29ydEljb25Db2xvcigndmFyKC0tY3BzLWNvbG9yLWxpbmUtZGFyayknKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKSBvbk1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy5fdXBkYXRlU29ydEljb25Db2xvcignJyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl90YWJsZUluc3RhbmNlPy5vbkZpbHRlcj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyXCI+XG4gIDxjcHMtbWVudVxuICAgICNjb2x1bW5GaWx0ZXJNZW51XG4gICAgW3dpdGhBcnJvd109XCJmYWxzZVwiXG4gICAgaGlkZVRyYW5zaXRpb25PcHRpb25zPVwiMHMgbGluZWFyXCJcbiAgICBbcGVyc2lzdGVudF09XCJwZXJzaXN0ZW50IHx8IChzaG93QXBwbHlCdXR0b24gJiYgaXNDYXRlZ29yeURyb3Bkb3duT3BlbmVkKVwiXG4gICAgKG1lbnVTaG93bik9XCJvbk1lbnVTaG93bigpXCJcbiAgICAobWVudUhpZGRlbik9XCJvbk1lbnVIaWRkZW4oKVwiXG4gICAgKGJlZm9yZU1lbnVIaWRkZW4pPVwib25CZWZvcmVNZW51SGlkZGVuKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItbWVudS1jb250ZW50XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItbWVudS1jb250ZW50LWhlYWRlclwiXG4gICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlQnV0dG9uIHx8IGhlYWRlclRpdGxlXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItbWVudS1jb250ZW50LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgIHt7IGhlYWRlclRpdGxlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJzaG93Q2xvc2VCdXR0b25cIlxuICAgICAgICAgIGljb249XCJjbG9zZS14XCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbG9zZUNsaWNrKClcIj48L2Nwcy1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItbWVudS1jb250ZW50LW9wZXJhdG9yXCJcbiAgICAgICAgKm5nSWY9XCJpc1Nob3dPcGVyYXRvclwiPlxuICAgICAgICA8Y3BzLXNlbGVjdFxuICAgICAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZpZWxkQ29uc3RyYWludHMgfHwgZmllbGRDb25zdHJhaW50cy5sZW5ndGggPCAyXCJcbiAgICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJvcGVyYXRvck9wdGlvbnNcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cIm9wZXJhdG9yXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cIm9uT3BlcmF0b3JDaGFuZ2UoJGV2ZW50KVwiPjwvY3BzLXNlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtY29udGVudC1jb25zdHJhaW50c1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IGZpZWxkQ29uc3RyYWludCBvZiBmaWVsZENvbnN0cmFpbnRzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtY29udGVudC1jb25zdHJhaW50XCI+XG4gICAgICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd01hdGNoTW9kZXMgJiYgY3VycmVudE1hdGNoTW9kZXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtY29sLWZpbHRlci1tYXRjaC1tb2RlLXNlbGVjdFwiXG4gICAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcmV0dXJuT2JqZWN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImN1cnJlbnRNYXRjaE1vZGVzXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImZpZWxkQ29uc3RyYWludC5tYXRjaE1vZGVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJcbiAgICAgICAgICAgICAgb25NZW51TWF0Y2hNb2RlQ2hhbmdlKCRldmVudCwgZmllbGRDb25zdHJhaW50KVxuICAgICAgICAgICAgXCI+PC9jcHMtc2VsZWN0PlxuICAgICAgICAgIDx0YWJsZS1jb2x1bW4tZmlsdGVyLWNvbnN0cmFpbnRcbiAgICAgICAgICAgICNjb25zdHJhaW50Q29tcG9uZW50XG4gICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICBbYXNCdXR0b25Ub2dnbGVdPVwiYXNCdXR0b25Ub2dnbGVcIlxuICAgICAgICAgICAgW3NpbmdsZVNlbGVjdGlvbl09XCJzaW5nbGVTZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2NhdGVnb3J5T3B0aW9uc109XCJjYXRlZ29yeU9wdGlvbnNcIlxuICAgICAgICAgICAgW2ZpbHRlckNvbnN0cmFpbnRdPVwiZmllbGRDb25zdHJhaW50XCJcbiAgICAgICAgICAgIFtoYXNBcHBseUJ1dHRvbl09XCJzaG93QXBwbHlCdXR0b25cIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgPC90YWJsZS1jb2x1bW4tZmlsdGVyLWNvbnN0cmFpbnQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtY29sLWZpbHRlci1yZW1vdmUtcnVsZS1idG5cIlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93UmVtb3ZlSWNvblwiPlxuICAgICAgICAgICAgPGNwcy1idXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJvcmRlcmxlc3NcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBjb2xvcj1cInByZXBhcmVkXCJcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgIChjbGlja2VkKT1cInJlbW92ZUNvbnN0cmFpbnQoZmllbGRDb25zdHJhaW50KVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiUmVtb3ZlIGNvbmRpdGlvblwiPlxuICAgICAgICAgICAgPC9jcHMtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLWFkZC1ydWxlLWJ0blwiXG4gICAgICAgICpuZ0lmPVwiaXNTaG93QWRkQ29uc3RyYWludFwiPlxuICAgICAgICA8Y3BzLWJ1dHRvblxuICAgICAgICAgIGxhYmVsPVwiQWRkIGNvbmRpdGlvblwiXG4gICAgICAgICAgdHlwZT1cImJvcmRlcmxlc3NcIlxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBjb2xvcj1cInN1cnByaXNlXCJcbiAgICAgICAgICBpY29uPVwiYWRkXCJcbiAgICAgICAgICAoY2xpY2tlZCk9XCJhZGRDb25zdHJhaW50KClcIj5cbiAgICAgICAgPC9jcHMtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItYnV0dG9uYmFyXCI+XG4gICAgICAgIDxjcHMtYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93Q2xlYXJCdXR0b25cIlxuICAgICAgICAgIChjbGlja2VkKT1cImNsZWFyRmlsdGVyKClcIlxuICAgICAgICAgIHR5cGU9XCJib3JkZXJsZXNzXCJcbiAgICAgICAgICBjb2xvcj1cInByZXBhcmVkXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIGxhYmVsPVwiQ2xlYXJcIj48L2Nwcy1idXR0b24+XG4gICAgICAgIDxjcHMtYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93QXBwbHlCdXR0b25cIlxuICAgICAgICAgIChjbGlja2VkKT1cImFwcGx5RmlsdGVyKClcIlxuICAgICAgICAgIGNvbG9yPVwicHJlcGFyZWRcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgbGFiZWw9XCJBcHBseVwiPjwvY3BzLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Nwcy1tZW51PlxuICA8Y3BzLWljb25cbiAgICBbaWNvbl09XCJpc0ZpbHRlckFwcGxpZWQgPyAnZmlsdGVyLWZ1bm5lbC1maWxsZWQnIDogJ2ZpbHRlci1mdW5uZWwnXCJcbiAgICBzaXplPVwiMTNcIlxuICAgIChjbGljayk9XCJjb2x1bW5GaWx0ZXJNZW51LnRvZ2dsZSgkZXZlbnQpXCJcbiAgICBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtYnV0dG9uXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnY3BzLXRhYmxlLWNvbC1maWx0ZXItbWVudS1idXR0b24tYWN0aXZlJzogaXNGaWx0ZXJBcHBsaWVkXG4gICAgfVwiXG4gICAgPj5cbiAgPC9jcHMtaWNvbj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Component, Input, Optional, ViewChild } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { Table } from 'primeng/table';
|
|
5
|
+
import { CpsInputComponent } from '../../../../cps-input/cps-input.component';
|
|
6
|
+
import { CpsDatepickerComponent } from '../../../../cps-datepicker/cps-datepicker.component';
|
|
7
|
+
import { CpsButtonToggleComponent } from '../../../../cps-button-toggle/cps-button-toggle.component';
|
|
8
|
+
import { CpsAutocompleteComponent } from '../../../../cps-autocomplete/cps-autocomplete.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "primeng/table";
|
|
11
|
+
import * as i2 from "primeng/treetable";
|
|
12
|
+
import * as i3 from "@angular/common";
|
|
13
|
+
export class TableColumnFilterConstraintComponent {
|
|
14
|
+
get isCategoryDropdownOpened() {
|
|
15
|
+
return this.categoryAutocompleteComponent?.isOpened || false;
|
|
16
|
+
}
|
|
17
|
+
constructor(dt, tt) {
|
|
18
|
+
this.dt = dt;
|
|
19
|
+
this.tt = tt;
|
|
20
|
+
this.type = 'text';
|
|
21
|
+
this.categoryOptions = [];
|
|
22
|
+
this.asButtonToggle = false; // for category type only
|
|
23
|
+
this.singleSelection = false; // for category type only
|
|
24
|
+
this.placeholder = '';
|
|
25
|
+
this.hasApplyButton = true;
|
|
26
|
+
this.booleanOptions = [
|
|
27
|
+
{ label: 'True', value: 'true' },
|
|
28
|
+
{ label: 'False', value: 'false' }
|
|
29
|
+
];
|
|
30
|
+
this.categories = [];
|
|
31
|
+
this._tableInstance = dt || tt;
|
|
32
|
+
}
|
|
33
|
+
ngOnChanges() {
|
|
34
|
+
this._updateCategories();
|
|
35
|
+
}
|
|
36
|
+
_updateCategories() {
|
|
37
|
+
if (this.type !== 'category')
|
|
38
|
+
return;
|
|
39
|
+
if (this.categoryOptions.length > 0) {
|
|
40
|
+
if (typeof this.categoryOptions[0] === 'string') {
|
|
41
|
+
this.categories = this.categoryOptions.map((o) => ({
|
|
42
|
+
label: o,
|
|
43
|
+
value: o
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.categories = this
|
|
48
|
+
.categoryOptions;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
let cats = [];
|
|
53
|
+
if (this._tableInstance instanceof Table) {
|
|
54
|
+
cats =
|
|
55
|
+
this._tableInstance.value?.map((v) => v[this.field]) || [];
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const fillCats = (nodes) => {
|
|
59
|
+
nodes?.forEach((v) => {
|
|
60
|
+
cats.push(v.data[this.field]);
|
|
61
|
+
fillCats(v.children);
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
fillCats(this._tableInstance.value);
|
|
65
|
+
}
|
|
66
|
+
this.categories =
|
|
67
|
+
Array.from(new Set(cats))?.map((c) => ({
|
|
68
|
+
label: c,
|
|
69
|
+
value: c
|
|
70
|
+
})) || [];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
onValueChange(value) {
|
|
74
|
+
this.filterConstraint.value = value;
|
|
75
|
+
if (this._tableInstance.isFilterBlank(value) || !this.hasApplyButton) {
|
|
76
|
+
this._tableInstance._filter();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
onEnterKeyDown(event) {
|
|
80
|
+
this._tableInstance._filter();
|
|
81
|
+
event.preventDefault();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
TableColumnFilterConstraintComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableColumnFilterConstraintComponent, deps: [{ token: i1.Table, optional: true }, { token: i2.TreeTable, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
+
TableColumnFilterConstraintComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: TableColumnFilterConstraintComponent, isStandalone: true, selector: "table-column-filter-constraint", inputs: { type: "type", field: "field", filterConstraint: "filterConstraint", categoryOptions: "categoryOptions", asButtonToggle: "asButtonToggle", singleSelection: "singleSelection", placeholder: "placeholder", hasApplyButton: "hasApplyButton" }, viewQueries: [{ propertyName: "categoryAutocompleteComponent", first: true, predicate: ["categoryAutocompleteComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <cps-input\n *ngSwitchCase=\"'text'\"\n [placeholder]=\"placeholder\"\n [hideDetails]=\"true\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"text\"></cps-input>\n\n <cps-input\n *ngSwitchCase=\"'number'\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"number\"></cps-input>\n\n <div\n class=\"cps-table-col-filter-constraint-btn-toggles\"\n *ngSwitchCase=\"'boolean'\">\n <cps-button-toggle\n [options]=\"booleanOptions\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\">\n </cps-button-toggle>\n </div>\n\n <cps-datepicker\n *ngSwitchCase=\"'date'\"\n [openOnInputFocus]=\"true\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n [value]=\"filterConstraint?.value\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n (valueChanged)=\"onValueChange($event)\">\n </cps-datepicker>\n\n <ng-container *ngSwitchCase=\"'category'\">\n <cps-autocomplete\n #categoryAutocompleteComponent\n *ngIf=\"!asButtonToggle\"\n class=\"cps-table-col-filter-category-autocomplete\"\n [placeholder]=\"placeholder\"\n [options]=\"categories\"\n [hideDetails]=\"true\"\n [clearable]=\"true\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [returnObject]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-autocomplete>\n <div class=\"cps-table-col-filter-constraint-btn-toggles\">\n <cps-button-toggle\n *ngIf=\"asButtonToggle\"\n [options]=\"categories\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-button-toggle>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host .cps-table-col-filter-constraint-btn-toggles{display:flex;justify-content:center}:host .cps-table-col-filter-category-autocomplete{min-width:200px;max-width:400px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CpsInputComponent, selector: "cps-input", inputs: ["label", "hint", "placeholder", "disabled", "readonly", "width", "type", "loading", "clearable", "prefixIcon", "prefixIconClickable", "prefixIconSize", "prefixText", "hideDetails", "persistentClear", "error", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "valueToDisplay", "value"], outputs: ["valueChanged", "focused", "prefixIconClicked", "blurred", "cleared", "enterClicked"] }, { kind: "component", type: CpsDatepickerComponent, selector: "cps-datepicker", inputs: ["label", "disabled", "width", "placeholder", "hint", "clearable", "hideDetails", "persistentClear", "showTodayButton", "openOnInputFocus", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "minDate", "maxDate", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsButtonToggleComponent, selector: "cps-button-toggle", inputs: ["label", "options", "multiple", "disabled", "mandatory", "equalWidths", "optionTooltipPosition", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "value"], outputs: ["valueChanged"] }, { kind: "component", type: CpsAutocompleteComponent, selector: "cps-autocomplete", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "emptyMessage", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "appearance", "value"], outputs: ["valueChanged"] }] });
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableColumnFilterConstraintComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{ selector: 'table-column-filter-constraint', standalone: true, imports: [
|
|
89
|
+
CommonModule,
|
|
90
|
+
FormsModule,
|
|
91
|
+
CpsInputComponent,
|
|
92
|
+
CpsDatepickerComponent,
|
|
93
|
+
CpsButtonToggleComponent,
|
|
94
|
+
CpsAutocompleteComponent
|
|
95
|
+
], template: "<ng-container [ngSwitch]=\"type\">\n <cps-input\n *ngSwitchCase=\"'text'\"\n [placeholder]=\"placeholder\"\n [hideDetails]=\"true\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"text\"></cps-input>\n\n <cps-input\n *ngSwitchCase=\"'number'\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n type=\"number\"></cps-input>\n\n <div\n class=\"cps-table-col-filter-constraint-btn-toggles\"\n *ngSwitchCase=\"'boolean'\">\n <cps-button-toggle\n [options]=\"booleanOptions\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\">\n </cps-button-toggle>\n </div>\n\n <cps-datepicker\n *ngSwitchCase=\"'date'\"\n [openOnInputFocus]=\"true\"\n [hideDetails]=\"true\"\n [placeholder]=\"placeholder\"\n [value]=\"filterConstraint?.value\"\n (keydown.enter)=\"onEnterKeyDown($event)\"\n (valueChanged)=\"onValueChange($event)\">\n </cps-datepicker>\n\n <ng-container *ngSwitchCase=\"'category'\">\n <cps-autocomplete\n #categoryAutocompleteComponent\n *ngIf=\"!asButtonToggle\"\n class=\"cps-table-col-filter-category-autocomplete\"\n [placeholder]=\"placeholder\"\n [options]=\"categories\"\n [hideDetails]=\"true\"\n [clearable]=\"true\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [returnObject]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-autocomplete>\n <div class=\"cps-table-col-filter-constraint-btn-toggles\">\n <cps-button-toggle\n *ngIf=\"asButtonToggle\"\n [options]=\"categories\"\n [value]=\"filterConstraint?.value\"\n (valueChanged)=\"onValueChange($event)\"\n [mandatory]=\"false\"\n [multiple]=\"!singleSelection\">\n </cps-button-toggle>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host .cps-table-col-filter-constraint-btn-toggles{display:flex;justify-content:center}:host .cps-table-col-filter-category-autocomplete{min-width:200px;max-width:400px}\n"] }]
|
|
96
|
+
}], ctorParameters: function () { return [{ type: i1.Table, decorators: [{
|
|
97
|
+
type: Optional
|
|
98
|
+
}] }, { type: i2.TreeTable, decorators: [{
|
|
99
|
+
type: Optional
|
|
100
|
+
}] }]; }, propDecorators: { type: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], field: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], filterConstraint: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], categoryOptions: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], asButtonToggle: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], singleSelection: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], placeholder: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], hasApplyButton: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], categoryAutocompleteComponent: [{
|
|
117
|
+
type: ViewChild,
|
|
118
|
+
args: ['categoryAutocompleteComponent']
|
|
119
|
+
}] } });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10YWJsZS9jb21wb25lbnRzL2ludGVybmFsL3RhYmxlLWNvbHVtbi1maWx0ZXItY29uc3RyYWludC90YWJsZS1jb2x1bW4tZmlsdGVyLWNvbnN0cmFpbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2NvbXBvbmVudHMvaW50ZXJuYWwvdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50L3RhYmxlLWNvbHVtbi1maWx0ZXItY29uc3RyYWludC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQ0wsd0JBQXdCLEVBRXpCLE1BQU0sMkRBQTJELENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seURBQXlELENBQUM7Ozs7O0FBb0JuRyxNQUFNLE9BQU8sb0NBQW9DO0lBc0IvQyxJQUFJLHdCQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxRQUFRLElBQUksS0FBSyxDQUFDO0lBQy9ELENBQUM7SUFFRCxZQUErQixFQUFTLEVBQXFCLEVBQWE7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBTztRQUFxQixPQUFFLEdBQUYsRUFBRSxDQUFXO1FBekJqRSxTQUFJLEdBQXdCLE1BQU0sQ0FBQztRQUduQyxvQkFBZSxHQUErQyxFQUFFLENBQUM7UUFDakUsbUJBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyx5QkFBeUI7UUFDakQsb0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyx5QkFBeUI7UUFDbEQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFLL0IsbUJBQWMsR0FBRztZQUNmLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ2hDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1NBQ1IsQ0FBQztRQUU3QixlQUFVLEdBQW9DLEVBQUUsQ0FBQztRQVMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVO1lBQUUsT0FBTztRQUNyQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxJQUFJLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUksSUFBSSxDQUFDLGVBQTRCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMvRCxLQUFLLEVBQUUsQ0FBQztvQkFDUixLQUFLLEVBQUUsQ0FBQztpQkFDVCxDQUFDLENBQUMsQ0FBQzthQUNMO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSTtxQkFDbkIsZUFBa0QsQ0FBQzthQUN2RDtTQUNGO2FBQU07WUFDTCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZCxJQUFJLElBQUksQ0FBQyxjQUFjLFlBQVksS0FBSyxFQUFFO2dCQUN4QyxJQUFJO29CQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFlLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO29CQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUMsQ0FBQzt3QkFDeEMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO2dCQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsSUFBSSxDQUFDLFVBQVU7Z0JBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDckMsS0FBSyxFQUFFLENBQUM7b0JBQ1IsS0FBSyxFQUFFLENBQUM7aUJBQ1QsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDaEIsSUFBSSxDQUFDLGdCQUFpQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFM0MsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDOztpSUEvRVUsb0NBQW9DO3FIQUFwQyxvQ0FBb0MsdWZDdENqRCx5bEVBa0VBLG9PRHRDSSxZQUFZLDhUQUNaLFdBQVcsK0JBQ1gsaUJBQWlCLHFnQkFDakIsc0JBQXNCLGtZQUN0Qix3QkFBd0IsdVRBQ3hCLHdCQUF3QjsyRkFLZixvQ0FBb0M7a0JBZGhELFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6Qjs7MEJBOEJZLFFBQVE7OzBCQUFzQixRQUFROzRDQXpCMUMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdOLDZCQUE2QjtzQkFENUIsU0FBUzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWx0ZXJNZXRhZGF0YSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBUcmVlVGFibGUgfSBmcm9tICdwcmltZW5nL3RyZWV0YWJsZSc7XG5pbXBvcnQgeyBDcHNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Nwcy1pbnB1dC9jcHMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0RhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9jcHMtZGF0ZXBpY2tlci9jcHMtZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ3BzQnV0dG9uVG9nZ2xlQ29tcG9uZW50LFxuICBDcHNCdXR0b25Ub2dnbGVPcHRpb25cbn0gZnJvbSAnLi4vLi4vLi4vLi4vY3BzLWJ1dHRvbi10b2dnbGUvY3BzLWJ1dHRvbi10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0F1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Nwcy1hdXRvY29tcGxldGUvY3BzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ3BzQ29sdW1uRmlsdGVyQ2F0ZWdvcnlPcHRpb24sXG4gIENwc0NvbHVtbkZpbHRlclR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vY3BzLWNvbHVtbi1maWx0ZXItdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1jb2x1bW4tZmlsdGVyLWNvbnN0cmFpbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENwc0lucHV0Q29tcG9uZW50LFxuICAgIENwc0RhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgQ3BzQnV0dG9uVG9nZ2xlQ29tcG9uZW50LFxuICAgIENwc0F1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5GaWx0ZXJDb25zdHJhaW50Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdHlwZTogQ3BzQ29sdW1uRmlsdGVyVHlwZSA9ICd0ZXh0JztcbiAgQElucHV0KCkgZmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgZmlsdGVyQ29uc3RyYWludDogRmlsdGVyTWV0YWRhdGEgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGNhdGVnb3J5T3B0aW9uczogQ3BzQ29sdW1uRmlsdGVyQ2F0ZWdvcnlPcHRpb25bXSB8IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGFzQnV0dG9uVG9nZ2xlID0gZmFsc2U7IC8vIGZvciBjYXRlZ29yeSB0eXBlIG9ubHlcbiAgQElucHV0KCkgc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7IC8vIGZvciBjYXRlZ29yeSB0eXBlIG9ubHlcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgaGFzQXBwbHlCdXR0b24gPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhdGVnb3J5QXV0b2NvbXBsZXRlQ29tcG9uZW50JylcbiAgY2F0ZWdvcnlBdXRvY29tcGxldGVDb21wb25lbnQ/OiBDcHNBdXRvY29tcGxldGVDb21wb25lbnQ7XG5cbiAgYm9vbGVhbk9wdGlvbnMgPSBbXG4gICAgeyBsYWJlbDogJ1RydWUnLCB2YWx1ZTogJ3RydWUnIH0sXG4gICAgeyBsYWJlbDogJ0ZhbHNlJywgdmFsdWU6ICdmYWxzZScgfVxuICBdIGFzIENwc0J1dHRvblRvZ2dsZU9wdGlvbltdO1xuXG4gIGNhdGVnb3JpZXM6IENwc0NvbHVtbkZpbHRlckNhdGVnb3J5T3B0aW9uW10gPSBbXTtcblxuICBfdGFibGVJbnN0YW5jZTogVGFibGUgfCBUcmVlVGFibGU7XG5cbiAgZ2V0IGlzQ2F0ZWdvcnlEcm9wZG93bk9wZW5lZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yeUF1dG9jb21wbGV0ZUNvbXBvbmVudD8uaXNPcGVuZWQgfHwgZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwdWJsaWMgZHQ6IFRhYmxlLCBAT3B0aW9uYWwoKSBwdWJsaWMgdHQ6IFRyZWVUYWJsZSkge1xuICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UgPSBkdCB8fCB0dDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3JpZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNhdGVnb3JpZXMoKSB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2NhdGVnb3J5JykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmNhdGVnb3J5T3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY2F0ZWdvcnlPcHRpb25zWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSAodGhpcy5jYXRlZ29yeU9wdGlvbnMgYXMgc3RyaW5nW10pLm1hcCgobykgPT4gKHtcbiAgICAgICAgICBsYWJlbDogbyxcbiAgICAgICAgICB2YWx1ZTogb1xuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSB0aGlzXG4gICAgICAgICAgLmNhdGVnb3J5T3B0aW9ucyBhcyBDcHNDb2x1bW5GaWx0ZXJDYXRlZ29yeU9wdGlvbltdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY2F0cyA9IFtdO1xuICAgICAgaWYgKHRoaXMuX3RhYmxlSW5zdGFuY2UgaW5zdGFuY2VvZiBUYWJsZSkge1xuICAgICAgICBjYXRzID1cbiAgICAgICAgICB0aGlzLl90YWJsZUluc3RhbmNlLnZhbHVlPy5tYXAoKHYpID0+IHZbdGhpcy5maWVsZCBhcyBzdHJpbmddKSB8fCBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpbGxDYXRzID0gKG5vZGVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIG5vZGVzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBjYXRzLnB1c2godi5kYXRhW3RoaXMuZmllbGQgYXMgc3RyaW5nXSk7XG4gICAgICAgICAgICBmaWxsQ2F0cyh2LmNoaWxkcmVuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgZmlsbENhdHModGhpcy5fdGFibGVJbnN0YW5jZS52YWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNhdGVnb3JpZXMgPVxuICAgICAgICBBcnJheS5mcm9tKG5ldyBTZXQoY2F0cykpPy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGMsXG4gICAgICAgICAgdmFsdWU6IGNcbiAgICAgICAgfSkpIHx8IFtdO1xuICAgIH1cbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgICg8YW55PnRoaXMuZmlsdGVyQ29uc3RyYWludCkudmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLl90YWJsZUluc3RhbmNlLmlzRmlsdGVyQmxhbmsodmFsdWUpIHx8ICF0aGlzLmhhc0FwcGx5QnV0dG9uKSB7XG4gICAgICB0aGlzLl90YWJsZUluc3RhbmNlLl9maWx0ZXIoKTtcbiAgICB9XG4gIH1cblxuICBvbkVudGVyS2V5RG93bihldmVudDogYW55KSB7XG4gICAgdGhpcy5fdGFibGVJbnN0YW5jZS5fZmlsdGVyKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuICA8Y3BzLWlucHV0XG4gICAgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlcktleURvd24oJGV2ZW50KVwiXG4gICAgW3ZhbHVlXT1cImZpbHRlckNvbnN0cmFpbnQ/LnZhbHVlXCJcbiAgICAodmFsdWVDaGFuZ2VkKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgdHlwZT1cInRleHRcIj48L2Nwcy1pbnB1dD5cblxuICA8Y3BzLWlucHV0XG4gICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcbiAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyS2V5RG93bigkZXZlbnQpXCJcbiAgICBbdmFsdWVdPVwiZmlsdGVyQ29uc3RyYWludD8udmFsdWVcIlxuICAgICh2YWx1ZUNoYW5nZWQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICB0eXBlPVwibnVtYmVyXCI+PC9jcHMtaW5wdXQ+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItY29uc3RyYWludC1idG4tdG9nZ2xlc1wiXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgIDxjcHMtYnV0dG9uLXRvZ2dsZVxuICAgICAgW29wdGlvbnNdPVwiYm9vbGVhbk9wdGlvbnNcIlxuICAgICAgW3ZhbHVlXT1cImZpbHRlckNvbnN0cmFpbnQ/LnZhbHVlXCJcbiAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFttYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICA8L2Nwcy1idXR0b24tdG9nZ2xlPlxuICA8L2Rpdj5cblxuICA8Y3BzLWRhdGVwaWNrZXJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCJcbiAgICBbb3Blbk9uSW5wdXRGb2N1c109XCJ0cnVlXCJcbiAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbdmFsdWVdPVwiZmlsdGVyQ29uc3RyYWludD8udmFsdWVcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJLZXlEb3duKCRldmVudClcIlxuICAgICh2YWx1ZUNoYW5nZWQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gIDwvY3BzLWRhdGVwaWNrZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NhdGVnb3J5J1wiPlxuICAgIDxjcHMtYXV0b2NvbXBsZXRlXG4gICAgICAjY2F0ZWdvcnlBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICAgICpuZ0lmPVwiIWFzQnV0dG9uVG9nZ2xlXCJcbiAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItY2F0ZWdvcnktYXV0b2NvbXBsZXRlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbb3B0aW9uc109XCJjYXRlZ29yaWVzXCJcbiAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgIFtjbGVhcmFibGVdPVwidHJ1ZVwiXG4gICAgICBbdmFsdWVdPVwiZmlsdGVyQ29uc3RyYWludD8udmFsdWVcIlxuICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICBbbXVsdGlwbGVdPVwiIXNpbmdsZVNlbGVjdGlvblwiPlxuICAgIDwvY3BzLWF1dG9jb21wbGV0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItY29uc3RyYWludC1idG4tdG9nZ2xlc1wiPlxuICAgICAgPGNwcy1idXR0b24tdG9nZ2xlXG4gICAgICAgICpuZ0lmPVwiYXNCdXR0b25Ub2dnbGVcIlxuICAgICAgICBbb3B0aW9uc109XCJjYXRlZ29yaWVzXCJcbiAgICAgICAgW3ZhbHVlXT1cImZpbHRlckNvbnN0cmFpbnQ/LnZhbHVlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbbWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgW211bHRpcGxlXT1cIiFzaW5nbGVTZWxlY3Rpb25cIj5cbiAgICAgIDwvY3BzLWJ1dHRvbi10b2dnbGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|