@aquera/ngx-smart-table 0.0.2-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/README.md +152 -0
- package/aquera-ngx-smart-table.d.ts +5 -0
- package/esm2020/aquera-ngx-smart-table.mjs +5 -0
- package/esm2020/lib/builder/components/builder-preview/builder-preview.component.mjs +63 -0
- package/esm2020/lib/builder/components/builder-toolbar/builder-toolbar.component.mjs +115 -0
- package/esm2020/lib/builder/components/column-editor/column-editor.component.mjs +206 -0
- package/esm2020/lib/builder/components/column-list/column-list.component.mjs +125 -0
- package/esm2020/lib/builder/components/definition-builder/definition-builder.component.mjs +105 -0
- package/esm2020/lib/builder/components/table-config-editor/table-config-editor.component.mjs +132 -0
- package/esm2020/lib/builder/definition-builder.module.mjs +70 -0
- package/esm2020/lib/builder/models/builder-state.interface.mjs +5 -0
- package/esm2020/lib/builder/services/definition-builder.service.mjs +251 -0
- package/esm2020/lib/builder/services/definition-export.service.mjs +167 -0
- package/esm2020/lib/builder/services/definition-import.service.mjs +193 -0
- package/esm2020/lib/builder/services/sample-data-generator.service.mjs +126 -0
- package/esm2020/lib/builder/utils/config-validator.util.mjs +165 -0
- package/esm2020/lib/builder/utils/typescript-generator.util.mjs +206 -0
- package/esm2020/lib/editors/index.mjs +9 -0
- package/esm2020/lib/editors/nile-autocomplete-editor.mjs +228 -0
- package/esm2020/lib/editors/nile-calendar-editor.mjs +214 -0
- package/esm2020/lib/editors/nile-date-picker-editor.mjs +227 -0
- package/esm2020/lib/editors/nile-input-editor.mjs +235 -0
- package/esm2020/lib/editors/nile-select-editor.mjs +317 -0
- package/esm2020/lib/factories/column-config.factory.mjs +231 -0
- package/esm2020/lib/models/autosave-config.interface.mjs +8 -0
- package/esm2020/lib/models/base-column-config.class.mjs +253 -0
- package/esm2020/lib/models/cell-strategies.interface.mjs +6 -0
- package/esm2020/lib/models/cell-types.mjs +147 -0
- package/esm2020/lib/models/column-action.interface.mjs +6 -0
- package/esm2020/lib/models/column-config.interface.mjs +43 -0
- package/esm2020/lib/models/column-config.utils.mjs +101 -0
- package/esm2020/lib/models/row-action.interface.mjs +5 -0
- package/esm2020/lib/models/row-validator.interface.mjs +2 -0
- package/esm2020/lib/models/schema-validation.interface.mjs +2 -0
- package/esm2020/lib/models/sheet-action.interface.mjs +5 -0
- package/esm2020/lib/models/sheet-config.interface.mjs +5 -0
- package/esm2020/lib/models/table-config.interface.mjs +106 -0
- package/esm2020/lib/models/table-validator.interface.mjs +2 -0
- package/esm2020/lib/models/workbook-action.interface.mjs +5 -0
- package/esm2020/lib/models/workbook-config.interface.mjs +5 -0
- package/esm2020/lib/renderer/components/st-add-column-button/st-add-column-button.component.mjs +24 -0
- package/esm2020/lib/renderer/components/st-cell/st-cell.component.mjs +391 -0
- package/esm2020/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.mjs +103 -0
- package/esm2020/lib/renderer/components/st-column-filter/st-column-filter.component.mjs +383 -0
- package/esm2020/lib/renderer/components/st-column-menu/st-column-menu.component.mjs +232 -0
- package/esm2020/lib/renderer/components/st-column-visibility/st-column-visibility.component.mjs +97 -0
- package/esm2020/lib/renderer/components/st-header/st-header.component.mjs +157 -0
- package/esm2020/lib/renderer/components/st-pagination/st-pagination.component.mjs +87 -0
- package/esm2020/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.mjs +167 -0
- package/esm2020/lib/renderer/components/st-sheet/st-sheet.component.mjs +165 -0
- package/esm2020/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.mjs +112 -0
- package/esm2020/lib/renderer/components/st-table/st-table.component.mjs +1246 -0
- package/esm2020/lib/renderer/components/st-table-actions/st-table-actions.component.mjs +171 -0
- package/esm2020/lib/renderer/components/st-workbook/st-workbook.component.mjs +489 -0
- package/esm2020/lib/renderer/directives/click-outside.directive.mjs +28 -0
- package/esm2020/lib/renderer/directives/st-column-resize.directive.mjs +108 -0
- package/esm2020/lib/renderer/directives/st-keyboard-navigation.directive.mjs +73 -0
- package/esm2020/lib/renderer/models/cell-state.interface.mjs +66 -0
- package/esm2020/lib/renderer/models/cell.class.mjs +389 -0
- package/esm2020/lib/renderer/models/row-validation-state.interface.mjs +7 -0
- package/esm2020/lib/renderer/models/sheet-state.class.mjs +90 -0
- package/esm2020/lib/renderer/models/sheet-state.interface.mjs +5 -0
- package/esm2020/lib/renderer/models/table-state.class.mjs +841 -0
- package/esm2020/lib/renderer/models/table-state.interface.mjs +5 -0
- package/esm2020/lib/renderer/models/table-types.mjs +29 -0
- package/esm2020/lib/renderer/models/table-validation-state.interface.mjs +7 -0
- package/esm2020/lib/renderer/models/workbook-state.class.mjs +174 -0
- package/esm2020/lib/renderer/models/workbook-state.interface.mjs +5 -0
- package/esm2020/lib/renderer/models/z-index.enum.mjs +55 -0
- package/esm2020/lib/schemas/table-config.schema.mjs +472 -0
- package/esm2020/lib/services/autosave.service.mjs +92 -0
- package/esm2020/lib/services/custom-validation-rules.util.mjs +124 -0
- package/esm2020/lib/services/json-schema-validator.service.mjs +216 -0
- package/esm2020/lib/services/row-validation.service.mjs +42 -0
- package/esm2020/lib/services/validation-logger.service.mjs +177 -0
- package/esm2020/lib/services/virtual-scroll.service.mjs +52 -0
- package/esm2020/lib/shared/shared-table-components.module.mjs +35 -0
- package/esm2020/lib/smart-table.module.mjs +124 -0
- package/esm2020/lib/strategies/default-editors.mjs +433 -0
- package/esm2020/lib/strategies/default-formatters.mjs +238 -0
- package/esm2020/lib/strategies/default-validators.mjs +327 -0
- package/esm2020/public-api.mjs +146 -0
- package/fesm2015/aquera-ngx-smart-table.mjs +11860 -0
- package/fesm2015/aquera-ngx-smart-table.mjs.map +1 -0
- package/fesm2020/aquera-ngx-smart-table.mjs +11897 -0
- package/fesm2020/aquera-ngx-smart-table.mjs.map +1 -0
- package/lib/builder/components/builder-preview/builder-preview.component.d.ts +31 -0
- package/lib/builder/components/builder-toolbar/builder-toolbar.component.d.ts +53 -0
- package/lib/builder/components/column-editor/column-editor.component.d.ts +69 -0
- package/lib/builder/components/column-list/column-list.component.d.ts +65 -0
- package/lib/builder/components/definition-builder/definition-builder.component.d.ts +58 -0
- package/lib/builder/components/table-config-editor/table-config-editor.component.d.ts +32 -0
- package/lib/builder/definition-builder.module.d.ts +15 -0
- package/lib/builder/models/builder-state.interface.d.ts +93 -0
- package/lib/builder/services/definition-builder.service.d.ts +80 -0
- package/lib/builder/services/definition-export.service.d.ts +59 -0
- package/lib/builder/services/definition-import.service.d.ts +31 -0
- package/lib/builder/services/sample-data-generator.service.d.ts +41 -0
- package/lib/builder/utils/config-validator.util.d.ts +32 -0
- package/lib/builder/utils/typescript-generator.util.d.ts +29 -0
- package/lib/editors/index.d.ts +8 -0
- package/lib/editors/nile-autocomplete-editor.d.ts +102 -0
- package/lib/editors/nile-calendar-editor.d.ts +89 -0
- package/lib/editors/nile-date-picker-editor.d.ts +95 -0
- package/lib/editors/nile-input-editor.d.ts +67 -0
- package/lib/editors/nile-select-editor.d.ts +109 -0
- package/lib/factories/column-config.factory.d.ts +73 -0
- package/lib/models/autosave-config.interface.d.ts +23 -0
- package/lib/models/base-column-config.class.d.ts +115 -0
- package/lib/models/cell-strategies.interface.d.ts +181 -0
- package/lib/models/cell-types.d.ts +337 -0
- package/lib/models/column-action.interface.d.ts +86 -0
- package/lib/models/column-config.interface.d.ts +272 -0
- package/lib/models/column-config.utils.d.ts +37 -0
- package/lib/models/row-action.interface.d.ts +86 -0
- package/lib/models/row-validator.interface.d.ts +37 -0
- package/lib/models/schema-validation.interface.d.ts +42 -0
- package/lib/models/sheet-action.interface.d.ts +59 -0
- package/lib/models/sheet-config.interface.d.ts +41 -0
- package/lib/models/table-config.interface.d.ts +245 -0
- package/lib/models/table-validator.interface.d.ts +40 -0
- package/lib/models/workbook-action.interface.d.ts +90 -0
- package/lib/models/workbook-config.interface.d.ts +107 -0
- package/lib/renderer/components/st-add-column-button/st-add-column-button.component.d.ts +9 -0
- package/lib/renderer/components/st-cell/st-cell.component.d.ts +69 -0
- package/lib/renderer/components/st-column-editor-modal/st-column-editor-modal.component.d.ts +39 -0
- package/lib/renderer/components/st-column-filter/st-column-filter.component.d.ts +139 -0
- package/lib/renderer/components/st-column-menu/st-column-menu.component.d.ts +81 -0
- package/lib/renderer/components/st-column-visibility/st-column-visibility.component.d.ts +44 -0
- package/lib/renderer/components/st-header/st-header.component.d.ts +93 -0
- package/lib/renderer/components/st-pagination/st-pagination.component.d.ts +42 -0
- package/lib/renderer/components/st-row-actions-dropdown/st-row-actions-dropdown.component.d.ts +67 -0
- package/lib/renderer/components/st-sheet/st-sheet.component.d.ts +98 -0
- package/lib/renderer/components/st-sheet-actions/st-sheet-actions.component.d.ts +58 -0
- package/lib/renderer/components/st-table/st-table.component.d.ts +349 -0
- package/lib/renderer/components/st-table-actions/st-table-actions.component.d.ts +77 -0
- package/lib/renderer/components/st-workbook/st-workbook.component.d.ts +235 -0
- package/lib/renderer/directives/click-outside.directive.d.ts +10 -0
- package/lib/renderer/directives/st-column-resize.directive.d.ts +44 -0
- package/lib/renderer/directives/st-keyboard-navigation.directive.d.ts +15 -0
- package/lib/renderer/models/cell-state.interface.d.ts +118 -0
- package/lib/renderer/models/cell.class.d.ts +174 -0
- package/lib/renderer/models/row-validation-state.interface.d.ts +27 -0
- package/lib/renderer/models/sheet-state.class.d.ts +67 -0
- package/lib/renderer/models/sheet-state.interface.d.ts +55 -0
- package/lib/renderer/models/table-state.class.d.ts +313 -0
- package/lib/renderer/models/table-state.interface.d.ts +18 -0
- package/lib/renderer/models/table-types.d.ts +228 -0
- package/lib/renderer/models/table-validation-state.interface.d.ts +34 -0
- package/lib/renderer/models/workbook-state.class.d.ts +117 -0
- package/lib/renderer/models/workbook-state.interface.d.ts +71 -0
- package/lib/renderer/models/z-index.enum.d.ts +44 -0
- package/lib/schemas/table-config.schema.d.ts +455 -0
- package/lib/services/autosave.service.d.ts +73 -0
- package/lib/services/custom-validation-rules.util.d.ts +12 -0
- package/lib/services/json-schema-validator.service.d.ts +49 -0
- package/lib/services/row-validation.service.d.ts +17 -0
- package/lib/services/validation-logger.service.d.ts +87 -0
- package/lib/services/virtual-scroll.service.d.ts +44 -0
- package/lib/shared/shared-table-components.module.d.ts +9 -0
- package/lib/smart-table.module.d.ts +26 -0
- package/lib/strategies/default-editors.d.ts +109 -0
- package/lib/strategies/default-formatters.d.ts +116 -0
- package/lib/strategies/default-validators.d.ts +113 -0
- package/package.json +42 -0
- package/public-api.d.ts +70 -0
- package/src/lib/builder/README.md +30 -0
- package/src/lib/editors/README.md +303 -0
- package/src/lib/renderer/components/st-column-filter/README.md +286 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class StTableActionsComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.allowAddColumn = false;
|
|
7
|
+
this.addColumnClicked = new EventEmitter();
|
|
8
|
+
this.isOpen = false;
|
|
9
|
+
this.currentView = 'main';
|
|
10
|
+
this.columnsVisibility = [];
|
|
11
|
+
/**
|
|
12
|
+
* Dropdown positioning style
|
|
13
|
+
*/
|
|
14
|
+
this.dropdownStyle = {};
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
if (!this.tableState) {
|
|
18
|
+
console.warn('tableState is required for st-table-actions component');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Initialize with current state
|
|
22
|
+
this.updateColumnsVisibility();
|
|
23
|
+
// Subscribe to state changes to update visibility list
|
|
24
|
+
this.subscribeToStateChanges();
|
|
25
|
+
}
|
|
26
|
+
ngOnDestroy() {
|
|
27
|
+
this.stateSubscription?.unsubscribe();
|
|
28
|
+
// Re-enable body scroll if component is destroyed while menu is open
|
|
29
|
+
if (this.isOpen) {
|
|
30
|
+
document.body.style.overflow = '';
|
|
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
|
+
/**
|
|
55
|
+
* Toggle menu open/close
|
|
56
|
+
*/
|
|
57
|
+
toggleMenu(event) {
|
|
58
|
+
event.stopPropagation();
|
|
59
|
+
this.isOpen = !this.isOpen;
|
|
60
|
+
if (this.isOpen) {
|
|
61
|
+
this.currentView = 'main';
|
|
62
|
+
this.updateDropdownPosition(event);
|
|
63
|
+
// Disable body scroll when menu opens
|
|
64
|
+
document.body.style.overflow = 'hidden';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// Re-enable body scroll when menu closes
|
|
68
|
+
document.body.style.overflow = '';
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Update dropdown position based on trigger button
|
|
73
|
+
*/
|
|
74
|
+
updateDropdownPosition(event) {
|
|
75
|
+
const button = event.currentTarget;
|
|
76
|
+
const rect = button.getBoundingClientRect();
|
|
77
|
+
const viewportWidth = window.innerWidth;
|
|
78
|
+
const viewportHeight = window.innerHeight;
|
|
79
|
+
const dropdownWidth = 280;
|
|
80
|
+
const dropdownHeight = 400;
|
|
81
|
+
let x = rect.left;
|
|
82
|
+
let y = rect.bottom + 5;
|
|
83
|
+
// Adjust horizontal position if dropdown would overflow
|
|
84
|
+
if (x + dropdownWidth > viewportWidth) {
|
|
85
|
+
x = Math.max(10, viewportWidth - dropdownWidth - 10);
|
|
86
|
+
}
|
|
87
|
+
// Adjust vertical position if dropdown would overflow
|
|
88
|
+
if (y + dropdownHeight > viewportHeight) {
|
|
89
|
+
y = rect.top - dropdownHeight - 5;
|
|
90
|
+
}
|
|
91
|
+
this.dropdownStyle = {
|
|
92
|
+
position: 'fixed',
|
|
93
|
+
left: `${x}px`,
|
|
94
|
+
top: `${y}px`,
|
|
95
|
+
'z-index': 9999
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Close menu
|
|
100
|
+
*/
|
|
101
|
+
closeMenu() {
|
|
102
|
+
this.isOpen = false;
|
|
103
|
+
this.currentView = 'main';
|
|
104
|
+
// Re-enable body scroll when menu closes
|
|
105
|
+
document.body.style.overflow = '';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Handle add column action
|
|
109
|
+
*/
|
|
110
|
+
onAddColumn(event) {
|
|
111
|
+
event.stopPropagation();
|
|
112
|
+
this.addColumnClicked.emit();
|
|
113
|
+
this.closeMenu();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Open column visibility submenu
|
|
117
|
+
*/
|
|
118
|
+
openColumnsSubmenu(event) {
|
|
119
|
+
event.stopPropagation();
|
|
120
|
+
this.currentView = 'columns';
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Go back to main menu
|
|
124
|
+
*/
|
|
125
|
+
backToMain(event) {
|
|
126
|
+
event.stopPropagation();
|
|
127
|
+
this.currentView = 'main';
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Toggle column visibility
|
|
131
|
+
*/
|
|
132
|
+
onToggleColumn(columnKey, event) {
|
|
133
|
+
event.stopPropagation();
|
|
134
|
+
// Check if column is hideable before toggling
|
|
135
|
+
const column = this.columnsVisibility.find(col => col.key === columnKey);
|
|
136
|
+
if (column && column.hideable !== false) {
|
|
137
|
+
if (this.tableState) {
|
|
138
|
+
this.tableState.toggleColumnVisibility(columnKey);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check if column is visible
|
|
144
|
+
*/
|
|
145
|
+
isColumnVisible(columnKey) {
|
|
146
|
+
if (!this.tableState) {
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
const column = this.tableState.getColumns().find(col => col.key === columnKey);
|
|
150
|
+
return column ? (column.visible !== false) : true;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Check if column is hideable
|
|
154
|
+
*/
|
|
155
|
+
isColumnHideable(column) {
|
|
156
|
+
return column.hideable !== false; // Default to true if not set
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
StTableActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StTableActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
160
|
+
StTableActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: StTableActionsComponent, selector: "st-table-actions", inputs: { tableState: "tableState", allowAddColumn: "allowAddColumn" }, outputs: { addColumnClicked: "addColumnClicked" }, ngImport: i0, template: "<button \n class=\"table-actions-button\"\n (click)=\"toggleMenu($event)\"\n type=\"button\"\n title=\"Table Actions\"\n aria-label=\"Table actions menu\"\n [class.active]=\"isOpen\">\n <nile-icon name=\"settings\"></nile-icon>\n</button>\n\n<!-- Dropdown container with shared pattern -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closeMenu()\"></div>\n \n <!-- Main Menu -->\n <div class=\"dropdown-menu\" *ngIf=\"currentView === 'main'\" [ngStyle]=\"dropdownStyle\">\n <nile-menu>\n <!-- Add Column -->\n <nile-menu-item *ngIf=\"allowAddColumn\" (click)=\"onAddColumn($event)\">\n <nile-icon slot=\"prefix\" name=\"plus\" size=\"12\"></nile-icon>\n Add Column\n </nile-menu-item>\n \n <!-- Show/Hide Columns -->\n <nile-menu-item (click)=\"openColumnsSubmenu($event)\">\n <nile-icon size=\"12\" slot=\"prefix\" name=\"eye\"></nile-icon>\n Show/Hide Columns\n </nile-menu-item>\n </nile-menu>\n </div>\n \n <!-- Column Visibility Submenu -->\n <div class=\"dropdown-menu\" *ngIf=\"currentView === 'columns'\" [ngStyle]=\"dropdownStyle\">\n <nile-menu>\n <!-- Back button -->\n <nile-menu-item (click)=\"backToMain($event)\" class=\"back-item\">\n <nile-icon size=\"12\" slot=\"prefix\" name=\"chevron-left\"></nile-icon>\n Back\n </nile-menu-item>\n \n <nile-divider></nile-divider>\n \n <!-- Column checkboxes -->\n <nile-menu-item \n *ngFor=\"let column of columnsVisibility\"\n [class.disabled]=\"!isColumnHideable(column)\"\n (click)=\"onToggleColumn(column.key, $event)\">\n <nile-checkbox \n [checked]=\"isColumnVisible(column.key)\" \n [disabled]=\"!isColumnHideable(column)\" \n [label]=\"column.header || column.key\" \n (nile-change)=\"onToggleColumn(column.key, $event)\">\n </nile-checkbox>\n </nile-menu-item>\n </nile-menu>\n </div>\n</div>\n\n", styles: [".table-actions-button{display:flex;align-items:center;justify-content:center;padding:6px;background:transparent;border:none;cursor:pointer;transition:background-color .15s}.table-actions-button:hover{background-color:#0000000d}.table-actions-button.active{background-color:#0000001a}.table-actions-button:focus{outline:none}.dropdown-container{position:fixed;inset:0;z-index:9996}.dropdown-backdrop{position:absolute;inset:0;background:transparent;pointer-events:auto;z-index:9996}.dropdown-menu{position:fixed;pointer-events:auto;z-index:9997;min-width:15rem}nile-menu{max-height:30rem;overflow-y:auto}nile-menu::part(base){width:fit-content;min-height:auto}nile-menu nile-menu-item::part(base){min-height:2.5rem}nile-menu nile-menu-item::part(label){font-size:12px}nile-menu nile-menu-item.back-item{font-weight:500}nile-menu nile-menu-item.disabled{opacity:.5;cursor:not-allowed}nile-menu nile-menu-item nile-checkbox::part(base){display:flex;align-items:center}nile-menu nile-menu-item nile-checkbox::part(label){font-size:12px;margin-top:0}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: StTableActionsComponent, decorators: [{
|
|
162
|
+
type: Component,
|
|
163
|
+
args: [{ selector: 'st-table-actions', template: "<button \n class=\"table-actions-button\"\n (click)=\"toggleMenu($event)\"\n type=\"button\"\n title=\"Table Actions\"\n aria-label=\"Table actions menu\"\n [class.active]=\"isOpen\">\n <nile-icon name=\"settings\"></nile-icon>\n</button>\n\n<!-- Dropdown container with shared pattern -->\n<div class=\"dropdown-container\" *ngIf=\"isOpen\">\n <!-- Backdrop -->\n <div class=\"dropdown-backdrop\" (click)=\"closeMenu()\"></div>\n \n <!-- Main Menu -->\n <div class=\"dropdown-menu\" *ngIf=\"currentView === 'main'\" [ngStyle]=\"dropdownStyle\">\n <nile-menu>\n <!-- Add Column -->\n <nile-menu-item *ngIf=\"allowAddColumn\" (click)=\"onAddColumn($event)\">\n <nile-icon slot=\"prefix\" name=\"plus\" size=\"12\"></nile-icon>\n Add Column\n </nile-menu-item>\n \n <!-- Show/Hide Columns -->\n <nile-menu-item (click)=\"openColumnsSubmenu($event)\">\n <nile-icon size=\"12\" slot=\"prefix\" name=\"eye\"></nile-icon>\n Show/Hide Columns\n </nile-menu-item>\n </nile-menu>\n </div>\n \n <!-- Column Visibility Submenu -->\n <div class=\"dropdown-menu\" *ngIf=\"currentView === 'columns'\" [ngStyle]=\"dropdownStyle\">\n <nile-menu>\n <!-- Back button -->\n <nile-menu-item (click)=\"backToMain($event)\" class=\"back-item\">\n <nile-icon size=\"12\" slot=\"prefix\" name=\"chevron-left\"></nile-icon>\n Back\n </nile-menu-item>\n \n <nile-divider></nile-divider>\n \n <!-- Column checkboxes -->\n <nile-menu-item \n *ngFor=\"let column of columnsVisibility\"\n [class.disabled]=\"!isColumnHideable(column)\"\n (click)=\"onToggleColumn(column.key, $event)\">\n <nile-checkbox \n [checked]=\"isColumnVisible(column.key)\" \n [disabled]=\"!isColumnHideable(column)\" \n [label]=\"column.header || column.key\" \n (nile-change)=\"onToggleColumn(column.key, $event)\">\n </nile-checkbox>\n </nile-menu-item>\n </nile-menu>\n </div>\n</div>\n\n", styles: [".table-actions-button{display:flex;align-items:center;justify-content:center;padding:6px;background:transparent;border:none;cursor:pointer;transition:background-color .15s}.table-actions-button:hover{background-color:#0000000d}.table-actions-button.active{background-color:#0000001a}.table-actions-button:focus{outline:none}.dropdown-container{position:fixed;inset:0;z-index:9996}.dropdown-backdrop{position:absolute;inset:0;background:transparent;pointer-events:auto;z-index:9996}.dropdown-menu{position:fixed;pointer-events:auto;z-index:9997;min-width:15rem}nile-menu{max-height:30rem;overflow-y:auto}nile-menu::part(base){width:fit-content;min-height:auto}nile-menu nile-menu-item::part(base){min-height:2.5rem}nile-menu nile-menu-item::part(label){font-size:12px}nile-menu nile-menu-item.back-item{font-weight:500}nile-menu nile-menu-item.disabled{opacity:.5;cursor:not-allowed}nile-menu nile-menu-item nile-checkbox::part(base){display:flex;align-items:center}nile-menu nile-menu-item nile-checkbox::part(label){font-size:12px;margin-top:0}\n"] }]
|
|
164
|
+
}], ctorParameters: function () { return []; }, propDecorators: { tableState: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], allowAddColumn: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], addColumnClicked: [{
|
|
169
|
+
type: Output
|
|
170
|
+
}] } });
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtdGFibGUtYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC10YWJsZS9zcmMvbGliL3JlbmRlcmVyL2NvbXBvbmVudHMvc3QtdGFibGUtYWN0aW9ucy9zdC10YWJsZS1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LXRhYmxlL3NyYy9saWIvcmVuZGVyZXIvY29tcG9uZW50cy9zdC10YWJsZS1hY3Rpb25zL3N0LXRhYmxlLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7OztBQVcxRixNQUFNLE9BQU8sdUJBQXVCO0lBaUJsQztRQWZTLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRS9CLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFdEQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGdCQUFXLEdBQWEsTUFBTSxDQUFDO1FBQy9CLHNCQUFpQixHQUEyRSxFQUFFLENBQUM7UUFFL0Y7O1dBRUc7UUFDSCxrQkFBYSxHQUFRLEVBQUUsQ0FBQztJQUlULENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQztZQUN0RSxPQUFPO1NBQ1I7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFFL0IsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLHFFQUFxRTtRQUNyRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCO1FBQzdCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWTthQUNsRCxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZSxFQUFFO2dCQUN4RSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQVk7UUFDckIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFtQixDQUFDLENBQUM7WUFDakQsc0NBQXNDO1lBQ3RDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDekM7YUFBTTtZQUNMLHlDQUF5QztZQUN6QyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsS0FBaUI7UUFDOUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGFBQTRCLENBQUM7UUFDbEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFNUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztRQUMxQixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7UUFFM0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUV4Qix3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLEdBQUcsYUFBYSxHQUFHLGFBQWEsRUFBRTtZQUNyQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsYUFBYSxHQUFHLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUN0RDtRQUVELHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsR0FBRyxjQUFjLEdBQUcsY0FBYyxFQUFFO1lBQ3ZDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNiLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7UUFDMUIseUNBQXlDO1FBQ3pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEtBQVk7UUFDdEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsS0FBWTtRQUM3QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQVk7UUFDckIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxTQUFpQixFQUFFLEtBQVk7UUFDNUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLDhDQUE4QztRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUN6RSxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTtZQUN2QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDbkQ7U0FDRjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBQyxNQUE0RTtRQUMzRixPQUFPLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLENBQUMsNkJBQTZCO0lBQ2pFLENBQUM7O29IQW5MVSx1QkFBdUI7d0dBQXZCLHVCQUF1QixtTENYcEMsa2dFQTJEQTsyRkRoRGEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQjswRUFLbkIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZS1zdGF0ZS5jbGFzcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxudHlwZSBNZW51VmlldyA9ICdtYWluJyB8ICdjb2x1bW5zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3QtdGFibGUtYWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdC10YWJsZS1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3QtdGFibGUtYWN0aW9ucy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFN0VGFibGVBY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB0YWJsZVN0YXRlITogVGFibGVTdGF0ZTtcbiAgQElucHV0KCkgYWxsb3dBZGRDb2x1bW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIEBPdXRwdXQoKSBhZGRDb2x1bW5DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBcbiAgaXNPcGVuID0gZmFsc2U7XG4gIGN1cnJlbnRWaWV3OiBNZW51VmlldyA9ICdtYWluJztcbiAgY29sdW1uc1Zpc2liaWxpdHk6IHsga2V5OiBzdHJpbmc7IGhlYWRlcjogc3RyaW5nOyB2aXNpYmxlOiBib29sZWFuOyBoaWRlYWJsZTogYm9vbGVhbiB9W10gPSBbXTtcbiAgXG4gIC8qKlxuICAgKiBEcm9wZG93biBwb3NpdGlvbmluZyBzdHlsZVxuICAgKi9cbiAgZHJvcGRvd25TdHlsZTogYW55ID0ge307XG4gIFxuICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBcbiAgY29uc3RydWN0b3IoKSB7fVxuICBcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYmxlU3RhdGUpIHtcbiAgICAgIGNvbnNvbGUud2FybigndGFibGVTdGF0ZSBpcyByZXF1aXJlZCBmb3Igc3QtdGFibGUtYWN0aW9ucyBjb21wb25lbnQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gSW5pdGlhbGl6ZSB3aXRoIGN1cnJlbnQgc3RhdGVcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KCk7XG4gICAgXG4gICAgLy8gU3Vic2NyaWJlIHRvIHN0YXRlIGNoYW5nZXMgdG8gdXBkYXRlIHZpc2liaWxpdHkgbGlzdFxuICAgIHRoaXMuc3Vic2NyaWJlVG9TdGF0ZUNoYW5nZXMoKTtcbiAgfVxuICBcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAvLyBSZS1lbmFibGUgYm9keSBzY3JvbGwgaWYgY29tcG9uZW50IGlzIGRlc3Ryb3llZCB3aGlsZSBtZW51IGlzIG9wZW5cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBVcGRhdGUgY29sdW1ucyB2aXNpYmlsaXR5IGxpc3QgZnJvbSBjdXJyZW50IHRhYmxlIHN0YXRlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnNWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYmxlU3RhdGUpIHtcbiAgICAgIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkgPSB0aGlzLnRhYmxlU3RhdGUuZ2V0QWxsQ29sdW1uc1Zpc2liaWxpdHkoKTtcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGFibGUgc3RhdGUgY2hhbmdlc1xuICAgKi9cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1N0YXRlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFibGVTdGF0ZSkgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnRhYmxlU3RhdGUuc3RhdGVDaGFuZ2UkXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb2x1bW4tdmlzaWJpbGl0eScgfHwgZXZlbnQudHlwZSA9PT0gJ2NvbHVtbi1jb25maWcnKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5zVmlzaWJpbGl0eSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIFRvZ2dsZSBtZW51IG9wZW4vY2xvc2VcbiAgICovXG4gIHRvZ2dsZU1lbnUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pc09wZW4gPSAhdGhpcy5pc09wZW47XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICB0aGlzLmN1cnJlbnRWaWV3ID0gJ21haW4nO1xuICAgICAgdGhpcy51cGRhdGVEcm9wZG93blBvc2l0aW9uKGV2ZW50IGFzIE1vdXNlRXZlbnQpO1xuICAgICAgLy8gRGlzYWJsZSBib2R5IHNjcm9sbCB3aGVuIG1lbnUgb3BlbnNcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUtZW5hYmxlIGJvZHkgc2Nyb2xsIHdoZW4gbWVudSBjbG9zZXNcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJztcbiAgICB9XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBVcGRhdGUgZHJvcGRvd24gcG9zaXRpb24gYmFzZWQgb24gdHJpZ2dlciBidXR0b25cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgcmVjdCA9IGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgY29uc3QgZHJvcGRvd25XaWR0aCA9IDI4MDtcbiAgICBjb25zdCBkcm9wZG93bkhlaWdodCA9IDQwMDtcbiAgICBcbiAgICBsZXQgeCA9IHJlY3QubGVmdDtcbiAgICBsZXQgeSA9IHJlY3QuYm90dG9tICsgNTtcbiAgICBcbiAgICAvLyBBZGp1c3QgaG9yaXpvbnRhbCBwb3NpdGlvbiBpZiBkcm9wZG93biB3b3VsZCBvdmVyZmxvd1xuICAgIGlmICh4ICsgZHJvcGRvd25XaWR0aCA+IHZpZXdwb3J0V2lkdGgpIHtcbiAgICAgIHggPSBNYXRoLm1heCgxMCwgdmlld3BvcnRXaWR0aCAtIGRyb3Bkb3duV2lkdGggLSAxMCk7XG4gICAgfVxuICAgIFxuICAgIC8vIEFkanVzdCB2ZXJ0aWNhbCBwb3NpdGlvbiBpZiBkcm9wZG93biB3b3VsZCBvdmVyZmxvd1xuICAgIGlmICh5ICsgZHJvcGRvd25IZWlnaHQgPiB2aWV3cG9ydEhlaWdodCkge1xuICAgICAgeSA9IHJlY3QudG9wIC0gZHJvcGRvd25IZWlnaHQgLSA1O1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmRyb3Bkb3duU3R5bGUgPSB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICd6LWluZGV4JzogOTk5OVxuICAgIH07XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDbG9zZSBtZW51XG4gICAqL1xuICBjbG9zZU1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnRWaWV3ID0gJ21haW4nO1xuICAgIC8vIFJlLWVuYWJsZSBib2R5IHNjcm9sbCB3aGVuIG1lbnUgY2xvc2VzXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xuICB9XG4gIFxuICAvKipcbiAgICogSGFuZGxlIGFkZCBjb2x1bW4gYWN0aW9uXG4gICAqL1xuICBvbkFkZENvbHVtbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFkZENvbHVtbkNsaWNrZWQuZW1pdCgpO1xuICAgIHRoaXMuY2xvc2VNZW51KCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBPcGVuIGNvbHVtbiB2aXNpYmlsaXR5IHN1Ym1lbnVcbiAgICovXG4gIG9wZW5Db2x1bW5zU3VibWVudShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmN1cnJlbnRWaWV3ID0gJ2NvbHVtbnMnO1xuICB9XG4gIFxuICAvKipcbiAgICogR28gYmFjayB0byBtYWluIG1lbnVcbiAgICovXG4gIGJhY2tUb01haW4oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5jdXJyZW50VmlldyA9ICdtYWluJztcbiAgfVxuICBcbiAgLyoqXG4gICAqIFRvZ2dsZSBjb2x1bW4gdmlzaWJpbGl0eVxuICAgKi9cbiAgb25Ub2dnbGVDb2x1bW4oY29sdW1uS2V5OiBzdHJpbmcsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGNvbHVtbiBpcyBoaWRlYWJsZSBiZWZvcmUgdG9nZ2xpbmdcbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnNWaXNpYmlsaXR5LmZpbmQoY29sID0+IGNvbC5rZXkgPT09IGNvbHVtbktleSk7XG4gICAgaWYgKGNvbHVtbiAmJiBjb2x1bW4uaGlkZWFibGUgIT09IGZhbHNlKSB7XG4gICAgICBpZiAodGhpcy50YWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMudGFibGVTdGF0ZS50b2dnbGVDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbktleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICAvKipcbiAgICogQ2hlY2sgaWYgY29sdW1uIGlzIHZpc2libGVcbiAgICovXG4gIGlzQ29sdW1uVmlzaWJsZShjb2x1bW5LZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy50YWJsZVN0YXRlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy50YWJsZVN0YXRlLmdldENvbHVtbnMoKS5maW5kKGNvbCA9PiBjb2wua2V5ID09PSBjb2x1bW5LZXkpO1xuICAgIHJldHVybiBjb2x1bW4gPyAoY29sdW1uLnZpc2libGUgIT09IGZhbHNlKSA6IHRydWU7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjb2x1bW4gaXMgaGlkZWFibGVcbiAgICovXG4gIGlzQ29sdW1uSGlkZWFibGUoY29sdW1uOiB7IGtleTogc3RyaW5nOyBoZWFkZXI6IHN0cmluZzsgdmlzaWJsZTogYm9vbGVhbjsgaGlkZWFibGU6IGJvb2xlYW4gfSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2x1bW4uaGlkZWFibGUgIT09IGZhbHNlOyAvLyBEZWZhdWx0IHRvIHRydWUgaWYgbm90IHNldFxuICB9XG59XG5cbiIsIjxidXR0b24gXG4gIGNsYXNzPVwidGFibGUtYWN0aW9ucy1idXR0b25cIlxuICAoY2xpY2spPVwidG9nZ2xlTWVudSgkZXZlbnQpXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIHRpdGxlPVwiVGFibGUgQWN0aW9uc1wiXG4gIGFyaWEtbGFiZWw9XCJUYWJsZSBhY3Rpb25zIG1lbnVcIlxuICBbY2xhc3MuYWN0aXZlXT1cImlzT3BlblwiPlxuICA8bmlsZS1pY29uIG5hbWU9XCJzZXR0aW5nc1wiPjwvbmlsZS1pY29uPlxuPC9idXR0b24+XG5cbjwhLS0gRHJvcGRvd24gY29udGFpbmVyIHdpdGggc2hhcmVkIHBhdHRlcm4gLS0+XG48ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGFpbmVyXCIgKm5nSWY9XCJpc09wZW5cIj5cbiAgPCEtLSBCYWNrZHJvcCAtLT5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWJhY2tkcm9wXCIgKGNsaWNrKT1cImNsb3NlTWVudSgpXCI+PC9kaXY+XG4gIFxuICA8IS0tIE1haW4gTWVudSAtLT5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiAqbmdJZj1cImN1cnJlbnRWaWV3ID09PSAnbWFpbidcIiBbbmdTdHlsZV09XCJkcm9wZG93blN0eWxlXCI+XG4gICAgPG5pbGUtbWVudT5cbiAgICAgIDwhLS0gQWRkIENvbHVtbiAtLT5cbiAgICAgIDxuaWxlLW1lbnUtaXRlbSAqbmdJZj1cImFsbG93QWRkQ29sdW1uXCIgKGNsaWNrKT1cIm9uQWRkQ29sdW1uKCRldmVudClcIj5cbiAgICAgICAgPG5pbGUtaWNvbiBzbG90PVwicHJlZml4XCIgbmFtZT1cInBsdXNcIiBzaXplPVwiMTJcIj48L25pbGUtaWNvbj5cbiAgICAgICAgQWRkIENvbHVtblxuICAgICAgPC9uaWxlLW1lbnUtaXRlbT5cbiAgICAgIFxuICAgICAgPCEtLSBTaG93L0hpZGUgQ29sdW1ucyAtLT5cbiAgICAgIDxuaWxlLW1lbnUtaXRlbSAoY2xpY2spPVwib3BlbkNvbHVtbnNTdWJtZW51KCRldmVudClcIj5cbiAgICAgICAgPG5pbGUtaWNvbiBzaXplPVwiMTJcIiBzbG90PVwicHJlZml4XCIgbmFtZT1cImV5ZVwiPjwvbmlsZS1pY29uPlxuICAgICAgICBTaG93L0hpZGUgQ29sdW1uc1xuICAgICAgPC9uaWxlLW1lbnUtaXRlbT5cbiAgICA8L25pbGUtbWVudT5cbiAgPC9kaXY+XG4gIFxuICA8IS0tIENvbHVtbiBWaXNpYmlsaXR5IFN1Ym1lbnUgLS0+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgKm5nSWY9XCJjdXJyZW50VmlldyA9PT0gJ2NvbHVtbnMnXCIgW25nU3R5bGVdPVwiZHJvcGRvd25TdHlsZVwiPlxuICAgIDxuaWxlLW1lbnU+XG4gICAgICA8IS0tIEJhY2sgYnV0dG9uIC0tPlxuICAgICAgPG5pbGUtbWVudS1pdGVtIChjbGljayk9XCJiYWNrVG9NYWluKCRldmVudClcIiBjbGFzcz1cImJhY2staXRlbVwiPlxuICAgICAgICA8bmlsZS1pY29uIHNpemU9XCIxMlwiIHNsb3Q9XCJwcmVmaXhcIiBuYW1lPVwiY2hldnJvbi1sZWZ0XCI+PC9uaWxlLWljb24+XG4gICAgICAgIEJhY2tcbiAgICAgIDwvbmlsZS1tZW51LWl0ZW0+XG4gICAgICBcbiAgICAgIDxuaWxlLWRpdmlkZXI+PC9uaWxlLWRpdmlkZXI+XG4gICAgICBcbiAgICAgIDwhLS0gQ29sdW1uIGNoZWNrYm94ZXMgLS0+XG4gICAgICA8bmlsZS1tZW51LWl0ZW0gXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1Zpc2liaWxpdHlcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzQ29sdW1uSGlkZWFibGUoY29sdW1uKVwiXG4gICAgICAgIChjbGljayk9XCJvblRvZ2dsZUNvbHVtbihjb2x1bW4ua2V5LCAkZXZlbnQpXCI+XG4gICAgICAgIDxuaWxlLWNoZWNrYm94IFxuICAgICAgICBbY2hlY2tlZF09XCJpc0NvbHVtblZpc2libGUoY29sdW1uLmtleSlcIiBcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0NvbHVtbkhpZGVhYmxlKGNvbHVtbilcIiBcbiAgICAgICAgW2xhYmVsXT1cImNvbHVtbi5oZWFkZXIgfHwgY29sdW1uLmtleVwiIFxuICAgICAgICAobmlsZS1jaGFuZ2UpPVwib25Ub2dnbGVDb2x1bW4oY29sdW1uLmtleSwgJGV2ZW50KVwiPlxuICAgICAgPC9uaWxlLWNoZWNrYm94PlxuICAgICAgPC9uaWxlLW1lbnUtaXRlbT5cbiAgICA8L25pbGUtbWVudT5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19
|