cps-ui-kit 0.134.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.
Files changed (35) hide show
  1. package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +3 -3
  2. package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +3 -3
  3. package/esm2020/lib/components/cps-select/cps-select.component.mjs +3 -3
  4. package/esm2020/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +79 -0
  5. package/esm2020/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +344 -0
  6. package/esm2020/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +120 -0
  7. package/esm2020/lib/components/cps-table/cps-table.component.mjs +3 -3
  8. package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +2 -2
  9. package/esm2020/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +5 -3
  10. package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +3 -3
  11. package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +3 -3
  12. package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +279 -105
  13. package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +2 -2
  14. package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +4 -3
  15. package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +2 -1
  16. package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +2 -1
  17. package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +2 -1
  18. package/fesm2015/cps-ui-kit.mjs +529 -320
  19. package/fesm2015/cps-ui-kit.mjs.map +1 -1
  20. package/fesm2020/cps-ui-kit.mjs +520 -316
  21. package/fesm2020/cps-ui-kit.mjs.map +1 -1
  22. package/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.d.ts +24 -0
  23. package/lib/components/cps-table/{table-column-filter → components/internal/table-column-filter}/table-column-filter.component.d.ts +6 -3
  24. package/lib/components/cps-table/{table-column-filter → components/internal}/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +3 -3
  25. package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +1 -1
  26. package/lib/components/cps-table/directives/cps-table-column-sortable.directive.d.ts +3 -2
  27. package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +22 -13
  28. package/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.d.ts +1 -1
  29. package/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.d.ts +2 -2
  30. package/package.json +1 -1
  31. package/styles/_colors.scss +2 -0
  32. package/esm2020/lib/components/cps-table/table-column-filter/table-column-filter-constraint/table-column-filter-constraint.component.mjs +0 -120
  33. package/esm2020/lib/components/cps-table/table-column-filter/table-column-filter.component.mjs +0 -322
  34. package/esm2020/lib/components/cps-tree-table/tree-table-sort-icon/tree-table-sort-icon.component.mjs +0 -71
  35. package/lib/components/cps-tree-table/tree-table-sort-icon/tree-table-sort-icon.component.d.ts +0 -21
@@ -0,0 +1,24 @@
1
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
+ import { Table } from 'primeng/table';
3
+ import { TreeTable } from 'primeng/treetable';
4
+ import { Subscription } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export declare class CpsSortIconComponent implements OnInit, OnDestroy {
7
+ dt: Table;
8
+ tt: TreeTable;
9
+ cd: ChangeDetectorRef;
10
+ field: string;
11
+ subscription: Subscription;
12
+ sortOrder: number;
13
+ _tableInstance: Table | TreeTable;
14
+ constructor(dt: Table, tt: TreeTable, cd: ChangeDetectorRef);
15
+ ngOnInit(): void;
16
+ onClick(event: Event): void;
17
+ updateSortState(): void;
18
+ getMultiSortMetaIndex(): number;
19
+ getBadgeValue(): number;
20
+ isMultiSorted(): boolean;
21
+ ngOnDestroy(): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<CpsSortIconComponent, [{ optional: true; }, { optional: true; }, null]>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<CpsSortIconComponent, "cps-sort-icon", never, { "field": "field"; }, {}, never, never, true, never>;
24
+ }
@@ -1,10 +1,10 @@
1
1
  import { ElementRef, OnDestroy, OnInit, QueryList } from '@angular/core';
2
2
  import { FilterMetadata, SelectItem } from 'primeng/api';
3
3
  import { Table } from 'primeng/table';
4
- import { CpsMenuComponent } from '../../cps-menu/cps-menu.component';
5
- import { TableColumnFilterConstraintComponent } from './table-column-filter-constraint/table-column-filter-constraint.component';
6
4
  import { TreeTable } from 'primeng/treetable';
