@aquera/ngx-smart-table 0.0.17-alpha → 0.0.19-alpha
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/{fesm2020 → fesm2022}/aquera-ngx-smart-table.mjs +1579 -2101
- package/fesm2022/aquera-ngx-smart-table.mjs.map +1 -0
- package/package.json +8 -16
- package/types/aquera-ngx-smart-table.d.ts +5909 -0
- package/aquera-ngx-smart-table.d.ts +0 -5
- package/esm2020/aquera-ngx-smart-table.mjs +0 -5
- package/esm2020/lib/builder/components/builder-preview/builder-preview.component.mjs +0 -63
- package/esm2020/lib/builder/components/builder-toolbar/builder-toolbar.component.mjs +0 -115
- package/esm2020/lib/builder/components/column-editor/column-editor.component.mjs +0 -206
- package/esm2020/lib/builder/components/column-list/column-list.component.mjs +0 -125
- package/esm2020/lib/builder/components/definition-builder/definition-builder.component.mjs +0 -105
- package/esm2020/lib/builder/components/table-config-editor/table-config-editor.component.mjs +0 -132
- package/esm2020/lib/builder/definition-builder.module.mjs +0 -70
- package/esm2020/lib/builder/models/builder-state.interface.mjs +0 -5
- package/esm2020/lib/builder/services/definition-builder.service.mjs +0 -251
- package/esm2020/lib/builder/services/definition-export.service.mjs +0 -167
- package/esm2020/lib/builder/services/definition-import.service.mjs +0 -193
- package/esm2020/lib/builder/services/sample-data-generator.service.mjs +0 -126
- package/esm2020/lib/builder/utils/config-validator.util.mjs +0 -165
- package/esm2020/lib/builder/utils/typescript-generator.util.mjs +0 -206
- package/esm2020/lib/editors/index.mjs +0 -9
- package/esm2020/lib/editors/nile-autocomplete-editor.mjs +0 -228
- package/esm2020/lib/editors/nile-calendar-editor.mjs +0 -211
- package/esm2020/lib/editors/nile-date-picker-editor.mjs +0 -188
- package/esm2020/lib/editors/nile-input-editor.mjs +0 -235
- package/esm2020/lib/editors/nile-select-editor.mjs +0 -498
- package/esm2020/lib/factories/column-config.factory.mjs +0 -231
- package/esm2020/lib/models/autosave-config.interface.mjs +0 -8
- package/esm2020/lib/models/base-column-config.class.mjs +0 -253
- package/esm2020/lib/models/cell-strategies.interface.mjs +0 -6
- package/esm2020/lib/models/cell-types.mjs +0 -147
- package/esm2020/lib/models/column-action.interface.mjs +0 -6
- package/esm2020/lib/models/column-config.interface.mjs +0 -43
- package/esm2020/lib/models/column-config.utils.mjs +0 -101
- package/esm2020/lib/models/row-action.interface.mjs +0 -5
- package/esm2020/lib/models/row-validator.interface.mjs +0 -2
- package/esm2020/lib/models/schema-validation.interface.mjs +0 -2
- package/esm2020/lib/models/sheet-action.interface.mjs +0 -5
- package/esm2020/lib/models/sheet-config.interface.mjs +0 -5
- package/esm2020/lib/models/table-config.interface.mjs +0 -107
- package/esm2020/lib/models/table-validator.interface.mjs +0 -2
- package/esm2020/lib/models/workbook-action.interface.mjs +0 -5
- package/esm2020/lib/models/workbook-config.interface.mjs +0 -5
- package/esm2020/lib/renderer/components/st-add-column-button/st-add-column-button.component.mjs +0 -24
- package/esm2020/lib/renderer/components/st-cell/st-cell.component.mjs +0 -397
- package/esm2020/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.mjs +0 -103
- package/esm2020/lib/renderer/components/st-column-filter/st-column-filter.component.mjs +0 -383
- package/esm2020/lib/renderer/components/st-column-menu/st-column-menu.component.mjs +0 -232
- package/esm2020/lib/renderer/components/st-column-visibility/st-column-visibility.component.mjs +0 -97
- package/esm2020/lib/renderer/components/st-header/st-header.component.mjs +0 -157
- package/esm2020/lib/renderer/components/st-pagination/st-pagination.component.mjs +0 -87
- package/esm2020/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.mjs +0 -167
- package/esm2020/lib/renderer/components/st-sheet/st-sheet.component.mjs +0 -165
- package/esm2020/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.mjs +0 -112
- package/esm2020/lib/renderer/components/st-table/st-table.component.mjs +0 -1453
- package/esm2020/lib/renderer/components/st-table-actions/st-table-actions.component.mjs +0 -169
- package/esm2020/lib/renderer/components/st-workbook/st-workbook.component.mjs +0 -581
- package/esm2020/lib/renderer/directives/click-outside.directive.mjs +0 -28
- package/esm2020/lib/renderer/directives/st-column-resize.directive.mjs +0 -108
- package/esm2020/lib/renderer/directives/st-keyboard-navigation.directive.mjs +0 -83
- package/esm2020/lib/renderer/models/cell-state.interface.mjs +0 -66
- package/esm2020/lib/renderer/models/cell.class.mjs +0 -389
- package/esm2020/lib/renderer/models/row-validation-state.interface.mjs +0 -7
- package/esm2020/lib/renderer/models/sheet-state.class.mjs +0 -90
- package/esm2020/lib/renderer/models/sheet-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/table-state.class.mjs +0 -871
- package/esm2020/lib/renderer/models/table-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/table-types.mjs +0 -29
- package/esm2020/lib/renderer/models/table-validation-state.interface.mjs +0 -7
- package/esm2020/lib/renderer/models/workbook-state.class.mjs +0 -174
- package/esm2020/lib/renderer/models/workbook-state.interface.mjs +0 -5
- package/esm2020/lib/renderer/models/z-index.enum.mjs +0 -55
- package/esm2020/lib/schemas/table-config.schema.mjs +0 -472
- package/esm2020/lib/services/autosave.service.mjs +0 -92
- package/esm2020/lib/services/custom-validation-rules.util.mjs +0 -124
- package/esm2020/lib/services/json-schema-validator.service.mjs +0 -216
- package/esm2020/lib/services/row-validation.service.mjs +0 -42
- package/esm2020/lib/services/validation-logger.service.mjs +0 -177
- package/esm2020/lib/services/virtual-scroll.service.mjs +0 -52
- package/esm2020/lib/shared/shared-table-components.module.mjs +0 -35
- package/esm2020/lib/smart-table.module.mjs +0 -124
- package/esm2020/lib/strategies/default-editors.mjs +0 -433
- package/esm2020/lib/strategies/default-formatters.mjs +0 -238
- package/esm2020/lib/strategies/default-validators.mjs +0 -327
- package/esm2020/public-api.mjs +0 -146
- package/fesm2015/aquera-ngx-smart-table.mjs +0 -12347
- package/fesm2015/aquera-ngx-smart-table.mjs.map +0 -1
- package/fesm2020/aquera-ngx-smart-table.mjs.map +0 -1
- package/lib/builder/components/builder-preview/builder-preview.component.d.ts +0 -31
- package/lib/builder/components/builder-toolbar/builder-toolbar.component.d.ts +0 -53
- package/lib/builder/components/column-editor/column-editor.component.d.ts +0 -69
- package/lib/builder/components/column-list/column-list.component.d.ts +0 -65
- package/lib/builder/components/definition-builder/definition-builder.component.d.ts +0 -58
- package/lib/builder/components/table-config-editor/table-config-editor.component.d.ts +0 -32
- package/lib/builder/definition-builder.module.d.ts +0 -15
- package/lib/builder/models/builder-state.interface.d.ts +0 -93
- package/lib/builder/services/definition-builder.service.d.ts +0 -80
- package/lib/builder/services/definition-export.service.d.ts +0 -59
- package/lib/builder/services/definition-import.service.d.ts +0 -31
- package/lib/builder/services/sample-data-generator.service.d.ts +0 -41
- package/lib/builder/utils/config-validator.util.d.ts +0 -32
- package/lib/builder/utils/typescript-generator.util.d.ts +0 -29
- package/lib/editors/index.d.ts +0 -8
- package/lib/editors/nile-autocomplete-editor.d.ts +0 -102
- package/lib/editors/nile-calendar-editor.d.ts +0 -88
- package/lib/editors/nile-date-picker-editor.d.ts +0 -97
- package/lib/editors/nile-input-editor.d.ts +0 -67
- package/lib/editors/nile-select-editor.d.ts +0 -113
- package/lib/factories/column-config.factory.d.ts +0 -73
- package/lib/models/autosave-config.interface.d.ts +0 -23
- package/lib/models/base-column-config.class.d.ts +0 -115
- package/lib/models/cell-strategies.interface.d.ts +0 -188
- package/lib/models/cell-types.d.ts +0 -337
- package/lib/models/column-action.interface.d.ts +0 -86
- package/lib/models/column-config.interface.d.ts +0 -272
- package/lib/models/column-config.utils.d.ts +0 -37
- package/lib/models/row-action.interface.d.ts +0 -86
- package/lib/models/row-validator.interface.d.ts +0 -37
- package/lib/models/schema-validation.interface.d.ts +0 -42
- package/lib/models/sheet-action.interface.d.ts +0 -59
- package/lib/models/sheet-config.interface.d.ts +0 -41
- package/lib/models/table-config.interface.d.ts +0 -251
- package/lib/models/table-validator.interface.d.ts +0 -40
- package/lib/models/workbook-action.interface.d.ts +0 -95
- package/lib/models/workbook-config.interface.d.ts +0 -107
- package/lib/renderer/components/st-add-column-button/st-add-column-button.component.d.ts +0 -9
- package/lib/renderer/components/st-cell/st-cell.component.d.ts +0 -69
- package/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.d.ts +0 -39
- package/lib/renderer/components/st-column-filter/st-column-filter.component.d.ts +0 -139
- package/lib/renderer/components/st-column-menu/st-column-menu.component.d.ts +0 -81
- package/lib/renderer/components/st-column-visibility/st-column-visibility.component.d.ts +0 -44
- package/lib/renderer/components/st-header/st-header.component.d.ts +0 -93
- package/lib/renderer/components/st-pagination/st-pagination.component.d.ts +0 -42
- package/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.d.ts +0 -67
- package/lib/renderer/components/st-sheet/st-sheet.component.d.ts +0 -98
- package/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.d.ts +0 -58
- package/lib/renderer/components/st-table/st-table.component.d.ts +0 -380
- package/lib/renderer/components/st-table-actions/st-table-actions.component.d.ts +0 -77
- package/lib/renderer/components/st-workbook/st-workbook.component.d.ts +0 -275
- package/lib/renderer/directives/click-outside.directive.d.ts +0 -10
- package/lib/renderer/directives/st-column-resize.directive.d.ts +0 -44
- package/lib/renderer/directives/st-keyboard-navigation.directive.d.ts +0 -19
- package/lib/renderer/models/cell-state.interface.d.ts +0 -118
- package/lib/renderer/models/cell.class.d.ts +0 -174
- package/lib/renderer/models/row-validation-state.interface.d.ts +0 -27
- package/lib/renderer/models/sheet-state.class.d.ts +0 -67
- package/lib/renderer/models/sheet-state.interface.d.ts +0 -55
- package/lib/renderer/models/table-state.class.d.ts +0 -320
- package/lib/renderer/models/table-state.interface.d.ts +0 -18
- package/lib/renderer/models/table-types.d.ts +0 -228
- package/lib/renderer/models/table-validation-state.interface.d.ts +0 -34
- package/lib/renderer/models/workbook-state.class.d.ts +0 -117
- package/lib/renderer/models/workbook-state.interface.d.ts +0 -71
- package/lib/renderer/models/z-index.enum.d.ts +0 -44
- package/lib/schemas/table-config.schema.d.ts +0 -455
- package/lib/services/autosave.service.d.ts +0 -73
- package/lib/services/custom-validation-rules.util.d.ts +0 -12
- package/lib/services/json-schema-validator.service.d.ts +0 -49
- package/lib/services/row-validation.service.d.ts +0 -17
- package/lib/services/validation-logger.service.d.ts +0 -87
- package/lib/services/virtual-scroll.service.d.ts +0 -44
- package/lib/shared/shared-table-components.module.d.ts +0 -9
- package/lib/smart-table.module.d.ts +0 -26
- package/lib/strategies/default-editors.d.ts +0 -109
- package/lib/strategies/default-formatters.d.ts +0 -116
- package/lib/strategies/default-validators.d.ts +0 -113
- package/public-api.d.ts +0 -70
- package/src/lib/builder/README.md +0 -30
- package/src/lib/editors/README.md +0 -303
- package/src/lib/renderer/components/st-column-filter/README.md +0 -286
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output, Input, ViewChild, HostListener } from '@angular/core';
|
|
2
|
-
import { SortDirection } from '../../models/table-types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../st-column-filter/st-column-filter.component";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
export class StColumnMenuDropdownComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
/**
|
|
9
|
-
* Whether the dropdown is open
|
|
10
|
-
*/
|
|
11
|
-
this.isOpen = false;
|
|
12
|
-
/**
|
|
13
|
-
* Position of the dropdown (x, y coordinates)
|
|
14
|
-
*/
|
|
15
|
-
this.position = { x: 0, y: 0 };
|
|
16
|
-
/**
|
|
17
|
-
* Context containing column data, index, and actions
|
|
18
|
-
*/
|
|
19
|
-
this.context = null;
|
|
20
|
-
/**
|
|
21
|
-
* Emitted when an action is clicked
|
|
22
|
-
*/
|
|
23
|
-
this.actionClicked = new EventEmitter();
|
|
24
|
-
/**
|
|
25
|
-
* Emitted when the dropdown should close
|
|
26
|
-
*/
|
|
27
|
-
this.closed = new EventEmitter();
|
|
28
|
-
/**
|
|
29
|
-
* Visible actions (filtered by hidden property)
|
|
30
|
-
*/
|
|
31
|
-
this.visibleActions = [];
|
|
32
|
-
/**
|
|
33
|
-
* Dropdown positioning style
|
|
34
|
-
*/
|
|
35
|
-
this.dropdownStyle = {};
|
|
36
|
-
this.isFilterOpen = false;
|
|
37
|
-
}
|
|
38
|
-
ngOnChanges(changes) {
|
|
39
|
-
if (changes['context'] || changes['isOpen']) {
|
|
40
|
-
this.updateVisibleActions();
|
|
41
|
-
}
|
|
42
|
-
if (changes['position'] || changes['isOpen']) {
|
|
43
|
-
this.updateDropdownPosition();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Update visible actions based on hidden property
|
|
48
|
-
*/
|
|
49
|
-
updateVisibleActions() {
|
|
50
|
-
if (!this.context) {
|
|
51
|
-
this.visibleActions = [];
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
this.visibleActions = this.context.actions.filter(action => {
|
|
55
|
-
if (typeof action.hidden === 'function') {
|
|
56
|
-
return !action.hidden(this.context.column, this.context.columnIndex);
|
|
57
|
-
}
|
|
58
|
-
return !action.hidden;
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Check if an action is currently active (for checkmarks)
|
|
63
|
-
*/
|
|
64
|
-
isActionActive(action) {
|
|
65
|
-
if (!this.context)
|
|
66
|
-
return false;
|
|
67
|
-
const column = this.context.column;
|
|
68
|
-
// Sort actions
|
|
69
|
-
if (action.id === 'sort-asc') {
|
|
70
|
-
return column.sortDirection === SortDirection.ASC;
|
|
71
|
-
}
|
|
72
|
-
if (action.id === 'sort-desc') {
|
|
73
|
-
return column.sortDirection === SortDirection.DESC;
|
|
74
|
-
}
|
|
75
|
-
// Filter action
|
|
76
|
-
if (action.id === 'filter') {
|
|
77
|
-
return column.filterConfig?.enabled === true;
|
|
78
|
-
}
|
|
79
|
-
// Pin actions
|
|
80
|
-
if (action.id === 'pin-left') {
|
|
81
|
-
return column.sticky === 'left';
|
|
82
|
-
}
|
|
83
|
-
if (action.id === 'pin-right') {
|
|
84
|
-
return column.sticky === 'right';
|
|
85
|
-
}
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Determine if divider should be shown after an action
|
|
90
|
-
* Groups built-in actions: [sort group] | [filter] | [pin group] | [move group] | [custom]
|
|
91
|
-
*/
|
|
92
|
-
shouldShowDividerAfter(action, index, isLast) {
|
|
93
|
-
if (isLast || !this.visibleActions[index + 1])
|
|
94
|
-
return false;
|
|
95
|
-
const currentId = action.id;
|
|
96
|
-
const nextId = this.visibleActions[index + 1].id;
|
|
97
|
-
// Divider after sort group
|
|
98
|
-
if (['sort-asc', 'sort-desc', 'clear-sort'].includes(currentId) &&
|
|
99
|
-
!['sort-asc', 'sort-desc', 'clear-sort'].includes(nextId)) {
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
102
|
-
// Divider after filter
|
|
103
|
-
if (currentId === 'filter') {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
// Divider after pin group
|
|
107
|
-
if (['pin-left', 'pin-right', 'unpin'].includes(currentId) &&
|
|
108
|
-
!['pin-left', 'pin-right', 'unpin'].includes(nextId)) {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
// Divider after move group (before custom actions)
|
|
112
|
-
if (['move-left', 'move-right'].includes(currentId) &&
|
|
113
|
-
!['move-left', 'move-right'].includes(nextId)) {
|
|
114
|
-
return true;
|
|
115
|
-
}
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Update dropdown position based on available viewport space
|
|
120
|
-
*/
|
|
121
|
-
updateDropdownPosition() {
|
|
122
|
-
if (!this.isOpen) {
|
|
123
|
-
this.dropdownStyle = {};
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
const viewportWidth = window.innerWidth;
|
|
127
|
-
const viewportHeight = window.innerHeight;
|
|
128
|
-
const dropdownWidth = 280; // Approximate dropdown width
|
|
129
|
-
const dropdownHeight = 300; // Approximate max dropdown height
|
|
130
|
-
let { x, y } = this.position;
|
|
131
|
-
// Adjust horizontal position if dropdown would overflow
|
|
132
|
-
if (x + dropdownWidth > viewportWidth) {
|
|
133
|
-
x = Math.max(10, viewportWidth - dropdownWidth - 10);
|
|
134
|
-
}
|
|
135
|
-
// Adjust vertical position if dropdown would overflow
|
|
136
|
-
if (y + dropdownHeight > viewportHeight) {
|
|
137
|
-
y = Math.max(10, viewportHeight - dropdownHeight - 10);
|
|
138
|
-
}
|
|
139
|
-
this.dropdownStyle = {
|
|
140
|
-
position: 'fixed',
|
|
141
|
-
left: `${x}px`,
|
|
142
|
-
top: `${y}px`,
|
|
143
|
-
'z-index': 9999
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Check if an action is disabled
|
|
148
|
-
*/
|
|
149
|
-
isActionDisabled(action) {
|
|
150
|
-
if (!this.context)
|
|
151
|
-
return true;
|
|
152
|
-
if (typeof action.disabled === 'function') {
|
|
153
|
-
return action.disabled(this.context.column, this.context.columnIndex);
|
|
154
|
-
}
|
|
155
|
-
return action.disabled || false;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Handle action click
|
|
159
|
-
*/
|
|
160
|
-
onActionClick(action) {
|
|
161
|
-
if (!this.context || this.isActionDisabled(action)) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
// Special handling for filter action - open filter popup
|
|
165
|
-
if (action.id === 'filter') {
|
|
166
|
-
this.isFilterOpen = true;
|
|
167
|
-
return; // Don't emit or close menu
|
|
168
|
-
}
|
|
169
|
-
const event = {
|
|
170
|
-
action,
|
|
171
|
-
column: this.context.column,
|
|
172
|
-
columnIndex: this.context.columnIndex
|
|
173
|
-
};
|
|
174
|
-
this.actionClicked.emit(event);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Close dropdown when clicking backdrop
|
|
178
|
-
*/
|
|
179
|
-
onBackdropClick(event) {
|
|
180
|
-
const target = event.target;
|
|
181
|
-
if (target.classList.contains('dropdown-backdrop')) {
|
|
182
|
-
// this.closed.emit();
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
onFilterClosed() {
|
|
186
|
-
this.isFilterOpen = false;
|
|
187
|
-
// Close the entire column menu when filter is closed
|
|
188
|
-
this.closed.emit();
|
|
189
|
-
}
|
|
190
|
-
onFilterApplied(event) {
|
|
191
|
-
console.log('Filter applied:', event);
|
|
192
|
-
this.isFilterOpen = false;
|
|
193
|
-
// Close the entire column menu when filter is applied
|
|
194
|
-
this.closed.emit();
|
|
195
|
-
}
|
|
196
|
-
onFilterCleared() {
|
|
197
|
-
console.log('Filter cleared');
|
|
198
|
-
this.isFilterOpen = false;
|
|
199
|
-
// Close the entire column menu when filter is cleared
|
|
200
|
-
this.closed.emit();
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Determine if menu should align to the left (for first few columns)
|
|
204
|
-
*/
|
|
205
|
-
shouldAlignLeft() {
|
|
206
|
-
// Align left for first 2 columns to prevent clipping
|
|
207
|
-
return (this.context?.columnIndex || 0) <= 1;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
StColumnMenuDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnMenuDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
-
StColumnMenuDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StColumnMenuDropdownComponent, selector: "st-column-menu-dropdown", inputs: { isOpen: "isOpen", position: "position", context: "context" }, outputs: { actionClicked: "actionClicked", closed: "closed" }, host: { listeners: { "click": "onBackdropClick($event)" } }, viewQueries: [{ propertyName: "filterPopup", first: true, predicate: ["filterPopup"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"], components: [{ type: i1.StColumnFilterComponent, selector: "st-column-filter", inputs: ["column", "tableState", "columnIndex", "isFirstColumn", "isLastColumn", "isOpen", "filterContext"], outputs: ["closed", "filterApplied", "filterCleared"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
212
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnMenuDropdownComponent, decorators: [{
|
|
213
|
-
type: Component,
|
|
214
|
-
args: [{ selector: 'st-column-menu-dropdown', template: "<!-- Dropdown container with backdrop -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen && context\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closed.emit()\"></div>\n \n <!-- Dropdown menu -->\n <div class=\"column-menu-dropdown\" [ngStyle]=\"dropdownStyle\">\n <!-- Main menu with actions -->\n <nile-menu *ngIf=\"!isFilterOpen\">\n <!-- Dynamically render all visible actions -->\n <ng-container *ngFor=\"let action of visibleActions; let i = index; let last = last\">\n <nile-menu-item \n (click)=\"onActionClick(action)\"\n [class.disabled]=\"isActionDisabled(action)\"\n [class.active]=\"isActionActive(action)\">\n <span class=\"checkmark\" *ngIf=\"isActionActive(action)\">\u2713</span>\n <nile-icon slot=\"prefix\" *ngIf=\"action.icon && !isActionActive(action)\" [name]=\"action.icon\"></nile-icon>\n <span class=\"action-label\">{{ action.label }}</span>\n </nile-menu-item>\n \n <!-- Add divider after action groups -->\n <nile-divider *ngIf=\"shouldShowDividerAfter(action, i, last)\"></nile-divider>\n </ng-container>\n \n <!-- Fallback if no actions -->\n <nile-menu-item *ngIf=\"visibleActions.length === 0\">\n No actions available\n </nile-menu-item>\n </nile-menu>\n \n <!-- Filter popup (conditionally rendered) -->\n <st-column-filter\n #filterPopup\n *ngIf=\"isFilterOpen && context\"\n [column]=\"context.column\"\n [tableState]=\"context.tableState\"\n [columnIndex]=\"context.columnIndex\"\n [isFirstColumn]=\"context.isFirstColumn\"\n [isLastColumn]=\"context.isLastColumn\"\n [isOpen]=\"isFilterOpen\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared()\"\n (closed)=\"onFilterClosed()\">\n </st-column-filter>\n </div>\n</div>\n", styles: [".dropdown-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998}.dropdown-backdrop{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:9998}.column-menu-dropdown{min-width:200px;max-width:300px;background-color:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;overflow:hidden;pointer-events:auto;z-index:9999}nile-menu nile-divider::part(divider){margin:0}nile-menu nile-menu-item::part(base){height:2.5rem;min-height:auto}nile-menu nile-menu-item .checkmark{margin-right:8px;color:#4299e1;font-weight:700}\n"] }]
|
|
215
|
-
}], propDecorators: { isOpen: [{
|
|
216
|
-
type: Input
|
|
217
|
-
}], position: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], context: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], actionClicked: [{
|
|
222
|
-
type: Output
|
|
223
|
-
}], closed: [{
|
|
224
|
-
type: Output
|
|
225
|
-
}], filterPopup: [{
|
|
226
|
-
type: ViewChild,
|
|
227
|
-
args: ['filterPopup']
|
|
228
|
-
}], onBackdropClick: [{
|
|
229
|
-
type: HostListener,
|
|
230
|
-
args: ['click', ['$event']]
|
|
231
|
-
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY29sdW1uLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9jb21wb25lbnRzL3N0LWNvbHVtbi1tZW51L3N0LWNvbHVtbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1jb2x1bW4tbWVudS9zdC1jb2x1bW4tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBNEIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVN6RCxNQUFNLE9BQU8sNkJBQTZCO0lBTDFDO1FBTUU7O1dBRUc7UUFDTSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRWpDOztXQUVHO1FBQ00sYUFBUSxHQUE2QixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRTdEOztXQUVHO1FBQ00sWUFBTyxHQUErQixJQUFJLENBQUM7UUFFcEQ7O1dBRUc7UUFDTyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRWhFOztXQUVHO1FBQ08sV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFJNUM7O1dBRUc7UUFDSCxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFFcEM7O1dBRUc7UUFDSCxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUV4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztLQTRNdEI7SUExTUMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFD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S0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFLRyxNQUFNO3NCQUFmLE1BQU07Z0JBRW1CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFzTHhCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCwgVmlld0NoaWxkLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uQWN0aW9uLCBDb2x1bW5BY3Rpb25Db250ZXh0LCBDb2x1bW5BY3Rpb25FdmVudCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2x1bW4tYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLXR5cGVzJztcbmltcG9ydCB7IENlbGxEYXRhVHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jZWxsLXR5cGVzJztcbmltcG9ydCB7IFN0Q29sdW1uRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc3QtY29sdW1uLWZpbHRlci9zdC1jb2x1bW4tZmlsdGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0LWNvbHVtbi1tZW51LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0LWNvbHVtbi1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3QtY29sdW1uLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgU3RDb2x1bW5NZW51RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZHJvcGRvd24gaXMgb3BlblxuICAgKi9cbiAgQElucHV0KCkgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duICh4LCB5IGNvb3JkaW5hdGVzKVxuICAgKi9cbiAgQElucHV0KCkgcG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9O1xuICBcbiAgLyoqXG4gICAqIENvbnRleHQgY29udGFpbmluZyBjb2x1bW4gZGF0YSwgaW5kZXgsIGFuZCBhY3Rpb25zXG4gICAqL1xuICBASW5wdXQoKSBjb250ZXh0OiBDb2x1bW5BY3Rpb25Db250ZXh0IHwgbnVsbCA9IG51bGw7XG4gIFxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGFjdGlvbiBpcyBjbGlja2VkXG4gICAqL1xuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uQWN0aW9uRXZlbnQ+KCk7XG4gIFxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBkcm9wZG93biBzaG91bGQgY2xvc2VcbiAgICovXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIFxuICBAVmlld0NoaWxkKCdmaWx0ZXJQb3B1cCcpIGZpbHRlclBvcHVwPzogU3RDb2x1bW5GaWx0ZXJDb21wb25lbnQ7XG4gIFxuICAvKipcbiAgICogVmlzaWJsZSBhY3Rpb25zIChmaWx0ZXJlZCBieSBoaWRkZW4gcHJvcGVydHkpXG4gICAqL1xuICB2aXNpYmxlQWN0aW9uczogQ29sdW1uQWN0aW9uW10gPSBbXTtcbiAgXG4gIC8qKlxuICAgKiBEcm9wZG93biBwb3NpdGlvbmluZyBzdHlsZVxuICAgKi9cbiAgZHJvcGRvd25TdHlsZTogYW55ID0ge307XG4gIFxuICBpc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29udGV4dCddIHx8IGNoYW5nZXNbJ2lzT3BlbiddKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVBY3Rpb25zKCk7XG4gICAgfVxuICAgIFxuICAgIGlmIChjaGFuZ2VzWydwb3NpdGlvbiddIHx8IGNoYW5nZXNbJ2lzT3BlbiddKSB7XG4gICAgICB0aGlzLnVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJsZSBhY3Rpb25zIGJhc2VkIG9uIGhpZGRlbiBwcm9wZXJ0eVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmxlQWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkge1xuICAgICAgdGhpcy52aXNpYmxlQWN0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLnZpc2libGVBY3Rpb25zID0gdGhpcy5jb250ZXh0LmFjdGlvbnMuZmlsdGVyKGFjdGlvbiA9PiB7XG4gICAgICBpZiAodHlwZW9mIGFjdGlvbi5oaWRkZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICFhY3Rpb24uaGlkZGVuKHRoaXMuY29udGV4dCEuY29sdW1uLCB0aGlzLmNvbnRleHQhLmNvbHVtbkluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhYWN0aW9uLmhpZGRlbjtcbiAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFjdGlvbiBpcyBjdXJyZW50bHkgYWN0aXZlIChmb3IgY2hlY2ttYXJrcylcbiAgICovXG4gIGlzQWN0aW9uQWN0aXZlKGFjdGlvbjogQ29sdW1uQWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHJldHVybiBmYWxzZTtcbiAgICBcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbnRleHQuY29sdW1uO1xuICAgIFxuICAgIC8vIFNvcnQgYWN0aW9uc1xuICAgIGlmIChhY3Rpb24uaWQgPT09ICdzb3J0LWFzYycpIHtcbiAgICAgIHJldHVybiBjb2x1bW4uc29ydERpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5BU0M7XG4gICAgfVxuICAgIGlmIChhY3Rpb24uaWQgPT09ICdzb3J0LWRlc2MnKSB7XG4gICAgICByZXR1cm4gY29sdW1uLnNvcnREaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uREVTQztcbiAgICB9XG4gICAgXG4gICAgLy8gRmlsdGVyIGFjdGlvblxuICAgIGlmIChhY3Rpb24uaWQgPT09ICdmaWx0ZXInKSB7XG4gICAgICByZXR1cm4gY29sdW1uLmZpbHRlckNvbmZpZz8uZW5hYmxlZCA9PT0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gUGluIGFjdGlvbnNcbiAgICBpZiAoYWN0aW9uLmlkID09PSAncGluLWxlZnQnKSB7XG4gICAgICByZXR1cm4gY29sdW1uLnN0aWNreSA9PT0gJ2xlZnQnO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uLmlkID09PSAncGluLXJpZ2h0Jykge1xuICAgICAgcmV0dXJuIGNvbHVtbi5zdGlja3kgPT09ICdyaWdodCc7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgZGl2aWRlciBzaG91bGQgYmUgc2hvd24gYWZ0ZXIgYW4gYWN0aW9uXG4gICAqIEdyb3VwcyBidWlsdC1pbiBhY3Rpb25zOiBbc29ydCBncm91cF0gfCBbZmlsdGVyXSB8IFtwaW4gZ3JvdXBdIHwgW21vdmUgZ3JvdXBdIHwgW2N1c3RvbV1cbiAgICovXG4gIHNob3VsZFNob3dEaXZpZGVyQWZ0ZXIoYWN0aW9uOiBDb2x1bW5BY3Rpb24sIGluZGV4OiBudW1iZXIsIGlzTGFzdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIGlmIChpc0xhc3QgfHwgIXRoaXMudmlzaWJsZUFjdGlvbnNbaW5kZXggKyAxXSkgcmV0dXJuIGZhbHNlO1xuICAgIFxuICAgIGNvbnN0IGN1cnJlbnRJZCA9IGFjdGlvbi5pZDtcbiAgICBjb25zdCBuZXh0SWQgPSB0aGlzLnZpc2libGVBY3Rpb25zW2luZGV4ICsgMV0uaWQ7XG4gICAgXG4gICAgLy8gRGl2aWRlciBhZnRlciBzb3J0IGdyb3VwXG4gICAgaWYgKFsnc29ydC1hc2MnLCAnc29ydC1kZXNjJywgJ2NsZWFyLXNvcnQnXS5pbmNsdWRlcyhjdXJyZW50SWQpICYmIFxuICAgICAgICAhWydzb3J0LWFzYycsICdzb3J0LWRlc2MnLCAnY2xlYXItc29ydCddLmluY2x1ZGVzKG5leHRJZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICAvLyBEaXZpZGVyIGFmdGVyIGZpbHRlclxuICAgIGlmIChjdXJyZW50SWQgPT09ICdmaWx0ZXInKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gRGl2aWRlciBhZnRlciBwaW4gZ3JvdXBcbiAgICBpZiAoWydwaW4tbGVmdCcsICdwaW4tcmlnaHQnLCAndW5waW4nXS5pbmNsdWRlcyhjdXJyZW50SWQpICYmIFxuICAgICAgICAhWydwaW4tbGVmdCcsICdwaW4tcmlnaHQnLCAndW5waW4nXS5pbmNsdWRlcyhuZXh0SWQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gRGl2aWRlciBhZnRlciBtb3ZlIGdyb3VwIChiZWZvcmUgY3VzdG9tIGFjdGlvbnMpXG4gICAgaWYgKFsnbW92ZS1sZWZ0JywgJ21vdmUtcmlnaHQnXS5pbmNsdWRlcyhjdXJyZW50SWQpICYmIFxuICAgICAgICAhWydtb3ZlLWxlZnQnLCAnbW92ZS1yaWdodCddLmluY2x1ZGVzKG5leHRJZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBVcGRhdGUgZHJvcGRvd24gcG9zaXRpb24gYmFzZWQgb24gYXZhaWxhYmxlIHZpZXdwb3J0IHNwYWNlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5kcm9wZG93blN0eWxlID0ge307XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICBjb25zdCBkcm9wZG93bldpZHRoID0gMjgwOyAvLyBBcHByb3hpbWF0ZSBkcm9wZG93biB3aWR0aFxuICAgIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gMzAwOyAvLyBBcHByb3hpbWF0ZSBtYXggZHJvcGRvd24gaGVpZ2h0XG4gICAgXG4gICAgbGV0IHsgeCwgeSB9ID0gdGhpcy5wb3NpdGlvbjtcbiAgICBcbiAgICAvLyBBZGp1c3QgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBkcm9wZG93biB3b3VsZCBvdmVyZmxvd1xuICAgIGlmICh4ICsgZHJvcGRvd25XaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcbiAgICAgIHggPSBNYXRoLm1heCgxMCwgdmlld3BvcnRXaWR0aCAtIGRyb3Bkb3duV2lkdGggLSAxMCk7XG4gICAgfVxuICAgIFxuICAgIC8vIEFkanVzdCB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBkcm9wZG93biB3b3VsZCBvdmVyZmxvd1xuICAgIGlmICh5ICsgZHJvcGRvd25IZWlnaHQgPiB2aWV3cG9ydEhlaWdodCkge1xuICAgICAgeSA9IE1hdGgubWF4KDEwLCB2aWV3cG9ydEhlaWdodCAtIGRyb3Bkb3duSGVpZ2h0IC0gMTApO1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmRyb3Bkb3duU3R5bGUgPSB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICd6LWluZGV4JzogOTk5OVxuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBDb2x1bW5BY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkgcmV0dXJuIHRydWU7XG4gICAgXG4gICAgaWYgKHR5cGVvZiBhY3Rpb24uZGlzYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhY3Rpb24uZGlzYWJsZWQodGhpcy5jb250ZXh0LmNvbHVtbiwgdGhpcy5jb250ZXh0LmNvbHVtbkluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbi5kaXNhYmxlZCB8fCBmYWxzZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEhhbmRsZSBhY3Rpb24gY2xpY2tcbiAgICovXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBDb2x1bW5BY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCB8fCB0aGlzLmlzQWN0aW9uRGlzYWJsZWQoYWN0aW9uKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBmaWx0ZXIgYWN0aW9uIC0gb3BlbiBmaWx0ZXIgcG9wdXBcbiAgICBpZiAoYWN0aW9uLmlkID09PSAnZmlsdGVyJykge1xuICAgICAgdGhpcy5pc0ZpbHRlck9wZW4gPSB0cnVlO1xuICAgICAgcmV0dXJuOyAvLyBEb24ndCBlbWl0IG9yIGNsb3NlIG1lbnVcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZXZlbnQ6IENvbHVtbkFjdGlvbkV2ZW50ID0ge1xuICAgICAgYWN0aW9uLFxuICAgICAgY29sdW1uOiB0aGlzLmNvbnRleHQuY29sdW1uLFxuICAgICAgY29sdW1uSW5kZXg6IHRoaXMuY29udGV4dC5jb2x1bW5JbmRleFxuICAgIH07XG4gICAgXG4gICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICB9XG4gIFxuICAvKipcbiAgICogQ2xvc2UgZHJvcGRvd24gd2hlbiBjbGlja2luZyBiYWNrZHJvcFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkJhY2tkcm9wQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Ryb3Bkb3duLWJhY2tkcm9wJykpIHtcbiAgICAgIC8vIHRoaXMuY2xvc2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBvbkZpbHRlckNsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xuICAgIC8vIENsb3NlIHRoZSBlbnRpcmUgY29sdW1uIG1lbnUgd2hlbiBmaWx0ZXIgaXMgY2xvc2VkXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgb25GaWx0ZXJBcHBsaWVkKGV2ZW50OiB7IG9wZXJhdG9yOiBhbnk7IHZhbHVlOiBhbnkgfSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdGaWx0ZXIgYXBwbGllZDonLCBldmVudCk7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICAvLyBDbG9zZSB0aGUgZW50aXJlIGNvbHVtbiBtZW51IHdoZW4gZmlsdGVyIGlzIGFwcGxpZWRcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICBvbkZpbHRlckNsZWFyZWQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0ZpbHRlciBjbGVhcmVkJyk7XG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcbiAgICAvLyBDbG9zZSB0aGUgZW50aXJlIGNvbHVtbiBtZW51IHdoZW4gZmlsdGVyIGlzIGNsZWFyZWRcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIGlmIG1lbnUgc2hvdWxkIGFsaWduIHRvIHRoZSBsZWZ0IChmb3IgZmlyc3QgZmV3IGNvbHVtbnMpXG4gICAqL1xuICBzaG91bGRBbGlnbkxlZnQoKTogYm9vbGVhbiB7XG4gICAgLy8gQWxpZ24gbGVmdCBmb3IgZmlyc3QgMiBjb2x1bW5zIHRvIHByZXZlbnQgY2xpcHBpbmdcbiAgICByZXR1cm4gKHRoaXMuY29udGV4dD8uY29sdW1uSW5kZXggfHwgMCkgPD0gMTtcbiAgfVxufSIsIjwhLS0gRHJvcGRvd24gY29udGFpbmVyIHdpdGggYmFja2Ryb3AgLS0+XG48ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGFpbmVyXCIgKm5nSWY9XCJpc09wZW4gJiYgY29udGV4dFwiPlxuICA8IS0tIEJhY2tkcm9wIC0tPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tYmFja2Ryb3BcIiAoY2xpY2spPVwiY2xvc2VkLmVtaXQoKVwiPjwvZGl2PlxuICBcbiAgPCEtLSBEcm9wZG93biBtZW51IC0tPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW1lbnUtZHJvcGRvd25cIiBbbmdTdHlsZV09XCJkcm9wZG93blN0eWxlXCI+XG4gICAgPCEtLSBNYWluIG1lbnUgd2l0aCBhY3Rpb25zIC0tPlxuICAgIDxuaWxlLW1lbnUgKm5nSWY9XCIhaXNGaWx0ZXJPcGVuXCI+XG4gICAgICA8IS0tIER5bmFtaWNhbGx5IHJlbmRlciBhbGwgdmlzaWJsZSBhY3Rpb25zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHZpc2libGVBY3Rpb25zOyBsZXQgaSA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgPG5pbGUtbWVudS1pdGVtIFxuICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc0FjdGlvbkRpc2FibGVkKGFjdGlvbilcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNBY3Rpb25BY3RpdmUoYWN0aW9uKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2ttYXJrXCIgKm5nSWY9XCJpc0FjdGlvbkFjdGl2ZShhY3Rpb24pXCI+4pyTPC9zcGFuPlxuICAgICAgICAgIDxuaWxlLWljb24gc2xvdD1cInByZWZpeFwiICpuZ0lmPVwiYWN0aW9uLmljb24gJiYgIWlzQWN0aW9uQWN0aXZlKGFjdGlvbilcIiBbbmFtZV09XCJhY3Rpb24uaWNvblwiPjwvbmlsZS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWN0aW9uLWxhYmVsXCI+e3sgYWN0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L25pbGUtbWVudS1pdGVtPlxuICAgICAgICBcbiAgICAgICAgPCEtLSBBZGQgZGl2aWRlciBhZnRlciBhY3Rpb24gZ3JvdXBzIC0tPlxuICAgICAgICA8bmlsZS1kaXZpZGVyICpuZ0lmPVwic2hvdWxkU2hvd0RpdmlkZXJBZnRlcihhY3Rpb24sIGksIGxhc3QpXCI+PC9uaWxlLWRpdmlkZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIFxuICAgICAgPCEtLSBGYWxsYmFjayBpZiBubyBhY3Rpb25zIC0tPlxuICAgICAgPG5pbGUtbWVudS1pdGVtICpuZ0lmPVwidmlzaWJsZUFjdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIE5vIGFjdGlvbnMgYXZhaWxhYmxlXG4gICAgICA8L25pbGUtbWVudS1pdGVtPlxuICAgIDwvbmlsZS1tZW51PlxuICAgIFxuICAgIDwhLS0gRmlsdGVyIHBvcHVwIChjb25kaXRpb25hbGx5IHJlbmRlcmVkKSAtLT5cbiAgICA8c3QtY29sdW1uLWZpbHRlclxuICAgICAgI2ZpbHRlclBvcHVwXG4gICAgICAqbmdJZj1cImlzRmlsdGVyT3BlbiAmJiBjb250ZXh0XCJcbiAgICAgIFtjb2x1bW5dPVwiY29udGV4dC5jb2x1bW5cIlxuICAgICAgW3RhYmxlU3RhdGVdPVwiY29udGV4dC50YWJsZVN0YXRlXCJcbiAgICAgIFtjb2x1bW5JbmRleF09XCJjb250ZXh0LmNvbHVtbkluZGV4XCJcbiAgICAgIFtpc0ZpcnN0Q29sdW1uXT1cImNvbnRleHQuaXNGaXJzdENvbHVtblwiXG4gICAgICBbaXNMYXN0Q29sdW1uXT1cImNvbnRleHQuaXNMYXN0Q29sdW1uXCJcbiAgICAgIFtpc09wZW5dPVwiaXNGaWx0ZXJPcGVuXCJcbiAgICAgIChmaWx0ZXJBcHBsaWVkKT1cIm9uRmlsdGVyQXBwbGllZCgkZXZlbnQpXCJcbiAgICAgIChmaWx0ZXJDbGVhcmVkKT1cIm9uRmlsdGVyQ2xlYXJlZCgpXCJcbiAgICAgIChjbG9zZWQpPVwib25GaWx0ZXJDbG9zZWQoKVwiPlxuICAgIDwvc3QtY29sdW1uLWZpbHRlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
package/esm2020/lib/renderer/components/st-column-visibility/st-column-visibility.component.mjs
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../directives/click-outside.directive";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
export class StColumnVisibilityComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.isOpen = false;
|
|
8
|
-
this.columnsVisibility = [];
|
|
9
|
-
}
|
|
10
|
-
ngOnInit() {
|
|
11
|
-
if (!this.tableState) {
|
|
12
|
-
console.warn('tableState is required for st-column-visibility component');
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
// Initialize with current state
|
|
16
|
-
this.updateColumnsVisibility();
|
|
17
|
-
// Subscribe to state changes to update visibility list
|
|
18
|
-
this.subscribeToStateChanges();
|
|
19
|
-
}
|
|
20
|
-
ngOnChanges(changes) {
|
|
21
|
-
// Handle tableState changes (when columns are added/removed)
|
|
22
|
-
if (changes['tableState'] && !changes['tableState'].firstChange) {
|
|
23
|
-
// Unsubscribe from old state
|
|
24
|
-
this.stateSubscription?.unsubscribe();
|
|
25
|
-
// Update columns visibility with new state
|
|
26
|
-
if (this.tableState) {
|
|
27
|
-
this.updateColumnsVisibility();
|
|
28
|
-
// Re-subscribe to new state changes
|
|
29
|
-
this.subscribeToStateChanges();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Update columns visibility list from current table state
|
|
35
|
-
*/
|
|
36
|
-
updateColumnsVisibility() {
|
|
37
|
-
if (this.tableState) {
|
|
38
|
-
this.columnsVisibility = this.tableState.getAllColumnsVisibility();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Subscribe to table state changes
|
|
43
|
-
*/
|
|
44
|
-
subscribeToStateChanges() {
|
|
45
|
-
if (!this.tableState)
|
|
46
|
-
return;
|
|
47
|
-
this.stateSubscription = this.tableState.stateChange$
|
|
48
|
-
.subscribe(event => {
|
|
49
|
-
if (event.type === 'column-visibility' || event.type === 'column-config') {
|
|
50
|
-
this.updateColumnsVisibility();
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
ngOnDestroy() {
|
|
55
|
-
this.stateSubscription?.unsubscribe();
|
|
56
|
-
}
|
|
57
|
-
toggleMenu(event) {
|
|
58
|
-
event.stopPropagation();
|
|
59
|
-
this.isOpen = !this.isOpen;
|
|
60
|
-
}
|
|
61
|
-
closeMenu() {
|
|
62
|
-
this.isOpen = false;
|
|
63
|
-
}
|
|
64
|
-
getColumnsVisibility() {
|
|
65
|
-
return this.columnsVisibility;
|
|
66
|
-
}
|
|
67
|
-
isColumnHideable(column) {
|
|
68
|
-
return column.hideable !== false; // Default to true if not set
|
|
69
|
-
}
|
|
70
|
-
onToggleColumn(columnKey, event) {
|
|
71
|
-
event.stopPropagation();
|
|
72
|
-
// Check if column is hideable before toggling (defensive check)
|
|
73
|
-
const column = this.columnsVisibility.find(col => col.key === columnKey);
|
|
74
|
-
if (column && !this.isColumnHideable(column)) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if (this.tableState) {
|
|
78
|
-
this.tableState.toggleColumnVisibility(columnKey);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
isColumnVisible(columnKey) {
|
|
82
|
-
if (!this.tableState) {
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
const column = this.tableState.getColumns().find(col => col.key === columnKey);
|
|
86
|
-
return column ? (column.visible !== false) : true;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
StColumnVisibilityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnVisibilityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
-
StColumnVisibilityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StColumnVisibilityComponent, selector: "st-column-visibility", inputs: { tableState: "tableState" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"st-column-visibility\" (clickOutside)=\"closeMenu()\">\n <button class=\"visibility-trigger\" \n (click)=\"toggleMenu($event)\" \n title=\"Show/Hide Columns\"\n type=\"button\"\n [class.active]=\"isOpen\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 2H14V14H2V2Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5 2V14M8 2V14M11 2V14\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n \n <div class=\"visibility-dropdown\" *ngIf=\"isOpen\">\n <div class=\"dropdown-header\">Show/Hide Columns</div>\n <div class=\"dropdown-content\">\n <label *ngFor=\"let column of getColumnsVisibility()\" \n class=\"column-item\"\n [class.checked]=\"column.visible\"\n [class.disabled]=\"column.hideable === false\">\n <input type=\"checkbox\" \n [checked]=\"column.visible\"\n [disabled]=\"column.hideable === false\"\n [title]=\"column.hideable === false ? 'This column cannot be hidden' : ''\"\n (change)=\"onToggleColumn(column.key, $event)\">\n <span class=\"column-label\">{{ column.header }}</span>\n </label>\n </div>\n </div>\n</div>\n\n", styles: [".st-column-visibility{position:absolute;top:8px;right:8px;z-index:1000;display:inline-block}.st-column-visibility .visibility-trigger{background:white;border:1px solid #e2e8f0;border-radius:4px;cursor:pointer;padding:6px 8px;color:#718096;line-height:1;transition:all .2s;box-shadow:0 1px 2px #0000000d}.st-column-visibility .visibility-trigger:hover{background-color:#f7fafc;border-color:#cbd5e0;color:#2d3748}.st-column-visibility .visibility-trigger.active{background-color:#ebf8ff;border-color:#2b6cb0;color:#2b6cb0}.st-column-visibility .visibility-trigger svg{display:block;width:16px;height:16px}.st-column-visibility .visibility-dropdown{position:absolute;top:100%;right:0;background:white;border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 4px 6px #0000001a,0 2px 4px #0000000f;z-index:1001;min-width:200px;margin-top:4px;overflow:hidden}.st-column-visibility .visibility-dropdown .dropdown-header{padding:10px 14px;font-weight:600;font-size:13px;color:#2d3748;border-bottom:1px solid #e2e8f0;background-color:#f7fafc}.st-column-visibility .visibility-dropdown .dropdown-content{max-height:10rem;overflow-y:auto;overflow-x:hidden}.st-column-visibility .visibility-dropdown .dropdown-content .column-item{display:flex;align-items:center;padding:10px 14px;cursor:pointer;transition:background-color .2s;-webkit-user-select:none;user-select:none}.st-column-visibility .visibility-dropdown .dropdown-content .column-item:hover{background-color:#f7fafc}.st-column-visibility .visibility-dropdown .dropdown-content .column-item.checked{background-color:#ebf8ff}.st-column-visibility .visibility-dropdown .dropdown-content .column-item.disabled{opacity:.6;cursor:not-allowed}.st-column-visibility .visibility-dropdown .dropdown-content .column-item.disabled:hover{background-color:transparent;cursor:not-allowed}.st-column-visibility .visibility-dropdown .dropdown-content .column-item input[type=checkbox]{margin-right:10px;cursor:pointer;width:16px;height:16px;flex-shrink:0}.st-column-visibility .visibility-dropdown .dropdown-content .column-item input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.st-column-visibility .visibility-dropdown .dropdown-content .column-item .column-label{font-size:14px;color:#2d3748;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], directives: [{ type: i1.ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StColumnVisibilityComponent, decorators: [{
|
|
92
|
-
type: Component,
|
|
93
|
-
args: [{ selector: 'st-column-visibility', template: "<div class=\"st-column-visibility\" (clickOutside)=\"closeMenu()\">\n <button class=\"visibility-trigger\" \n (click)=\"toggleMenu($event)\" \n title=\"Show/Hide Columns\"\n type=\"button\"\n [class.active]=\"isOpen\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 2H14V14H2V2Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5 2V14M8 2V14M11 2V14\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>\n </button>\n \n <div class=\"visibility-dropdown\" *ngIf=\"isOpen\">\n <div class=\"dropdown-header\">Show/Hide Columns</div>\n <div class=\"dropdown-content\">\n <label *ngFor=\"let column of getColumnsVisibility()\" \n class=\"column-item\"\n [class.checked]=\"column.visible\"\n [class.disabled]=\"column.hideable === false\">\n <input type=\"checkbox\" \n [checked]=\"column.visible\"\n [disabled]=\"column.hideable === false\"\n [title]=\"column.hideable === false ? 'This column cannot be hidden' : ''\"\n (change)=\"onToggleColumn(column.key, $event)\">\n <span class=\"column-label\">{{ column.header }}</span>\n </label>\n </div>\n </div>\n</div>\n\n", styles: [".st-column-visibility{position:absolute;top:8px;right:8px;z-index:1000;display:inline-block}.st-column-visibility .visibility-trigger{background:white;border:1px solid #e2e8f0;border-radius:4px;cursor:pointer;padding:6px 8px;color:#718096;line-height:1;transition:all .2s;box-shadow:0 1px 2px #0000000d}.st-column-visibility .visibility-trigger:hover{background-color:#f7fafc;border-color:#cbd5e0;color:#2d3748}.st-column-visibility .visibility-trigger.active{background-color:#ebf8ff;border-color:#2b6cb0;color:#2b6cb0}.st-column-visibility .visibility-trigger svg{display:block;width:16px;height:16px}.st-column-visibility .visibility-dropdown{position:absolute;top:100%;right:0;background:white;border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 4px 6px #0000001a,0 2px 4px #0000000f;z-index:1001;min-width:200px;margin-top:4px;overflow:hidden}.st-column-visibility .visibility-dropdown .dropdown-header{padding:10px 14px;font-weight:600;font-size:13px;color:#2d3748;border-bottom:1px solid #e2e8f0;background-color:#f7fafc}.st-column-visibility .visibility-dropdown .dropdown-content{max-height:10rem;overflow-y:auto;overflow-x:hidden}.st-column-visibility .visibility-dropdown .dropdown-content .column-item{display:flex;align-items:center;padding:10px 14px;cursor:pointer;transition:background-color .2s;-webkit-user-select:none;user-select:none}.st-column-visibility .visibility-dropdown .dropdown-content .column-item:hover{background-color:#f7fafc}.st-column-visibility .visibility-dropdown .dropdown-content .column-item.checked{background-color:#ebf8ff}.st-column-visibility .visibility-dropdown .dropdown-content .column-item.disabled{opacity:.6;cursor:not-allowed}.st-column-visibility .visibility-dropdown .dropdown-content .column-item.disabled:hover{background-color:transparent;cursor:not-allowed}.st-column-visibility .visibility-dropdown .dropdown-content .column-item input[type=checkbox]{margin-right:10px;cursor:pointer;width:16px;height:16px;flex-shrink:0}.st-column-visibility .visibility-dropdown .dropdown-content .column-item input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.st-column-visibility .visibility-dropdown .dropdown-content .column-item .column-label{font-size:14px;color:#2d3748;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
|
|
94
|
-
}], ctorParameters: function () { return []; }, propDecorators: { tableState: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY29sdW1uLXZpc2liaWxpdHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtdGFibGUvc3JjL2xpYi9yZW5kZXJlci9jb21wb25lbnRzL3N0LWNvbHVtbi12aXNpYmlsaXR5L3N0LWNvbHVtbi12aXNpYmlsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1jb2x1bW4tdmlzaWJpbGl0eS9zdC1jb2x1bW4tdmlzaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7Ozs7QUFTOUYsTUFBTSxPQUFPLDJCQUEyQjtJQVF0QztRQUxBLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixzQkFBaUIsR0FBMkUsRUFBRSxDQUFDO0lBSWhGLENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkRBQTJELENBQUMsQ0FBQztZQUMxRSxPQUFPO1NBQ1I7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFFL0IsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsNkRBQTZEO1FBQzdELElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUMvRCw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO1lBRXRDLDJDQUEyQztZQUMzQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2dCQUUvQixvQ0FBb0M7Z0JBQ3BDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2FBQ2hDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyx1QkFBdUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDcEU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUU3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZO2FBQ2xELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQW1CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUU7Z0JBQ3hFLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2FBQ2hDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVk7UUFDckIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBNEU7UUFDM0YsT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLDZCQUE2QjtJQUNqRSxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQWlCLEVBQUUsS0FBWTtRQUM1QyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsZ0VBQWdFO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDOzt3SEF2R1UsMkJBQTJCOzRHQUEzQiwyQkFBMkIsdUhDVHhDLHk0Q0E4QkE7MkZEckJhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSxzQkFBc0I7MEVBS3ZCLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdC1jb2x1bW4tdmlzaWJpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdC1jb2x1bW4tdmlzaWJpbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0LWNvbHVtbi12aXNpYmlsaXR5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3RDb2x1bW5WaXNpYmlsaXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHRhYmxlU3RhdGUhOiBUYWJsZVN0YXRlO1xuICBcbiAgaXNPcGVuID0gZmFsc2U7XG4gIGNvbHVtbnNWaXNpYmlsaXR5OiB7IGtleTogc3RyaW5nOyBoZWFkZXI6IHN0cmluZzsgdmlzaWJsZTogYm9vbGVhbjsgaGlkZWFibGU6IGJvb2xlYW4gfVtdID0gW107XG4gIFxuICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBcbiAgY29uc3RydWN0b3IoKSB7fVxuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYmxlU3RhdGUpIHtcbiAgICAgIGNvbnNvbGUud2FybigndGFibGVTdGF0ZSBpcyByZXF1aXJlZCBmb3Igc3QtY29sdW1uLXZpc2liaWxpdHkgY29tcG9uZW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIEluaXRpYWxpemUgd2l0aCBjdXJyZW50IHN0YXRlXG4gICAgdGhpcy51cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSgpO1xuICAgIFxuICAgIC8vIFN1YnNjcmliZSB0byBzdGF0ZSBjaGFuZ2VzIHRvIHVwZGF0ZSB2aXNpYmlsaXR5IGxpc3RcbiAgICB0aGlzLnN1YnNjcmliZVRvU3RhdGVDaGFuZ2VzKCk7XG4gIH1cbiAgXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgdGFibGVTdGF0ZSBjaGFuZ2VzICh3aGVuIGNvbHVtbnMgYXJlIGFkZGVkL3JlbW92ZWQpXG4gICAgaWYgKGNoYW5nZXNbJ3RhYmxlU3RhdGUnXSAmJiAhY2hhbmdlc1sndGFibGVTdGF0ZSddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIG9sZCBzdGF0ZVxuICAgICAgdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIFxuICAgICAgLy8gVXBkYXRlIGNvbHVtbnMgdmlzaWJpbGl0eSB3aXRoIG5ldyBzdGF0ZVxuICAgICAgaWYgKHRoaXMudGFibGVTdGF0ZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KCk7XG4gICAgICAgIFxuICAgICAgICAvLyBSZS1zdWJzY3JpYmUgdG8gbmV3IHN0YXRlIGNoYW5nZXNcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1N0YXRlQ2hhbmdlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIFVwZGF0ZSBjb2x1bW5zIHZpc2liaWxpdHkgbGlzdCBmcm9tIGN1cnJlbnQgdGFibGUgc3RhdGVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uc1Zpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGFibGVTdGF0ZSkge1xuICAgICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eSA9IHRoaXMudGFibGVTdGF0ZS5nZXRBbGxDb2x1bW5zVmlzaWJpbGl0eSgpO1xuICAgIH1cbiAgfVxuICBcbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byB0YWJsZSBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIHN1YnNjcmliZVRvU3RhdGVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJsZVN0YXRlKSByZXR1cm47XG4gICAgXG4gICAgdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMudGFibGVTdGF0ZS5zdGF0ZUNoYW5nZSRcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbHVtbi12aXNpYmlsaXR5JyB8fCBldmVudC50eXBlID09PSAnY29sdW1uLWNvbmZpZycpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG4gIFxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIFxuICB0b2dnbGVNZW51KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICB9XG4gIFxuICBjbG9zZU1lbnUoKTogdm9pZCB7IFxuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7IFxuICB9XG5cbiAgZ2V0Q29sdW1uc1Zpc2liaWxpdHkoKTogeyBrZXk6IHN0cmluZzsgaGVhZGVyOiBzdHJpbmc7IHZpc2libGU6IGJvb2xlYW47IGhpZGVhYmxlOiBib29sZWFuIH1bXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uc1Zpc2liaWxpdHk7XG4gIH1cblxuICBpc0NvbHVtbkhpZGVhYmxlKGNvbHVtbjogeyBrZXk6IHN0cmluZzsgaGVhZGVyOiBzdHJpbmc7IHZpc2libGU6IGJvb2xlYW47IGhpZGVhYmxlOiBib29sZWFuIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sdW1uLmhpZGVhYmxlICE9PSBmYWxzZTsgLy8gRGVmYXVsdCB0byB0cnVlIGlmIG5vdCBzZXRcbiAgfVxuXG4gIG9uVG9nZ2xlQ29sdW1uKGNvbHVtbktleTogc3RyaW5nLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBcbiAgICAvLyBDaGVjayBpZiBjb2x1bW4gaXMgaGlkZWFibGUgYmVmb3JlIHRvZ2dsaW5nIChkZWZlbnNpdmUgY2hlY2spXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zVmlzaWJpbGl0eS5maW5kKGNvbCA9PiBjb2wua2V5ID09PSBjb2x1bW5LZXkpO1xuICAgIGlmIChjb2x1bW4gJiYgIXRoaXMuaXNDb2x1bW5IaWRlYWJsZShjb2x1bW4pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLnRhYmxlU3RhdGUpIHtcbiAgICAgIHRoaXMudGFibGVTdGF0ZS50b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbktleSk7XG4gICAgfVxuICB9XG5cbiAgaXNDb2x1bW5WaXNpYmxlKGNvbHVtbktleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLnRhYmxlU3RhdGUuZ2V0Q29sdW1ucygpLmZpbmQoY29sID0+IGNvbC5rZXkgPT09IGNvbHVtbktleSk7XG4gICAgcmV0dXJuIGNvbHVtbiA/IChjb2x1bW4udmlzaWJsZSAhPT0gZmFsc2UpIDogdHJ1ZTtcbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwic3QtY29sdW1uLXZpc2liaWxpdHlcIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlTWVudSgpXCI+XG4gIDxidXR0b24gY2xhc3M9XCJ2aXNpYmlsaXR5LXRyaWdnZXJcIiBcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgkZXZlbnQpXCIgXG4gICAgICAgICAgdGl0bGU9XCJTaG93L0hpZGUgQ29sdW1uc1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc09wZW5cIj5cbiAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMiAySDE0VjE0SDJWMlpcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICA8cGF0aCBkPVwiTTUgMlYxNE04IDJWMTRNMTEgMlYxNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgPC9zdmc+XG4gIDwvYnV0dG9uPlxuICBcbiAgPGRpdiBjbGFzcz1cInZpc2liaWxpdHktZHJvcGRvd25cIiAqbmdJZj1cImlzT3BlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1oZWFkZXJcIj5TaG93L0hpZGUgQ29sdW1uczwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCI+XG4gICAgICA8bGFiZWwgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBnZXRDb2x1bW5zVmlzaWJpbGl0eSgpXCIgXG4gICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4taXRlbVwiXG4gICAgICAgICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiY29sdW1uLnZpc2libGVcIlxuICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjb2x1bW4uaGlkZWFibGUgPT09IGZhbHNlXCI+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBcbiAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbHVtbi52aXNpYmxlXCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2x1bW4uaGlkZWFibGUgPT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgIFt0aXRsZV09XCJjb2x1bW4uaGlkZWFibGUgPT09IGZhbHNlID8gJ1RoaXMgY29sdW1uIGNhbm5vdCBiZSBoaWRkZW4nIDogJydcIlxuICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZUNvbHVtbihjb2x1bW4ua2V5LCAkZXZlbnQpXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY29sdW1uLWxhYmVsXCI+e3sgY29sdW1uLmhlYWRlciB9fTwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* st-header Component
|
|
3
|
-
* Encapsulates column-specific logic including sorting and filtering
|
|
4
|
-
*/
|
|
5
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
6
|
-
import { SortDirection } from '../../models/table-types';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common";
|
|
9
|
-
export class StHeaderComponent {
|
|
10
|
-
constructor() {
|
|
11
|
-
/**
|
|
12
|
-
* Column index in the visible columns array
|
|
13
|
-
*/
|
|
14
|
-
this.columnIndex = 0;
|
|
15
|
-
/**
|
|
16
|
-
* Whether this is the first column
|
|
17
|
-
*/
|
|
18
|
-
this.isFirstColumn = false;
|
|
19
|
-
/**
|
|
20
|
-
* Whether this is the last column
|
|
21
|
-
*/
|
|
22
|
-
this.isLastColumn = false;
|
|
23
|
-
/**
|
|
24
|
-
* Whether sorting is enabled globally
|
|
25
|
-
*/
|
|
26
|
-
this.enableSorting = true;
|
|
27
|
-
/**
|
|
28
|
-
* Whether filtering is enabled globally
|
|
29
|
-
*/
|
|
30
|
-
this.enableFiltering = true;
|
|
31
|
-
/**
|
|
32
|
-
* Emits column sort event when sort is toggled
|
|
33
|
-
*/
|
|
34
|
-
this.sortToggle = new EventEmitter();
|
|
35
|
-
/**
|
|
36
|
-
* Emits filter changes (future feature)
|
|
37
|
-
*/
|
|
38
|
-
this.filterChange = new EventEmitter();
|
|
39
|
-
/**
|
|
40
|
-
* Emits when column is moved left or right
|
|
41
|
-
*/
|
|
42
|
-
this.columnMoved = new EventEmitter();
|
|
43
|
-
/**
|
|
44
|
-
* Emits when column menu button is clicked
|
|
45
|
-
*/
|
|
46
|
-
this.menuClick = new EventEmitter();
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Cleanup on destroy
|
|
50
|
-
*/
|
|
51
|
-
ngOnDestroy() {
|
|
52
|
-
// No cleanup needed - resize is now handled by directive
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Handle column menu button click
|
|
56
|
-
*/
|
|
57
|
-
onMenuClick(event) {
|
|
58
|
-
event.preventDefault();
|
|
59
|
-
event.stopPropagation();
|
|
60
|
-
this.menuClick.emit(event);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Check if column menu should be shown
|
|
64
|
-
*/
|
|
65
|
-
isMenuEnabled() {
|
|
66
|
-
return this.column.enableMenu !== false;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Check if column is sortable
|
|
70
|
-
*/
|
|
71
|
-
isSortable() {
|
|
72
|
-
return this.column.sortable !== false && this.enableSorting;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Get current sort direction
|
|
76
|
-
*/
|
|
77
|
-
getSortDirection() {
|
|
78
|
-
return this.column.sortDirection || SortDirection.NONE;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Check if column is currently sorted
|
|
82
|
-
*/
|
|
83
|
-
isSorted() {
|
|
84
|
-
return this.column.sortEnabled || false;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get ARIA sort attribute for accessibility
|
|
88
|
-
*/
|
|
89
|
-
getAriaSort() {
|
|
90
|
-
if (!this.isSortable()) {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
const dir = this.getSortDirection();
|
|
94
|
-
if (dir === SortDirection.ASC) {
|
|
95
|
-
return 'ascending';
|
|
96
|
-
}
|
|
97
|
-
if (dir === SortDirection.DESC) {
|
|
98
|
-
return 'descending';
|
|
99
|
-
}
|
|
100
|
-
return 'none';
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Handle move left action
|
|
104
|
-
*/
|
|
105
|
-
onMoveLeft() {
|
|
106
|
-
const moveEvent = {
|
|
107
|
-
columnKey: this.column.key,
|
|
108
|
-
direction: 'left',
|
|
109
|
-
oldIndex: this.columnIndex,
|
|
110
|
-
newIndex: this.columnIndex - 1,
|
|
111
|
-
column: this.column
|
|
112
|
-
};
|
|
113
|
-
this.columnMoved.emit(moveEvent);
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Handle move right action
|
|
117
|
-
*/
|
|
118
|
-
onMoveRight() {
|
|
119
|
-
const moveEvent = {
|
|
120
|
-
columnKey: this.column.key,
|
|
121
|
-
direction: 'right',
|
|
122
|
-
oldIndex: this.columnIndex,
|
|
123
|
-
newIndex: this.columnIndex + 1,
|
|
124
|
-
column: this.column
|
|
125
|
-
};
|
|
126
|
-
this.columnMoved.emit(moveEvent);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
StHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
130
|
-
StHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StHeaderComponent, selector: "st-header", inputs: { column: "column", columnIndex: "columnIndex", isFirstColumn: "isFirstColumn", isLastColumn: "isLastColumn", tableState: "tableState", enableSorting: "enableSorting", enableFiltering: "enableFiltering" }, outputs: { sortToggle: "sortToggle", filterChange: "filterChange", columnMoved: "columnMoved", menuClick: "menuClick" }, ngImport: i0, template: "<div class=\"st-header\" [class.sortable]=\"isSortable()\" [class.sorted]=\"isSorted()\" [attr.aria-sort]=\"getAriaSort()\">\n <div class=\"header-content\">\n <span class=\"header-text\">{{ column.header || column.key }}</span>\n <button *ngIf=\"isMenuEnabled()\" \n class=\"column-menu-trigger\" \n (click)=\"onMenuClick($event)\"\n type=\"button\" \n aria-label=\"Column actions\">\n <nile-icon name=\"options\"></nile-icon>\n </button>\n </div>\n</div>", styles: [".st-header{position:relative;text-align:left;padding-left:8px}.st-header.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.st-header.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize}.st-header.align-center{text-align:center}.st-header.align-center .header-content{justify-content:center}.st-header.align-right{text-align:right}.st-header.align-right .header-content{justify-content:flex-end}.st-header .header-content{display:flex;align-items:center;gap:8px}.st-header .header-text{flex:1;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:14px}.st-header .column-menu-trigger{background:none;border:none;padding:4px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center}.st-header .column-menu-trigger nile-icon{font-size:16px;pointer-events:none}.st-header .resize-handle{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;z-index:10}.st-header .resize-handle:after{content:\"\";position:absolute;top:50%;right:3px;transform:translateY(-50%);width:2px;height:20px;background-color:#cbd5e0;opacity:0;transition:opacity .2s}.st-header .resize-handle:hover:after,.st-header .resize-handle:active:after{opacity:1}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StHeaderComponent, decorators: [{
|
|
132
|
-
type: Component,
|
|
133
|
-
args: [{ selector: 'st-header', template: "<div class=\"st-header\" [class.sortable]=\"isSortable()\" [class.sorted]=\"isSorted()\" [attr.aria-sort]=\"getAriaSort()\">\n <div class=\"header-content\">\n <span class=\"header-text\">{{ column.header || column.key }}</span>\n <button *ngIf=\"isMenuEnabled()\" \n class=\"column-menu-trigger\" \n (click)=\"onMenuClick($event)\"\n type=\"button\" \n aria-label=\"Column actions\">\n <nile-icon name=\"options\"></nile-icon>\n </button>\n </div>\n</div>", styles: [".st-header{position:relative;text-align:left;padding-left:8px}.st-header.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.st-header.resizing{-webkit-user-select:none;user-select:none;cursor:col-resize}.st-header.align-center{text-align:center}.st-header.align-center .header-content{justify-content:center}.st-header.align-right{text-align:right}.st-header.align-right .header-content{justify-content:flex-end}.st-header .header-content{display:flex;align-items:center;gap:8px}.st-header .header-text{flex:1;font-size:12px;font-weight:500;letter-spacing:.2px;line-height:14px}.st-header .column-menu-trigger{background:none;border:none;padding:4px;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center}.st-header .column-menu-trigger nile-icon{font-size:16px;pointer-events:none}.st-header .resize-handle{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;z-index:10}.st-header .resize-handle:after{content:\"\";position:absolute;top:50%;right:3px;transform:translateY(-50%);width:2px;height:20px;background-color:#cbd5e0;opacity:0;transition:opacity .2s}.st-header .resize-handle:hover:after,.st-header .resize-handle:active:after{opacity:1}\n"] }]
|
|
134
|
-
}], propDecorators: { column: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], columnIndex: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}], isFirstColumn: [{
|
|
139
|
-
type: Input
|
|
140
|
-
}], isLastColumn: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], tableState: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], enableSorting: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], enableFiltering: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], sortToggle: [{
|
|
149
|
-
type: Output
|
|
150
|
-
}], filterChange: [{
|
|
151
|
-
type: Output
|
|
152
|
-
}], columnMoved: [{
|
|
153
|
-
type: Output
|
|
154
|
-
}], menuClick: [{
|
|
155
|
-
type: Output
|
|
156
|
-
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1oZWFkZXIvc3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC1oZWFkZXIvc3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHbEYsT0FBTyxFQUFFLGFBQWEsRUFBdUQsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBTzlHLE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFXRTs7V0FFRztRQUNNLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRWpDOztXQUVHO1FBQ00sa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFeEM7O1dBRUc7UUFDTSxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQU92Qzs7V0FFRztRQUNNLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRXZDOztXQUVHO1FBQ00sb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFekM7O1dBRUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFFM0Q7O1dBRUc7UUFDTyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO1FBRS9EOztXQUVHO1FBQ08sZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUU1RDs7V0FFRztRQUNPLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0tBMkZ0RDtJQXpGQzs7T0FFRztJQUNILFdBQVc7UUFDVCx5REFBeUQ7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlELENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksR0FBRyxLQUFLLGFBQWEsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsT0FBTyxXQUFXLENBQUM7U0FDcEI7UUFDRCxJQUFJLEdBQUcsS0FBSyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQzlCLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLE1BQU0sU0FBUyxHQUFvQjtZQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQzFCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVztZQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDO1lBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE1BQU0sU0FBUyxHQUFvQjtZQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQzFCLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVztZQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDO1lBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7OEdBaEpVLGlCQUFpQjtrR0FBakIsaUJBQWlCLGdZQ2Y5QixzZ0JBV007MkZESU8saUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVc7OEJBUVosTUFBTTtzQkFBZCxLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQUtJLFVBQVU7c0JBQW5CLE1BQU07Z0JBS0csWUFBWTtzQkFBckIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHN0LWhlYWRlciBDb21wb25lbnRcbiAqIEVuY2Fwc3VsYXRlcyBjb2x1bW4tc3BlY2lmaWMgbG9naWMgaW5jbHVkaW5nIHNvcnRpbmcgYW5kIGZpbHRlcmluZ1xuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2x1bW4tY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYmxlLXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24sIENvbHVtblNvcnRFdmVudCwgQ29sdW1uRmlsdGVyRXZlbnQsIENvbHVtbk1vdmVFdmVudCB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS10eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTdEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBDb2x1bW4gY29uZmlndXJhdGlvbiAtIGNvbnRhaW5zIGFsbCBjb2x1bW4gbWV0YWRhdGEgYW5kIHN0YXRlXG4gICAqL1xuICBASW5wdXQoKSBjb2x1bW4hOiBDb2x1bW5Db25maWc8YW55PjtcblxuICAvKipcbiAgICogQ29sdW1uIGluZGV4IGluIHRoZSB2aXNpYmxlIGNvbHVtbnMgYXJyYXlcbiAgICovXG4gIEBJbnB1dCgpIGNvbHVtbkluZGV4OiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNvbHVtblxuICAgKi9cbiAgQElucHV0KCkgaXNGaXJzdENvbHVtbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgdGhlIGxhc3QgY29sdW1uXG4gICAqL1xuICBASW5wdXQoKSBpc0xhc3RDb2x1bW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgVGFibGVTdGF0ZSByZWZlcmVuY2UgZm9yIGludGVncmF0ZWQgc29ydGluZy9maWx0ZXJpbmdcbiAgICovXG4gIEBJbnB1dCgpIHRhYmxlU3RhdGU/OiBUYWJsZVN0YXRlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHNvcnRpbmcgaXMgZW5hYmxlZCBnbG9iYWxseVxuICAgKi9cbiAgQElucHV0KCkgZW5hYmxlU29ydGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZmlsdGVyaW5nIGlzIGVuYWJsZWQgZ2xvYmFsbHlcbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUZpbHRlcmluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGNvbHVtbiBzb3J0IGV2ZW50IHdoZW4gc29ydCBpcyB0b2dnbGVkXG4gICAqL1xuICBAT3V0cHV0KCkgc29ydFRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uU29ydEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBmaWx0ZXIgY2hhbmdlcyAoZnV0dXJlIGZlYXR1cmUpXG4gICAqL1xuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDb2x1bW5GaWx0ZXJFdmVudD4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBjb2x1bW4gaXMgbW92ZWQgbGVmdCBvciByaWdodFxuICAgKi9cbiAgQE91dHB1dCgpIGNvbHVtbk1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxDb2x1bW5Nb3ZlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY29sdW1uIG1lbnUgYnV0dG9uIGlzIGNsaWNrZWRcbiAgICovXG4gIEBPdXRwdXQoKSBtZW51Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIENsZWFudXAgb24gZGVzdHJveVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy8gTm8gY2xlYW51cCBuZWVkZWQgLSByZXNpemUgaXMgbm93IGhhbmRsZWQgYnkgZGlyZWN0aXZlXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNvbHVtbiBtZW51IGJ1dHRvbiBjbGlja1xuICAgKi9cbiAgb25NZW51Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMubWVudUNsaWNrLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGNvbHVtbiBtZW51IHNob3VsZCBiZSBzaG93blxuICAgKi9cbiAgaXNNZW51RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW4uZW5hYmxlTWVudSAhPT0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY29sdW1uIGlzIHNvcnRhYmxlXG4gICAqL1xuICBpc1NvcnRhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbi5zb3J0YWJsZSAhPT0gZmFsc2UgJiYgdGhpcy5lbmFibGVTb3J0aW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHNvcnQgZGlyZWN0aW9uXG4gICAqL1xuICBnZXRTb3J0RGlyZWN0aW9uKCk6IFNvcnREaXJlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbi5zb3J0RGlyZWN0aW9uIHx8IFNvcnREaXJlY3Rpb24uTk9ORTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjb2x1bW4gaXMgY3VycmVudGx5IHNvcnRlZFxuICAgKi9cbiAgaXNTb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uLnNvcnRFbmFibGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBBUklBIHNvcnQgYXR0cmlidXRlIGZvciBhY2Nlc3NpYmlsaXR5XG4gICAqL1xuICBnZXRBcmlhU29ydCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaXNTb3J0YWJsZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkaXIgPSB0aGlzLmdldFNvcnREaXJlY3Rpb24oKTtcbiAgICBpZiAoZGlyID09PSBTb3J0RGlyZWN0aW9uLkFTQykge1xuICAgICAgcmV0dXJuICdhc2NlbmRpbmcnO1xuICAgIH1cbiAgICBpZiAoZGlyID09PSBTb3J0RGlyZWN0aW9uLkRFU0MpIHtcbiAgICAgIHJldHVybiAnZGVzY2VuZGluZyc7XG4gICAgfVxuICAgIHJldHVybiAnbm9uZSc7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIG1vdmUgbGVmdCBhY3Rpb25cbiAgICovXG4gIG9uTW92ZUxlZnQoKTogdm9pZCB7XG4gICAgY29uc3QgbW92ZUV2ZW50OiBDb2x1bW5Nb3ZlRXZlbnQgPSB7XG4gICAgICBjb2x1bW5LZXk6IHRoaXMuY29sdW1uLmtleSxcbiAgICAgIGRpcmVjdGlvbjogJ2xlZnQnLFxuICAgICAgb2xkSW5kZXg6IHRoaXMuY29sdW1uSW5kZXgsXG4gICAgICBuZXdJbmRleDogdGhpcy5jb2x1bW5JbmRleCAtIDEsXG4gICAgICBjb2x1bW46IHRoaXMuY29sdW1uXG4gICAgfTtcbiAgICB0aGlzLmNvbHVtbk1vdmVkLmVtaXQobW92ZUV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgbW92ZSByaWdodCBhY3Rpb25cbiAgICovXG4gIG9uTW92ZVJpZ2h0KCk6IHZvaWQge1xuICAgIGNvbnN0IG1vdmVFdmVudDogQ29sdW1uTW92ZUV2ZW50ID0ge1xuICAgICAgY29sdW1uS2V5OiB0aGlzLmNvbHVtbi5rZXksXG4gICAgICBkaXJlY3Rpb246ICdyaWdodCcsXG4gICAgICBvbGRJbmRleDogdGhpcy5jb2x1bW5JbmRleCxcbiAgICAgIG5ld0luZGV4OiB0aGlzLmNvbHVtbkluZGV4ICsgMSxcbiAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW5cbiAgICB9O1xuICAgIHRoaXMuY29sdW1uTW92ZWQuZW1pdChtb3ZlRXZlbnQpO1xuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJzdC1oZWFkZXJcIiBbY2xhc3Muc29ydGFibGVdPVwiaXNTb3J0YWJsZSgpXCIgW2NsYXNzLnNvcnRlZF09XCJpc1NvcnRlZCgpXCIgW2F0dHIuYXJpYS1zb3J0XT1cImdldEFyaWFTb3J0KClcIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlci1jb250ZW50XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGV4dFwiPnt7IGNvbHVtbi5oZWFkZXIgfHwgY29sdW1uLmtleSB9fTwvc3Bhbj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiaXNNZW51RW5hYmxlZCgpXCIgXG4gICAgICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LXRyaWdnZXJcIiBcbiAgICAgICAgICAgIChjbGljayk9XCJvbk1lbnVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDb2x1bW4gYWN0aW9uc1wiPlxuICAgICAgPG5pbGUtaWNvbiBuYW1lPVwib3B0aW9uc1wiPjwvbmlsZS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|