ms-data-grid 0.0.41 → 0.0.42
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/esm2022/lib/data-grid/data-grid.component.mjs +1322 -387
- package/esm2022/lib/data-grid/statuses.mjs +3 -2
- package/esm2022/lib/data-grid.module.mjs +7 -7
- package/esm2022/lib/pipes/filter.pipe.mjs +1 -1
- package/esm2022/lib/services/common.service.mjs +37 -8
- package/esm2022/lib/services/copy-service.service.mjs +3 -3
- package/esm2022/lib/services/export.service.mjs +149 -0
- package/esm2022/public-api.mjs +1 -3
- package/fesm2022/ms-data-grid.mjs +1511 -670
- package/fesm2022/ms-data-grid.mjs.map +1 -1
- package/lib/data-grid/data-grid.component.d.ts +96 -35
- package/lib/data-grid.module.d.ts +6 -7
- package/lib/services/export.service.d.ts +24 -0
- package/package.json +8 -2
- package/public-api.d.ts +0 -2
- package/esm2022/lib/data-grid.service.mjs +0 -14
- package/esm2022/lib/directives/draggable-header.directive.mjs +0 -145
- package/esm2022/lib/services/swap-columns.service.mjs +0 -118
- package/lib/data-grid.service.d.ts +0 -6
- package/lib/directives/draggable-header.directive.d.ts +0 -31
- package/lib/services/swap-columns.service.d.ts +0 -19
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
import { OnChanges, SimpleChanges, ElementRef, AfterViewInit, ChangeDetectorRef, EventEmitter, NgZone } from '@angular/core';
|
|
1
|
+
import { OnInit, OnChanges, SimpleChanges, ElementRef, AfterViewInit, ChangeDetectorRef, EventEmitter, NgZone, Renderer2, AfterViewChecked, TemplateRef } from '@angular/core';
|
|
2
2
|
import { SplitColumnsService } from '../services/split-columns.service';
|
|
3
3
|
import { CommonService } from '../services/common.service';
|
|
4
|
-
import { SwapColumnsService } from '../services/swap-columns.service';
|
|
5
4
|
import { CdkDrag, CdkDragDrop, CdkDragEnter, CdkDragExit, CdkDragMove, CdkDragSortEvent } from '@angular/cdk/drag-drop';
|
|
6
5
|
import { CdkDropList } from '@angular/cdk/drag-drop';
|
|
7
6
|
import { CopyServiceService } from '../services/copy-service.service';
|
|
7
|
+
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
|
8
|
+
import { ExportService } from '../services/export.service';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export declare const sortingAnimation: import("@angular/animations").AnimationTriggerMetadata;
|
|
10
|
-
export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
11
|
+
export declare class DataGridComponent implements OnChanges, AfterViewInit, OnInit, AfterViewChecked {
|
|
11
12
|
private columnService;
|
|
12
13
|
cdr: ChangeDetectorRef;
|
|
13
14
|
commonSevice: CommonService;
|
|
14
|
-
private swapColumnService;
|
|
15
15
|
private elementRef;
|
|
16
16
|
private ngZone;
|
|
17
17
|
private copyService;
|
|
18
|
+
private renderer;
|
|
19
|
+
private sanitizer;
|
|
20
|
+
private exportService;
|
|
18
21
|
paginationConfig: any;
|
|
19
22
|
dataSet: any[];
|
|
20
23
|
columns: any[];
|
|
@@ -33,12 +36,14 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
33
36
|
sidemenuBackgroundColor: string | undefined;
|
|
34
37
|
bodyTextColor: string | undefined;
|
|
35
38
|
headerTextColor: string | undefined;
|
|
39
|
+
checkboxesColor: string | undefined;
|
|
36
40
|
headerTextFontsSize: number | undefined;
|
|
37
41
|
bodyTextFontsSize: number | undefined;
|
|
38
42
|
headerFontWeight: number | undefined;
|
|
39
43
|
bodyFontWeight: number | undefined;
|
|
40
44
|
checkedRowBackgroundColor: string | undefined;
|
|
41
45
|
dropdownsBackgroundColor: string | undefined;
|
|
46
|
+
footerRowBackgroundColor: string | undefined;
|
|
42
47
|
footerRowHeight: number;
|
|
43
48
|
topGroupedBadgesBackgroundColor: string | undefined;
|
|
44
49
|
showRowsGrouping: boolean | undefined;
|
|
@@ -87,12 +92,24 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
87
92
|
leftPinnedBoxshadow: string;
|
|
88
93
|
rightPinnedBoxshadow: string;
|
|
89
94
|
selectedRowsBackgroundColor: string;
|
|
90
|
-
|
|
95
|
+
nestedTableHeaderBackgroundColor: string;
|
|
96
|
+
nestedTableRowBackgroundColor: string;
|
|
91
97
|
tableView: any[];
|
|
98
|
+
buttons: {
|
|
99
|
+
name: string;
|
|
100
|
+
is_showIcon: boolean;
|
|
101
|
+
icon: string;
|
|
102
|
+
}[];
|
|
92
103
|
keepMultipleExpandedDetails: boolean;
|
|
93
104
|
showTotalAmountRow: boolean;
|
|
105
|
+
enableGlobalSearch: boolean;
|
|
94
106
|
tableType: string;
|
|
95
|
-
|
|
107
|
+
enableExport: boolean;
|
|
108
|
+
enableCut: boolean;
|
|
109
|
+
tabs: string[];
|
|
110
|
+
resetAllFilters: {
|
|
111
|
+
resetAll: boolean;
|
|
112
|
+
};
|
|
96
113
|
columnThreedotsMunuConfig: {
|
|
97
114
|
showPinleft: boolean;
|
|
98
115
|
showPinright: boolean;
|
|
@@ -111,6 +128,7 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
111
128
|
tablePresetConfig: EventEmitter<any>;
|
|
112
129
|
sortingOrderOptions: EventEmitter<any>;
|
|
113
130
|
createUpdateConfigListing: EventEmitter<any>;
|
|
131
|
+
activeTab: string | null;
|
|
114
132
|
groupedColumns: any[];
|
|
115
133
|
activeCol: any;
|
|
116
134
|
activeFilterCell: any;
|
|
@@ -126,22 +144,29 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
126
144
|
filterColumnsList: any[];
|
|
127
145
|
groupBoxPadding: number;
|
|
128
146
|
presetName: string;
|
|
129
|
-
presetFilter:
|
|
147
|
+
presetFilter: boolean;
|
|
130
148
|
searchTextPresetTable: string;
|
|
131
149
|
addFilterColumnInput: string;
|
|
132
150
|
searchInDropdown: string;
|
|
133
151
|
addFilterDropdownSearch: string;
|
|
134
152
|
topShowHideColumns: string;
|
|
135
153
|
choseColumnsSearch: string;
|
|
154
|
+
sideNestedFilterSearch: string;
|
|
136
155
|
editinDropdownSearch: string;
|
|
137
156
|
isThreeDotsFilterOpen: boolean;
|
|
138
157
|
confirmDelete: boolean;
|
|
139
158
|
fontFamilies: string[];
|
|
140
159
|
fontSizes: string[];
|
|
141
|
-
|
|
160
|
+
hasScroll: boolean;
|
|
161
|
+
constructor(columnService: SplitColumnsService, cdr: ChangeDetectorRef, commonSevice: CommonService, elementRef: ElementRef, ngZone: NgZone, copyService: CopyServiceService, renderer: Renderer2, sanitizer: DomSanitizer, exportService: ExportService);
|
|
142
162
|
cellText: ElementRef;
|
|
143
|
-
|
|
163
|
+
nestedHeader: ElementRef;
|
|
164
|
+
ngAfterViewInit(): void;
|
|
165
|
+
ngAfterViewChecked(): void;
|
|
166
|
+
ngOnInit(): void;
|
|
144
167
|
ngOnChanges(changes: SimpleChanges): Promise<void>;
|
|
168
|
+
applyRowsSelectionState(): void;
|
|
169
|
+
clearSelectionState(tableType: string): void;
|
|
145
170
|
applyFilteroptionList(): Promise<void>;
|
|
146
171
|
leftPinnedColumns: any[];
|
|
147
172
|
centerColumns: any[];
|
|
@@ -150,6 +175,8 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
150
175
|
previewCenterColumns: any[];
|
|
151
176
|
previewRightPinnedColumns: any[];
|
|
152
177
|
dataGridContainer: ElementRef<HTMLDivElement>;
|
|
178
|
+
taskManagementContainer: ElementRef<HTMLDivElement>;
|
|
179
|
+
nestedTableContainer: ElementRef<HTMLDivElement>;
|
|
153
180
|
leftPinnedBody: ElementRef<HTMLDivElement>;
|
|
154
181
|
centerPinnedBody: ElementRef<HTMLDivElement>;
|
|
155
182
|
rightPinnedBody: ElementRef<HTMLDivElement>;
|
|
@@ -162,16 +189,15 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
162
189
|
refreshPreviewColumns(columns?: any): Promise<void>;
|
|
163
190
|
SetColumnsDefaultWidth(): Promise<void>;
|
|
164
191
|
setSectionsWidth(): void;
|
|
165
|
-
onLeftBodyScroll(): void;
|
|
166
|
-
onRightBodyScroll(): void;
|
|
167
192
|
fakeScrollbarScrollLeft: number;
|
|
168
|
-
onFakeScroll(event: Event): void;
|
|
169
193
|
getNestedValue(obj: any, field: string): any;
|
|
170
194
|
isNestedValueArray(obj: any, field: string): boolean;
|
|
171
195
|
onResizeGroup(event: MouseEvent, col: any, isRightPinned?: boolean): void;
|
|
172
196
|
private updateColumnWidthInSourceByField;
|
|
197
|
+
cleanColumns(columns: any[]): any[];
|
|
173
198
|
onResizeColumn(event: MouseEvent, col: any): void;
|
|
174
199
|
onResizeGroupBox(event: MouseEvent): void;
|
|
200
|
+
onPasteInFilterRowSearch(event: ClipboardEvent, col: any): void;
|
|
175
201
|
onFilterChange(col: any): void;
|
|
176
202
|
get bodyWrapperHeight(): string;
|
|
177
203
|
hoveredRowId: string | number | null;
|
|
@@ -182,11 +208,11 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
182
208
|
closeFilterDropdowns(event: MouseEvent): void;
|
|
183
209
|
private hasParentWithClass;
|
|
184
210
|
isMenueHidden: boolean;
|
|
185
|
-
openThreeDotsMenu(event: MouseEvent, child: any): void;
|
|
211
|
+
openThreeDotsMenu(event: MouseEvent, child: any, keepOriginalPosition?: boolean): void;
|
|
186
212
|
sortAsc(col: any): void;
|
|
187
213
|
sortDesc(col: any): void;
|
|
188
214
|
resetSort(col: any): void;
|
|
189
|
-
updateColumnPinInSourceByField(column: any, pinned: 'left' | 'right' | null): Promise<void>;
|
|
215
|
+
updateColumnPinInSourceByField(column: any, pinned: 'left' | 'right' | null, isNestedTable?: any, columns?: any): Promise<void>;
|
|
190
216
|
autosizeColumn(cols: any | any[]): void;
|
|
191
217
|
getGroupWidth(group: any): number;
|
|
192
218
|
autosizeAllColumns(): void;
|
|
@@ -256,10 +282,10 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
256
282
|
private fakeScrollRaf;
|
|
257
283
|
translateY: number;
|
|
258
284
|
lastScrollTop: number;
|
|
285
|
+
pendingAnimationFrame: number | null;
|
|
259
286
|
onMainScroll(event: Event): void;
|
|
260
287
|
get isScrollbarVisible(): boolean;
|
|
261
288
|
toggleExpand(row: any): void;
|
|
262
|
-
onMainFakeScroll(event: Event): void;
|
|
263
289
|
viewportRows: number;
|
|
264
290
|
firstIndex: number;
|
|
265
291
|
renderStart: number;
|
|
@@ -268,19 +294,17 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
268
294
|
mainScroll: ElementRef<HTMLDivElement>;
|
|
269
295
|
fakeScroll: ElementRef<HTMLDivElement>;
|
|
270
296
|
horizintalFakeScroll: ElementRef<HTMLDivElement>;
|
|
271
|
-
centerScrollableBody: ElementRef<
|
|
297
|
+
centerScrollableBody: ElementRef<HTMLDivElement>;
|
|
272
298
|
private overscan;
|
|
273
299
|
computeViewportRows(): void;
|
|
274
|
-
|
|
300
|
+
onHorizontalFakeScroll(event: Event): void;
|
|
275
301
|
onCenterBodyScroll(event: Event): void;
|
|
276
302
|
onCenterHeaderScroll(event: Event): void;
|
|
277
303
|
draggingColumn: any;
|
|
278
304
|
dragStartIndex: any;
|
|
279
305
|
canEnterToRowsGrouping: (drag: CdkDrag<any>, drop: CdkDropList<any>) => any;
|
|
280
|
-
onDragMoved(event: CdkDragMove<any>): void;
|
|
281
306
|
enterToTopRowGrouping(dropList: CdkDragEnter<any>): void;
|
|
282
307
|
onDropListEnter(dropList: CdkDragEnter<any>, section: 'left' | 'center' | 'right'): void;
|
|
283
|
-
enterToTopGroupingRow(dropList: CdkDragEnter<any>): void;
|
|
284
308
|
exitedFromTheTopRow(dropList: CdkDragExit<any>): void;
|
|
285
309
|
shouldDisableDroplistSorting: boolean;
|
|
286
310
|
isDisableColumnGrouping: boolean;
|
|
@@ -290,11 +314,9 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
290
314
|
onSortGroup: (event: CdkDragSortEvent<any>, section: string) => Promise<void>;
|
|
291
315
|
onDropGroup(): void;
|
|
292
316
|
onDropTopGroup(event: CdkDragDrop<any>): Promise<void>;
|
|
317
|
+
onGroupReorder(event: CdkDragDrop<any[]>): Promise<void>;
|
|
293
318
|
ungroupColumn(column: any): Promise<void>;
|
|
294
319
|
shouldTheGroupHeaderShow(group: any): any;
|
|
295
|
-
onChildDragStart(): void;
|
|
296
|
-
dropListIds: string[];
|
|
297
|
-
generateDropListIds(): void;
|
|
298
320
|
onChildDroplistSorted: (event: CdkDragSortEvent<any>, section: string) => Promise<void>;
|
|
299
321
|
onChildDroplistDroped(cdkDragDropevent: CdkDragDrop<any>): void;
|
|
300
322
|
groupData(data: any[], groupFields: string[]): any[];
|
|
@@ -320,11 +342,12 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
320
342
|
isFilterOpen: boolean;
|
|
321
343
|
selectedColumnForFilter: any;
|
|
322
344
|
showFilters: boolean;
|
|
345
|
+
openFilterFromDisabledSearchedInput(col: any): void;
|
|
323
346
|
openFilter(col: any): void;
|
|
324
347
|
firstValue: any;
|
|
325
348
|
firstCondition: string;
|
|
326
349
|
secondValue: any;
|
|
327
|
-
secondCondition:
|
|
350
|
+
secondCondition: null;
|
|
328
351
|
condition: string;
|
|
329
352
|
resetTextFilterChanges(): void;
|
|
330
353
|
toggleAllValusSelectionInDropdownFilter(column: any): void;
|
|
@@ -339,7 +362,9 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
339
362
|
onOptionToggle(col: any, option: any): void;
|
|
340
363
|
resetSideFilter(col: any): void;
|
|
341
364
|
clearAllFilters(): void;
|
|
342
|
-
applySideFilter(): void;
|
|
365
|
+
applySideFilter(column: any): void;
|
|
366
|
+
removeSideFilter(column: any): void;
|
|
367
|
+
collapseAllExpandedCells(): void;
|
|
343
368
|
trackByField(index: number, col: any): string;
|
|
344
369
|
get activeFilteredColumns(): any[];
|
|
345
370
|
toggleOpenFilter(): void;
|
|
@@ -347,6 +372,7 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
347
372
|
activeCell: string | null;
|
|
348
373
|
setActiveCell(row: any, column: any): void;
|
|
349
374
|
isActiveCell(row: any, col: any): boolean;
|
|
375
|
+
textAreadInput: ElementRef<HTMLTextAreaElement>;
|
|
350
376
|
enableEdit(row: any, column: any, clickedFromDetailsBox?: boolean, cellContainer?: HTMLElement): void;
|
|
351
377
|
disableEdit(row: any, column: any, control?: any): void;
|
|
352
378
|
emailRegex: RegExp;
|
|
@@ -358,9 +384,14 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
358
384
|
goToPage(page: any): void;
|
|
359
385
|
onPageSizeChange(): void;
|
|
360
386
|
actionPreset(data: any, type: any): void;
|
|
361
|
-
|
|
387
|
+
currentIdForUpdatePreset: string;
|
|
388
|
+
curretaTablePresetForUpdate: any;
|
|
389
|
+
temp_state: {
|
|
390
|
+
id: string;
|
|
391
|
+
is_temp: boolean;
|
|
392
|
+
};
|
|
393
|
+
selectFilter(data: any): Promise<void>;
|
|
362
394
|
savePreset(control?: any): void;
|
|
363
|
-
getFilterHeaders(filters: any[], columns: any[]): string;
|
|
364
395
|
toggleRowShading(): void;
|
|
365
396
|
trackByTable(index: number): number;
|
|
366
397
|
activeRow: any;
|
|
@@ -368,10 +399,9 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
368
399
|
getCellKey(row: any, col: any): string;
|
|
369
400
|
expandedCells: Map<string, number>;
|
|
370
401
|
private zCounter;
|
|
371
|
-
toggleExpandOfLongCellText(row: any, col: any, columns: any[], expandWholeRow?: boolean): void;
|
|
372
402
|
showDetailsBox: boolean;
|
|
403
|
+
toggleExpandOfLongCellText(row: any, col: any, columns: any[], expandWholeRow?: boolean): void;
|
|
373
404
|
isOpenToTop(row: any, col: any): boolean;
|
|
374
|
-
collapseAllExpandedCells(): void;
|
|
375
405
|
isExpanded(row: any, col: any): boolean;
|
|
376
406
|
getZIndex(row: any, col: any): number;
|
|
377
407
|
isOverflowing(element: HTMLElement | null): boolean;
|
|
@@ -391,10 +421,11 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
391
421
|
getCellClasses(column: any, value: any): string;
|
|
392
422
|
removeColumnFilterFromColumn(column: any): void;
|
|
393
423
|
onSideMenuColumnsVisibilityChange(): void;
|
|
394
|
-
|
|
424
|
+
cleanFilterdColumns(): any[];
|
|
425
|
+
downloadCsv(type: 'csv' | 'xlsx'): void;
|
|
395
426
|
onFontChange(): void;
|
|
396
427
|
onGlobalSearch(): void;
|
|
397
|
-
|
|
428
|
+
onSearchInput(event: Event): void;
|
|
398
429
|
checkFilterChangesEffect(): any;
|
|
399
430
|
selectedCells: any[];
|
|
400
431
|
selectedKeys: Set<string>;
|
|
@@ -449,6 +480,7 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
449
480
|
performCut(selectedData: any[][]): void;
|
|
450
481
|
getSelectedDataForCopy(): any[][];
|
|
451
482
|
onKeyDown(event: KeyboardEvent): void;
|
|
483
|
+
selectAllCells(): void;
|
|
452
484
|
undo(): void;
|
|
453
485
|
redo(): void;
|
|
454
486
|
onPaste: (event: ClipboardEvent) => Promise<void>;
|
|
@@ -461,16 +493,45 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit {
|
|
|
461
493
|
toggleMenu(i: number, event?: MouseEvent): void;
|
|
462
494
|
nestedTable: ElementRef<HTMLDivElement>;
|
|
463
495
|
get hasVerticalScroll(): boolean;
|
|
496
|
+
get hasHorizontalScroll(): boolean;
|
|
464
497
|
getTotalAmount(column: any): string | undefined;
|
|
465
498
|
dropColumn(event: CdkDragDrop<any[]>, row: any): void;
|
|
466
499
|
currentSubSortColumn: string | null;
|
|
467
500
|
currentSortDirection: 'asc' | 'desc';
|
|
468
|
-
sortNestedCol(col: any,
|
|
501
|
+
sortNestedCol(col: any, row: any): void;
|
|
469
502
|
getColumnWidthPx(row: any, col: any): string;
|
|
470
503
|
fullscreenImage: string | null;
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
504
|
+
pinUnpinColum(col: any, value: 'left' | 'right' | null, columns: any[]): void;
|
|
505
|
+
getLeftPinnedCount(columns: any[]): number;
|
|
506
|
+
getRightPinnedCount(columns: any[]): number;
|
|
507
|
+
getStickyLeft(columns: any[], index: number): string;
|
|
508
|
+
previewNestedCols: any[];
|
|
509
|
+
onNestedColSort(event: CdkDragSortEvent<any[]>, columns: any[]): void;
|
|
510
|
+
saveSelection(selectedIds: string[], tableType: string): void;
|
|
511
|
+
restoreSelection(tableType: string): Set<string>;
|
|
512
|
+
isOutsideContainer: boolean;
|
|
513
|
+
private containerRect;
|
|
514
|
+
onDragStarted(col: any): void;
|
|
515
|
+
onDragMoved(event: CdkDragMove): void;
|
|
516
|
+
onDragEnded(): void;
|
|
517
|
+
getStartIndex(): number;
|
|
518
|
+
hasAnyDefaultView(): boolean;
|
|
519
|
+
get isTablePresetNotChanged(): any;
|
|
520
|
+
onActionButtonClick(button: string): void;
|
|
521
|
+
setActiveTab(tab: string): void;
|
|
522
|
+
getBackgroundColor(row: any, isEven: boolean, section: 'left' | 'center' | 'right'): string | undefined;
|
|
523
|
+
hasHorizontalScrollbar(): boolean;
|
|
524
|
+
getSafeComment(description: string): SafeHtml;
|
|
525
|
+
cleanEditorContent(content: string): SafeHtml;
|
|
526
|
+
getExtention(url: string | string[] | null | undefined): string | undefined;
|
|
527
|
+
downloadAttchment(url: any, file?: any): void;
|
|
528
|
+
fullImageSrc: string | null;
|
|
529
|
+
openFullImage(event: Event): void;
|
|
530
|
+
addStylesToImages(): void;
|
|
531
|
+
onImageClick(src: string): void;
|
|
532
|
+
fullscreenImageTemplate: TemplateRef<any>;
|
|
533
|
+
private fullscreenViewRef;
|
|
534
|
+
iconMap: Record<string, (row: any, col: any) => string>;
|
|
474
535
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent, never>;
|
|
475
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "data-grid", never, { "paginationConfig": { "alias": "paginationConfig"; "required": false; }; "dataSet": { "alias": "dataSet"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "headerRowHeight": { "alias": "headerRowHeight"; "required": false; }; "showVerticalBorder": { "alias": "showVerticalBorder"; "required": false; }; "evenRowsBackgroundColor": { "alias": "evenRowsBackgroundColor"; "required": false; }; "oddRowsBackgroundColor": { "alias": "oddRowsBackgroundColor"; "required": false; }; "headerBackgroundColor": { "alias": "headerBackgroundColor"; "required": false; }; "checkboxesBackgroundColor": { "alias": "checkboxesBackgroundColor"; "required": false; }; "showColumnsGrouping": { "alias": "showColumnsGrouping"; "required": false; }; "rowHoverColor": { "alias": "rowHoverColor"; "required": false; }; "leftPinnedBackgroundColor": { "alias": "leftPinnedBackgroundColor"; "required": false; }; "bodyBackgroundColor": { "alias": "bodyBackgroundColor"; "required": false; }; "rightPinnedBackgroundColor": { "alias": "rightPinnedBackgroundColor"; "required": false; }; "sidemenuBackgroundColor": { "alias": "sidemenuBackgroundColor"; "required": false; }; "bodyTextColor": { "alias": "bodyTextColor"; "required": false; }; "headerTextColor": { "alias": "headerTextColor"; "required": false; }; "headerTextFontsSize": { "alias": "headerTextFontsSize"; "required": false; }; "bodyTextFontsSize": { "alias": "bodyTextFontsSize"; "required": false; }; "headerFontWeight": { "alias": "headerFontWeight"; "required": false; }; "bodyFontWeight": { "alias": "bodyFontWeight"; "required": false; }; "checkedRowBackgroundColor": { "alias": "checkedRowBackgroundColor"; "required": false; }; "dropdownsBackgroundColor": { "alias": "dropdownsBackgroundColor"; "required": false; }; "footerRowHeight": { "alias": "footerRowHeight"; "required": false; }; "topGroupedBadgesBackgroundColor": { "alias": "topGroupedBadgesBackgroundColor"; "required": false; }; "showRowsGrouping": { "alias": "showRowsGrouping"; "required": false; }; "showFilterRow": { "alias": "showFilterRow"; "required": false; }; "fontFaimly": { "alias": "fontFaimly"; "required": false; }; "showSideMenu": { "alias": "showSideMenu"; "required": false; }; "footerPadding": { "alias": "footerPadding"; "required": false; }; "topFilterRowHeight": { "alias": "topFilterRowHeight"; "required": false; }; "rowShadingEnabled": { "alias": "rowShadingEnabled"; "required": false; }; "showSerialNumber": { "alias": "showSerialNumber"; "required": false; }; "singleSpaAssetsPath": { "alias": "singleSpaAssetsPath"; "required": false; }; "filtersConfig": { "alias": "filtersConfig"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "verticalScrollbarWidth": { "alias": "verticalScrollbarWidth"; "required": false; }; "horizintalScrollbarWidth": { "alias": "horizintalScrollbarWidth"; "required": false; }; "showCellDetailsBox": { "alias": "showCellDetailsBox"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "tableSearch": { "alias": "tableSearch"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showTaskbar": { "alias": "showTaskbar"; "required": false; }; "tableName": { "alias": "tableName"; "required": false; }; "listingType": { "alias": "listingType"; "required": false; }; "checkboxState": { "alias": "checkboxState"; "required": false; }; "taskbarActions": { "alias": "taskbarActions"; "required": false; }; "sortingConfig": { "alias": "sortingConfig"; "required": false; }; "tableFilterViewId": { "alias": "tableFilterViewId"; "required": false; }; "selectedTableLayout": { "alias": "selectedTableLayout"; "required": false; }; "closeDropdown": { "alias": "closeDropdown"; "required": false; }; "globalSearchText": { "alias": "globalSearchText"; "required": false; }; "nestedTablerowFontsize": { "alias": "nestedTablerowFontsize"; "required": false; }; "nestedTableHeaderRowHeight": { "alias": "nestedTableHeaderRowHeight"; "required": false; }; "nestedTablerowHeight": { "alias": "nestedTablerowHeight"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "currencySymbol": { "alias": "currencySymbol"; "required": false; }; "leftPinnedBoxshadow": { "alias": "leftPinnedBoxshadow"; "required": false; }; "rightPinnedBoxshadow": { "alias": "rightPinnedBoxshadow"; "required": false; }; "selectedRowsBackgroundColor": { "alias": "selectedRowsBackgroundColor"; "required": false; }; "
|
|
536
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "data-grid", never, { "paginationConfig": { "alias": "paginationConfig"; "required": false; }; "dataSet": { "alias": "dataSet"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "headerRowHeight": { "alias": "headerRowHeight"; "required": false; }; "showVerticalBorder": { "alias": "showVerticalBorder"; "required": false; }; "evenRowsBackgroundColor": { "alias": "evenRowsBackgroundColor"; "required": false; }; "oddRowsBackgroundColor": { "alias": "oddRowsBackgroundColor"; "required": false; }; "headerBackgroundColor": { "alias": "headerBackgroundColor"; "required": false; }; "checkboxesBackgroundColor": { "alias": "checkboxesBackgroundColor"; "required": false; }; "showColumnsGrouping": { "alias": "showColumnsGrouping"; "required": false; }; "rowHoverColor": { "alias": "rowHoverColor"; "required": false; }; "leftPinnedBackgroundColor": { "alias": "leftPinnedBackgroundColor"; "required": false; }; "bodyBackgroundColor": { "alias": "bodyBackgroundColor"; "required": false; }; "rightPinnedBackgroundColor": { "alias": "rightPinnedBackgroundColor"; "required": false; }; "sidemenuBackgroundColor": { "alias": "sidemenuBackgroundColor"; "required": false; }; "bodyTextColor": { "alias": "bodyTextColor"; "required": false; }; "headerTextColor": { "alias": "headerTextColor"; "required": false; }; "checkboxesColor": { "alias": "checkboxesColor"; "required": false; }; "headerTextFontsSize": { "alias": "headerTextFontsSize"; "required": false; }; "bodyTextFontsSize": { "alias": "bodyTextFontsSize"; "required": false; }; "headerFontWeight": { "alias": "headerFontWeight"; "required": false; }; "bodyFontWeight": { "alias": "bodyFontWeight"; "required": false; }; "checkedRowBackgroundColor": { "alias": "checkedRowBackgroundColor"; "required": false; }; "dropdownsBackgroundColor": { "alias": "dropdownsBackgroundColor"; "required": false; }; "footerRowBackgroundColor": { "alias": "footerRowBackgroundColor"; "required": false; }; "footerRowHeight": { "alias": "footerRowHeight"; "required": false; }; "topGroupedBadgesBackgroundColor": { "alias": "topGroupedBadgesBackgroundColor"; "required": false; }; "showRowsGrouping": { "alias": "showRowsGrouping"; "required": false; }; "showFilterRow": { "alias": "showFilterRow"; "required": false; }; "fontFaimly": { "alias": "fontFaimly"; "required": false; }; "showSideMenu": { "alias": "showSideMenu"; "required": false; }; "footerPadding": { "alias": "footerPadding"; "required": false; }; "topFilterRowHeight": { "alias": "topFilterRowHeight"; "required": false; }; "rowShadingEnabled": { "alias": "rowShadingEnabled"; "required": false; }; "showSerialNumber": { "alias": "showSerialNumber"; "required": false; }; "singleSpaAssetsPath": { "alias": "singleSpaAssetsPath"; "required": false; }; "filtersConfig": { "alias": "filtersConfig"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "verticalScrollbarWidth": { "alias": "verticalScrollbarWidth"; "required": false; }; "horizintalScrollbarWidth": { "alias": "horizintalScrollbarWidth"; "required": false; }; "showCellDetailsBox": { "alias": "showCellDetailsBox"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "tableSearch": { "alias": "tableSearch"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showTaskbar": { "alias": "showTaskbar"; "required": false; }; "tableName": { "alias": "tableName"; "required": false; }; "listingType": { "alias": "listingType"; "required": false; }; "checkboxState": { "alias": "checkboxState"; "required": false; }; "taskbarActions": { "alias": "taskbarActions"; "required": false; }; "sortingConfig": { "alias": "sortingConfig"; "required": false; }; "tableFilterViewId": { "alias": "tableFilterViewId"; "required": false; }; "selectedTableLayout": { "alias": "selectedTableLayout"; "required": false; }; "closeDropdown": { "alias": "closeDropdown"; "required": false; }; "globalSearchText": { "alias": "globalSearchText"; "required": false; }; "nestedTablerowFontsize": { "alias": "nestedTablerowFontsize"; "required": false; }; "nestedTableHeaderRowHeight": { "alias": "nestedTableHeaderRowHeight"; "required": false; }; "nestedTablerowHeight": { "alias": "nestedTablerowHeight"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "currencySymbol": { "alias": "currencySymbol"; "required": false; }; "leftPinnedBoxshadow": { "alias": "leftPinnedBoxshadow"; "required": false; }; "rightPinnedBoxshadow": { "alias": "rightPinnedBoxshadow"; "required": false; }; "selectedRowsBackgroundColor": { "alias": "selectedRowsBackgroundColor"; "required": false; }; "nestedTableHeaderBackgroundColor": { "alias": "nestedTableHeaderBackgroundColor"; "required": false; }; "nestedTableRowBackgroundColor": { "alias": "nestedTableRowBackgroundColor"; "required": false; }; "tableView": { "alias": "tableView"; "required": false; }; "buttons": { "alias": "buttons"; "required": false; }; "keepMultipleExpandedDetails": { "alias": "keepMultipleExpandedDetails"; "required": false; }; "showTotalAmountRow": { "alias": "showTotalAmountRow"; "required": false; }; "enableGlobalSearch": { "alias": "enableGlobalSearch"; "required": false; }; "tableType": { "alias": "tableType"; "required": false; }; "enableExport": { "alias": "enableExport"; "required": false; }; "enableCut": { "alias": "enableCut"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; "resetAllFilters": { "alias": "resetAllFilters"; "required": false; }; "columnThreedotsMunuConfig": { "alias": "columnThreedotsMunuConfig"; "required": false; }; }, { "changeLayout": "changeLayout"; "filterOptions": "filterOptions"; "genericEvent": "genericEvent"; "tablePresetConfig": "tablePresetConfig"; "sortingOrderOptions": "sortingOrderOptions"; "createUpdateConfigListing": "createUpdateConfigListing"; }, never, never, false, never>;
|
|
476
537
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./data-grid/data-grid.component";
|
|
3
3
|
import * as i2 from "./pipes/filter.pipe";
|
|
4
|
-
import * as i3 from "
|
|
5
|
-
import * as i4 from "@angular/
|
|
6
|
-
import * as i5 from "@angular/
|
|
7
|
-
import * as i6 from "
|
|
8
|
-
import * as i7 from "
|
|
9
|
-
import * as i8 from "@angular/cdk/scrolling";
|
|
4
|
+
import * as i3 from "@angular/common";
|
|
5
|
+
import * as i4 from "@angular/forms";
|
|
6
|
+
import * as i5 from "@angular/cdk/drag-drop";
|
|
7
|
+
import * as i6 from "ng-inline-svg";
|
|
8
|
+
import * as i7 from "@angular/cdk/scrolling";
|
|
10
9
|
export declare class DataGridModule {
|
|
11
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<DataGridModule, never>;
|
|
12
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<DataGridModule, [typeof i1.DataGridComponent, typeof i2.FilterPipe
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DataGridModule, [typeof i1.DataGridComponent, typeof i2.FilterPipe], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.DragDropModule, typeof i6.InlineSVGModule, typeof i7.ScrollingModule], [typeof i1.DataGridComponent]>;
|
|
13
12
|
static ɵinj: i0.ɵɵInjectorDeclaration<DataGridModule>;
|
|
14
13
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class ExportService {
|
|
3
|
+
constructor();
|
|
4
|
+
/**
|
|
5
|
+
* Exports data to CSV or Excel.
|
|
6
|
+
* @param columns List of column definitions (each having name/key/is_visible)
|
|
7
|
+
* @param data The array of data objects
|
|
8
|
+
* @param fileName Name of the exported file (without extension)
|
|
9
|
+
* @param format 'csv' | 'xlsx'
|
|
10
|
+
*/
|
|
11
|
+
exportData(columns: any[], data: any[], fileName: string, format?: 'csv' | 'xlsx', rowSelectedIndexes?: Set<number> | null, styleConfig?: {
|
|
12
|
+
headerBgColor?: string;
|
|
13
|
+
headerTextColor?: string;
|
|
14
|
+
bodyTextColor?: string;
|
|
15
|
+
fontFamily?: string;
|
|
16
|
+
fontWeight?: 'normal' | 'bold';
|
|
17
|
+
zoomScale?: number;
|
|
18
|
+
headerRowHeight?: number;
|
|
19
|
+
selectedRowBgColor?: string;
|
|
20
|
+
}): void;
|
|
21
|
+
private getNestedValue;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ExportService, never>;
|
|
23
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ExportService>;
|
|
24
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ms-data-grid",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.42",
|
|
4
4
|
"description": "A powerful, customizable Angular data grid component with advanced features like sorting, filtering, pagination, column pinning, and taskbar actions. Perfect for enterprise applications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -26,7 +26,13 @@
|
|
|
26
26
|
"@angular/core": "^16.2.0"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"
|
|
29
|
+
"xlsx-js-style": "^1.2.0",
|
|
30
|
+
"ng-inline-svg": "^13.1.1",
|
|
31
|
+
"ngx-bootstrap": "^20.0.0",
|
|
32
|
+
"bootstrap": "^5.3.7",
|
|
33
|
+
"tslib": "^2.3.0",
|
|
34
|
+
"file-saver": "^2.0.5",
|
|
35
|
+
"zone.js": "~0.13.0"
|
|
30
36
|
},
|
|
31
37
|
"sideEffects": false,
|
|
32
38
|
"module": "fesm2022/ms-data-grid.mjs",
|
package/public-api.d.ts
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DataGridService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridService, providedIn: 'root' }); }
|
|
7
|
-
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridService, decorators: [{
|
|
9
|
-
type: Injectable,
|
|
10
|
-
args: [{
|
|
11
|
-
providedIn: 'root'
|
|
12
|
-
}]
|
|
13
|
-
}], ctorParameters: function () { return []; } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZUFBZTtJQUUxQixnQkFBZ0IsQ0FBQzsrR0FGTixlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFHcmlkU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuIl19
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DraggableHeaderDirective {
|
|
4
|
-
constructor(el, renderer) {
|
|
5
|
-
this.el = el;
|
|
6
|
-
this.renderer = renderer;
|
|
7
|
-
this.headerName = '';
|
|
8
|
-
this.dragStart = new EventEmitter();
|
|
9
|
-
this.dragMove = new EventEmitter();
|
|
10
|
-
this.dragEnd = new EventEmitter();
|
|
11
|
-
this.isDragging = false;
|
|
12
|
-
this.placeholderEl = null;
|
|
13
|
-
this.previewEl = null;
|
|
14
|
-
this.startX = 0;
|
|
15
|
-
this.startY = 0;
|
|
16
|
-
this.onMouseMove = (event) => {
|
|
17
|
-
debugger;
|
|
18
|
-
const moveX = Math.abs(event.clientX - this.startX - 10);
|
|
19
|
-
const moveY = Math.abs(event.clientY - this.startY - 10);
|
|
20
|
-
if (!this.isDragging && (moveX > 1 || moveY > 1)) {
|
|
21
|
-
this.startDragging(event);
|
|
22
|
-
}
|
|
23
|
-
if (this.isDragging && this.previewEl) {
|
|
24
|
-
this.renderer.setStyle(this.previewEl, 'top', `${event.pageY + 10}px`);
|
|
25
|
-
this.renderer.setStyle(this.previewEl, 'left', `${event.pageX + 10}px`);
|
|
26
|
-
// Find the element under cursor (hovered element)
|
|
27
|
-
const hoveredElement = document.elementFromPoint(event.clientX, event.clientY);
|
|
28
|
-
this.dragMove.emit({
|
|
29
|
-
event,
|
|
30
|
-
column: this.column,
|
|
31
|
-
hoveredElement,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
this.onMouseUp = (event) => {
|
|
36
|
-
if (!this.isDragging)
|
|
37
|
-
return;
|
|
38
|
-
this.isDragging = false;
|
|
39
|
-
this.dragEnd.emit({ column: this.column, event });
|
|
40
|
-
if (this.previewEl) {
|
|
41
|
-
this.renderer.removeChild(document.body, this.previewEl);
|
|
42
|
-
this.previewEl = null;
|
|
43
|
-
}
|
|
44
|
-
if (this.placeholderEl) {
|
|
45
|
-
const parent = this.placeholderEl.parentNode;
|
|
46
|
-
if (parent) {
|
|
47
|
-
parent.replaceChild(this.el.nativeElement, this.placeholderEl);
|
|
48
|
-
}
|
|
49
|
-
this.placeholderEl = null;
|
|
50
|
-
}
|
|
51
|
-
// Reset the cursor
|
|
52
|
-
this.resetCursor();
|
|
53
|
-
document.removeEventListener('mousemove', this.onMouseMove);
|
|
54
|
-
document.removeEventListener('mouseup', this.onMouseUp);
|
|
55
|
-
};
|
|
56
|
-
this.originalCursor = null;
|
|
57
|
-
}
|
|
58
|
-
onMouseDown(event) {
|
|
59
|
-
if (event.button !== 0)
|
|
60
|
-
return;
|
|
61
|
-
let target = event.target;
|
|
62
|
-
const classes = target.classList;
|
|
63
|
-
debugger;
|
|
64
|
-
if (event.target.classList.contains('three-dots'))
|
|
65
|
-
return;
|
|
66
|
-
this.startX = event.clientX;
|
|
67
|
-
this.startY = event.clientY;
|
|
68
|
-
this.isDragging = false;
|
|
69
|
-
document.addEventListener('mousemove', this.onMouseMove);
|
|
70
|
-
document.addEventListener('mouseup', this.onMouseUp);
|
|
71
|
-
}
|
|
72
|
-
setCursor(cursorStyle) {
|
|
73
|
-
this.renderer.setStyle(document.body, 'cursor', cursorStyle);
|
|
74
|
-
}
|
|
75
|
-
resetCursor() {
|
|
76
|
-
this.renderer.setStyle(document.body, 'cursor', this.originalCursor || '');
|
|
77
|
-
}
|
|
78
|
-
startDragging(event) {
|
|
79
|
-
this.isDragging = true;
|
|
80
|
-
// Store original cursor (optional fallback)
|
|
81
|
-
this.originalCursor = getComputedStyle(document.body).cursor;
|
|
82
|
-
// Set cursor to grabbing
|
|
83
|
-
this.setCursor('move');
|
|
84
|
-
// --- Clone the element as a placeholder ---
|
|
85
|
-
this.placeholderEl = this.el.nativeElement.cloneNode(true);
|
|
86
|
-
this.renderer.setStyle(this.placeholderEl, 'opacity', '0.5');
|
|
87
|
-
this.renderer.setStyle(this.placeholderEl, 'pointer-events', 'none');
|
|
88
|
-
this.renderer.addClass(this.placeholderEl, 'drag-placeholder');
|
|
89
|
-
const parent = this.el.nativeElement.parentNode;
|
|
90
|
-
parent.replaceChild(this.placeholderEl, this.el.nativeElement);
|
|
91
|
-
// --- Create floating preview ---
|
|
92
|
-
this.previewEl = this.renderer.createElement('div');
|
|
93
|
-
this.renderer.setStyle(this.previewEl, 'position', 'absolute');
|
|
94
|
-
this.renderer.setStyle(this.previewEl, 'top', `${event.pageY + 10}px`);
|
|
95
|
-
this.renderer.setStyle(this.previewEl, 'left', `${event.pageX + 10}px`);
|
|
96
|
-
this.renderer.setStyle(this.previewEl, 'pointer-events', 'none');
|
|
97
|
-
this.renderer.setStyle(this.previewEl, 'z-index', '1000');
|
|
98
|
-
this.renderer.setStyle(this.previewEl, 'max-width', '200px');
|
|
99
|
-
this.renderer.setStyle(this.previewEl, 'padding', '8px');
|
|
100
|
-
this.renderer.setStyle(this.previewEl, 'border', '1px solid #ccc');
|
|
101
|
-
this.renderer.setStyle(this.previewEl, 'background-color', '#fff');
|
|
102
|
-
this.renderer.setStyle(this.previewEl, 'box-shadow', '0 2px 6px rgba(0,0,0,0.2)');
|
|
103
|
-
this.renderer.setStyle(this.previewEl, 'border-radius', '4px');
|
|
104
|
-
this.renderer.setStyle(this.previewEl, 'display', 'flex');
|
|
105
|
-
this.renderer.setStyle(this.previewEl, 'align-items', 'center');
|
|
106
|
-
this.renderer.setStyle(this.previewEl, 'gap', '8px');
|
|
107
|
-
this.renderer.setStyle(this.previewEl, 'font-weight', '500');
|
|
108
|
-
this.renderer.setStyle(this.previewEl, 'white-space', 'nowrap');
|
|
109
|
-
const icon = this.renderer.createElement('span');
|
|
110
|
-
this.renderer.setStyle(icon, 'font-size', '16px');
|
|
111
|
-
this.renderer.setStyle(icon, 'user-select', 'none');
|
|
112
|
-
this.renderer.setProperty(icon, 'innerText', '≡');
|
|
113
|
-
const text = this.renderer.createElement('span');
|
|
114
|
-
this.renderer.setProperty(text, 'innerText', this.headerName || 'Dragging');
|
|
115
|
-
this.renderer.appendChild(this.previewEl, icon);
|
|
116
|
-
this.renderer.appendChild(this.previewEl, text);
|
|
117
|
-
this.renderer.appendChild(document.body, this.previewEl);
|
|
118
|
-
this.dragStart.emit({ column: this.column, event });
|
|
119
|
-
}
|
|
120
|
-
overrideCursor(style) {
|
|
121
|
-
this.setCursor(style);
|
|
122
|
-
}
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DraggableHeaderDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
124
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DraggableHeaderDirective, selector: "[appDraggableHeader]", inputs: { column: "column", headerName: "headerName" }, outputs: { dragStart: "dragStart", dragMove: "dragMove", dragEnd: "dragEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)" } }, ngImport: i0 }); }
|
|
125
|
-
}
|
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DraggableHeaderDirective, decorators: [{
|
|
127
|
-
type: Directive,
|
|
128
|
-
args: [{
|
|
129
|
-
selector: '[appDraggableHeader]',
|
|
130
|
-
}]
|
|
131
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { column: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], headerName: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], dragStart: [{
|
|
136
|
-
type: Output
|
|
137
|
-
}], dragMove: [{
|
|
138
|
-
type: Output
|
|
139
|
-
}], dragEnd: [{
|
|
140
|
-
type: Output
|
|
141
|
-
}], onMouseDown: [{
|
|
142
|
-
type: HostListener,
|
|
143
|
-
args: ['mousedown', ['$event']]
|
|
144
|
-
}] } });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWhlYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDOztBQVV2QixNQUFNLE9BQU8sd0JBQXdCO0lBWW5DLFlBQW9CLEVBQWMsRUFBVSxRQUFtQjtRQUEzQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVZ0RCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXZCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXBDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsa0JBQWEsR0FBdUIsSUFBSSxDQUFDO1FBQ3pDLGNBQVMsR0FBdUIsSUFBSSxDQUFDO1FBSTdDLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBaUJYLGdCQUFXLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDbEMsUUFBUSxDQUFBO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLElB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b250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEcmFnTW92ZUV2ZW50IHtcclxuICBldmVudDogTW91c2VFdmVudDtcclxuICBkYXRhOiBhbnk7XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcERyYWdnYWJsZUhlYWRlcl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlSGVhZGVyRGlyZWN0aXZlIHtcclxuICBASW5wdXQoKSBjb2x1bW46IGFueTtcclxuICBASW5wdXQoKSBoZWFkZXJOYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIGRyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkcmFnTW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkcmFnRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcGxhY2Vob2xkZXJFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHByZXZpZXdFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxyXG5cclxuICBzdGFydFggPSAwO1xyXG4gIHN0YXJ0WSA9IDA7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5idXR0b24gIT09IDApIHJldHVybjtcclxuICAgIGxldCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjbGFzc2VzID0gdGFyZ2V0LmNsYXNzTGlzdDtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aHJlZS1kb3RzJykpIHJldHVybjtcclxuICAgICAgdGhpcy5zdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgdGhpcy5zdGFydFkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZSk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vbk1vdXNlVXApO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBjb25zdCBtb3ZlWCA9IE1hdGguYWJzKGV2ZW50LmNsaWVudFggLSB0aGlzLnN0YXJ0WCAtIDEwKTtcclxuICAgIGNvbnN0IG1vdmVZID0gTWF0aC5hYnMoZXZlbnQuY2xpZW50WSAtIHRoaXMuc3RhcnRZIC0gMTApO1xyXG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcgJiYgKG1vdmVYID4gMSB8fCBtb3ZlWSA+IDEpKSB7XHJcbiAgICAgIHRoaXMuc3RhcnREcmFnZ2luZyhldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNEcmFnZ2luZyAmJiB0aGlzLnByZXZpZXdFbCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAndG9wJywgYCR7ZXZlbnQucGFnZVkgKyAxMH1weGApO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAnbGVmdCcsIGAke2V2ZW50LnBhZ2VYICsgMTB9cHhgKTtcclxuXHJcbiAgICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQgdW5kZXIgY3Vyc29yIChob3ZlcmVkIGVsZW1lbnQpXHJcbiAgICAgIGNvbnN0IGhvdmVyZWRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChcclxuICAgICAgICBldmVudC5jbGllbnRYLFxyXG4gICAgICAgIGV2ZW50LmNsaWVudFlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZHJhZ01vdmUuZW1pdCh7XHJcbiAgICAgICAgZXZlbnQsXHJcbiAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcclxuICAgICAgICBob3ZlcmVkRWxlbWVudCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgb25Nb3VzZVVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5kcmFnRW5kLmVtaXQoeyBjb2x1bW46IHRoaXMuY29sdW1uLCBldmVudCB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5wcmV2aWV3RWwpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLnByZXZpZXdFbCk7XHJcbiAgICAgIHRoaXMucHJldmlld0VsID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlckVsKSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMucGxhY2Vob2xkZXJFbC5wYXJlbnROb2RlO1xyXG4gICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgcGFyZW50LnJlcGxhY2VDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMucGxhY2Vob2xkZXJFbCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wbGFjZWhvbGRlckVsID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXNldCB0aGUgY3Vyc29yXHJcbiAgICB0aGlzLnJlc2V0Q3Vyc29yKCk7XHJcblxyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZSk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vbk1vdXNlVXApO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgb3JpZ2luYWxDdXJzb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHNldEN1cnNvcihjdXJzb3JTdHlsZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmJvZHksICdjdXJzb3InLCBjdXJzb3JTdHlsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0Q3Vyc29yKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5ib2R5LCAnY3Vyc29yJywgdGhpcy5vcmlnaW5hbEN1cnNvciB8fCAnJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XHJcblxyXG4gICAgLy8gU3RvcmUgb3JpZ2luYWwgY3Vyc29yIChvcHRpb25hbCBmYWxsYmFjaylcclxuICAgIHRoaXMub3JpZ2luYWxDdXJzb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmN1cnNvcjtcclxuXHJcbiAgICAvLyBTZXQgY3Vyc29yIHRvIGdyYWJiaW5nXHJcbiAgICB0aGlzLnNldEN1cnNvcignbW92ZScpO1xyXG5cclxuICAgIC8vIC0tLSBDbG9uZSB0aGUgZWxlbWVudCBhcyBhIHBsYWNlaG9sZGVyIC0tLVxyXG4gICAgdGhpcy5wbGFjZWhvbGRlckVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wbGFjZWhvbGRlckVsLCAnb3BhY2l0eScsICcwLjUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wbGFjZWhvbGRlckVsLCAncG9pbnRlci1ldmVudHMnLCAnbm9uZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnBsYWNlaG9sZGVyRWwsICdkcmFnLXBsYWNlaG9sZGVyJyk7XHJcblxyXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XHJcbiAgICBwYXJlbnQucmVwbGFjZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJFbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuXHJcbiAgICAvLyAtLS0gQ3JlYXRlIGZsb2F0aW5nIHByZXZpZXcgLS0tXHJcbiAgICB0aGlzLnByZXZpZXdFbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICd0b3AnLCBgJHtldmVudC5wYWdlWSArIDEwfXB4YCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAnbGVmdCcsIGAke2V2ZW50LnBhZ2VYICsgMTB9cHhgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdwb2ludGVyLWV2ZW50cycsICdub25lJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAnei1pbmRleCcsICcxMDAwJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAnbWF4LXdpZHRoJywgJzIwMHB4Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAncGFkZGluZycsICc4cHgnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdib3JkZXInLCAnMXB4IHNvbGlkICNjY2MnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdiYWNrZ3JvdW5kLWNvbG9yJywgJyNmZmYnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXHJcbiAgICAgIHRoaXMucHJldmlld0VsLFxyXG4gICAgICAnYm94LXNoYWRvdycsXHJcbiAgICAgICcwIDJweCA2cHggcmdiYSgwLDAsMCwwLjIpJ1xyXG4gICAgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdib3JkZXItcmFkaXVzJywgJzRweCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByZXZpZXdFbCwgJ2Rpc3BsYXknLCAnZmxleCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByZXZpZXdFbCwgJ2FsaWduLWl0ZW1zJywgJ2NlbnRlcicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByZXZpZXdFbCwgJ2dhcCcsICc4cHgnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdmb250LXdlaWdodCcsICc1MDAnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICd3aGl0ZS1zcGFjZScsICdub3dyYXAnKTtcclxuXHJcbiAgICBjb25zdCBpY29uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGljb24sICdmb250LXNpemUnLCAnMTZweCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpY29uLCAndXNlci1zZWxlY3QnLCAnbm9uZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShpY29uLCAnaW5uZXJUZXh0JywgJ+KJoScpO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGV4dCwgJ2lubmVyVGV4dCcsIHRoaXMuaGVhZGVyTmFtZSB8fCAnRHJhZ2dpbmcnKTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMucHJldmlld0VsLCBpY29uKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5wcmV2aWV3RWwsIHRleHQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLnByZXZpZXdFbCk7XHJcblxyXG4gICAgdGhpcy5kcmFnU3RhcnQuZW1pdCh7IGNvbHVtbjogdGhpcy5jb2x1bW4sIGV2ZW50IH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlQ3Vyc29yKHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0Q3Vyc29yKHN0eWxlKTtcclxuICB9XHJcbn1cclxuIl19
|