@firestitch/list 15.0.0 → 17.0.0

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 (156) hide show
  1. package/app/components/body/body.component.d.ts +1 -1
  2. package/app/components/body/row/actions/actions.component.d.ts +1 -1
  3. package/app/components/body/row/cell/cell.component.d.ts +1 -1
  4. package/app/components/body/row/inline-action/inline-action.component.d.ts +1 -1
  5. package/app/components/body/row/menu-action/menu-action.component.d.ts +1 -1
  6. package/app/components/body/row/row.component.d.ts +1 -1
  7. package/app/components/footer/footer-row/footer-row.component.d.ts +1 -7
  8. package/app/components/footer/footer.component.d.ts +1 -1
  9. package/app/components/head/head.component.d.ts +1 -1
  10. package/app/components/list/list.component.d.ts +1 -1
  11. package/app/components/loader/loader.component.d.ts +1 -1
  12. package/app/components/pagination/pagination.component.d.ts +1 -1
  13. package/app/components/status/status.component.d.ts +1 -1
  14. package/app/directives/cell/cell.directive.d.ts +1 -1
  15. package/app/directives/column/column.directive.d.ts +1 -1
  16. package/app/directives/content-init/content-init.directive.d.ts +1 -1
  17. package/app/directives/draggable-list/draggable-list.directive.d.ts +1 -1
  18. package/app/directives/draggable-row/draggable-row.directive.d.ts +1 -1
  19. package/app/directives/footer/footer.directive.d.ts +1 -1
  20. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +1 -1
  21. package/app/directives/header/header.directive.d.ts +1 -1
  22. package/app/models/column.model.d.ts +1 -1
  23. package/esm2022/app/classes/actions-controller.mjs +57 -0
  24. package/esm2022/app/classes/columns-controller.mjs +211 -0
  25. package/esm2022/app/classes/data-controller.mjs +348 -0
  26. package/esm2022/app/classes/external-params-controller.mjs +153 -0
  27. package/{esm2020 → esm2022}/app/classes/index.mjs +1 -1
  28. package/esm2022/app/classes/list-controller.mjs +712 -0
  29. package/esm2022/app/classes/pagination-controller.mjs +491 -0
  30. package/esm2022/app/classes/persistance-controller.mjs +19 -0
  31. package/esm2022/app/classes/reorder-controller.mjs +191 -0
  32. package/esm2022/app/classes/selection-controller.mjs +473 -0
  33. package/esm2022/app/classes/sorting-controller.mjs +207 -0
  34. package/esm2022/app/components/body/body.component.mjs +73 -0
  35. package/esm2022/app/components/body/row/actions/actions.component.mjs +102 -0
  36. package/esm2022/app/components/body/row/cell/cell.component.mjs +109 -0
  37. package/esm2022/app/components/body/row/inline-action/inline-action.component.mjs +32 -0
  38. package/esm2022/app/components/body/row/menu-action/menu-action.component.mjs +51 -0
  39. package/esm2022/app/components/body/row/row.component.mjs +341 -0
  40. package/esm2022/app/components/customize-cols/customize-cols.component.mjs +70 -0
  41. package/esm2022/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +16 -0
  42. package/esm2022/app/components/footer/footer-row/footer-row.component.mjs +17 -0
  43. package/esm2022/app/components/footer/footer.component.mjs +35 -0
  44. package/esm2022/app/components/head/head-cell/head-cell.component.mjs +32 -0
  45. package/esm2022/app/components/head/head.component.mjs +113 -0
  46. package/esm2022/app/components/list/list.component.mjs +407 -0
  47. package/esm2022/app/components/loader/loader.component.mjs +40 -0
  48. package/esm2022/app/components/manage-saved-filters/manage-saved-filters.component.mjs +78 -0
  49. package/esm2022/app/components/pagination/pagination.component.mjs +40 -0
  50. package/esm2022/app/components/saved-filters/saved-filters.component.mjs +32 -0
  51. package/esm2022/app/components/status/status.component.mjs +69 -0
  52. package/esm2022/app/directives/cell/cell.directive.mjs +21 -0
  53. package/esm2022/app/directives/column/column.directive.mjs +137 -0
  54. package/{esm2020 → esm2022}/app/directives/content/content.directive.mjs +4 -4
  55. package/esm2022/app/directives/content-init/content-init.directive.mjs +23 -0
  56. package/esm2022/app/directives/draggable-list/draggable-list.directive.mjs +344 -0
  57. package/esm2022/app/directives/draggable-row/draggable-row.directive.mjs +83 -0
  58. package/esm2022/app/directives/empty-state/empty-state.directive.mjs +13 -0
  59. package/esm2022/app/directives/footer/footer.directive.mjs +21 -0
  60. package/esm2022/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +28 -0
  61. package/{esm2020 → esm2022}/app/directives/group-footer/group-footer.directive.mjs +4 -4
  62. package/{esm2020 → esm2022}/app/directives/group-header/group-header.directive.mjs +4 -4
  63. package/esm2022/app/directives/header/header.directive.mjs +21 -0
  64. package/esm2022/app/directives/heading/heading.directive.mjs +13 -0
  65. package/{esm2020 → esm2022}/app/directives/heading-container/heading-container.directive.mjs +4 -4
  66. package/{esm2020 → esm2022}/app/directives/index.mjs +1 -1
  67. package/esm2022/app/directives/subheading/subheading.directive.mjs +13 -0
  68. package/{esm2020 → esm2022}/app/enums/page-change-type.enum.mjs +1 -1
  69. package/{esm2020 → esm2022}/app/enums/pagination-strategy.enum.mjs +1 -1
  70. package/{esm2020 → esm2022}/app/enums/state.enum.mjs +1 -1
  71. package/{esm2020 → esm2022}/app/fs-list.module.mjs +89 -89
  72. package/{esm2020 → esm2022}/app/fs-list.providers.mjs +1 -1
  73. package/{esm2020 → esm2022}/app/interfaces/cellconfig.interface.mjs +1 -1
  74. package/{esm2020 → esm2022}/app/interfaces/draggable-list.interface.mjs +1 -1
  75. package/esm2022/app/interfaces/external-params.interface.mjs +2 -0
  76. package/{esm2020 → esm2022}/app/interfaces/index.mjs +1 -1
  77. package/esm2022/app/interfaces/pagination.interface.mjs +2 -0
  78. package/{esm2020 → esm2022}/app/interfaces/sorting-change-event.interface.mjs +1 -1
  79. package/{esm2020 → esm2022}/app/models/column-async-attribute.mjs +1 -1
  80. package/esm2022/app/models/column-attributes.mjs +139 -0
  81. package/esm2022/app/models/column.model.mjs +173 -0
  82. package/esm2022/app/models/row/base-row.mjs +25 -0
  83. package/esm2022/app/models/row/child-row.mjs +29 -0
  84. package/esm2022/app/models/row/group-footer-row.mjs +22 -0
  85. package/esm2022/app/models/row/group-row.mjs +45 -0
  86. package/{esm2020 → esm2022}/app/models/row/simple-row.mjs +1 -1
  87. package/esm2022/app/models/row-action.model.mjs +102 -0
  88. package/esm2022/app/models/row.mjs +90 -0
  89. package/esm2022/app/models/styleConfig.model.mjs +78 -0
  90. package/esm2022/app/pipes/action-label.mjs +17 -0
  91. package/{esm2020 → esm2022}/app/services/group-expand-notifier.service.mjs +7 -9
  92. package/{fesm2020 → fesm2022}/firestitch-list.mjs +731 -497
  93. package/fesm2022/firestitch-list.mjs.map +1 -0
  94. package/package.json +5 -11
  95. package/esm2020/app/classes/actions-controller.mjs +0 -55
  96. package/esm2020/app/classes/columns-controller.mjs +0 -206
  97. package/esm2020/app/classes/data-controller.mjs +0 -345
  98. package/esm2020/app/classes/external-params-controller.mjs +0 -147
  99. package/esm2020/app/classes/list-controller.mjs +0 -674
  100. package/esm2020/app/classes/pagination-controller.mjs +0 -491
  101. package/esm2020/app/classes/persistance-controller.mjs +0 -19
  102. package/esm2020/app/classes/reorder-controller.mjs +0 -182
  103. package/esm2020/app/classes/selection-controller.mjs +0 -466
  104. package/esm2020/app/classes/sorting-controller.mjs +0 -206
  105. package/esm2020/app/components/body/body.component.mjs +0 -64
  106. package/esm2020/app/components/body/row/actions/actions.component.mjs +0 -97
  107. package/esm2020/app/components/body/row/cell/cell.component.mjs +0 -107
  108. package/esm2020/app/components/body/row/inline-action/inline-action.component.mjs +0 -33
  109. package/esm2020/app/components/body/row/menu-action/menu-action.component.mjs +0 -46
  110. package/esm2020/app/components/body/row/row.component.mjs +0 -322
  111. package/esm2020/app/components/customize-cols/customize-cols.component.mjs +0 -68
  112. package/esm2020/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +0 -16
  113. package/esm2020/app/components/footer/footer-row/footer-row.component.mjs +0 -28
  114. package/esm2020/app/components/footer/footer.component.mjs +0 -31
  115. package/esm2020/app/components/head/head-cell/head-cell.component.mjs +0 -29
  116. package/esm2020/app/components/head/head.component.mjs +0 -103
  117. package/esm2020/app/components/list/list.component.mjs +0 -385
  118. package/esm2020/app/components/loader/loader.component.mjs +0 -40
  119. package/esm2020/app/components/manage-saved-filters/manage-saved-filters.component.mjs +0 -76
  120. package/esm2020/app/components/pagination/pagination.component.mjs +0 -37
  121. package/esm2020/app/components/saved-filters/saved-filters.component.mjs +0 -29
  122. package/esm2020/app/components/status/status.component.mjs +0 -64
  123. package/esm2020/app/directives/cell/cell.directive.mjs +0 -18
  124. package/esm2020/app/directives/column/column.directive.mjs +0 -121
  125. package/esm2020/app/directives/content-init/content-init.directive.mjs +0 -22
  126. package/esm2020/app/directives/draggable-list/draggable-list.directive.mjs +0 -330
  127. package/esm2020/app/directives/draggable-row/draggable-row.directive.mjs +0 -78
  128. package/esm2020/app/directives/empty-state/empty-state.directive.mjs +0 -13
  129. package/esm2020/app/directives/footer/footer.directive.mjs +0 -18
  130. package/esm2020/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +0 -26
  131. package/esm2020/app/directives/header/header.directive.mjs +0 -18
  132. package/esm2020/app/directives/heading/heading.directive.mjs +0 -13
  133. package/esm2020/app/directives/subheading/subheading.directive.mjs +0 -13
  134. package/esm2020/app/interfaces/external-params.interface.mjs +0 -2
  135. package/esm2020/app/interfaces/pagination.interface.mjs +0 -2
  136. package/esm2020/app/models/column-attributes.mjs +0 -132
  137. package/esm2020/app/models/column.model.mjs +0 -164
  138. package/esm2020/app/models/row/base-row.mjs +0 -23
  139. package/esm2020/app/models/row/child-row.mjs +0 -28
  140. package/esm2020/app/models/row/group-footer-row.mjs +0 -21
  141. package/esm2020/app/models/row/group-row.mjs +0 -45
  142. package/esm2020/app/models/row-action.model.mjs +0 -90
  143. package/esm2020/app/models/row.mjs +0 -89
  144. package/esm2020/app/models/styleConfig.model.mjs +0 -76
  145. package/esm2020/app/pipes/action-label.mjs +0 -17
  146. package/fesm2015/firestitch-list.mjs +0 -5802
  147. package/fesm2015/firestitch-list.mjs.map +0 -1
  148. package/fesm2020/firestitch-list.mjs.map +0 -1
  149. /package/{esm2020 → esm2022}/app/enums/action-type.enum.mjs +0 -0
  150. /package/{esm2020 → esm2022}/app/enums/row-type.enum.mjs +0 -0
  151. /package/{esm2020 → esm2022}/app/interfaces/column-config.interface.mjs +0 -0
  152. /package/{esm2020 → esm2022}/app/interfaces/listconfig.interface.mjs +0 -0
  153. /package/{esm2020 → esm2022}/app/interfaces/pagination-state.interface.mjs +0 -0
  154. /package/{esm2020 → esm2022}/app/pipes/index.mjs +0 -0
  155. /package/{esm2020 → esm2022}/firestitch-list.mjs +0 -0
  156. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -49,14 +49,23 @@ var ReorderStrategy;
49
49
  ReorderStrategy["Custom"] = "custom";
50
50
  })(ReorderStrategy || (ReorderStrategy = {}));
51
51
  class ReorderController {
52
- constructor() {
53
- this._enabled$ = new BehaviorSubject(false);
54
- this._manualReorderActivated$ = new BehaviorSubject(false);
55
- this._reorderDisabled$ = new BehaviorSubject(false);
56
- this._position = new BehaviorSubject(null);
57
- this._strategy = new BehaviorSubject(null);
58
- this._destroy$ = new Subject();
59
- }
52
+ startCallback;
53
+ movedCallback;
54
+ doneCallback;
55
+ moveDropCallback;
56
+ status;
57
+ label;
58
+ menu;
59
+ multiple;
60
+ _dataController;
61
+ _actionsController;
62
+ _selectionController;
63
+ _enabled$ = new BehaviorSubject(false);
64
+ _manualReorderActivated$ = new BehaviorSubject(false);
65
+ _reorderDisabled$ = new BehaviorSubject(false);
66
+ _position = new BehaviorSubject(null);
67
+ _strategy = new BehaviorSubject(null);
68
+ _destroy$ = new Subject();
60
69
  get enabled() {
61
70
  return this._enabled$.getValue();
62
71
  }
@@ -185,7 +194,7 @@ class ReorderController {
185
194
  }
186
195
  }
187
196
  ngOnDestroy() {
188
- this._destroy$.next();
197
+ this._destroy$.next(null);
189
198
  this._destroy$.complete();
190
199
  }
191
200
  /**
@@ -208,10 +217,10 @@ class ReorderController {
208
217
  _setStrategy(value) {
209
218
  this._strategy.next(value);
210
219
  }
220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReorderController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
221
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReorderController });
211
222
  }
212
- ReorderController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ReorderController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
213
- ReorderController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ReorderController });
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ReorderController, decorators: [{
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReorderController, decorators: [{
215
224
  type: Injectable
216
225
  }] });
217
226
 
@@ -222,28 +231,35 @@ var SelectionChangeType;
222
231
  SelectionChangeType["SelectedAll"] = "SelectedAll";
223
232
  })(SelectionChangeType || (SelectionChangeType = {}));
224
233
  class SelectionController {
234
+ _trackBy;
235
+ _selectionDialog;
236
+ // Options from passed config
237
+ actions = [];
238
+ selectAll = true;
239
+ selectionChangedFn;
240
+ actionSelectedFn;
241
+ allSelectedFn;
242
+ cancelledFn;
243
+ // Store for selected visible rows
244
+ selectedRows = new Map();
245
+ selectedGroups = new Map();
246
+ // Reference to selection dialog
247
+ _selectionDialogRef = null;
248
+ _getRows;
249
+ _selectionChange = new Subject();
250
+ // Selected only visible rows (ex.: selected only limited 15 rows when we have pagination)
251
+ _selectedAllVisible = false;
252
+ // Selected all rows when was clicked "Select All" in selection dialog
253
+ // or count of visible records is equal to total and all visible rows was selected
254
+ _selectedAll = false;
255
+ _selectedRecords = 0;
256
+ _visibleRecordsCount = 0;
257
+ _totalRecordsCount = 0;
258
+ _destroy$ = new Subject();
259
+ _disabled$ = new BehaviorSubject(false);
225
260
  constructor(config = {}, _trackBy, _selectionDialog) {
226
261
  this._trackBy = _trackBy;
227
262
  this._selectionDialog = _selectionDialog;
228
- // Options from passed config
229
- this.actions = [];
230
- this.selectAll = true;
231
- // Store for selected visible rows
232
- this.selectedRows = new Map();
233
- this.selectedGroups = new Map();
234
- // Reference to selection dialog
235
- this._selectionDialogRef = null;
236
- this._selectionChange = new Subject();
237
- // Selected only visible rows (ex.: selected only limited 15 rows when we have pagination)
238
- this._selectedAllVisible = false;
239
- // Selected all rows when was clicked "Select All" in selection dialog
240
- // or count of visible records is equal to total and all visible rows was selected
241
- this._selectedAll = false;
242
- this._selectedRecords = 0;
243
- this._visibleRecordsCount = 0;
244
- this._totalRecordsCount = 0;
245
- this._destroy$ = new Subject();
246
- this._disabled$ = new BehaviorSubject(false);
247
263
  this.actions = config.actions ? [...config.actions] : [];
248
264
  this.actionSelectedFn = config.actionSelected;
249
265
  this.allSelectedFn = config.allSelected;
@@ -446,7 +462,7 @@ class SelectionController {
446
462
  this.cancelledFn = null;
447
463
  this.closeSelectionDialog();
448
464
  this._selectionDialogRef = null;
449
- this._destroy$.next();
465
+ this._destroy$.next(null);
450
466
  this._destroy$.complete();
451
467
  this._selectionChange.complete();
452
468
  }
@@ -679,25 +695,39 @@ class SelectionController {
679
695
  }
680
696
 
681
697
  class FsListDraggableListDirective {
698
+ _cdRef;
699
+ _zone;
700
+ _containerElement;
701
+ _reorderController;
702
+ _renderer;
703
+ // Draggable Element
704
+ _draggableElement;
705
+ _draggableElementPreview;
706
+ _multipleDraggableElementPreview;
707
+ _draggableElementHeight;
708
+ _draggableElementIndex;
709
+ _draggableElementStartIndex;
710
+ // Handlers
711
+ _dragToHandler = this.dragTo.bind(this);
712
+ _dragEndHandler = this.dragEnd.bind(this);
713
+ _dragInProgress = false;
714
+ _childRowElements;
715
+ _dragStart$ = new Subject();
716
+ _dragEnd$ = new Subject();
717
+ _rows;
718
+ _draggableChildrenDirectives = [];
719
+ _selectedRowsDirectives = [];
720
+ _destroy$ = new Subject();
682
721
  constructor(_cdRef, _zone, _containerElement, _reorderController, _renderer) {
683
722
  this._cdRef = _cdRef;
684
723
  this._zone = _zone;
685
724
  this._containerElement = _containerElement;
686
725
  this._reorderController = _reorderController;
687
726
  this._renderer = _renderer;
688
- // Handlers
689
- this._dragToHandler = this.dragTo.bind(this);
690
- this._dragEndHandler = this.dragEnd.bind(this);
691
- this._dragInProgress = false;
692
- this._dragStart$ = new Subject();
693
- this._dragEnd$ = new Subject();
694
- this._draggableChildrenDirectives = [];
695
- this._selectedRowsDirectives = [];
696
- this._destroy$ = new Subject();
697
- this._windowTouchMoveHandler = () => {
698
- //
699
- };
700
727
  }
728
+ _windowTouchMoveHandler = () => {
729
+ //
730
+ };
701
731
  get dragStart$() {
702
732
  return this._dragStart$.pipe(takeUntil(this._destroy$));
703
733
  }
@@ -745,7 +775,7 @@ class FsListDraggableListDirective {
745
775
  window.document.addEventListener('mouseup', this._dragEndHandler);
746
776
  window.document.addEventListener('touchend', this._dragEndHandler);
747
777
  window.document.addEventListener('touchcancel', this._dragEndHandler);
748
- this._dragStart$.next();
778
+ this._dragStart$.next(null);
749
779
  }
750
780
  /**
751
781
  * Move draggable elements and swap items
@@ -828,7 +858,7 @@ class FsListDraggableListDirective {
828
858
  window.document.removeEventListener('mouseup', this._dragEndHandler);
829
859
  window.document.removeEventListener('touchend', this._dragEndHandler);
830
860
  window.document.removeEventListener('touchcancel', this._dragEndHandler);
831
- this._dragEnd$.next();
861
+ this._dragEnd$.next(null);
832
862
  }
833
863
  get _isMultipleDrag() {
834
864
  return this._reorderController.multiple && this._selectedRowsDirectives.length > 1;
@@ -989,15 +1019,15 @@ class FsListDraggableListDirective {
989
1019
  e.preventDefault();
990
1020
  }
991
1021
  }
1022
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListDraggableListDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: ReorderController }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
1023
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: { _rows: ["rows", "_rows"] }, ngImport: i0 });
992
1024
  }
993
- FsListDraggableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListDraggableListDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: ReorderController }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
994
- FsListDraggableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: { _rows: ["rows", "_rows"] }, ngImport: i0 });
995
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListDraggableListDirective, decorators: [{
1025
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListDraggableListDirective, decorators: [{
996
1026
  type: Directive,
997
1027
  args: [{
998
1028
  selector: '[fsListDraggableList]',
999
1029
  }]
1000
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: ReorderController }, { type: i0.Renderer2 }]; }, propDecorators: { _rows: [{
1030
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: ReorderController }, { type: i0.Renderer2 }], propDecorators: { _rows: [{
1001
1031
  type: Input,
1002
1032
  args: ['rows']
1003
1033
  }] } });
@@ -1011,9 +1041,11 @@ var RowType;
1011
1041
  })(RowType || (RowType = {}));
1012
1042
 
1013
1043
  class BaseRow {
1044
+ index;
1045
+ readyToSwap = true;
1046
+ _rowType;
1047
+ _data = {};
1014
1048
  constructor(data = {}, rowType = RowType.Simple) {
1015
- this.readyToSwap = true;
1016
- this._data = {};
1017
1049
  this._data = data;
1018
1050
  this._rowType = rowType;
1019
1051
  }
@@ -1033,9 +1065,10 @@ class BaseRow {
1033
1065
  }
1034
1066
 
1035
1067
  class ChildRow extends BaseRow {
1068
+ visible = true;
1069
+ _parent;
1036
1070
  constructor(data = {}, parent = null) {
1037
1071
  super(data, RowType.GroupChild);
1038
- this.visible = true;
1039
1072
  this._parent = parent;
1040
1073
  if (this.parent) {
1041
1074
  this.visible = this._parent.expanded;
@@ -1059,9 +1092,10 @@ class ChildRow extends BaseRow {
1059
1092
  }
1060
1093
 
1061
1094
  class GroupFooterRow extends BaseRow {
1095
+ visible = true;
1096
+ _parent;
1062
1097
  constructor(data = {}, parent = null) {
1063
1098
  super(data, RowType.GroupFooter);
1064
- this.visible = true;
1065
1099
  this._parent = parent;
1066
1100
  if (this.parent) {
1067
1101
  this.visible = this._parent.expanded;
@@ -1078,10 +1112,10 @@ class GroupFooterRow extends BaseRow {
1078
1112
  }
1079
1113
 
1080
1114
  class GroupRow extends BaseRow {
1115
+ children = [];
1116
+ _expanded = new BehaviorSubject(false);
1081
1117
  constructor(data = {}, initialExpand = false) {
1082
1118
  super(data, RowType.Group);
1083
- this.children = [];
1084
- this._expanded = new BehaviorSubject(false);
1085
1119
  if (initialExpand) {
1086
1120
  this._expanded.next(initialExpand);
1087
1121
  }
@@ -1128,8 +1162,9 @@ class SimpleRow extends BaseRow {
1128
1162
  }
1129
1163
 
1130
1164
  class Row {
1165
+ _row;
1166
+ _actionsUpdate$ = new Subject();
1131
1167
  constructor(data = {}, rowType = RowType.Simple, { parent, initialExpand } = {}) {
1132
- this._actionsUpdate$ = new Subject();
1133
1168
  switch (rowType) {
1134
1169
  case RowType.Simple:
1135
1170
  {
@@ -1155,7 +1190,7 @@ class Row {
1155
1190
  return this._actionsUpdate$.asObservable();
1156
1191
  }
1157
1192
  actionsUpdate() {
1158
- return this._actionsUpdate$.next();
1193
+ return this._actionsUpdate$.next(null);
1159
1194
  }
1160
1195
  set index(value) {
1161
1196
  this._row.index = value;
@@ -1220,11 +1255,23 @@ var ActionType;
1220
1255
  })(ActionType || (ActionType = {}));
1221
1256
 
1222
1257
  class RowAction {
1258
+ icon;
1259
+ menu;
1260
+ remove;
1261
+ className;
1262
+ type;
1263
+ show;
1264
+ restore;
1265
+ rowActions;
1266
+ label = '';
1267
+ routerLink;
1268
+ classArray = [];
1269
+ isShown = true;
1270
+ click;
1271
+ fileConfig;
1272
+ _linkFn;
1273
+ _isGroup = false;
1223
1274
  constructor(config = {}) {
1224
- this.label = '';
1225
- this.classArray = [];
1226
- this.isShown = true;
1227
- this._isGroup = false;
1228
1275
  this._init(config);
1229
1276
  if (Array.isArray(this.rowActions)) {
1230
1277
  this._isGroup = true;
@@ -1309,20 +1356,19 @@ class RowAction {
1309
1356
  }
1310
1357
 
1311
1358
  class FsRowInlineActionComponent {
1312
- constructor() {
1313
- this.clicked = new EventEmitter();
1314
- this.fileSelect = new EventEmitter();
1315
- }
1359
+ action;
1360
+ clicked = new EventEmitter();
1361
+ fileSelect = new EventEmitter();
1316
1362
  actionClick(event) {
1317
1363
  this.clicked.emit(event);
1318
1364
  }
1319
1365
  fileSelected(event) {
1320
1366
  this.fileSelect.emit(event);
1321
1367
  }
1368
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsRowInlineActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1369
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: { action: "action" }, outputs: { clicked: "clicked", fileSelect: "fileSelect" }, ngImport: i0, template: "<ng-container *ngIf=\"action.isShown\" [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-container>\n\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"action.fileConfig.accept || '*'\"\n [multiple]=\"action.fileConfig.multiple\"\n [minWidth]=\"action.fileConfig.minWidth\"\n [minHeight]=\"action.fileConfig.minHeight\"\n [imageWidth]=\"action.fileConfig.maxWidth\"\n [imageHeight]=\"action.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabAnchor, selector: "a[mat-mini-fab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFabAnchor, selector: "a[mat-fab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1322
1370
  }
1323
- FsRowInlineActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsRowInlineActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1324
- FsRowInlineActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: { action: "action" }, outputs: { clicked: "clicked", fileSelect: "fileSelect" }, ngImport: i0, template: "<ng-container *ngIf=\"action.isShown\" [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-container>\n\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"action.fileConfig.accept || '*'\"\n [multiple]=\"action.fileConfig.multiple\"\n [minWidth]=\"action.fileConfig.minWidth\"\n [minHeight]=\"action.fileConfig.minHeight\"\n [imageWidth]=\"action.fileConfig.maxWidth\"\n [imageHeight]=\"action.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabAnchor, selector: "a[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatFabAnchor, selector: "a[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsRowInlineActionComponent, decorators: [{
1371
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsRowInlineActionComponent, decorators: [{
1326
1372
  type: Component,
1327
1373
  args: [{ selector: 'fs-list-row-inline-action', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"action.isShown\" [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-container>\n\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"action.fileConfig.accept || '*'\"\n [multiple]=\"action.fileConfig.multiple\"\n [minWidth]=\"action.fileConfig.minWidth\"\n [minHeight]=\"action.fileConfig.minHeight\"\n [imageWidth]=\"action.fileConfig.maxWidth\"\n [imageHeight]=\"action.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>\n" }]
1328
1374
  }], propDecorators: { action: [{
@@ -1340,19 +1386,24 @@ class ActionLabelPipe {
1340
1386
  }
1341
1387
  return label;
1342
1388
  }
1389
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1390
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ActionLabelPipe, name: "actionLabel" });
1343
1391
  }
1344
- ActionLabelPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ActionLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1345
- ActionLabelPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: ActionLabelPipe, name: "actionLabel" });
1346
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ActionLabelPipe, decorators: [{
1392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActionLabelPipe, decorators: [{
1347
1393
  type: Pipe,
1348
1394
  args: [{ name: 'actionLabel' }]
1349
1395
  }] });
1350
1396
 
1351
1397
  class FsRowMenuActionComponent {
1398
+ _menu;
1399
+ row;
1400
+ icon;
1401
+ label;
1402
+ file;
1403
+ fileSelect = new EventEmitter();
1404
+ fileError = new EventEmitter();
1352
1405
  constructor(_menu) {
1353
1406
  this._menu = _menu;
1354
- this.fileSelect = new EventEmitter();
1355
- this.fileError = new EventEmitter();
1356
1407
  }
1357
1408
  selectFile(event) {
1358
1409
  this.fileSelect.emit(event);
@@ -1365,13 +1416,13 @@ class FsRowMenuActionComponent {
1365
1416
  closeMenu() {
1366
1417
  this._menu.closeMenu();
1367
1418
  }
1419
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsRowMenuActionComponent, deps: [{ token: i2.FsMenuComponent }], target: i0.ɵɵFactoryTarget.Component });
1420
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: { row: "row", icon: "icon", label: "label", file: "file" }, outputs: { fileSelect: "fileSelect", fileError: "fileError" }, ngImport: i0, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n </fs-file>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1368
1421
  }
1369
- FsRowMenuActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsRowMenuActionComponent, deps: [{ token: i2.FsMenuComponent }], target: i0.ɵɵFactoryTarget.Component });
1370
- FsRowMenuActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: { row: "row", icon: "icon", label: "label", file: "file" }, outputs: { fileSelect: "fileSelect", fileError: "fileError" }, ngImport: i0, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n </fs-file>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1371
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
1422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
1372
1423
  type: Component,
1373
1424
  args: [{ selector: 'fs-list-row-menu-action', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label| actionLabel:row}}\n </fs-file>\n</ng-template>\n" }]
1374
- }], ctorParameters: function () { return [{ type: i2.FsMenuComponent }]; }, propDecorators: { row: [{
1425
+ }], ctorParameters: () => [{ type: i2.FsMenuComponent }], propDecorators: { row: [{
1375
1426
  type: Input
1376
1427
  }], icon: [{
1377
1428
  type: Input
@@ -1386,13 +1437,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1386
1437
  }] } });
1387
1438
 
1388
1439
  class FsRowActionsComponent {
1440
+ _prompt;
1441
+ row;
1442
+ index;
1443
+ restoreMode = false;
1444
+ rowActions = [];
1445
+ rowRemoved;
1446
+ menuRowActions = [];
1447
+ inlineRowActions = [];
1448
+ restoreAction;
1449
+ _destroy$ = new Subject();
1389
1450
  constructor(_prompt) {
1390
1451
  this._prompt = _prompt;
1391
- this.restoreMode = false;
1392
- this.rowActions = [];
1393
- this.menuRowActions = [];
1394
- this.inlineRowActions = [];
1395
- this._destroy$ = new Subject();
1396
1452
  }
1397
1453
  actionClick(action, row, event, menuRef) {
1398
1454
  if (action.remove) {
@@ -1444,13 +1500,13 @@ class FsRowActionsComponent {
1444
1500
  this.rowRemoved.emit(row);
1445
1501
  }
1446
1502
  }
1503
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsRowActionsComponent, deps: [{ token: i1$1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
1504
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: { row: "row", index: "index", restoreMode: "restoreMode", rowActions: "rowActions", rowRemoved: "rowRemoved", menuRowActions: "menuRowActions", inlineRowActions: "inlineRowActions", restoreAction: "restoreAction" }, ngImport: i0, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu\n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n", styles: [":host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "component", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["action"], outputs: ["clicked", "fileSelect"] }, { kind: "component", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["row", "icon", "label", "file"], outputs: ["fileSelect", "fileError"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1447
1505
  }
1448
- FsRowActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsRowActionsComponent, deps: [{ token: i1$1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
1449
- FsRowActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: { row: "row", index: "index", restoreMode: "restoreMode", rowActions: "rowActions", rowRemoved: "rowRemoved", menuRowActions: "menuRowActions", inlineRowActions: "inlineRowActions", restoreAction: "restoreAction" }, ngImport: i0, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu\n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n", styles: [":host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "component", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["action"], outputs: ["clicked", "fileSelect"] }, { kind: "component", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["row", "icon", "label", "file"], outputs: ["fileSelect", "fileError"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1450
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsRowActionsComponent, decorators: [{
1506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsRowActionsComponent, decorators: [{
1451
1507
  type: Component,
1452
1508
  args: [{ selector: 'fs-list-row-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu\n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label | actionLabel:row}}\n </ng-template>\n </ng-container>\n</fs-menu>\n", styles: [":host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"] }]
1453
- }], ctorParameters: function () { return [{ type: i1$1.FsPrompt }]; }, propDecorators: { row: [{
1509
+ }], ctorParameters: () => [{ type: i1$1.FsPrompt }], propDecorators: { row: [{
1454
1510
  type: Input
1455
1511
  }], index: [{
1456
1512
  type: Input
@@ -1469,10 +1525,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1469
1525
  }] } });
1470
1526
 
1471
1527
  class StyleConfig {
1528
+ colspan;
1529
+ align; // Can't be used in tempaltes!
1530
+ className = []; // Can't be used in tempaltes!
1531
+ classesArray = []; // Can be used in tempaltes
1532
+ classesString = '';
1472
1533
  constructor(config = {}) {
1473
- this.className = []; // Can't be used in tempaltes!
1474
- this.classesArray = []; // Can be used in tempaltes
1475
- this.classesString = '';
1476
1534
  this._init(config);
1477
1535
  }
1478
1536
  /**
@@ -1555,18 +1613,27 @@ const ALLOWED_DEFAULTS = [
1555
1613
  'class',
1556
1614
  ];
1557
1615
  class Column {
1616
+ headerTemplate;
1617
+ groupHeaderTemplate;
1618
+ groupFooterTemplate;
1619
+ cellTemplate;
1620
+ footerTemplate;
1621
+ expandTrigger;
1622
+ headerConfigs = new StyleConfig();
1623
+ groupHeaderConfigs = new StyleConfig();
1624
+ groupFooterConfigs = new StyleConfig();
1625
+ cellConfigs = new StyleConfig();
1626
+ footerConfigs = new StyleConfig();
1627
+ colStyles;
1628
+ headerColspanned = false;
1629
+ groupHeaderColspanned = false;
1630
+ groupFooterColspanned = false;
1631
+ cellColspanned = false;
1632
+ footerColspanned = false;
1633
+ _attributes;
1634
+ _defaultDirection;
1635
+ _ordered = false;
1558
1636
  constructor(colConfig, colDefaults = false) {
1559
- this.headerConfigs = new StyleConfig();
1560
- this.groupHeaderConfigs = new StyleConfig();
1561
- this.groupFooterConfigs = new StyleConfig();
1562
- this.cellConfigs = new StyleConfig();
1563
- this.footerConfigs = new StyleConfig();
1564
- this.headerColspanned = false;
1565
- this.groupHeaderColspanned = false;
1566
- this.groupFooterColspanned = false;
1567
- this.cellColspanned = false;
1568
- this.footerColspanned = false;
1569
- this._ordered = false;
1570
1637
  this._parseConfig(colConfig);
1571
1638
  this.colStyles = new StyleConfig({
1572
1639
  className: this._attributes.className,
@@ -1706,12 +1773,14 @@ class Column {
1706
1773
  }
1707
1774
 
1708
1775
  class FsCellComponent {
1709
- constructor() {
1710
- this.isColl = true;
1711
- this.role = 'gridcell';
1712
- this.cellContext = {};
1713
- this._destroy$ = new Subject();
1714
- }
1776
+ isColl = true;
1777
+ role = 'gridcell';
1778
+ column;
1779
+ row; // tmp
1780
+ rowIndex;
1781
+ cellContext = {};
1782
+ cellTemplate;
1783
+ _destroy$ = new Subject();
1715
1784
  ngOnInit() {
1716
1785
  this._listenGroupOpen();
1717
1786
  }
@@ -1732,7 +1801,7 @@ class FsCellComponent {
1732
1801
  }
1733
1802
  }
1734
1803
  ngOnDestroy() {
1735
- this._destroy$.next();
1804
+ this._destroy$.next(null);
1736
1805
  this._destroy$.complete();
1737
1806
  }
1738
1807
  _initCellContext() {
@@ -1786,12 +1855,12 @@ class FsCellComponent {
1786
1855
  });
1787
1856
  }
1788
1857
  }
1858
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1859
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsCellComponent, selector: "[fs-cell]", inputs: { column: "column", row: "row", rowIndex: "rowIndex" }, host: { properties: { "class.fs-list-col": "this.isColl", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1789
1860
  }
1790
- FsCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1791
- FsCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsCellComponent, selector: "[fs-cell]", inputs: { column: "column", row: "row", rowIndex: "rowIndex" }, host: { properties: { "class.fs-list-col": "this.isColl", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\n\n<ng-template #defaultCellTemplate let-value=\"value\">\n {{value}}\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1792
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsCellComponent, decorators: [{
1861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsCellComponent, decorators: [{
1793
1862
  type: Component,
1794
- args: [{ selector: '[fs-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\n\n<ng-template #defaultCellTemplate let-value=\"value\">\n {{value}}\n</ng-template>\n" }]
1863
+ args: [{ selector: '[fs-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n" }]
1795
1864
  }], propDecorators: { isColl: [{
1796
1865
  type: HostBinding,
1797
1866
  args: ['class.fs-list-col']
@@ -1807,27 +1876,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
1807
1876
  }] } });
1808
1877
 
1809
1878
  class FsRowComponent {
1879
+ el;
1880
+ _cdRef;
1881
+ _differs;
1882
+ _renderer;
1883
+ _draggableList;
1884
+ role = 'row';
1885
+ row;
1886
+ rowActionsRaw = [];
1887
+ groupActionsRaw = [];
1888
+ hasRowActions = false;
1889
+ rowEvents = {};
1890
+ rowClass;
1891
+ restoreMode = false;
1892
+ rowIndex;
1893
+ columns;
1894
+ selection;
1895
+ rowRemoved;
1896
+ activeFiltersCount;
1897
+ reorderEnabled;
1898
+ reorderPosition;
1899
+ reorderStrategy;
1900
+ reorderMultiple;
1901
+ cellRefs;
1902
+ ReorderPosition = ReorderPosition;
1903
+ ReorderStrategy = ReorderStrategy;
1904
+ rowActions = [];
1905
+ menuRowActions = [];
1906
+ inlineRowActions = [];
1907
+ restoreAction;
1908
+ selected = false;
1909
+ indeterminateSelected = false;
1910
+ _rowDiffer;
1911
+ _eventListeners = [];
1912
+ _destroy$ = new Subject();
1810
1913
  constructor(el, _cdRef, _differs, _renderer, _draggableList) {
1811
1914
  this.el = el;
1812
1915
  this._cdRef = _cdRef;
1813
1916
  this._differs = _differs;
1814
1917
  this._renderer = _renderer;
1815
1918
  this._draggableList = _draggableList;
1816
- this.role = 'row';
1817
- this.rowActionsRaw = [];
1818
- this.groupActionsRaw = [];
1819
- this.hasRowActions = false;
1820
- this.rowEvents = {};
1821
- this.restoreMode = false;
1822
- this.ReorderPosition = ReorderPosition;
1823
- this.ReorderStrategy = ReorderStrategy;
1824
- this.rowActions = [];
1825
- this.menuRowActions = [];
1826
- this.inlineRowActions = [];
1827
- this.selected = false;
1828
- this.indeterminateSelected = false;
1829
- this._eventListeners = [];
1830
- this._destroy$ = new Subject();
1831
1919
  this._rowDiffer = _differs.find({}).create();
1832
1920
  }
1833
1921
  get isGroupRow() {
@@ -1926,7 +2014,7 @@ class FsRowComponent {
1926
2014
  this._eventListeners.forEach((listener) => {
1927
2015
  listener();
1928
2016
  });
1929
- this._destroy$.next();
2017
+ this._destroy$.next(null);
1930
2018
  this._destroy$.complete();
1931
2019
  }
1932
2020
  /**
@@ -2058,13 +2146,13 @@ class FsRowComponent {
2058
2146
  }
2059
2147
  });
2060
2148
  }
2149
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsRowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Component });
2150
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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}:host.fs-list-row-clickable{cursor:pointer}td.drag-col{width:1%!important;white-space:nowrap;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;width:1%!important}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"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: ["row", "index", "restoreMode", "rowActions", "rowRemoved", "menuRowActions", "inlineRowActions", "restoreAction"] }, { kind: "component", type: FsCellComponent, selector: "[fs-cell]", inputs: ["column", "row", "rowIndex"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2061
2151
  }
2062
- FsRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsRowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Component });
2063
- FsRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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}:host.fs-list-row-clickable{cursor:pointer}td.drag-col{width:1%!important;white-space:nowrap;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;width:1%!important}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"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: ["row", "index", "restoreMode", "rowActions", "rowRemoved", "menuRowActions", "inlineRowActions", "restoreAction"] }, { kind: "component", type: FsCellComponent, selector: "[fs-cell]", inputs: ["column", "row", "rowIndex"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2064
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsRowComponent, decorators: [{
2152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsRowComponent, decorators: [{
2065
2153
  type: Component,
2066
2154
  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}:host.fs-list-row-clickable{cursor:pointer}td.drag-col{width:1%!important;white-space:nowrap;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;width:1%!important}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"] }]
2067
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: FsListDraggableListDirective }]; }, propDecorators: { role: [{
2155
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: FsListDraggableListDirective }], propDecorators: { role: [{
2068
2156
  type: HostBinding,
2069
2157
  args: ['attr.role']
2070
2158
  }], row: [{
@@ -2114,12 +2202,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
2114
2202
  }] } });
2115
2203
 
2116
2204
  class FsListDraggableRowDirective {
2205
+ _el;
2206
+ _renderer;
2207
+ _reorderController;
2208
+ _draggableList;
2209
+ row;
2210
+ _destroy$ = new Subject();
2117
2211
  constructor(_el, _renderer, _reorderController, _draggableList) {
2118
2212
  this._el = _el;
2119
2213
  this._renderer = _renderer;
2120
2214
  this._reorderController = _reorderController;
2121
2215
  this._draggableList = _draggableList;
2122
- this._destroy$ = new Subject();
2123
2216
  }
2124
2217
  get elRef() {
2125
2218
  return this._el;
@@ -2132,7 +2225,7 @@ class FsListDraggableRowDirective {
2132
2225
  }
2133
2226
  ngOnDestroy() {
2134
2227
  this._draggableList.removeDraggableDirective(this);
2135
- this._destroy$.next();
2228
+ this._destroy$.next(null);
2136
2229
  this._destroy$.complete();
2137
2230
  }
2138
2231
  dragHide() {
@@ -2170,32 +2263,41 @@ class FsListDraggableRowDirective {
2170
2263
  this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');
2171
2264
  }
2172
2265
  }
2266
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListDraggableRowDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ReorderController }, { token: FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Directive });
2267
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: { row: "row" }, ngImport: i0 });
2173
2268
  }
2174
- FsListDraggableRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListDraggableRowDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ReorderController }, { token: FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Directive });
2175
- FsListDraggableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: { row: "row" }, ngImport: i0 });
2176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListDraggableRowDirective, decorators: [{
2269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListDraggableRowDirective, decorators: [{
2177
2270
  type: Directive,
2178
2271
  args: [{
2179
2272
  selector: '[fsListDraggableRow]',
2180
2273
  }]
2181
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ReorderController }, { type: FsListDraggableListDirective }]; }, propDecorators: { row: [{
2274
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ReorderController }, { type: FsListDraggableListDirective }], propDecorators: { row: [{
2182
2275
  type: Input
2183
2276
  }] } });
2184
2277
 
2185
2278
  class FsBodyComponent {
2186
- constructor() {
2187
- this.columns = [];
2188
- this.hasFooter = false;
2189
- this.rowActionsRaw = [];
2190
- this.groupActionsRaw = [];
2191
- this.rowEvents = {};
2192
- this.hasRowActions = false;
2193
- this.restoreMode = false;
2194
- }
2279
+ rows;
2280
+ columns = [];
2281
+ hasFooter = false;
2282
+ rowActionsRaw = [];
2283
+ groupActionsRaw = [];
2284
+ rowEvents = {};
2285
+ rowClass;
2286
+ hasRowActions = false;
2287
+ selection;
2288
+ restoreMode = false;
2289
+ rowRemoved;
2290
+ activeFiltersCount;
2291
+ reorderEnabled;
2292
+ reorderPosition;
2293
+ reorderStrategy;
2294
+ reorderMultiple;
2295
+ rowsContainer;
2296
+ headerTemplate;
2297
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2298
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsBodyComponent, selector: "[fs-list-body]", inputs: { rows: "rows", columns: "columns", hasFooter: "hasFooter", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", rowEvents: "rowEvents", rowClass: "rowClass", hasRowActions: "hasRowActions", selection: "selection", restoreMode: "restoreMode", rowRemoved: "rowRemoved", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy", reorderMultiple: "reorderMultiple" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsRowComponent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n</ng-container>\n", styles: [":host.drag-hidden .drag-col{opacity:0!important;cursor:default}:host.disabled{opacity:.4;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FsRowComponent, selector: "[fs-list-row]", inputs: ["row", "rowActionsRaw", "groupActionsRaw", "hasRowActions", "rowEvents", "rowClass", "restoreMode", "rowIndex", "columns", "selection", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "directive", type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: ["row"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2195
2299
  }
2196
- FsBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2197
- FsBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsBodyComponent, selector: "[fs-list-body]", inputs: { rows: "rows", columns: "columns", hasFooter: "hasFooter", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", rowEvents: "rowEvents", rowClass: "rowClass", hasRowActions: "hasRowActions", selection: "selection", restoreMode: "restoreMode", rowRemoved: "rowRemoved", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy", reorderMultiple: "reorderMultiple" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsRowComponent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n</ng-container>\n", styles: [":host.drag-hidden .drag-col{opacity:0!important;cursor:default}:host.disabled{opacity:.4;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FsRowComponent, selector: "[fs-list-row]", inputs: ["row", "rowActionsRaw", "groupActionsRaw", "hasRowActions", "rowEvents", "rowClass", "restoreMode", "rowIndex", "columns", "selection", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "directive", type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: ["row"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsBodyComponent, decorators: [{
2300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsBodyComponent, decorators: [{
2199
2301
  type: Component,
2200
2302
  args: [{ selector: '[fs-list-body]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n</ng-container>\n", styles: [":host.drag-hidden .drag-col{opacity:0!important;cursor:default}:host.disabled{opacity:.4;pointer-events:none}\n"] }]
2201
2303
  }], propDecorators: { rows: [{
@@ -2239,16 +2341,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
2239
2341
  }] } });
2240
2342
 
2241
2343
  class CustomizeColsDialogComponent {
2344
+ _dialog;
2345
+ columns = [];
2346
+ saveDisabled = false;
2347
+ _changeFn;
2348
+ _destroy$ = new Subject();
2242
2349
  constructor(data, _dialog) {
2243
2350
  this._dialog = _dialog;
2244
- this.columns = [];
2245
- this.saveDisabled = false;
2246
- this._destroy$ = new Subject();
2247
2351
  this.columns = data.columns;
2248
2352
  this._changeFn = data.changeFn;
2249
2353
  }
2250
2354
  ngOnDestroy() {
2251
- this._destroy$.next();
2355
+ this._destroy$.next(null);
2252
2356
  this._destroy$.complete();
2253
2357
  }
2254
2358
  visibilityChange(event, column) {
@@ -2284,59 +2388,53 @@ class CustomizeColsDialogComponent {
2284
2388
  cancel() {
2285
2389
  this._dialog.close();
2286
2390
  }
2391
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomizeColsDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
2392
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2287
2393
  }
2288
- CustomizeColsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomizeColsDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
2289
- CustomizeColsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CustomizeColsDialogComponent, selector: "ng-component", ngImport: i0, template: "<h1 matDialogTitle>Customize Columns</h1>\n<mat-dialog-content>\n <div *ngFor=\"let column of columns\">\n <mat-checkbox [checked]=\"column.show\" (change)=\"visibilityChange($event, column)\" [disabled]=\"column.disabled\">\n <ng-container *ngIf=\"!column.title; else titleLable\">\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\n </ng-container>\n <ng-template #titleLable>\n {{ column.title }}\n </ng-template>\n\n <ng-container *ngIf=\"column.tooltip\">\n <mat-icon [matTooltip]=\"column.tooltip\">\n help\n </mat-icon>\n </ng-container>\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button type=\"button\" mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"saveDisabled\">Save</button>\n <button type=\"button\" mat-button (click)=\"cancel()\">Cancel</button>\n</mat-dialog-actions>\n", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2290
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomizeColsDialogComponent, decorators: [{
2394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomizeColsDialogComponent, decorators: [{
2291
2395
  type: Component,
2292
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 matDialogTitle>Customize Columns</h1>\n<mat-dialog-content>\n <div *ngFor=\"let column of columns\">\n <mat-checkbox [checked]=\"column.show\" (change)=\"visibilityChange($event, column)\" [disabled]=\"column.disabled\">\n <ng-container *ngIf=\"!column.title; else titleLable\">\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\n </ng-container>\n <ng-template #titleLable>\n {{ column.title }}\n </ng-template>\n\n <ng-container *ngIf=\"column.tooltip\">\n <mat-icon [matTooltip]=\"column.tooltip\">\n help\n </mat-icon>\n </ng-container>\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button type=\"button\" mat-button color=\"primary\" (click)=\"save()\" [disabled]=\"saveDisabled\">Save</button>\n <button type=\"button\" mat-button (click)=\"cancel()\">Cancel</button>\n</mat-dialog-actions>\n", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}\n"] }]
2293
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2396
+ 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"] }]
2397
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
2294
2398
  type: Inject,
2295
2399
  args: [MAT_DIALOG_DATA]
2296
- }] }, { type: i1$2.MatDialogRef }]; } });
2400
+ }] }, { type: i1$2.MatDialogRef }] });
2297
2401
 
2298
2402
  class FsFooterCellComponent extends FsCellComponent {
2299
2403
  constructor() {
2300
2404
  super();
2301
2405
  }
2406
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFooterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2407
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2302
2408
  }
2303
- FsFooterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsFooterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2304
- FsFooterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsFooterCellComponent, selector: "[fs-list-footer-cell]", usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\n\n<ng-template #cell let-value=\"value\">\n {{value}}\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2305
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsFooterCellComponent, decorators: [{
2409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFooterCellComponent, decorators: [{
2306
2410
  type: Component,
2307
- args: [{ selector: '[fs-list-footer-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\n\n<ng-template #cell let-value=\"value\">\n {{value}}\n</ng-template>\n" }]
2308
- }], ctorParameters: function () { return []; } });
2411
+ 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" }]
2412
+ }], ctorParameters: () => [] });
2309
2413
 
2310
2414
  class FsFooterRowComponent extends FsRowComponent {
2311
2415
  constructor(el, cdRef, differs, renderer) {
2312
2416
  super(el, cdRef, differs, renderer, null);
2313
2417
  }
2418
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFooterRowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2419
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsFooterRowComponent, selector: "[fs-list-footer-row]", 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"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FsFooterCellComponent, selector: "[fs-list-footer-cell]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2314
2420
  }
2315
- FsFooterRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsFooterRowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2316
- FsFooterRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FsFooterCellComponent, selector: "[fs-list-footer-cell]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsFooterRowComponent, decorators: [{
2421
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFooterRowComponent, decorators: [{
2318
2422
  type: Component,
2319
2423
  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"] }]
2320
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { hasRowActions: [{
2321
- type: Input
2322
- }], activeFiltersCount: [{
2323
- type: Input
2324
- }], reorderEnabled: [{
2325
- type: Input
2326
- }], reorderPosition: [{
2327
- type: Input
2328
- }], reorderStrategy: [{
2329
- type: Input
2330
- }] } });
2424
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }] });
2331
2425
 
2332
2426
  class FsFooterComponent {
2333
- constructor() {
2334
- this.columns = [];
2335
- }
2427
+ hasRowActions;
2428
+ columns = [];
2429
+ selection;
2430
+ activeFiltersCount;
2431
+ reorderEnabled;
2432
+ reorderPosition;
2433
+ reorderStrategy;
2434
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2435
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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: [""], dependencies: [{ kind: "component", type: FsFooterRowComponent, selector: "[fs-list-footer-row]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2336
2436
  }
2337
- FsFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2338
- FsFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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: [""], dependencies: [{ kind: "component", type: FsFooterRowComponent, selector: "[fs-list-footer-row]", inputs: ["hasRowActions", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsFooterComponent, decorators: [{
2437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsFooterComponent, decorators: [{
2340
2438
  type: Component,
2341
2439
  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" }]
2342
2440
  }], propDecorators: { hasRowActions: [{
@@ -2356,11 +2454,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
2356
2454
  }] } });
2357
2455
 
2358
2456
  class FsHeadCellComponent extends FsCellComponent {
2457
+ _cdRef;
2458
+ _differs;
2459
+ cellContext = {};
2460
+ _columnDiffer;
2359
2461
  constructor(_cdRef, _differs) {
2360
2462
  super();
2361
2463
  this._cdRef = _cdRef;
2362
2464
  this._differs = _differs;
2363
- this.cellContext = {};
2364
2465
  this._columnDiffer = this._differs.find({}).create();
2365
2466
  }
2366
2467
  ngDoCheck() {
@@ -2371,13 +2472,13 @@ class FsHeadCellComponent extends FsCellComponent {
2371
2472
  initCellContext() {
2372
2473
  this.cellContext.value = this.column.title;
2373
2474
  }
2475
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsHeadCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component });
2476
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2374
2477
  }
2375
- FsHeadCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHeadCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component });
2376
- FsHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHeadCellComponent, decorators: [{
2478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsHeadCellComponent, decorators: [{
2378
2479
  type: Component,
2379
2480
  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"] }]
2380
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });
2481
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }] });
2381
2482
 
2382
2483
  class ColumnAsyncAttribute extends BehaviorSubject {
2383
2484
  constructor(value) {
@@ -2393,10 +2494,17 @@ class ColumnAsyncAttribute extends BehaviorSubject {
2393
2494
  }
2394
2495
 
2395
2496
  class ColumnAttributes {
2497
+ _title;
2498
+ _name;
2499
+ _customize = true;
2500
+ _sortable;
2501
+ _sortableDefault;
2502
+ _direction$ = new ColumnAsyncAttribute(null);
2503
+ _align;
2504
+ _width;
2505
+ _className;
2506
+ _visible$ = new ColumnAsyncAttribute(true);
2396
2507
  constructor(attrs = {}) {
2397
- this._customize = true;
2398
- this._direction$ = new ColumnAsyncAttribute(null);
2399
- this._visible$ = new ColumnAsyncAttribute(true);
2400
2508
  this._init(attrs);
2401
2509
  }
2402
2510
  // title
@@ -2524,13 +2632,14 @@ class ColumnAttributes {
2524
2632
  }
2525
2633
 
2526
2634
  class SortingController {
2527
- constructor() {
2528
- this.sortingColumns = [];
2529
- this.fakeSortingColumns = [];
2530
- this._initialized = new BehaviorSubject(false);
2531
- this._sortingChanged$ = new Subject();
2532
- this._onDestroy = new Subject();
2533
- }
2635
+ config;
2636
+ sortingColumns = [];
2637
+ fakeSortingColumns = [];
2638
+ sortingColumn;
2639
+ _initialized = new BehaviorSubject(false);
2640
+ _sortingChanged$ = new Subject();
2641
+ _onDestroy = new Subject();
2642
+ constructor() { }
2534
2643
  get sortingChanged$() {
2535
2644
  return this._sortingChanged$.pipe(takeUntil(this._onDestroy));
2536
2645
  }
@@ -2684,7 +2793,7 @@ class SortingController {
2684
2793
  * Destroy
2685
2794
  */
2686
2795
  destroy() {
2687
- this._onDestroy.next();
2796
+ this._onDestroy.next(null);
2688
2797
  this._onDestroy.complete();
2689
2798
  }
2690
2799
  _setSortingColumn(column) {
@@ -2726,11 +2835,21 @@ class SortingController {
2726
2835
  }
2727
2836
 
2728
2837
  class FsHeadComponent {
2838
+ _cdRef;
2839
+ sorting;
2840
+ columns;
2841
+ hasRowActions;
2842
+ selection;
2843
+ activeFiltersCount;
2844
+ reorderEnabled;
2845
+ reorderPosition;
2846
+ reorderStrategy;
2847
+ rowsContainer;
2848
+ selectedAll = false;
2849
+ ReorderStrategyEnum = ReorderStrategy;
2850
+ _destroy$ = new Subject();
2729
2851
  constructor(_cdRef) {
2730
2852
  this._cdRef = _cdRef;
2731
- this.selectedAll = false;
2732
- this.ReorderStrategyEnum = ReorderStrategy;
2733
- this._destroy$ = new Subject();
2734
2853
  }
2735
2854
  get leftDragDropEnabled() {
2736
2855
  return this.reorderEnabled
@@ -2747,7 +2866,7 @@ class FsHeadComponent {
2747
2866
  this._initSelection();
2748
2867
  }
2749
2868
  ngOnDestroy() {
2750
- this._destroy$.next();
2869
+ this._destroy$.next(null);
2751
2870
  this._destroy$.complete();
2752
2871
  }
2753
2872
  /**
@@ -2791,13 +2910,13 @@ class FsHeadComponent {
2791
2910
  });
2792
2911
  }
2793
2912
  }
2913
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsHeadComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2914
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsHeadComponent, selector: "[fs-list-head]", inputs: { sorting: "sorting", columns: "columns", hasRowActions: "hasRowActions", selection: "selection", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy" }, viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"leftDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Selection -->\n <th *ngIf=\"selection && !(selection.disabled$ | async)\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th \n fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n\n <!-- Drag -->\n <th *ngIf=\"rightDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", styles: ["th.fs-list-col-selection{width:1%!important;text-align:left}th.sorting{cursor:pointer}th.sorting:hover{background-color:#f6f6f6}th.sorting{background-image:none}th.left{text-align:left}th.center{text-align:center}th.right{text-align:right}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: FsHeadCellComponent, selector: "[fs-head-cell]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2794
2915
  }
2795
- FsHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHeadComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2796
- FsHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsHeadComponent, selector: "[fs-list-head]", inputs: { sorting: "sorting", columns: "columns", hasRowActions: "hasRowActions", selection: "selection", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy" }, viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"leftDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Selection -->\n <th *ngIf=\"selection && !(selection.disabled$ | async)\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th \n fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n\n <!-- Drag -->\n <th *ngIf=\"rightDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", styles: ["th.fs-list-col-selection{width:1%!important;text-align:left}th.sorting{cursor:pointer}th.sorting:hover{background-color:#f6f6f6}th.sorting{background-image:none}th.left{text-align:left}th.center{text-align:center}th.right{text-align:right}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: FsHeadCellComponent, selector: "[fs-head-cell]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHeadComponent, decorators: [{
2916
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsHeadComponent, decorators: [{
2798
2917
  type: Component,
2799
2918
  args: [{ selector: '[fs-list-head]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"leftDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Selection -->\n <th *ngIf=\"selection && !(selection.disabled$ | async)\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th \n fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n\n <!-- Drag -->\n <th *ngIf=\"rightDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", styles: ["th.fs-list-col-selection{width:1%!important;text-align:left}th.sorting{cursor:pointer}th.sorting:hover{background-color:#f6f6f6}th.sorting{background-image:none}th.left{text-align:left}th.center{text-align:center}th.right{text-align:right}\n"] }]
2800
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { sorting: [{
2919
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { sorting: [{
2801
2920
  type: Input
2802
2921
  }], columns: [{
2803
2922
  type: Input
@@ -2836,20 +2955,25 @@ var FsListState;
2836
2955
  })(FsListState || (FsListState = {}));
2837
2956
 
2838
2957
  class ColumnsController {
2839
- constructor() {
2840
- this._visibleColumns$ = new BehaviorSubject([]);
2841
- this._visibleColumnsShared$ = this._visibleColumns$.pipe();
2842
- this._theadClass = '';
2843
- this._isConfigured = false;
2844
- this._loadFnConfigured = false;
2845
- this._changeFnConfigured = false;
2846
- this._columnsFetched = false;
2847
- this._hasHeader = false;
2848
- this._hasFooter = false;
2849
- this._columns = [];
2850
- this._columnsUpdated$ = new Subject();
2851
- this._destroy$ = new Subject();
2852
- }
2958
+ _visibleColumns$ = new BehaviorSubject([]);
2959
+ _visibleColumnsShared$ = this._visibleColumns$.pipe();
2960
+ _theadClass = '';
2961
+ _loadFn;
2962
+ _changeFn;
2963
+ _customizeFieldTitleFn;
2964
+ _customizeFieldDisabledFn;
2965
+ _columnTooltipFn;
2966
+ _isConfigured = false;
2967
+ _loadFnConfigured = false;
2968
+ _changeFnConfigured = false;
2969
+ _columnsFetched = false;
2970
+ _hasHeader = false;
2971
+ _hasFooter = false;
2972
+ _columns = [];
2973
+ _defaultConfigs;
2974
+ _columnsUpdated$ = new Subject();
2975
+ _destroy$ = new Subject();
2976
+ constructor() { }
2853
2977
  get columns() {
2854
2978
  return this._columns.slice();
2855
2979
  }
@@ -2999,7 +3123,7 @@ class ColumnsController {
2999
3123
  this.updateVisibleColumns();
3000
3124
  }
3001
3125
  destroy() {
3002
- this._destroy$.next();
3126
+ this._destroy$.next(null);
3003
3127
  this._destroy$.complete();
3004
3128
  this._columnsUpdated$.complete();
3005
3129
  this._columns = void 0;
@@ -3009,7 +3133,7 @@ class ColumnsController {
3009
3133
  this._changeFn = void 0;
3010
3134
  }
3011
3135
  _listenColumnVisibilityUpdates() {
3012
- this._columnsUpdated$.next();
3136
+ this._columnsUpdated$.next(null);
3013
3137
  const columnsVisibility = this._columns.map((column) => {
3014
3138
  return column.visible$.pipe(skip(1));
3015
3139
  });
@@ -3038,17 +3162,20 @@ class ColumnsController {
3038
3162
  }
3039
3163
 
3040
3164
  class DataController {
3041
- constructor() {
3042
- this._visibleRows$ = new BehaviorSubject([]);
3043
- this._rowsRemoved$ = new Subject();
3044
- this._remoteRowsChange$ = new Subject();
3045
- this._store = new Map();
3046
- this._rowsStack = [];
3047
- this._initialExpand = true;
3048
- this._groupEnabled = false;
3049
- this._hasData = false;
3050
- this._destroy$ = new Subject();
3051
- }
3165
+ _visibleRows$ = new BehaviorSubject([]);
3166
+ _rowsRemoved$ = new Subject();
3167
+ _remoteRowsChange$ = new Subject();
3168
+ _store = new Map();
3169
+ _rowsStack = [];
3170
+ _operation;
3171
+ _groupByFn;
3172
+ _footerRowFn;
3173
+ _compareByFn;
3174
+ _initialExpand = true;
3175
+ _groupEnabled = false;
3176
+ _loadMoreEnabled;
3177
+ _hasData = false;
3178
+ _destroy$ = new Subject();
3052
3179
  get visibleRowsData() {
3053
3180
  return this.visibleRows.map((row) => row.data);
3054
3181
  }
@@ -3230,7 +3357,7 @@ class DataController {
3230
3357
  destroy() {
3231
3358
  this._destroyRowsStack();
3232
3359
  this._store.clear();
3233
- this._destroy$.next();
3360
+ this._destroy$.next(null);
3234
3361
  this._destroy$.complete();
3235
3362
  }
3236
3363
  toggleRowGroup(rowData) {
@@ -3374,6 +3501,19 @@ class DataController {
3374
3501
  }
3375
3502
 
3376
3503
  class ExternalParamsController {
3504
+ _router;
3505
+ _route;
3506
+ _persistance;
3507
+ _paginator;
3508
+ _sorting;
3509
+ _queryParamsEnabled;
3510
+ _externalParams = {
3511
+ page: null,
3512
+ limit: null,
3513
+ sortName: null,
3514
+ sortDirection: null,
3515
+ };
3516
+ _destroy$ = new Subject();
3377
3517
  constructor(_router, _route, _persistance, _paginator, _sorting, _queryParamsEnabled) {
3378
3518
  this._router = _router;
3379
3519
  this._route = _route;
@@ -3381,13 +3521,6 @@ class ExternalParamsController {
3381
3521
  this._paginator = _paginator;
3382
3522
  this._sorting = _sorting;
3383
3523
  this._queryParamsEnabled = _queryParamsEnabled;
3384
- this._externalParams = {
3385
- page: null,
3386
- limit: null,
3387
- sortName: null,
3388
- sortDirection: null,
3389
- };
3390
- this._destroy$ = new Subject();
3391
3524
  this.initialize();
3392
3525
  }
3393
3526
  get externalSorting() {
@@ -3444,7 +3577,7 @@ class ExternalParamsController {
3444
3577
  this._updateSortingParams(null, null);
3445
3578
  }
3446
3579
  destroy() {
3447
- this._destroy$.next();
3580
+ this._destroy$.next(null);
3448
3581
  this._destroy$.complete();
3449
3582
  }
3450
3583
  _restorePaginationParams(values) {
@@ -3519,10 +3652,12 @@ class ExternalParamsController {
3519
3652
  }
3520
3653
 
3521
3654
  class ActionsController {
3522
- constructor() {
3523
- this._actions = [];
3524
- this._destroy$ = new Subject();
3525
- }
3655
+ _filterRef;
3656
+ _actions = [];
3657
+ _reorderAction;
3658
+ _doneAction;
3659
+ _destroy$ = new Subject();
3660
+ constructor() { }
3526
3661
  get destroy$() {
3527
3662
  return this._destroy$.asObservable();
3528
3663
  }
@@ -3565,7 +3700,7 @@ class ActionsController {
3565
3700
  }
3566
3701
  clearActions() {
3567
3702
  this._actions = [];
3568
- this._destroy$.next();
3703
+ this._destroy$.next(null);
3569
3704
  }
3570
3705
  updateDisabledState() {
3571
3706
  this._filterRef.updateDisabledState();
@@ -3580,20 +3715,20 @@ var PaginationStrategy;
3580
3715
  })(PaginationStrategy || (PaginationStrategy = {}));
3581
3716
 
3582
3717
  class PaginationController {
3583
- constructor() {
3584
- this.limit = 25;
3585
- this.manual = false;
3586
- this.page = 1; // Active page
3587
- this.offset = 0;
3588
- this.displayed = 0;
3589
- this._pages$ = new BehaviorSubject(0); // Total pages
3590
- this._strategy = PaginationStrategy.None;
3591
- this._removedRows = 0;
3592
- this._pageChanged$ = new Subject();
3593
- this._pageReset$ = new Subject();
3594
- this._onDestroy$ = new Subject();
3595
- this._limits = [10, 25, 50, 100, 200];
3596
- }
3718
+ limit = 25;
3719
+ records;
3720
+ manual = false;
3721
+ page = 1; // Active page
3722
+ offset = 0;
3723
+ displayed = 0;
3724
+ _pages$ = new BehaviorSubject(0); // Total pages
3725
+ _strategy = PaginationStrategy.None;
3726
+ _removedRows = 0;
3727
+ _pageChanged$ = new Subject();
3728
+ _pageReset$ = new Subject();
3729
+ _onDestroy$ = new Subject();
3730
+ _loadMoreConfig;
3731
+ _limits = [10, 25, 50, 100, 200];
3597
3732
  // Total pages
3598
3733
  set pages(value) {
3599
3734
  this._pages$.next(value);
@@ -4036,7 +4171,7 @@ class PaginationController {
4036
4171
  * Destroy
4037
4172
  */
4038
4173
  destroy() {
4039
- this._onDestroy$.next();
4174
+ this._onDestroy$.next(null);
4040
4175
  this._onDestroy$.complete();
4041
4176
  }
4042
4177
  /**
@@ -4068,6 +4203,68 @@ class PaginationController {
4068
4203
 
4069
4204
  const showDeletedFilterKey = 'showDeleted';
4070
4205
  class List {
4206
+ _el;
4207
+ _config;
4208
+ _selectionDialog;
4209
+ _router;
4210
+ _route;
4211
+ _persistance;
4212
+ _inDialog;
4213
+ heading;
4214
+ trackBy;
4215
+ subheading;
4216
+ autoFocus;
4217
+ rowHoverHighlight;
4218
+ rowActionsRaw;
4219
+ groupActionsRaw;
4220
+ rowClass;
4221
+ rowEvents;
4222
+ restore;
4223
+ persist;
4224
+ filters = [];
4225
+ filterInitCb;
4226
+ filterChangeCb;
4227
+ savedFilters;
4228
+ noResults;
4229
+ emptyState;
4230
+ fetchFn;
4231
+ beforeFetchFn;
4232
+ afterFetchFn;
4233
+ afterContentInit;
4234
+ afterInit;
4235
+ style;
4236
+ hasRowActions;
4237
+ paging = new PaginationController();
4238
+ columns = new ColumnsController();
4239
+ actions = new ActionsController();
4240
+ dataController = new DataController();
4241
+ sorting = new SortingController();
4242
+ externalParams;
4243
+ selection;
4244
+ filterConfig = null;
4245
+ loading$ = new BehaviorSubject(false);
4246
+ fetchComplete$ = new Subject();
4247
+ filtersReady$ = new Subject();
4248
+ status = true;
4249
+ chips = false;
4250
+ filterInput = true;
4251
+ queryParam = false;
4252
+ restoreMode = false;
4253
+ autoReload;
4254
+ initialFetch = true;
4255
+ // Empty state
4256
+ emptyStateEnabled = false;
4257
+ emptyStateTemplate;
4258
+ _destroy$ = new Subject();
4259
+ _initialized$ = new BehaviorSubject(false);
4260
+ _fetch$ = new Subject();
4261
+ _filtersQuery = new BehaviorSubject(null);
4262
+ _activeFiltersCount$ = this._filtersQuery
4263
+ .pipe(map((v) => Object.keys(v).length), shareReplay());
4264
+ _headerConfig;
4265
+ _groupCellConfig;
4266
+ _cellConfig;
4267
+ _footerConfig;
4071
4268
  constructor(_el, _config = {}, _selectionDialog, _router, _route, _persistance, _inDialog) {
4072
4269
  this._el = _el;
4073
4270
  this._config = _config;
@@ -4076,30 +4273,6 @@ class List {
4076
4273
  this._route = _route;
4077
4274
  this._persistance = _persistance;
4078
4275
  this._inDialog = _inDialog;
4079
- this.filters = [];
4080
- this.paging = new PaginationController();
4081
- this.columns = new ColumnsController();
4082
- this.actions = new ActionsController();
4083
- this.dataController = new DataController();
4084
- this.sorting = new SortingController();
4085
- this.filterConfig = null;
4086
- this.loading$ = new BehaviorSubject(false);
4087
- this.fetchComplete$ = new Subject();
4088
- this.filtersReady$ = new Subject();
4089
- this.status = true;
4090
- this.chips = false;
4091
- this.filterInput = true;
4092
- this.queryParam = false;
4093
- this.restoreMode = false;
4094
- this.initialFetch = true;
4095
- // Empty state
4096
- this.emptyStateEnabled = false;
4097
- this._destroy$ = new Subject();
4098
- this._initialized$ = new BehaviorSubject(false);
4099
- this._fetch$ = new Subject();
4100
- this._filtersQuery = new BehaviorSubject(null);
4101
- this._activeFiltersCount$ = this._filtersQuery
4102
- .pipe(map((v) => Object.keys(v).length), shareReplay());
4103
4276
  this._initialize(_config);
4104
4277
  this._headerConfig = new StyleConfig(_config.header);
4105
4278
  this._groupCellConfig = new StyleConfig(_config.cell);
@@ -4109,7 +4282,7 @@ class List {
4109
4282
  this.subscribe();
4110
4283
  if (this.initialFetch) {
4111
4284
  this.dataController.setOperation(FsListState.Load);
4112
- this._fetch$.next();
4285
+ this._fetch$.next(null);
4113
4286
  }
4114
4287
  }
4115
4288
  get fetch$() {
@@ -4173,7 +4346,7 @@ class List {
4173
4346
  reload() {
4174
4347
  this.loading$.next(true);
4175
4348
  this.dataController.setOperation(FsListState.Reload);
4176
- this._fetch$.next();
4349
+ this._fetch$.next(null);
4177
4350
  return this.fetchComplete$
4178
4351
  .asObservable()
4179
4352
  .pipe(take(1), delay(0));
@@ -4218,14 +4391,14 @@ class List {
4218
4391
  }
4219
4392
  });
4220
4393
  }
4221
- this._fetch$.next();
4394
+ this._fetch$.next(null);
4222
4395
  });
4223
4396
  this.sorting.sortingChanged$
4224
4397
  .pipe(takeUntil(this._destroy$))
4225
4398
  .subscribe(() => {
4226
4399
  this.dataController.setOperation(FsListState.Sort);
4227
4400
  this.paging.page = 1;
4228
- this._fetch$.next();
4401
+ this._fetch$.next(null);
4229
4402
  });
4230
4403
  this._listenVisibleColumnChanges();
4231
4404
  this._listenRowsRemove();
@@ -4276,7 +4449,7 @@ class List {
4276
4449
  this.externalParams.destroy();
4277
4450
  }
4278
4451
  this.columns.destroy();
4279
- this._destroy$.next();
4452
+ this._destroy$.next(null);
4280
4453
  this._destroy$.complete();
4281
4454
  this.dataController.destroy();
4282
4455
  }
@@ -4371,7 +4544,7 @@ class List {
4371
4544
  menu: true,
4372
4545
  click: (row) => {
4373
4546
  this._restoreClick(this.restore.click, row);
4374
- },
4547
+ }, // TODO fix me, move to special file
4375
4548
  restore: true,
4376
4549
  });
4377
4550
  if (!this.rowActionsRaw) {
@@ -4600,7 +4773,7 @@ class List {
4600
4773
  this.dataController.setOperation(FsListState.Filter);
4601
4774
  // Reset paging for request with correct offset
4602
4775
  this.paging.resetPaging();
4603
- this._fetch$.next();
4776
+ this._fetch$.next(null);
4604
4777
  }
4605
4778
  _checkRestoreFilter() {
4606
4779
  // Restore option
@@ -4726,22 +4899,22 @@ class List {
4726
4899
 
4727
4900
  const FILTER_STORE_KEY = 'fs-list-persist';
4728
4901
  class PersistanceController extends FsPersistanceStore {
4902
+ STORE_KEY = FILTER_STORE_KEY;
4729
4903
  constructor(_store, _route) {
4730
4904
  super(_store, _route);
4731
- this.STORE_KEY = FILTER_STORE_KEY;
4732
4905
  }
4906
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PersistanceController, deps: [{ token: i1$3.FsStore }, { token: i6.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
4907
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PersistanceController });
4733
4908
  }
4734
- PersistanceController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PersistanceController, deps: [{ token: i1$3.FsStore }, { token: i6.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
4735
- PersistanceController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PersistanceController });
4736
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PersistanceController, decorators: [{
4909
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PersistanceController, decorators: [{
4737
4910
  type: Injectable
4738
- }], ctorParameters: function () { return [{ type: i1$3.FsStore }, { type: i6.ActivatedRoute }]; } });
4911
+ }], ctorParameters: () => [{ type: i1$3.FsStore }, { type: i6.ActivatedRoute }] });
4739
4912
 
4740
4913
  class FsListHeadingDirective {
4914
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListHeadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4915
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListHeadingDirective, selector: "[fs-list-heading],[fsListHeading]", ngImport: i0 });
4741
4916
  }
4742
- FsListHeadingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListHeadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4743
- FsListHeadingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListHeadingDirective, selector: "[fs-list-heading],[fsListHeading]", ngImport: i0 });
4744
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListHeadingDirective, decorators: [{
4917
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListHeadingDirective, decorators: [{
4745
4918
  type: Directive,
4746
4919
  args: [{
4747
4920
  selector: '[fs-list-heading],[fsListHeading]'
@@ -4749,10 +4922,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4749
4922
  }] });
4750
4923
 
4751
4924
  class FsListSubheadingDirective {
4925
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListSubheadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4926
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListSubheadingDirective, selector: "[fs-list-subheading],[fsListSubheading]", ngImport: i0 });
4752
4927
  }
4753
- FsListSubheadingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListSubheadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4754
- FsListSubheadingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListSubheadingDirective, selector: "[fs-list-subheading],[fsListSubheading]", ngImport: i0 });
4755
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListSubheadingDirective, decorators: [{
4928
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListSubheadingDirective, decorators: [{
4756
4929
  type: Directive,
4757
4930
  args: [{
4758
4931
  selector: '[fs-list-subheading],[fsListSubheading]'
@@ -4760,10 +4933,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4760
4933
  }] });
4761
4934
 
4762
4935
  class FsListHeadingContainerDirective {
4936
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListHeadingContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4937
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListHeadingContainerDirective, selector: "[fs-list-heading-container],[fsListHeadingContainer]", ngImport: i0 });
4763
4938
  }
4764
- FsListHeadingContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListHeadingContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4765
- FsListHeadingContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListHeadingContainerDirective, selector: "[fs-list-heading-container],[fsListHeadingContainer]", ngImport: i0 });
4766
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListHeadingContainerDirective, decorators: [{
4939
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListHeadingContainerDirective, decorators: [{
4767
4940
  type: Directive,
4768
4941
  args: [{
4769
4942
  selector: '[fs-list-heading-container],[fsListHeadingContainer]'
@@ -4771,10 +4944,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4771
4944
  }] });
4772
4945
 
4773
4946
  class FsListCellDirective {
4947
+ colspan;
4948
+ align;
4949
+ className;
4950
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4951
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListCellDirective, selector: "[fs-list-cell]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
4774
4952
  }
4775
- FsListCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4776
- FsListCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListCellDirective, selector: "[fs-list-cell]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
4777
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListCellDirective, decorators: [{
4953
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListCellDirective, decorators: [{
4778
4954
  type: Directive,
4779
4955
  args: [{ selector: '[fs-list-cell]' }]
4780
4956
  }], propDecorators: { colspan: [{
@@ -4787,10 +4963,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4787
4963
  }] } });
4788
4964
 
4789
4965
  class FsListFooterDirective {
4966
+ colspan;
4967
+ align;
4968
+ className;
4969
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4970
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
4790
4971
  }
4791
- FsListFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4792
- FsListFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
4793
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListFooterDirective, decorators: [{
4972
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListFooterDirective, decorators: [{
4794
4973
  type: Directive,
4795
4974
  args: [{ selector: '[fs-list-footer]' }]
4796
4975
  }], propDecorators: { colspan: [{
@@ -4803,10 +4982,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4803
4982
  }] } });
4804
4983
 
4805
4984
  class FsListHeaderDirective {
4985
+ colspan;
4986
+ align;
4987
+ className;
4988
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4989
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListHeaderDirective, selector: "[fs-list-header]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
4806
4990
  }
4807
- FsListHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4808
- FsListHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListHeaderDirective, selector: "[fs-list-header]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
4809
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListHeaderDirective, decorators: [{
4991
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListHeaderDirective, decorators: [{
4810
4992
  type: Directive,
4811
4993
  args: [{ selector: '[fs-list-header]' }]
4812
4994
  }], propDecorators: { colspan: [{
@@ -4819,10 +5001,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4819
5001
  }] } });
4820
5002
 
4821
5003
  class GroupExpandNotifierService {
4822
- constructor() {
4823
- this._expandStatusChanged$ = new Subject();
4824
- this._destroy$ = new Subject();
4825
- }
5004
+ _expandStatusChanged$ = new Subject();
5005
+ _destroy$ = new Subject();
4826
5006
  get expandStatusChange$() {
4827
5007
  return this._expandStatusChanged$.pipe(takeUntil(this._destroy$));
4828
5008
  }
@@ -4830,32 +5010,34 @@ class GroupExpandNotifierService {
4830
5010
  this._expandStatusChanged$.next(rowData);
4831
5011
  }
4832
5012
  ngOnDestroy() {
4833
- this._destroy$.next();
5013
+ this._destroy$.next(null);
4834
5014
  this._destroy$.complete();
4835
5015
  }
5016
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupExpandNotifierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5017
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupExpandNotifierService });
4836
5018
  }
4837
- GroupExpandNotifierService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GroupExpandNotifierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4838
- GroupExpandNotifierService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GroupExpandNotifierService });
4839
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GroupExpandNotifierService, decorators: [{
5019
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupExpandNotifierService, decorators: [{
4840
5020
  type: Injectable
4841
5021
  }] });
4842
5022
 
4843
5023
  class FsListGroupExpandTriggerDirective {
5024
+ _expandNotifier;
4844
5025
  click(event) {
4845
5026
  event.preventDefault();
4846
5027
  event.stopPropagation();
4847
5028
  this._expandNotifier.toggleExpandStatus(this.row);
4848
5029
  }
5030
+ row;
4849
5031
  constructor(_expandNotifier) {
4850
5032
  this._expandNotifier = _expandNotifier;
4851
5033
  }
5034
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListGroupExpandTriggerDirective, deps: [{ token: GroupExpandNotifierService }], target: i0.ɵɵFactoryTarget.Directive });
5035
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListGroupExpandTriggerDirective, selector: "[fsListGroupExpandTrigger]", inputs: { row: "row" }, host: { listeners: { "click": "click($event)" } }, ngImport: i0 });
4852
5036
  }
4853
- FsListGroupExpandTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupExpandTriggerDirective, deps: [{ token: GroupExpandNotifierService }], target: i0.ɵɵFactoryTarget.Directive });
4854
- FsListGroupExpandTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListGroupExpandTriggerDirective, selector: "[fsListGroupExpandTrigger]", inputs: { row: "row" }, host: { listeners: { "click": "click($event)" } }, ngImport: i0 });
4855
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupExpandTriggerDirective, decorators: [{
5037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListGroupExpandTriggerDirective, decorators: [{
4856
5038
  type: Directive,
4857
5039
  args: [{ selector: '[fsListGroupExpandTrigger]' }]
4858
- }], ctorParameters: function () { return [{ type: GroupExpandNotifierService }]; }, propDecorators: { click: [{
5040
+ }], ctorParameters: () => [{ type: GroupExpandNotifierService }], propDecorators: { click: [{
4859
5041
  type: HostListener,
4860
5042
  args: ['click', ['$event']]
4861
5043
  }], row: [{
@@ -4863,10 +5045,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4863
5045
  }] } });
4864
5046
 
4865
5047
  class FsListGroupFooterDirective extends FsListCellDirective {
5048
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListGroupFooterDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
5049
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListGroupFooterDirective, selector: "[fs-list-group-footer]", usesInheritance: true, ngImport: i0 });
4866
5050
  }
4867
- FsListGroupFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupFooterDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4868
- FsListGroupFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListGroupFooterDirective, selector: "[fs-list-group-footer]", usesInheritance: true, ngImport: i0 });
4869
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupFooterDirective, decorators: [{
5051
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListGroupFooterDirective, decorators: [{
4870
5052
  type: Directive,
4871
5053
  args: [{
4872
5054
  selector: '[fs-list-group-footer]'
@@ -4874,10 +5056,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4874
5056
  }] });
4875
5057
 
4876
5058
  class FsListGroupHeaderDirective extends FsListCellDirective {
5059
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListGroupHeaderDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
5060
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListGroupHeaderDirective, selector: "[fs-list-group-cell],[fs-list-group-header]", usesInheritance: true, ngImport: i0 });
4877
5061
  }
4878
- FsListGroupHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupHeaderDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4879
- FsListGroupHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListGroupHeaderDirective, selector: "[fs-list-group-cell],[fs-list-group-header]", usesInheritance: true, ngImport: i0 });
4880
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupHeaderDirective, decorators: [{
5062
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListGroupHeaderDirective, decorators: [{
4881
5063
  type: Directive,
4882
5064
  args: [{
4883
5065
  selector: '[fs-list-group-cell],[fs-list-group-header]'
@@ -4885,9 +5067,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4885
5067
  }] });
4886
5068
 
4887
5069
  class FsListColumnDirective {
4888
- constructor() {
4889
- this._columnAttributes = new ColumnAttributes();
4890
- }
5070
+ // Header
5071
+ headerTemplate;
5072
+ headerConfigs;
5073
+ // Group
5074
+ groupHeaderTemplate;
5075
+ groupHeaderConfigs;
5076
+ // Group Footer
5077
+ groupFooterTemplate;
5078
+ groupFooterConfigs;
5079
+ // Trigger
5080
+ expandTrigger;
5081
+ // Cell
5082
+ cellTemplate;
5083
+ cellConfigs;
5084
+ // Footer
5085
+ footerTemplate;
5086
+ footerConfigs;
5087
+ _columnAttributes = new ColumnAttributes();
5088
+ constructor() { }
4891
5089
  get attributes() {
4892
5090
  return this._columnAttributes;
4893
5091
  }
@@ -4928,15 +5126,15 @@ class FsListColumnDirective {
4928
5126
  set className(value) {
4929
5127
  this._columnAttributes.className = value;
4930
5128
  }
5129
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5130
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListColumnDirective, selector: "fs-list-column", inputs: { visible: ["show", "visible"], title: "title", name: "name", customize: "customize", sortable: "sortable", sortableDefault: "sortableDefault", sortableDirection: "sortableDirection", direction: "direction", align: "align", width: "width", className: ["class", "className"] }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsListHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "headerConfigs", first: true, predicate: FsListHeaderDirective, descendants: true, static: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: FsListGroupHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "groupHeaderConfigs", first: true, predicate: FsListGroupHeaderDirective, descendants: true, static: true }, { propertyName: "groupFooterTemplate", first: true, predicate: FsListGroupFooterDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "groupFooterConfigs", first: true, predicate: FsListGroupFooterDirective, descendants: true, static: true }, { propertyName: "cellTemplate", first: true, predicate: FsListCellDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "cellConfigs", first: true, predicate: FsListCellDirective, descendants: true, static: true }, { propertyName: "footerTemplate", first: true, predicate: FsListFooterDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "footerConfigs", first: true, predicate: FsListFooterDirective, descendants: true, static: true }, { propertyName: "expandTrigger", predicate: FsListGroupExpandTriggerDirective, descendants: true }], ngImport: i0 });
4931
5131
  }
4932
- FsListColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4933
- FsListColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListColumnDirective, selector: "fs-list-column", inputs: { visible: ["show", "visible"], title: "title", name: "name", customize: "customize", sortable: "sortable", sortableDefault: "sortableDefault", sortableDirection: "sortableDirection", direction: "direction", align: "align", width: "width", className: ["class", "className"] }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsListHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "headerConfigs", first: true, predicate: FsListHeaderDirective, descendants: true, static: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: FsListGroupHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "groupHeaderConfigs", first: true, predicate: FsListGroupHeaderDirective, descendants: true, static: true }, { propertyName: "groupFooterTemplate", first: true, predicate: FsListGroupFooterDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "groupFooterConfigs", first: true, predicate: FsListGroupFooterDirective, descendants: true, static: true }, { propertyName: "cellTemplate", first: true, predicate: FsListCellDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "cellConfigs", first: true, predicate: FsListCellDirective, descendants: true, static: true }, { propertyName: "footerTemplate", first: true, predicate: FsListFooterDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "footerConfigs", first: true, predicate: FsListFooterDirective, descendants: true, static: true }, { propertyName: "expandTrigger", predicate: FsListGroupExpandTriggerDirective, descendants: true }], ngImport: i0 });
4934
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListColumnDirective, decorators: [{
5132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListColumnDirective, decorators: [{
4935
5133
  type: Directive,
4936
5134
  args: [{
4937
5135
  selector: 'fs-list-column'
4938
5136
  }]
4939
- }], ctorParameters: function () { return []; }, propDecorators: { headerTemplate: [{
5137
+ }], ctorParameters: () => [], propDecorators: { headerTemplate: [{
4940
5138
  type: ContentChild,
4941
5139
  args: [FsListHeaderDirective, { read: TemplateRef, static: true }]
4942
5140
  }], headerConfigs: [{
@@ -4996,10 +5194,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4996
5194
  }] } });
4997
5195
 
4998
5196
  class FsListEmptyStateDirective {
5197
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListEmptyStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5198
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListEmptyStateDirective, selector: "[fs-list-empty-state]", ngImport: i0 });
4999
5199
  }
5000
- FsListEmptyStateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListEmptyStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5001
- FsListEmptyStateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListEmptyStateDirective, selector: "[fs-list-empty-state]", ngImport: i0 });
5002
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListEmptyStateDirective, decorators: [{
5200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListEmptyStateDirective, decorators: [{
5003
5201
  type: Directive,
5004
5202
  args: [{
5005
5203
  selector: '[fs-list-empty-state]',
@@ -5010,6 +5208,9 @@ const FS_LIST_DEFAULT_CONFIG = new InjectionToken('fs-list.default-config');
5010
5208
  const FS_LIST_CONFIG = new InjectionToken('fs-list.config');
5011
5209
 
5012
5210
  class FsListSavedFiltersComponent {
5211
+ _dialog;
5212
+ _externalParams;
5213
+ _vcRef;
5013
5214
  constructor(_dialog, _externalParams, _vcRef) {
5014
5215
  this._dialog = _dialog;
5015
5216
  this._externalParams = _externalParams;
@@ -5023,18 +5224,23 @@ class FsListSavedFiltersComponent {
5023
5224
  // viewContainerRef: this._vcRef,
5024
5225
  // });
5025
5226
  }
5227
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListSavedFiltersComponent, deps: [{ token: i1$2.MatDialog }, { token: i2$1.ExternalParamsController }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
5228
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsListSavedFiltersComponent, selector: "fs-list-saved-filters", ngImport: i0, template: "<ng-container *ngIf=\"savedFiltersEnabled$ | async\"><!--\r\n -->, saved filter\r\n <fs-filter-saved-filters-menu (manage)=\"showManageDialog()\"></fs-filter-saved-filters-menu>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.FsSavedFiltersMenuComponent, selector: "fs-filter-saved-filters-menu", outputs: ["clear"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
5026
5229
  }
5027
- FsListSavedFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListSavedFiltersComponent, deps: [{ token: i1$2.MatDialog }, { token: i2$1.ExternalParamsController }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
5028
- FsListSavedFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsListSavedFiltersComponent, selector: "fs-list-saved-filters", ngImport: i0, template: "<ng-container *ngIf=\"savedFiltersEnabled$ | async\"><!--\n -->, saved filter\n <fs-filter-saved-filters-menu (manage)=\"showManageDialog()\"></fs-filter-saved-filters-menu>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.FsSavedFiltersMenuComponent, selector: "fs-filter-saved-filters-menu", outputs: ["clear"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
5029
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListSavedFiltersComponent, decorators: [{
5230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListSavedFiltersComponent, decorators: [{
5030
5231
  type: Component,
5031
- args: [{ selector: 'fs-list-saved-filters', template: "<ng-container *ngIf=\"savedFiltersEnabled$ | async\"><!--\n -->, saved filter\n <fs-filter-saved-filters-menu (manage)=\"showManageDialog()\"></fs-filter-saved-filters-menu>\n</ng-container>\n" }]
5032
- }], ctorParameters: function () { return [{ type: i1$2.MatDialog }, { type: i2$1.ExternalParamsController }, { type: i0.ViewContainerRef }]; } });
5232
+ args: [{ selector: 'fs-list-saved-filters', template: "<ng-container *ngIf=\"savedFiltersEnabled$ | async\"><!--\r\n -->, saved filter\r\n <fs-filter-saved-filters-menu (manage)=\"showManageDialog()\"></fs-filter-saved-filters-menu>\r\n</ng-container>\r\n" }]
5233
+ }], ctorParameters: () => [{ type: i1$2.MatDialog }, { type: i2$1.ExternalParamsController }, { type: i0.ViewContainerRef }] });
5033
5234
 
5034
5235
  class FsStatusComponent {
5236
+ _cdRef;
5237
+ paging;
5238
+ sorting;
5239
+ rows;
5240
+ firstLoad;
5241
+ _destroy$ = new Subject();
5035
5242
  constructor(_cdRef) {
5036
5243
  this._cdRef = _cdRef;
5037
- this._destroy$ = new Subject();
5038
5244
  }
5039
5245
  ngOnInit() {
5040
5246
  this.sorting.sortingChanged$
@@ -5044,7 +5250,7 @@ class FsStatusComponent {
5044
5250
  });
5045
5251
  }
5046
5252
  ngOnDestroy() {
5047
- this._destroy$.next();
5253
+ this._destroy$.next(null);
5048
5254
  this._destroy$.complete();
5049
5255
  }
5050
5256
  toggleDirection() {
@@ -5063,13 +5269,13 @@ class FsStatusComponent {
5063
5269
  setLimit(limit) {
5064
5270
  this.paging.setLimit(limit);
5065
5271
  }
5272
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsStatusComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
5273
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsStatusComponent, selector: "fs-list-status", inputs: { paging: "paging", sorting: "sorting", rows: "rows", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\r\n <small>\r\n <ng-container *ngIf=\"paging.enabled\">\r\n <ng-container *ngIf=\"paging.records > 0; else emptyResults\">\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">{{ paging.statusLabel }}</a> of {{ paging.records | number:'1.0':'en-US' }} results\r\n </ng-container>\r\n <ng-template #emptyResults>\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">0</a> results\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><ng-container *ngIf=\"(!paging.enabled) && paging.displayed > 0\">\r\n <ng-container *ngIf=\"!scrollable; else scrollable\">\r\n Showing\r\n <span *ngIf=\"paging.displayed === 1\">{{ paging.displayed }} result </span>\r\n <span *ngIf=\"paging.displayed > 1\">{{ paging.displayed | number:'1.0':'en-US' }} results </span>\r\n </ng-container>\r\n\r\n <ng-template #scrollable>\r\n <span *ngIf=\"paging.records === 1\">{{ paging.records }} result </span>\r\n <span *ngIf=\"paging.records > 1\">{{ paging.records | number:'1.0':'en-US' }} results </span>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\r\n\r\n <fs-menu [hidden]=\"!paging.enabled\" #limitsMenu>\r\n <ng-template\r\n ngFor\r\n let-limit\r\n [ngForOf]=\"paging.limits\">\r\n <ng-template fs-menu-item (click)=\"setLimit(limit)\">\r\n {{ limit }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <fs-menu [hidden]=\"!sorting.sortingColumn || paging.displayed === 0\" #orderColumnsMenu>\r\n <!-- Real sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.sortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\r\n {{ column.title }}\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <!-- Fake sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.fakeSortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n {{ column.title }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <ng-template #sortedBy>\r\n <ng-container *ngIf=\"sorting.sortingColumn\">\r\n sorted by\r\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">{{ sorting.sortingColumn.title }}</a>,\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">\r\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\r\n </a>,\r\n </ng-template>\r\n <a class=\"order-toggle\" (click)=\"toggleDirection()\">{{ sorting.sortingColumn.fullNameDirection }}</a><!--\r\n --></ng-container><!--\r\n --></ng-template>\r\n </small> \r\n</div>\r\n", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i2.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "component", type: FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
5066
5274
  }
5067
- FsStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsStatusComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
5068
- FsStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsStatusComponent, selector: "fs-list-status", inputs: { paging: "paging", sorting: "sorting", rows: "rows", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <small>\n <ng-container *ngIf=\"paging.enabled\">\n <ng-container *ngIf=\"paging.records > 0; else emptyResults\">\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">{{ paging.statusLabel }}</a> of {{ paging.records | number:'1.0':'en-US' }} results\n </ng-container>\n <ng-template #emptyResults>\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">0</a> results\n </ng-template>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\n --></ng-container><!--\n\n --><ng-container *ngIf=\"(!paging.enabled) && paging.displayed > 0\">\n <ng-container *ngIf=\"!scrollable; else scrollable\">\n Showing\n <span *ngIf=\"paging.displayed === 1\">{{ paging.displayed }} result </span>\n <span *ngIf=\"paging.displayed > 1\">{{ paging.displayed | number:'1.0':'en-US' }} results </span>\n </ng-container>\n\n <ng-template #scrollable>\n <span *ngIf=\"paging.records === 1\">{{ paging.records }} result </span>\n <span *ngIf=\"paging.records > 1\">{{ paging.records | number:'1.0':'en-US' }} results </span>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\n --></ng-container><!--\n\n --><fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n\n <fs-menu [hidden]=\"!paging.enabled\" #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template fs-menu-item (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n\n <fs-menu [hidden]=\"!sorting.sortingColumn || paging.displayed === 0\" #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">{{ sorting.sortingColumn.title }}</a>,\n </ng-container>\n <ng-template #sortByTemplate>\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>,\n </ng-template>\n <a class=\"order-toggle\" (click)=\"toggleDirection()\">{{ sorting.sortingColumn.fullNameDirection }}</a><!--\n --></ng-container><!--\n --></ng-template>\n </small> \n</div>\n", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i2.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "component", type: FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
5069
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsStatusComponent, decorators: [{
5275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsStatusComponent, decorators: [{
5070
5276
  type: Component,
5071
- args: [{ selector: 'fs-list-status', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<div class=\"status\">\n <small>\n <ng-container *ngIf=\"paging.enabled\">\n <ng-container *ngIf=\"paging.records > 0; else emptyResults\">\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">{{ paging.statusLabel }}</a> of {{ paging.records | number:'1.0':'en-US' }} results\n </ng-container>\n <ng-template #emptyResults>\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">0</a> results\n </ng-template>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\n --></ng-container><!--\n\n --><ng-container *ngIf=\"(!paging.enabled) && paging.displayed > 0\">\n <ng-container *ngIf=\"!scrollable; else scrollable\">\n Showing\n <span *ngIf=\"paging.displayed === 1\">{{ paging.displayed }} result </span>\n <span *ngIf=\"paging.displayed > 1\">{{ paging.displayed | number:'1.0':'en-US' }} results </span>\n </ng-container>\n\n <ng-template #scrollable>\n <span *ngIf=\"paging.records === 1\">{{ paging.records }} result </span>\n <span *ngIf=\"paging.records > 1\">{{ paging.records | number:'1.0':'en-US' }} results </span>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\n --></ng-container><!--\n\n --><fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n\n <fs-menu [hidden]=\"!paging.enabled\" #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template fs-menu-item (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n\n <fs-menu [hidden]=\"!sorting.sortingColumn || paging.displayed === 0\" #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">{{ sorting.sortingColumn.title }}</a>,\n </ng-container>\n <ng-template #sortByTemplate>\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>,\n </ng-template>\n <a class=\"order-toggle\" (click)=\"toggleDirection()\">{{ sorting.sortingColumn.fullNameDirection }}</a><!--\n --></ng-container><!--\n --></ng-template>\n </small> \n</div>\n", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}\n"] }]
5072
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { paging: [{
5277
+ args: [{ selector: 'fs-list-status', changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<div class=\"status\">\r\n <small>\r\n <ng-container *ngIf=\"paging.enabled\">\r\n <ng-container *ngIf=\"paging.records > 0; else emptyResults\">\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">{{ paging.statusLabel }}</a> of {{ paging.records | number:'1.0':'en-US' }} results\r\n </ng-container>\r\n <ng-template #emptyResults>\r\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">0</a> results\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><ng-container *ngIf=\"(!paging.enabled) && paging.displayed > 0\">\r\n <ng-container *ngIf=\"!scrollable; else scrollable\">\r\n Showing\r\n <span *ngIf=\"paging.displayed === 1\">{{ paging.displayed }} result </span>\r\n <span *ngIf=\"paging.displayed > 1\">{{ paging.displayed | number:'1.0':'en-US' }} results </span>\r\n </ng-container>\r\n\r\n <ng-template #scrollable>\r\n <span *ngIf=\"paging.records === 1\">{{ paging.records }} result </span>\r\n <span *ngIf=\"paging.records > 1\">{{ paging.records | number:'1.0':'en-US' }} results </span>\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\r\n --></ng-container><!--\r\n\r\n --><fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\r\n\r\n <fs-menu [hidden]=\"!paging.enabled\" #limitsMenu>\r\n <ng-template\r\n ngFor\r\n let-limit\r\n [ngForOf]=\"paging.limits\">\r\n <ng-template fs-menu-item (click)=\"setLimit(limit)\">\r\n {{ limit }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <fs-menu [hidden]=\"!sorting.sortingColumn || paging.displayed === 0\" #orderColumnsMenu>\r\n <!-- Real sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.sortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\r\n {{ column.title }}\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n\r\n <!-- Fake sorting columns -->\r\n <ng-template\r\n ngFor\r\n let-column\r\n [ngForOf]=\"sorting.fakeSortingColumns\">\r\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\r\n {{ column.title }}\r\n </ng-template>\r\n </ng-template>\r\n </fs-menu>\r\n\r\n <ng-template #sortedBy>\r\n <ng-container *ngIf=\"sorting.sortingColumn\">\r\n sorted by\r\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">{{ sorting.sortingColumn.title }}</a>,\r\n </ng-container>\r\n <ng-template #sortByTemplate>\r\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">\r\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\r\n </a>,\r\n </ng-template>\r\n <a class=\"order-toggle\" (click)=\"toggleDirection()\">{{ sorting.sortingColumn.fullNameDirection }}</a><!--\r\n --></ng-container><!--\r\n --></ng-template>\r\n </small> \r\n</div>\r\n", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}\n"] }]
5278
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { paging: [{
5073
5279
  type: Input
5074
5280
  }], sorting: [{
5075
5281
  type: Input
@@ -5086,12 +5292,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
5086
5292
  }] } });
5087
5293
 
5088
5294
  class FsListLoaderComponent {
5089
- constructor() {
5090
- this.placeholderWidths = [[], [], []];
5091
- this.widths = [];
5092
- this.cols = [];
5093
- this.rows = [];
5094
- }
5295
+ placeholderWidths = [[], [], []];
5296
+ widths = [];
5297
+ columns;
5298
+ loaderLines;
5299
+ cols = [];
5300
+ rows = [];
5095
5301
  ngOnInit() {
5096
5302
  this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;
5097
5303
  const length = this.cols.length;
@@ -5109,12 +5315,12 @@ class FsListLoaderComponent {
5109
5315
  this.rows = new Array(this.loaderLines);
5110
5316
  }
5111
5317
  }
5318
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5319
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsListLoaderComponent, selector: "fs-list-loader", inputs: { columns: "columns", loaderLines: "loaderLines" }, usesOnChanges: true, ngImport: i0, template: "<table>\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let col of cols; let column = index\" [width]=\"widths[column] + '%'\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of rows; let index=index\">\r\n <td *ngFor=\"let col of cols; let column = index\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: ["table{width:100%;border-spacing:0}.fs-skeleton-placeholder{opacity:.5}:host ::ng-deep tbody tr:hover td{background:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5112
5320
  }
5113
- FsListLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5114
- FsListLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsListLoaderComponent, selector: "fs-list-loader", inputs: { columns: "columns", loaderLines: "loaderLines" }, usesOnChanges: true, ngImport: i0, template: "<table>\n <thead>\n <tr>\n <th *ngFor=\"let col of cols; let column = index\" [width]=\"widths[column] + '%'\">\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows; let index=index\">\n <td *ngFor=\"let col of cols; let column = index\">\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: ["table{width:100%;border-spacing:0}.fs-skeleton-placeholder{opacity:.5}:host ::ng-deep tbody tr:hover td{background:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListLoaderComponent, decorators: [{
5321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListLoaderComponent, decorators: [{
5116
5322
  type: Component,
5117
- args: [{ selector: 'fs-list-loader', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table>\n <thead>\n <tr>\n <th *ngFor=\"let col of cols; let column = index\" [width]=\"widths[column] + '%'\">\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of rows; let index=index\">\n <td *ngFor=\"let col of cols; let column = index\">\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\n </td>\n </tr>\n </tbody>\n</table>\n", styles: ["table{width:100%;border-spacing:0}.fs-skeleton-placeholder{opacity:.5}:host ::ng-deep tbody tr:hover td{background:transparent}\n"] }]
5323
+ args: [{ selector: 'fs-list-loader', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table>\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let col of cols; let column = index\" [width]=\"widths[column] + '%'\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of rows; let index=index\">\r\n <td *ngFor=\"let col of cols; let column = index\">\r\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: ["table{width:100%;border-spacing:0}.fs-skeleton-placeholder{opacity:.5}:host ::ng-deep tbody tr:hover td{background:transparent}\n"] }]
5118
5324
  }], propDecorators: { columns: [{
5119
5325
  type: Input
5120
5326
  }], loaderLines: [{
@@ -5122,9 +5328,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
5122
5328
  }] } });
5123
5329
 
5124
5330
  class FsPaginationComponent {
5331
+ _cdRef;
5332
+ pagination;
5333
+ rows;
5334
+ _destroy$ = new Subject();
5125
5335
  constructor(_cdRef) {
5126
5336
  this._cdRef = _cdRef;
5127
- this._destroy$ = new Subject();
5128
5337
  }
5129
5338
  ngOnInit() {
5130
5339
  merge(this.pagination.pageChanged$, this.pagination.pages$)
@@ -5134,45 +5343,77 @@ class FsPaginationComponent {
5134
5343
  });
5135
5344
  }
5136
5345
  ngOnDestroy() {
5137
- this._destroy$.next();
5346
+ this._destroy$.next(null);
5138
5347
  this._destroy$.complete();
5139
5348
  }
5349
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsPaginationComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
5350
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: { pagination: "pagination", rows: "rows" }, ngImport: i0, template: "<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <ng-container *ngIf=\"pagination?.pages\">\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"first\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goFirst()\">\n <i class=\"material-icons\">first_page</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"previous\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goPrev()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </a>\n\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"next\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goNext()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"last\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goLast()\">\n <i class=\"material-icons\">last_page</i>\n </a>\n </ng-container>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button \n mat-button\n type=\"button\"\n [class]=\"pagination.loadMoreButtonClass\"\n [color]=\"pagination.loadMoreButtonColor\"\n (click)=\"pagination.goNext()\">\n {{ pagination.loadMoreLabel }}\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none;width:100%}a{text-align:center;color:#000000de;text-decoration:none;font-size:15px;cursor:pointer;display:flex}a:not(.page){padding:10px}a.disabled{pointer-events:none;cursor:default;color:#d8d8d8}.number{font-size:90%}.fs-list-load-more button{width:100%;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i3$2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i4$1.FsFormatNumberPipe, name: "fsFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5140
5351
  }
5141
- FsPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsPaginationComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
5142
- FsPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: { pagination: "pagination", rows: "rows" }, ngImport: i0, template: "<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <ng-container *ngIf=\"pagination?.pages\">\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"first\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goFirst()\">\n <i class=\"material-icons\">first_page</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"previous\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goPrev()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </a>\n\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"next\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goNext()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"last\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goLast()\">\n <i class=\"material-icons\">last_page</i>\n </a>\n </ng-container>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button \n mat-button\n type=\"button\"\n [class]=\"pagination.loadMoreButtonClass\"\n [color]=\"pagination.loadMoreButtonColor\"\n (click)=\"pagination.goNext()\">\n {{ pagination.loadMoreLabel }}\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none;width:100%}a{text-align:center;color:#000000de;text-decoration:none;font-size:15px;cursor:pointer;display:flex}a:not(.page){padding:10px}a.disabled{pointer-events:none;cursor:default;color:#d8d8d8}.number{font-size:90%}.fs-list-load-more button{width:100%;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i3$2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i4$1.FsFormatNumberPipe, name: "fsFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsPaginationComponent, decorators: [{
5352
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsPaginationComponent, decorators: [{
5144
5353
  type: Component,
5145
5354
  args: [{ selector: 'fs-list-pagination', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <ng-container *ngIf=\"pagination?.pages\">\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"first\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goFirst()\">\n <i class=\"material-icons\">first_page</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"previous\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goPrev()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </a>\n\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"next\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goNext()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"last\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goLast()\">\n <i class=\"material-icons\">last_page</i>\n </a>\n </ng-container>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button \n mat-button\n type=\"button\"\n [class]=\"pagination.loadMoreButtonClass\"\n [color]=\"pagination.loadMoreButtonColor\"\n (click)=\"pagination.goNext()\">\n {{ pagination.loadMoreLabel }}\n </button>\n </div>\n</ng-template>\n", styles: [":host{display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none;width:100%}a{text-align:center;color:#000000de;text-decoration:none;font-size:15px;cursor:pointer;display:flex}a:not(.page){padding:10px}a.disabled{pointer-events:none;cursor:default;color:#d8d8d8}.number{font-size:90%}.fs-list-load-more button{width:100%;margin-top:10px}\n"] }]
5146
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pagination: [{
5355
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { pagination: [{
5147
5356
  type: Input
5148
5357
  }], rows: [{
5149
5358
  type: Input
5150
5359
  }] } });
5151
5360
 
5152
5361
  class FsListContentInitDirective {
5362
+ contentInitCallback;
5153
5363
  constructor() { }
5154
5364
  ngAfterViewInit() {
5155
5365
  if (this.contentInitCallback) {
5156
5366
  this.contentInitCallback();
5157
5367
  }
5158
5368
  }
5369
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListContentInitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5370
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: { contentInitCallback: ["fsListContentInit", "contentInitCallback"] }, ngImport: i0 });
5159
5371
  }
5160
- FsListContentInitDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListContentInitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5161
- FsListContentInitDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: { contentInitCallback: ["fsListContentInit", "contentInitCallback"] }, ngImport: i0 });
5162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListContentInitDirective, decorators: [{
5372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListContentInitDirective, decorators: [{
5163
5373
  type: Directive,
5164
5374
  args: [{
5165
5375
  selector: '[fsListContentInit]'
5166
5376
  }]
5167
- }], ctorParameters: function () { return []; }, propDecorators: { contentInitCallback: [{
5377
+ }], ctorParameters: () => [], propDecorators: { contentInitCallback: [{
5168
5378
  type: Input,
5169
5379
  args: ['fsListContentInit']
5170
5380
  }] } });
5171
5381
 
5172
5382
  class FsListComponent {
5383
+ reorderController;
5384
+ _defaultOptions;
5385
+ _dialogRef;
5386
+ _drawerRef;
5387
+ _el;
5388
+ _selectionDialog;
5389
+ _dialog;
5390
+ _cdRef;
5391
+ _groupExpandNotifier;
5392
+ _router;
5393
+ _route;
5394
+ _persistance;
5395
+ _location;
5396
+ classFsList = true;
5397
+ rowHoverHighlight;
5173
5398
  set config(config) {
5174
5399
  this._initWithConfig(config);
5175
5400
  }
5401
+ loaderLines = 3;
5402
+ filtersReady = new EventEmitter();
5403
+ headingTemplate;
5404
+ headingContainerTemplate;
5405
+ subheadingTemplate;
5406
+ body;
5407
+ list;
5408
+ keywordVisible = true;
5409
+ // Event will fired if action remove: true will clicked
5410
+ rowRemoved = new EventEmitter();
5411
+ firstLoad = true;
5412
+ _listColumnDirectives;
5413
+ _filterRef;
5414
+ _filterParamsReady = false;
5415
+ _inDialog;
5416
+ _destroy = new Subject();
5176
5417
  set filterReference(component) {
5177
5418
  this._filterRef = component;
5178
5419
  this.list.actions.setFilterRef(component);
@@ -5207,16 +5448,7 @@ class FsListComponent {
5207
5448
  this._route = _route;
5208
5449
  this._persistance = _persistance;
5209
5450
  this._location = _location;
5210
- this.classFsList = true;
5211
- this.loaderLines = 3;
5212
- this.filtersReady = new EventEmitter();
5213
- this.keywordVisible = true;
5214
- // Event will fired if action remove: true will clicked
5215
- this.rowRemoved = new EventEmitter();
5216
- this.firstLoad = true;
5217
- this._filterParamsReady = false;
5218
5451
  this._inDialog = !!this._dialogRef || !!this._drawerRef;
5219
- this._destroy = new Subject();
5220
5452
  }
5221
5453
  /**
5222
5454
  * Return reference for filter
@@ -5265,7 +5497,7 @@ class FsListComponent {
5265
5497
  if (this.list) {
5266
5498
  this.list.destroy();
5267
5499
  }
5268
- this._destroy.next();
5500
+ this._destroy.next(null);
5269
5501
  this._destroy.complete();
5270
5502
  }
5271
5503
  nextPage() {
@@ -5329,7 +5561,7 @@ class FsListComponent {
5329
5561
  }
5330
5562
  }
5331
5563
  filterReady() {
5332
- this.list.filtersReady$.next();
5564
+ this.list.filtersReady$.next(null);
5333
5565
  this._filterParamsReady = true;
5334
5566
  this._emitFiltersReadyEvent();
5335
5567
  }
@@ -5455,21 +5687,21 @@ class FsListComponent {
5455
5687
  const namespace = getNormalizedPath(this._location);
5456
5688
  this._persistance.setConfig(persistConfig, namespace, this._inDialog);
5457
5689
  }
5690
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListComponent, deps: [{ token: ReorderController }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i1$2.MatDialogRef, optional: true }, { token: i3$3.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i4$2.SelectionDialog }, { token: i1$2.MatDialog }, { token: i0.ChangeDetectorRef }, { token: GroupExpandNotifierService }, { token: i6.Router }, { token: i6.ActivatedRoute }, { token: PersistanceController }, { token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
5691
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsListComponent, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList", "class.fs-list-row-highlight": "this.rowHoverHighlight" } }, providers: [
5692
+ GroupExpandNotifierService,
5693
+ PersistanceController,
5694
+ ReorderController,
5695
+ ], queries: [{ propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "body", first: true, predicate: FsBodyComponent, descendants: true }, { propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table \n class=\"fs-list-table\" \n role=\"grid\" \n [fsListContentInit]=\"list.afterContentInit\" \n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .fs-list-table.style-line tbody .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:first-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:first-child .fs-list-col{border-top:2px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:last-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:last-child .fs-list-col{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:gray;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { kind: "directive", type: i2$1.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { kind: "component", type: FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "firstLoad"] }, { kind: "component", type: FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { kind: "component", type: FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "component", type: FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }, { kind: "directive", type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { kind: "directive", type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5458
5696
  }
5459
- FsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListComponent, deps: [{ token: ReorderController }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i1$2.MatDialogRef, optional: true }, { token: i3$3.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i4$2.SelectionDialog }, { token: i1$2.MatDialog }, { token: i0.ChangeDetectorRef }, { token: GroupExpandNotifierService }, { token: i6.Router }, { token: i6.ActivatedRoute }, { token: PersistanceController }, { token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
5460
- FsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsListComponent, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList", "class.fs-list-row-highlight": "this.rowHoverHighlight" } }, providers: [
5461
- GroupExpandNotifierService,
5462
- PersistanceController,
5463
- ReorderController,
5464
- ], queries: [{ propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "body", first: true, predicate: FsBodyComponent, descendants: true }, { propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table \n class=\"fs-list-table\" \n role=\"grid\" \n [fsListContentInit]=\"list.afterContentInit\" \n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .fs-list-table.style-line tbody .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:first-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:first-child .fs-list-col{border-top:2px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:last-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:last-child .fs-list-col{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:grey;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { kind: "directive", type: i2$1.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { kind: "component", type: FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "firstLoad"] }, { kind: "component", type: FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { kind: "component", type: FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "component", type: FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }, { kind: "directive", type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { kind: "directive", type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5465
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListComponent, decorators: [{
5697
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListComponent, decorators: [{
5466
5698
  type: Component,
5467
5699
  args: [{ selector: 'fs-list', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
5468
5700
  GroupExpandNotifierService,
5469
5701
  PersistanceController,
5470
5702
  ReorderController,
5471
- ], template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table \n class=\"fs-list-table\" \n role=\"grid\" \n [fsListContentInit]=\"list.afterContentInit\" \n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .fs-list-table.style-line tbody .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:first-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:first-child .fs-list-col{border-top:2px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:last-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:last-child .fs-list-col{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:grey;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"] }]
5472
- }], ctorParameters: function () { return [{ type: ReorderController }, { type: undefined, decorators: [{
5703
+ ], template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table \n class=\"fs-list-table\" \n role=\"grid\" \n [fsListContentInit]=\"list.afterContentInit\" \n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .fs-list-table.style-line tbody .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:first-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:first-child .fs-list-col{border-top:2px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:last-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody .fs-list-row:last-child .fs-list-col{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:gray;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"] }]
5704
+ }], ctorParameters: () => [{ type: ReorderController }, { type: undefined, decorators: [{
5473
5705
  type: Optional
5474
5706
  }, {
5475
5707
  type: Inject,
@@ -5478,7 +5710,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
5478
5710
  type: Optional
5479
5711
  }] }, { type: i3$3.DrawerRef, decorators: [{
5480
5712
  type: Optional
5481
- }] }, { type: i0.ElementRef }, { type: i4$2.SelectionDialog }, { type: i1$2.MatDialog }, { type: i0.ChangeDetectorRef }, { type: GroupExpandNotifierService }, { type: i6.Router }, { type: i6.ActivatedRoute }, { type: PersistanceController }, { type: i1.Location }]; }, propDecorators: { classFsList: [{
5713
+ }] }, { type: i0.ElementRef }, { type: i4$2.SelectionDialog }, { type: i1$2.MatDialog }, { type: i0.ChangeDetectorRef }, { type: GroupExpandNotifierService }, { type: i6.Router }, { type: i6.ActivatedRoute }, { type: PersistanceController }, { type: i1.Location }], propDecorators: { classFsList: [{
5482
5714
  type: HostBinding,
5483
5715
  args: ['class.fs-list']
5484
5716
  }], rowHoverHighlight: [{
@@ -5515,9 +5747,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
5515
5747
  }] } });
5516
5748
 
5517
5749
  class FsListManageSavedFiltersComponent {
5750
+ _externalParams;
5751
+ config;
5752
+ _reorderReady = true;
5518
5753
  constructor(_externalParams) {
5519
5754
  this._externalParams = _externalParams;
5520
- this._reorderReady = true;
5521
5755
  this._initList();
5522
5756
  }
5523
5757
  get savedFiltersController() {
@@ -5571,19 +5805,19 @@ class FsListManageSavedFiltersComponent {
5571
5805
  },
5572
5806
  };
5573
5807
  }
5808
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListManageSavedFiltersComponent, deps: [{ token: i2$1.ExternalParamsController }], target: i0.ɵɵFactoryTarget.Component });
5809
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FsListManageSavedFiltersComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\r\n Manage Saved Filters\r\n</h1>\r\n<div mat-dialog-content>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"name\" title=\"Name\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ row.name }}\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button\r\n [mat-dialog-close]=\"null\"\r\n type=\"button\"\r\n color=\"primary\">\r\n Done\r\n </button>\r\n</div>\r\n", dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5574
5810
  }
5575
- FsListManageSavedFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListManageSavedFiltersComponent, deps: [{ token: i2$1.ExternalParamsController }], target: i0.ɵɵFactoryTarget.Component });
5576
- FsListManageSavedFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FsListManageSavedFiltersComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\n Manage Saved Filters\n</h1>\n<div mat-dialog-content>\n <fs-list [config]=\"config\">\n <fs-list-column name=\"name\" title=\"Name\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ row.name }}\n </ng-template>\n </fs-list-column>\n </fs-list>\n</div>\n<div mat-dialog-actions>\n <button mat-button\n [mat-dialog-close]=\"null\"\n type=\"button\"\n color=\"primary\">\n Done\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5577
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListManageSavedFiltersComponent, decorators: [{
5811
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListManageSavedFiltersComponent, decorators: [{
5578
5812
  type: Component,
5579
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 mat-dialog-title>\n Manage Saved Filters\n</h1>\n<div mat-dialog-content>\n <fs-list [config]=\"config\">\n <fs-list-column name=\"name\" title=\"Name\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ row.name }}\n </ng-template>\n </fs-list-column>\n </fs-list>\n</div>\n<div mat-dialog-actions>\n <button mat-button\n [mat-dialog-close]=\"null\"\n type=\"button\"\n color=\"primary\">\n Done\n </button>\n</div>\n" }]
5580
- }], ctorParameters: function () { return [{ type: i2$1.ExternalParamsController }]; } });
5813
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 mat-dialog-title>\r\n Manage Saved Filters\r\n</h1>\r\n<div mat-dialog-content>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"name\" title=\"Name\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ row.name }}\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button\r\n [mat-dialog-close]=\"null\"\r\n type=\"button\"\r\n color=\"primary\">\r\n Done\r\n </button>\r\n</div>\r\n" }]
5814
+ }], ctorParameters: () => [{ type: i2$1.ExternalParamsController }] });
5581
5815
 
5582
5816
  class FsListContentDirective {
5817
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5818
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FsListContentDirective, selector: "[fs-list-content]", ngImport: i0 });
5583
5819
  }
5584
- FsListContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5585
- FsListContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListContentDirective, selector: "[fs-list-content]", ngImport: i0 });
5586
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListContentDirective, decorators: [{
5820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListContentDirective, decorators: [{
5587
5821
  type: Directive,
5588
5822
  args: [{
5589
5823
  selector: '[fs-list-content]',
@@ -5604,95 +5838,95 @@ class FsListModule {
5604
5838
  ],
5605
5839
  };
5606
5840
  }
5841
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5842
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FsListModule, declarations: [
5843
+ // Components
5844
+ FsListComponent,
5845
+ FsRowComponent,
5846
+ FsRowActionsComponent,
5847
+ FsRowInlineActionComponent,
5848
+ FsRowMenuActionComponent,
5849
+ FsCellComponent,
5850
+ FsFooterRowComponent,
5851
+ FsFooterCellComponent,
5852
+ FsStatusComponent,
5853
+ FsListLoaderComponent,
5854
+ FsListSavedFiltersComponent,
5855
+ FsListManageSavedFiltersComponent,
5856
+ // Internal Components
5857
+ FsHeadComponent,
5858
+ FsHeadCellComponent,
5859
+ FsBodyComponent,
5860
+ FsFooterComponent,
5861
+ FsPaginationComponent,
5862
+ // Directives
5863
+ FsListColumnDirective,
5864
+ FsListCellDirective,
5865
+ FsListHeaderDirective,
5866
+ FsListFooterDirective,
5867
+ FsListGroupHeaderDirective,
5868
+ FsListGroupFooterDirective,
5869
+ FsListGroupExpandTriggerDirective,
5870
+ FsListDraggableListDirective,
5871
+ FsListDraggableRowDirective,
5872
+ FsListEmptyStateDirective,
5873
+ FsListContentDirective,
5874
+ FsListContentInitDirective,
5875
+ FsListSubheadingDirective,
5876
+ FsListHeadingDirective,
5877
+ FsListHeadingContainerDirective,
5878
+ // Dialog
5879
+ CustomizeColsDialogComponent,
5880
+ //Pipes
5881
+ ActionLabelPipe], imports: [CommonModule,
5882
+ RouterModule,
5883
+ MatButtonModule,
5884
+ MatIconModule,
5885
+ MatMenuModule,
5886
+ MatProgressSpinnerModule,
5887
+ MatCheckboxModule,
5888
+ MatRippleModule,
5889
+ FsFilterModule,
5890
+ FsMenuModule,
5891
+ FsScrollModule,
5892
+ FsPromptModule,
5893
+ MatDialogModule,
5894
+ MatTooltipModule,
5895
+ FsFileModule,
5896
+ FsCommonModule], exports: [FsListComponent,
5897
+ FsRowComponent,
5898
+ FsCellComponent,
5899
+ FsListLoaderComponent,
5900
+ FsListColumnDirective,
5901
+ FsListCellDirective,
5902
+ FsListHeaderDirective,
5903
+ FsListFooterDirective,
5904
+ FsListGroupHeaderDirective,
5905
+ FsListGroupFooterDirective,
5906
+ FsListGroupExpandTriggerDirective,
5907
+ FsListEmptyStateDirective,
5908
+ FsListContentDirective,
5909
+ FsListSubheadingDirective,
5910
+ FsListHeadingDirective,
5911
+ FsListHeadingContainerDirective] });
5912
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListModule, imports: [CommonModule,
5913
+ RouterModule,
5914
+ MatButtonModule,
5915
+ MatIconModule,
5916
+ MatMenuModule,
5917
+ MatProgressSpinnerModule,
5918
+ MatCheckboxModule,
5919
+ MatRippleModule,
5920
+ FsFilterModule,
5921
+ FsMenuModule,
5922
+ FsScrollModule,
5923
+ FsPromptModule,
5924
+ MatDialogModule,
5925
+ MatTooltipModule,
5926
+ FsFileModule,
5927
+ FsCommonModule] });
5607
5928
  }
5608
- FsListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5609
- FsListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FsListModule, declarations: [
5610
- // Components
5611
- FsListComponent,
5612
- FsRowComponent,
5613
- FsRowActionsComponent,
5614
- FsRowInlineActionComponent,
5615
- FsRowMenuActionComponent,
5616
- FsCellComponent,
5617
- FsFooterRowComponent,
5618
- FsFooterCellComponent,
5619
- FsStatusComponent,
5620
- FsListLoaderComponent,
5621
- FsListSavedFiltersComponent,
5622
- FsListManageSavedFiltersComponent,
5623
- // Internal Components
5624
- FsHeadComponent,
5625
- FsHeadCellComponent,
5626
- FsBodyComponent,
5627
- FsFooterComponent,
5628
- FsPaginationComponent,
5629
- // Directives
5630
- FsListColumnDirective,
5631
- FsListCellDirective,
5632
- FsListHeaderDirective,
5633
- FsListFooterDirective,
5634
- FsListGroupHeaderDirective,
5635
- FsListGroupFooterDirective,
5636
- FsListGroupExpandTriggerDirective,
5637
- FsListDraggableListDirective,
5638
- FsListDraggableRowDirective,
5639
- FsListEmptyStateDirective,
5640
- FsListContentDirective,
5641
- FsListContentInitDirective,
5642
- FsListSubheadingDirective,
5643
- FsListHeadingDirective,
5644
- FsListHeadingContainerDirective,
5645
- // Dialog
5646
- CustomizeColsDialogComponent,
5647
- //Pipes
5648
- ActionLabelPipe], imports: [CommonModule,
5649
- RouterModule,
5650
- MatButtonModule,
5651
- MatIconModule,
5652
- MatMenuModule,
5653
- MatProgressSpinnerModule,
5654
- MatCheckboxModule,
5655
- MatRippleModule,
5656
- FsFilterModule,
5657
- FsMenuModule,
5658
- FsScrollModule,
5659
- FsPromptModule,
5660
- MatDialogModule,
5661
- MatTooltipModule,
5662
- FsFileModule,
5663
- FsCommonModule], exports: [FsListComponent,
5664
- FsRowComponent,
5665
- FsCellComponent,
5666
- FsListLoaderComponent,
5667
- FsListColumnDirective,
5668
- FsListCellDirective,
5669
- FsListHeaderDirective,
5670
- FsListFooterDirective,
5671
- FsListGroupHeaderDirective,
5672
- FsListGroupFooterDirective,
5673
- FsListGroupExpandTriggerDirective,
5674
- FsListEmptyStateDirective,
5675
- FsListContentDirective,
5676
- FsListSubheadingDirective,
5677
- FsListHeadingDirective,
5678
- FsListHeadingContainerDirective] });
5679
- FsListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListModule, imports: [CommonModule,
5680
- RouterModule,
5681
- MatButtonModule,
5682
- MatIconModule,
5683
- MatMenuModule,
5684
- MatProgressSpinnerModule,
5685
- MatCheckboxModule,
5686
- MatRippleModule,
5687
- FsFilterModule,
5688
- FsMenuModule,
5689
- FsScrollModule,
5690
- FsPromptModule,
5691
- MatDialogModule,
5692
- MatTooltipModule,
5693
- FsFileModule,
5694
- FsCommonModule] });
5695
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListModule, decorators: [{
5929
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FsListModule, decorators: [{
5696
5930
  type: NgModule,
5697
5931
  args: [{
5698
5932
  imports: [