ms-data-grid 0.0.130 → 0.0.131

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.
@@ -1,6 +1,5 @@
1
1
  import { OnInit, OnChanges, SimpleChanges, ElementRef, AfterViewInit, ChangeDetectorRef, EventEmitter, NgZone, Renderer2, AfterViewChecked, TemplateRef, QueryList, Injector } from '@angular/core';
2
2
  import { SplitColumnsService } from '../services/split-columns.service';
3
- import { RowActionService } from '../services/row-action.service';
4
3
  import { CommonService } from '../services/common.service';
5
4
  import { CdkDrag, CdkDragDrop, CdkDragEnter, CdkDragExit, CdkDragMove, CdkDragSortEvent } from '@angular/cdk/drag-drop';
6
5
  import { CdkDropList } from '@angular/cdk/drag-drop';
@@ -10,10 +9,16 @@ import { ExportService } from '../services/export.service';
10
9
  import { CellHostDirective } from '../directives/cellHost.directive';
11
10
  import { DatePipe } from '@angular/common';
12
11
  import { FormatCurrencyPipe } from '../pipes/format-currency.pipe';
13
- import 'bootstrap/dist/js/bootstrap.bundle.min.js';
14
- import { ValidationsService } from './../services/validations.service';
15
- import { HtmlContentSanitizerService } from './../services/html-content-sanitizer.service';
16
12
  import * as i0 from "@angular/core";