7
- import { CpsColumnFilterCategoryOption, CpsColumnFilterMatchMode, CpsColumnFilterType } from '../cps-column-filter-types';
5
+ import { CpsColumnFilterCategoryOption, CpsColumnFilterMatchMode, CpsColumnFilterType } from '../../../cps-column-filter-types';
6
+ import { CpsMenuComponent } from '../../../../cps-menu/cps-menu.component';
7
+ import { TableColumnFilterConstraintComponent } from '../table-column-filter-constraint/table-column-filter-constraint.component';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class TableColumnFilterComponent implements OnInit, OnDestroy {
10
10
  elementRef: ElementRef;
@@ -63,6 +63,9 @@ export declare class TableColumnFilterComponent implements OnInit, OnDestroy {
63
63
  onBeforeMenuHidden(): void;
64
64
  onMenuHidden(): void;
65
65
  onClick(event: any): void;
66
+ private _updateSortIconColor;
67
+ onMouseOver(): void;
68
+ onMouseLeave(): void;
66
69
  ngOnDestroy(): void;
67
70
  static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnFilterComponent, [null, { optional: true; }, { optional: true; }]>;
68
71
  static ɵcmp: i0.ɵɵComponentDeclaration<TableColumnFilterComponent, "table-column-filter", never, { "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"; }, {}, never, never, true, never>;
@@ -1,10 +1,10 @@
1
1
  import { OnChanges } from '@angular/core';
2
2
  import { FilterMetadata } from 'primeng/api';
3
3
  import { Table } from 'primeng/table';
4
- import { CpsAutocompleteComponent } from '../../../cps-autocomplete/cps-autocomplete.component';
5
- import { CpsButtonToggleOption } from '../../../cps-button-toggle/cps-button-toggle.component';
6
4
  import { TreeTable } from 'primeng/treetable';
7
- import { CpsColumnFilterCategoryOption, CpsColumnFilterType } from '../../cps-column-filter-types';
5
+ import { CpsButtonToggleOption } from '../../../../cps-button-toggle/cps-button-toggle.component';
6
+ import { CpsAutocompleteComponent } from '../../../../cps-autocomplete/cps-autocomplete.component';
7
+ import { CpsColumnFilterCategoryOption, CpsColumnFilterType } from '../../../cps-column-filter-types';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class TableColumnFilterConstraintComponent implements OnChanges {
10
10
  dt: Table;
@@ -1,6 +1,6 @@
1
1
  import { ComponentRef, ElementRef, OnDestroy, OnInit, OnChanges, ViewContainerRef } from '@angular/core';
2
- import { TableColumnFilterComponent } from '../table-column-filter/table-column-filter.component';
3
2
  import { CpsColumnFilterCategoryOption, CpsColumnFilterMatchMode, CpsColumnFilterType } from '../cps-column-filter-types';
3
+ import { TableColumnFilterComponent } from '../components/internal/table-column-filter/table-column-filter.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class CpsTableColumnFilterDirective implements OnInit, OnChanges, OnDestroy {
6
6
  private elementRef;
@@ -1,12 +1,13 @@
1
1
  import { ComponentRef, ElementRef, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
2
- import { SortIcon, SortableColumn, Table } from 'primeng/table';
2
+ import { SortableColumn, Table } from 'primeng/table';
3
+ import { CpsSortIconComponent } from '../components/internal/cps-sort-icon/cps-sort-icon.component';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class CpsTableColumnSortableDirective extends SortableColumn implements OnInit, OnDestroy {
5
6
  private elementRef;
6
7
  private viewContainerRef;
7
8
  dt: Table;
8
9
  field: string;
9
- sortIconRef: ComponentRef<SortIcon>;
10
+ sortIconRef: ComponentRef<CpsSortIconComponent>;
10
11
  constructor(elementRef: ElementRef, viewContainerRef: ViewContainerRef, dt: Table);
11
12
  ngOnInit(): void;
12
13
  ngOnDestroy(): void;
@@ -18,6 +18,11 @@ export declare class CpsTreeTableComponent implements OnInit, AfterViewInit, OnD
18
18
  colFieldName: string;
19
19
  minWidth: number | string;
20
20
  minWidthForBodyOnly: boolean;
21
+ /**
22
+ * Whether the cell widths scale according to their content or not.
23
+ * @group Props
24
+ */
25
+ autoLayout: boolean;
21
26
  striped: boolean;
22
27
  bordered: boolean;
23
28
  size: CpsTreeTableSize;
@@ -107,27 +112,32 @@ export declare class CpsTreeTableComponent implements OnInit, AfterViewInit, OnD
107
112
  }[];
108
113
  selectedRows: any[];
109
114
  virtualScrollItemSize: number;
110
- defScrollHeightPx: number;
111
- defScrollHeightPxInitial: number;
112
115
  defScrollHeight: string;
113
- resizeObserver: ResizeObserver;
114
- windowResizeDebouncer: any;
115
- headerBox: any;
116
- scrollableBody: any;
117
- scrollbarWidth: number;
116
+ private _defScrollHeightPx;
117
+ private _defScrollHeightPxInitial;
118
+ private _resizeObserver;
119
+ private _windowResizeDebouncer;
120
+ private _scrollSubscription?;
121
+ private _headerBox;
122
+ private _scrollableBody;
123
+ private _scrollbarWidth;
124
+ private _scrollbarVisible;
125
+ private _needRecalcAutoLayout;
118
126
  constructor(cdRef: ChangeDetectorRef);
119
127
  ngOnInit(): void;
120
128
  ngAfterViewInit(): void;
121
- private _updateVirtualScrollItemSize;
122
129
  ngAfterViewChecked(): void;
123
- private _setMinWidthOverall;
124
130
  ngOnChanges(changes: SimpleChanges): void;
125
131
  ngOnDestroy(): void;
126
- clearGlobalFilter(): void;
132
+ private _calcAutoLayoutHeaderWidths;
133
+ private _updateVirtualScrollItemSize;
134
+ private _setMinWidthOverall;
127
135
  private _onWindowResize;
128
136
  get styleClass(): string;
129
- onSortFunction(event: SortEvent): void;
130
137
  private _recalcVirtualHeight;
138
+ private _removeNodeFromData;
139
+ clearGlobalFilter(): void;
140
+ onSortFunction(event: SortEvent): void;
131
141
  onFilterGlobal(value: string): void;
132
142
  onClickAdditionalBtnOnSelect(): void;
133
143
  onClickActionBtn(): void;
@@ -137,7 +147,6 @@ export declare class CpsTreeTableComponent implements OnInit, AfterViewInit, OnD
137
147
  clearSelection(): void;
138
148
  onEditRowClicked(node: any): void;
139
149
  onRemoveRowClicked(node: any): void;
140
- private _removeNodeFromData;
141
150
  toggleAllColumns(): void;
142
151
  isColumnSelected(col: any): boolean;
143
152
  onRowsPerPageChanged(): void;
@@ -155,5 +164,5 @@ export declare class CpsTreeTableComponent implements OnInit, AfterViewInit, OnD
155
164
  onSelectColumn(col: any): void;
156
165
  onSelectionChanged(selection: any[]): void;
157
166
  static ɵfac: i0.ɵɵFactoryDeclaration<CpsTreeTableComponent, never>;
158
- static ɵcmp: i0.ɵɵComponentDeclaration<CpsTreeTableComponent, "cps-tree-table", never, { "data": "data"; "columns": "columns"; "colHeaderName": "colHeaderName"; "colFieldName": "colFieldName"; "minWidth": "minWidth"; "minWidthForBodyOnly": "minWidthForBodyOnly"; "striped": "striped"; "bordered": "bordered"; "size": "size"; "selectable": "selectable"; "rowHover": "rowHover"; "showRowMenu": "showRowMenu"; "loading": "loading"; "tableStyle": "tableStyle"; "tableStyleClass": "tableStyleClass"; "sortable": "sortable"; "sortMode": "sortMode"; "customSort": "customSort"; "hasToolbar": "hasToolbar"; "toolbarSize": "toolbarSize"; "toolbarTitle": "toolbarTitle"; "toolbarIcon": "toolbarIcon"; "toolbarIconColor": "toolbarIconColor"; "scrollable": "scrollable"; "scrollHeight": "scrollHeight"; "virtualScroll": "virtualScroll"; "virtualScrollItemHeight": "virtualScrollItemHeight"; "numToleratedItems": "numToleratedItems"; "paginator": "paginator"; "alwaysShowPaginator": "alwaysShowPaginator"; "rowsPerPageOptions": "rowsPerPageOptions"; "first": "first"; "rows": "rows"; "resetPageOnRowsChange": "resetPageOnRowsChange"; "resetPageOnSort": "resetPageOnSort"; "totalRecords": "totalRecords"; "emptyMessage": "emptyMessage"; "emptyBodyHeight": "emptyBodyHeight"; "lazy": "lazy"; "lazyLoadOnInit": "lazyLoadOnInit"; "showGlobalFilter": "showGlobalFilter"; "globalFilterPlaceholder": "globalFilterPlaceholder"; "globalFilterFields": "globalFilterFields"; "clearGlobalFilterOnLoading": "clearGlobalFilterOnLoading"; "showRemoveBtnOnSelect": "showRemoveBtnOnSelect"; "removeBtnOnSelectDisabled": "removeBtnOnSelectDisabled"; "showAdditionalBtnOnSelect": "showAdditionalBtnOnSelect"; "additionalBtnOnSelectTitle": "additionalBtnOnSelectTitle"; "additionalBtnOnSelectDisabled": "additionalBtnOnSelectDisabled"; "showActionBtn": "showActionBtn"; "actionBtnTitle": "actionBtnTitle"; "actionBtnDisabled": "actionBtnDisabled"; "showDataReloadBtn": "showDataReloadBtn"; "dataReloadBtnDisabled": "dataReloadBtnDisabled"; "showColumnsToggleBtn": "showColumnsToggleBtn"; "columnsToggleBtnDisabled": "columnsToggleBtnDisabled"; }, { "selectionChanged": "selectionChanged"; "actionBtnClicked": "actionBtnClicked"; "additionalBtnOnSelectClicked": "additionalBtnOnSelectClicked"; "editRowBtnClicked": "editRowBtnClicked"; "rowsRemoved": "rowsRemoved"; "pageChanged": "pageChanged"; "sorted": "sorted"; "filtered": "filtered"; "columnsSelected": "columnsSelected"; "lazyLoaded": "lazyLoaded"; "dataReloadBtnClicked": "dataReloadBtnClicked"; "nodeExpanded": "nodeExpanded"; "nodeCollapsed": "nodeCollapsed"; "nodeSelected": "nodeSelected"; "nodeUnselected": "nodeUnselected"; "customSortFunction": "customSortFunction"; }, ["toolbarTemplate", "headerTemplate", "nestedHeaderTemplate", "bodyTemplate"], never, true, never>;
167
+ static ɵcmp: i0.ɵɵComponentDeclaration<CpsTreeTableComponent, "cps-tree-table", never, { "data": "data"; "columns": "columns"; "colHeaderName": "colHeaderName"; "colFieldName": "colFieldName"; "minWidth": "minWidth"; "minWidthForBodyOnly": "minWidthForBodyOnly"; "autoLayout": "autoLayout"; "striped": "striped"; "bordered": "bordered"; "size": "size"; "selectable": "selectable"; "rowHover": "rowHover"; "showRowMenu": "showRowMenu"; "loading": "loading"; "tableStyle": "tableStyle"; "tableStyleClass": "tableStyleClass"; "sortable": "sortable"; "sortMode": "sortMode"; "customSort": "customSort"; "hasToolbar": "hasToolbar"; "toolbarSize": "toolbarSize"; "toolbarTitle": "toolbarTitle"; "toolbarIcon": "toolbarIcon"; "toolbarIconColor": "toolbarIconColor"; "scrollable": "scrollable"; "scrollHeight": "scrollHeight"; "virtualScroll": "virtualScroll"; "virtualScrollItemHeight": "virtualScrollItemHeight"; "numToleratedItems": "numToleratedItems"; "paginator": "paginator"; "alwaysShowPaginator": "alwaysShowPaginator"; "rowsPerPageOptions": "rowsPerPageOptions"; "first": "first"; "rows": "rows"; "resetPageOnRowsChange": "resetPageOnRowsChange"; "resetPageOnSort": "resetPageOnSort"; "totalRecords": "totalRecords"; "emptyMessage": "emptyMessage"; "emptyBodyHeight": "emptyBodyHeight"; "lazy": "lazy"; "lazyLoadOnInit": "lazyLoadOnInit"; "showGlobalFilter": "showGlobalFilter"; "globalFilterPlaceholder": "globalFilterPlaceholder"; "globalFilterFields": "globalFilterFields"; "clearGlobalFilterOnLoading": "clearGlobalFilterOnLoading"; "showRemoveBtnOnSelect": "showRemoveBtnOnSelect"; "removeBtnOnSelectDisabled": "removeBtnOnSelectDisabled"; "showAdditionalBtnOnSelect": "showAdditionalBtnOnSelect"; "additionalBtnOnSelectTitle": "additionalBtnOnSelectTitle"; "additionalBtnOnSelectDisabled": "additionalBtnOnSelectDisabled"; "showActionBtn": "showActionBtn"; "actionBtnTitle": "actionBtnTitle"; "actionBtnDisabled": "actionBtnDisabled"; "showDataReloadBtn": "showDataReloadBtn"; "dataReloadBtnDisabled": "dataReloadBtnDisabled"; "showColumnsToggleBtn": "showColumnsToggleBtn"; "columnsToggleBtnDisabled": "columnsToggleBtnDisabled"; }, { "selectionChanged": "selectionChanged"; "actionBtnClicked": "actionBtnClicked"; "additionalBtnOnSelectClicked": "additionalBtnOnSelectClicked"; "editRowBtnClicked": "editRowBtnClicked"; "rowsRemoved": "rowsRemoved"; "pageChanged": "pageChanged"; "sorted": "sorted"; "filtered": "filtered"; "columnsSelected": "columnsSelected"; "lazyLoaded": "lazyLoaded"; "dataReloadBtnClicked": "dataReloadBtnClicked"; "nodeExpanded": "nodeExpanded"; "nodeCollapsed": "nodeCollapsed"; "nodeSelected": "nodeSelected"; "nodeUnselected": "nodeUnselected"; "customSortFunction": "customSortFunction"; }, ["toolbarTemplate", "headerTemplate", "nestedHeaderTemplate", "bodyTemplate"], never, true, never>;
159
168
  }
@@ -1,5 +1,5 @@
1
1
  import { ComponentRef, ElementRef, OnDestroy, OnInit, OnChanges, ViewContainerRef } from '@angular/core';
2
- import { TableColumnFilterComponent } from '../../cps-table/table-column-filter/table-column-filter.component';
2
+ import { TableColumnFilterComponent } from '../../cps-table/components/internal/table-column-filter/table-column-filter.component';
3
3
  import { CpsColumnFilterType, CpsColumnFilterMatchMode, CpsColumnFilterCategoryOption } from '../../cps-table/cps-column-filter-types';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class CpsTreeTableColumnFilterDirective implements OnInit, OnChanges, OnDestroy {
@@ -1,13 +1,13 @@
1
1
  import { ComponentRef, ElementRef, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';
2
2
  import { TTSortableColumn, TreeTable } from 'primeng/treetable';
3
- import { TreeTableSortIconComponent } from '../tree-table-sort-icon/tree-table-sort-icon.component';
3
+ import { CpsSortIconComponent } from '../../cps-table/components/internal/cps-sort-icon/cps-sort-icon.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class CpsTreeTableColumnSortableDirective extends TTSortableColumn implements OnInit, OnDestroy {
6
6
  private elementRef;
7
7
  private viewContainerRef;
8
8
  tt: TreeTable;
9
9
  field: string;
10
- sortIconRef: ComponentRef<TreeTableSortIconComponent>;
10
+ sortIconRef: ComponentRef<CpsSortIconComponent>;
11
11
  constructor(elementRef: ElementRef, viewContainerRef: ViewContainerRef, tt: TreeTable);
12
12
  ngOnInit(): void;
13
13
  ngOnDestroy(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cps-ui-kit",
3
- "version": "0.134.0",
3
+ "version": "0.136.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "15 - 16",
6
6
  "@angular/core": "15 - 16",
@@ -251,6 +251,8 @@
251
251
  // Highlights
252
252
  --cps-color-highlight-hover: #f8f4f5;
253
253
  --cps-color-highlight-active: #f1eaec;
254
+ --cps-color-highlight-selected: #efe4e7;
255
+ --cps-color-highlight-selected-dark: #e6d4d9;
254
256
 
255
257
  //Backgrounds
256
258
  --cps-color-bg-light: #f9f8f8;
@@ -1,120 +0,0 @@
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 { CpsAutocompleteComponent } from '../../../cps-autocomplete/cps-autocomplete.component';
8
- import { CpsButtonToggleComponent } from '../../../cps-button-toggle/cps-button-toggle.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Nwcy10YWJsZS90YWJsZS1jb2x1bW4tZmlsdGVyL3RhYmxlLWNvbHVtbi1maWx0ZXItY29uc3RyYWludC90YWJsZS1jb2x1bW4tZmlsdGVyLWNvbnN0cmFpbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL3RhYmxlLWNvbHVtbi1maWx0ZXIvdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50L3RhYmxlLWNvbHVtbi1maWx0ZXItY29uc3RyYWludC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEVBQ1IsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNoRyxPQUFPLEVBRUwsd0JBQXdCLEVBQ3pCLE1BQU0sd0RBQXdELENBQUM7Ozs7O0FBcUJoRSxNQUFNLE9BQU8sb0NBQW9DO0lBc0IvQyxJQUFJLHdCQUF3QjtRQUMxQixPQUFPLElBQUks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QUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDcEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDOztpSUEvRVUsb0NBQW9DO3FIQUFwQyxvQ0FBb0MsdWZDdENqRCx5bEVBa0VBLG9PRHRDSSxZQUFZLDhUQUNaLFdBQVcsK0JBQ1gsaUJBQWlCLHFnQkFDakIsc0JBQXNCLGtZQUN0Qix3QkFBd0IsdVRBQ3hCLHdCQUF3QjsyRkFLZixvQ0FBb0M7a0JBZGhELFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6Qjs7MEJBOEJZLFFBQVE7OzBCQUFzQixRQUFROzRDQXpCMUMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdOLDZCQUE2QjtzQkFENUIsU0FBUzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWx0ZXJNZXRhZGF0YSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBDcHNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Nwcy1pbnB1dC9jcHMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0RhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jcHMtZGF0ZXBpY2tlci9jcHMtZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY3BzLWF1dG9jb21wbGV0ZS9jcHMtYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDcHNCdXR0b25Ub2dnbGVPcHRpb24sXG4gIENwc0J1dHRvblRvZ2dsZUNvbXBvbmVudFxufSBmcm9tICcuLi8uLi8uLi9jcHMtYnV0dG9uLXRvZ2dsZS9jcHMtYnV0dG9uLXRvZ2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xuaW1wb3J0IHtcbiAgQ3BzQ29sdW1uRmlsdGVyQ2F0ZWdvcnlPcHRpb24sXG4gIENwc0NvbHVtbkZpbHRlclR5cGVcbn0gZnJvbSAnLi4vLi4vY3BzLWNvbHVtbi1maWx0ZXItdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1jb2x1bW4tZmlsdGVyLWNvbnN0cmFpbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENwc0lucHV0Q29tcG9uZW50LFxuICAgIENwc0RhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgQ3BzQnV0dG9uVG9nZ2xlQ29tcG9uZW50LFxuICAgIENwc0F1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5GaWx0ZXJDb25zdHJhaW50Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdHlwZTogQ3BzQ29sdW1uRmlsdGVyVHlwZSA9ICd0ZXh0JztcbiAgQElucHV0KCkgZmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgZmlsdGVyQ29uc3RyYWludDogRmlsdGVyTWV0YWRhdGEgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGNhdGVnb3J5T3B0aW9uczogQ3BzQ29sdW1uRmlsdGVyQ2F0ZWdvcnlPcHRpb25bXSB8IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIGFzQnV0dG9uVG9nZ2xlID0gZmFsc2U7IC8vIGZvciBjYXRlZ29yeSB0eXBlIG9ubHlcbiAgQElucHV0KCkgc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7IC8vIGZvciBjYXRlZ29yeSB0eXBlIG9ubHlcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgaGFzQXBwbHlCdXR0b24gPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoJ2NhdGVnb3J5QXV0b2NvbXBsZXRlQ29tcG9uZW50JylcbiAgY2F0ZWdvcnlBdXRvY29tcGxldGVDb21wb25lbnQ/OiBDcHNBdXRvY29tcGxldGVDb21wb25lbnQ7XG5cbiAgYm9vbGVhbk9wdGlvbnMgPSBbXG4gICAgeyBsYWJlbDogJ1RydWUnLCB2YWx1ZTogJ3RydWUnIH0sXG4gICAgeyBsYWJlbDogJ0ZhbHNlJywgdmFsdWU6ICdmYWxzZScgfVxuICBdIGFzIENwc0J1dHRvblRvZ2dsZU9wdGlvbltdO1xuXG4gIGNhdGVnb3JpZXM6IENwc0NvbHVtbkZpbHRlckNhdGVnb3J5T3B0aW9uW10gPSBbXTtcblxuICBfdGFibGVJbnN0YW5jZTogVGFibGUgfCBUcmVlVGFibGU7XG5cbiAgZ2V0IGlzQ2F0ZWdvcnlEcm9wZG93bk9wZW5lZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yeUF1dG9jb21wbGV0ZUNvbXBvbmVudD8uaXNPcGVuZWQgfHwgZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwdWJsaWMgZHQ6IFRhYmxlLCBAT3B0aW9uYWwoKSBwdWJsaWMgdHQ6IFRyZWVUYWJsZSkge1xuICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UgPSBkdCB8fCB0dDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3JpZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNhdGVnb3JpZXMoKSB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2NhdGVnb3J5JykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmNhdGVnb3J5T3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY2F0ZWdvcnlPcHRpb25zWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSAodGhpcy5jYXRlZ29yeU9wdGlvbnMgYXMgc3RyaW5nW10pLm1hcCgobykgPT4gKHtcbiAgICAgICAgICBsYWJlbDogbyxcbiAgICAgICAgICB2YWx1ZTogb1xuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSB0aGlzXG4gICAgICAgICAgLmNhdGVnb3J5T3B0aW9ucyBhcyBDcHNDb2x1bW5GaWx0ZXJDYXRlZ29yeU9wdGlvbltdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgY2F0cyA9IFtdO1xuICAgICAgaWYgKHRoaXMuX3RhYmxlSW5zdGFuY2UgaW5zdGFuY2VvZiBUYWJsZSkge1xuICAgICAgICBjYXRzID1cbiAgICAgICAgICB0aGlzLl90YWJsZUluc3RhbmNlLnZhbHVlPy5tYXAoKHYpID0+IHZbdGhpcy5maWVsZCBhcyBzdHJpbmddKSB8fCBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpbGxDYXRzID0gKG5vZGVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIG5vZGVzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBjYXRzLnB1c2godi5kYXRhW3RoaXMuZmllbGQgYXMgc3RyaW5nXSk7XG4gICAgICAgICAgICBmaWxsQ2F0cyh2LmNoaWxkcmVuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgZmlsbENhdHModGhpcy5fdGFibGVJbnN0YW5jZS52YWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNhdGVnb3JpZXMgPVxuICAgICAgICBBcnJheS5mcm9tKG5ldyBTZXQoY2F0cykpPy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGMsXG4gICAgICAgICAgdmFsdWU6IGNcbiAgICAgICAgfSkpIHx8IFtdO1xuICAgIH1cbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgICg8YW55PnRoaXMuZmlsdGVyQ29uc3RyYWludCkudmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLl90YWJsZUluc3RhbmNlLmlzRmlsdGVyQmxhbmsodmFsdWUpIHx8ICF0aGlzLmhhc0FwcGx5QnV0dG9uKSB7XG4gICAgICB0aGlzLl90YWJsZUluc3RhbmNlLl9maWx0ZXIoKTtcbiAgICB9XG4gIH1cblxuICBvbkVudGVyS2V5RG93bihldmVudDogYW55KSB7XG4gICAgdGhpcy5fdGFibGVJbnN0YW5jZS5fZmlsdGVyKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuICA8Y3BzLWlucHV0XG4gICAgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlcktleURvd24oJGV2ZW50KVwiXG4gICAgW3ZhbHVlXT1cImZpbHRlckNvbnN0cmFpbnQ/LnZhbHVlXCJcbiAgICAodmFsdWVDaGFuZ2VkKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgdHlwZT1cInRleHRcIj48L2Nwcy1pbnB1dD5cblxuICA8Y3BzLWlucHV0XG4gICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcbiAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyS2V5RG93bigkZXZlbnQpXCJcbiAgICBbdmFsdWVdPVwiZmlsdGVyQ29uc3RyYWludD8udmFsdWVcIlxuICAgICh2YWx1ZUNoYW5nZWQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICB0eXBlPVwibnVtYmVyXCI+PC9jcHMtaW5wdXQ+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItY29uc3RyYWludC1idG4tdG9nZ2xlc1wiXG4gICAgKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxuICAgIDxjcHMtYnV0dG9uLXRvZ2dsZVxuICAgICAgW29wdGlvbnNdPVwiYm9vbGVhbk9wdGlvbnNcIlxuICAgICAgW3ZhbHVlXT1cImZpbHRlckNvbnN0cmFpbnQ/LnZhbHVlXCJcbiAgICAgICh2YWx1ZUNoYW5nZWQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFttYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICA8L2Nwcy1idXR0b24tdG9nZ2xlPlxuICA8L2Rpdj5cblxuICA8Y3BzLWRhdGVwaWNrZXJcbiAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCJcbiAgICBbb3Blbk9uSW5wdXRGb2N1c109XCJ0cnVlXCJcbiAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbdmFsdWVdPVwiZmlsdGVyQ29uc3RyYWludD8udmFsdWVcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJLZXlEb3duKCRldmVudClcIlxuICAgICh2YWx1ZUNoYW5nZWQpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gIDwvY3BzLWRhdGVwaWNrZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NhdGVnb3J5J1wiPlxuICAgIDxjcHMtYXV0b2NvbXBsZXRlXG4gICAgICAjY2F0ZWdvcnlBdXRvY29tcGxldGVDb21wb25lbnRcbiAgICAgICpuZ0lmPVwiIWFzQnV0dG9uVG9nZ2xlXCJcbiAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItY2F0ZWdvcnktYXV0b2NvbXBsZXRlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbb3B0aW9uc109XCJjYXRlZ29yaWVzXCJcbiAgICAgIFtoaWRlRGV0YWlsc109XCJ0cnVlXCJcbiAgICAgIFtjbGVhcmFibGVdPVwidHJ1ZVwiXG4gICAgICBbdmFsdWVdPVwiZmlsdGVyQ29uc3RyYWludD8udmFsdWVcIlxuICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICBbbXVsdGlwbGVdPVwiIXNpbmdsZVNlbGVjdGlvblwiPlxuICAgIDwvY3BzLWF1dG9jb21wbGV0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItY29uc3RyYWludC1idG4tdG9nZ2xlc1wiPlxuICAgICAgPGNwcy1idXR0b24tdG9nZ2xlXG4gICAgICAgICpuZ0lmPVwiYXNCdXR0b25Ub2dnbGVcIlxuICAgICAgICBbb3B0aW9uc109XCJjYXRlZ29yaWVzXCJcbiAgICAgICAgW3ZhbHVlXT1cImZpbHRlckNvbnN0cmFpbnQ/LnZhbHVlXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbbWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgW211bHRpcGxlXT1cIiFzaW5nbGVTZWxlY3Rpb25cIj5cbiAgICAgIDwvY3BzLWJ1dHRvbi10b2dnbGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=