@firestitch/list 12.20.1 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/app/classes/list-controller.d.ts +33 -28
  2. package/app/components/body/row/row.component.d.ts +2 -0
  3. package/app/components/list/list.component.d.ts +2 -0
  4. package/app/interfaces/listconfig.interface.d.ts +2 -1
  5. package/app/models/row.d.ts +7 -3
  6. package/esm2020/app/classes/data-controller.mjs +367 -0
  7. package/esm2020/app/classes/external-params-controller.mjs +147 -0
  8. package/esm2020/app/classes/list-controller.mjs +752 -0
  9. package/{esm2015/app/classes/pagination-controller.js → esm2020/app/classes/pagination-controller.mjs} +2 -3
  10. package/{esm2015/app/classes/persistance-controller.js → esm2020/app/classes/persistance-controller.mjs} +4 -4
  11. package/esm2020/app/classes/reorder-controller.mjs +182 -0
  12. package/esm2020/app/classes/selection-controller.mjs +468 -0
  13. package/esm2020/app/components/body/body.component.mjs +64 -0
  14. package/esm2020/app/components/body/row/actions/actions.component.mjs +97 -0
  15. package/esm2020/app/components/body/row/cell/cell.component.mjs +107 -0
  16. package/esm2020/app/components/body/row/inline-action/inline-action.component.mjs +33 -0
  17. package/esm2020/app/components/body/row/menu-action/menu-action.component.mjs +46 -0
  18. package/esm2020/app/components/body/row/row.component.mjs +321 -0
  19. package/esm2020/app/components/customize-cols/customize-cols.component.mjs +68 -0
  20. package/esm2020/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +16 -0
  21. package/esm2020/app/components/footer/footer-row/footer-row.component.mjs +28 -0
  22. package/esm2020/app/components/footer/footer.component.mjs +31 -0
  23. package/esm2020/app/components/head/head-cell/head-cell.component.mjs +29 -0
  24. package/esm2020/app/components/head/head.component.mjs +103 -0
  25. package/esm2020/app/components/list/list.component.mjs +388 -0
  26. package/esm2020/app/components/loader/loader.component.mjs +40 -0
  27. package/esm2020/app/components/manage-saved-filters/manage-saved-filters.component.mjs +76 -0
  28. package/esm2020/app/components/pagination/pagination.component.mjs +37 -0
  29. package/esm2020/app/components/saved-filters/saved-filters.component.mjs +29 -0
  30. package/esm2020/app/components/status/status.component.mjs +66 -0
  31. package/{esm2015/app/directives/cell/cell.directive.js → esm2020/app/directives/cell/cell.directive.mjs} +4 -4
  32. package/{esm2015/app/directives/column/column.directive.js → esm2020/app/directives/column/column.directive.mjs} +4 -4
  33. package/{esm2015/app/directives/content/content.directive.js → esm2020/app/directives/content/content.directive.mjs} +4 -4
  34. package/{esm2015/app/directives/content-init/content-init.directive.js → esm2020/app/directives/content-init/content-init.directive.mjs} +4 -4
  35. package/esm2020/app/directives/draggable-list/draggable-list.directive.mjs +328 -0
  36. package/esm2020/app/directives/draggable-row/draggable-row.directive.mjs +78 -0
  37. package/{esm2015/app/directives/empty-state/empty-state.directive.js → esm2020/app/directives/empty-state/empty-state.directive.mjs} +4 -4
  38. package/{esm2015/app/directives/footer/footer.directive.js → esm2020/app/directives/footer/footer.directive.mjs} +4 -4
  39. package/{esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js → esm2020/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs} +4 -4
  40. package/{esm2015/app/directives/group-footer/group-footer.directive.js → esm2020/app/directives/group-footer/group-footer.directive.mjs} +4 -4
  41. package/{esm2015/app/directives/group-header/group-header.directive.js → esm2020/app/directives/group-header/group-header.directive.mjs} +4 -4
  42. package/{esm2015/app/directives/header/header.directive.js → esm2020/app/directives/header/header.directive.mjs} +4 -4
  43. package/{esm2015/app/directives/heading/heading.directive.js → esm2020/app/directives/heading/heading.directive.mjs} +4 -4
  44. package/{esm2015/app/directives/heading-container/heading-container.directive.js → esm2020/app/directives/heading-container/heading-container.directive.mjs} +4 -4
  45. package/{esm2015/app/directives/subheading/subheading.directive.js → esm2020/app/directives/subheading/subheading.directive.mjs} +4 -4
  46. package/{esm2015/app/fs-list.module.js → esm2020/app/fs-list.module.mjs} +5 -5
  47. package/esm2020/app/interfaces/listconfig.interface.mjs +2 -0
  48. package/{esm2015/app/interfaces/pagination.interface.js → esm2020/app/interfaces/pagination.interface.mjs} +1 -1
  49. package/esm2020/app/models/row-action.model.mjs +90 -0
  50. package/esm2020/app/models/row.mjs +89 -0
  51. package/{esm2015/app/pipes/action-label.js → esm2020/app/pipes/action-label.mjs} +4 -4
  52. package/{esm2015/app/services/group-expand-notifier.service.js → esm2020/app/services/group-expand-notifier.service.mjs} +4 -4
  53. package/fesm2015/{firestitch-list.js → firestitch-list.mjs} +2716 -2755
  54. package/fesm2015/firestitch-list.mjs.map +1 -0
  55. package/fesm2020/firestitch-list.mjs +5844 -0
  56. package/fesm2020/firestitch-list.mjs.map +1 -0
  57. package/package.json +20 -7
  58. package/bundles/firestitch-list.umd.js +0 -7147
  59. package/bundles/firestitch-list.umd.js.map +0 -1
  60. package/esm2015/app/classes/data-controller.js +0 -365
  61. package/esm2015/app/classes/external-params-controller.js +0 -147
  62. package/esm2015/app/classes/list-controller.js +0 -743
  63. package/esm2015/app/classes/reorder-controller.js +0 -183
  64. package/esm2015/app/classes/selection-controller.js +0 -468
  65. package/esm2015/app/components/body/body.component.js +0 -69
  66. package/esm2015/app/components/body/row/actions/actions.component.js +0 -99
  67. package/esm2015/app/components/body/row/cell/cell.component.js +0 -113
  68. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +0 -37
  69. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +0 -50
  70. package/esm2015/app/components/body/row/row.component.js +0 -315
  71. package/esm2015/app/components/customize-cols/customize-cols.component.js +0 -72
  72. package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +0 -20
  73. package/esm2015/app/components/footer/footer-row/footer-row.component.js +0 -33
  74. package/esm2015/app/components/footer/footer.component.js +0 -36
  75. package/esm2015/app/components/head/head-cell/head-cell.component.js +0 -34
  76. package/esm2015/app/components/head/head.component.js +0 -108
  77. package/esm2015/app/components/list/list.component.js +0 -388
  78. package/esm2015/app/components/loader/loader.component.js +0 -45
  79. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +0 -79
  80. package/esm2015/app/components/pagination/pagination.component.js +0 -42
  81. package/esm2015/app/components/saved-filters/saved-filters.component.js +0 -32
  82. package/esm2015/app/components/status/status.component.js +0 -72
  83. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +0 -330
  84. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +0 -79
  85. package/esm2015/app/interfaces/listconfig.interface.js +0 -2
  86. package/esm2015/app/models/row-action.model.js +0 -90
  87. package/esm2015/app/models/row.js +0 -81
  88. package/fesm2015/firestitch-list.js.map +0 -1
  89. /package/{esm2015/app/classes/actions-controller.js → esm2020/app/classes/actions-controller.mjs} +0 -0
  90. /package/{esm2015/app/classes/columns-controller.js → esm2020/app/classes/columns-controller.mjs} +0 -0
  91. /package/{esm2015/app/classes/index.js → esm2020/app/classes/index.mjs} +0 -0
  92. /package/{esm2015/app/classes/sorting-controller.js → esm2020/app/classes/sorting-controller.mjs} +0 -0
  93. /package/{esm2015/app/directives/index.js → esm2020/app/directives/index.mjs} +0 -0
  94. /package/{esm2015/app/enums/button-type.enum.js → esm2020/app/enums/button-type.enum.mjs} +0 -0
  95. /package/{esm2015/app/enums/page-change-type.enum.js → esm2020/app/enums/page-change-type.enum.mjs} +0 -0
  96. /package/{esm2015/app/enums/pagination-strategy.enum.js → esm2020/app/enums/pagination-strategy.enum.mjs} +0 -0
  97. /package/{esm2015/app/enums/row-type.enum.js → esm2020/app/enums/row-type.enum.mjs} +0 -0
  98. /package/{esm2015/app/enums/state.enum.js → esm2020/app/enums/state.enum.mjs} +0 -0
  99. /package/{esm2015/app/fs-list.providers.js → esm2020/app/fs-list.providers.mjs} +0 -0
  100. /package/{esm2015/app/interfaces/cellconfig.interface.js → esm2020/app/interfaces/cellconfig.interface.mjs} +0 -0
  101. /package/{esm2015/app/interfaces/column-config.interface.js → esm2020/app/interfaces/column-config.interface.mjs} +0 -0
  102. /package/{esm2015/app/interfaces/draggable-list.interface.js → esm2020/app/interfaces/draggable-list.interface.mjs} +0 -0
  103. /package/{esm2015/app/interfaces/external-params.interface.js → esm2020/app/interfaces/external-params.interface.mjs} +0 -0
  104. /package/{esm2015/app/interfaces/index.js → esm2020/app/interfaces/index.mjs} +0 -0
  105. /package/{esm2015/app/interfaces/sorting-change-event.interface.js → esm2020/app/interfaces/sorting-change-event.interface.mjs} +0 -0
  106. /package/{esm2015/app/models/column-async-attribute.js → esm2020/app/models/column-async-attribute.mjs} +0 -0
  107. /package/{esm2015/app/models/column-attributes.js → esm2020/app/models/column-attributes.mjs} +0 -0
  108. /package/{esm2015/app/models/column.model.js → esm2020/app/models/column.model.mjs} +0 -0
  109. /package/{esm2015/app/models/row/base-row.js → esm2020/app/models/row/base-row.mjs} +0 -0
  110. /package/{esm2015/app/models/row/child-row.js → esm2020/app/models/row/child-row.mjs} +0 -0
  111. /package/{esm2015/app/models/row/group-footer-row.js → esm2020/app/models/row/group-footer-row.mjs} +0 -0
  112. /package/{esm2015/app/models/row/group-row.js → esm2020/app/models/row/group-row.mjs} +0 -0
  113. /package/{esm2015/app/models/row/simple-row.js → esm2020/app/models/row/simple-row.mjs} +0 -0
  114. /package/{esm2015/app/models/styleConfig.model.js → esm2020/app/models/styleConfig.model.mjs} +0 -0
  115. /package/{esm2015/app/pipes/index.js → esm2020/app/pipes/index.mjs} +0 -0
  116. /package/{esm2015/firestitch-list.js → esm2020/firestitch-list.mjs} +0 -0
  117. /package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
@@ -0,0 +1,321 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, KeyValueDiffers, Renderer2, ViewChildren, } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { ReorderPosition, ReorderStrategy, } from '../../../classes/reorder-controller';
5
+ import { SelectionController } from '../../../classes/selection-controller';
6
+ import { FsListDraggableListDirective } from '../../../directives/draggable-list/draggable-list.directive';
7
+ import { Row } from '../../../models/row';
8
+ import { RowAction } from '../../../models/row-action.model';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../../directives/draggable-list/draggable-list.directive";
11
+ import * as i2 from "@angular/material/checkbox";
12
+ import * as i3 from "./cell/cell.component";
13
+ import * as i4 from "./actions/actions.component";
14
+ import * as i5 from "@angular/material/icon";
15
+ import * as i6 from "@angular/common";
16
+ export class FsRowComponent {
17
+ constructor(el, _cdRef, _differs, _renderer, _draggableList) {
18
+ this.el = el;
19
+ this._cdRef = _cdRef;
20
+ this._differs = _differs;
21
+ this._renderer = _renderer;
22
+ this._draggableList = _draggableList;
23
+ this.role = 'row';
24
+ this.rowActionsRaw = [];
25
+ this.groupActionsRaw = [];
26
+ this.hasRowActions = false;
27
+ this.rowEvents = {};
28
+ this.restoreMode = false;
29
+ this.ReorderPosition = ReorderPosition;
30
+ this.ReorderStrategy = ReorderStrategy;
31
+ this.rowActions = [];
32
+ this.menuRowActions = [];
33
+ this.inlineRowActions = [];
34
+ this.selected = false;
35
+ this.indeterminateSelected = false;
36
+ this._eventListeners = [];
37
+ this._destroy$ = new Subject();
38
+ this._rowDiffer = _differs.find({}).create();
39
+ }
40
+ get isGroupRow() {
41
+ return this.row.isGroup;
42
+ }
43
+ get isGroupChildRow() {
44
+ return this.row.isGroupChild;
45
+ }
46
+ get isGroupFooterRow() {
47
+ return this.row.isGroupFooter;
48
+ }
49
+ get isDragDisabled() {
50
+ return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;
51
+ }
52
+ get isMultipleSelection() {
53
+ const multiple = this.reorderMultiple;
54
+ return multiple && this.selected;
55
+ }
56
+ get rowCssClass() {
57
+ let classes = ['fs-list-row'];
58
+ if (this.rowIndex % 2 !== 0) {
59
+ classes.push('fs-list-row-odd');
60
+ }
61
+ if (this.rowIndex % 2 === 0) {
62
+ classes.push('fs-list-row-even');
63
+ }
64
+ if (this.row?.isGroup) {
65
+ classes.push('fs-list-row-group');
66
+ }
67
+ else if (this.row?.isChild) { // TODO fix isChild & all
68
+ classes.push('fs-list-row-group-child');
69
+ }
70
+ else if (this.row?.isGroupFooter) {
71
+ classes.push('fs-list-row-group-footer');
72
+ }
73
+ else {
74
+ classes.push('fs-list-row-body');
75
+ }
76
+ if (this.rowClass) {
77
+ classes = [
78
+ ...classes,
79
+ ...this._getRowClasses(this.rowClass),
80
+ ];
81
+ }
82
+ return classes.join(' ');
83
+ }
84
+ get dragCellVisible() {
85
+ return !this.row.isGroup;
86
+ }
87
+ get leftDragDropEnabled() {
88
+ return this.reorderEnabled
89
+ && this.reorderPosition === ReorderPosition.Left
90
+ && this.activeFiltersCount === 0;
91
+ }
92
+ get rightDragDropEnabled() {
93
+ return this.reorderEnabled
94
+ && this.reorderPosition === ReorderPosition.Right
95
+ && this.activeFiltersCount === 0;
96
+ }
97
+ ngOnInit() {
98
+ this._initRowEvents();
99
+ this._initSelection();
100
+ if (this.row) {
101
+ this._initRowActionsUpdate();
102
+ }
103
+ if (this.row && this.row.isGroup) {
104
+ if (this.row && this.row.isGroup && this.groupActionsRaw) {
105
+ this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));
106
+ this._filterActionsByCategories();
107
+ }
108
+ }
109
+ else if (this.rowActionsRaw) {
110
+ this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));
111
+ this._filterActionsByCategories();
112
+ }
113
+ }
114
+ ngDoCheck() {
115
+ if (this._rowDiffer.diff(this.row)) {
116
+ this.updateRowActions();
117
+ }
118
+ }
119
+ updateRowActions() {
120
+ if (this.rowActions) {
121
+ this.rowActions.forEach((action) => {
122
+ action.checkShowStatus(this.row.data, this.rowIndex);
123
+ action.updateLink(this.row.data);
124
+ });
125
+ this._filterActionsByCategories();
126
+ }
127
+ this._cdRef.markForCheck();
128
+ }
129
+ ngOnDestroy() {
130
+ this._eventListeners.forEach((listener) => {
131
+ listener();
132
+ });
133
+ this._destroy$.next();
134
+ this._destroy$.complete();
135
+ }
136
+ /**
137
+ * Select row by checkbox
138
+ *
139
+ * @param event
140
+ */
141
+ selectRow(event) {
142
+ this.selection.rowSelectionChange(this.row, event.checked);
143
+ this._cdRef.markForCheck();
144
+ }
145
+ /**
146
+ * Track By for improve change detection
147
+ *
148
+ * @param index
149
+ */
150
+ trackByFn(index) {
151
+ return index;
152
+ }
153
+ dragStart(event) {
154
+ if (this.reorderEnabled && !this.isDragDisabled) {
155
+ event.preventDefault();
156
+ event.stopPropagation();
157
+ this._draggableList.dragStart(this.el.nativeElement);
158
+ }
159
+ }
160
+ /**
161
+ * Set event listeners for row
162
+ */
163
+ _initRowEvents() {
164
+ Object.keys(this.rowEvents || {})
165
+ .forEach((event) => {
166
+ if (this.rowEvents.hasOwnProperty(event)) {
167
+ const listener = this._renderer
168
+ .listen(this.el.nativeElement, event, (evt) => {
169
+ if (!this.reorderEnabled) {
170
+ this.rowEvents[event]({
171
+ event: evt,
172
+ row: this.row.data,
173
+ rowIndex: this.rowIndex,
174
+ });
175
+ }
176
+ });
177
+ this._eventListeners.push(listener);
178
+ }
179
+ });
180
+ }
181
+ _initRowActionsUpdate() {
182
+ this.row.actionsUpdate$
183
+ .pipe(takeUntil(this._destroy$))
184
+ .subscribe(() => {
185
+ this.updateRowActions();
186
+ });
187
+ }
188
+ _getRowClasses(rowClass) {
189
+ const classes = [];
190
+ const options = {
191
+ index: this.rowIndex,
192
+ type: this.row.type,
193
+ };
194
+ if (this.row.isGroup) {
195
+ options.groupIndex = this.row.index;
196
+ }
197
+ else if (this.row.isChild || this.row.isGroupFooter) { // TODO fix isChild & all
198
+ options.groupIndex = this.row.parent.index;
199
+ }
200
+ const resultClass = rowClass(this.row.data, options);
201
+ if (resultClass) {
202
+ if (typeof resultClass === 'string') {
203
+ classes.push(resultClass);
204
+ }
205
+ else if (typeof resultClass === 'object') {
206
+ const keys = Object.keys(resultClass);
207
+ for (const k of keys) {
208
+ if (resultClass[k] === true) {
209
+ classes.push(k);
210
+ }
211
+ }
212
+ }
213
+ }
214
+ return classes;
215
+ }
216
+ /**
217
+ * Subscribe to selection change events
218
+ */
219
+ _initSelection() {
220
+ if (this.selection) {
221
+ this.selected = this.row && this.selection.isRowSelected(this.row.data);
222
+ this.selection.selectionChange$
223
+ .pipe(
224
+ // // Would like to respond only when checkbox on top is changed
225
+ // // or was clicked "Select All" in selection dialog
226
+ // filter(({type}) => {
227
+ // return type === SelectionChangeType.AllVisibleSelectionChange
228
+ // || type === SelectionChangeType.SelectedAll;
229
+ // }),
230
+ takeUntil(this._destroy$))
231
+ .subscribe(() => {
232
+ this.selected = this.row && this.selection.isRowSelected(this.row.data);
233
+ if (this.row?.isGroup) {
234
+ const groupSelection = this.selection.isGroupSelected(this.row);
235
+ if (groupSelection === 'indeterminate') {
236
+ this.selected = true;
237
+ this.indeterminateSelected = true;
238
+ }
239
+ else {
240
+ this.selected = groupSelection;
241
+ this.indeterminateSelected = false;
242
+ }
243
+ }
244
+ this._cdRef.markForCheck();
245
+ });
246
+ }
247
+ }
248
+ _filterActionsByCategories() {
249
+ this.menuRowActions = [];
250
+ this.inlineRowActions = [];
251
+ this.restoreAction = null;
252
+ this.rowActions.forEach((action) => {
253
+ if (!action.isShown) {
254
+ return;
255
+ }
256
+ if (action.menu && !action.restore) {
257
+ this.menuRowActions.push(action);
258
+ }
259
+ else if (!action.menu && !action.restore) {
260
+ this.inlineRowActions.push(action);
261
+ }
262
+ else if (action.restore) {
263
+ this.restoreAction = action;
264
+ }
265
+ });
266
+ }
267
+ }
268
+ FsRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsRowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: i1.FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Component });
269
+ FsRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsRowComponent, selector: "[fs-list-row]", inputs: { row: "row", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", hasRowActions: "hasRowActions", rowEvents: "rowEvents", rowClass: "rowClass", restoreMode: "restoreMode", rowIndex: "rowIndex", columns: "columns", selection: "selection", rowRemoved: "rowRemoved", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy", reorderMultiple: "reorderMultiple" }, host: { properties: { "attr.role": "this.role", "class.drag-row": "this.reorderEnabled", "class.multiple-selection": "this.isMultipleSelection", "class": "this.rowCssClass" } }, viewQueries: [{ propertyName: "cellRefs", predicate: ["td"], descendants: true }], ngImport: i0, template: "<!-- Drag -->\n<ng-container *ngIf=\"leftDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection && !(selection.disabled$ | async)\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <ng-container *ngIf=\"!row.isGroupFooter\">\n <mat-checkbox \n (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n </ng-container>\n </td>\n</ng-container>\n\n<!-- Content -->\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\n <td fs-cell\n *ngIf=\"(isGroupRow && !column.groupHeaderColspanned)\n || (isGroupFooterRow && !column.groupFooterColspanned)\n || (!isGroupRow && !isGroupFooterRow && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"rightDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col row-actions\">\n <ng-container *ngIf=\"!isGroupFooterRow\">\n <fs-list-row-actions\n [row]=\"row\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n </ng-container>\n</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible && !isGroupFooterRow; else emptyCell\">\n <td \n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>drag_handle</mat-icon>\n </td>\n </ng-container>\n <ng-template #emptyCell>\n <td class=\"fs-list-col drag-col\"></td>\n </ng-template>\n</ng-template>\n", styles: [":host.drag-hidden{display:none}:host.draggable{opacity:.8;position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px}:host.draggable td{border:none;background-color:#fff}:host.draggable-elem td{background-color:#c3c3c3}td.drag-col{width:24px;text-align:center;cursor:grab}td.drag-col.drag-disabled{opacity:.4;cursor:no-drop}td.drag-col mat-icon{display:flex}td.fs-list-col-selection{padding:10px}td.row-actions{width:1%;white-space:nowrap;overflow:hidden}td.row-actions .row-inline-action{margin-left:12px;display:inline-block}td.row-actions .row-inline-action:first-child{margin-left:0}td.row-actions .row-inline-action-icon,td.row-actions .row-inline-action-fab,td.row-actions .row-inline-action-mini-fab,td.row-actions .row-menu-action{width:35px;justify-content:center;align-items:center}td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"], components: [{ type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.FsCellComponent, selector: "[fs-cell]", inputs: ["column", "row", "rowIndex"] }, { type: i4.FsRowActionsComponent, selector: "fs-list-row-actions", inputs: ["row", "index", "restoreMode", "rowActions", "rowRemoved", "menuRowActions", "inlineRowActions", "restoreAction"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsRowComponent, decorators: [{
271
+ type: Component,
272
+ args: [{ selector: '[fs-list-row]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Drag -->\n<ng-container *ngIf=\"leftDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection && !(selection.disabled$ | async)\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <ng-container *ngIf=\"!row.isGroupFooter\">\n <mat-checkbox \n (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n </ng-container>\n </td>\n</ng-container>\n\n<!-- Content -->\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\n <td fs-cell\n *ngIf=\"(isGroupRow && !column.groupHeaderColspanned)\n || (isGroupFooterRow && !column.groupFooterColspanned)\n || (!isGroupRow && !isGroupFooterRow && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"rightDragDropEnabled\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col row-actions\">\n <ng-container *ngIf=\"!isGroupFooterRow\">\n <fs-list-row-actions\n [row]=\"row\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n </ng-container>\n</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible && !isGroupFooterRow; else emptyCell\">\n <td \n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>drag_handle</mat-icon>\n </td>\n </ng-container>\n <ng-template #emptyCell>\n <td class=\"fs-list-col drag-col\"></td>\n </ng-template>\n</ng-template>\n", styles: [":host.drag-hidden{display:none}:host.draggable{opacity:.8;position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px}:host.draggable td{border:none;background-color:#fff}:host.draggable-elem td{background-color:#c3c3c3}td.drag-col{width:24px;text-align:center;cursor:grab}td.drag-col.drag-disabled{opacity:.4;cursor:no-drop}td.drag-col mat-icon{display:flex}td.fs-list-col-selection{padding:10px}td.row-actions{width:1%;white-space:nowrap;overflow:hidden}td.row-actions .row-inline-action{margin-left:12px;display:inline-block}td.row-actions .row-inline-action:first-child{margin-left:0}td.row-actions .row-inline-action-icon,td.row-actions .row-inline-action-fab,td.row-actions .row-inline-action-mini-fab,td.row-actions .row-menu-action{width:35px;justify-content:center;align-items:center}td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"] }]
273
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: i1.FsListDraggableListDirective }]; }, propDecorators: { role: [{
274
+ type: HostBinding,
275
+ args: ['attr.role']
276
+ }], row: [{
277
+ type: Input
278
+ }], rowActionsRaw: [{
279
+ type: Input
280
+ }], groupActionsRaw: [{
281
+ type: Input
282
+ }], hasRowActions: [{
283
+ type: Input
284
+ }], rowEvents: [{
285
+ type: Input
286
+ }], rowClass: [{
287
+ type: Input
288
+ }], restoreMode: [{
289
+ type: Input
290
+ }], rowIndex: [{
291
+ type: Input
292
+ }], columns: [{
293
+ type: Input
294
+ }], selection: [{
295
+ type: Input
296
+ }], rowRemoved: [{
297
+ type: Input
298
+ }], activeFiltersCount: [{
299
+ type: Input
300
+ }], reorderEnabled: [{
301
+ type: Input
302
+ }, {
303
+ type: HostBinding,
304
+ args: ['class.drag-row']
305
+ }], reorderPosition: [{
306
+ type: Input
307
+ }], reorderStrategy: [{
308
+ type: Input
309
+ }], reorderMultiple: [{
310
+ type: Input
311
+ }], cellRefs: [{
312
+ type: ViewChildren,
313
+ args: ['td']
314
+ }], isMultipleSelection: [{
315
+ type: HostBinding,
316
+ args: ['class.multiple-selection']
317
+ }], rowCssClass: [{
318
+ type: HostBinding,
319
+ args: ['class']
320
+ }] } });
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLGVBQWUsRUFHZixTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7O0FBUzdELE1BQU0sT0FBTyxjQUFjO0lBMkN6QixZQUNTLEVBQWMsRUFDYixNQUF5QixFQUN6QixRQUF5QixFQUN6QixTQUFvQixFQUNwQixjQUE0QztRQUo3QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixtQkFBYyxHQUFkLGNBQWMsQ0FBOEI7UUE3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UTtzQkFBdkIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBSUMsY0FBYztzQkFGcEIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBR2IsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxZQUFZO3VCQUFDLElBQUk7Z0JBMkNQLG1CQUFtQjtzQkFEN0IsV0FBVzt1QkFBQywwQkFBMEI7Z0JBUTVCLFdBQVc7c0JBRHJCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgUmVvcmRlclBvc2l0aW9uLFxuICBSZW9yZGVyU3RyYXRlZ3ksXG59IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0xpc3RSb3dDbGFzc09wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jvdyc7XG5pbXBvcnQgeyBSb3dBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcm93LWFjdGlvbi5tb2RlbCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3Qtcm93XScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yb3cuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgcHVibGljIHJvbGUgPSAncm93JztcblxuICBASW5wdXQoKSBwdWJsaWMgcm93OiBSb3c7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dBY3Rpb25zUmF3OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgZ3JvdXBBY3Rpb25zUmF3OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzUm93QWN0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcm93RXZlbnRzID0ge307XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dDbGFzcztcbiAgQElucHV0KCkgcHVibGljIHJlc3RvcmVNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dJbmRleDogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgY29sdW1uczogQ29sdW1uW107XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dSZW1vdmVkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQElucHV0KCkgcHVibGljIGFjdGl2ZUZpbHRlcnNDb3VudDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZHJhZy1yb3cnKVxuICBwdWJsaWMgcmVvcmRlckVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcHVibGljIHJlb3JkZXJQb3NpdGlvbjogUmVvcmRlclBvc2l0aW9uIHwgbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHJlb3JkZXJTdHJhdGVneTogUmVvcmRlclN0cmF0ZWd5IHwgbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHJlb3JkZXJNdWx0aXBsZTogYm9vbGVhbjtcblxuXG4gIEBWaWV3Q2hpbGRyZW4oJ3RkJylcbiAgcHVibGljIGNlbGxSZWZzO1xuXG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyUG9zaXRpb24gPSBSZW9yZGVyUG9zaXRpb247XG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyU3RyYXRlZ3kgPSBSZW9yZGVyU3RyYXRlZ3k7XG4gIHB1YmxpYyByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBwdWJsaWMgbWVudVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIHB1YmxpYyBpbmxpbmVSb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBwdWJsaWMgcmVzdG9yZUFjdGlvbjogUm93QWN0aW9uO1xuICBwdWJsaWMgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHVibGljIGluZGV0ZXJtaW5hdGVTZWxlY3RlZDogYm9vbGVhbiB8ICdpbmRldGVybWluYXRlJyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3Jvd0RpZmZlcjogS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+O1xuICBwcml2YXRlIF9ldmVudExpc3RlbmVycyA9IFtdO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9kaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF9kcmFnZ2FibGVMaXN0OiBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlLFxuICApIHtcbiAgICB0aGlzLl9yb3dEaWZmZXIgPSBfZGlmZmVycy5maW5kKHt9KS5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHcm91cFJvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3cuaXNHcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHcm91cENoaWxkUm93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJvdy5pc0dyb3VwQ2hpbGQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzR3JvdXBGb290ZXJSb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm93LmlzR3JvdXBGb290ZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRHJhZ0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZCAmJiB0aGlzLnJlb3JkZXJNdWx0aXBsZSAmJiAhIXRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkUm93cy5zaXplO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tdWx0aXBsZS1zZWxlY3Rpb24nKVxuICBwdWJsaWMgZ2V0IGlzTXVsdGlwbGVTZWxlY3Rpb24oKSB7XG4gICAgY29uc3QgbXVsdGlwbGUgPSB0aGlzLnJlb3JkZXJNdWx0aXBsZTtcblxuICAgIHJldHVybiBtdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGVkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyBnZXQgcm93Q3NzQ2xhc3MoKSB7XG4gICAgbGV0IGNsYXNzZXMgPSBbJ2ZzLWxpc3Qtcm93J107XG5cbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgIT09IDApIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZnMtbGlzdC1yb3ctb2RkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJvd0luZGV4ICUgMiA9PT0gMCkge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmcy1saXN0LXJvdy1ldmVuJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93Py5pc0dyb3VwKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZzLWxpc3Qtcm93LWdyb3VwJyk7XG4gICAgfSBlbHNlIGlmICgodGhpcy5yb3cgYXMgYW55KT8uaXNDaGlsZCkgeyAvLyBUT0RPIGZpeCBpc0NoaWxkICYgYWxsXG4gICAgICBjbGFzc2VzLnB1c2goJ2ZzLWxpc3Qtcm93LWdyb3VwLWNoaWxkJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJvdz8uaXNHcm91cEZvb3Rlcikge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmcy1saXN0LXJvdy1ncm91cC1mb290ZXInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmcy1saXN0LXJvdy1ib2R5Jyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93Q2xhc3MpIHtcbiAgICAgIGNsYXNzZXMgPSBbXG4gICAgICAgIC4uLmNsYXNzZXMsXG4gICAgICAgIC4uLnRoaXMuX2dldFJvd0NsYXNzZXModGhpcy5yb3dDbGFzcyksXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZHJhZ0NlbGxWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5yb3cuaXNHcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGVmdERyYWdEcm9wRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZW9yZGVyRW5hYmxlZFxuICAgICAgJiYgdGhpcy5yZW9yZGVyUG9zaXRpb24gPT09IFJlb3JkZXJQb3NpdGlvbi5MZWZ0XG4gICAgICAmJiB0aGlzLmFjdGl2ZUZpbHRlcnNDb3VudCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmlnaHREcmFnRHJvcEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVvcmRlckVuYWJsZWRcbiAgICAgICYmIHRoaXMucmVvcmRlclBvc2l0aW9uID09PSBSZW9yZGVyUG9zaXRpb24uUmlnaHRcbiAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50ID09PSAwO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2luaXRSb3dFdmVudHMoKTtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5yb3cpIHtcbiAgICAgIHRoaXMuX2luaXRSb3dBY3Rpb25zVXBkYXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXApIHtcbiAgICAgIGlmICh0aGlzLnJvdyAmJiB0aGlzLnJvdy5pc0dyb3VwICYmIHRoaXMuZ3JvdXBBY3Rpb25zUmF3KSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMuZ3JvdXBBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG4gICAgICAgIHRoaXMuX2ZpbHRlckFjdGlvbnNCeUNhdGVnb3JpZXMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucm93QWN0aW9uc1Jhdykge1xuICAgICAgdGhpcy5yb3dBY3Rpb25zID0gdGhpcy5yb3dBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG4gICAgICB0aGlzLl9maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5fcm93RGlmZmVyLmRpZmYodGhpcy5yb3cpKSB7XG4gICAgICB0aGlzLnVwZGF0ZVJvd0FjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUm93QWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5yb3dBY3Rpb25zKSB7XG4gICAgICB0aGlzLnJvd0FjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgIGFjdGlvbi5jaGVja1Nob3dTdGF0dXModGhpcy5yb3cuZGF0YSwgdGhpcy5yb3dJbmRleCk7XG4gICAgICAgIGFjdGlvbi51cGRhdGVMaW5rKHRoaXMucm93LmRhdGEpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Qgcm93IGJ5IGNoZWNrYm94XG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIHNlbGVjdFJvdyhldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5yb3dTZWxlY3Rpb25DaGFuZ2UodGhpcy5yb3csIGV2ZW50LmNoZWNrZWQpO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIEJ5IGZvciBpbXByb3ZlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHVibGljIGRyYWdTdGFydChldmVudCkge1xuICAgIGlmICh0aGlzLnJlb3JkZXJFbmFibGVkICYmICF0aGlzLmlzRHJhZ0Rpc2FibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIHRoaXMuX2RyYWdnYWJsZUxpc3QuZHJhZ1N0YXJ0KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBldmVudCBsaXN0ZW5lcnMgZm9yIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFJvd0V2ZW50cygpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLnJvd0V2ZW50cyB8fCB7fSlcbiAgICAgIC5mb3JFYWNoKChldmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5yb3dFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlclxuICAgICAgICAgICAgLmxpc3Rlbih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGV2ZW50LCAoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5yZW9yZGVyRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucm93RXZlbnRzW2V2ZW50XSh7XG4gICAgICAgICAgICAgICAgICBldmVudDogZXZ0LFxuICAgICAgICAgICAgICAgICAgcm93OiB0aGlzLnJvdy5kYXRhLFxuICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHRoaXMucm93SW5kZXgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG4gIFxuICBwcml2YXRlIF9pbml0Um93QWN0aW9uc1VwZGF0ZSgpIDogdm9pZCB7XG4gICAgdGhpcy5yb3cuYWN0aW9uc1VwZGF0ZSRcbiAgICAucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICApXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVJvd0FjdGlvbnMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJvd0NsYXNzZXMocm93Q2xhc3MpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IFtdO1xuICAgIGNvbnN0IG9wdGlvbnM6IEZzTGlzdFJvd0NsYXNzT3B0aW9ucyA9IHtcbiAgICAgIGluZGV4OiB0aGlzLnJvd0luZGV4LFxuICAgICAgdHlwZTogdGhpcy5yb3cudHlwZSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMucm93LmlzR3JvdXApIHtcbiAgICAgIG9wdGlvbnMuZ3JvdXBJbmRleCA9IHRoaXMucm93LmluZGV4O1xuICAgIH0gZWxzZSBpZiAoKHRoaXMucm93IGFzIGFueSkuaXNDaGlsZCB8fCB0aGlzLnJvdy5pc0dyb3VwRm9vdGVyKSB7IC8vIFRPRE8gZml4IGlzQ2hpbGQgJiBhbGxcbiAgICAgIG9wdGlvbnMuZ3JvdXBJbmRleCA9IHRoaXMucm93LnBhcmVudC5pbmRleDtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHRDbGFzcyA9IHJvd0NsYXNzKHRoaXMucm93LmRhdGEsIG9wdGlvbnMpO1xuICAgIGlmKHJlc3VsdENsYXNzKSB7XG4gICAgICBpZiAodHlwZW9mIHJlc3VsdENsYXNzID09PSAnc3RyaW5nJykge1xuICAgICAgICBjbGFzc2VzLnB1c2gocmVzdWx0Q2xhc3MpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZXN1bHRDbGFzcyk7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdENsYXNzW2tdID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIF9pbml0U2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMucm93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3cuZGF0YSk7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGlvbkNoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgLy8gLy8gV291bGQgbGlrZSB0byByZXNwb25kIG9ubHkgd2hlbiBjaGVja2JveCBvbiB0b3AgaXMgY2hhbmdlZFxuICAgICAgICAgIC8vIC8vIG9yIHdhcyBjbGlja2VkIFwiU2VsZWN0IEFsbFwiIGluIHNlbGVjdGlvbiBkaWFsb2dcbiAgICAgICAgICAvLyBmaWx0ZXIoKHt0eXBlfSkgPT4ge1xuICAgICAgICAgIC8vICAgcmV0dXJuIHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZVxuICAgICAgICAgIC8vICAgICB8fCB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLlNlbGVjdGVkQWxsO1xuICAgICAgICAgIC8vIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMucm93ICYmIHRoaXMuc2VsZWN0aW9uLmlzUm93U2VsZWN0ZWQodGhpcy5yb3cuZGF0YSk7XG5cbiAgICAgICAgICBpZiAodGhpcy5yb3c/LmlzR3JvdXApIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24uaXNHcm91cFNlbGVjdGVkKHRoaXMucm93KTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwU2VsZWN0aW9uID09PSAnaW5kZXRlcm1pbmF0ZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBncm91cFNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgdGhpcy5pbmRldGVybWluYXRlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLm1lbnVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5pbmxpbmVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gbnVsbDtcblxuICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblxuICAgICAgaWYgKCFhY3Rpb24uaXNTaG93bikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3Rpb24ubWVudSAmJiAhYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5tZW51Um93QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKCFhY3Rpb24ubWVudSAmJiAhYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5pbmxpbmVSb3dBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnJlc3RvcmUpIHtcbiAgICAgICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gYWN0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tIERyYWcgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwibGVmdERyYWdEcm9wRW5hYmxlZFwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJhZ0NlbGxcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIFNlbGVjdGlvbiAtLT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3Rpb24gJiYgIShzZWxlY3Rpb24uZGlzYWJsZWQkIHwgYXN5bmMpXCI+XG4gIDx0ZCBjbGFzcz1cImZzLWxpc3QtY29sIGZzLWxpc3QtY29sLXNlbGVjdGlvblwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcm93LmlzR3JvdXBGb290ZXJcIj5cbiAgICAgIDxtYXQtY2hlY2tib3ggXG4gICAgICAgIChjaGFuZ2UpPVwic2VsZWN0Um93KCRldmVudClcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVTZWxlY3RlZFwiPlxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGQ+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBDb250ZW50IC0tPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGbjsgbGV0IGlzRmlyc3QgPSBmaXJzdFwiPlxuICA8dGQgZnMtY2VsbFxuICAgICAgKm5nSWY9XCIoaXNHcm91cFJvdyAmJiAhY29sdW1uLmdyb3VwSGVhZGVyQ29sc3Bhbm5lZClcbiAgICAgICAgfHwgKGlzR3JvdXBGb290ZXJSb3cgJiYgIWNvbHVtbi5ncm91cEZvb3RlckNvbHNwYW5uZWQpXG4gICAgICAgIHx8ICghaXNHcm91cFJvdyAmJiAhaXNHcm91cEZvb3RlclJvdyAmJiAhY29sdW1uLmNlbGxDb2xzcGFubmVkKVwiXG4gICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbcm93SW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgW2NsYXNzXT1cIihpc0dyb3VwUm93ICYmIGNvbHVtbi5ncm91cEhlYWRlckNvbmZpZ3MuY2xhc3Nlc1N0cmluZylcbiAgICAgICAgfHwgKGlzR3JvdXBGb290ZXJSb3cgJiYgY29sdW1uLmdyb3VwRm9vdGVyQ29uZmlncy5jbGFzc2VzU3RyaW5nKVxuICAgICAgICB8fCAoIWlzR3JvdXBGb290ZXJSb3cgJiYgY29sdW1uLmNlbGxDb25maWdzLmNsYXNzZXNTdHJpbmcpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3ByaW1hcnktY29sJzogaXNGaXJzdCB9XCJcbiAgICAgIFthdHRyLmNvbHNwYW5dPVwiKGlzR3JvdXBSb3cgJiYgY29sdW1uLmdyb3VwSGVhZGVyQ29uZmlncy5jb2xzcGFuKVxuICAgICAgICB8fCAoaXNHcm91cEZvb3RlclJvdyAmJiBjb2x1bW4uZ3JvdXBGb290ZXJDb25maWdzLmNvbHNwYW4pXG4gICAgICAgIHx8IGNvbHVtbi5jZWxsQ29uZmlncy5jb2xzcGFuXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gID5cbiAgPC90ZD5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIERyYWcgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwicmlnaHREcmFnRHJvcEVuYWJsZWRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRyYWdDZWxsXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBSb3cgQWN0aW9ucyAtLT5cbjx0ZCAqbmdJZj1cImhhc1Jvd0FjdGlvbnMgJiYgIShyZW9yZGVyRW5hYmxlZCAmJiByZW9yZGVyU3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5NYW51YWwpXCIgY2xhc3M9XCJmcy1saXN0LWNvbCByb3ctYWN0aW9uc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR3JvdXBGb290ZXJSb3dcIj5cbiAgICA8ZnMtbGlzdC1yb3ctYWN0aW9uc1xuICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgW2luZGV4XT1cInJvd0luZGV4XCJcbiAgICAgIFtyb3dBY3Rpb25zXT1cInJvd0FjdGlvbnNcIlxuICAgICAgW21lbnVSb3dBY3Rpb25zXT1cIm1lbnVSb3dBY3Rpb25zXCJcbiAgICAgIFtpbmxpbmVSb3dBY3Rpb25zXT1cImlubGluZVJvd0FjdGlvbnNcIlxuICAgICAgW3Jlc3RvcmVBY3Rpb25dPVwicmVzdG9yZUFjdGlvblwiXG4gICAgICBbcmVzdG9yZU1vZGVdPVwicmVzdG9yZU1vZGVcIlxuICAgICAgW3Jvd1JlbW92ZWRdPVwicm93UmVtb3ZlZFwiPlxuICAgIDwvZnMtbGlzdC1yb3ctYWN0aW9ucz5cbiAgPC9uZy1jb250YWluZXI+XG48L3RkPlxuXG48bmctdGVtcGxhdGUgI2RyYWdDZWxsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZHJhZ0NlbGxWaXNpYmxlICYmICFpc0dyb3VwRm9vdGVyUm93OyBlbHNlIGVtcHR5Q2VsbFwiPlxuICAgIDx0ZCBcbiAgICAgICAgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiXG4gICAgICAgIFtjbGFzcy5kcmFnLWRpc2FibGVkXT1cImlzRHJhZ0Rpc2FibGVkXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJkcmFnU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICh0b3VjaHN0YXJ0KT1cImRyYWdTdGFydCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24+ZHJhZ19oYW5kbGU8L21hdC1pY29uPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2VtcHR5Q2VsbD5cbiAgICA8dGQgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiPjwvdGQ+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,68 @@
1
+ import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
+ import { Observable, Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/dialog";
7
+ import * as i2 from "@angular/material/checkbox";
8
+ import * as i3 from "@angular/material/icon";
9
+ import * as i4 from "@angular/material/button";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "@angular/material/tooltip";
12
+ export class CustomizeColsDialogComponent {
13
+ constructor(data, _dialog) {
14
+ this._dialog = _dialog;
15
+ this.columns = [];
16
+ this.saveDisabled = false;
17
+ this._destroy$ = new Subject();
18
+ this.columns = data.columns;
19
+ this._changeFn = data.changeFn;
20
+ }
21
+ ngOnDestroy() {
22
+ this._destroy$.next();
23
+ this._destroy$.complete();
24
+ }
25
+ visibilityChange(event, column) {
26
+ column.show = event.checked;
27
+ }
28
+ save() {
29
+ const data = this.columns
30
+ .filter((column) => !!column.name)
31
+ .map((column) => {
32
+ return {
33
+ name: column.name,
34
+ show: column.show,
35
+ };
36
+ });
37
+ this.saveDisabled = true;
38
+ const changed = this._changeFn(data);
39
+ if (changed instanceof Observable) {
40
+ changed
41
+ .pipe(takeUntil(this._destroy$))
42
+ .subscribe({
43
+ next: () => {
44
+ this._dialog.close(this.columns);
45
+ },
46
+ error: () => {
47
+ this.saveDisabled = false;
48
+ },
49
+ });
50
+ }
51
+ else {
52
+ this._dialog.close(this.columns);
53
+ }
54
+ }
55
+ cancel() {
56
+ this._dialog.close();
57
+ }
58
+ }
59
+ CustomizeColsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CustomizeColsDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
60
+ CustomizeColsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CustomizeColsDialogComponent, selector: "ng-component", ngImport: i0, template: "<h1 matDialogTitle>Customize Columns</h1>\r\n<mat-dialog-content>\r\n <div *ngFor=\"let column of columns\">\r\n <mat-checkbox [checked]=\"column.show\" (change)=\"visibilityChange($event, column)\" [disabled]=\"column.disabled\">\r\n <ng-container *ngIf=\"!column.title; else titleLable\">\r\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\r\n </ng-container>\r\n <ng-template #titleLable>\r\n {{ column.title }}\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"column.tooltip\">\r\n <mat-icon [matTooltip]=\"column.tooltip\">\r\n help\r\n </mat-icon>\r\n </ng-container>\r\n </mat-checkbox>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"saveDisabled\">Save</button>\r\n <button type=\"button\" mat-button (click)=\"cancel()\">Cancel</button>\r\n</mat-dialog-actions>\r\n", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}\n"], components: [{ type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CustomizeColsDialogComponent, decorators: [{
62
+ type: Component,
63
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 matDialogTitle>Customize Columns</h1>\r\n<mat-dialog-content>\r\n <div *ngFor=\"let column of columns\">\r\n <mat-checkbox [checked]=\"column.show\" (change)=\"visibilityChange($event, column)\" [disabled]=\"column.disabled\">\r\n <ng-container *ngIf=\"!column.title; else titleLable\">\r\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\r\n </ng-container>\r\n <ng-template #titleLable>\r\n {{ column.title }}\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"column.tooltip\">\r\n <mat-icon [matTooltip]=\"column.tooltip\">\r\n help\r\n </mat-icon>\r\n </ng-container>\r\n </mat-checkbox>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button type=\"button\" mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"saveDisabled\">Save</button>\r\n <button type=\"button\" mat-button (click)=\"cancel()\">Cancel</button>\r\n</mat-dialog-actions>\r\n", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}\n"] }]
64
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
65
+ type: Inject,
66
+ args: [MAT_DIALOG_DATA]
67
+ }] }, { type: i1.MatDialogRef }]; } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXplLWNvbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2N1c3RvbWl6ZS1jb2xzL2N1c3RvbWl6ZS1jb2xzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9jdXN0b21pemUtY29scy9jdXN0b21pemUtY29scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFRM0MsTUFBTSxPQUFPLDRCQUE0QjtJQU92QyxZQUMyQixJQUFJLEVBQ3JCLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBUDdCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVwQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQU1oQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU07UUFDbkMsTUFBTSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFTSxJQUFJO1FBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU87YUFDdEIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNkLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyQyxJQUFJLE9BQU8sWUFBWSxVQUFVLEVBQUU7WUFDakMsT0FBTztpQkFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDL0IsU0FBUyxDQUFDO2dCQUNULElBQUksRUFBRSxHQUFHLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQzVCLENBQUM7YUFDRixDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7O3lIQXZEVSw0QkFBNEIsa0JBUTdCLGVBQWU7NkdBUmQsNEJBQTRCLG9EQ2J6QywrOEJBdUJBOzJGRFZhLDRCQUE0QjtrQkFMeEMsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNOzswQkFVNUMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21pemUtY29scy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9taXplLWNvbHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbWl6ZUNvbHNEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgY29sdW1ucyA9IFtdO1xyXG4gIHB1YmxpYyBzYXZlRGlzYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jaGFuZ2VGbjtcclxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRhdGEsXHJcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZ1JlZjxhbnk+LFxyXG4gICkge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gZGF0YS5jb2x1bW5zO1xyXG4gICAgdGhpcy5fY2hhbmdlRm4gPSBkYXRhLmNoYW5nZUZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2aXNpYmlsaXR5Q2hhbmdlKGV2ZW50LCBjb2x1bW4pIHtcclxuICAgIGNvbHVtbi5zaG93ID0gZXZlbnQuY2hlY2tlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCkge1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKChjb2x1bW4pID0+ICEhY29sdW1uLm5hbWUpXHJcbiAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcclxuICAgICAgICAgIHNob3c6IGNvbHVtbi5zaG93LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2F2ZURpc2FibGVkID0gdHJ1ZTtcclxuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9jaGFuZ2VGbihkYXRhKTtcclxuXHJcbiAgICBpZiAoY2hhbmdlZCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcclxuICAgICAgY2hhbmdlZFxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZy5jbG9zZSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZURpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fZGlhbG9nLmNsb3NlKHRoaXMuY29sdW1ucyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsKCkge1xyXG4gICAgdGhpcy5fZGlhbG9nLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxoMSBtYXREaWFsb2dUaXRsZT5DdXN0b21pemUgQ29sdW1uczwvaDE+XHJcbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIj5cclxuICAgIDxtYXQtY2hlY2tib3ggW2NoZWNrZWRdPVwiY29sdW1uLnNob3dcIiAoY2hhbmdlKT1cInZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBjb2x1bW4pXCIgW2Rpc2FibGVkXT1cImNvbHVtbi5kaXNhYmxlZFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbi50aXRsZTsgZWxzZSB0aXRsZUxhYmxlXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3RpdGxlTGFibGU+XHJcbiAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnRvb2x0aXBcIj5cclxuICAgICAgICA8bWF0LWljb24gW21hdFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBcIj5cclxuICAgICAgICAgIGhlbHBcclxuICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gIDwvZGl2PlxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwic2F2ZURpc2FibGVkXCI+U2F2ZTwvYnV0dG9uPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FsCellComponent } from '../../../body/row/cell/cell.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class FsFooterCellComponent extends FsCellComponent {
6
+ constructor() {
7
+ super();
8
+ }
9
+ }
10
+ FsFooterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFooterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ FsFooterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsFooterCellComponent, selector: "[fs-list-footer-cell]", usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #cell let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n", directives: [{ type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFooterCellComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: '[fs-list-footer-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #cell let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n" }]
15
+ }], ctorParameters: function () { return []; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXItcm93L2Zvb3Rlci1jZWxsL2Zvb3Rlci1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLXJvdy9mb290ZXItY2VsbC9mb290ZXItY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBUXhFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxlQUFlO0lBRXhEO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDOztrSEFKVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixvRkNWbEMsZ05BS0E7MkZES2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLHVCQUF1QixtQkFFaEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEZzQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2JvZHkvcm93L2NlbGwvY2VsbC5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3QtZm9vdGVyLWNlbGxdJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLWNlbGwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnNGb290ZXJDZWxsQ29tcG9uZW50IGV4dGVuZHMgRnNDZWxsQ29tcG9uZW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmZvb3RlclRlbXBsYXRlIHx8IGNlbGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY2VsbENvbnRleHRcIj48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjZWxsIGxldC12YWx1ZT1cInZhbHVlXCI+XHJcbiAge3t2YWx1ZX19XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, KeyValueDiffers, Renderer2, } from '@angular/core';
2
+ import { ReorderPosition, ReorderStrategy } from '../../../classes/reorder-controller';
3
+ import { FsRowComponent } from '../../body/row/row.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./footer-cell/footer-cell.component";
6
+ import * as i2 from "@angular/common";
7
+ export class FsFooterRowComponent extends FsRowComponent {
8
+ constructor(el, cdRef, differs, renderer) {
9
+ super(el, cdRef, differs, renderer, null);
10
+ }
11
+ }
12
+ FsFooterRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFooterRowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
13
+ FsFooterRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsFooterRowComponent, selector: "[fs-list-footer-row]", inputs: { hasRowActions: "hasRowActions", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy" }, usesInheritance: true, ngImport: i0, template: "<td *ngIf=\"leftDragDropEnabled\" class=\"fs-list-col drag-col\"></td>\n\n<td *ngIf=\"selection\" class=\"fs-list-col fs-list-col-selection\"></td>\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn\">\n <td \n *ngIf=\"!column.footerColspanned\"\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n</ng-container>\n\n<!-- Drag -->\n<td *ngIf=\"rightDragDropEnabled\" class=\"fs-list-col row-actions\"></td>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col drag-col\"></td>\n", styles: ["td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"], components: [{ type: i1.FsFooterCellComponent, selector: "[fs-list-footer-cell]" }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFooterRowComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: '[fs-list-footer-row]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<td *ngIf=\"leftDragDropEnabled\" class=\"fs-list-col drag-col\"></td>\n\n<td *ngIf=\"selection\" class=\"fs-list-col fs-list-col-selection\"></td>\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn\">\n <td \n *ngIf=\"!column.footerColspanned\"\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n</ng-container>\n\n<!-- Drag -->\n<td *ngIf=\"rightDragDropEnabled\" class=\"fs-list-col row-actions\"></td>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)\" class=\"fs-list-col drag-col\"></td>\n", styles: ["td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"] }]
17
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { hasRowActions: [{
18
+ type: Input
19
+ }], activeFiltersCount: [{
20
+ type: Input
21
+ }], reorderEnabled: [{
22
+ type: Input
23
+ }], reorderPosition: [{
24
+ type: Input
25
+ }], reorderStrategy: [{
26
+ type: Input
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci1yb3cvZm9vdGVyLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci1yb3cvZm9vdGVyLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxlQUFlLEVBQ2YsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7O0FBUzlELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxjQUFjO0lBUXRELFlBQ0UsRUFBYyxFQUNkLEtBQXdCLEVBQ3hCLE9BQXdCLEVBQ3hCLFFBQW1CO1FBRW5CLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7aUhBZlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsbVJDcEJqQyxneEJBcUJBOzJGRERhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YsdUJBQXVCLENBQUMsTUFBTTt1TEFJL0IsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUmVvcmRlclBvc2l0aW9uLCBSZW9yZGVyU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBGc1Jvd0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2JvZHkvcm93L3Jvdy5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tmcy1saXN0LWZvb3Rlci1yb3ddJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvb3Rlci1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb290ZXItcm93LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvb3RlclJvd0NvbXBvbmVudCBleHRlbmRzIEZzUm93Q29tcG9uZW50IHtcblxuICBASW5wdXQoKSBwdWJsaWMgaGFzUm93QWN0aW9uczogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGFjdGl2ZUZpbHRlcnNDb3VudDogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgcmVvcmRlckVuYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyUG9zaXRpb246IFJlb3JkZXJQb3NpdGlvbiB8IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyU3RyYXRlZ3k6IFJlb3JkZXJTdHJhdGVneSB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGRpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICApIHtcbiAgICBzdXBlcihlbCwgY2RSZWYsIGRpZmZlcnMsIHJlbmRlcmVyLCBudWxsKTtcbiAgfVxuXG59XG4iLCI8dGQgKm5nSWY9XCJsZWZ0RHJhZ0Ryb3BFbmFibGVkXCIgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiPjwvdGQ+XG5cbjx0ZCAqbmdJZj1cInNlbGVjdGlvblwiIGNsYXNzPVwiZnMtbGlzdC1jb2wgZnMtbGlzdC1jb2wtc2VsZWN0aW9uXCI+PC90ZD5cbjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgPHRkIFxuICAgICpuZ0lmPVwiIWNvbHVtbi5mb290ZXJDb2xzcGFubmVkXCJcbiAgICBmcy1saXN0LWZvb3Rlci1jZWxsXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgIFtyb3ddPVwicm93XCJcbiAgICBbcm93SW5kZXhdPVwicm93SW5kZXhcIlxuICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5mb290ZXJDb25maWdzLmNsYXNzZXNBcnJheVwiXG4gICAgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW4uZm9vdGVyQ29uZmlncy5jb2xzcGFuXCJcbiAgICBbYXR0ci53aWR0aF09XCJjb2x1bW4ud2lkdGhcIj5cbiAgPC90ZD5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIERyYWcgLS0+XG48dGQgKm5nSWY9XCJyaWdodERyYWdEcm9wRW5hYmxlZFwiIGNsYXNzPVwiZnMtbGlzdC1jb2wgcm93LWFjdGlvbnNcIj48L3RkPlxuXG48IS0tIFJvdyBBY3Rpb25zIC0tPlxuPHRkICpuZ0lmPVwiaGFzUm93QWN0aW9ucyAmJiAhKHJlb3JkZXJFbmFibGVkICYmIHJlb3JkZXJTdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5Lk1hbnVhbClcIiBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCI+PC90ZD5cbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';
3
+ import { SelectionController } from '../../classes/selection-controller';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./footer-row/footer-row.component";
6
+ export class FsFooterComponent {
7
+ constructor() {
8
+ this.columns = [];
9
+ }
10
+ }
11
+ FsFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ FsFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsFooterComponent, selector: "[fs-list-footer]", inputs: { hasRowActions: "hasRowActions", columns: "columns", selection: "selection", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy" }, ngImport: i0, template: "<tr \n fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\">\n</tr>\n", styles: [""], components: [{ type: i1.FsFooterRowComponent, selector: "[fs-list-footer-row]", inputs: ["hasRowActions", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFooterComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: '[fs-list-footer]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tr \n fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\">\n</tr>\n", styles: [""] }]
16
+ }], propDecorators: { hasRowActions: [{
17
+ type: Input
18
+ }], columns: [{
19
+ type: Input
20
+ }], selection: [{
21
+ type: Input
22
+ }], activeFiltersCount: [{
23
+ type: Input
24
+ }], reorderEnabled: [{
25
+ type: Input
26
+ }], reorderPosition: [{
27
+ type: Input
28
+ }], reorderStrategy: [{
29
+ type: Input
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFTekUsTUFBTSxPQUFPLGlCQUFpQjtJQU45QjtRQVNrQixZQUFPLEdBQWEsRUFBRSxDQUFDO0tBTXhDOzs4R0FUWSxpQkFBaUI7a0dBQWpCLGlCQUFpQixvU0NoQjlCLHlUQVVBOzJGRE1hLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs4QkFJL0IsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1Usa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZW9yZGVyUG9zaXRpb24sIFJlb3JkZXJTdHJhdGVneSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1mb290ZXJdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvb3Rlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNGb290ZXJDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNSb3dBY3Rpb25zOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgY29sdW1uczogQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0aW9uQ29udHJvbGxlcjtcbiAgQElucHV0KCkgcHVibGljIGFjdGl2ZUZpbHRlcnNDb3VudDogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgcmVvcmRlckVuYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyUG9zaXRpb246IFJlb3JkZXJQb3NpdGlvbiB8IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByZW9yZGVyU3RyYXRlZ3k6IFJlb3JkZXJTdHJhdGVneSB8IG51bGw7XG59XG4iLCI8dHIgXG4gICAgZnMtbGlzdC1mb290ZXItcm93XG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgW2hhc1Jvd0FjdGlvbnNdPVwiaGFzUm93QWN0aW9uc1wiXG4gICAgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIlxuICAgIFthY3RpdmVGaWx0ZXJzQ291bnRdPVwiYWN0aXZlRmlsdGVyc0NvdW50XCJcbiAgICBbcmVvcmRlckVuYWJsZWRdPVwicmVvcmRlckVuYWJsZWRcIlxuICAgIFtyZW9yZGVyUG9zaXRpb25dPVwicmVvcmRlclBvc2l0aW9uXCJcbiAgICBbcmVvcmRlclN0cmF0ZWd5XT1cInJlb3JkZXJTdHJhdGVneVwiPlxuPC90cj5cbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, KeyValueDiffers, } from '@angular/core';
2
+ import { FsCellComponent } from '../../body/row/cell/cell.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/icon";
5
+ import * as i2 from "@angular/common";
6
+ export class FsHeadCellComponent extends FsCellComponent {
7
+ constructor(_cdRef, _differs) {
8
+ super();
9
+ this._cdRef = _cdRef;
10
+ this._differs = _differs;
11
+ this.cellContext = {};
12
+ this._columnDiffer = this._differs.find({}).create();
13
+ }
14
+ ngDoCheck() {
15
+ if (this._columnDiffer.diff(this.column)) {
16
+ this._cdRef.markForCheck();
17
+ }
18
+ }
19
+ initCellContext() {
20
+ this.cellContext.value = this.column.title;
21
+ }
22
+ }
23
+ FsHeadCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsHeadCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component });
24
+ FsHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsHeadCellComponent, selector: "[fs-head-cell]", usesInheritance: true, ngImport: i0, template: "<div class=\"wrap\">\n <span class=\"title\">\n <ng-template [ngIf]=\"!column.headerTemplate\">{{column.title}}</ng-template>\n <ng-template\n [ngIf]=\"column.headerTemplate\"\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n </span>\n <div class=\"direction\" *ngIf=\"column.ordered\" [ngSwitch]=\"column.sortingDirection$ | async\">\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_downward\" *ngSwitchCase=\"'asc'\">arrow_downward</mat-icon>\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_upward\" *ngSwitchCase=\"'desc'\">arrow_upward</mat-icon>\n </div>\n</div>\n", styles: [".wrap{display:inline-flex;align-items:center}.wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}.wrap .direction{margin-left:5px}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "async": i2.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsHeadCellComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: '[fs-head-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wrap\">\n <span class=\"title\">\n <ng-template [ngIf]=\"!column.headerTemplate\">{{column.title}}</ng-template>\n <ng-template\n [ngIf]=\"column.headerTemplate\"\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n </span>\n <div class=\"direction\" *ngIf=\"column.ordered\" [ngSwitch]=\"column.sortingDirection$ | async\">\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_downward\" *ngSwitchCase=\"'asc'\">arrow_downward</mat-icon>\n <mat-icon class=\"material-icons\" role=\"img\" aria-label=\"arrow_upward\" *ngSwitchCase=\"'desc'\">arrow_upward</mat-icon>\n </div>\n</div>\n", styles: [".wrap{display:inline-flex;align-items:center}.wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}.wrap .direction{margin-left:5px}\n"] }]
28
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9oZWFkL2hlYWQtY2VsbC9oZWFkLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2hlYWQvaGVhZC1jZWxsL2hlYWQtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7QUFTckUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUFNdEQsWUFDVSxNQUF5QixFQUN6QixRQUF5QjtRQUVqQyxLQUFLLEVBQUUsQ0FBQztRQUhBLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBTjVCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBUzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDN0MsQ0FBQzs7Z0hBdEJVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDZFQ2xCaEMsbXRCQWNBOzJGRElhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIERvQ2hlY2ssXHJcbiAgS2V5VmFsdWVEaWZmZXIsXHJcbiAgS2V5VmFsdWVEaWZmZXJzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRnNDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYm9keS9yb3cvY2VsbC9jZWxsLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbZnMtaGVhZC1jZWxsXScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWQtY2VsbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZC1jZWxsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGc0hlYWRDZWxsQ29tcG9uZW50IGV4dGVuZHMgRnNDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjayB7XHJcblxyXG4gIHB1YmxpYyBjZWxsQ29udGV4dDogYW55ID0ge307XHJcblxyXG4gIHByaXZhdGUgX2NvbHVtbkRpZmZlcjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2RpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLl9jb2x1bW5EaWZmZXIgPSB0aGlzLl9kaWZmZXJzLmZpbmQoe30pLmNyZWF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nRG9DaGVjaygpIHtcclxuICAgIGlmICh0aGlzLl9jb2x1bW5EaWZmZXIuZGlmZih0aGlzLmNvbHVtbikpIHtcclxuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdENlbGxDb250ZXh0KCkge1xyXG4gICAgdGhpcy5jZWxsQ29udGV4dC52YWx1ZSA9IHRoaXMuY29sdW1uLnRpdGxlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwid3JhcFwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhY29sdW1uLmhlYWRlclRlbXBsYXRlXCI+e3tjb2x1bW4udGl0bGV9fTwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nSWZdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uLmhlYWRlclRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImNlbGxDb250ZXh0XCI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cImRpcmVjdGlvblwiICpuZ0lmPVwiY29sdW1uLm9yZGVyZWRcIiBbbmdTd2l0Y2hdPVwiY29sdW1uLnNvcnRpbmdEaXJlY3Rpb24kIHwgYXN5bmNcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIHJvbGU9XCJpbWdcIiBhcmlhLWxhYmVsPVwiYXJyb3dfZG93bndhcmRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2FzYydcIj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiByb2xlPVwiaW1nXCIgYXJpYS1sYWJlbD1cImFycm93X3Vwd2FyZFwiICpuZ1N3aXRjaENhc2U9XCInZGVzYydcIj5hcnJvd191cHdhcmQ8L21hdC1pY29uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19