13
+ export declare enum RowAnimationType {
14
+ None = "none",
15
+ Spread = "spreadAnimation",
16
+ Bounce = "bounceAnimation",
17
+ SlideUp = "slideUpFromBottom",
18
+ Flip = "flipAnimation",
19
+ Skew = "skewAnimation",
20
+ SlideRight = "slideFromRight"
21
+ }
17
22
  export interface DataGridConfig {
18
23
  fontFaimly: string;
19
24
  bodyTextFontsSize: number;
@@ -27,15 +32,6 @@ export interface DataGridConfig {
27
32
  rowShadingEnabled: boolean;
28
33
  activeFilters: boolean;
29
34
  }
30
- export declare enum RowAnimationType {
31
- None = "none",
32
- Spread = "spreadAnimation",
33
- Bounce = "bounceAnimation",
34
- SlideUp = "slideUpFromBottom",
35
- Flip = "flipAnimation",
36
- Skew = "skewAnimation",
37
- SlideRight = "slideFromRight"
38
- }
39
35
  export declare const sortingAnimation: import("@angular/animations").AnimationTriggerMetadata;
40
36
  export declare class DataGridComponent implements OnChanges, AfterViewInit, OnInit, AfterViewChecked {
41
37
  private columnService;
@@ -49,9 +45,6 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
49
45
  private exportService;
50
46
  private datePipe;
51
47
  private formatCurrency;
52
- private actionValidator;
53
- private validationsService;
54
- private htmlSanatizerService;
55
48
  rowAnimation: RowAnimationType;
56
49
  paginationConfig: any;
57
50
  dataSet: any[];
@@ -99,7 +92,6 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
99
92
  tableSearch: string;
100
93
  actions: any[];
101
94
  config: any;
102
- selectedTab: string;
103
95
  showTaskbar: boolean;
104
96
  tableName: boolean;
105
97
  listingType: string | boolean;
@@ -123,8 +115,6 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
123
115
  nestedTablerowFontsize: number;
124
116
  nestedTableHeaderRowHeight: number;
125
117
  nestedTablerowHeight: number;
126
- packageData: boolean;
127
- showUnLink: any;
128
118
  gridType: string;
129
119
  currencySymbol: string;
130
120
  currencyFormat: string;
@@ -149,11 +139,12 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
149
139
  enableCut: boolean;
150
140
  tabs: string[];
151
141
  showCheckboxes: boolean;
152
- pageSizeOptions: number[];
142
+ consumerFont: string | null;
143
+ defaultConfig: DataGridConfig | null;
153
144
  resetAllFilters: {
154
145
  resetAll: boolean;
155
146
  };
156
- defaultConfig: DataGridConfig | null;
147
+ pageSizeOptions: number[];
157
148
  columnThreedotsMunuConfig: {
158
149
  showPinleft: boolean;
159
150
  showPinright: boolean;
@@ -166,8 +157,8 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
166
157
  showChoseColumns: boolean;
167
158
  showResetColumns: boolean;
168
159
  };
169
- validateIcon: boolean;
170
160
  cellHosts: QueryList<CellHostDirective>;
161
+ globalSearchInput: ElementRef<HTMLInputElement>;
171
162
  changeLayout: EventEmitter<any>;
172
163
  customCellEvent: EventEmitter<any>;
173
164
  filterOptions: EventEmitter<any>;
@@ -175,7 +166,6 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
175
166
  tablePresetConfig: EventEmitter<any>;
176
167
  sortingOrderOptions: EventEmitter<any>;
177
168
  createUpdateConfigListing: EventEmitter<any>;
178
- storePresetName: string;
179
169
  isFullScreen: boolean;
180
170
  activeTab: string | null;
181
171
  groupedColumns: any[];
@@ -193,6 +183,7 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
193
183
  filterColumnsList: any[];
194
184
  groupBoxPadding: number;
195
185
  presetName: string;
186
+ storePresetName: string;
196
187
  presetFilter: boolean;
197
188
  searchTextPresetTable: string;
198
189
  addFilterColumnInput: string;
@@ -205,18 +196,16 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
205
196
  editinDropdownSearch: string;
206
197
  isThreeDotsFilterOpen: boolean;
207
198
  confirmDelete: boolean;
208
- private originalActions;
209
199
  fontFamilies: string[];
210
200
  fontSizes: string[];
211
201
  hasScroll: boolean;
212
- constructor(columnService: SplitColumnsService, cdr: ChangeDetectorRef, commonSevice: CommonService, elementRef: ElementRef, ngZone: NgZone, copyService: CopyServiceService, renderer: Renderer2, sanitizer: DomSanitizer, exportService: ExportService, datePipe: DatePipe, formatCurrency: FormatCurrencyPipe, actionValidator: RowActionService, validationsService: ValidationsService, htmlSanatizerService: HtmlContentSanitizerService);
202
+ constructor(columnService: SplitColumnsService, cdr: ChangeDetectorRef, commonSevice: CommonService, elementRef: ElementRef, ngZone: NgZone, copyService: CopyServiceService, renderer: Renderer2, sanitizer: DomSanitizer, exportService: ExportService, datePipe: DatePipe, formatCurrency: FormatCurrencyPipe);
213
203
  cellText: any;
214
204
  nestedHeader: ElementRef;
215
205
  ngAfterViewInit(): Promise<void>;
216
206
  private injector;
217
207
  createCellInjector(row: any, col: any): Injector;
218
208
  private renderCustomCells;
219
- shouldRestoreScroll: boolean;
220
209
  ngAfterViewChecked(): void;
221
210
  ngOnInit(): void;
222
211
  dataSetLoading: boolean;
@@ -240,7 +229,6 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
240
229
  leftPinnedHeader: ElementRef<HTMLDivElement>;
241
230
  centerPinnedHeader: ElementRef<HTMLDivElement>;
242
231
  rightPinnedHeader: ElementRef<HTMLDivElement>;
243
- globalSearchInput: ElementRef<HTMLInputElement>;
244
232
  columnsGroupedBox: ElementRef<HTMLDivElement>;
245
233
  centerFakeScrollbar: ElementRef<HTMLDivElement>;
246
234
  updateColumnWidthsAndGroups(columns?: any): Promise<void>;
@@ -252,25 +240,6 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
252
240
  isNestedValueArray(obj: any, field: string): boolean;
253
241
  onResizeGroup(event: MouseEvent, col: any, isRightPinned?: boolean): void;
254
242
  private updateColumnWidthInSourceByField;
255
- get createUpdateColumnConfig(): {
256
- columns: any[];
257
- filters: any[];
258
- no_of_records: any;
259
- table_config: {
260
- rowShadingEnabled: boolean;
261
- showVerticalBorder: boolean;
262
- fontFaimly: string;
263
- headerTextFontsSize: number;
264
- selectedTableLayout: any;
265
- bodyTextFontsSize: number;
266
- globalSearch: string;
267
- filterNames: string;
268
- totalCount: number;
269
- activeFilters: boolean;
270
- oddRowsBackgroundColor: string;
271
- };
272
- type: string;
273
- };
274
243
  cleanColumns(columns: any[]): any[];
275
244
  onResizeColumn(event: MouseEvent, col: any): void;
276
245
  onResizeGroupBox(event: MouseEvent): void;
@@ -285,10 +254,11 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
285
254
  closeFilterDropdowns(event: MouseEvent): void;
286
255
  private hasParentWithClass;
287
256
  isMenueHidden: boolean;
288
- openThreeDotsMenu(event: MouseEvent, child: any, keepOriginalPosition?: boolean): void;
257
+ clickedOnSortIcon: boolean;
258
+ openThreeDotsMenu(event: MouseEvent, child: any, clickedOnSortIcon?: boolean): void;
289
259
  sortAsc(col: any): void;
290
260
  sortDesc(col: any): void;
291
- resetSort(col: any): void;
261
+ resetSort(col?: any): void;
292
262
  updateColumnPinInSourceByField(column: any, pinned: 'left' | 'right' | null, isNestedTable?: any, columns?: any): Promise<void>;
293
263
  private getVisibleLeafColumns;
294
264
  autosizeColumn(cols: any | any[]): void;
@@ -431,8 +401,8 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
431
401
  firstValue: any;
432
402
  firstCondition: string;
433
403
  secondValue: any;
434
- secondCondition: string | null;
435
- condition: string | null;
404
+ secondCondition: null;
405
+ condition: string;
436
406
  resetTextFilterChanges(): void;
437
407
  toggleAllValusSelectionInDropdownFilter(column: any): void;
438
408
  selectedFilterOptions: any[];
@@ -440,13 +410,12 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
440
410
  toggleSelectionInFilter(option: any): void;
441
411
  resetFilterChanges(): void;
442
412
  applyDropdownFilter(): void;
443
- private findColumn;
444
413
  isFilterAppliedOnColumn(column: any): boolean;
445
414
  toggleSelectAllSideFilters(col: any, event: Event): void;
446
415
  isAllSideFilterOptionsSelected(col: any): boolean;
447
416
  onOptionToggle(col: any, option: any): void;
448
417
  resetSideFilter(col: any): void;
449
- clearAllFilters(shouldUpdateConfigListing?: boolean): void;
418
+ clearAllFilters(): void;
450
419
  applySideFilter(column: any): void;
451
420
  removeSideFilter(column: any): void;
452
421
  collapseAllExpandedCells(): void;
@@ -458,9 +427,7 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
458
427
  setActiveCell(row: any, column: any): void;
459
428
  isActiveCell(row: any, col: any): boolean;
460
429
  textAreadInput: ElementRef<HTMLTextAreaElement>;
461
- menuReady: boolean;
462
430
  enableEdit(row: any, column: any, clickedFromDetailsBox?: boolean, cellContainer?: HTMLElement): void;
463
- isValueValid(row: any, column: any, control: any): boolean;
464
431
  disableEdit(row: any, column: any, control?: any): void;
465
432
  emailRegex: RegExp;
466
433
  validateEmail(value: string): boolean;
@@ -468,19 +435,6 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
468
435
  checkRowEditAndEmitValue(row: any, column: any, value?: any): void;
469
436
  isEditing(row: any, col: any): boolean;
470
437
  setNestedValue(obj: any, column: any, option: any, calledFromInput?: boolean): void;
471
- rollBackCellValue(row: any, column: any): void;
472
- arrayTempMap: Map<string, any[]>;
473
- private arrayKey;
474
- getArrayOptionId(option: any): any;
475
- getArrayOptionLabel(option: any): string;
476
- getArrayTemp(row: any, col: any): any[];
477
- isArraySelected(row: any, col: any, option: any): boolean;
478
- toggleArrayTemp(row: any, col: any, option: any): void;
479
- commitArray(row: any, col: any): void;
480
- onArrayBlur(row: any, col: any): void;
481
- cleanupArray(row: any, col: any): void;
482
- displayArrayValues(ids: any[], col?: any): string;
483
- displayArrayLabels(row: any, col: any): string;
484
438
  goToPage(page: any): void;
485
439
  onPageSizeChange(): void;
486
440
  actionPreset(data: any, type: any): void;
@@ -490,7 +444,8 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
490
444
  id: string;
491
445
  is_temp: boolean;
492
446
  };
493
- selectFilter(data: any): Promise<void>;
447
+ activeIndex: number | null | undefined;
448
+ selectFilter(data: any, index?: any): Promise<void>;
494
449
  savePreset(control?: any): void;
495
450
  getFilterHeaders(filters: any[], columns: any[]): string;
496
451
  toggleRowShading(): void;
@@ -626,6 +581,7 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
626
581
  hasAnyDefaultView(): boolean;
627
582
  get isTablePresetNotChanged(): any;
628
583
  onActionButtonClick(button: string): void;
584
+ createCustomColumn(): void;
629
585
  setActiveTab(tab: string | null): void;
630
586
  getBackgroundColor(row: any, isEven: boolean, section: 'left' | 'center' | 'right'): string | undefined;
631
587
  hasHorizontalScrollbar(): boolean;
@@ -646,26 +602,11 @@ export declare class DataGridComponent implements OnChanges, AfterViewInit, OnIn
646
602
  selectGroupRow(e: Event, row: any): void;
647
603
  getGroupCheckedState(row: any): boolean | undefined;
648
604
  getCellTitle(row: any, col: any): string;
649
- finishEdit(event: any): void;
650
- getDynamicRight(col: any, section: string, colIndex: number, subColIndex: number): number | null;
651
- blurInput(event: Event, row: any, col: any): void;
652
- getValidActions(element: any): string[];
653
- private isStatusField;
654
- /**
655
- * Capitalizes the first letter of each word in a string
656
- * Handles: spaced words, camelCase, snake_case, kebab-case, and compound words
657
- */
658
- private capitalizeStatus;
659
- gridContext: {
660
- applyFilter: (col: any) => void;
661
- clearFilter: (col: any) => void;
662
- };
663
- private closeAllFilterMenus;
664
- private emitFilters;
665
- applyFilterOnColumn(col: any): void;
666
- removeFilterFromColumn(col: any): void;
667
- getFormatedDate(val: any): string;
668
- closeAllExpandedRows(): void;
605
+ activeFilterType: string;
606
+ activeFilter(type: string): void;
607
+ duplicateFilter(): void;
608
+ renameFilter(filter: any): void;
609
+ deleteFilter(filter: any): void;
669
610
  static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent, never>;
670
- static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "data-grid", never, { "rowAnimation": { "alias": "rowAnimation"; "required": false; }; "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; }; "selectedTab": { "alias": "selectedTab"; "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; }; "packageData": { "alias": "packageData"; "required": false; }; "showUnLink": { "alias": "showUnLink"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "currencySymbol": { "alias": "currencySymbol"; "required": false; }; "currencyFormat": { "alias": "currencyFormat"; "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; }; "showFullScreenButton": { "alias": "showFullScreenButton"; "required": false; }; "enableCut": { "alias": "enableCut"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; "showCheckboxes": { "alias": "showCheckboxes"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "resetAllFilters": { "alias": "resetAllFilters"; "required": false; }; "defaultConfig": { "alias": "defaultConfig"; "required": false; }; "columnThreedotsMunuConfig": { "alias": "columnThreedotsMunuConfig"; "required": false; }; "validateIcon": { "alias": "validateIcon"; "required": false; }; }, { "changeLayout": "changeLayout"; "customCellEvent": "customCellEvent"; "filterOptions": "filterOptions"; "genericEvent": "genericEvent"; "tablePresetConfig": "tablePresetConfig"; "sortingOrderOptions": "sortingOrderOptions"; "createUpdateConfigListing": "createUpdateConfigListing"; }, never, never, false, never>;
611
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "data-grid", never, { "rowAnimation": { "alias": "rowAnimation"; "required": false; }; "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; }; "currencyFormat": { "alias": "currencyFormat"; "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; }; "showFullScreenButton": { "alias": "showFullScreenButton"; "required": false; }; "enableCut": { "alias": "enableCut"; "required": false; }; "tabs": { "alias": "tabs"; "required": false; }; "showCheckboxes": { "alias": "showCheckboxes"; "required": false; }; "consumerFont": { "alias": "consumerFont"; "required": false; }; "defaultConfig": { "alias": "defaultConfig"; "required": false; }; "resetAllFilters": { "alias": "resetAllFilters"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "columnThreedotsMunuConfig": { "alias": "columnThreedotsMunuConfig"; "required": false; }; }, { "changeLayout": "changeLayout"; "customCellEvent": "customCellEvent"; "filterOptions": "filterOptions"; "genericEvent": "genericEvent"; "tablePresetConfig": "tablePresetConfig"; "sortingOrderOptions": "sortingOrderOptions"; "createUpdateConfigListing": "createUpdateConfigListing"; }, never, never, false, never>;
671
612
  }
@@ -1,22 +1,18 @@
1
- import { OnInit, ViewContainerRef, Injector, ComponentRef, Type, EventEmitter, OnDestroy, SimpleChanges, OnChanges } from '@angular/core';
1
+ import { OnInit, ViewContainerRef, Injector, Type, EventEmitter } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- export declare class CellRenderInitDirective implements OnInit, OnChanges, OnDestroy {
3
+ export declare class CellRenderInitDirective implements OnInit {
4
4
  private vcr;
5
5
  private injector;
6
6
  componentType: Type<any>;
7
7
  rowData: any;
8
8
  colData: any;
9
9
  cellValue: any;
10
- context: any;
11
10
  cellEvent: EventEmitter<{
12
11
  eventName: string;
13
12
  data: any;
14
13
  }>;
15
14
  constructor(vcr: ViewContainerRef, injector: Injector);
16
- componentRef: ComponentRef<any>;
17
15
  ngOnInit(): void;
18
- ngOnChanges(changes: SimpleChanges): void;
19
- ngOnDestroy(): void;
20
16
  static ɵfac: i0.ɵɵFactoryDeclaration<CellRenderInitDirective, never>;
21
- static ɵdir: i0.ɵɵDirectiveDeclaration<CellRenderInitDirective, "[cellRenderInit]", never, { "componentType": { "alias": "cellRenderInit"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "colData": { "alias": "colData"; "required": false; }; "cellValue": { "alias": "cellValue"; "required": false; }; "context": { "alias": "context"; "required": false; }; }, { "cellEvent": "cellEvent"; }, never, never, false, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CellRenderInitDirective, "[cellRenderInit]", never, { "componentType": { "alias": "cellRenderInit"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "colData": { "alias": "colData"; "required": false; }; "cellValue": { "alias": "cellValue"; "required": false; }; }, { "cellEvent": "cellEvent"; }, never, never, false, never>;
22
18
  }
@@ -18,9 +18,6 @@ export declare class CommonService {
18
18
  formatDateValue(value: any, momentFormat?: string): string;
19
19
  private convertMomentToAngularDateFormat;
20
20
  private parseDDMMYYYY;
21
- getCellClasses(column: any, value: any): string;
22
- replaceColumnQuery(columns: any[], targetCol: any, newQuery: any): boolean;
23
- capitalizeStatus(value: any): string;
24
21
  static ɵfac: i0.ɵɵFactoryDeclaration<CommonService, never>;
25
22
  static ɵprov: i0.ɵɵInjectableDeclaration<CommonService>;
26
23
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ms-data-grid",
3
- "version": "0.0.130",
3
+ "version": "0.0.131",
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",
@@ -1,59 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/platform-browser";
4
- export class HtmlContentSanitizerService {
5
- constructor(sanitizer) {
6
- this.sanitizer = sanitizer;
7
- }
8
- cleanEditorContent(content) {
9
- if (!content) {
10
- return '';
11
- }
12
- let decoded = this.decodeHtml(content);
13
- decoded = this.stripUnwantedTags(decoded);
14
- decoded = this.normalizeTableStructure(decoded);
15
- decoded = this.applyInlineStyles(decoded);
16
- decoded = this.styleImages(decoded);
17
- return this.sanitizer.bypassSecurityTrustHtml(decoded);
18
- }
19
- // ------------------ helpers ------------------
20
- decodeHtml(content) {
21
- const textarea = document.createElement('textarea');
22
- textarea.innerHTML = content;
23
- return textarea.value.replace(/&nbsp;/g, ' ');
24
- }
25
- stripUnwantedTags(html) {
26
- return html.replace(/<\/?(span|p|thead|tbody|tfoot)[^>]*>/gi, '');
27
- }
28
- normalizeTableStructure(html) {
29
- return html
30
- .replace(/<table[^>]*>/gi, '<table>')
31
- .replace(/<tr[^>]*>/gi, '<tr>')
32
- .replace(/<th[^>]*>/gi, '<th>')
33
- .replace(/<td[^>]*>/gi, '<td>');
34
- }
35
- applyInlineStyles(html) {
36
- return html
37
- .replace(/<table([^>]*)>/gi, `<table style="width:100%;border-collapse:collapse;padding:20px;font-size:14px;background:#fff;"$1>`)
38
- .replace(/<tr([^>]*)>/gi, `<tr style="border-bottom:1px solid #ccc;"$1>`)
39
- .replace(/<th([^>]*)>/gi, `<th style="background:#f0f0f0;font-weight:600;font-size:16px;color:#2A1F73;border:1px solid #ccc;padding:12px 20px;text-align:left;"$1>`)
40
- .replace(/<td([^>]*)>/gi, `<td style="min-width:120px;border:1px solid #ccc;padding:12px 20px;text-align:left;"$1>`);
41
- }
42
- styleImages(html) {
43
- return html.replace(/<img([^>]*)>/gi, (match, attrs) => {
44
- if (/style=/.test(attrs)) {
45
- return match;
46
- }
47
- return `<img style="width:30%;height:30%;border-radius:16px;padding-top:15px;padding-bottom:10px;"${attrs}>`;
48
- });
49
- }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HtmlContentSanitizerService, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
51
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HtmlContentSanitizerService, providedIn: 'root' }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HtmlContentSanitizerService, decorators: [{
54
- type: Injectable,
55
- args: [{
56
- providedIn: 'root'
57
- }]
58
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1jb250ZW50LXNhbml0aXplci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvc2VydmljZXMvaHRtbC1jb250ZW50LXNhbml0aXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0zQyxNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBRyxDQUFDO0lBRS9DLGtCQUFrQixDQUFDLE9BQWtDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEQsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGdEQUFnRDtJQUV4QyxVQUFVLENBQUMsT0FBZTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFZO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU8sdUJBQXVCLENBQUMsSUFBWTtRQUMxQyxPQUFPLElBQUk7YUFDUixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDO2FBQ3BDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO2FBQzlCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO2FBQzlCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQVk7UUFDcEMsT0FBTyxJQUFJO2FBQ1IsT0FBTyxDQUNOLGtCQUFrQixFQUNsQixvR0FBb0csQ0FDckc7YUFDQSxPQUFPLENBQ04sZUFBZSxFQUNmLDhDQUE4QyxDQUMvQzthQUNBLE9BQU8sQ0FDTixlQUFlLEVBQ2YseUlBQXlJLENBQzFJO2FBQ0EsT0FBTyxDQUNOLGVBQWUsRUFDZix5RkFBeUYsQ0FDMUYsQ0FBQztJQUNOLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBWTtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckQsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QixPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsT0FBTyw2RkFBNkYsS0FBSyxHQUFHLENBQUM7UUFDL0csQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWpFVSwyQkFBMkI7bUhBQTNCLDJCQUEyQixjQUYxQixNQUFNOzs0RkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIdG1sQ29udGVudFNhbml0aXplclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgY2xlYW5FZGl0b3JDb250ZW50KGNvbnRlbnQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBTYWZlSHRtbCB7XG4gICAgaWYgKCFjb250ZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgbGV0IGRlY29kZWQgPSB0aGlzLmRlY29kZUh0bWwoY29udGVudCk7XG4gICAgZGVjb2RlZCA9IHRoaXMuc3RyaXBVbndhbnRlZFRhZ3MoZGVjb2RlZCk7XG4gICAgZGVjb2RlZCA9IHRoaXMubm9ybWFsaXplVGFibGVTdHJ1Y3R1cmUoZGVjb2RlZCk7XG4gICAgZGVjb2RlZCA9IHRoaXMuYXBwbHlJbmxpbmVTdHlsZXMoZGVjb2RlZCk7XG4gICAgZGVjb2RlZCA9IHRoaXMuc3R5bGVJbWFnZXMoZGVjb2RlZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZGVjb2RlZCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcml2YXRlIGRlY29kZUh0bWwoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gY29udGVudDtcbiAgICByZXR1cm4gdGV4dGFyZWEudmFsdWUucmVwbGFjZSgvJm5ic3A7L2csICcgJyk7XG4gIH1cblxuICBwcml2YXRlIHN0cmlwVW53YW50ZWRUYWdzKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGh0bWwucmVwbGFjZSgvPFxcLz8oc3BhbnxwfHRoZWFkfHRib2R5fHRmb290KVtePl0qPi9naSwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVUYWJsZVN0cnVjdHVyZShodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBodG1sXG4gICAgICAucmVwbGFjZSgvPHRhYmxlW14+XSo+L2dpLCAnPHRhYmxlPicpXG4gICAgICAucmVwbGFjZSgvPHRyW14+XSo+L2dpLCAnPHRyPicpXG4gICAgICAucmVwbGFjZSgvPHRoW14+XSo+L2dpLCAnPHRoPicpXG4gICAgICAucmVwbGFjZSgvPHRkW14+XSo+L2dpLCAnPHRkPicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUlubGluZVN0eWxlcyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBodG1sXG4gICAgICAucmVwbGFjZShcbiAgICAgICAgLzx0YWJsZShbXj5dKik+L2dpLFxuICAgICAgICBgPHRhYmxlIHN0eWxlPVwid2lkdGg6MTAwJTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7cGFkZGluZzoyMHB4O2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQ6I2ZmZjtcIiQxPmBcbiAgICAgIClcbiAgICAgIC5yZXBsYWNlKFxuICAgICAgICAvPHRyKFtePl0qKT4vZ2ksXG4gICAgICAgIGA8dHIgc3R5bGU9XCJib3JkZXItYm90dG9tOjFweCBzb2xpZCAjY2NjO1wiJDE+YFxuICAgICAgKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIC88dGgoW14+XSopPi9naSxcbiAgICAgICAgYDx0aCBzdHlsZT1cImJhY2tncm91bmQ6I2YwZjBmMDtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE2cHg7Y29sb3I6IzJBMUY3Mztib3JkZXI6MXB4IHNvbGlkICNjY2M7cGFkZGluZzoxMnB4IDIwcHg7dGV4dC1hbGlnbjpsZWZ0O1wiJDE+YFxuICAgICAgKVxuICAgICAgLnJlcGxhY2UoXG4gICAgICAgIC88dGQoW14+XSopPi9naSxcbiAgICAgICAgYDx0ZCBzdHlsZT1cIm1pbi13aWR0aDoxMjBweDtib3JkZXI6MXB4IHNvbGlkICNjY2M7cGFkZGluZzoxMnB4IDIwcHg7dGV4dC1hbGlnbjpsZWZ0O1wiJDE+YFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3R5bGVJbWFnZXMoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaHRtbC5yZXBsYWNlKC88aW1nKFtePl0qKT4vZ2ksIChtYXRjaCwgYXR0cnMpID0+IHtcbiAgICAgIGlmICgvc3R5bGU9Ly50ZXN0KGF0dHJzKSkge1xuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYDxpbWcgc3R5bGU9XCJ3aWR0aDozMCU7aGVpZ2h0OjMwJTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZy10b3A6MTVweDtwYWRkaW5nLWJvdHRvbToxMHB4O1wiJHthdHRyc30+YDtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,145 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class RowActionService {
4
- constructor() {
5
- this.STATUS_SETS = {
6
- EDIT_BLOCKED: [
7
- 'expired', 'closed', 'Assigning Stop', 'Evaluation Start',
8
- 'Evaluation Stop', 'Completed', 'approved', 'rejected',
9
- 'partially', 'accepted'
10
- ],
11
- ARCHIVE_BLOCKED: [
12
- 'approved', 'partially', 'Assigning Start',
13
- 'Completed', 'Evaluation Start'
14
- ],
15
- DISPOSED: ['scrap', 'trashed', 'disposed'],
16
- SEPARATED: ['termination', 'resignation', 'retirement', 'separated'],
17
- UNAVAILABLE: ['unavailable', 'unAvailable']
18
- };
19
- this.ACTION_ALIASES = {
20
- accept: 'view',
21
- achive: 'unactive'
22
- };
23
- this.rules = {
24
- assigningstart: (r) => r.status === 'To be start Assigning' && !r.isDeleted,
25
- assigningstop: (r) => r.status === 'Assigning Start' && !r.isDeleted,
26
- evaluationstart: (r) => r.status === 'Assigning Stop' && !r.isDeleted,
27
- completed: (r) => r.status === 'Evaluation Start' && !r.isDeleted,
28
- archive: (r) => this.canArchiveOrDelete(r),
29
- unactive: (r) => this.canArchiveOrDelete(r),
30
- delete: (r) => this.canArchiveOrDelete(r),
31
- unarchive: (r) => r.isDeleted && r.availStatus !== 'disposed',
32
- active: (r) => r.isDeleted && r.availStatus !== 'disposed',
33
- link: (r) => !this.STATUS_SETS.UNAVAILABLE.includes(r.status) &&
34
- !r.isDeleted &&
35
- r.availStatus !== 'disposed' &&
36
- r.status !== 'linked',
37
- unlink: (r, ctx) => ctx.showUnLink === true && r.status === 'linked',
38
- rejoin: (r) => this.STATUS_SETS.SEPARATED.includes(r.accountStatus),
39
- settlementinfo: (r) => this.STATUS_SETS.SEPARATED.includes(r.accountStatus),
40
- assign: (r) => r.status !== 'assigned',
41
- edit: (r, ctx) => this.canEdit(r, ctx),
42
- trash: (r) => !this.STATUS_SETS.DISPOSED.includes(r.availStatus),
43
- scrap: (r) => !this.STATUS_SETS.DISPOSED.includes(r.availStatus),
44
- retain: (r) => !this.STATUS_SETS.DISPOSED.includes(r.availStatus),
45
- defaultgrade: (r) => r.isCustomGrade !== 'Active',
46
- subscribe: (r, ctx) => !r.assignedToIds.includes(ctx.currentUserId),
47
- unsubscribe: (r, ctx) => r.assignedToIds.includes(ctx.currentUserId),
48
- changestatus: (r) => !r.isDeleted,
49
- download: (r) => r.offerLetter !== null,
50
- view: (r) => r.offerLetter !== null
51
- };
52
- }
53
- normalizeRow(element) {
54
- return {
55
- isDeleted: element.is_deleted === true || element.is_deleted === 'true',
56
- status: element.status || '',
57
- availStatus: element.availStatus || '',
58
- accountStatus: (element.account_status || '').toLowerCase(),
59
- assigneeCount: element.assignee?.length ?? 0,
60
- assignedToIds: element.assigned_to?.map((x) => x.id) ?? [],
61
- settlementCompleted: element.settlement_completed === true,
62
- finalSettlementCompleted: element.final_settlement_completed === true,
63
- storeEdit: element.store_edit !== false,
64
- isOwner: element.is_owner ?? true,
65
- isCustomGrade: element.is_custom_grade || '',
66
- parent: element.parent,
67
- offerLetter: element.offer_letter,
68
- typename: element.__typename || ''
69
- };
70
- }
71
- normalizeAction(action, ctx) {
72
- let normalized = this.ACTION_ALIASES[action] || action;
73
- if (ctx.packageData) {
74
- if (action === 'unarchive')
75
- return 'active';
76
- if (action === 'archive')
77
- return 'unactive';
78
- }
79
- return normalized.toLowerCase();
80
- }
81
- canArchiveOrDelete(r) {
82
- return (!r.isDeleted &&
83
- !r.settlementCompleted &&
84
- !r.finalSettlementCompleted &&
85
- r.availStatus !== 'reserved' &&
86
- r.assigneeCount === 0 &&
87
- r.availStatus !== 'disposed' &&
88
- r.availStatus !== 'maintenance' &&
89
- r.availStatus !== 'assigned' &&
90
- !this.STATUS_SETS.ARCHIVE_BLOCKED.includes(r.status) &&
91
- r.parent !== null);
92
- }
93
- canEdit(r, ctx) {
94
- const isBlocked = this.STATUS_SETS.EDIT_BLOCKED.includes(r.status) ||
95
- r.isDeleted ||
96
- !r.storeEdit ||
97
- r.availStatus === 'disposed' ||
98
- r.settlementCompleted ||
99
- r.finalSettlementCompleted;
100
- if (isBlocked)
101
- return false;
102
- if (ctx.tableType === 'BusinessExpenseListing') {
103
- return true;
104
- }
105
- return r.status !== 'accepted' && r.isOwner;
106
- }
107
- isActionValid(action, element, ctx = {}) {
108
- const row = this.normalizeRow(element);
109
- const normalizedAction = this.normalizeAction(action, ctx);
110
- const rule = this.rules[normalizedAction];
111
- if (rule) {
112
- return rule(row, ctx);
113
- }
114
- return row.availStatus !== 'disposed' || row.typename === 'Alert';
115
- }
116
- getValidActions(actions, element, ctx = {}) {
117
- if (!actions?.length)
118
- return [];
119
- let validActions = actions.filter(action => this.isActionValid(action, element, ctx));
120
- if (ctx.tableType === 'recruitmentListing') {
121
- validActions = this.applyRecruitmentFilters(validActions, element);
122
- }
123
- return validActions;
124
- }
125
- applyRecruitmentFilters(actions, element) {
126
- let filtered = [...actions];
127
- if (element?.status === 'hired' && !element?.is_deleted) {
128
- filtered = filtered.filter(action => !['changestatus', 'unarchive', 'archive', 'edit'].includes(action));
129
- }
130
- if (element?.is_deleted) {
131
- filtered = filtered.filter(action => action !== 'changestatus');
132
- }
133
- if (element?.offer_letter === null) {
134
- filtered = filtered.filter(action => !['download', 'view'].includes(action));
135
- }
136
- return filtered;
137
- }
138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RowActionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
139
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RowActionService, providedIn: 'root' }); }
140
- }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RowActionService, decorators: [{
142
- type: Injectable,
143
- args: [{ providedIn: 'root' }]
144
- }] });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWFjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvc2VydmljZXMvcm93LWFjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBNkIzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBR21CLGdCQUFXLEdBQUc7WUFDN0IsWUFBWSxFQUFFO2dCQUNaLFNBQVMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCO2dCQUN6RCxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFVBQVU7Z0JBQ3RELFdBQVcsRUFBRSxVQUFVO2FBQ3hCO1lBQ0QsZUFBZSxFQUFFO2dCQUNmLFVBQVUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCO2dCQUMxQyxXQUFXLEVBQUUsa0JBQWtCO2FBQ2hDO1lBQ0QsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUM7WUFDMUMsU0FBUyxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO1lBQ3BFLFdBQVcsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUM7U0FDbkMsQ0FBQztRQUVNLG1CQUFjLEdBQTJCO1lBQ3hELE1BQU0sRUFBRSxNQUFNO1lBQ2QsTUFBTSxFQUFFLFVBQVU7U0FDbkIsQ0FBQztRQUVlLFVBQUssR0FBK0I7WUFDbkQsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLHVCQUF1QixJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDM0UsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDLFNB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SyxvQkFBb0IsRUFBRTtZQUMxQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxPQUFpQixFQUFFLE9BQVk7UUFDN0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLElBQUksT0FBTyxFQUFFLE1BQU0sS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO1lBQ3ZELFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ2xDLENBQUMsQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQ25FLENBQUM7U0FDSDtRQUVELElBQUksT0FBTyxFQUFFLFVBQVUsRUFBRTtZQUN2QixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxjQUFjLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksT0FBTyxFQUFFLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDbEMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDbEMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQ3ZDLENBQUM7U0FDSDtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7K0dBNUtVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs7NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29udGV4dCB7XG4gIHRhYmxlVHlwZT86IHN0cmluZztcbiAgcGFja2FnZURhdGE/OiBib29sZWFuO1xuICBzaG93VW5MaW5rPzogYm9vbGVhbjtcbiAgY3VycmVudFVzZXJJZD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIE5vcm1hbGl6ZWRSb3cge1xuICBpc0RlbGV0ZWQ6IGJvb2xlYW47XG4gIHN0YXR1czogc3RyaW5nO1xuICBhdmFpbFN0YXR1czogc3RyaW5nO1xuICBhY2NvdW50U3RhdHVzOiBzdHJpbmc7XG4gIGFzc2lnbmVlQ291bnQ6IG51bWJlcjtcbiAgYXNzaWduZWRUb0lkczogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgc2V0dGxlbWVudENvbXBsZXRlZDogYm9vbGVhbjtcbiAgZmluYWxTZXR0bGVtZW50Q29tcGxldGVkOiBib29sZWFuO1xuICBzdG9yZUVkaXQ6IGJvb2xlYW47XG4gIGlzT3duZXI6IGJvb2xlYW47XG4gIGlzQ3VzdG9tR3JhZGU6IHN0cmluZztcbiAgcGFyZW50OiBhbnk7XG4gIG9mZmVyTGV0dGVyOiBhbnk7XG4gIHR5cGVuYW1lOiBzdHJpbmc7XG59XG5cbnR5cGUgQWN0aW9uUnVsZSA9IChyb3c6IE5vcm1hbGl6ZWRSb3csIGN0eDogQWN0aW9uQ29udGV4dCkgPT4gYm9vbGVhbjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSb3dBY3Rpb25TZXJ2aWNlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IFNUQVRVU19TRVRTID0ge1xuICAgIEVESVRfQkxPQ0tFRDogW1xuICAgICAgJ2V4cGlyZWQnLCAnY2xvc2VkJywgJ0Fzc2lnbmluZyBTdG9wJywgJ0V2YWx1YXRpb24gU3RhcnQnLFxuICAgICAgJ0V2YWx1YXRpb24gU3RvcCcsICdDb21wbGV0ZWQnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLFxuICAgICAgJ3BhcnRpYWxseScsICdhY2NlcHRlZCdcbiAgICBdLFxuICAgIEFSQ0hJVkVfQkxPQ0tFRDogW1xuICAgICAgJ2FwcHJvdmVkJywgJ3BhcnRpYWxseScsICdBc3NpZ25pbmcgU3RhcnQnLFxuICAgICAgJ0NvbXBsZXRlZCcsICdFdmFsdWF0aW9uIFN0YXJ0J1xuICAgIF0sXG4gICAgRElTUE9TRUQ6IFsnc2NyYXAnLCAndHJhc2hlZCcsICdkaXNwb3NlZCddLFxuICAgIFNFUEFSQVRFRDogWyd0ZXJtaW5hdGlvbicsICdyZXNpZ25hdGlvbicsICdyZXRpcmVtZW50JywgJ3NlcGFyYXRlZCddLFxuICAgIFVOQVZBSUxBQkxFOiBbJ3VuYXZhaWxhYmxlJywgJ3VuQXZhaWxhYmxlJ11cbiAgfSBhcyBjb25zdDtcblxuICBwcml2YXRlIHJlYWRvbmx5IEFDVElPTl9BTElBU0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGFjY2VwdDogJ3ZpZXcnLFxuICAgIGFjaGl2ZTogJ3VuYWN0aXZlJ1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcnVsZXM6IFJlY29yZDxzdHJpbmcsIEFjdGlvblJ1bGU+ID0ge1xuICAgIGFzc2lnbmluZ3N0YXJ0OiAocikgPT4gci5zdGF0dXMgPT09ICdUbyBiZSBzdGFydCBBc3NpZ25pbmcnICYmICFyLmlzRGVsZXRlZCxcbiAgICBhc3NpZ25pbmdzdG9wOiAocikgPT4gci5zdGF0dXMgPT09ICdBc3NpZ25pbmcgU3RhcnQnICYmICFyLmlzRGVsZXRlZCxcbiAgICBldmFsdWF0aW9uc3RhcnQ6IChyKSA9PiByLnN0YXR1cyA9PT0gJ0Fzc2lnbmluZyBTdG9wJyAmJiAhci5pc0RlbGV0ZWQsXG4gICAgY29tcGxldGVkOiAocikgPT4gci5zdGF0dXMgPT09ICdFdmFsdWF0aW9uIFN0YXJ0JyAmJiAhci5pc0RlbGV0ZWQsXG5cbiAgICBhcmNoaXZlOiAocikgPT4gdGhpcy5jYW5BcmNoaXZlT3JEZWxldGUociksXG4gICAgdW5hY3RpdmU6IChyKSA9PiB0aGlzLmNhbkFyY2hpdmVPckRlbGV0ZShyKSxcbiAgICBkZWxldGU6IChyKSA9PiB0aGlzLmNhbkFyY2hpdmVPckRlbGV0ZShyKSxcblxuICAgIHVuYXJjaGl2ZTogKHIpID0+IHIuaXNEZWxldGVkICYmIHIuYXZhaWxTdGF0dXMgIT09ICdkaXNwb3NlZCcsXG4gICAgYWN0aXZlOiAocikgPT4gci5pc0RlbGV0ZWQgJiYgci5hdmFpbFN0YXR1cyAhPT0gJ2Rpc3Bvc2VkJyxcblxuICAgIGxpbms6IChyKSA9PiBcbiAgICAgICF0aGlzLlNUQVRVU19TRVRTLlVOQVZBSUxBQkxFLmluY2x1ZGVzKChyLnN0YXR1cyBhcyBhbnkpKSAmJlxuICAgICAgIXIuaXNEZWxldGVkICYmXG4gICAgICByLmF2YWlsU3RhdHVzICE9PSAnZGlzcG9zZWQnICYmXG4gICAgICByLnN0YXR1cyAhPT0gJ2xpbmtlZCcsXG4gICAgdW5saW5rOiAociwgY3R4KSA9PiBjdHguc2hvd1VuTGluayA9PT0gdHJ1ZSAmJiByLnN0YXR1cyA9PT0gJ2xpbmtlZCcsXG5cbiAgICByZWpvaW46IChyKSA9PiB0aGlzLlNUQVRVU19TRVRTLlNFUEFSQVRFRC5pbmNsdWRlcygoci5hY2NvdW50U3RhdHVzIGFzIGFueSkpLFxuICAgIHNldHRsZW1lbnRpbmZvOiAocikgPT4gdGhpcy5TVEFUVVNfU0VUUy5TRVBBUkFURUQuaW5jbHVkZXMoKHIuYWNjb3VudFN0YXR1cyBhcyBhbnkpKSxcblxuICAgIGFzc2lnbjogKHIpID0+IHIuc3RhdHVzICE9PSAnYXNzaWduZWQnLFxuICAgIGVkaXQ6IChyLCBjdHgpID0+IHRoaXMuY2FuRWRpdChyLCBjdHgpLFxuXG4gICAgdHJhc2g6IChyKSA9PiAhdGhpcy5TVEFUVVNfU0VUUy5ESVNQT1NFRC5pbmNsdWRlcygoci5hdmFpbFN0YXR1cyBhcyBhbnkpKSxcbiAgICBzY3JhcDogKHIpID0+ICF0aGlzLlNUQVRVU19TRVRTLkRJU1BPU0VELmluY2x1ZGVzKChyLmF2YWlsU3RhdHVzIGFzIGFueSkpLFxuICAgIHJldGFpbjogKHIpID0+ICF0aGlzLlNUQVRVU19TRVRTLkRJU1BPU0VELmluY2x1ZGVzKChyLmF2YWlsU3RhdHVzIGFzIGFueSkpLFxuXG4gICAgZGVmYXVsdGdyYWRlOiAocikgPT4gci5pc0N1c3RvbUdyYWRlICE9PSAnQWN0aXZlJyxcblxuICAgIHN1YnNjcmliZTogKHIsIGN0eCkgPT4gIXIuYXNzaWduZWRUb0lkcy5pbmNsdWRlcygoY3R4LmN1cnJlbnRVc2VySWQgYXMgYW55KSksXG4gICAgdW5zdWJzY3JpYmU6IChyLCBjdHgpID0+IHIuYXNzaWduZWRUb0lkcy5pbmNsdWRlcygoY3R4LmN1cnJlbnRVc2VySWQgYXMgYW55KSksXG5cbiAgICBjaGFuZ2VzdGF0dXM6IChyKSA9PiAhci5pc0RlbGV0ZWQsXG5cbiAgICBkb3dubG9hZDogKHIpID0+IHIub2ZmZXJMZXR0ZXIgIT09IG51bGwsXG4gICAgdmlldzogKHIpID0+IHIub2ZmZXJMZXR0ZXIgIT09IG51bGxcbiAgfTtcblxuICBwcml2YXRlIG5vcm1hbGl6ZVJvdyhlbGVtZW50OiBhbnkpOiBOb3JtYWxpemVkUm93IHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNEZWxldGVkOiBlbGVtZW50LmlzX2RlbGV0ZWQgPT09IHRydWUgfHwgZWxlbWVudC5pc19kZWxldGVkID09PSAndHJ1ZScsXG4gICAgICBzdGF0dXM6IGVsZW1lbnQuc3RhdHVzIHx8ICcnLFxuICAgICAgYXZhaWxTdGF0dXM6IGVsZW1lbnQuYXZhaWxTdGF0dXMgfHwgJycsXG4gICAgICBhY2NvdW50U3RhdHVzOiAoZWxlbWVudC5hY2NvdW50X3N0YXR1cyB8fCAnJykudG9Mb3dlckNhc2UoKSxcbiAgICAgIGFzc2lnbmVlQ291bnQ6IGVsZW1lbnQuYXNzaWduZWU/Lmxlbmd0aCA/PyAwLFxuICAgICAgYXNzaWduZWRUb0lkczogZWxlbWVudC5hc3NpZ25lZF90bz8ubWFwKCh4OiBhbnkpID0+IHguaWQpID8/IFtdLFxuICAgICAgc2V0dGxlbWVudENvbXBsZXRlZDogZWxlbWVudC5zZXR0bGVtZW50X2NvbXBsZXRlZCA9PT0gdHJ1ZSxcbiAgICAgIGZpbmFsU2V0dGxlbWVudENvbXBsZXRlZDogZWxlbWVudC5maW5hbF9zZXR0bGVtZW50X2NvbXBsZXRlZCA9PT0gdHJ1ZSxcbiAgICAgIHN0b3JlRWRpdDogZWxlbWVudC5zdG9yZV9lZGl0ICE9PSBmYWxzZSxcbiAgICAgIGlzT3duZXI6IGVsZW1lbnQuaXNfb3duZXIgPz8gdHJ1ZSxcbiAgICAgIGlzQ3VzdG9tR3JhZGU6IGVsZW1lbnQuaXNfY3VzdG9tX2dyYWRlIHx8ICcnLFxuICAgICAgcGFyZW50OiBlbGVtZW50LnBhcmVudCxcbiAgICAgIG9mZmVyTGV0dGVyOiBlbGVtZW50Lm9mZmVyX2xldHRlcixcbiAgICAgIHR5cGVuYW1lOiBlbGVtZW50Ll9fdHlwZW5hbWUgfHwgJydcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIGN0eDogQWN0aW9uQ29udGV4dCk6IHN0cmluZyB7XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLkFDVElPTl9BTElBU0VTW2FjdGlvbl0gfHwgYWN0aW9uO1xuXG4gICAgaWYgKGN0eC5wYWNrYWdlRGF0YSkge1xuICAgICAgaWYgKGFjdGlvbiA9PT0gJ3VuYXJjaGl2ZScpIHJldHVybiAnYWN0aXZlJztcbiAgICAgIGlmIChhY3Rpb24gPT09ICdhcmNoaXZlJykgcmV0dXJuICd1bmFjdGl2ZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuQXJjaGl2ZU9yRGVsZXRlKHI6IE5vcm1hbGl6ZWRSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXIuaXNEZWxldGVkICYmXG4gICAgICAhci5zZXR0bGVtZW50Q29tcGxldGVkICYmXG4gICAgICAhci5maW5hbFNldHRsZW1lbnRDb21wbGV0ZWQgJiZcbiAgICAgIHIuYXZhaWxTdGF0dXMgIT09ICdyZXNlcnZlZCcgJiZcbiAgICAgIHIuYXNzaWduZWVDb3VudCA9PT0gMCAmJlxuICAgICAgci5hdmFpbFN0YXR1cyAhPT0gJ2Rpc3Bvc2VkJyAmJlxuICAgICAgci5hdmFpbFN0YXR1cyAhPT0gJ21haW50ZW5hbmNlJyAmJlxuICAgICAgci5hdmFpbFN0YXR1cyAhPT0gJ2Fzc2lnbmVkJyAmJlxuICAgICAgIXRoaXMuU1RBVFVTX1NFVFMuQVJDSElWRV9CTE9DS0VELmluY2x1ZGVzKChyLnN0YXR1cyBhcyBhbnkpKSAmJlxuICAgICAgci5wYXJlbnQgIT09IG51bGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5FZGl0KHI6IE5vcm1hbGl6ZWRSb3csIGN0eDogQWN0aW9uQ29udGV4dCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQmxvY2tlZCA9IFxuICAgICAgdGhpcy5TVEFUVVNfU0VUUy5FRElUX0JMT0NLRUQuaW5jbHVkZXMoKHIuc3RhdHVzIGFzIGFueSkpIHx8XG4gICAgICByLmlzRGVsZXRlZCB8fFxuICAgICAgIXIuc3RvcmVFZGl0IHx8XG4gICAgICByLmF2YWlsU3RhdHVzID09PSAnZGlzcG9zZWQnIHx8XG4gICAgICByLnNldHRsZW1lbnRDb21wbGV0ZWQgfHxcbiAgICAgIHIuZmluYWxTZXR0bGVtZW50Q29tcGxldGVkO1xuXG4gICAgaWYgKGlzQmxvY2tlZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKGN0eC50YWJsZVR5cGUgPT09ICdCdXNpbmVzc0V4cGVuc2VMaXN0aW5nJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHIuc3RhdHVzICE9PSAnYWNjZXB0ZWQnICYmIHIuaXNPd25lcjtcbiAgfVxuXG4gIGlzQWN0aW9uVmFsaWQoYWN0aW9uOiBzdHJpbmcsIGVsZW1lbnQ6IGFueSwgY3R4OiBBY3Rpb25Db250ZXh0ID0ge30pOiBib29sZWFuIHtcbiAgICBjb25zdCByb3cgPSB0aGlzLm5vcm1hbGl6ZVJvdyhlbGVtZW50KTtcbiAgICBjb25zdCBub3JtYWxpemVkQWN0aW9uID0gdGhpcy5ub3JtYWxpemVBY3Rpb24oYWN0aW9uLCBjdHgpO1xuICAgIGNvbnN0IHJ1bGUgPSB0aGlzLnJ1bGVzW25vcm1hbGl6ZWRBY3Rpb25dO1xuXG4gICAgaWYgKHJ1bGUpIHtcbiAgICAgIHJldHVybiBydWxlKHJvdywgY3R4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93LmF2YWlsU3RhdHVzICE9PSAnZGlzcG9zZWQnIHx8IHJvdy50eXBlbmFtZSA9PT0gJ0FsZXJ0JztcbiAgfVxuXG4gIGdldFZhbGlkQWN0aW9ucyhhY3Rpb25zOiBzdHJpbmdbXSwgZWxlbWVudDogYW55LCBjdHg6IEFjdGlvbkNvbnRleHQgPSB7fSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIWFjdGlvbnM/Lmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgIFxuICAgIGxldCB2YWxpZEFjdGlvbnMgPSBhY3Rpb25zLmZpbHRlcihhY3Rpb24gPT4gXG4gICAgICB0aGlzLmlzQWN0aW9uVmFsaWQoYWN0aW9uLCBlbGVtZW50LCBjdHgpXG4gICAgKTtcblxuICAgIGlmIChjdHgudGFibGVUeXBlID09PSAncmVjcnVpdG1lbnRMaXN0aW5nJykge1xuICAgICAgdmFsaWRBY3Rpb25zID0gdGhpcy5hcHBseVJlY3J1aXRtZW50RmlsdGVycyh2YWxpZEFjdGlvbnMsIGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZEFjdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5UmVjcnVpdG1lbnRGaWx0ZXJzKGFjdGlvbnM6IHN0cmluZ1tdLCBlbGVtZW50OiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGZpbHRlcmVkID0gWy4uLmFjdGlvbnNdO1xuXG4gICAgaWYgKGVsZW1lbnQ/LnN0YXR1cyA9PT0gJ2hpcmVkJyAmJiAhZWxlbWVudD8uaXNfZGVsZXRlZCkge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJlZC5maWx0ZXIoYWN0aW9uID0+IFxuICAgICAgICAhWydjaGFuZ2VzdGF0dXMnLCAndW5hcmNoaXZlJywgJ2FyY2hpdmUnLCAnZWRpdCddLmluY2x1ZGVzKGFjdGlvbilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQ/LmlzX2RlbGV0ZWQpIHtcbiAgICAgIGZpbHRlcmVkID0gZmlsdGVyZWQuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24gIT09ICdjaGFuZ2VzdGF0dXMnKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudD8ub2ZmZXJfbGV0dGVyID09PSBudWxsKSB7XG4gICAgICBmaWx0ZXJlZCA9IGZpbHRlcmVkLmZpbHRlcihhY3Rpb24gPT4gXG4gICAgICAgICFbJ2Rvd25sb2FkJywgJ3ZpZXcnXS5pbmNsdWRlcyhhY3Rpb24pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfVxufSJdfQ==