@firestitch/list 9.12.4 → 12.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/app/classes/list-controller.d.ts +2 -1
  2. package/app/classes/persistance-controller.d.ts +3 -0
  3. package/app/classes/reorder-controller.d.ts +3 -0
  4. package/app/components/body/body.component.d.ts +3 -0
  5. package/app/components/body/row/actions/actions.component.d.ts +3 -0
  6. package/app/components/body/row/cell/cell.component.d.ts +3 -0
  7. package/app/components/body/row/inline-action/inline-action.component.d.ts +3 -0
  8. package/app/components/body/row/menu-action/menu-action.component.d.ts +3 -0
  9. package/app/components/body/row/row.component.d.ts +3 -0
  10. package/app/components/customize-cols/customize-cols.component.d.ts +3 -0
  11. package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +3 -0
  12. package/app/components/footer/footer-row/footer-row.component.d.ts +3 -0
  13. package/app/components/footer/footer.component.d.ts +3 -0
  14. package/app/components/head/head-cell/head-cell.component.d.ts +3 -0
  15. package/app/components/head/head.component.d.ts +3 -0
  16. package/app/components/list/list.component.d.ts +3 -0
  17. package/app/components/loader/loader.component.d.ts +3 -0
  18. package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +3 -0
  19. package/app/components/pagination/pagination.component.d.ts +3 -0
  20. package/app/components/saved-filters/saved-filters.component.d.ts +3 -0
  21. package/app/components/status/status.component.d.ts +3 -0
  22. package/app/directives/cell/cell.directive.d.ts +3 -0
  23. package/app/directives/column/column.directive.d.ts +3 -0
  24. package/app/directives/content/content.directive.d.ts +5 -0
  25. package/app/directives/content-init/content-init.directive.d.ts +9 -0
  26. package/app/directives/draggable-list/draggable-list.directive.d.ts +3 -0
  27. package/app/directives/draggable-row/draggable-row.directive.d.ts +3 -0
  28. package/app/directives/empty-state/empty-state.directive.d.ts +3 -0
  29. package/app/directives/footer/footer.directive.d.ts +3 -0
  30. package/app/directives/group-cell/group-cell.directive.d.ts +3 -0
  31. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +3 -0
  32. package/app/directives/header/header.directive.d.ts +3 -0
  33. package/app/fs-list.module.d.ts +49 -0
  34. package/app/interfaces/listconfig.interface.d.ts +2 -0
  35. package/app/services/group-expand-notifier.service.d.ts +3 -0
  36. package/bundles/firestitch-list.umd.js +2119 -2074
  37. package/bundles/firestitch-list.umd.js.map +1 -1
  38. package/esm2015/app/classes/actions-controller.js +1 -1
  39. package/esm2015/app/classes/columns-controller.js +1 -1
  40. package/esm2015/app/classes/data-controller.js +2 -2
  41. package/esm2015/app/classes/external-params-controller.js +5 -7
  42. package/esm2015/app/classes/index.js +1 -1
  43. package/esm2015/app/classes/list-controller.js +9 -2
  44. package/esm2015/app/classes/pagination-controller.js +2 -2
  45. package/esm2015/app/classes/persistance-controller.js +11 -14
  46. package/esm2015/app/classes/reorder-controller.js +13 -13
  47. package/esm2015/app/classes/selection-controller.js +7 -6
  48. package/esm2015/app/classes/sorting-controller.js +1 -1
  49. package/esm2015/app/components/body/body.component.js +48 -75
  50. package/esm2015/app/components/body/row/actions/actions.component.js +37 -48
  51. package/esm2015/app/components/body/row/cell/cell.component.js +27 -33
  52. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +27 -28
  53. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +27 -32
  54. package/esm2015/app/components/body/row/row.component.js +54 -84
  55. package/esm2015/app/components/customize-cols/customize-cols.component.js +23 -18
  56. package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +15 -13
  57. package/esm2015/app/components/footer/footer-row/footer-row.component.js +20 -28
  58. package/esm2015/app/components/footer/footer.component.js +21 -25
  59. package/esm2015/app/components/head/head-cell/head-cell.component.js +17 -19
  60. package/esm2015/app/components/head/head.component.js +31 -39
  61. package/esm2015/app/components/list/list.component.js +76 -83
  62. package/esm2015/app/components/loader/loader.component.js +22 -21
  63. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +19 -15
  64. package/esm2015/app/components/pagination/pagination.component.js +26 -26
  65. package/esm2015/app/components/saved-filters/saved-filters.component.js +20 -23
  66. package/esm2015/app/components/status/status.component.js +38 -41
  67. package/esm2015/app/directives/cell/cell.directive.js +17 -20
  68. package/esm2015/app/directives/column/column.directive.js +60 -86
  69. package/esm2015/app/directives/content/content.directive.js +13 -0
  70. package/esm2015/app/directives/content-init/content-init.directive.js +22 -0
  71. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +16 -24
  72. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +22 -30
  73. package/esm2015/app/directives/empty-state/empty-state.directive.js +12 -10
  74. package/esm2015/app/directives/footer/footer.directive.js +17 -20
  75. package/esm2015/app/directives/group-cell/group-cell.directive.js +12 -10
  76. package/esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js +16 -22
  77. package/esm2015/app/directives/header/header.directive.js +17 -20
  78. package/esm2015/app/enums/button-type.enum.js +1 -1
  79. package/esm2015/app/enums/page-change-type.enum.js +1 -1
  80. package/esm2015/app/enums/pagination-strategy.enum.js +1 -1
  81. package/esm2015/app/enums/row-type.enum.js +1 -1
  82. package/esm2015/app/enums/state.enum.js +1 -1
  83. package/esm2015/app/fs-list.module.js +143 -64
  84. package/esm2015/app/fs-list.providers.js +1 -1
  85. package/esm2015/app/interfaces/cellconfig.interface.js +2 -1
  86. package/esm2015/app/interfaces/draggable-list.interface.js +2 -1
  87. package/esm2015/app/interfaces/external-params.interface.js +2 -1
  88. package/esm2015/app/interfaces/index.js +4 -1
  89. package/esm2015/app/interfaces/listconfig.interface.js +2 -1
  90. package/esm2015/app/interfaces/pagination.interface.js +2 -1
  91. package/esm2015/app/models/column.model.js +1 -1
  92. package/esm2015/app/models/row/base-row.js +1 -1
  93. package/esm2015/app/models/row/child-row.js +1 -1
  94. package/esm2015/app/models/row/group-row.js +1 -1
  95. package/esm2015/app/models/row/simple-row.js +1 -1
  96. package/esm2015/app/models/row-action.model.js +1 -1
  97. package/esm2015/app/models/row.js +1 -1
  98. package/esm2015/app/models/styleConfig.model.js +1 -1
  99. package/esm2015/app/services/group-expand-notifier.service.js +9 -8
  100. package/esm2015/firestitch-list.js +1 -15
  101. package/esm2015/public_api.js +5 -1
  102. package/fesm2015/firestitch-list.js +1372 -1460
  103. package/fesm2015/firestitch-list.js.map +1 -1
  104. package/firestitch-list.d.ts +1 -15
  105. package/package.json +5 -8
  106. package/public_api.d.ts +4 -0
  107. package/bundles/firestitch-list.umd.min.js +0 -16
  108. package/bundles/firestitch-list.umd.min.js.map +0 -1
  109. package/esm5/app/classes/actions-controller.js +0 -71
  110. package/esm5/app/classes/columns-controller.js +0 -236
  111. package/esm5/app/classes/data-controller.js +0 -374
  112. package/esm5/app/classes/external-params-controller.js +0 -185
  113. package/esm5/app/classes/index.js +0 -3
  114. package/esm5/app/classes/list-controller.js +0 -781
  115. package/esm5/app/classes/pagination-controller.js +0 -570
  116. package/esm5/app/classes/persistance-controller.js +0 -25
  117. package/esm5/app/classes/reorder-controller.js +0 -204
  118. package/esm5/app/classes/selection-controller.js +0 -465
  119. package/esm5/app/classes/sorting-controller.js +0 -204
  120. package/esm5/app/components/body/body.component.js +0 -104
  121. package/esm5/app/components/body/row/actions/actions.component.js +0 -116
  122. package/esm5/app/components/body/row/cell/cell.component.js +0 -95
  123. package/esm5/app/components/body/row/inline-action/inline-action.component.js +0 -43
  124. package/esm5/app/components/body/row/menu-action/menu-action.component.js +0 -38
  125. package/esm5/app/components/body/row/row.component.js +0 -295
  126. package/esm5/app/components/customize-cols/customize-cols.component.js +0 -69
  127. package/esm5/app/components/footer/footer-row/footer-cell/footer-cell.component.js +0 -20
  128. package/esm5/app/components/footer/footer-row/footer-row.component.js +0 -38
  129. package/esm5/app/components/footer/footer.component.js +0 -31
  130. package/esm5/app/components/head/head-cell/head-cell.component.js +0 -38
  131. package/esm5/app/components/head/head.component.js +0 -106
  132. package/esm5/app/components/list/list.component.js +0 -403
  133. package/esm5/app/components/loader/loader.component.js +0 -47
  134. package/esm5/app/components/manage-saved-filters/manage-saved-filters.component.js +0 -81
  135. package/esm5/app/components/pagination/pagination.component.js +0 -46
  136. package/esm5/app/components/saved-filters/saved-filters.component.js +0 -41
  137. package/esm5/app/components/status/status.component.js +0 -79
  138. package/esm5/app/directives/cell/cell.directive.js +0 -24
  139. package/esm5/app/directives/column/column.directive.js +0 -98
  140. package/esm5/app/directives/draggable-list/draggable-list.directive.js +0 -281
  141. package/esm5/app/directives/draggable-row/draggable-row.directive.js +0 -83
  142. package/esm5/app/directives/empty-state/empty-state.directive.js +0 -14
  143. package/esm5/app/directives/footer/footer.directive.js +0 -24
  144. package/esm5/app/directives/group-cell/group-cell.directive.js +0 -17
  145. package/esm5/app/directives/group-expand-trigger/group-expand-trigger.directive.js +0 -33
  146. package/esm5/app/directives/header/header.directive.js +0 -24
  147. package/esm5/app/enums/button-type.enum.js +0 -9
  148. package/esm5/app/enums/page-change-type.enum.js +0 -6
  149. package/esm5/app/enums/pagination-strategy.enum.js +0 -7
  150. package/esm5/app/enums/row-type.enum.js +0 -7
  151. package/esm5/app/enums/state.enum.js +0 -11
  152. package/esm5/app/fs-list.module.js +0 -149
  153. package/esm5/app/fs-list.providers.js +0 -4
  154. package/esm5/app/interfaces/cellconfig.interface.js +0 -1
  155. package/esm5/app/interfaces/draggable-list.interface.js +0 -1
  156. package/esm5/app/interfaces/external-params.interface.js +0 -1
  157. package/esm5/app/interfaces/index.js +0 -1
  158. package/esm5/app/interfaces/listconfig.interface.js +0 -1
  159. package/esm5/app/interfaces/pagination.interface.js +0 -1
  160. package/esm5/app/models/column.model.js +0 -204
  161. package/esm5/app/models/row/base-row.js +0 -35
  162. package/esm5/app/models/row/child-row.js +0 -43
  163. package/esm5/app/models/row/group-row.js +0 -61
  164. package/esm5/app/models/row/simple-row.js +0 -15
  165. package/esm5/app/models/row-action.model.js +0 -153
  166. package/esm5/app/models/row.js +0 -126
  167. package/esm5/app/models/styleConfig.model.js +0 -91
  168. package/esm5/app/services/group-expand-notifier.service.js +0 -30
  169. package/esm5/firestitch-list.js +0 -19
  170. package/esm5/public_api.js +0 -40
  171. package/fesm5/firestitch-list.js +0 -6069
  172. package/fesm5/firestitch-list.js.map +0 -1
  173. package/firestitch-list.metadata.json +0 -1
@@ -1,29 +1,46 @@
1
- import { __decorate, __metadata, __param } from 'tslib';
2
- import { TemplateRef, Injectable, Input, Directive, HostListener, ContentChild, ContentChildren, QueryList, InjectionToken, Inject, Component, ChangeDetectionStrategy, EventEmitter, ElementRef, Optional, ChangeDetectorRef, HostBinding, Output, ViewChild, NgZone, KeyValueDiffers, Renderer2, ViewChildren, IterableDiffers, ViewContainerRef, NgModule } from '@angular/core';
3
- import { Location, CommonModule } from '@angular/common';
4
- import { ActivatedRoute, Router, RouterModule } from '@angular/router';
1
+ import * as i0 from '@angular/core';
2
+ import { TemplateRef, Injectable, Directive, Input, HostListener, ContentChild, ContentChildren, InjectionToken, Component, ChangeDetectionStrategy, Inject, HostBinding, ViewContainerRef, ViewChild, EventEmitter, Output, ViewChildren, Optional, NgModule } from '@angular/core';
3
+ import * as i3$1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i6$1 from '@angular/router';
6
+ import { RouterModule } from '@angular/router';
7
+ import * as i2$1 from '@angular/material/button';
5
8
  import { MatButtonModule } from '@angular/material/button';
9
+ import * as i2 from '@angular/material/checkbox';
6
10
  import { MatCheckboxModule } from '@angular/material/checkbox';
11
+ import * as i4$2 from '@angular/material/core';
7
12
  import { MatRippleModule } from '@angular/material/core';
8
- import { MAT_DIALOG_DATA, MatDialogRef, MatDialog, MatDialogModule } from '@angular/material/dialog';
13
+ import * as i4 from '@angular/material/dialog';
14
+ import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
15
+ import * as i3 from '@angular/material/icon';
9
16
  import { MatIconModule } from '@angular/material/icon';
10
17
  import { MatMenuModule } from '@angular/material/menu';
18
+ import * as i6 from '@angular/material/tooltip';
11
19
  import { MatTooltipModule } from '@angular/material/tooltip';
12
20
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
13
21
  import { FlexLayoutModule } from '@angular/flex-layout';
14
- import { ItemType, FilterComponent, ExternalParamsController as ExternalParamsController$1, FsFilterModule } from '@firestitch/filter';
15
- import { FsScrollService, FsScrollModule } from '@firestitch/scroll';
22
+ import * as i2$2 from '@firestitch/filter';
23
+ import { ItemType, FilterComponent, FsFilterModule } from '@firestitch/filter';
24
+ import * as i2$4 from '@firestitch/scroll';
25
+ import { FsScrollModule } from '@firestitch/scroll';
26
+ import * as i2$3 from '@firestitch/menu';
16
27
  import { FsMenuModule } from '@firestitch/menu';
17
- import { FsPrompt, FsPromptModule } from '@firestitch/prompt';
28
+ import * as i1$1 from '@firestitch/prompt';
29
+ import { FsPromptModule } from '@firestitch/prompt';
30
+ import * as i4$1 from '@firestitch/file';
18
31
  import { FsFileModule } from '@firestitch/file';
19
- import { isString, isObject, isBoolean, isNumber, isFunction, get, cloneDeep, mergeWith, random, merge as merge$1 } from 'lodash-es';
32
+ import { isString, isObject, isBoolean, isNumber, isFunction, get, cloneDeep, random, mergeWith, merge as merge$1 } from 'lodash-es';
20
33
  import { Subject, BehaviorSubject, Observable, merge, from, combineLatest, of } from 'rxjs';
21
- import { takeUntil, tap, distinctUntilChanged, take, map, debounceTime, switchMap, mapTo, catchError, shareReplay, skip, filter } from 'rxjs/operators';
22
- import { SelectionDialog } from '@firestitch/selection';
34
+ import { takeUntil, tap, distinctUntilChanged, take, map, debounceTime, switchMap, mapTo, catchError, shareReplay, filter, skip } from 'rxjs/operators';
35
+ import * as i3$3 from '@firestitch/selection';
23
36
  import { getNormalizedPath } from '@firestitch/common';
24
- import { DrawerRef } from '@firestitch/drawer';
37
+ import * as i9 from '@firestitch/drawer';
38
+ import { __decorate, __metadata } from 'tslib';
25
39
  import { Model, Alias } from 'tsmodels';
26
- import { FsPersistanceStore, FsStore } from '@firestitch/store';
40
+ import * as i1 from '@firestitch/store';
41
+ import { FsPersistanceStore } from '@firestitch/store';
42
+ import * as i5 from '@angular/flex-layout/extended';
43
+ import * as i3$2 from '@angular/flex-layout/flex';
27
44
 
28
45
  class StyleConfig extends Model {
29
46
  constructor(config = {}) {
@@ -923,7 +940,7 @@ class DataController {
923
940
  if (group) {
924
941
  this._groupByFn = group.groupBy;
925
942
  this._compareByFn = group.compareBy;
926
- this._initialExpand = (_a = group.initialExpand, (_a !== null && _a !== void 0 ? _a : true));
943
+ this._initialExpand = (_a = group.initialExpand) !== null && _a !== void 0 ? _a : true;
927
944
  // group mode enabled by default
928
945
  this._groupEnabled = (group.enabled !== void 0)
929
946
  ? group.enabled
@@ -1615,7 +1632,7 @@ class PaginationController {
1615
1632
  _fromParams(params) {
1616
1633
  var _a;
1617
1634
  if (!this.loadMoreEnabled) {
1618
- this.limit = (_a = params.limit, (_a !== null && _a !== void 0 ? _a : 25));
1635
+ this.limit = (_a = params.limit) !== null && _a !== void 0 ? _a : 25;
1619
1636
  }
1620
1637
  this.records = params.records;
1621
1638
  this.manual = params.manual;
@@ -1763,6 +1780,7 @@ class SelectionController {
1763
1780
  selectAll: this.selectAll,
1764
1781
  allCount: this._totalRecordsCount,
1765
1782
  actions: [...this.actions],
1783
+ // selectAll: this.sele
1766
1784
  });
1767
1785
  this._subscribeToSelection();
1768
1786
  }
@@ -1829,11 +1847,11 @@ class SelectionController {
1829
1847
  }
1830
1848
  updateConfig({ actions, actionSelected, allSelected, cancelled, selectionChanged, selectAll }) {
1831
1849
  this.actions = actions ? [...actions] : this.actions;
1832
- this.actionSelectedFn = (actionSelected !== null && actionSelected !== void 0 ? actionSelected : this.actionSelectedFn);
1833
- this.allSelectedFn = (allSelected !== null && allSelected !== void 0 ? allSelected : this.allSelectedFn);
1834
- this.cancelledFn = (cancelled !== null && cancelled !== void 0 ? cancelled : this.cancelledFn);
1835
- this.selectionChangedFn = (selectionChanged !== null && selectionChanged !== void 0 ? selectionChanged : this.selectionChangedFn);
1836
- this.selectAll = (selectAll !== null && selectAll !== void 0 ? selectAll : this.selectAll);
1850
+ this.actionSelectedFn = actionSelected !== null && actionSelected !== void 0 ? actionSelected : this.actionSelectedFn;
1851
+ this.allSelectedFn = allSelected !== null && allSelected !== void 0 ? allSelected : this.allSelectedFn;
1852
+ this.cancelledFn = cancelled !== null && cancelled !== void 0 ? cancelled : this.cancelledFn;
1853
+ this.selectionChangedFn = selectionChanged !== null && selectionChanged !== void 0 ? selectionChanged : this.selectionChangedFn;
1854
+ this.selectAll = selectAll !== null && selectAll !== void 0 ? selectAll : this.selectAll;
1837
1855
  }
1838
1856
  // Reset actions to default set
1839
1857
  resetActions() {
@@ -2329,20 +2347,18 @@ class ExternalParamsController {
2329
2347
  this._destroy$.complete();
2330
2348
  }
2331
2349
  _restorePaginationParams(values) {
2332
- var _a, _b;
2333
- if ((_a = values) === null || _a === void 0 ? void 0 : _a.page) {
2350
+ if (values === null || values === void 0 ? void 0 : values.page) {
2334
2351
  this._externalParams.page = +values.page;
2335
2352
  }
2336
- if ((_b = values) === null || _b === void 0 ? void 0 : _b.limit) {
2353
+ if (values === null || values === void 0 ? void 0 : values.limit) {
2337
2354
  this._externalParams.limit = +values.limit;
2338
2355
  }
2339
2356
  }
2340
2357
  _restoreSortingParams(values) {
2341
- var _a, _b;
2342
- if ((_a = values) === null || _a === void 0 ? void 0 : _a.sortName) {
2358
+ if (values === null || values === void 0 ? void 0 : values.sortName) {
2343
2359
  this._externalParams.sortName = values.sortName;
2344
2360
  }
2345
- if ((_b = values) === null || _b === void 0 ? void 0 : _b.sortDirection) {
2361
+ if (values === null || values === void 0 ? void 0 : values.sortDirection) {
2346
2362
  this._externalParams.sortDirection = values.sortDirection;
2347
2363
  }
2348
2364
  }
@@ -2676,6 +2692,11 @@ class List extends Model {
2676
2692
  if (!config.trackBy) {
2677
2693
  this.trackBy = 'id';
2678
2694
  }
2695
+ if (config.afterContentInit) {
2696
+ this.afterContentInit = () => {
2697
+ config.afterContentInit(this.paging.query, this.dataController.visibleRows);
2698
+ };
2699
+ }
2679
2700
  }
2680
2701
  /**
2681
2702
  * Init restore row action and append Show Deleted option into filters
@@ -2766,7 +2787,9 @@ class List extends Model {
2766
2787
  query = Object.assign(query, this.paging.loadDeletedOffsetQuery);
2767
2788
  }
2768
2789
  else {
2769
- if (this.initialFetch && this.paging.loadMoreEnabled) {
2790
+ const allRecordsRangeNeeded = (this.initialFetch
2791
+ || this.dataController.operation === FsListState.Reload) && this.paging.loadMoreEnabled;
2792
+ if (allRecordsRangeNeeded) {
2770
2793
  query = Object.assign(query, this.paging.loadMoreQuery);
2771
2794
  }
2772
2795
  else {
@@ -3154,7 +3177,7 @@ var ReorderStrategy;
3154
3177
  ReorderStrategy["Manual"] = "manual";
3155
3178
  ReorderStrategy["Custom"] = "custom";
3156
3179
  })(ReorderStrategy || (ReorderStrategy = {}));
3157
- let ReorderController = class ReorderController {
3180
+ class ReorderController {
3158
3181
  constructor() {
3159
3182
  this._enabled$ = new BehaviorSubject(false);
3160
3183
  this._manualReorderActivated$ = new BehaviorSubject(false);
@@ -3202,10 +3225,10 @@ let ReorderController = class ReorderController {
3202
3225
  if (!data) {
3203
3226
  return;
3204
3227
  }
3205
- this.menu = (_a = data.menu, (_a !== null && _a !== void 0 ? _a : true));
3206
- this.position = (_b = data.position, (_b !== null && _b !== void 0 ? _b : ReorderPosition.Left));
3207
- this.strategy = (_c = data.strategy, (_c !== null && _c !== void 0 ? _c : ReorderStrategy.Manual));
3208
- this.status = (_d = data.status, (_d !== null && _d !== void 0 ? _d : true));
3228
+ this.menu = (_a = data.menu) !== null && _a !== void 0 ? _a : true;
3229
+ this.position = (_b = data.position) !== null && _b !== void 0 ? _b : ReorderPosition.Left;
3230
+ this.strategy = (_c = data.strategy) !== null && _c !== void 0 ? _c : ReorderStrategy.Manual;
3231
+ this.status = (_d = data.status) !== null && _d !== void 0 ? _d : true;
3209
3232
  this.label = data.label;
3210
3233
  this.startCallback = data.start;
3211
3234
  this.movedCallback = data.moved;
@@ -3302,75 +3325,73 @@ let ReorderController = class ReorderController {
3302
3325
  this._numberOfActiveFilters = activeFilters;
3303
3326
  this.enabled = this.enabled;
3304
3327
  }
3305
- };
3306
- ReorderController = __decorate([
3307
- Injectable(),
3308
- __metadata("design:paramtypes", [])
3309
- ], ReorderController);
3328
+ }
3329
+ ReorderController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReorderController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3330
+ ReorderController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReorderController });
3331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReorderController, decorators: [{
3332
+ type: Injectable
3333
+ }], ctorParameters: function () { return []; } });
3310
3334
 
3311
- let FsListHeaderDirective = class FsListHeaderDirective {
3312
- };
3313
- __decorate([
3314
- Input(),
3315
- __metadata("design:type", Object)
3316
- ], FsListHeaderDirective.prototype, "colspan", void 0);
3317
- __decorate([
3318
- Input(),
3319
- __metadata("design:type", String)
3320
- ], FsListHeaderDirective.prototype, "align", void 0);
3321
- __decorate([
3322
- Input('class'),
3323
- __metadata("design:type", Object)
3324
- ], FsListHeaderDirective.prototype, "className", void 0);
3325
- FsListHeaderDirective = __decorate([
3326
- Directive({ selector: '[fs-list-header]' })
3327
- ], FsListHeaderDirective);
3335
+ class FsListHeaderDirective {
3336
+ }
3337
+ FsListHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3338
+ FsListHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListHeaderDirective, selector: "[fs-list-header]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
3339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListHeaderDirective, decorators: [{
3340
+ type: Directive,
3341
+ args: [{ selector: '[fs-list-header]' }]
3342
+ }], propDecorators: { colspan: [{
3343
+ type: Input
3344
+ }], align: [{
3345
+ type: Input
3346
+ }], className: [{
3347
+ type: Input,
3348
+ args: ['class']
3349
+ }] } });
3328
3350
 
3329
- let FsListCellDirective = class FsListCellDirective {
3330
- };
3331
- __decorate([
3332
- Input(),
3333
- __metadata("design:type", Object)
3334
- ], FsListCellDirective.prototype, "colspan", void 0);
3335
- __decorate([
3336
- Input(),
3337
- __metadata("design:type", String)
3338
- ], FsListCellDirective.prototype, "align", void 0);
3339
- __decorate([
3340
- Input('class'),
3341
- __metadata("design:type", Object)
3342
- ], FsListCellDirective.prototype, "className", void 0);
3343
- FsListCellDirective = __decorate([
3344
- Directive({ selector: '[fs-list-cell]' })
3345
- ], FsListCellDirective);
3351
+ class FsListCellDirective {
3352
+ }
3353
+ FsListCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3354
+ FsListCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListCellDirective, selector: "[fs-list-cell]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
3355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListCellDirective, decorators: [{
3356
+ type: Directive,
3357
+ args: [{ selector: '[fs-list-cell]' }]
3358
+ }], propDecorators: { colspan: [{
3359
+ type: Input
3360
+ }], align: [{
3361
+ type: Input
3362
+ }], className: [{
3363
+ type: Input,
3364
+ args: ['class']
3365
+ }] } });
3346
3366
 
3347
- let FsListFooterDirective = class FsListFooterDirective {
3348
- };
3349
- __decorate([
3350
- Input(),
3351
- __metadata("design:type", Object)
3352
- ], FsListFooterDirective.prototype, "colspan", void 0);
3353
- __decorate([
3354
- Input(),
3355
- __metadata("design:type", String)
3356
- ], FsListFooterDirective.prototype, "align", void 0);
3357
- __decorate([
3358
- Input('class'),
3359
- __metadata("design:type", Object)
3360
- ], FsListFooterDirective.prototype, "className", void 0);
3361
- FsListFooterDirective = __decorate([
3362
- Directive({ selector: '[fs-list-footer]' })
3363
- ], FsListFooterDirective);
3367
+ class FsListFooterDirective {
3368
+ }
3369
+ FsListFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3370
+ FsListFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
3371
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListFooterDirective, decorators: [{
3372
+ type: Directive,
3373
+ args: [{ selector: '[fs-list-footer]' }]
3374
+ }], propDecorators: { colspan: [{
3375
+ type: Input
3376
+ }], align: [{
3377
+ type: Input
3378
+ }], className: [{
3379
+ type: Input,
3380
+ args: ['class']
3381
+ }] } });
3364
3382
 
3365
- let FsListGroupCellDirective = class FsListGroupCellDirective extends FsListCellDirective {
3366
- };
3367
- FsListGroupCellDirective = __decorate([
3368
- Directive({
3369
- selector: '[fs-list-group-cell]'
3370
- })
3371
- ], FsListGroupCellDirective);
3383
+ class FsListGroupCellDirective extends FsListCellDirective {
3384
+ }
3385
+ FsListGroupCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListGroupCellDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3386
+ FsListGroupCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListGroupCellDirective, selector: "[fs-list-group-cell]", usesInheritance: true, ngImport: i0 });
3387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListGroupCellDirective, decorators: [{
3388
+ type: Directive,
3389
+ args: [{
3390
+ selector: '[fs-list-group-cell]'
3391
+ }]
3392
+ }] });
3372
3393
 
3373
- let GroupExpandNotifierService = class GroupExpandNotifierService {
3394
+ class GroupExpandNotifierService {
3374
3395
  constructor() {
3375
3396
  this._expandStatusChanged$ = new Subject();
3376
3397
  this._destroy$ = new Subject();
@@ -3385,12 +3406,14 @@ let GroupExpandNotifierService = class GroupExpandNotifierService {
3385
3406
  this._destroy$.next();
3386
3407
  this._destroy$.complete();
3387
3408
  }
3388
- };
3389
- GroupExpandNotifierService = __decorate([
3390
- Injectable()
3391
- ], GroupExpandNotifierService);
3409
+ }
3410
+ GroupExpandNotifierService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GroupExpandNotifierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3411
+ GroupExpandNotifierService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GroupExpandNotifierService });
3412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GroupExpandNotifierService, decorators: [{
3413
+ type: Injectable
3414
+ }] });
3392
3415
 
3393
- let FsListGroupExpandTriggerDirective = class FsListGroupExpandTriggerDirective {
3416
+ class FsListGroupExpandTriggerDirective {
3394
3417
  constructor(_expandNotifier) {
3395
3418
  this._expandNotifier = _expandNotifier;
3396
3419
  }
@@ -3399,125 +3422,97 @@ let FsListGroupExpandTriggerDirective = class FsListGroupExpandTriggerDirective
3399
3422
  event.stopPropagation();
3400
3423
  this._expandNotifier.toggleExpandStatus(this.row);
3401
3424
  }
3402
- };
3403
- FsListGroupExpandTriggerDirective.ctorParameters = () => [
3404
- { type: GroupExpandNotifierService }
3405
- ];
3406
- __decorate([
3407
- HostListener('click', ['$event']),
3408
- __metadata("design:type", Function),
3409
- __metadata("design:paramtypes", [Object]),
3410
- __metadata("design:returntype", void 0)
3411
- ], FsListGroupExpandTriggerDirective.prototype, "click", null);
3412
- __decorate([
3413
- Input(),
3414
- __metadata("design:type", Object)
3415
- ], FsListGroupExpandTriggerDirective.prototype, "row", void 0);
3416
- FsListGroupExpandTriggerDirective = __decorate([
3417
- Directive({ selector: '[fsListGroupExpandTrigger]' }),
3418
- __metadata("design:paramtypes", [GroupExpandNotifierService])
3419
- ], FsListGroupExpandTriggerDirective);
3425
+ }
3426
+ FsListGroupExpandTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListGroupExpandTriggerDirective, deps: [{ token: GroupExpandNotifierService }], target: i0.ɵɵFactoryTarget.Directive });
3427
+ FsListGroupExpandTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListGroupExpandTriggerDirective, selector: "[fsListGroupExpandTrigger]", inputs: { row: "row" }, host: { listeners: { "click": "click($event)" } }, ngImport: i0 });
3428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListGroupExpandTriggerDirective, decorators: [{
3429
+ type: Directive,
3430
+ args: [{ selector: '[fsListGroupExpandTrigger]' }]
3431
+ }], ctorParameters: function () { return [{ type: GroupExpandNotifierService }]; }, propDecorators: { click: [{
3432
+ type: HostListener,
3433
+ args: ['click', ['$event']]
3434
+ }], row: [{
3435
+ type: Input
3436
+ }] } });
3420
3437
 
3421
- let FsListColumnDirective = class FsListColumnDirective {
3438
+ class FsListColumnDirective {
3422
3439
  constructor() {
3423
3440
  this.show = true;
3424
3441
  this.customize = true;
3425
3442
  }
3426
- };
3427
- __decorate([
3428
- Input(),
3429
- __metadata("design:type", String)
3430
- ], FsListColumnDirective.prototype, "title", void 0);
3431
- __decorate([
3432
- Input(),
3433
- __metadata("design:type", String)
3434
- ], FsListColumnDirective.prototype, "name", void 0);
3435
- __decorate([
3436
- Input(),
3437
- __metadata("design:type", Object)
3438
- ], FsListColumnDirective.prototype, "show", void 0);
3439
- __decorate([
3440
- Input(),
3441
- __metadata("design:type", Object)
3442
- ], FsListColumnDirective.prototype, "customize", void 0);
3443
- __decorate([
3444
- Input(),
3445
- __metadata("design:type", Boolean)
3446
- ], FsListColumnDirective.prototype, "sortable", void 0);
3447
- __decorate([
3448
- Input(),
3449
- __metadata("design:type", Boolean)
3450
- ], FsListColumnDirective.prototype, "sortableDefault", void 0);
3451
- __decorate([
3452
- Input(),
3453
- __metadata("design:type", String)
3454
- ], FsListColumnDirective.prototype, "direction", void 0);
3455
- __decorate([
3456
- Input(),
3457
- __metadata("design:type", String)
3458
- ], FsListColumnDirective.prototype, "align", void 0);
3459
- __decorate([
3460
- Input(),
3461
- __metadata("design:type", String)
3462
- ], FsListColumnDirective.prototype, "width", void 0);
3463
- __decorate([
3464
- Input('class'),
3465
- __metadata("design:type", Object)
3466
- ], FsListColumnDirective.prototype, "className", void 0);
3467
- __decorate([
3468
- ContentChild(FsListHeaderDirective, { read: TemplateRef, static: true }),
3469
- __metadata("design:type", TemplateRef)
3470
- ], FsListColumnDirective.prototype, "headerTemplate", void 0);
3471
- __decorate([
3472
- ContentChild(FsListHeaderDirective, { static: true }),
3473
- __metadata("design:type", Object)
3474
- ], FsListColumnDirective.prototype, "headerConfigs", void 0);
3475
- __decorate([
3476
- ContentChild(FsListGroupCellDirective, { read: TemplateRef, static: true }),
3477
- __metadata("design:type", TemplateRef)
3478
- ], FsListColumnDirective.prototype, "groupCellTemplate", void 0);
3479
- __decorate([
3480
- ContentChild(FsListGroupCellDirective, { static: true }),
3481
- __metadata("design:type", Object)
3482
- ], FsListColumnDirective.prototype, "groupCellConfigs", void 0);
3483
- __decorate([
3484
- ContentChildren(FsListGroupExpandTriggerDirective, { descendants: true }),
3485
- __metadata("design:type", QueryList)
3486
- ], FsListColumnDirective.prototype, "expandTrigger", void 0);
3487
- __decorate([
3488
- ContentChild(FsListCellDirective, { read: TemplateRef, static: true }),
3489
- __metadata("design:type", TemplateRef)
3490
- ], FsListColumnDirective.prototype, "cellTemplate", void 0);
3491
- __decorate([
3492
- ContentChild(FsListCellDirective, { static: true }),
3493
- __metadata("design:type", Object)
3494
- ], FsListColumnDirective.prototype, "cellConfigs", void 0);
3495
- __decorate([
3496
- ContentChild(FsListFooterDirective, { read: TemplateRef, static: true }),
3497
- __metadata("design:type", TemplateRef)
3498
- ], FsListColumnDirective.prototype, "footerTemplate", void 0);
3499
- __decorate([
3500
- ContentChild(FsListFooterDirective, { static: true }),
3501
- __metadata("design:type", Object)
3502
- ], FsListColumnDirective.prototype, "footerConfigs", void 0);
3503
- FsListColumnDirective = __decorate([
3504
- Directive({
3505
- selector: 'fs-list-column'
3506
- })
3507
- ], FsListColumnDirective);
3443
+ }
3444
+ FsListColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3445
+ FsListColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListColumnDirective, selector: "fs-list-column", inputs: { title: "title", name: "name", show: "show", customize: "customize", sortable: "sortable", sortableDefault: "sortableDefault", 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: "groupCellTemplate", first: true, predicate: FsListGroupCellDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "groupCellConfigs", first: true, predicate: FsListGroupCellDirective, 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 });
3446
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListColumnDirective, decorators: [{
3447
+ type: Directive,
3448
+ args: [{
3449
+ selector: 'fs-list-column'
3450
+ }]
3451
+ }], propDecorators: { title: [{
3452
+ type: Input
3453
+ }], name: [{
3454
+ type: Input
3455
+ }], show: [{
3456
+ type: Input
3457
+ }], customize: [{
3458
+ type: Input
3459
+ }], sortable: [{
3460
+ type: Input
3461
+ }], sortableDefault: [{
3462
+ type: Input
3463
+ }], direction: [{
3464
+ type: Input
3465
+ }], align: [{
3466
+ type: Input
3467
+ }], width: [{
3468
+ type: Input
3469
+ }], className: [{
3470
+ type: Input,
3471
+ args: ['class']
3472
+ }], headerTemplate: [{
3473
+ type: ContentChild,
3474
+ args: [FsListHeaderDirective, { read: TemplateRef, static: true }]
3475
+ }], headerConfigs: [{
3476
+ type: ContentChild,
3477
+ args: [FsListHeaderDirective, { static: true }]
3478
+ }], groupCellTemplate: [{
3479
+ type: ContentChild,
3480
+ args: [FsListGroupCellDirective, { read: TemplateRef, static: true }]
3481
+ }], groupCellConfigs: [{
3482
+ type: ContentChild,
3483
+ args: [FsListGroupCellDirective, { static: true }]
3484
+ }], expandTrigger: [{
3485
+ type: ContentChildren,
3486
+ args: [FsListGroupExpandTriggerDirective, { descendants: true }]
3487
+ }], cellTemplate: [{
3488
+ type: ContentChild,
3489
+ args: [FsListCellDirective, { read: TemplateRef, static: true }]
3490
+ }], cellConfigs: [{
3491
+ type: ContentChild,
3492
+ args: [FsListCellDirective, { static: true }]
3493
+ }], footerTemplate: [{
3494
+ type: ContentChild,
3495
+ args: [FsListFooterDirective, { read: TemplateRef, static: true }]
3496
+ }], footerConfigs: [{
3497
+ type: ContentChild,
3498
+ args: [FsListFooterDirective, { static: true }]
3499
+ }] } });
3508
3500
 
3509
- let FsListEmptyStateDirective = class FsListEmptyStateDirective {
3510
- };
3511
- FsListEmptyStateDirective = __decorate([
3512
- Directive({
3513
- selector: '[fs-list-empty-state]',
3514
- })
3515
- ], FsListEmptyStateDirective);
3501
+ class FsListEmptyStateDirective {
3502
+ }
3503
+ FsListEmptyStateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListEmptyStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3504
+ FsListEmptyStateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListEmptyStateDirective, selector: "[fs-list-empty-state]", ngImport: i0 });
3505
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListEmptyStateDirective, decorators: [{
3506
+ type: Directive,
3507
+ args: [{
3508
+ selector: '[fs-list-empty-state]',
3509
+ }]
3510
+ }] });
3516
3511
 
3517
3512
  const FS_LIST_DEFAULT_CONFIG = new InjectionToken('fs-list.default-config');
3518
3513
  const FS_LIST_CONFIG = new InjectionToken('fs-list.config');
3519
3514
 
3520
- let CustomizeColsDialogComponent = class CustomizeColsDialogComponent {
3515
+ class CustomizeColsDialogComponent {
3521
3516
  constructor(data, _dialog) {
3522
3517
  this._dialog = _dialog;
3523
3518
  this.columns = [];
@@ -3563,385 +3558,312 @@ let CustomizeColsDialogComponent = class CustomizeColsDialogComponent {
3563
3558
  cancel() {
3564
3559
  this._dialog.close();
3565
3560
  }
3566
- };
3567
- CustomizeColsDialogComponent.ctorParameters = () => [
3568
- { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
3569
- { type: MatDialogRef }
3570
- ];
3571
- CustomizeColsDialogComponent = __decorate([
3572
- Component({
3573
- 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",
3574
- changeDetection: ChangeDetectionStrategy.OnPush,
3575
- styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}"]
3576
- }),
3577
- __param(0, Inject(MAT_DIALOG_DATA)),
3578
- __metadata("design:paramtypes", [Object, MatDialogRef])
3579
- ], CustomizeColsDialogComponent);
3561
+ }
3562
+ CustomizeColsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomizeColsDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i4.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
3563
+ CustomizeColsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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"], components: [{ type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomizeColsDialogComponent, decorators: [{
3565
+ type: Component,
3566
+ args: [{
3567
+ templateUrl: 'customize-cols.component.html',
3568
+ styleUrls: ['customize-cols.component.scss'],
3569
+ changeDetection: ChangeDetectionStrategy.OnPush,
3570
+ }]
3571
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
3572
+ type: Inject,
3573
+ args: [MAT_DIALOG_DATA]
3574
+ }] }, { type: i4.MatDialogRef }]; } });
3580
3575
 
3581
3576
  const FILTER_STORE_KEY = 'fs-list-persist';
3582
- let PersistanceController = class PersistanceController extends FsPersistanceStore {
3577
+ class PersistanceController extends FsPersistanceStore {
3583
3578
  constructor(_store, _route) {
3584
3579
  super(_store, _route);
3585
3580
  this.STORE_KEY = FILTER_STORE_KEY;
3586
3581
  }
3587
- };
3588
- PersistanceController.ctorParameters = () => [
3589
- { type: FsStore },
3590
- { type: ActivatedRoute }
3591
- ];
3592
- PersistanceController = __decorate([
3593
- Injectable(),
3594
- __metadata("design:paramtypes", [FsStore,
3595
- ActivatedRoute])
3596
- ], PersistanceController);
3582
+ }
3583
+ PersistanceController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PersistanceController, deps: [{ token: i1.FsStore }, { token: i6$1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
3584
+ PersistanceController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PersistanceController });
3585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PersistanceController, decorators: [{
3586
+ type: Injectable
3587
+ }], ctorParameters: function () { return [{ type: i1.FsStore }, { type: i6$1.ActivatedRoute }]; } });
3597
3588
 
3598
- let FsListComponent = class FsListComponent {
3599
- constructor(reorderController, _el, _defaultOptions, fsScroll, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location, _dialogRef, _drawerRef) {
3600
- this.reorderController = reorderController;
3601
- this._el = _el;
3602
- this._defaultOptions = _defaultOptions;
3603
- this.fsScroll = fsScroll;
3604
- this.selectionDialog = selectionDialog;
3605
- this.dialog = dialog;
3606
- this.cdRef = cdRef;
3607
- this._groupExpandNotifier = _groupExpandNotifier;
3608
- this._router = _router;
3609
- this._route = _route;
3610
- this._persistance = _persistance;
3611
- this._location = _location;
3612
- this._dialogRef = _dialogRef;
3613
- this._drawerRef = _drawerRef;
3614
- this.classFsList = true;
3615
- this.loaderLines = 3;
3616
- this.filtersReady = new EventEmitter();
3617
- // Event will fired if action remove: true will clicked
3618
- this.rowRemoved = new EventEmitter();
3619
- this.firstLoad = true;
3620
- this._filterParamsReady = false;
3621
- this._inDialog = !!this._dialogRef || !!this._drawerRef;
3622
- this._destroy = new Subject();
3589
+ // import { FsListManageSavedFiltersComponent } from '../manage-saved-filters/manage-saved-filters.component';
3590
+ class FsListSavedFiltersComponent {
3591
+ constructor(_dialog, _externalParams, _vcRef) {
3592
+ this._dialog = _dialog;
3593
+ this._externalParams = _externalParams;
3594
+ this._vcRef = _vcRef;
3623
3595
  }
3624
- set config(config) {
3625
- this._initWithConfig(config);
3596
+ get savedFiltersEnabled$() {
3597
+ return this._externalParams.savedFiltersController.enabled$;
3626
3598
  }
3627
- set filterReference(component) {
3628
- this._filterRef = component;
3629
- this.list.actions.setFilterRef(component);
3630
- this._emitFiltersReadyEvent();
3599
+ showManageDialog() {
3600
+ // this._dialog.open(FsListManageSavedFiltersComponent, {
3601
+ // viewContainerRef: this._vcRef,
3602
+ // });
3631
3603
  }
3632
- /**
3633
- * Set columns to config
3634
- * Create Column Model instances
3635
- *
3636
- */
3637
- set columnTemplates(listColumnDirectives) {
3638
- this.listColumnDirectives = listColumnDirectives;
3639
- if (this.list) {
3640
- this.list.tranformTemplatesToColumns(listColumnDirectives);
3641
- }
3604
+ }
3605
+ FsListSavedFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListSavedFiltersComponent, deps: [{ token: i4.MatDialog }, { token: i2$2.ExternalParamsController }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
3606
+ FsListSavedFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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", components: [{ type: i2$2.FsSavedFiltersMenuComponent, selector: "fs-filter-saved-filters-menu", outputs: ["select", "clear", "manage"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3$1.AsyncPipe } });
3607
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListSavedFiltersComponent, decorators: [{
3608
+ type: Component,
3609
+ args: [{
3610
+ selector: 'fs-list-saved-filters',
3611
+ templateUrl: 'saved-filters.component.html',
3612
+ }]
3613
+ }], ctorParameters: function () { return [{ type: i4.MatDialog }, { type: i2$2.ExternalParamsController }, { type: i0.ViewContainerRef }]; } });
3614
+
3615
+ class FsStatusComponent {
3616
+ constructor(_cdRef) {
3617
+ this._cdRef = _cdRef;
3618
+ this._destroy$ = new Subject();
3642
3619
  }
3643
- set _emptyStateTemplate(template) {
3644
- if (this.list) {
3645
- this.list.emptyStateTemplate = template;
3646
- }
3620
+ ngOnInit() {
3621
+ this.sorting.sortingChanged$
3622
+ .pipe(takeUntil(this._destroy$))
3623
+ .subscribe(() => {
3624
+ this._cdRef.markForCheck();
3625
+ });
3647
3626
  }
3648
- /**
3649
- * Return reference for filter
3650
- */
3651
- get filterRef() {
3652
- return this._filterRef;
3627
+ ngOnDestroy() {
3628
+ this._destroy$.next();
3629
+ this._destroy$.complete();
3653
3630
  }
3654
- get groupEnabled() {
3655
- return this.list.dataController.groupEnabled;
3631
+ toggleDirection() {
3632
+ if (this.sorting.sortingColumn.direction === 'asc') {
3633
+ this.sorting.sortDirection(SortingDirection.desc);
3634
+ }
3635
+ else {
3636
+ this.sorting.sortDirection(SortingDirection.asc);
3637
+ }
3656
3638
  }
3657
- get paginatorVisible() {
3658
- return this.list.paging.enabled
3659
- && !this.firstLoad
3660
- && !this.list.scrollable
3661
- && !this.list.emptyStateEnabled
3662
- && this.list.dataController.visibleRowsCount > 0
3663
- && this.list.paging.pages > 1;
3639
+ setSortableColumn(column) {
3640
+ if (this.sorting.sortingColumn !== column) {
3641
+ this.sorting.sortBy(column);
3642
+ }
3664
3643
  }
3665
- set groupEnabled(value) {
3666
- this.list.groupEnabled(value);
3644
+ setLimit(limit) {
3645
+ this.paging.setLimit(limit);
3646
+ }
3647
+ }
3648
+ FsStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStatusComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3649
+ FsStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsStatusComponent, selector: "fs-list-status", inputs: { paging: "paging", sorting: "sorting", rows: "rows", scrollable: "scrollable", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <ng-container *ngIf=\"paging.enabled && !scrollable\">\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 || scrollable) && 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 || scrollable\" #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\"\n >\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 >\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 >\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</div>\n", styles: [":host{display:inline-block}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}\n"], components: [{ type: FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { type: i2$3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass"], outputs: ["opened", "closed"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$3.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]", inputs: ["fsClass", "class", "id", "label", "hidden", "groupHidden", "dismissAfterClick", "link", "target", "queryParams"], outputs: ["click"] }], pipes: { "number": i3$1.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
3650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStatusComponent, decorators: [{
3651
+ type: Component,
3652
+ args: [{
3653
+ selector: 'fs-list-status',
3654
+ templateUrl: 'status.component.html',
3655
+ styleUrls: [
3656
+ './status.component.scss',
3657
+ ],
3658
+ changeDetection: ChangeDetectionStrategy.OnPush,
3659
+ preserveWhitespaces: true
3660
+ }]
3661
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { paging: [{
3662
+ type: Input
3663
+ }], sorting: [{
3664
+ type: Input
3665
+ }], rows: [{
3666
+ type: Input
3667
+ }], scrollable: [{
3668
+ type: Input
3669
+ }], firstLoad: [{
3670
+ type: Input
3671
+ }, {
3672
+ type: HostBinding,
3673
+ args: ['class.first-load']
3674
+ }, {
3675
+ type: HostBinding,
3676
+ args: ['class.fs-skeleton-placeholder']
3677
+ }] } });
3678
+
3679
+ class FsCellComponent {
3680
+ constructor() {
3681
+ this.isColl = true;
3682
+ this.role = 'gridcell';
3683
+ this.cellContext = {};
3684
+ this._destroy$ = new Subject();
3667
3685
  }
3668
3686
  ngOnInit() {
3669
- this._subscribeToRemoveRow();
3670
- this._subscribeToGroupExpandStatusChange();
3687
+ this._initCellContext();
3688
+ this._initCellTemplate();
3689
+ this._listenGroupOpen();
3671
3690
  }
3672
- ngOnDestroy() {
3673
- if (this.list) {
3674
- this.list.destroy();
3691
+ ngOnChanges(changes) {
3692
+ if (changes.rowIndex) {
3693
+ this.cellContext.index = this.rowIndex;
3675
3694
  }
3676
- this._destroy.next();
3677
- this._destroy.complete();
3678
3695
  }
3679
- nextPage() {
3680
- this.list.paging.goNext();
3696
+ ngOnDestroy() {
3697
+ this._destroy$.next();
3698
+ this._destroy$.complete();
3681
3699
  }
3682
- prevPage() {
3683
- this.list.paging.goPrev();
3700
+ _initCellContext() {
3701
+ this.cellContext.index = this.rowIndex;
3702
+ if (this.row) {
3703
+ if (this.row.isGroup) {
3704
+ this.cellContext.groupIndex = this.row.index;
3705
+ }
3706
+ else if (this.row.isChild) {
3707
+ this.cellContext.groupChildIndex = this.row.index;
3708
+ }
3709
+ }
3710
+ this.cellContext.column = this.column;
3711
+ if (this.row) {
3712
+ this.cellContext.$implicit = this.row.data;
3713
+ this.cellContext.row = this.row.data;
3714
+ this.cellContext.value = this.row.data[this.column.name];
3715
+ this.cellContext.expanded = this.row.expanded;
3716
+ }
3684
3717
  }
3685
- firstPage() {
3686
- this.list.paging.goFirst();
3718
+ _initCellTemplate() {
3719
+ if (this.row && this.row.isGroup) {
3720
+ this.cellTemplate = this.column.groupCellTemplate || this.column.cellTemplate;
3721
+ }
3722
+ else {
3723
+ this.cellTemplate = this.column.cellTemplate;
3724
+ }
3687
3725
  }
3688
- lastPage() {
3689
- this.list.paging.goLast();
3726
+ _listenGroupOpen() {
3727
+ if (this.row && this.row.isGroup) {
3728
+ this.row.expanded$
3729
+ .pipe(takeUntil(this._destroy$))
3730
+ .subscribe((status) => {
3731
+ this.cellContext.expanded = status;
3732
+ });
3733
+ }
3690
3734
  }
3691
- reload() {
3692
- this.list.reload();
3735
+ }
3736
+ FsCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3737
+ FsCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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", directives: [{ type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3738
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCellComponent, decorators: [{
3739
+ type: Component,
3740
+ args: [{
3741
+ selector: '[fs-cell]',
3742
+ templateUrl: 'cell.component.html',
3743
+ changeDetection: ChangeDetectionStrategy.OnPush
3744
+ }]
3745
+ }], ctorParameters: function () { return []; }, propDecorators: { isColl: [{
3746
+ type: HostBinding,
3747
+ args: ['class.fs-list-col']
3748
+ }], role: [{
3749
+ type: HostBinding,
3750
+ args: ['attr.role']
3751
+ }], column: [{
3752
+ type: Input
3753
+ }], row: [{
3754
+ type: Input
3755
+ }], rowIndex: [{
3756
+ type: Input
3757
+ }] } });
3758
+
3759
+ class FsHeadCellComponent extends FsCellComponent {
3760
+ constructor(cdRef, differs) {
3761
+ super();
3762
+ this.cdRef = cdRef;
3763
+ this.differs = differs;
3764
+ this.cellContext = {};
3765
+ this._columnDiffer = differs.find({}).create();
3693
3766
  }
3694
- getData(trackBy) {
3695
- return this.list.getData(trackBy);
3767
+ ngDoCheck() {
3768
+ if (this._columnDiffer.diff(this.column)) {
3769
+ this.cdRef.markForCheck();
3770
+ }
3696
3771
  }
3697
- hasData(trackBy) {
3698
- return this.list.hasData(trackBy);
3772
+ initCellContext() {
3773
+ this.cellContext.value = this.column.title;
3699
3774
  }
3700
- updateData(rows, trackBy) {
3701
- return this.list.dataController.updateData(rows, trackBy);
3702
- }
3703
- replaceRow(row, trackBy) {
3704
- return this.list.dataController.replaceData(row, trackBy);
3705
- }
3706
- updateSelectionConfig(config) {
3707
- this.list.selection.updateConfig(config);
3708
- }
3709
- resetSelectionActions() {
3710
- this.list.selection.resetActions();
3711
- }
3712
- removeData(data) {
3713
- return this.list.dataController.removeData(data);
3714
- }
3715
- setHeading(heading) {
3716
- this.list.heading = heading;
3717
- }
3718
- setSubheading(subheading) {
3719
- this.list.subheading = subheading;
3720
- }
3721
- reorderStart() {
3722
- this.reorderController.enableReorder();
3723
- }
3724
- reorderFinish() {
3725
- this.reorderController.disableReorder();
3726
- }
3727
- setActions(actions) {
3728
- if (actions) {
3729
- this.list.actions.clearActions();
3730
- this.list.actions.setActions(actions);
3731
- }
3775
+ }
3776
+ FsHeadCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Component });
3777
+ FsHeadCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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\">\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", components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadCellComponent, decorators: [{
3779
+ type: Component,
3780
+ args: [{
3781
+ selector: '[fs-head-cell]',
3782
+ templateUrl: 'head-cell.component.html',
3783
+ changeDetection: ChangeDetectionStrategy.OnPush
3784
+ }]
3785
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });
3786
+
3787
+ class FsHeadComponent {
3788
+ constructor(reorderController, cdRef) {
3789
+ this.reorderController = reorderController;
3790
+ this.cdRef = cdRef;
3791
+ this.selectedAll = false;
3792
+ this.ReorderPosition = ReorderPosition;
3793
+ this.ReorderStrategy = ReorderStrategy;
3794
+ this._destroy$ = new Subject();
3732
3795
  }
3733
- filterReady() {
3734
- this.list.filtersReady$.next();
3735
- this._filterParamsReady = true;
3736
- this._emitFiltersReadyEvent();
3796
+ ngOnInit() {
3797
+ this.initSorting();
3798
+ this.initSelection();
3737
3799
  }
3738
- /**
3739
- * Update visibility for specific column
3740
- */
3741
- columnVisibility(name, show) {
3742
- this.columnsVisibility([{ name, show }]);
3800
+ ngOnDestroy() {
3801
+ this._destroy$.next();
3802
+ this._destroy$.complete();
3743
3803
  }
3744
3804
  /**
3745
- * Update visibility for list of specific columns
3805
+ * Select All Visible Rows
3806
+ * @param event
3746
3807
  */
3747
- columnsVisibility(columns) {
3748
- this.list.columns.updateVisibilityForCols(columns);
3749
- }
3750
- _emitFiltersReadyEvent() {
3751
- if (!!this.filterRef && this._filterParamsReady) {
3752
- this.filtersReady.emit();
3753
- }
3808
+ selectAll(event) {
3809
+ this.selection.selectAllVisibleRows(event.checked);
3754
3810
  }
3755
3811
  /**
3756
- * Initialize config for list
3757
- * @param config
3812
+ * Track By for improve change detection
3813
+ * @param index
3758
3814
  */
3759
- _initWithConfig(config) {
3760
- if (this.list) {
3761
- this.list.destroy();
3762
- }
3763
- const defaultOpts = this._defaultOptions
3764
- ? cloneDeep(this._defaultOptions)
3765
- : {};
3766
- const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
3767
- if (listConfig.persist !== false) {
3768
- this._restorePersistance(listConfig.persist);
3769
- }
3770
- this._updateCustomizeAction(listConfig.actions);
3771
- this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
3772
- this._waitFirstLoad();
3773
- this._listenFiltersQueryChange();
3774
- this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions);
3775
- if (this.listColumnDirectives) {
3776
- this.list.tranformTemplatesToColumns(this.listColumnDirectives);
3777
- }
3778
- this._listenSortingChange();
3815
+ trackByFn(index) {
3816
+ return index;
3779
3817
  }
3780
3818
  /**
3781
- * Find action with customize flag and re-declare click function for CustomizeColsDialog
3782
- * @param actions
3819
+ * Subscribe to sorting change
3783
3820
  */
3784
- _updateCustomizeAction(actions) {
3785
- var _a;
3786
- const customizeAction = (_a = actions) === null || _a === void 0 ? void 0 : _a.find((action) => action.customize);
3787
- if (customizeAction) {
3788
- const actionClickFn = customizeAction.click;
3789
- customizeAction.click = () => {
3790
- if (actionClickFn) {
3791
- actionClickFn(null);
3792
- }
3793
- const dialogRef = this.dialog.open(CustomizeColsDialogComponent, {
3794
- data: {
3795
- columns: this.list.columns.columnsForDialog,
3796
- changeFn: this.list.columns.changeFn,
3797
- },
3798
- });
3799
- dialogRef
3800
- .afterClosed()
3801
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
3802
- .subscribe((data) => {
3803
- if (data) {
3804
- this.list.columns.updateVisibilityForCols(data);
3805
- this.cdRef.markForCheck();
3806
- }
3807
- });
3808
- };
3809
- }
3821
+ initSorting() {
3822
+ this.sorting.sortingChanged$
3823
+ .pipe(takeUntil(this._destroy$))
3824
+ .subscribe(() => {
3825
+ this.cdRef.detectChanges();
3826
+ });
3810
3827
  }
3811
3828
  /**
3812
- * Update sorting in filter
3829
+ * Subscribe to selection change
3813
3830
  */
3814
- _listenSortingChange() {
3815
- this.list.sorting
3816
- .sortingChanged$
3817
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
3818
- .subscribe((sort) => {
3819
- this._filterRef.updateSort(sort);
3820
- });
3821
- }
3822
- _subscribeToRemoveRow() {
3823
- this.rowRemoved
3824
- .pipe(takeUntil(this._destroy))
3825
- .subscribe((row) => {
3826
- this.list.dataController.removeData(row);
3827
- });
3828
- }
3829
- _subscribeToGroupExpandStatusChange() {
3830
- if (this.list.dataController.hasGroups) {
3831
- this._groupExpandNotifier.expandStatusChange$
3832
- .pipe(takeUntil(this._destroy))
3833
- .subscribe((row) => {
3834
- this.list.dataController.toggleRowGroup(row);
3831
+ initSelection() {
3832
+ if (this.selection) {
3833
+ this.selection.selectionChange$
3834
+ .pipe(filter(({ type }) => (type === SelectionChangeType.AllVisibleSelectionChange
3835
+ || type === SelectionChangeType.SelectedAll
3836
+ || type === SelectionChangeType.RowSelectionChange)), takeUntil(this._destroy$))
3837
+ .subscribe(({ type, payload: status }) => {
3838
+ this.selectedAll = status;
3839
+ this.cdRef.markForCheck();
3835
3840
  });
3836
3841
  }
3837
3842
  }
3838
- _waitFirstLoad() {
3839
- this.list.loading$
3840
- .pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
3841
- .subscribe(() => {
3842
- this.firstLoad = false;
3843
- this.cdRef.markForCheck();
3844
- });
3845
- }
3846
- _listenFiltersQueryChange() {
3847
- this.list.filtersQuery$
3848
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
3849
- .subscribe((value) => {
3850
- if (value) {
3851
- const activeFilters = Object.keys(value).length;
3852
- this.reorderController.setNunberOfActiveFilters(activeFilters);
3853
- }
3854
- });
3855
- }
3856
- _configMergeCustomizer(objValue, srcValue) {
3857
- if (Array.isArray(objValue)) {
3858
- return objValue;
3859
- }
3860
- }
3861
- _restorePersistance(persistConfig) {
3862
- const namespace = getNormalizedPath(this._location);
3863
- this._persistance.setConfig(persistConfig, namespace, this._inDialog);
3864
- }
3865
- };
3866
- FsListComponent.ctorParameters = () => [
3867
- { type: ReorderController },
3868
- { type: ElementRef },
3869
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FS_LIST_DEFAULT_CONFIG,] }] },
3870
- { type: FsScrollService, decorators: [{ type: Optional }] },
3871
- { type: SelectionDialog },
3872
- { type: MatDialog },
3873
- { type: ChangeDetectorRef },
3874
- { type: GroupExpandNotifierService },
3875
- { type: Router },
3876
- { type: ActivatedRoute },
3877
- { type: PersistanceController },
3878
- { type: Location },
3879
- { type: MatDialogRef, decorators: [{ type: Optional }] },
3880
- { type: DrawerRef, decorators: [{ type: Optional }] }
3881
- ];
3882
- __decorate([
3883
- HostBinding('class.fs-list'),
3884
- __metadata("design:type", Object)
3885
- ], FsListComponent.prototype, "classFsList", void 0);
3886
- __decorate([
3887
- Input('config'),
3888
- __metadata("design:type", Object),
3889
- __metadata("design:paramtypes", [Object])
3890
- ], FsListComponent.prototype, "config", null);
3891
- __decorate([
3892
- Input(),
3893
- __metadata("design:type", Object)
3894
- ], FsListComponent.prototype, "loaderLines", void 0);
3895
- __decorate([
3896
- Output(),
3897
- __metadata("design:type", Object)
3898
- ], FsListComponent.prototype, "filtersReady", void 0);
3899
- __decorate([
3900
- ViewChild(FilterComponent),
3901
- __metadata("design:type", Object),
3902
- __metadata("design:paramtypes", [Object])
3903
- ], FsListComponent.prototype, "filterReference", null);
3904
- __decorate([
3905
- ContentChildren(FsListColumnDirective),
3906
- __metadata("design:type", QueryList),
3907
- __metadata("design:paramtypes", [QueryList])
3908
- ], FsListComponent.prototype, "columnTemplates", null);
3909
- __decorate([
3910
- ContentChild(FsListEmptyStateDirective, { read: TemplateRef }),
3911
- __metadata("design:type", TemplateRef),
3912
- __metadata("design:paramtypes", [TemplateRef])
3913
- ], FsListComponent.prototype, "_emptyStateTemplate", null);
3914
- FsListComponent = __decorate([
3915
- Component({
3916
- selector: 'fs-list',
3917
- template: "<div class=\"fs-list-container\"\r\n [ngClass]=\"{ 'has-filter-input': list.filterInput,\r\n 'has-filters': list.filterConfig?.items.length,\r\n 'has-heading': list.heading,\r\n 'has-status': list.status,\r\n 'has-chips': list.chips,\r\n 'has-actions': list.actions.hasActions,\r\n 'first-load': firstLoad,\r\n 'loading': list.loading$ | async }\">\r\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\r\n</div>\r\n\r\n<ng-template #listContainerContent>\r\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\r\n <!-- Header -->\r\n <div class=\"fs-list-header-container\">\r\n\r\n <div class=\"fs-list-header\"\r\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated$ || !list.filterConfig?.items.length }\">\r\n <div class=\"heading-container\">\r\n <h2 class=\"heading\" *ngIf=\"list.heading\">{{list.heading}}</h2>\r\n <span class=\"subheading\" *ngIf=\"list.subheading\">{{list.subheading}}</span>\r\n </div>\r\n <fs-filter\r\n class=\"fs-list-filter\"\r\n *ngIf=\"list.filterConfig\"\r\n [filter]=\"list.filterConfig\"\r\n [showSortBy]=\"!list.status\"\r\n [showFilterInput]=\"list.filterInput\"\r\n (ready)=\"filterReady()\">\r\n\r\n <ng-template fsFilterStatusBar>\r\n <ng-container *ngIf=\"\r\n list.paging &&\r\n !(reorderController.manualReorderActivated$ | async) &&\r\n (!reorderController.enabled || reorderController.status) &&\r\n ((list.scrollable && list.scrollable.status) || !list.scrollable)\">\r\n <!-- Status -->\r\n <fs-list-status\r\n class=\"fs-list-status\"\r\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\r\n [rows]=\"listData\"\r\n [sorting]=\"list.sorting\"\r\n [paging]=\"list.paging\"\r\n [firstLoad]=\"firstLoad\"\r\n [scrollable]=\"list.scrollable\">\r\n </fs-list-status>\r\n </ng-container>\r\n </ng-template>\r\n </fs-filter>\r\n </div>\r\n </div>\r\n\r\n <!-- Table implementation -->\r\n <div class=\"fs-list-table-container\">\r\n <table class=\"fs-list-table\" role=\"grid\" *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\r\n <thead fs-list-head\r\n class=\"fs-list-head\"\r\n role=\"rowgroup\"\r\n *ngIf=\"list.columns.hasHeader\"\r\n [ngClass]=\"list.columns.theadClass\"\r\n [columns]=\"list.columns.visibleColumns\"\r\n [sorting]=\"list.sorting\"\r\n [selection]=\"list.selection\"\r\n [hasRowActions]=\"list.hasRowActions\"\r\n >\r\n </thead>\r\n\r\n <tbody fs-list-body\r\n fsListDraggableList\r\n class=\"fs-list-body\"\r\n role=\"rowgroup\"\r\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\r\n [rows]=\"listData\"\r\n [rowActionsRaw]=\"list.rowActionsRaw\"\r\n [groupActionsRaw]=\"list.groupActionsRaw\"\r\n [hasRowActions]=\"list.hasRowActions\"\r\n [rowEvents]=\"list.rowEvents\"\r\n [rowClass]=\"list.rowClass\"\r\n [columns]=\"list.columns.visibleColumns\"\r\n [restoreMode]=\"list.restoreMode\"\r\n [selection]=\"list.selection\"\r\n [rowRemoved]=\"rowRemoved\"\r\n >\r\n </tbody>\r\n\r\n <tfoot fs-list-footer\r\n class=\"fs-list-footer\"\r\n *ngIf=\"list.columns.hasFooter\"\r\n [columns]=\"list.columns.visibleColumns\"\r\n [selection]=\"list.selection\"\r\n [hasRowActions]=\"list.hasRowActions\">\r\n </tfoot>\r\n </table>\r\n <fs-list-loader\r\n *ngIf=\"firstLoad\"\r\n [columns]=\"list.columns.columns\"\r\n [loaderLines]=\"loaderLines\">\r\n </fs-list-loader>\r\n </div>\r\n\r\n <fs-list-pagination\r\n *ngIf=\"paginatorVisible\"\r\n class=\"fs-list-pagination\"\r\n [rows]=\"listData\"\r\n [pagination]=\"list.paging\">\r\n </fs-list-pagination>\r\n\r\n\r\n <ng-container *ngIf=\"!firstLoad\">\r\n <div \r\n *ngIf=\"listData.length === 0\" \r\n class=\"fs-list-no-results-container\">\r\n <div \r\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\r\n class=\"fs-list-no-results\">\r\n {{ list.noResults?.message }}\r\n </div>\r\n <ng-container *ngIf=\"list.emptyStateEnabled\">\r\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\r\n </ng-container> \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n",
3918
- changeDetection: ChangeDetectionStrategy.OnPush,
3919
- providers: [
3920
- GroupExpandNotifierService,
3921
- PersistanceController,
3922
- ReorderController,
3923
- ],
3924
- styles: ["::ng-deep .fs-list{display:block;width:100%}::ng-deep .fs-list .fs-list-swap-restricted{opacity:.5}::ng-deep .fs-list .fs-list-no-drop{cursor:no-drop}::ng-deep .fs-list .fs-filter{margin-bottom:0;position:initial!important;display:block}::ng-deep .fs-list .fs-list-container.first-load .filter-chips,::ng-deep .fs-list .fs-list-container.first-load .fs-list-body,::ng-deep .fs-list .fs-list-container.first-load .fs-list-no-results-container,::ng-deep .fs-list .fs-list-container.first-load .fs-list-status,::ng-deep .fs-list .fs-list-container.first-load fs-list-pagination,::ng-deep .fs-list .fs-list-container.loading .filter-chips,::ng-deep .fs-list .fs-list-container.loading .fs-list-body,::ng-deep .fs-list .fs-list-container.loading .fs-list-no-results-container,::ng-deep .fs-list .fs-list-container.loading .fs-list-status,::ng-deep .fs-list .fs-list-container.loading fs-list-pagination{opacity:.4;pointer-events:none}::ng-deep .fs-list .fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}::ng-deep .fs-list .fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}::ng-deep .fs-list .fs-list-container.has-actions .fs-list-actions{margin-left:5px}::ng-deep .fs-list .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list .fs-list-table,::ng-deep .fs-list table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}::ng-deep .fs-list .hidden{display:none}::ng-deep .fs-list .fs-list-head,::ng-deep .fs-list thead{display:table-header-group}::ng-deep .fs-list .fs-list-head .fs-list-col,::ng-deep .fs-list .fs-list-head th,::ng-deep .fs-list thead .fs-list-col,::ng-deep .fs-list thead th{padding:8px;font-weight:400;font-size:13px;color:#8f8f8f}::ng-deep .fs-list .fs-list-head .fs-list-col.fs-list-col-selection,::ng-deep .fs-list .fs-list-head th.fs-list-col-selection,::ng-deep .fs-list thead .fs-list-col.fs-list-col-selection,::ng-deep .fs-list thead th.fs-list-col-selection{width:1%;text-align:left}::ng-deep .fs-list .fs-list-head .fs-list-col.sorting,::ng-deep .fs-list .fs-list-head th.sorting,::ng-deep .fs-list thead .fs-list-col.sorting,::ng-deep .fs-list thead th.sorting{cursor:pointer;background-image:none}::ng-deep .fs-list .fs-list-head .fs-list-col.sorting:hover,::ng-deep .fs-list .fs-list-head th.sorting:hover,::ng-deep .fs-list thead .fs-list-col.sorting:hover,::ng-deep .fs-list thead th.sorting:hover{background-color:#f6f6f6}::ng-deep .fs-list .fs-list-head .fs-list-col .wrap,::ng-deep .fs-list .fs-list-head th .wrap,::ng-deep .fs-list thead .fs-list-col .wrap,::ng-deep .fs-list thead th .wrap{display:inline-flex;vertical-align:middle;white-space:nowrap}::ng-deep .fs-list .fs-list-head .fs-list-col .wrap mat-icon,::ng-deep .fs-list .fs-list-head th .wrap mat-icon,::ng-deep .fs-list thead .fs-list-col .wrap mat-icon,::ng-deep .fs-list thead th .wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}::ng-deep .fs-list .fs-list-head .fs-list-col .wrap .direction,::ng-deep .fs-list .fs-list-head th .wrap .direction,::ng-deep .fs-list thead .fs-list-col .wrap .direction,::ng-deep .fs-list thead th .wrap .direction{margin-left:5px}::ng-deep .fs-list .fs-list-body,::ng-deep .fs-list tbody{display:table-row-group;position:relative}::ng-deep .fs-list .fs-list-body.disabled,::ng-deep .fs-list tbody.disabled{opacity:.4;pointer-events:none}::ng-deep .fs-list .fs-list-body .fs-list-col,::ng-deep .fs-list .fs-list-body td,::ng-deep .fs-list tbody .fs-list-col,::ng-deep .fs-list tbody td{box-sizing:border-box}::ng-deep .fs-list .fs-list-body .fs-list-row:hover .fs-list-col,::ng-deep .fs-list .fs-list-body tr:hover td,::ng-deep .fs-list tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list tbody tr:hover td{background-color:#f6f6f6}::ng-deep .fs-list .fs-list-body .fs-list-row:hover .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row:hover td,::ng-deep .fs-list .fs-list-body tr:hover .fs-list-col,::ng-deep .fs-list .fs-list-body tr:hover td,::ng-deep .fs-list tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list tbody .fs-list-row:hover td,::ng-deep .fs-list tbody tr:hover .fs-list-col,::ng-deep .fs-list tbody tr:hover td{background-color:#f6f6f6}::ng-deep .fs-list .fs-list-body tr:first-child td,::ng-deep .fs-list tbody tr:first-child td{border-top:2px solid #ddd}::ng-deep .fs-list .fs-list-body tr:last-child td,::ng-deep .fs-list tbody tr:last-child td{border-bottom:2px solid #ddd}::ng-deep .fs-list .fs-list-body td,::ng-deep .fs-list tbody td{border-top:1px solid #ddd}::ng-deep .fs-list .fs-list-body .fs-list-row,::ng-deep .fs-list .fs-list-body tr,::ng-deep .fs-list .fs-list-footer .fs-list-row,::ng-deep .fs-list .fs-list-footer tr,::ng-deep .fs-list .fs-list-head .fs-list-row,::ng-deep .fs-list .fs-list-head tr,::ng-deep .fs-list tbody .fs-list-row,::ng-deep .fs-list tbody tr,::ng-deep .fs-list tfoot .fs-list-row,::ng-deep .fs-list tfoot tr,::ng-deep .fs-list thead .fs-list-row,::ng-deep .fs-list thead tr{display:table-row}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row td,::ng-deep .fs-list .fs-list-body .fs-list-row th,::ng-deep .fs-list .fs-list-body tr .fs-list-col,::ng-deep .fs-list .fs-list-body tr td,::ng-deep .fs-list .fs-list-body tr th,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-footer .fs-list-row td,::ng-deep .fs-list .fs-list-footer .fs-list-row th,::ng-deep .fs-list .fs-list-footer tr .fs-list-col,::ng-deep .fs-list .fs-list-footer tr td,::ng-deep .fs-list .fs-list-footer tr th,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-head .fs-list-row td,::ng-deep .fs-list .fs-list-head .fs-list-row th,::ng-deep .fs-list .fs-list-head tr .fs-list-col,::ng-deep .fs-list .fs-list-head tr td,::ng-deep .fs-list .fs-list-head tr th,::ng-deep .fs-list tbody .fs-list-row .fs-list-col,::ng-deep .fs-list tbody .fs-list-row td,::ng-deep .fs-list tbody .fs-list-row th,::ng-deep .fs-list tbody tr .fs-list-col,::ng-deep .fs-list tbody tr td,::ng-deep .fs-list tbody tr th,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col,::ng-deep .fs-list tfoot .fs-list-row td,::ng-deep .fs-list tfoot .fs-list-row th,::ng-deep .fs-list tfoot tr .fs-list-col,::ng-deep .fs-list tfoot tr td,::ng-deep .fs-list tfoot tr th,::ng-deep .fs-list thead .fs-list-row .fs-list-col,::ng-deep .fs-list thead .fs-list-row td,::ng-deep .fs-list thead .fs-list-row th,::ng-deep .fs-list thead tr .fs-list-col,::ng-deep .fs-list thead tr td,::ng-deep .fs-list thead tr th{display:table-cell;padding:8px;vertical-align:middle;outline:0}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-body tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-body tr td.drag-col,::ng-deep .fs-list .fs-list-body tr th.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-footer tr td.drag-col,::ng-deep .fs-list .fs-list-footer tr th.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-head tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-head tr td.drag-col,::ng-deep .fs-list .fs-list-head tr th.drag-col,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list tbody .fs-list-row td.drag-col,::ng-deep .fs-list tbody .fs-list-row th.drag-col,::ng-deep .fs-list tbody tr .fs-list-col.drag-col,::ng-deep .fs-list tbody tr td.drag-col,::ng-deep .fs-list tbody tr th.drag-col,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list tfoot .fs-list-row td.drag-col,::ng-deep .fs-list tfoot .fs-list-row th.drag-col,::ng-deep .fs-list tfoot tr .fs-list-col.drag-col,::ng-deep .fs-list tfoot tr td.drag-col,::ng-deep .fs-list tfoot tr th.drag-col,::ng-deep .fs-list thead .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list thead .fs-list-row td.drag-col,::ng-deep .fs-list thead .fs-list-row th.drag-col,::ng-deep .fs-list thead tr .fs-list-col.drag-col,::ng-deep .fs-list thead tr td.drag-col,::ng-deep .fs-list thead tr th.drag-col{width:24px;text-align:center;cursor:-webkit-grab;cursor:grab}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr th.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list tbody tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tbody tr td.drag-col mat-icon,::ng-deep .fs-list tbody tr th.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list tfoot tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tfoot tr td.drag-col mat-icon,::ng-deep .fs-list tfoot tr th.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list thead tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list thead tr td.drag-col mat-icon,::ng-deep .fs-list thead tr th.drag-col mat-icon{display:flex}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-body tr td.row-actions,::ng-deep .fs-list .fs-list-body tr th.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-footer tr td.row-actions,::ng-deep .fs-list .fs-list-footer tr th.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-head tr td.row-actions,::ng-deep .fs-list .fs-list-head tr th.row-actions,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list tbody .fs-list-row td.row-actions,::ng-deep .fs-list tbody .fs-list-row th.row-actions,::ng-deep .fs-list tbody tr .fs-list-col.row-actions,::ng-deep .fs-list tbody tr td.row-actions,::ng-deep .fs-list tbody tr th.row-actions,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list tfoot .fs-list-row td.row-actions,::ng-deep .fs-list tfoot .fs-list-row th.row-actions,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions,::ng-deep .fs-list tfoot tr td.row-actions,::ng-deep .fs-list tfoot tr th.row-actions,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list thead .fs-list-row td.row-actions,::ng-deep .fs-list thead .fs-list-row th.row-actions,::ng-deep .fs-list thead tr .fs-list-col.row-actions,::ng-deep .fs-list thead tr td.row-actions,::ng-deep .fs-list thead tr th.row-actions{width:1%;white-space:nowrap;padding-right:10px;overflow:hidden}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list thead tr td.row-actions .row-inline-action,::ng-deep .fs-list thead tr th.row-actions .row-inline-action{margin-left:12px;display:inline-block}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr th.row-actions .row-inline-action:first-child{margin-left:0}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr td.row-actions .row-menu-action,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr th.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr td.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr th.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr td.row-actions .row-menu-action,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr th.row-actions .row-menu-action{width:35px;justify-content:center;align-items:center}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-body .fs-list-row td.left,::ng-deep .fs-list .fs-list-body .fs-list-row th.left,::ng-deep .fs-list .fs-list-body tr .fs-list-col.left,::ng-deep .fs-list .fs-list-body tr td.left,::ng-deep .fs-list .fs-list-body tr th.left,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-footer .fs-list-row td.left,::ng-deep .fs-list .fs-list-footer .fs-list-row th.left,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.left,::ng-deep .fs-list .fs-list-footer tr td.left,::ng-deep .fs-list .fs-list-footer tr th.left,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-head .fs-list-row td.left,::ng-deep .fs-list .fs-list-head .fs-list-row th.left,::ng-deep .fs-list .fs-list-head tr .fs-list-col.left,::ng-deep .fs-list .fs-list-head tr td.left,::ng-deep .fs-list .fs-list-head tr th.left,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.left,::ng-deep .fs-list tbody .fs-list-row td.left,::ng-deep .fs-list tbody .fs-list-row th.left,::ng-deep .fs-list tbody tr .fs-list-col.left,::ng-deep .fs-list tbody tr td.left,::ng-deep .fs-list tbody tr th.left,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.left,::ng-deep .fs-list tfoot .fs-list-row td.left,::ng-deep .fs-list tfoot .fs-list-row th.left,::ng-deep .fs-list tfoot tr .fs-list-col.left,::ng-deep .fs-list tfoot tr td.left,::ng-deep .fs-list tfoot tr th.left,::ng-deep .fs-list thead .fs-list-row .fs-list-col.left,::ng-deep .fs-list thead .fs-list-row td.left,::ng-deep .fs-list thead .fs-list-row th.left,::ng-deep .fs-list thead tr .fs-list-col.left,::ng-deep .fs-list thead tr td.left,::ng-deep .fs-list thead tr th.left{text-align:left}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-body .fs-list-row td.center,::ng-deep .fs-list .fs-list-body .fs-list-row th.center,::ng-deep .fs-list .fs-list-body tr .fs-list-col.center,::ng-deep .fs-list .fs-list-body tr td.center,::ng-deep .fs-list .fs-list-body tr th.center,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-footer .fs-list-row td.center,::ng-deep .fs-list .fs-list-footer .fs-list-row th.center,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.center,::ng-deep .fs-list .fs-list-footer tr td.center,::ng-deep .fs-list .fs-list-footer tr th.center,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-head .fs-list-row td.center,::ng-deep .fs-list .fs-list-head .fs-list-row th.center,::ng-deep .fs-list .fs-list-head tr .fs-list-col.center,::ng-deep .fs-list .fs-list-head tr td.center,::ng-deep .fs-list .fs-list-head tr th.center,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.center,::ng-deep .fs-list tbody .fs-list-row td.center,::ng-deep .fs-list tbody .fs-list-row th.center,::ng-deep .fs-list tbody tr .fs-list-col.center,::ng-deep .fs-list tbody tr td.center,::ng-deep .fs-list tbody tr th.center,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.center,::ng-deep .fs-list tfoot .fs-list-row td.center,::ng-deep .fs-list tfoot .fs-list-row th.center,::ng-deep .fs-list tfoot tr .fs-list-col.center,::ng-deep .fs-list tfoot tr td.center,::ng-deep .fs-list tfoot tr th.center,::ng-deep .fs-list thead .fs-list-row .fs-list-col.center,::ng-deep .fs-list thead .fs-list-row td.center,::ng-deep .fs-list thead .fs-list-row th.center,::ng-deep .fs-list thead tr .fs-list-col.center,::ng-deep .fs-list thead tr td.center,::ng-deep .fs-list thead tr th.center{text-align:center}::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-body .fs-list-row td.right,::ng-deep .fs-list .fs-list-body .fs-list-row th.right,::ng-deep .fs-list .fs-list-body tr .fs-list-col.right,::ng-deep .fs-list .fs-list-body tr td.right,::ng-deep .fs-list .fs-list-body tr th.right,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-footer .fs-list-row td.right,::ng-deep .fs-list .fs-list-footer .fs-list-row th.right,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.right,::ng-deep .fs-list .fs-list-footer tr td.right,::ng-deep .fs-list .fs-list-footer tr th.right,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-head .fs-list-row td.right,::ng-deep .fs-list .fs-list-head .fs-list-row th.right,::ng-deep .fs-list .fs-list-head tr .fs-list-col.right,::ng-deep .fs-list .fs-list-head tr td.right,::ng-deep .fs-list .fs-list-head tr th.right,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.right,::ng-deep .fs-list tbody .fs-list-row td.right,::ng-deep .fs-list tbody .fs-list-row th.right,::ng-deep .fs-list tbody tr .fs-list-col.right,::ng-deep .fs-list tbody tr td.right,::ng-deep .fs-list tbody tr th.right,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.right,::ng-deep .fs-list tfoot .fs-list-row td.right,::ng-deep .fs-list tfoot .fs-list-row th.right,::ng-deep .fs-list tfoot tr .fs-list-col.right,::ng-deep .fs-list tfoot tr td.right,::ng-deep .fs-list tfoot tr th.right,::ng-deep .fs-list thead .fs-list-row .fs-list-col.right,::ng-deep .fs-list thead .fs-list-row td.right,::ng-deep .fs-list thead .fs-list-row th.right,::ng-deep .fs-list thead tr .fs-list-col.right,::ng-deep .fs-list thead tr td.right,::ng-deep .fs-list thead tr th.right{text-align:right}::ng-deep .fs-list .fs-list-body .fs-list-row.draggable,::ng-deep .fs-list .fs-list-body tr.draggable,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable,::ng-deep .fs-list .fs-list-footer tr.draggable,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable,::ng-deep .fs-list .fs-list-head tr.draggable,::ng-deep .fs-list tbody .fs-list-row.draggable,::ng-deep .fs-list tbody tr.draggable,::ng-deep .fs-list tfoot .fs-list-row.draggable,::ng-deep .fs-list tfoot tr.draggable,::ng-deep .fs-list thead .fs-list-row.draggable,::ng-deep .fs-list thead tr.draggable{position:fixed;z-index:9999;box-shadow:2px 2px 2px 0 rgba(158,158,158,.65);border-radius:5px}::ng-deep .fs-list .fs-list-body .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-body tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-body tr.draggable td,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-footer tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-footer tr.draggable td,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-head tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-head tr.draggable td,::ng-deep .fs-list tbody .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list tbody .fs-list-row.draggable td,::ng-deep .fs-list tbody tr.draggable .fs-list-col,::ng-deep .fs-list tbody tr.draggable td,::ng-deep .fs-list tfoot .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list tfoot .fs-list-row.draggable td,::ng-deep .fs-list tfoot tr.draggable .fs-list-col,::ng-deep .fs-list tfoot tr.draggable td,::ng-deep .fs-list thead .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list thead .fs-list-row.draggable td,::ng-deep .fs-list thead tr.draggable .fs-list-col,::ng-deep .fs-list thead tr.draggable td{background-color:#f6f6f6;border:none}::ng-deep .fs-list .fs-list-header .heading-container{font-weight:600;font-size:18px;color:#212537;display:flex;flex-direction:column;justify-content:center}::ng-deep .fs-list .fs-list-header .heading{margin:0;line-height:36px}::ng-deep .fs-list .fs-list-header .subheading{display:block;font-size:14px;color:#929292;font-weight:400}::ng-deep .fs-list .fs-list-header .fs-list-actions{white-space:nowrap;float:right}::ng-deep .fs-list .fs-list-header .fs-list-actions .menu-button{width:36px;height:36px;line-height:36px}::ng-deep .fs-list .fs-list-header .action-button{margin-left:5px}::ng-deep .fs-list .fs-list-header .action-button:first-child{margin-left:0}::ng-deep .fs-list .fs-list-header .mat-button{margin-top:0;margin-bottom:0;margin-right:0}::ng-deep .fs-list .fs-list-container{width:100%}::ng-deep .fs-list .fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}::ng-deep .fs-list .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list tfoot td{padding:8px}::ng-deep .reorder-in-progress{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}::ng-deep .draggable-elem td{opacity:.2}::ng-deep .hidden-mobile-menu-action{display:none!important}::ng-deep .hidden-mobile{display:none!important}@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}}"]
3925
- }),
3926
- __param(2, Optional()), __param(2, Inject(FS_LIST_DEFAULT_CONFIG)),
3927
- __param(3, Optional()),
3928
- __param(12, Optional()),
3929
- __param(13, Optional()),
3930
- __metadata("design:paramtypes", [ReorderController,
3931
- ElementRef, Object, FsScrollService,
3932
- SelectionDialog,
3933
- MatDialog,
3934
- ChangeDetectorRef,
3935
- GroupExpandNotifierService,
3936
- Router,
3937
- ActivatedRoute,
3938
- PersistanceController,
3939
- Location,
3940
- MatDialogRef,
3941
- DrawerRef])
3942
- ], FsListComponent);
3843
+ }
3844
+ FsHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, deps: [{ token: ReorderController }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3845
+ FsHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsHeadComponent, selector: "[fs-list-head]", inputs: { sorting: "sorting", columns: "columns", hasRowActions: "hasRowActions", selection: "selection" }, 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=\"reorderController.leftReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Selection -->\n <th *ngIf=\"selection\" 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 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\"></th>\n\n <!-- Drag -->\n <th *ngIf=\"reorderController.rightReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", components: [{ type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: FsHeadCellComponent, selector: "[fs-head-cell]" }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], pipes: { "async": i3$1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
3846
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, decorators: [{
3847
+ type: Component,
3848
+ args: [{
3849
+ selector: '[fs-list-head]',
3850
+ templateUrl: 'head.component.html',
3851
+ changeDetection: ChangeDetectionStrategy.OnPush
3852
+ }]
3853
+ }], ctorParameters: function () { return [{ type: ReorderController }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { sorting: [{
3854
+ type: Input
3855
+ }], columns: [{
3856
+ type: Input
3857
+ }], hasRowActions: [{
3858
+ type: Input
3859
+ }], selection: [{
3860
+ type: Input
3861
+ }], rowsContainer: [{
3862
+ type: ViewChild,
3863
+ args: ['rowsContainer', { read: ViewContainerRef, static: true }]
3864
+ }] } });
3943
3865
 
3944
- let FsListDraggableListDirective = class FsListDraggableListDirective {
3866
+ class FsListDraggableListDirective {
3945
3867
  constructor(_cdRef, _zone, _containerElement, _reorderController) {
3946
3868
  this._cdRef = _cdRef;
3947
3869
  this._zone = _zone;
@@ -4178,66 +4100,202 @@ let FsListDraggableListDirective = class FsListDraggableListDirective {
4178
4100
  e.preventDefault();
4179
4101
  }
4180
4102
  }
4181
- };
4182
- FsListDraggableListDirective.ctorParameters = () => [
4183
- { type: ChangeDetectorRef },
4184
- { type: NgZone },
4185
- { type: ElementRef },
4186
- { type: ReorderController }
4187
- ];
4188
- __decorate([
4189
- Input('rows'),
4190
- __metadata("design:type", Array)
4191
- ], FsListDraggableListDirective.prototype, "_rows", void 0);
4192
- FsListDraggableListDirective = __decorate([
4193
- Directive({
4194
- selector: '[fsListDraggableList]',
4195
- }),
4196
- __metadata("design:paramtypes", [ChangeDetectorRef,
4197
- NgZone,
4198
- ElementRef,
4199
- ReorderController])
4200
- ], FsListDraggableListDirective);
4103
+ }
4104
+ FsListDraggableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableListDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: ReorderController }], target: i0.ɵɵFactoryTarget.Directive });
4105
+ FsListDraggableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: { _rows: ["rows", "_rows"] }, ngImport: i0 });
4106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableListDirective, decorators: [{
4107
+ type: Directive,
4108
+ args: [{
4109
+ selector: '[fsListDraggableList]',
4110
+ }]
4111
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: ReorderController }]; }, propDecorators: { _rows: [{
4112
+ type: Input,
4113
+ args: ['rows']
4114
+ }] } });
4201
4115
 
4202
- let FsRowComponent = class FsRowComponent {
4203
- constructor(el, reorderController, _cdRef, _differs, _renderer, _draggableList) {
4204
- this.el = el;
4205
- this.reorderController = reorderController;
4206
- this._cdRef = _cdRef;
4207
- this._differs = _differs;
4208
- this._renderer = _renderer;
4209
- this._draggableList = _draggableList;
4210
- this.role = 'row';
4211
- this.rowActionsRaw = [];
4212
- this.groupActionsRaw = [];
4213
- this.hasRowActions = false;
4214
- this.rowEvents = {};
4116
+ class FsRowInlineActionComponent {
4117
+ constructor(_fsPrompt) {
4118
+ this._fsPrompt = _fsPrompt;
4119
+ this.clicked = new EventEmitter();
4120
+ this.fileSelect = new EventEmitter();
4121
+ }
4122
+ actionClick(event) {
4123
+ this.clicked.emit(event);
4124
+ }
4125
+ fileSelected(event) {
4126
+ this.fileSelect.emit(event);
4127
+ }
4128
+ }
4129
+ FsRowInlineActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowInlineActionComponent, deps: [{ token: i1$1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
4130
+ FsRowInlineActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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", components: [{ type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2$1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "clicked", "declined"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowInlineActionComponent, decorators: [{
4132
+ type: Component,
4133
+ args: [{
4134
+ selector: 'fs-list-row-inline-action',
4135
+ templateUrl: './inline-action.component.html',
4136
+ changeDetection: ChangeDetectionStrategy.OnPush,
4137
+ }]
4138
+ }], ctorParameters: function () { return [{ type: i1$1.FsPrompt }]; }, propDecorators: { action: [{
4139
+ type: Input
4140
+ }], clicked: [{
4141
+ type: Output
4142
+ }], fileSelect: [{
4143
+ type: Output
4144
+ }] } });
4145
+
4146
+ class FsRowMenuActionComponent {
4147
+ constructor() {
4148
+ this.fileSelect = new EventEmitter();
4149
+ this.fileError = new EventEmitter();
4150
+ }
4151
+ }
4152
+ FsRowMenuActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowMenuActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4153
+ FsRowMenuActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: { 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}}\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 (select)=\"fileSelect.emit($event)\"\n (error)=\"fileError.emit($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n </fs-file>\n</ng-template>\n", components: [{ type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$1.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "clicked", "declined"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
4155
+ type: Component,
4156
+ args: [{
4157
+ selector: 'fs-list-row-menu-action',
4158
+ templateUrl: './menu-action.component.html',
4159
+ changeDetection: ChangeDetectionStrategy.OnPush,
4160
+ }]
4161
+ }], propDecorators: { icon: [{
4162
+ type: Input
4163
+ }], label: [{
4164
+ type: Input
4165
+ }], file: [{
4166
+ type: Input
4167
+ }], fileSelect: [{
4168
+ type: Output
4169
+ }], fileError: [{
4170
+ type: Output
4171
+ }] } });
4172
+
4173
+ class FsRowActionsComponent {
4174
+ constructor(_fsPrompt) {
4175
+ this._fsPrompt = _fsPrompt;
4215
4176
  this.restoreMode = false;
4216
- this.ReorderPosition = ReorderPosition;
4217
- this.ReorderStrategy = ReorderStrategy;
4218
4177
  this.rowActions = [];
4219
4178
  this.menuRowActions = [];
4220
4179
  this.inlineRowActions = [];
4221
- this.selected = false;
4222
- this.indeterminateSelected = false;
4223
- this._eventListeners = [];
4224
4180
  this._destroy$ = new Subject();
4225
- this._rowDiffer = _differs.find({}).create();
4226
4181
  }
4227
- get rowCssClass() {
4228
- let cls = 'fs-list-row';
4229
- if (this.rowIndex % 2 !== 0)
4230
- cls += ' fs-list-row-odd';
4231
- if (this.rowIndex % 2 === 0)
4232
- cls += ' fs-list-row-even';
4233
- if (this.row && this.row.isGroup)
4234
- cls += ' fs-list-row-group';
4235
- if (this.rowClass) {
4236
- const resultClass = this.rowClass(this.row.data);
4237
- if (typeof resultClass === 'string') {
4238
- cls += ` ${resultClass}`;
4239
- }
4240
- else if (typeof resultClass === 'object') {
4182
+ actionClick(action, row, event, menuRef) {
4183
+ if (action.remove) {
4184
+ if (typeof action.remove === 'boolean') {
4185
+ this.removeAction(action, row.data, event, this.index);
4186
+ }
4187
+ else {
4188
+ this._fsPrompt.confirm({
4189
+ title: action.remove.title,
4190
+ template: action.remove.template,
4191
+ }).pipe(take(1), takeUntil(this._destroy$)).subscribe({
4192
+ next: () => {
4193
+ this.removeAction(action, row.data, event, this.index);
4194
+ },
4195
+ error: () => { },
4196
+ });
4197
+ }
4198
+ }
4199
+ else {
4200
+ action.click(row.data, event, this.index, menuRef);
4201
+ }
4202
+ }
4203
+ /**
4204
+ * Track By for improve change detection
4205
+ * @param index
4206
+ */
4207
+ trackByFn(index) {
4208
+ return index;
4209
+ }
4210
+ clickOnTrigger(event) {
4211
+ event.stopPropagation();
4212
+ this.rowActions
4213
+ .forEach((action) => action.updateLabel(this.row.data));
4214
+ }
4215
+ /**
4216
+ * Emit that some row must be removed
4217
+ * @param action
4218
+ * @param row
4219
+ * @param event
4220
+ * @param index
4221
+ */
4222
+ removeAction(action, row, event, index) {
4223
+ const removeObservable = action.click(row, event, index);
4224
+ if (removeObservable && removeObservable instanceof Observable) {
4225
+ removeObservable
4226
+ .pipe(take(1), takeUntil(this._destroy$))
4227
+ .subscribe(() => {
4228
+ this.rowRemoved.emit(row);
4229
+ });
4230
+ }
4231
+ }
4232
+ }
4233
+ FsRowActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowActionsComponent, deps: [{ token: i1$1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
4234
+ FsRowActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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 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 class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n (click)=\"clickOnTrigger($event)\"\n #menuRef\n>\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 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 [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\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\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 fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\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}}\n </ng-template>\n </ng-container>\n</fs-menu>\n", components: [{ type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["action"], outputs: ["clicked", "fileSelect"] }, { type: i2$3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass"], outputs: ["opened", "closed"] }, { type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["icon", "label", "file"], outputs: ["fileSelect", "fileError"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i2$3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]", inputs: ["fsClass", "class", "id", "label", "hidden", "groupHidden", "dismissAfterClick", "link", "target", "queryParams"], outputs: ["click"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowActionsComponent, decorators: [{
4236
+ type: Component,
4237
+ args: [{
4238
+ selector: 'fs-list-row-actions',
4239
+ templateUrl: './actions.component.html',
4240
+ changeDetection: ChangeDetectionStrategy.OnPush,
4241
+ }]
4242
+ }], ctorParameters: function () { return [{ type: i1$1.FsPrompt }]; }, propDecorators: { row: [{
4243
+ type: Input
4244
+ }], index: [{
4245
+ type: Input
4246
+ }], restoreMode: [{
4247
+ type: Input
4248
+ }], rowActions: [{
4249
+ type: Input
4250
+ }], rowRemoved: [{
4251
+ type: Input
4252
+ }], menuRowActions: [{
4253
+ type: Input
4254
+ }], inlineRowActions: [{
4255
+ type: Input
4256
+ }], restoreAction: [{
4257
+ type: Input
4258
+ }] } });
4259
+
4260
+ class FsRowComponent {
4261
+ constructor(el, reorderController, _cdRef, _differs, _renderer, _draggableList) {
4262
+ this.el = el;
4263
+ this.reorderController = reorderController;
4264
+ this._cdRef = _cdRef;
4265
+ this._differs = _differs;
4266
+ this._renderer = _renderer;
4267
+ this._draggableList = _draggableList;
4268
+ this.role = 'row';
4269
+ this.rowActionsRaw = [];
4270
+ this.groupActionsRaw = [];
4271
+ this.hasRowActions = false;
4272
+ this.rowEvents = {};
4273
+ this.restoreMode = false;
4274
+ this.ReorderPosition = ReorderPosition;
4275
+ this.ReorderStrategy = ReorderStrategy;
4276
+ this.rowActions = [];
4277
+ this.menuRowActions = [];
4278
+ this.inlineRowActions = [];
4279
+ this.selected = false;
4280
+ this.indeterminateSelected = false;
4281
+ this._eventListeners = [];
4282
+ this._destroy$ = new Subject();
4283
+ this._rowDiffer = _differs.find({}).create();
4284
+ }
4285
+ get rowCssClass() {
4286
+ let cls = 'fs-list-row';
4287
+ if (this.rowIndex % 2 !== 0)
4288
+ cls += ' fs-list-row-odd';
4289
+ if (this.rowIndex % 2 === 0)
4290
+ cls += ' fs-list-row-even';
4291
+ if (this.row && this.row.isGroup)
4292
+ cls += ' fs-list-row-group';
4293
+ if (this.rowClass) {
4294
+ const resultClass = this.rowClass(this.row.data);
4295
+ if (typeof resultClass === 'string') {
4296
+ cls += ` ${resultClass}`;
4297
+ }
4298
+ else if (typeof resultClass === 'object') {
4241
4299
  const keys = Object.keys(resultClass);
4242
4300
  for (const k of keys) {
4243
4301
  if (resultClass[k] === true)
@@ -4376,87 +4434,114 @@ let FsRowComponent = class FsRowComponent {
4376
4434
  }
4377
4435
  });
4378
4436
  }
4379
- };
4380
- FsRowComponent.ctorParameters = () => [
4381
- { type: ElementRef },
4382
- { type: ReorderController },
4383
- { type: ChangeDetectorRef },
4384
- { type: KeyValueDiffers },
4385
- { type: Renderer2 },
4386
- { type: FsListDraggableListDirective }
4387
- ];
4388
- __decorate([
4389
- HostBinding('attr.role'),
4390
- __metadata("design:type", Object)
4391
- ], FsRowComponent.prototype, "role", void 0);
4392
- __decorate([
4393
- Input(),
4394
- __metadata("design:type", Row)
4395
- ], FsRowComponent.prototype, "row", void 0);
4396
- __decorate([
4397
- Input(),
4398
- __metadata("design:type", Array)
4399
- ], FsRowComponent.prototype, "rowActionsRaw", void 0);
4400
- __decorate([
4401
- Input(),
4402
- __metadata("design:type", Array)
4403
- ], FsRowComponent.prototype, "groupActionsRaw", void 0);
4404
- __decorate([
4405
- Input(),
4406
- __metadata("design:type", Object)
4407
- ], FsRowComponent.prototype, "hasRowActions", void 0);
4408
- __decorate([
4409
- Input(),
4410
- __metadata("design:type", Object)
4411
- ], FsRowComponent.prototype, "rowEvents", void 0);
4412
- __decorate([
4413
- Input(),
4414
- __metadata("design:type", Object)
4415
- ], FsRowComponent.prototype, "rowClass", void 0);
4416
- __decorate([
4417
- Input(),
4418
- __metadata("design:type", Object)
4419
- ], FsRowComponent.prototype, "restoreMode", void 0);
4420
- __decorate([
4421
- Input(),
4422
- __metadata("design:type", Number)
4423
- ], FsRowComponent.prototype, "rowIndex", void 0);
4424
- __decorate([
4425
- Input(),
4426
- __metadata("design:type", Array)
4427
- ], FsRowComponent.prototype, "columns", void 0);
4428
- __decorate([
4429
- Input(),
4430
- __metadata("design:type", SelectionController)
4431
- ], FsRowComponent.prototype, "selection", void 0);
4432
- __decorate([
4433
- Input(),
4434
- __metadata("design:type", EventEmitter)
4435
- ], FsRowComponent.prototype, "rowRemoved", void 0);
4436
- __decorate([
4437
- ViewChildren('td'),
4438
- __metadata("design:type", Object)
4439
- ], FsRowComponent.prototype, "cellRefs", void 0);
4440
- __decorate([
4441
- HostBinding('class'),
4442
- __metadata("design:type", Object),
4443
- __metadata("design:paramtypes", [])
4444
- ], FsRowComponent.prototype, "rowCssClass", null);
4445
- FsRowComponent = __decorate([
4446
- Component({
4447
- selector: '[fs-list-row]',
4448
- template: "<!-- Drag -->\n<ng-container *ngIf=\"reorderController.leftReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\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=\"(row.isGroup && !column.groupCellColspanned) || (!row.isGroup && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"column.cellConfigs.classesString\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(row.isGroup && column.groupCellConfigs.colspan) || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"reorderController.rightReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\">\n <fs-list-row-actions [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</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible; else emptyCell\">\n <td class=\"fs-list-col drag-col\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\"\n >\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",
4449
- changeDetection: ChangeDetectionStrategy.OnPush
4450
- }),
4451
- __metadata("design:paramtypes", [ElementRef,
4452
- ReorderController,
4453
- ChangeDetectorRef,
4454
- KeyValueDiffers,
4455
- Renderer2,
4456
- FsListDraggableListDirective])
4457
- ], FsRowComponent);
4437
+ }
4438
+ FsRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowComponent, deps: [{ token: i0.ElementRef }, { token: ReorderController }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Component });
4439
+ FsRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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" }, host: { properties: { "attr.role": "this.role", "class": "this.rowCssClass" } }, viewQueries: [{ propertyName: "cellRefs", predicate: ["td"], descendants: true }], ngImport: i0, template: "<!-- Drag -->\n<ng-container *ngIf=\"reorderController.leftReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\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=\"(row.isGroup && !column.groupCellColspanned) || (!row.isGroup && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"column.cellConfigs.classesString\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(row.isGroup && column.groupCellConfigs.colspan) || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"reorderController.rightReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\">\n <fs-list-row-actions [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</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible; else emptyCell\">\n <td class=\"fs-list-col drag-col\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\"\n >\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", components: [{ type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: FsCellComponent, selector: "[fs-cell]", inputs: ["column", "row", "rowIndex"] }, { type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: ["row", "index", "restoreMode", "rowActions", "rowRemoved", "menuRowActions", "inlineRowActions", "restoreAction"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], pipes: { "async": i3$1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4440
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowComponent, decorators: [{
4441
+ type: Component,
4442
+ args: [{
4443
+ selector: '[fs-list-row]',
4444
+ templateUrl: 'row.component.html',
4445
+ changeDetection: ChangeDetectionStrategy.OnPush
4446
+ }]
4447
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ReorderController }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: FsListDraggableListDirective }]; }, propDecorators: { role: [{
4448
+ type: HostBinding,
4449
+ args: ['attr.role']
4450
+ }], row: [{
4451
+ type: Input
4452
+ }], rowActionsRaw: [{
4453
+ type: Input
4454
+ }], groupActionsRaw: [{
4455
+ type: Input
4456
+ }], hasRowActions: [{
4457
+ type: Input
4458
+ }], rowEvents: [{
4459
+ type: Input
4460
+ }], rowClass: [{
4461
+ type: Input
4462
+ }], restoreMode: [{
4463
+ type: Input
4464
+ }], rowIndex: [{
4465
+ type: Input
4466
+ }], columns: [{
4467
+ type: Input
4468
+ }], selection: [{
4469
+ type: Input
4470
+ }], rowRemoved: [{
4471
+ type: Input
4472
+ }], cellRefs: [{
4473
+ type: ViewChildren,
4474
+ args: ['td']
4475
+ }], rowCssClass: [{
4476
+ type: HostBinding,
4477
+ args: ['class']
4478
+ }] } });
4479
+
4480
+ class FsListDraggableRowDirective {
4481
+ constructor(_el, _renderer, _reorderController, _draggableList) {
4482
+ this._el = _el;
4483
+ this._renderer = _renderer;
4484
+ this._reorderController = _reorderController;
4485
+ this._draggableList = _draggableList;
4486
+ this._destroy$ = new Subject();
4487
+ }
4488
+ ngOnInit() {
4489
+ if (this._reorderController.moveDropCallback) {
4490
+ this._listenDragEvents();
4491
+ }
4492
+ }
4493
+ ngOnDestroy() {
4494
+ this._destroy$.next();
4495
+ this._destroy$.complete();
4496
+ }
4497
+ _listenDragEvents() {
4498
+ this._draggableList
4499
+ .dragStart$
4500
+ .pipe(takeUntil(this._destroy$))
4501
+ .subscribe(() => {
4502
+ this._markReadyToSwapRows();
4503
+ });
4504
+ this._draggableList
4505
+ .dragEnd$
4506
+ .pipe(takeUntil(this._destroy$))
4507
+ .subscribe(() => {
4508
+ this._unmarkRows();
4509
+ });
4510
+ }
4511
+ _markReadyToSwapRows() {
4512
+ var _a, _b;
4513
+ const currentEl = this.row;
4514
+ const targetEl = this._draggableList.draggableItem;
4515
+ const currentElGroup = (currentEl.isChild && currentEl.parent) || currentEl;
4516
+ const targetElGroup = (targetEl.isChild && targetEl.parent) || targetEl;
4517
+ this.row.readyToSwap = this._reorderController.moveDropCallback({
4518
+ row1: currentEl === null || currentEl === void 0 ? void 0 : currentEl.data,
4519
+ row2: targetEl === null || targetEl === void 0 ? void 0 : targetEl.data,
4520
+ group1: (_a = currentEl === null || currentEl === void 0 ? void 0 : currentEl.parent) === null || _a === void 0 ? void 0 : _a.data,
4521
+ group2: (_b = targetEl === null || targetEl === void 0 ? void 0 : targetEl.parent) === null || _b === void 0 ? void 0 : _b.data
4522
+ });
4523
+ if (!this.row.readyToSwap) {
4524
+ this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');
4525
+ }
4526
+ }
4527
+ _unmarkRows() {
4528
+ if (!this.row.readyToSwap) {
4529
+ this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');
4530
+ }
4531
+ }
4532
+ }
4533
+ FsListDraggableRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableRowDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ReorderController }, { token: FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Directive });
4534
+ FsListDraggableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: { row: "row" }, ngImport: i0 });
4535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableRowDirective, decorators: [{
4536
+ type: Directive,
4537
+ args: [{
4538
+ selector: '[fsListDraggableRow]',
4539
+ }]
4540
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ReorderController }, { type: FsListDraggableListDirective }]; }, propDecorators: { row: [{
4541
+ type: Input
4542
+ }] } });
4458
4543
 
4459
- let FsBodyComponent = class FsBodyComponent {
4544
+ class FsBodyComponent {
4460
4545
  constructor(reorderContoller, el, cdRef, differs) {
4461
4546
  this.reorderContoller = reorderContoller;
4462
4547
  this.el = el;
@@ -4481,680 +4566,522 @@ let FsBodyComponent = class FsBodyComponent {
4481
4566
  this._destroy$.next();
4482
4567
  this._destroy$.complete();
4483
4568
  }
4484
- };
4485
- FsBodyComponent.ctorParameters = () => [
4486
- { type: ReorderController },
4487
- { type: ElementRef },
4488
- { type: ChangeDetectorRef },
4489
- { type: IterableDiffers }
4490
- ];
4491
- __decorate([
4492
- Input(),
4493
- __metadata("design:type", Array)
4494
- ], FsBodyComponent.prototype, "rows", void 0);
4495
- __decorate([
4496
- Input(),
4497
- __metadata("design:type", Array)
4498
- ], FsBodyComponent.prototype, "columns", void 0);
4499
- __decorate([
4500
- Input(),
4501
- __metadata("design:type", Object)
4502
- ], FsBodyComponent.prototype, "hasFooter", void 0);
4503
- __decorate([
4504
- Input(),
4505
- __metadata("design:type", Array)
4506
- ], FsBodyComponent.prototype, "rowActionsRaw", void 0);
4507
- __decorate([
4508
- Input(),
4509
- __metadata("design:type", Array)
4510
- ], FsBodyComponent.prototype, "groupActionsRaw", void 0);
4511
- __decorate([
4512
- Input(),
4513
- __metadata("design:type", Object)
4514
- ], FsBodyComponent.prototype, "rowEvents", void 0);
4515
- __decorate([
4516
- Input(),
4517
- __metadata("design:type", Object)
4518
- ], FsBodyComponent.prototype, "rowClass", void 0);
4519
- __decorate([
4520
- Input(),
4521
- __metadata("design:type", Object)
4522
- ], FsBodyComponent.prototype, "hasRowActions", void 0);
4523
- __decorate([
4524
- Input(),
4525
- __metadata("design:type", SelectionController)
4526
- ], FsBodyComponent.prototype, "selection", void 0);
4527
- __decorate([
4528
- Input(),
4529
- __metadata("design:type", Object)
4530
- ], FsBodyComponent.prototype, "restoreMode", void 0);
4531
- __decorate([
4532
- Input(),
4533
- __metadata("design:type", EventEmitter)
4534
- ], FsBodyComponent.prototype, "rowRemoved", void 0);
4535
- __decorate([
4536
- ViewChild('rowsContainer', { read: ViewContainerRef, static: true }),
4537
- __metadata("design:type", Object)
4538
- ], FsBodyComponent.prototype, "rowsContainer", void 0);
4539
- __decorate([
4540
- ContentChild(FsRowComponent, { read: TemplateRef, static: true }),
4541
- __metadata("design:type", TemplateRef)
4542
- ], FsBodyComponent.prototype, "headerTemplate", void 0);
4543
- FsBodyComponent = __decorate([
4544
- Component({
4545
- selector: '[fs-list-body]',
4546
- template: "<ng-container *ngFor=\"let row of rows; let i = index;\">\n <tr 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 [ngClass]=\"{ 'drag-row': reorderContoller.enabled }\"\n [rowRemoved]=\"rowRemoved\"\n #activeRow>\n </tr>\n</ng-container>\n",
4547
- changeDetection: ChangeDetectionStrategy.OnPush
4548
- }),
4549
- __metadata("design:paramtypes", [ReorderController,
4550
- ElementRef,
4551
- ChangeDetectorRef,
4552
- IterableDiffers])
4553
- ], FsBodyComponent);
4569
+ }
4570
+ FsBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsBodyComponent, deps: [{ token: ReorderController }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
4571
+ FsBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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" }, 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 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 [ngClass]=\"{ 'drag-row': reorderContoller.enabled }\"\n [rowRemoved]=\"rowRemoved\"\n #activeRow>\n </tr>\n</ng-container>\n", components: [{ type: FsRowComponent, selector: "[fs-list-row]", inputs: ["row", "rowActionsRaw", "groupActionsRaw", "hasRowActions", "rowEvents", "rowClass", "restoreMode", "rowIndex", "columns", "selection", "rowRemoved"] }], directives: [{ type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: ["row"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4572
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsBodyComponent, decorators: [{
4573
+ type: Component,
4574
+ args: [{
4575
+ selector: '[fs-list-body]',
4576
+ templateUrl: 'body.component.html',
4577
+ changeDetection: ChangeDetectionStrategy.OnPush
4578
+ }]
4579
+ }], ctorParameters: function () { return [{ type: ReorderController }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }]; }, propDecorators: { rows: [{
4580
+ type: Input
4581
+ }], columns: [{
4582
+ type: Input
4583
+ }], hasFooter: [{
4584
+ type: Input
4585
+ }], rowActionsRaw: [{
4586
+ type: Input
4587
+ }], groupActionsRaw: [{
4588
+ type: Input
4589
+ }], rowEvents: [{
4590
+ type: Input
4591
+ }], rowClass: [{
4592
+ type: Input
4593
+ }], hasRowActions: [{
4594
+ type: Input
4595
+ }], selection: [{
4596
+ type: Input
4597
+ }], restoreMode: [{
4598
+ type: Input
4599
+ }], rowRemoved: [{
4600
+ type: Input
4601
+ }], rowsContainer: [{
4602
+ type: ViewChild,
4603
+ args: ['rowsContainer', { read: ViewContainerRef, static: true }]
4604
+ }], headerTemplate: [{
4605
+ type: ContentChild,
4606
+ args: [FsRowComponent, { read: TemplateRef, static: true }]
4607
+ }] } });
4554
4608
 
4555
- let FsCellComponent = class FsCellComponent {
4609
+ class FsFooterCellComponent extends FsCellComponent {
4556
4610
  constructor() {
4557
- this.isColl = true;
4558
- this.role = 'gridcell';
4559
- this.cellContext = {};
4560
- this._destroy$ = new Subject();
4611
+ super();
4612
+ }
4613
+ }
4614
+ FsFooterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4615
+ FsFooterCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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", directives: [{ type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4616
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterCellComponent, decorators: [{
4617
+ type: Component,
4618
+ args: [{
4619
+ selector: '[fs-list-footer-cell]',
4620
+ templateUrl: 'footer-cell.component.html',
4621
+ changeDetection: ChangeDetectionStrategy.OnPush
4622
+ }]
4623
+ }], ctorParameters: function () { return []; } });
4624
+
4625
+ class FsFooterRowComponent extends FsRowComponent {
4626
+ constructor(el, reorderController, cdRef, differs, renderer) {
4627
+ super(el, reorderController, cdRef, differs, renderer, null);
4628
+ this.ReorderPosition = ReorderPosition;
4629
+ }
4630
+ }
4631
+ FsFooterRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterRowComponent, deps: [{ token: i0.ElementRef }, { token: ReorderController }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4632
+ FsFooterRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsFooterRowComponent, selector: "[fs-list-footer-row]", inputs: { hasRowActions: "hasRowActions" }, usesInheritance: true, ngImport: i0, template: "<td *ngIf=\"reorderController.leftReorderActivated$ | async\" 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 fs-list-footer-cell\n *ngIf=\"!column.footerColspanned\"\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=\"reorderController.rightReorderActivated$ | async\" class=\"fs-list-col row-actions\"></td>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderController.enabled && reorderController.strategy === ReorderStrategy.Manual)\" class=\"fs-list-col drag-col\"></td>\n", components: [{ type: FsFooterCellComponent, selector: "[fs-list-footer-cell]" }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], pipes: { "async": i3$1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4633
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterRowComponent, decorators: [{
4634
+ type: Component,
4635
+ args: [{
4636
+ selector: '[fs-list-footer-row]',
4637
+ templateUrl: 'footer-row.component.html',
4638
+ changeDetection: ChangeDetectionStrategy.OnPush
4639
+ }]
4640
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ReorderController }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { hasRowActions: [{
4641
+ type: Input
4642
+ }] } });
4643
+
4644
+ class FsFooterComponent {
4645
+ constructor() {
4646
+ this.columns = [];
4647
+ }
4648
+ }
4649
+ FsFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4650
+ FsFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsFooterComponent, selector: "[fs-list-footer]", inputs: { hasRowActions: "hasRowActions", columns: "columns", selection: "selection" }, ngImport: i0, template: "<tr fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n></tr>\n", components: [{ type: FsFooterRowComponent, selector: "[fs-list-footer-row]", inputs: ["hasRowActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterComponent, decorators: [{
4652
+ type: Component,
4653
+ args: [{
4654
+ selector: '[fs-list-footer]',
4655
+ templateUrl: 'footer.component.html',
4656
+ changeDetection: ChangeDetectionStrategy.OnPush
4657
+ }]
4658
+ }], ctorParameters: function () { return []; }, propDecorators: { hasRowActions: [{
4659
+ type: Input
4660
+ }], columns: [{
4661
+ type: Input
4662
+ }], selection: [{
4663
+ type: Input
4664
+ }] } });
4665
+
4666
+ class FsListLoaderComponent {
4667
+ constructor() {
4668
+ this.placeholderWidths = [[], [], []];
4669
+ this.widths = [];
4670
+ this.cols = [];
4671
+ this.rows = [];
4561
4672
  }
4562
4673
  ngOnInit() {
4563
- this._initCellContext();
4564
- this._initCellTemplate();
4565
- this._listenGroupOpen();
4674
+ this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;
4675
+ const length = this.cols.length;
4676
+ for (let w = length; w >= 0; w--) {
4677
+ this.widths[w] = w ? random(15, 100 / length, false) : 0;
4678
+ }
4679
+ for (let r = 0; r < 3; r++) {
4680
+ for (let c = 0; c < length; c++) {
4681
+ this.placeholderWidths[r].push(random(50, 90));
4682
+ }
4683
+ }
4566
4684
  }
4567
4685
  ngOnChanges(changes) {
4568
- if (changes.rowIndex) {
4569
- this.cellContext.index = this.rowIndex;
4686
+ if (changes.loaderLines) {
4687
+ this.rows = new Array(this.loaderLines);
4570
4688
  }
4571
4689
  }
4690
+ }
4691
+ FsListLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4692
+ FsListLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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"], directives: [{ type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4693
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListLoaderComponent, decorators: [{
4694
+ type: Component,
4695
+ args: [{
4696
+ selector: 'fs-list-loader',
4697
+ templateUrl: './loader.component.html',
4698
+ styleUrls: [
4699
+ './loader.component.scss',
4700
+ ],
4701
+ changeDetection: ChangeDetectionStrategy.OnPush,
4702
+ }]
4703
+ }], propDecorators: { columns: [{
4704
+ type: Input
4705
+ }], loaderLines: [{
4706
+ type: Input
4707
+ }] } });
4708
+
4709
+ class FsPaginationComponent {
4710
+ constructor(cdRef) {
4711
+ this.cdRef = cdRef;
4712
+ this._destroy$ = new Subject();
4713
+ }
4714
+ ngOnInit() {
4715
+ merge(this.pagination.pageChanged$, this.pagination.pages$)
4716
+ .pipe(takeUntil(this._destroy$))
4717
+ .subscribe(() => {
4718
+ this.cdRef.markForCheck();
4719
+ });
4720
+ }
4572
4721
  ngOnDestroy() {
4573
4722
  this._destroy$.next();
4574
4723
  this._destroy$.complete();
4575
4724
  }
4576
- _initCellContext() {
4577
- this.cellContext.index = this.rowIndex;
4578
- if (this.row) {
4579
- if (this.row.isGroup) {
4580
- this.cellContext.groupIndex = this.row.index;
4581
- }
4582
- else if (this.row.isChild) {
4583
- this.cellContext.groupChildIndex = this.row.index;
4584
- }
4585
- }
4586
- this.cellContext.column = this.column;
4587
- if (this.row) {
4588
- this.cellContext.$implicit = this.row.data;
4589
- this.cellContext.row = this.row.data;
4590
- this.cellContext.value = this.row.data[this.column.name];
4591
- this.cellContext.expanded = this.row.expanded;
4592
- }
4593
- }
4594
- _initCellTemplate() {
4595
- if (this.row && this.row.isGroup) {
4596
- this.cellTemplate = this.column.groupCellTemplate || this.column.cellTemplate;
4597
- }
4598
- else {
4599
- this.cellTemplate = this.column.cellTemplate;
4725
+ }
4726
+ FsPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPaginationComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4727
+ FsPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: { pagination: "pagination", rows: "rows" }, ngImport: i0, template: "<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <div class=\"paging\" *ngIf=\"pagination?.pages\">\n <div class=\"records\"></div>\n <div fxFlex>\n <div class=\"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 }} of {{ pagination.pages }}\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\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button mat-button (click)=\"pagination.goNext()\">{{ pagination.loadMoreText }}</button>\n </div>\n</ng-template>\n", styles: [":host{display:block}.paging{display:flex}.paging .pages{display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none}.paging .pages a{text-align:center;color:#000000de;text-decoration:none;font-size:15px;cursor:pointer;display:flex}.paging .pages a:not(.page){padding:10px}.paging .pages a.disabled{pointer-events:none;cursor:default;color:#d8d8d8}.paging .pages .number{font-size:90%}.fs-list-load-more button{width:100%;margin-top:10px}\n"], components: [{ type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i4$2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleRadius", "matRippleDisabled", "matRippleTrigger", "matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleAnimation"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4728
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPaginationComponent, decorators: [{
4729
+ type: Component,
4730
+ args: [{
4731
+ selector: 'fs-list-pagination',
4732
+ templateUrl: 'pagination.component.html',
4733
+ styleUrls: [
4734
+ './pagination.component.scss'
4735
+ ],
4736
+ changeDetection: ChangeDetectionStrategy.OnPush
4737
+ }]
4738
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pagination: [{
4739
+ type: Input
4740
+ }], rows: [{
4741
+ type: Input
4742
+ }] } });
4743
+
4744
+ class FsListContentInitDirective {
4745
+ constructor() { }
4746
+ ngAfterViewInit() {
4747
+ if (this.contentInitCallback) {
4748
+ this.contentInitCallback();
4600
4749
  }
4601
4750
  }
4602
- _listenGroupOpen() {
4603
- if (this.row && this.row.isGroup) {
4604
- this.row.expanded$
4605
- .pipe(takeUntil(this._destroy$))
4606
- .subscribe((status) => {
4607
- this.cellContext.expanded = status;
4608
- });
4609
- }
4610
- }
4611
- };
4612
- __decorate([
4613
- HostBinding('class.fs-list-col'),
4614
- __metadata("design:type", Object)
4615
- ], FsCellComponent.prototype, "isColl", void 0);
4616
- __decorate([
4617
- HostBinding('attr.role'),
4618
- __metadata("design:type", Object)
4619
- ], FsCellComponent.prototype, "role", void 0);
4620
- __decorate([
4621
- Input(),
4622
- __metadata("design:type", Column)
4623
- ], FsCellComponent.prototype, "column", void 0);
4624
- __decorate([
4625
- Input(),
4626
- __metadata("design:type", Row)
4627
- ], FsCellComponent.prototype, "row", void 0);
4628
- __decorate([
4629
- Input(),
4630
- __metadata("design:type", Number)
4631
- ], FsCellComponent.prototype, "rowIndex", void 0);
4632
- FsCellComponent = __decorate([
4633
- Component({
4634
- selector: '[fs-cell]',
4635
- template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\n\n<ng-template #defaultCellTemplate let-value=\"value\">\n {{value}}\n</ng-template>\n",
4636
- changeDetection: ChangeDetectionStrategy.OnPush
4637
- }),
4638
- __metadata("design:paramtypes", [])
4639
- ], FsCellComponent);
4751
+ }
4752
+ FsListContentInitDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListContentInitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4753
+ FsListContentInitDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: { contentInitCallback: ["fsListContentInit", "contentInitCallback"] }, ngImport: i0 });
4754
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListContentInitDirective, decorators: [{
4755
+ type: Directive,
4756
+ args: [{
4757
+ selector: '[fsListContentInit]'
4758
+ }]
4759
+ }], ctorParameters: function () { return []; }, propDecorators: { contentInitCallback: [{
4760
+ type: Input,
4761
+ args: ['fsListContentInit']
4762
+ }] } });
4640
4763
 
4641
- let FsHeadComponent = class FsHeadComponent {
4642
- constructor(reorderController, cdRef) {
4764
+ class FsListComponent {
4765
+ constructor(reorderController, _el, _defaultOptions, fsScroll, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location, _dialogRef, _drawerRef) {
4643
4766
  this.reorderController = reorderController;
4767
+ this._el = _el;
4768
+ this._defaultOptions = _defaultOptions;
4769
+ this.fsScroll = fsScroll;
4770
+ this.selectionDialog = selectionDialog;
4771
+ this.dialog = dialog;
4644
4772
  this.cdRef = cdRef;
4645
- this.selectedAll = false;
4646
- this.ReorderPosition = ReorderPosition;
4647
- this.ReorderStrategy = ReorderStrategy;
4648
- this._destroy$ = new Subject();
4773
+ this._groupExpandNotifier = _groupExpandNotifier;
4774
+ this._router = _router;
4775
+ this._route = _route;
4776
+ this._persistance = _persistance;
4777
+ this._location = _location;
4778
+ this._dialogRef = _dialogRef;
4779
+ this._drawerRef = _drawerRef;
4780
+ this.classFsList = true;
4781
+ this.loaderLines = 3;
4782
+ this.filtersReady = new EventEmitter();
4783
+ // Event will fired if action remove: true will clicked
4784
+ this.rowRemoved = new EventEmitter();
4785
+ this.firstLoad = true;
4786
+ this._filterParamsReady = false;
4787
+ this._inDialog = !!this._dialogRef || !!this._drawerRef;
4788
+ this._destroy = new Subject();
4649
4789
  }
4650
- ngOnInit() {
4651
- this.initSorting();
4652
- this.initSelection();
4790
+ set config(config) {
4791
+ this._initWithConfig(config);
4653
4792
  }
4654
- ngOnDestroy() {
4655
- this._destroy$.next();
4656
- this._destroy$.complete();
4793
+ set filterReference(component) {
4794
+ this._filterRef = component;
4795
+ this.list.actions.setFilterRef(component);
4796
+ this._emitFiltersReadyEvent();
4657
4797
  }
4658
4798
  /**
4659
- * Select All Visible Rows
4660
- * @param event
4799
+ * Set columns to config
4800
+ * Create Column Model instances
4801
+ *
4661
4802
  */
4662
- selectAll(event) {
4663
- this.selection.selectAllVisibleRows(event.checked);
4803
+ set columnTemplates(listColumnDirectives) {
4804
+ this.listColumnDirectives = listColumnDirectives;
4805
+ if (this.list) {
4806
+ this.list.tranformTemplatesToColumns(listColumnDirectives);
4807
+ }
4664
4808
  }
4665
- /**
4666
- * Track By for improve change detection
4667
- * @param index
4668
- */
4669
- trackByFn(index) {
4670
- return index;
4809
+ set _emptyStateTemplate(template) {
4810
+ if (this.list) {
4811
+ this.list.emptyStateTemplate = template;
4812
+ }
4671
4813
  }
4672
4814
  /**
4673
- * Subscribe to sorting change
4815
+ * Return reference for filter
4674
4816
  */
4675
- initSorting() {
4676
- this.sorting.sortingChanged$
4677
- .pipe(takeUntil(this._destroy$))
4678
- .subscribe(() => {
4679
- this.cdRef.detectChanges();
4680
- });
4817
+ get filterRef() {
4818
+ return this._filterRef;
4681
4819
  }
4682
- /**
4683
- * Subscribe to selection change
4684
- */
4685
- initSelection() {
4686
- if (this.selection) {
4687
- this.selection.selectionChange$
4688
- .pipe(filter(({ type }) => (type === SelectionChangeType.AllVisibleSelectionChange
4689
- || type === SelectionChangeType.SelectedAll
4690
- || type === SelectionChangeType.RowSelectionChange)), takeUntil(this._destroy$))
4691
- .subscribe(({ type, payload: status }) => {
4692
- this.selectedAll = status;
4693
- this.cdRef.markForCheck();
4694
- });
4695
- }
4820
+ get groupEnabled() {
4821
+ return this.list.dataController.groupEnabled;
4696
4822
  }
4697
- };
4698
- FsHeadComponent.ctorParameters = () => [
4699
- { type: ReorderController },
4700
- { type: ChangeDetectorRef }
4701
- ];
4702
- __decorate([
4703
- Input(),
4704
- __metadata("design:type", SortingController)
4705
- ], FsHeadComponent.prototype, "sorting", void 0);
4706
- __decorate([
4707
- Input(),
4708
- __metadata("design:type", Array)
4709
- ], FsHeadComponent.prototype, "columns", void 0);
4710
- __decorate([
4711
- Input(),
4712
- __metadata("design:type", Boolean)
4713
- ], FsHeadComponent.prototype, "hasRowActions", void 0);
4714
- __decorate([
4715
- Input(),
4716
- __metadata("design:type", SelectionController)
4717
- ], FsHeadComponent.prototype, "selection", void 0);
4718
- __decorate([
4719
- ViewChild('rowsContainer', { read: ViewContainerRef, static: true }),
4720
- __metadata("design:type", Object)
4721
- ], FsHeadComponent.prototype, "rowsContainer", void 0);
4722
- FsHeadComponent = __decorate([
4723
- Component({
4724
- selector: '[fs-list-head]',
4725
- template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"reorderController.leftReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Selection -->\n <th *ngIf=\"selection\" 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 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\"></th>\n\n <!-- Drag -->\n <th *ngIf=\"reorderController.rightReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n",
4726
- changeDetection: ChangeDetectionStrategy.OnPush
4727
- }),
4728
- __metadata("design:paramtypes", [ReorderController,
4729
- ChangeDetectorRef])
4730
- ], FsHeadComponent);
4731
-
4732
- let FsHeadCellComponent = class FsHeadCellComponent extends FsCellComponent {
4733
- constructor(cdRef, differs) {
4734
- super();
4735
- this.cdRef = cdRef;
4736
- this.differs = differs;
4737
- this.cellContext = {};
4738
- this._columnDiffer = differs.find({}).create();
4823
+ get paginatorVisible() {
4824
+ return this.list.paging.enabled
4825
+ && !this.firstLoad
4826
+ && !this.list.scrollable
4827
+ && !this.list.emptyStateEnabled
4828
+ && this.list.dataController.visibleRowsCount > 0
4829
+ && this.list.paging.pages > 1;
4739
4830
  }
4740
- ngDoCheck() {
4741
- if (this._columnDiffer.diff(this.column)) {
4742
- this.cdRef.markForCheck();
4831
+ set groupEnabled(value) {
4832
+ this.list.groupEnabled(value);
4833
+ }
4834
+ ngOnInit() {
4835
+ this._subscribeToRemoveRow();
4836
+ this._subscribeToGroupExpandStatusChange();
4837
+ }
4838
+ ngOnDestroy() {
4839
+ if (this.list) {
4840
+ this.list.destroy();
4743
4841
  }
4842
+ this._destroy.next();
4843
+ this._destroy.complete();
4744
4844
  }
4745
- initCellContext() {
4746
- this.cellContext.value = this.column.title;
4845
+ nextPage() {
4846
+ this.list.paging.goNext();
4747
4847
  }
4748
- };
4749
- FsHeadCellComponent.ctorParameters = () => [
4750
- { type: ChangeDetectorRef },
4751
- { type: KeyValueDiffers }
4752
- ];
4753
- FsHeadCellComponent = __decorate([
4754
- Component({
4755
- selector: '[fs-head-cell]',
4756
- 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\">\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",
4757
- changeDetection: ChangeDetectionStrategy.OnPush
4758
- }),
4759
- __metadata("design:paramtypes", [ChangeDetectorRef,
4760
- KeyValueDiffers])
4761
- ], FsHeadCellComponent);
4762
-
4763
- let FsFooterComponent = class FsFooterComponent {
4764
- constructor() {
4765
- this.columns = [];
4848
+ prevPage() {
4849
+ this.list.paging.goPrev();
4766
4850
  }
4767
- };
4768
- __decorate([
4769
- Input(),
4770
- __metadata("design:type", Boolean)
4771
- ], FsFooterComponent.prototype, "hasRowActions", void 0);
4772
- __decorate([
4773
- Input(),
4774
- __metadata("design:type", Array)
4775
- ], FsFooterComponent.prototype, "columns", void 0);
4776
- __decorate([
4777
- Input(),
4778
- __metadata("design:type", SelectionController)
4779
- ], FsFooterComponent.prototype, "selection", void 0);
4780
- FsFooterComponent = __decorate([
4781
- Component({
4782
- selector: '[fs-list-footer]',
4783
- template: "<tr fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n></tr>\n",
4784
- changeDetection: ChangeDetectionStrategy.OnPush
4785
- }),
4786
- __metadata("design:paramtypes", [])
4787
- ], FsFooterComponent);
4788
-
4789
- let FsFooterRowComponent = class FsFooterRowComponent extends FsRowComponent {
4790
- constructor(el, reorderController, cdRef, differs, renderer) {
4791
- super(el, reorderController, cdRef, differs, renderer, null);
4792
- this.ReorderPosition = ReorderPosition;
4851
+ firstPage() {
4852
+ this.list.paging.goFirst();
4793
4853
  }
4794
- };
4795
- FsFooterRowComponent.ctorParameters = () => [
4796
- { type: ElementRef },
4797
- { type: ReorderController },
4798
- { type: ChangeDetectorRef },
4799
- { type: KeyValueDiffers },
4800
- { type: Renderer2 }
4801
- ];
4802
- __decorate([
4803
- Input(),
4804
- __metadata("design:type", Boolean)
4805
- ], FsFooterRowComponent.prototype, "hasRowActions", void 0);
4806
- FsFooterRowComponent = __decorate([
4807
- Component({
4808
- selector: '[fs-list-footer-row]',
4809
- template: "<td *ngIf=\"reorderController.leftReorderActivated$ | async\" 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 fs-list-footer-cell\n *ngIf=\"!column.footerColspanned\"\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=\"reorderController.rightReorderActivated$ | async\" class=\"fs-list-col row-actions\"></td>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderController.enabled && reorderController.strategy === ReorderStrategy.Manual)\" class=\"fs-list-col drag-col\"></td>\n",
4810
- changeDetection: ChangeDetectionStrategy.OnPush
4811
- }),
4812
- __metadata("design:paramtypes", [ElementRef,
4813
- ReorderController,
4814
- ChangeDetectorRef,
4815
- KeyValueDiffers,
4816
- Renderer2])
4817
- ], FsFooterRowComponent);
4818
-
4819
- let FsFooterCellComponent = class FsFooterCellComponent extends FsCellComponent {
4820
- constructor() {
4821
- super();
4854
+ lastPage() {
4855
+ this.list.paging.goLast();
4822
4856
  }
4823
- };
4824
- FsFooterCellComponent = __decorate([
4825
- Component({
4826
- selector: '[fs-list-footer-cell]',
4827
- 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",
4828
- changeDetection: ChangeDetectionStrategy.OnPush
4829
- }),
4830
- __metadata("design:paramtypes", [])
4831
- ], FsFooterCellComponent);
4832
-
4833
- let FsStatusComponent = class FsStatusComponent {
4834
- constructor(_cdRef) {
4835
- this._cdRef = _cdRef;
4836
- this._destroy$ = new Subject();
4857
+ reload() {
4858
+ this.list.reload();
4837
4859
  }
4838
- ngOnInit() {
4839
- this.sorting.sortingChanged$
4840
- .pipe(takeUntil(this._destroy$))
4841
- .subscribe(() => {
4842
- this._cdRef.markForCheck();
4843
- });
4860
+ getData(trackBy) {
4861
+ return this.list.getData(trackBy);
4844
4862
  }
4845
- ngOnDestroy() {
4846
- this._destroy$.next();
4847
- this._destroy$.complete();
4863
+ hasData(trackBy) {
4864
+ return this.list.hasData(trackBy);
4848
4865
  }
4849
- toggleDirection() {
4850
- if (this.sorting.sortingColumn.direction === 'asc') {
4851
- this.sorting.sortDirection(SortingDirection.desc);
4852
- }
4853
- else {
4854
- this.sorting.sortDirection(SortingDirection.asc);
4855
- }
4866
+ updateData(rows, trackBy) {
4867
+ return this.list.dataController.updateData(rows, trackBy);
4856
4868
  }
4857
- setSortableColumn(column) {
4858
- if (this.sorting.sortingColumn !== column) {
4859
- this.sorting.sortBy(column);
4860
- }
4869
+ replaceRow(row, trackBy) {
4870
+ return this.list.dataController.replaceData(row, trackBy);
4861
4871
  }
4862
- setLimit(limit) {
4863
- this.paging.setLimit(limit);
4872
+ updateSelectionConfig(config) {
4873
+ this.list.selection.updateConfig(config);
4864
4874
  }
4865
- };
4866
- FsStatusComponent.ctorParameters = () => [
4867
- { type: ChangeDetectorRef }
4868
- ];
4869
- __decorate([
4870
- Input(),
4871
- __metadata("design:type", PaginationController)
4872
- ], FsStatusComponent.prototype, "paging", void 0);
4873
- __decorate([
4874
- Input(),
4875
- __metadata("design:type", SortingController)
4876
- ], FsStatusComponent.prototype, "sorting", void 0);
4877
- __decorate([
4878
- Input(),
4879
- __metadata("design:type", Object)
4880
- ], FsStatusComponent.prototype, "rows", void 0);
4881
- __decorate([
4882
- Input(),
4883
- __metadata("design:type", Object)
4884
- ], FsStatusComponent.prototype, "scrollable", void 0);
4885
- __decorate([
4886
- Input(),
4887
- HostBinding('class.first-load'),
4888
- HostBinding('class.fs-skeleton-placeholder'),
4889
- __metadata("design:type", Boolean)
4890
- ], FsStatusComponent.prototype, "firstLoad", void 0);
4891
- FsStatusComponent = __decorate([
4892
- Component({
4893
- selector: 'fs-list-status',
4894
- template: "<div class=\"status\">\n <ng-container *ngIf=\"paging.enabled && !scrollable\">\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 || scrollable) && 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 || scrollable\" #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\"\n >\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 >\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 >\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</div>\n",
4895
- changeDetection: ChangeDetectionStrategy.OnPush,
4896
- preserveWhitespaces: true,
4897
- styles: [":host{display:inline-block}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}"]
4898
- }),
4899
- __metadata("design:paramtypes", [ChangeDetectorRef])
4900
- ], FsStatusComponent);
4901
-
4902
- let FsPaginationComponent = class FsPaginationComponent {
4903
- constructor(cdRef) {
4904
- this.cdRef = cdRef;
4905
- this._destroy$ = new Subject();
4875
+ resetSelectionActions() {
4876
+ this.list.selection.resetActions();
4906
4877
  }
4907
- ngOnInit() {
4908
- merge(this.pagination.pageChanged$, this.pagination.pages$)
4909
- .pipe(takeUntil(this._destroy$))
4910
- .subscribe(() => {
4911
- this.cdRef.markForCheck();
4912
- });
4878
+ removeData(data) {
4879
+ return this.list.dataController.removeData(data);
4913
4880
  }
4914
- ngOnDestroy() {
4915
- this._destroy$.next();
4916
- this._destroy$.complete();
4881
+ setHeading(heading) {
4882
+ this.list.heading = heading;
4917
4883
  }
4918
- };
4919
- FsPaginationComponent.ctorParameters = () => [
4920
- { type: ChangeDetectorRef }
4921
- ];
4922
- __decorate([
4923
- Input(),
4924
- __metadata("design:type", PaginationController)
4925
- ], FsPaginationComponent.prototype, "pagination", void 0);
4926
- __decorate([
4927
- Input(),
4928
- __metadata("design:type", Object)
4929
- ], FsPaginationComponent.prototype, "rows", void 0);
4930
- FsPaginationComponent = __decorate([
4931
- Component({
4932
- selector: 'fs-list-pagination',
4933
- template: "<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <div class=\"paging\" *ngIf=\"pagination?.pages\">\n <div class=\"records\"></div>\n <div fxFlex>\n <div class=\"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 }} of {{ pagination.pages }}\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\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button mat-button (click)=\"pagination.goNext()\">{{ pagination.loadMoreText }}</button>\n </div>\n</ng-template>\n",
4934
- changeDetection: ChangeDetectionStrategy.OnPush,
4935
- styles: [":host{display:block}.paging{display:flex}.paging .pages{display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.paging .pages a{text-align:center;color:rgba(0,0,0,.87);text-decoration:none;font-size:15px;cursor:pointer;display:flex}.paging .pages a:not(.page){padding:10px}.paging .pages a.disabled{pointer-events:none;cursor:default;color:#d8d8d8}.paging .pages .number{font-size:90%}.fs-list-load-more button{width:100%;margin-top:10px}"]
4936
- }),
4937
- __metadata("design:paramtypes", [ChangeDetectorRef])
4938
- ], FsPaginationComponent);
4939
-
4940
- let FsListLoaderComponent = class FsListLoaderComponent {
4941
- constructor() {
4942
- this.placeholderWidths = [[], [], []];
4943
- this.widths = [];
4944
- this.cols = [];
4945
- this.rows = [];
4884
+ setSubheading(subheading) {
4885
+ this.list.subheading = subheading;
4946
4886
  }
4947
- ngOnInit() {
4948
- this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;
4949
- const length = this.cols.length;
4950
- for (let w = length; w >= 0; w--) {
4951
- this.widths[w] = w ? random(15, 100 / length, false) : 0;
4887
+ reorderStart() {
4888
+ this.reorderController.enableReorder();
4889
+ }
4890
+ reorderFinish() {
4891
+ this.reorderController.disableReorder();
4892
+ }
4893
+ setActions(actions) {
4894
+ if (actions) {
4895
+ this.list.actions.clearActions();
4896
+ this.list.actions.setActions(actions);
4897
+ }
4898
+ }
4899
+ filterReady() {
4900
+ this.list.filtersReady$.next();
4901
+ this._filterParamsReady = true;
4902
+ this._emitFiltersReadyEvent();
4903
+ }
4904
+ /**
4905
+ * Update visibility for specific column
4906
+ */
4907
+ columnVisibility(name, show) {
4908
+ this.columnsVisibility([{ name, show }]);
4909
+ }
4910
+ /**
4911
+ * Update visibility for list of specific columns
4912
+ */
4913
+ columnsVisibility(columns) {
4914
+ this.list.columns.updateVisibilityForCols(columns);
4915
+ }
4916
+ _emitFiltersReadyEvent() {
4917
+ if (!!this.filterRef && this._filterParamsReady) {
4918
+ this.filtersReady.emit();
4919
+ }
4920
+ }
4921
+ /**
4922
+ * Initialize config for list
4923
+ * @param config
4924
+ */
4925
+ _initWithConfig(config) {
4926
+ if (this.list) {
4927
+ this.list.destroy();
4952
4928
  }
4953
- for (let r = 0; r < 3; r++) {
4954
- for (let c = 0; c < length; c++) {
4955
- this.placeholderWidths[r].push(random(50, 90));
4956
- }
4929
+ const defaultOpts = this._defaultOptions
4930
+ ? cloneDeep(this._defaultOptions)
4931
+ : {};
4932
+ const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
4933
+ if (listConfig.persist !== false) {
4934
+ this._restorePersistance(listConfig.persist);
4957
4935
  }
4958
- }
4959
- ngOnChanges(changes) {
4960
- if (changes.loaderLines) {
4961
- this.rows = new Array(this.loaderLines);
4936
+ this._updateCustomizeAction(listConfig.actions);
4937
+ this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
4938
+ this._waitFirstLoad();
4939
+ this._listenFiltersQueryChange();
4940
+ this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions);
4941
+ if (this.listColumnDirectives) {
4942
+ this.list.tranformTemplatesToColumns(this.listColumnDirectives);
4962
4943
  }
4944
+ this._listenSortingChange();
4963
4945
  }
4964
- };
4965
- __decorate([
4966
- Input(),
4967
- __metadata("design:type", Object)
4968
- ], FsListLoaderComponent.prototype, "columns", void 0);
4969
- __decorate([
4970
- Input(),
4971
- __metadata("design:type", Number)
4972
- ], FsListLoaderComponent.prototype, "loaderLines", void 0);
4973
- FsListLoaderComponent = __decorate([
4974
- Component({
4975
- selector: 'fs-list-loader',
4976
- 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",
4977
- changeDetection: ChangeDetectionStrategy.OnPush,
4978
- styles: ["table{width:100%;border-spacing:0}.fs-skeleton-placeholder{opacity:.5}:host ::ng-deep tbody tr:hover td{background:0 0}"]
4979
- })
4980
- ], FsListLoaderComponent);
4981
-
4982
- let FsRowActionsComponent = class FsRowActionsComponent {
4983
- constructor(_fsPrompt) {
4984
- this._fsPrompt = _fsPrompt;
4985
- this.restoreMode = false;
4986
- this.rowActions = [];
4987
- this.menuRowActions = [];
4988
- this.inlineRowActions = [];
4989
- this._destroy$ = new Subject();
4990
- }
4991
- actionClick(action, row, event, menuRef) {
4992
- if (action.remove) {
4993
- if (typeof action.remove === 'boolean') {
4994
- this.removeAction(action, row.data, event, this.index);
4995
- }
4996
- else {
4997
- this._fsPrompt.confirm({
4998
- title: action.remove.title,
4999
- template: action.remove.template,
5000
- }).pipe(take(1), takeUntil(this._destroy$)).subscribe({
5001
- next: () => {
5002
- this.removeAction(action, row.data, event, this.index);
4946
+ /**
4947
+ * Find action with customize flag and re-declare click function for CustomizeColsDialog
4948
+ * @param actions
4949
+ */
4950
+ _updateCustomizeAction(actions) {
4951
+ const customizeAction = actions === null || actions === void 0 ? void 0 : actions.find((action) => action.customize);
4952
+ if (customizeAction) {
4953
+ const actionClickFn = customizeAction.click;
4954
+ customizeAction.click = () => {
4955
+ if (actionClickFn) {
4956
+ actionClickFn(null);
4957
+ }
4958
+ const dialogRef = this.dialog.open(CustomizeColsDialogComponent, {
4959
+ data: {
4960
+ columns: this.list.columns.columnsForDialog,
4961
+ changeFn: this.list.columns.changeFn,
5003
4962
  },
5004
- error: () => { },
5005
4963
  });
5006
- }
5007
- }
5008
- else {
5009
- action.click(row.data, event, this.index, menuRef);
4964
+ dialogRef
4965
+ .afterClosed()
4966
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
4967
+ .subscribe((data) => {
4968
+ if (data) {
4969
+ this.list.columns.updateVisibilityForCols(data);
4970
+ this.cdRef.markForCheck();
4971
+ }
4972
+ });
4973
+ };
5010
4974
  }
5011
4975
  }
5012
4976
  /**
5013
- * Track By for improve change detection
5014
- * @param index
4977
+ * Update sorting in filter
5015
4978
  */
5016
- trackByFn(index) {
5017
- return index;
4979
+ _listenSortingChange() {
4980
+ this.list.sorting
4981
+ .sortingChanged$
4982
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
4983
+ .subscribe((sort) => {
4984
+ this._filterRef.updateSort(sort);
4985
+ });
5018
4986
  }
5019
- clickOnTrigger(event) {
5020
- event.stopPropagation();
5021
- this.rowActions
5022
- .forEach((action) => action.updateLabel(this.row.data));
4987
+ _subscribeToRemoveRow() {
4988
+ this.rowRemoved
4989
+ .pipe(takeUntil(this._destroy))
4990
+ .subscribe((row) => {
4991
+ this.list.dataController.removeData(row);
4992
+ });
5023
4993
  }
5024
- /**
5025
- * Emit that some row must be removed
5026
- * @param action
5027
- * @param row
5028
- * @param event
5029
- * @param index
5030
- */
5031
- removeAction(action, row, event, index) {
5032
- const removeObservable = action.click(row, event, index);
5033
- if (removeObservable && removeObservable instanceof Observable) {
5034
- removeObservable
5035
- .pipe(take(1), takeUntil(this._destroy$))
5036
- .subscribe(() => {
5037
- this.rowRemoved.emit(row);
4994
+ _subscribeToGroupExpandStatusChange() {
4995
+ if (this.list.dataController.hasGroups) {
4996
+ this._groupExpandNotifier.expandStatusChange$
4997
+ .pipe(takeUntil(this._destroy))
4998
+ .subscribe((row) => {
4999
+ this.list.dataController.toggleRowGroup(row);
5038
5000
  });
5039
5001
  }
5040
5002
  }
5041
- };
5042
- FsRowActionsComponent.ctorParameters = () => [
5043
- { type: FsPrompt }
5044
- ];
5045
- __decorate([
5046
- Input(),
5047
- __metadata("design:type", Row)
5048
- ], FsRowActionsComponent.prototype, "row", void 0);
5049
- __decorate([
5050
- Input(),
5051
- __metadata("design:type", Number)
5052
- ], FsRowActionsComponent.prototype, "index", void 0);
5053
- __decorate([
5054
- Input(),
5055
- __metadata("design:type", Object)
5056
- ], FsRowActionsComponent.prototype, "restoreMode", void 0);
5057
- __decorate([
5058
- Input(),
5059
- __metadata("design:type", Array)
5060
- ], FsRowActionsComponent.prototype, "rowActions", void 0);
5061
- __decorate([
5062
- Input(),
5063
- __metadata("design:type", EventEmitter)
5064
- ], FsRowActionsComponent.prototype, "rowRemoved", void 0);
5065
- __decorate([
5066
- Input(),
5067
- __metadata("design:type", Array)
5068
- ], FsRowActionsComponent.prototype, "menuRowActions", void 0);
5069
- __decorate([
5070
- Input(),
5071
- __metadata("design:type", Array)
5072
- ], FsRowActionsComponent.prototype, "inlineRowActions", void 0);
5073
- __decorate([
5074
- Input(),
5075
- __metadata("design:type", RowAction)
5076
- ], FsRowActionsComponent.prototype, "restoreAction", void 0);
5077
- FsRowActionsComponent = __decorate([
5078
- Component({
5079
- selector: 'fs-list-row-actions',
5080
- template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action 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 class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n (click)=\"clickOnTrigger($event)\"\n #menuRef\n>\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 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 [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\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\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 fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\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}}\n </ng-template>\n </ng-container>\n</fs-menu>\n",
5081
- changeDetection: ChangeDetectionStrategy.OnPush
5082
- }),
5083
- __metadata("design:paramtypes", [FsPrompt])
5084
- ], FsRowActionsComponent);
5085
-
5086
- let FsRowInlineActionComponent = class FsRowInlineActionComponent {
5087
- constructor(_fsPrompt) {
5088
- this._fsPrompt = _fsPrompt;
5089
- this.clicked = new EventEmitter();
5090
- this.fileSelect = new EventEmitter();
5003
+ _waitFirstLoad() {
5004
+ this.list.loading$
5005
+ .pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
5006
+ .subscribe(() => {
5007
+ this.firstLoad = false;
5008
+ this.cdRef.markForCheck();
5009
+ });
5091
5010
  }
5092
- actionClick(event) {
5093
- this.clicked.emit(event);
5011
+ _listenFiltersQueryChange() {
5012
+ this.list.filtersQuery$
5013
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
5014
+ .subscribe((value) => {
5015
+ if (value) {
5016
+ const activeFilters = Object.keys(value).length;
5017
+ this.reorderController.setNunberOfActiveFilters(activeFilters);
5018
+ }
5019
+ });
5094
5020
  }
5095
- fileSelected(event) {
5096
- this.fileSelect.emit(event);
5021
+ _configMergeCustomizer(objValue, srcValue) {
5022
+ if (Array.isArray(objValue)) {
5023
+ return objValue;
5024
+ }
5097
5025
  }
5098
- };
5099
- FsRowInlineActionComponent.ctorParameters = () => [
5100
- { type: FsPrompt }
5101
- ];
5102
- __decorate([
5103
- Input(),
5104
- __metadata("design:type", RowAction)
5105
- ], FsRowInlineActionComponent.prototype, "action", void 0);
5106
- __decorate([
5107
- Output(),
5108
- __metadata("design:type", Object)
5109
- ], FsRowInlineActionComponent.prototype, "clicked", void 0);
5110
- __decorate([
5111
- Output(),
5112
- __metadata("design:type", Object)
5113
- ], FsRowInlineActionComponent.prototype, "fileSelect", void 0);
5114
- FsRowInlineActionComponent = __decorate([
5115
- Component({
5116
- selector: 'fs-list-row-inline-action',
5117
- 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",
5118
- changeDetection: ChangeDetectionStrategy.OnPush
5119
- }),
5120
- __metadata("design:paramtypes", [FsPrompt])
5121
- ], FsRowInlineActionComponent);
5122
-
5123
- let FsRowMenuActionComponent = class FsRowMenuActionComponent {
5124
- constructor() {
5125
- this.fileSelect = new EventEmitter();
5126
- this.fileError = new EventEmitter();
5026
+ _restorePersistance(persistConfig) {
5027
+ const namespace = getNormalizedPath(this._location);
5028
+ this._persistance.setConfig(persistConfig, namespace, this._inDialog);
5127
5029
  }
5128
- };
5129
- __decorate([
5130
- Input(),
5131
- __metadata("design:type", String)
5132
- ], FsRowMenuActionComponent.prototype, "icon", void 0);
5133
- __decorate([
5134
- Input(),
5135
- __metadata("design:type", String)
5136
- ], FsRowMenuActionComponent.prototype, "label", void 0);
5137
- __decorate([
5138
- Input(),
5139
- __metadata("design:type", Object)
5140
- ], FsRowMenuActionComponent.prototype, "file", void 0);
5141
- __decorate([
5142
- Output(),
5143
- __metadata("design:type", Object)
5144
- ], FsRowMenuActionComponent.prototype, "fileSelect", void 0);
5145
- __decorate([
5146
- Output(),
5147
- __metadata("design:type", Object)
5148
- ], FsRowMenuActionComponent.prototype, "fileError", void 0);
5149
- FsRowMenuActionComponent = __decorate([
5150
- Component({
5151
- selector: 'fs-list-row-menu-action',
5152
- template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\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 (select)=\"fileSelect.emit($event)\"\n (error)=\"fileError.emit($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n </fs-file>\n</ng-template>\n",
5153
- changeDetection: ChangeDetectionStrategy.OnPush
5154
- })
5155
- ], FsRowMenuActionComponent);
5030
+ }
5031
+ FsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, deps: [{ token: ReorderController }, { token: i0.ElementRef }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i2$4.FsScrollService, optional: true }, { token: i3$3.SelectionDialog }, { token: i4.MatDialog }, { token: i0.ChangeDetectorRef }, { token: GroupExpandNotifierService }, { token: i6$1.Router }, { token: i6$1.ActivatedRoute }, { token: PersistanceController }, { token: i3$1.Location }, { token: i4.MatDialogRef, optional: true }, { token: i9.DrawerRef, optional: true }], target: i0.ɵɵFactoryTarget.Component });
5032
+ FsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsListComponent, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList" } }, providers: [
5033
+ GroupExpandNotifierService,
5034
+ PersistanceController,
5035
+ ReorderController,
5036
+ ], queries: [{ propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{ 'has-filter-input': list.filterInput,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading,\n 'has-status': list.status,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async }\">\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 <!-- Header -->\n <div class=\"fs-list-header-container\">\n\n <div class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated$ || !list.filterConfig?.items.length }\">\n <div class=\"heading-container\">\n <h2 class=\"heading\" *ngIf=\"list.heading\">{{list.heading}}</h2>\n <span class=\"subheading\" *ngIf=\"list.subheading\">{{list.subheading}}</span>\n </div>\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\n <ng-template fsFilterStatusBar>\n <ng-container *ngIf=\"\n list.paging &&\n !(reorderController.manualReorderActivated$ | async) &&\n (!reorderController.enabled || reorderController.status) &&\n ((list.scrollable && list.scrollable.status) || !list.scrollable)\">\n <!-- Status -->\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 [scrollable]=\"list.scrollable\">\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 class=\"fs-list-table\" role=\"grid\" [fsListContentInit]=\"list.afterContentInit\">\n <thead 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\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n >\n </thead>\n\n <tbody 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\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n >\n </tbody>\n\n <tfoot fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\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\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", styles: ["::ng-deep .fs-list{display:block;width:100%}::ng-deep .fs-list .fs-list-swap-restricted{opacity:.5}::ng-deep .fs-list .fs-list-no-drop{cursor:no-drop}::ng-deep .fs-list .fs-filter{margin-bottom:0;position:initial!important;display:block}::ng-deep .fs-list .fs-list-container.loading .fs-list-status,::ng-deep .fs-list .fs-list-container.loading .fs-list-body,::ng-deep .fs-list .fs-list-container.loading fs-list-pagination,::ng-deep .fs-list .fs-list-container.loading .filter-chips,::ng-deep .fs-list .fs-list-container.loading .fs-list-no-results-container,::ng-deep .fs-list .fs-list-container.first-load .fs-list-status,::ng-deep .fs-list .fs-list-container.first-load .fs-list-body,::ng-deep .fs-list .fs-list-container.first-load fs-list-pagination,::ng-deep .fs-list .fs-list-container.first-load .filter-chips,::ng-deep .fs-list .fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}::ng-deep .fs-list .fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}::ng-deep .fs-list .fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}::ng-deep .fs-list .fs-list-container.has-actions .fs-list-actions{margin-left:5px}::ng-deep .fs-list .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list table,::ng-deep .fs-list .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}::ng-deep .fs-list .hidden{display:none}::ng-deep .fs-list thead,::ng-deep .fs-list .fs-list-head{display:table-header-group}::ng-deep .fs-list thead th,::ng-deep .fs-list thead .fs-list-col,::ng-deep .fs-list .fs-list-head th,::ng-deep .fs-list .fs-list-head .fs-list-col{color:#999;padding:8px;font-weight:normal;font-size:13px;color:#8f8f8f}::ng-deep .fs-list thead th.fs-list-col-selection,::ng-deep .fs-list thead .fs-list-col.fs-list-col-selection,::ng-deep .fs-list .fs-list-head th.fs-list-col-selection,::ng-deep .fs-list .fs-list-head .fs-list-col.fs-list-col-selection{width:1%;text-align:left}::ng-deep .fs-list thead th.sorting,::ng-deep .fs-list thead .fs-list-col.sorting,::ng-deep .fs-list .fs-list-head th.sorting,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting{cursor:pointer}::ng-deep .fs-list thead th.sorting:hover,::ng-deep .fs-list thead .fs-list-col.sorting:hover,::ng-deep .fs-list .fs-list-head th.sorting:hover,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting:hover{background-color:#f6f6f6}::ng-deep .fs-list thead th .wrap,::ng-deep .fs-list thead .fs-list-col .wrap,::ng-deep .fs-list .fs-list-head th .wrap,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap{display:inline-flex;vertical-align:middle;white-space:nowrap}::ng-deep .fs-list thead th .wrap mat-icon,::ng-deep .fs-list thead .fs-list-col .wrap mat-icon,::ng-deep .fs-list .fs-list-head th .wrap mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}::ng-deep .fs-list thead th .wrap .direction,::ng-deep .fs-list thead .fs-list-col .wrap .direction,::ng-deep .fs-list .fs-list-head th .wrap .direction,::ng-deep .fs-list .fs-list-head .fs-list-col .wrap .direction{margin-left:5px}::ng-deep .fs-list thead th.sorting,::ng-deep .fs-list thead .fs-list-col.sorting,::ng-deep .fs-list .fs-list-head th.sorting,::ng-deep .fs-list .fs-list-head .fs-list-col.sorting{background-image:none}::ng-deep .fs-list tbody,::ng-deep .fs-list .fs-list-body{display:table-row-group;position:relative}::ng-deep .fs-list tbody.disabled,::ng-deep .fs-list .fs-list-body.disabled{opacity:.4;pointer-events:none}::ng-deep .fs-list tbody td,::ng-deep .fs-list tbody .fs-list-col,::ng-deep .fs-list .fs-list-body td,::ng-deep .fs-list .fs-list-body .fs-list-col{box-sizing:border-box}::ng-deep .fs-list tbody tr:hover td,::ng-deep .fs-list tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list .fs-list-body tr:hover td,::ng-deep .fs-list .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list tbody tr:hover td,::ng-deep .fs-list tbody tr:hover .fs-list-col,::ng-deep .fs-list tbody .fs-list-row:hover td,::ng-deep .fs-list tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list .fs-list-body tr:hover td,::ng-deep .fs-list .fs-list-body tr:hover .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row:hover td,::ng-deep .fs-list .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list tbody tr:first-child td,::ng-deep .fs-list .fs-list-body tr:first-child td{border-top:2px solid #ddd}::ng-deep .fs-list tbody tr:last-child td,::ng-deep .fs-list .fs-list-body tr:last-child td{border-bottom:2px solid #ddd}::ng-deep .fs-list tbody td,::ng-deep .fs-list .fs-list-body td{border-top:1px solid #ddd}::ng-deep .fs-list thead tr,::ng-deep .fs-list thead .fs-list-row,::ng-deep .fs-list tbody tr,::ng-deep .fs-list tbody .fs-list-row,::ng-deep .fs-list tfoot tr,::ng-deep .fs-list tfoot .fs-list-row,::ng-deep .fs-list .fs-list-head tr,::ng-deep .fs-list .fs-list-head .fs-list-row,::ng-deep .fs-list .fs-list-body tr,::ng-deep .fs-list .fs-list-body .fs-list-row,::ng-deep .fs-list .fs-list-footer tr,::ng-deep .fs-list .fs-list-footer .fs-list-row{display:table-row}::ng-deep .fs-list thead tr td,::ng-deep .fs-list thead tr th,::ng-deep .fs-list thead tr .fs-list-col,::ng-deep .fs-list thead .fs-list-row td,::ng-deep .fs-list thead .fs-list-row th,::ng-deep .fs-list thead .fs-list-row .fs-list-col,::ng-deep .fs-list tbody tr td,::ng-deep .fs-list tbody tr th,::ng-deep .fs-list tbody tr .fs-list-col,::ng-deep .fs-list tbody .fs-list-row td,::ng-deep .fs-list tbody .fs-list-row th,::ng-deep .fs-list tbody .fs-list-row .fs-list-col,::ng-deep .fs-list tfoot tr td,::ng-deep .fs-list tfoot tr th,::ng-deep .fs-list tfoot tr .fs-list-col,::ng-deep .fs-list tfoot .fs-list-row td,::ng-deep .fs-list tfoot .fs-list-row th,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-head tr td,::ng-deep .fs-list .fs-list-head tr th,::ng-deep .fs-list .fs-list-head tr .fs-list-col,::ng-deep .fs-list .fs-list-head .fs-list-row td,::ng-deep .fs-list .fs-list-head .fs-list-row th,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-body tr td,::ng-deep .fs-list .fs-list-body tr th,::ng-deep .fs-list .fs-list-body tr .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row td,::ng-deep .fs-list .fs-list-body .fs-list-row th,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col,::ng-deep .fs-list .fs-list-footer tr td,::ng-deep .fs-list .fs-list-footer tr th,::ng-deep .fs-list .fs-list-footer tr .fs-list-col,::ng-deep .fs-list .fs-list-footer .fs-list-row td,::ng-deep .fs-list .fs-list-footer .fs-list-row th,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col{display:table-cell;padding:8px;vertical-align:middle;outline:none}::ng-deep .fs-list thead tr td.drag-col,::ng-deep .fs-list thead tr th.drag-col,::ng-deep .fs-list thead tr .fs-list-col.drag-col,::ng-deep .fs-list thead .fs-list-row td.drag-col,::ng-deep .fs-list thead .fs-list-row th.drag-col,::ng-deep .fs-list thead .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list tbody tr td.drag-col,::ng-deep .fs-list tbody tr th.drag-col,::ng-deep .fs-list tbody tr .fs-list-col.drag-col,::ng-deep .fs-list tbody .fs-list-row td.drag-col,::ng-deep .fs-list tbody .fs-list-row th.drag-col,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list tfoot tr td.drag-col,::ng-deep .fs-list tfoot tr th.drag-col,::ng-deep .fs-list tfoot tr .fs-list-col.drag-col,::ng-deep .fs-list tfoot .fs-list-row td.drag-col,::ng-deep .fs-list tfoot .fs-list-row th.drag-col,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-head tr td.drag-col,::ng-deep .fs-list .fs-list-head tr th.drag-col,::ng-deep .fs-list .fs-list-head tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-body tr td.drag-col,::ng-deep .fs-list .fs-list-body tr th.drag-col,::ng-deep .fs-list .fs-list-body tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-footer tr td.drag-col,::ng-deep .fs-list .fs-list-footer tr th.drag-col,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row td.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row th.drag-col,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.drag-col{width:24px;text-align:center;cursor:grab}::ng-deep .fs-list thead tr td.drag-col mat-icon,::ng-deep .fs-list thead tr th.drag-col mat-icon,::ng-deep .fs-list thead tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list thead .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tbody tr td.drag-col mat-icon,::ng-deep .fs-list tbody tr th.drag-col mat-icon,::ng-deep .fs-list tbody tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tfoot tr td.drag-col mat-icon,::ng-deep .fs-list tfoot tr th.drag-col mat-icon,::ng-deep .fs-list tfoot tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-head tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-body tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr td.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr th.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.drag-col mat-icon{display:flex}::ng-deep .fs-list thead tr td.row-actions,::ng-deep .fs-list thead tr th.row-actions,::ng-deep .fs-list thead tr .fs-list-col.row-actions,::ng-deep .fs-list thead .fs-list-row td.row-actions,::ng-deep .fs-list thead .fs-list-row th.row-actions,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list tbody tr td.row-actions,::ng-deep .fs-list tbody tr th.row-actions,::ng-deep .fs-list tbody tr .fs-list-col.row-actions,::ng-deep .fs-list tbody .fs-list-row td.row-actions,::ng-deep .fs-list tbody .fs-list-row th.row-actions,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list tfoot tr td.row-actions,::ng-deep .fs-list tfoot tr th.row-actions,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions,::ng-deep .fs-list tfoot .fs-list-row td.row-actions,::ng-deep .fs-list tfoot .fs-list-row th.row-actions,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-head tr td.row-actions,::ng-deep .fs-list .fs-list-head tr th.row-actions,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-body tr td.row-actions,::ng-deep .fs-list .fs-list-body tr th.row-actions,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-footer tr td.row-actions,::ng-deep .fs-list .fs-list-footer tr th.row-actions,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions{width:1%;white-space:nowrap;padding-right:10px;overflow:hidden}::ng-deep .fs-list thead tr td.row-actions .row-inline-action,::ng-deep .fs-list thead tr th.row-actions .row-inline-action,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action{margin-left:12px;display:inline-block}::ng-deep .fs-list thead tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child{margin-left:0}::ng-deep .fs-list thead tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr td.row-actions .row-menu-action,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr th.row-actions .row-menu-action,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list thead .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr td.row-actions .row-menu-action,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr th.row-actions .row-menu-action,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr td.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr th.row-actions .row-menu-action,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-menu-action{width:35px;justify-content:center;align-items:center}::ng-deep .fs-list thead tr td.left,::ng-deep .fs-list thead tr th.left,::ng-deep .fs-list thead tr .fs-list-col.left,::ng-deep .fs-list thead .fs-list-row td.left,::ng-deep .fs-list thead .fs-list-row th.left,::ng-deep .fs-list thead .fs-list-row .fs-list-col.left,::ng-deep .fs-list tbody tr td.left,::ng-deep .fs-list tbody tr th.left,::ng-deep .fs-list tbody tr .fs-list-col.left,::ng-deep .fs-list tbody .fs-list-row td.left,::ng-deep .fs-list tbody .fs-list-row th.left,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.left,::ng-deep .fs-list tfoot tr td.left,::ng-deep .fs-list tfoot tr th.left,::ng-deep .fs-list tfoot tr .fs-list-col.left,::ng-deep .fs-list tfoot .fs-list-row td.left,::ng-deep .fs-list tfoot .fs-list-row th.left,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-head tr td.left,::ng-deep .fs-list .fs-list-head tr th.left,::ng-deep .fs-list .fs-list-head tr .fs-list-col.left,::ng-deep .fs-list .fs-list-head .fs-list-row td.left,::ng-deep .fs-list .fs-list-head .fs-list-row th.left,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-body tr td.left,::ng-deep .fs-list .fs-list-body tr th.left,::ng-deep .fs-list .fs-list-body tr .fs-list-col.left,::ng-deep .fs-list .fs-list-body .fs-list-row td.left,::ng-deep .fs-list .fs-list-body .fs-list-row th.left,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.left,::ng-deep .fs-list .fs-list-footer tr td.left,::ng-deep .fs-list .fs-list-footer tr th.left,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.left,::ng-deep .fs-list .fs-list-footer .fs-list-row td.left,::ng-deep .fs-list .fs-list-footer .fs-list-row th.left,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.left{text-align:left}::ng-deep .fs-list thead tr td.center,::ng-deep .fs-list thead tr th.center,::ng-deep .fs-list thead tr .fs-list-col.center,::ng-deep .fs-list thead .fs-list-row td.center,::ng-deep .fs-list thead .fs-list-row th.center,::ng-deep .fs-list thead .fs-list-row .fs-list-col.center,::ng-deep .fs-list tbody tr td.center,::ng-deep .fs-list tbody tr th.center,::ng-deep .fs-list tbody tr .fs-list-col.center,::ng-deep .fs-list tbody .fs-list-row td.center,::ng-deep .fs-list tbody .fs-list-row th.center,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.center,::ng-deep .fs-list tfoot tr td.center,::ng-deep .fs-list tfoot tr th.center,::ng-deep .fs-list tfoot tr .fs-list-col.center,::ng-deep .fs-list tfoot .fs-list-row td.center,::ng-deep .fs-list tfoot .fs-list-row th.center,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-head tr td.center,::ng-deep .fs-list .fs-list-head tr th.center,::ng-deep .fs-list .fs-list-head tr .fs-list-col.center,::ng-deep .fs-list .fs-list-head .fs-list-row td.center,::ng-deep .fs-list .fs-list-head .fs-list-row th.center,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-body tr td.center,::ng-deep .fs-list .fs-list-body tr th.center,::ng-deep .fs-list .fs-list-body tr .fs-list-col.center,::ng-deep .fs-list .fs-list-body .fs-list-row td.center,::ng-deep .fs-list .fs-list-body .fs-list-row th.center,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.center,::ng-deep .fs-list .fs-list-footer tr td.center,::ng-deep .fs-list .fs-list-footer tr th.center,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.center,::ng-deep .fs-list .fs-list-footer .fs-list-row td.center,::ng-deep .fs-list .fs-list-footer .fs-list-row th.center,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.center{text-align:center}::ng-deep .fs-list thead tr td.right,::ng-deep .fs-list thead tr th.right,::ng-deep .fs-list thead tr .fs-list-col.right,::ng-deep .fs-list thead .fs-list-row td.right,::ng-deep .fs-list thead .fs-list-row th.right,::ng-deep .fs-list thead .fs-list-row .fs-list-col.right,::ng-deep .fs-list tbody tr td.right,::ng-deep .fs-list tbody tr th.right,::ng-deep .fs-list tbody tr .fs-list-col.right,::ng-deep .fs-list tbody .fs-list-row td.right,::ng-deep .fs-list tbody .fs-list-row th.right,::ng-deep .fs-list tbody .fs-list-row .fs-list-col.right,::ng-deep .fs-list tfoot tr td.right,::ng-deep .fs-list tfoot tr th.right,::ng-deep .fs-list tfoot tr .fs-list-col.right,::ng-deep .fs-list tfoot .fs-list-row td.right,::ng-deep .fs-list tfoot .fs-list-row th.right,::ng-deep .fs-list tfoot .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-head tr td.right,::ng-deep .fs-list .fs-list-head tr th.right,::ng-deep .fs-list .fs-list-head tr .fs-list-col.right,::ng-deep .fs-list .fs-list-head .fs-list-row td.right,::ng-deep .fs-list .fs-list-head .fs-list-row th.right,::ng-deep .fs-list .fs-list-head .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-body tr td.right,::ng-deep .fs-list .fs-list-body tr th.right,::ng-deep .fs-list .fs-list-body tr .fs-list-col.right,::ng-deep .fs-list .fs-list-body .fs-list-row td.right,::ng-deep .fs-list .fs-list-body .fs-list-row th.right,::ng-deep .fs-list .fs-list-body .fs-list-row .fs-list-col.right,::ng-deep .fs-list .fs-list-footer tr td.right,::ng-deep .fs-list .fs-list-footer tr th.right,::ng-deep .fs-list .fs-list-footer tr .fs-list-col.right,::ng-deep .fs-list .fs-list-footer .fs-list-row td.right,::ng-deep .fs-list .fs-list-footer .fs-list-row th.right,::ng-deep .fs-list .fs-list-footer .fs-list-row .fs-list-col.right{text-align:right}::ng-deep .fs-list thead tr.draggable,::ng-deep .fs-list thead .fs-list-row.draggable,::ng-deep .fs-list tbody tr.draggable,::ng-deep .fs-list tbody .fs-list-row.draggable,::ng-deep .fs-list tfoot tr.draggable,::ng-deep .fs-list tfoot .fs-list-row.draggable,::ng-deep .fs-list .fs-list-head tr.draggable,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable,::ng-deep .fs-list .fs-list-body tr.draggable,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable,::ng-deep .fs-list .fs-list-footer tr.draggable,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable{position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px}::ng-deep .fs-list thead tr.draggable td,::ng-deep .fs-list thead tr.draggable .fs-list-col,::ng-deep .fs-list thead .fs-list-row.draggable td,::ng-deep .fs-list thead .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list tbody tr.draggable td,::ng-deep .fs-list tbody tr.draggable .fs-list-col,::ng-deep .fs-list tbody .fs-list-row.draggable td,::ng-deep .fs-list tbody .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list tfoot tr.draggable td,::ng-deep .fs-list tfoot tr.draggable .fs-list-col,::ng-deep .fs-list tfoot .fs-list-row.draggable td,::ng-deep .fs-list tfoot .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-head tr.draggable td,::ng-deep .fs-list .fs-list-head tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-head .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-body tr.draggable td,::ng-deep .fs-list .fs-list-body tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-body .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list .fs-list-footer tr.draggable td,::ng-deep .fs-list .fs-list-footer tr.draggable .fs-list-col,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable td,::ng-deep .fs-list .fs-list-footer .fs-list-row.draggable .fs-list-col{background-color:#f6f6f6;border:none}::ng-deep .fs-list .fs-list-header .heading-container{font-weight:600;font-size:18px;color:#212537;display:flex;flex-direction:column;justify-content:center}::ng-deep .fs-list .fs-list-header .heading{margin:0;line-height:36px}::ng-deep .fs-list .fs-list-header .subheading{display:block;font-size:14px;color:#929292;font-weight:400}::ng-deep .fs-list .fs-list-header .fs-list-actions{white-space:nowrap;float:right}::ng-deep .fs-list .fs-list-header .fs-list-actions .menu-button{width:36px;height:36px;line-height:36px}::ng-deep .fs-list .fs-list-header .action-button{margin-left:5px}::ng-deep .fs-list .fs-list-header .action-button:first-child{margin-left:0}::ng-deep .fs-list .fs-list-header .mat-button{margin-top:0;margin-bottom:0;margin-right:0}::ng-deep .fs-list .fs-list-container{width:100%}::ng-deep .fs-list .fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}::ng-deep .fs-list .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list tfoot td{padding:8px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}::ng-deep .draggable-elem td{opacity:.2}::ng-deep .hidden-mobile-menu-action{display:none!important}::ng-deep .hidden-mobile{display:none!important}@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}}\n"], components: [{ type: i2$2.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { type: FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "scrollable", "firstLoad"] }, { type: FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection"] }, { type: FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved"] }, { type: FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection"] }, { type: FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { type: FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }], directives: [{ type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$2.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }], pipes: { "async": i3$1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, decorators: [{
5038
+ type: Component,
5039
+ args: [{
5040
+ selector: 'fs-list',
5041
+ templateUrl: 'list.component.html',
5042
+ styleUrls: [
5043
+ './list.component.scss',
5044
+ ],
5045
+ changeDetection: ChangeDetectionStrategy.OnPush,
5046
+ providers: [
5047
+ GroupExpandNotifierService,
5048
+ PersistanceController,
5049
+ ReorderController,
5050
+ ]
5051
+ }]
5052
+ }], ctorParameters: function () { return [{ type: ReorderController }, { type: i0.ElementRef }, { type: undefined, decorators: [{
5053
+ type: Optional
5054
+ }, {
5055
+ type: Inject,
5056
+ args: [FS_LIST_DEFAULT_CONFIG]
5057
+ }] }, { type: i2$4.FsScrollService, decorators: [{
5058
+ type: Optional
5059
+ }] }, { type: i3$3.SelectionDialog }, { type: i4.MatDialog }, { type: i0.ChangeDetectorRef }, { type: GroupExpandNotifierService }, { type: i6$1.Router }, { type: i6$1.ActivatedRoute }, { type: PersistanceController }, { type: i3$1.Location }, { type: i4.MatDialogRef, decorators: [{
5060
+ type: Optional
5061
+ }] }, { type: i9.DrawerRef, decorators: [{
5062
+ type: Optional
5063
+ }] }]; }, propDecorators: { classFsList: [{
5064
+ type: HostBinding,
5065
+ args: ['class.fs-list']
5066
+ }], config: [{
5067
+ type: Input,
5068
+ args: ['config']
5069
+ }], loaderLines: [{
5070
+ type: Input
5071
+ }], filtersReady: [{
5072
+ type: Output
5073
+ }], filterReference: [{
5074
+ type: ViewChild,
5075
+ args: [FilterComponent]
5076
+ }], columnTemplates: [{
5077
+ type: ContentChildren,
5078
+ args: [FsListColumnDirective]
5079
+ }], _emptyStateTemplate: [{
5080
+ type: ContentChild,
5081
+ args: [FsListEmptyStateDirective, { read: TemplateRef }]
5082
+ }] } });
5156
5083
 
5157
- let FsListManageSavedFiltersComponent = class FsListManageSavedFiltersComponent {
5084
+ class FsListManageSavedFiltersComponent {
5158
5085
  constructor(_externalParams) {
5159
5086
  this._externalParams = _externalParams;
5160
5087
  this._reorderReady = true;
@@ -5212,125 +5139,31 @@ let FsListManageSavedFiltersComponent = class FsListManageSavedFiltersComponent
5212
5139
  }
5213
5140
  };
5214
5141
  }
5215
- };
5216
- FsListManageSavedFiltersComponent.ctorParameters = () => [
5217
- { type: ExternalParamsController$1 }
5218
- ];
5219
- FsListManageSavedFiltersComponent = __decorate([
5220
- Component({
5221
- 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"
5222
- }),
5223
- __metadata("design:paramtypes", [ExternalParamsController$1])
5224
- ], FsListManageSavedFiltersComponent);
5225
-
5226
- let FsListSavedFiltersComponent = class FsListSavedFiltersComponent {
5227
- constructor(_dialog, _externalParams, _vcRef) {
5228
- this._dialog = _dialog;
5229
- this._externalParams = _externalParams;
5230
- this._vcRef = _vcRef;
5231
- }
5232
- get savedFiltersEnabled$() {
5233
- return this._externalParams.savedFiltersController.enabled$;
5234
- }
5235
- showManageDialog() {
5236
- this._dialog.open(FsListManageSavedFiltersComponent, {
5237
- viewContainerRef: this._vcRef,
5238
- });
5239
- }
5240
- };
5241
- FsListSavedFiltersComponent.ctorParameters = () => [
5242
- { type: MatDialog },
5243
- { type: ExternalParamsController$1 },
5244
- { type: ViewContainerRef }
5245
- ];
5246
- FsListSavedFiltersComponent = __decorate([
5247
- Component({
5248
- selector: 'fs-list-saved-filters',
5249
- 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"
5250
- }),
5251
- __metadata("design:paramtypes", [MatDialog,
5252
- ExternalParamsController$1,
5253
- ViewContainerRef])
5254
- ], FsListSavedFiltersComponent);
5142
+ }
5143
+ FsListManageSavedFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListManageSavedFiltersComponent, deps: [{ token: i2$2.ExternalParamsController }], target: i0.ɵɵFactoryTarget.Component });
5144
+ FsListManageSavedFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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", components: [{ type: FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i2$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i4.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }] });
5145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListManageSavedFiltersComponent, decorators: [{
5146
+ type: Component,
5147
+ args: [{
5148
+ templateUrl: 'manage-saved-filters.component.html',
5149
+ }]
5150
+ }], ctorParameters: function () { return [{ type: i2$2.ExternalParamsController }]; } });
5255
5151
 
5256
- let FsListDraggableRowDirective = class FsListDraggableRowDirective {
5257
- constructor(_el, _renderer, _reorderController, _draggableList) {
5258
- this._el = _el;
5259
- this._renderer = _renderer;
5260
- this._reorderController = _reorderController;
5261
- this._draggableList = _draggableList;
5262
- this._destroy$ = new Subject();
5263
- }
5264
- ngOnInit() {
5265
- if (this._reorderController.moveDropCallback) {
5266
- this._listenDragEvents();
5267
- }
5268
- }
5269
- ngOnDestroy() {
5270
- this._destroy$.next();
5271
- this._destroy$.complete();
5272
- }
5273
- _listenDragEvents() {
5274
- this._draggableList
5275
- .dragStart$
5276
- .pipe(takeUntil(this._destroy$))
5277
- .subscribe(() => {
5278
- this._markReadyToSwapRows();
5279
- });
5280
- this._draggableList
5281
- .dragEnd$
5282
- .pipe(takeUntil(this._destroy$))
5283
- .subscribe(() => {
5284
- this._unmarkRows();
5285
- });
5286
- }
5287
- _markReadyToSwapRows() {
5288
- var _a, _b, _c, _d, _e, _f;
5289
- const currentEl = this.row;
5290
- const targetEl = this._draggableList.draggableItem;
5291
- const currentElGroup = (currentEl.isChild && currentEl.parent) || currentEl;
5292
- const targetElGroup = (targetEl.isChild && targetEl.parent) || targetEl;
5293
- this.row.readyToSwap = this._reorderController.moveDropCallback({
5294
- row1: (_a = currentEl) === null || _a === void 0 ? void 0 : _a.data,
5295
- row2: (_b = targetEl) === null || _b === void 0 ? void 0 : _b.data,
5296
- group1: (_d = (_c = currentEl) === null || _c === void 0 ? void 0 : _c.parent) === null || _d === void 0 ? void 0 : _d.data,
5297
- group2: (_f = (_e = targetEl) === null || _e === void 0 ? void 0 : _e.parent) === null || _f === void 0 ? void 0 : _f.data
5298
- });
5299
- if (!this.row.readyToSwap) {
5300
- this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');
5301
- }
5302
- }
5303
- _unmarkRows() {
5304
- if (!this.row.readyToSwap) {
5305
- this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');
5306
- }
5307
- }
5308
- };
5309
- FsListDraggableRowDirective.ctorParameters = () => [
5310
- { type: ElementRef },
5311
- { type: Renderer2 },
5312
- { type: ReorderController },
5313
- { type: FsListDraggableListDirective }
5314
- ];
5315
- __decorate([
5316
- Input(),
5317
- __metadata("design:type", Row)
5318
- ], FsListDraggableRowDirective.prototype, "row", void 0);
5319
- FsListDraggableRowDirective = __decorate([
5320
- Directive({
5321
- selector: '[fsListDraggableRow]',
5322
- }),
5323
- __metadata("design:paramtypes", [ElementRef,
5324
- Renderer2,
5325
- ReorderController,
5326
- FsListDraggableListDirective])
5327
- ], FsListDraggableRowDirective);
5152
+ class FsListContentDirective {
5153
+ }
5154
+ FsListContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5155
+ FsListContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListContentDirective, selector: "[fs-list-content]", ngImport: i0 });
5156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListContentDirective, decorators: [{
5157
+ type: Directive,
5158
+ args: [{
5159
+ selector: '[fs-list-content]',
5160
+ }]
5161
+ }] });
5328
5162
 
5329
- var FsListModule_1;
5330
- let FsListModule = FsListModule_1 = class FsListModule {
5163
+ class FsListModule {
5331
5164
  static forRoot(config = {}) {
5332
5165
  return {
5333
- ngModule: FsListModule_1,
5166
+ ngModule: FsListModule,
5334
5167
  providers: [
5335
5168
  { provide: FS_LIST_CONFIG, useValue: config },
5336
5169
  {
@@ -5341,10 +5174,69 @@ let FsListModule = FsListModule_1 = class FsListModule {
5341
5174
  ]
5342
5175
  };
5343
5176
  }
5344
- };
5345
- FsListModule = FsListModule_1 = __decorate([
5346
- NgModule({
5347
- imports: [
5177
+ }
5178
+ FsListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5179
+ FsListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListModule, declarations: [
5180
+ // Components
5181
+ FsListComponent,
5182
+ FsRowComponent,
5183
+ FsRowActionsComponent,
5184
+ FsRowInlineActionComponent,
5185
+ FsRowMenuActionComponent,
5186
+ FsCellComponent,
5187
+ FsFooterRowComponent,
5188
+ FsFooterCellComponent,
5189
+ FsStatusComponent,
5190
+ FsListLoaderComponent,
5191
+ FsListSavedFiltersComponent,
5192
+ FsListManageSavedFiltersComponent,
5193
+ // Internal Components
5194
+ FsHeadComponent,
5195
+ FsHeadCellComponent,
5196
+ FsBodyComponent,
5197
+ FsFooterComponent,
5198
+ FsPaginationComponent,
5199
+ // Directives
5200
+ FsListColumnDirective,
5201
+ FsListCellDirective,
5202
+ FsListHeaderDirective,
5203
+ FsListFooterDirective,
5204
+ FsListGroupCellDirective,
5205
+ FsListGroupExpandTriggerDirective,
5206
+ FsListDraggableListDirective,
5207
+ FsListDraggableRowDirective,
5208
+ FsListEmptyStateDirective,
5209
+ FsListContentDirective,
5210
+ FsListContentInitDirective,
5211
+ // Dialog
5212
+ CustomizeColsDialogComponent], imports: [CommonModule,
5213
+ RouterModule,
5214
+ MatButtonModule,
5215
+ MatIconModule,
5216
+ MatMenuModule,
5217
+ MatProgressSpinnerModule,
5218
+ MatCheckboxModule,
5219
+ MatRippleModule,
5220
+ FsFilterModule,
5221
+ FsMenuModule,
5222
+ FlexLayoutModule,
5223
+ FsScrollModule,
5224
+ FsPromptModule,
5225
+ MatDialogModule,
5226
+ MatTooltipModule,
5227
+ FsFileModule], exports: [FsListComponent,
5228
+ FsRowComponent,
5229
+ FsCellComponent,
5230
+ FsListLoaderComponent,
5231
+ FsListColumnDirective,
5232
+ FsListCellDirective,
5233
+ FsListHeaderDirective,
5234
+ FsListFooterDirective,
5235
+ FsListGroupCellDirective,
5236
+ FsListGroupExpandTriggerDirective,
5237
+ FsListEmptyStateDirective,
5238
+ FsListContentDirective] });
5239
+ FsListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListModule, providers: [], imports: [[
5348
5240
  CommonModule,
5349
5241
  RouterModule,
5350
5242
  MatButtonModule,
@@ -5361,60 +5253,80 @@ FsListModule = FsListModule_1 = __decorate([
5361
5253
  MatDialogModule,
5362
5254
  MatTooltipModule,
5363
5255
  FsFileModule,
5364
- ],
5365
- declarations: [
5366
- // Components
5367
- FsListComponent,
5368
- FsRowComponent,
5369
- FsRowActionsComponent,
5370
- FsRowInlineActionComponent,
5371
- FsRowMenuActionComponent,
5372
- FsCellComponent,
5373
- FsFooterRowComponent,
5374
- FsFooterCellComponent,
5375
- FsStatusComponent,
5376
- FsListLoaderComponent,
5377
- FsListSavedFiltersComponent,
5378
- FsListManageSavedFiltersComponent,
5379
- // Internal Components
5380
- FsHeadComponent,
5381
- FsHeadCellComponent,
5382
- FsBodyComponent,
5383
- FsFooterComponent,
5384
- FsPaginationComponent,
5385
- // Directives
5386
- FsListColumnDirective,
5387
- FsListCellDirective,
5388
- FsListHeaderDirective,
5389
- FsListFooterDirective,
5390
- FsListGroupCellDirective,
5391
- FsListGroupExpandTriggerDirective,
5392
- FsListDraggableListDirective,
5393
- FsListDraggableRowDirective,
5394
- FsListEmptyStateDirective,
5395
- // Dialog
5396
- CustomizeColsDialogComponent,
5397
- ],
5398
- entryComponents: [
5399
- // Dialog
5400
- CustomizeColsDialogComponent,
5401
- ],
5402
- providers: [],
5403
- exports: [
5404
- FsListComponent,
5405
- FsRowComponent,
5406
- FsCellComponent,
5407
- FsListLoaderComponent,
5408
- FsListColumnDirective,
5409
- FsListCellDirective,
5410
- FsListHeaderDirective,
5411
- FsListFooterDirective,
5412
- FsListGroupCellDirective,
5413
- FsListGroupExpandTriggerDirective,
5414
- FsListEmptyStateDirective,
5415
- ],
5416
- })
5417
- ], FsListModule);
5256
+ ]] });
5257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListModule, decorators: [{
5258
+ type: NgModule,
5259
+ args: [{
5260
+ imports: [
5261
+ CommonModule,
5262
+ RouterModule,
5263
+ MatButtonModule,
5264
+ MatIconModule,
5265
+ MatMenuModule,
5266
+ MatProgressSpinnerModule,
5267
+ MatCheckboxModule,
5268
+ MatRippleModule,
5269
+ FsFilterModule,
5270
+ FsMenuModule,
5271
+ FlexLayoutModule,
5272
+ FsScrollModule,
5273
+ FsPromptModule,
5274
+ MatDialogModule,
5275
+ MatTooltipModule,
5276
+ FsFileModule,
5277
+ ],
5278
+ declarations: [
5279
+ // Components
5280
+ FsListComponent,
5281
+ FsRowComponent,
5282
+ FsRowActionsComponent,
5283
+ FsRowInlineActionComponent,
5284
+ FsRowMenuActionComponent,
5285
+ FsCellComponent,
5286
+ FsFooterRowComponent,
5287
+ FsFooterCellComponent,
5288
+ FsStatusComponent,
5289
+ FsListLoaderComponent,
5290
+ FsListSavedFiltersComponent,
5291
+ FsListManageSavedFiltersComponent,
5292
+ // Internal Components
5293
+ FsHeadComponent,
5294
+ FsHeadCellComponent,
5295
+ FsBodyComponent,
5296
+ FsFooterComponent,
5297
+ FsPaginationComponent,
5298
+ // Directives
5299
+ FsListColumnDirective,
5300
+ FsListCellDirective,
5301
+ FsListHeaderDirective,
5302
+ FsListFooterDirective,
5303
+ FsListGroupCellDirective,
5304
+ FsListGroupExpandTriggerDirective,
5305
+ FsListDraggableListDirective,
5306
+ FsListDraggableRowDirective,
5307
+ FsListEmptyStateDirective,
5308
+ FsListContentDirective,
5309
+ FsListContentInitDirective,
5310
+ // Dialog
5311
+ CustomizeColsDialogComponent,
5312
+ ],
5313
+ providers: [],
5314
+ exports: [
5315
+ FsListComponent,
5316
+ FsRowComponent,
5317
+ FsCellComponent,
5318
+ FsListLoaderComponent,
5319
+ FsListColumnDirective,
5320
+ FsListCellDirective,
5321
+ FsListHeaderDirective,
5322
+ FsListFooterDirective,
5323
+ FsListGroupCellDirective,
5324
+ FsListGroupExpandTriggerDirective,
5325
+ FsListEmptyStateDirective,
5326
+ FsListContentDirective,
5327
+ ],
5328
+ }]
5329
+ }] });
5418
5330
  function FsListConfigFactory(config) {
5419
5331
  return merge$1({ noResults: { message: 'No Results Found' } }, config);
5420
5332
  }
@@ -5427,5 +5339,5 @@ function FsListConfigFactory(config) {
5427
5339
  * Generated bundle index. Do not edit.
5428
5340
  */
5429
5341
 
5430
- export { ActionType, Column, FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG, FsBodyComponent, FsCellComponent, FsFooterCellComponent, FsFooterComponent, FsFooterRowComponent, FsHeadCellComponent, FsHeadComponent, FsListCellDirective, FsListColumnDirective, FsListComponent, FsListEmptyStateDirective, FsListFooterDirective, FsListHeaderDirective, FsListModule, FsListState, FsPaginationComponent, FsRowComponent, FsStatusComponent, List, PaginationController, PaginationStrategy, ReorderController, ReorderPosition, ReorderStrategy, RowAction, RowType, SelectionChangeType, SelectionController, SortingController, SortingDirection, StyleConfig, FsListConfigFactory as ɵa, GroupExpandNotifierService as ɵb, PersistanceController as ɵc, FsListGroupCellDirective as ɵd, FsListGroupExpandTriggerDirective as ɵe, FsListDraggableListDirective as ɵf, FsRowActionsComponent as ɵg, FsRowInlineActionComponent as ɵh, FsRowMenuActionComponent as ɵi, FsListLoaderComponent as ɵj, FsListSavedFiltersComponent as ɵk, FsListManageSavedFiltersComponent as ɵl, FsListDraggableRowDirective as ɵm, CustomizeColsDialogComponent as ɵn };
5342
+ export { ActionType, Column, FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG, FsBodyComponent, FsCellComponent, FsFooterCellComponent, FsFooterComponent, FsFooterRowComponent, FsHeadCellComponent, FsHeadComponent, FsListCellDirective, FsListColumnDirective, FsListComponent, FsListContentDirective, FsListEmptyStateDirective, FsListFooterDirective, FsListGroupCellDirective, FsListGroupExpandTriggerDirective, FsListHeaderDirective, FsListLoaderComponent, FsListModule, FsListState, FsPaginationComponent, FsRowComponent, FsStatusComponent, List, PaginationController, PaginationStrategy, ReorderController, ReorderPosition, ReorderStrategy, RowAction, RowType, SelectionChangeType, SelectionController, SortingController, SortingDirection, StyleConfig };
5431
5343
  //# sourceMappingURL=firestitch-list.js.map