@firestitch/list 9.12.5 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/app/classes/columns-controller.d.ts +8 -2
  2. package/app/classes/list-controller.d.ts +2 -1
  3. package/app/classes/persistance-controller.d.ts +3 -0
  4. package/app/classes/reorder-controller.d.ts +3 -0
  5. package/app/components/body/body.component.d.ts +3 -0
  6. package/app/components/body/row/actions/actions.component.d.ts +3 -0
  7. package/app/components/body/row/cell/cell.component.d.ts +3 -0
  8. package/app/components/body/row/inline-action/inline-action.component.d.ts +3 -0
  9. package/app/components/body/row/menu-action/menu-action.component.d.ts +3 -0
  10. package/app/components/body/row/row.component.d.ts +3 -0
  11. package/app/components/customize-cols/customize-cols.component.d.ts +3 -0
  12. package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +3 -0
  13. package/app/components/footer/footer-row/footer-row.component.d.ts +3 -0
  14. package/app/components/footer/footer.component.d.ts +3 -0
  15. package/app/components/head/head-cell/head-cell.component.d.ts +3 -0
  16. package/app/components/head/head.component.d.ts +3 -0
  17. package/app/components/list/list.component.d.ts +3 -0
  18. package/app/components/loader/loader.component.d.ts +3 -0
  19. package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +3 -0
  20. package/app/components/pagination/pagination.component.d.ts +3 -0
  21. package/app/components/saved-filters/saved-filters.component.d.ts +3 -0
  22. package/app/components/status/status.component.d.ts +3 -0
  23. package/app/directives/cell/cell.directive.d.ts +3 -0
  24. package/app/directives/column/column.directive.d.ts +17 -10
  25. package/app/directives/content/content.directive.d.ts +3 -0
  26. package/app/directives/content-init/content-init.directive.d.ts +9 -0
  27. package/app/directives/draggable-list/draggable-list.directive.d.ts +3 -0
  28. package/app/directives/draggable-row/draggable-row.directive.d.ts +3 -0
  29. package/app/directives/empty-state/empty-state.directive.d.ts +3 -0
  30. package/app/directives/footer/footer.directive.d.ts +3 -0
  31. package/app/directives/group-cell/group-cell.directive.d.ts +3 -0
  32. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +3 -0
  33. package/app/directives/header/header.directive.d.ts +3 -0
  34. package/app/fs-list.module.d.ts +49 -0
  35. package/app/interfaces/column-config.interface.d.ts +2 -0
  36. package/app/interfaces/listconfig.interface.d.ts +2 -0
  37. package/app/models/column-async-attribute.d.ts +5 -0
  38. package/app/models/column-attributes.d.ts +38 -0
  39. package/app/models/column.model.d.ts +22 -15
  40. package/app/services/group-expand-notifier.service.d.ts +3 -0
  41. package/bundles/firestitch-list.umd.js +2461 -2146
  42. package/bundles/firestitch-list.umd.js.map +1 -1
  43. package/esm2015/app/classes/actions-controller.js +1 -1
  44. package/esm2015/app/classes/columns-controller.js +30 -10
  45. package/esm2015/app/classes/data-controller.js +2 -2
  46. package/esm2015/app/classes/external-params-controller.js +5 -7
  47. package/esm2015/app/classes/index.js +1 -1
  48. package/esm2015/app/classes/list-controller.js +7 -2
  49. package/esm2015/app/classes/pagination-controller.js +2 -2
  50. package/esm2015/app/classes/persistance-controller.js +11 -14
  51. package/esm2015/app/classes/reorder-controller.js +13 -13
  52. package/esm2015/app/classes/selection-controller.js +7 -6
  53. package/esm2015/app/classes/sorting-controller.js +6 -2
  54. package/esm2015/app/components/body/body.component.js +48 -75
  55. package/esm2015/app/components/body/row/actions/actions.component.js +37 -48
  56. package/esm2015/app/components/body/row/cell/cell.component.js +27 -33
  57. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +27 -28
  58. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +27 -32
  59. package/esm2015/app/components/body/row/row.component.js +54 -84
  60. package/esm2015/app/components/customize-cols/customize-cols.component.js +23 -18
  61. package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +15 -13
  62. package/esm2015/app/components/footer/footer-row/footer-row.component.js +20 -28
  63. package/esm2015/app/components/footer/footer.component.js +21 -25
  64. package/esm2015/app/components/head/head-cell/head-cell.component.js +17 -19
  65. package/esm2015/app/components/head/head.component.js +31 -39
  66. package/esm2015/app/components/list/list.component.js +76 -83
  67. package/esm2015/app/components/loader/loader.component.js +22 -21
  68. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +19 -15
  69. package/esm2015/app/components/pagination/pagination.component.js +26 -26
  70. package/esm2015/app/components/saved-filters/saved-filters.component.js +20 -23
  71. package/esm2015/app/components/status/status.component.js +38 -41
  72. package/esm2015/app/directives/cell/cell.directive.js +17 -20
  73. package/esm2015/app/directives/column/column.directive.js +96 -88
  74. package/esm2015/app/directives/content/content.directive.js +12 -10
  75. package/esm2015/app/directives/content-init/content-init.directive.js +22 -0
  76. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +16 -24
  77. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +22 -30
  78. package/esm2015/app/directives/empty-state/empty-state.directive.js +12 -10
  79. package/esm2015/app/directives/footer/footer.directive.js +17 -20
  80. package/esm2015/app/directives/group-cell/group-cell.directive.js +12 -10
  81. package/esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js +16 -22
  82. package/esm2015/app/directives/header/header.directive.js +17 -20
  83. package/esm2015/app/enums/button-type.enum.js +1 -1
  84. package/esm2015/app/enums/page-change-type.enum.js +1 -1
  85. package/esm2015/app/enums/pagination-strategy.enum.js +1 -1
  86. package/esm2015/app/enums/row-type.enum.js +1 -1
  87. package/esm2015/app/enums/state.enum.js +1 -1
  88. package/esm2015/app/fs-list.module.js +142 -66
  89. package/esm2015/app/fs-list.providers.js +1 -1
  90. package/esm2015/app/interfaces/cellconfig.interface.js +2 -1
  91. package/esm2015/app/interfaces/column-config.interface.js +2 -0
  92. package/esm2015/app/interfaces/draggable-list.interface.js +2 -1
  93. package/esm2015/app/interfaces/external-params.interface.js +2 -1
  94. package/esm2015/app/interfaces/index.js +4 -1
  95. package/esm2015/app/interfaces/listconfig.interface.js +2 -1
  96. package/esm2015/app/interfaces/pagination.interface.js +2 -1
  97. package/esm2015/app/models/column-async-attribute.js +14 -0
  98. package/esm2015/app/models/column-attributes.js +112 -0
  99. package/esm2015/app/models/column.model.js +55 -86
  100. package/esm2015/app/models/row/base-row.js +1 -1
  101. package/esm2015/app/models/row/child-row.js +1 -1
  102. package/esm2015/app/models/row/group-row.js +1 -1
  103. package/esm2015/app/models/row/simple-row.js +1 -1
  104. package/esm2015/app/models/row-action.model.js +1 -1
  105. package/esm2015/app/models/row.js +1 -1
  106. package/esm2015/app/models/styleConfig.model.js +1 -1
  107. package/esm2015/app/services/group-expand-notifier.service.js +9 -8
  108. package/esm2015/firestitch-list.js +1 -15
  109. package/esm2015/public_api.js +4 -1
  110. package/fesm2015/firestitch-list.js +1605 -1553
  111. package/fesm2015/firestitch-list.js.map +1 -1
  112. package/firestitch-list.d.ts +1 -15
  113. package/package.json +5 -8
  114. package/public_api.d.ts +3 -0
  115. package/bundles/firestitch-list.umd.min.js +0 -16
  116. package/bundles/firestitch-list.umd.min.js.map +0 -1
  117. package/esm5/app/classes/actions-controller.js +0 -71
  118. package/esm5/app/classes/columns-controller.js +0 -236
  119. package/esm5/app/classes/data-controller.js +0 -374
  120. package/esm5/app/classes/external-params-controller.js +0 -185
  121. package/esm5/app/classes/index.js +0 -3
  122. package/esm5/app/classes/list-controller.js +0 -783
  123. package/esm5/app/classes/pagination-controller.js +0 -570
  124. package/esm5/app/classes/persistance-controller.js +0 -25
  125. package/esm5/app/classes/reorder-controller.js +0 -204
  126. package/esm5/app/classes/selection-controller.js +0 -465
  127. package/esm5/app/classes/sorting-controller.js +0 -204
  128. package/esm5/app/components/body/body.component.js +0 -104
  129. package/esm5/app/components/body/row/actions/actions.component.js +0 -116
  130. package/esm5/app/components/body/row/cell/cell.component.js +0 -95
  131. package/esm5/app/components/body/row/inline-action/inline-action.component.js +0 -43
  132. package/esm5/app/components/body/row/menu-action/menu-action.component.js +0 -38
  133. package/esm5/app/components/body/row/row.component.js +0 -295
  134. package/esm5/app/components/customize-cols/customize-cols.component.js +0 -69
  135. package/esm5/app/components/footer/footer-row/footer-cell/footer-cell.component.js +0 -20
  136. package/esm5/app/components/footer/footer-row/footer-row.component.js +0 -38
  137. package/esm5/app/components/footer/footer.component.js +0 -31
  138. package/esm5/app/components/head/head-cell/head-cell.component.js +0 -38
  139. package/esm5/app/components/head/head.component.js +0 -106
  140. package/esm5/app/components/list/list.component.js +0 -403
  141. package/esm5/app/components/loader/loader.component.js +0 -47
  142. package/esm5/app/components/manage-saved-filters/manage-saved-filters.component.js +0 -81
  143. package/esm5/app/components/pagination/pagination.component.js +0 -46
  144. package/esm5/app/components/saved-filters/saved-filters.component.js +0 -41
  145. package/esm5/app/components/status/status.component.js +0 -79
  146. package/esm5/app/directives/cell/cell.directive.js +0 -24
  147. package/esm5/app/directives/column/column.directive.js +0 -98
  148. package/esm5/app/directives/content/content.directive.js +0 -14
  149. package/esm5/app/directives/draggable-list/draggable-list.directive.js +0 -281
  150. package/esm5/app/directives/draggable-row/draggable-row.directive.js +0 -83
  151. package/esm5/app/directives/empty-state/empty-state.directive.js +0 -14
  152. package/esm5/app/directives/footer/footer.directive.js +0 -24
  153. package/esm5/app/directives/group-cell/group-cell.directive.js +0 -17
  154. package/esm5/app/directives/group-expand-trigger/group-expand-trigger.directive.js +0 -33
  155. package/esm5/app/directives/header/header.directive.js +0 -24
  156. package/esm5/app/enums/button-type.enum.js +0 -9
  157. package/esm5/app/enums/page-change-type.enum.js +0 -6
  158. package/esm5/app/enums/pagination-strategy.enum.js +0 -7
  159. package/esm5/app/enums/row-type.enum.js +0 -7
  160. package/esm5/app/enums/state.enum.js +0 -11
  161. package/esm5/app/fs-list.module.js +0 -152
  162. package/esm5/app/fs-list.providers.js +0 -4
  163. package/esm5/app/interfaces/cellconfig.interface.js +0 -1
  164. package/esm5/app/interfaces/draggable-list.interface.js +0 -1
  165. package/esm5/app/interfaces/external-params.interface.js +0 -1
  166. package/esm5/app/interfaces/index.js +0 -1
  167. package/esm5/app/interfaces/listconfig.interface.js +0 -1
  168. package/esm5/app/interfaces/pagination.interface.js +0 -1
  169. package/esm5/app/models/column.model.js +0 -204
  170. package/esm5/app/models/row/base-row.js +0 -35
  171. package/esm5/app/models/row/child-row.js +0 -43
  172. package/esm5/app/models/row/group-row.js +0 -61
  173. package/esm5/app/models/row/simple-row.js +0 -15
  174. package/esm5/app/models/row-action.model.js +0 -153
  175. package/esm5/app/models/row.js +0 -126
  176. package/esm5/app/models/styleConfig.model.js +0 -91
  177. package/esm5/app/services/group-expand-notifier.service.js +0 -30
  178. package/esm5/firestitch-list.js +0 -19
  179. package/esm5/public_api.js +0 -41
  180. package/fesm5/firestitch-list.js +0 -6084
  181. package/fesm5/firestitch-list.js.map +0 -1
  182. 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 { Injectable, Directive, Input, HostListener, TemplateRef, 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';
20
- 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';
32
+ import { isString, isObject, isBoolean, isNumber, isFunction, get, cloneDeep, random, mergeWith, merge as merge$1 } from 'lodash-es';
33
+ import { BehaviorSubject, Subject, merge, Observable, from, combineLatest, of } from 'rxjs';
34
+ import { takeUntil, tap, skip, distinctUntilChanged, take, map, debounceTime, switchMap, mapTo, catchError, shareReplay, filter } 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 = {}) {
@@ -119,9 +136,8 @@ const ALLOWED_DEFAULTS = [
119
136
  'align',
120
137
  'class'
121
138
  ];
122
- class Column extends Model {
123
- constructor(colConfig = {}, colDefaults = false) {
124
- super();
139
+ class Column {
140
+ constructor(colConfig, colDefaults = false) {
125
141
  this.headerConfigs = new StyleConfig();
126
142
  this.groupCellConfigs = new StyleConfig();
127
143
  this.cellConfigs = new StyleConfig();
@@ -131,10 +147,46 @@ class Column extends Model {
131
147
  this.cellColspanned = false;
132
148
  this.footerColspanned = false;
133
149
  this._ordered = false;
134
- this._fromJSON(colConfig);
150
+ this._parseConfig(colConfig);
135
151
  this.colStyles = new StyleConfig(colConfig);
136
152
  this.mergeWithColumnDefaults(colDefaults);
137
153
  }
154
+ set title(value) {
155
+ this._attributes.title = value;
156
+ }
157
+ get title() {
158
+ return this._attributes.title;
159
+ }
160
+ get name() {
161
+ return this._attributes.name;
162
+ }
163
+ get customize() {
164
+ return this._attributes.customize;
165
+ }
166
+ get width() {
167
+ return this._attributes.width;
168
+ }
169
+ set sortable(value) {
170
+ this._attributes.sortable = value;
171
+ }
172
+ get sortable() {
173
+ return this._attributes.sortable;
174
+ }
175
+ get sortableDefault() {
176
+ return this._attributes.sortableDefault;
177
+ }
178
+ set sortingDirection(value) {
179
+ this._attributes.direction = value;
180
+ }
181
+ get sortingDirection() {
182
+ return this._attributes.direction;
183
+ }
184
+ get visible() {
185
+ return this._attributes.visible;
186
+ }
187
+ get visible$() {
188
+ return this._attributes.visible$;
189
+ }
138
190
  get direction() {
139
191
  return (this.sortingDirection === SortingDirection.asc) ? 'asc' : 'desc';
140
192
  }
@@ -150,12 +202,6 @@ class Column extends Model {
150
202
  this.sortingDirection = SortingDirection.asc;
151
203
  }
152
204
  }
153
- _fromJSON(value) {
154
- super._fromJSON(value);
155
- if (this.sortableDefault) {
156
- this.sortable = true;
157
- }
158
- }
159
205
  /**
160
206
  * Merge with defaults with existing config
161
207
  * @param defaults
@@ -214,79 +260,22 @@ class Column extends Model {
214
260
  this.sortingDirection = SortingDirection.asc;
215
261
  }
216
262
  }
263
+ updateVisibility(value) {
264
+ this._attributes.visible = value;
265
+ }
266
+ _parseConfig(config) {
267
+ this._attributes = config.attributes;
268
+ this.headerTemplate = config.headerTemplate;
269
+ this.groupCellTemplate = config.groupCellTemplate;
270
+ this.cellTemplate = config.cellTemplate;
271
+ this.footerTemplate = config.footerTemplate;
272
+ this.headerConfigs = new StyleConfig(config.headerConfigs);
273
+ this.groupCellConfigs = new StyleConfig(config.groupCellConfigs);
274
+ this.cellConfigs = new StyleConfig(config.cellConfigs);
275
+ this.footerConfigs = new StyleConfig(config.footerConfigs);
276
+ this.expandTrigger = config.expandTrigger;
277
+ }
217
278
  }
218
- __decorate([
219
- Alias(),
220
- __metadata("design:type", String)
221
- ], Column.prototype, "title", void 0);
222
- __decorate([
223
- Alias(),
224
- __metadata("design:type", String)
225
- ], Column.prototype, "name", void 0);
226
- __decorate([
227
- Alias(),
228
- __metadata("design:type", Boolean)
229
- ], Column.prototype, "show", void 0);
230
- __decorate([
231
- Alias(),
232
- __metadata("design:type", Boolean)
233
- ], Column.prototype, "customize", void 0);
234
- __decorate([
235
- Alias(),
236
- __metadata("design:type", String)
237
- ], Column.prototype, "width", void 0);
238
- __decorate([
239
- Alias(),
240
- __metadata("design:type", Boolean)
241
- ], Column.prototype, "sortable", void 0);
242
- __decorate([
243
- Alias(),
244
- __metadata("design:type", Boolean)
245
- ], Column.prototype, "sortableDefault", void 0);
246
- __decorate([
247
- Alias(),
248
- __metadata("design:type", TemplateRef)
249
- ], Column.prototype, "headerTemplate", void 0);
250
- __decorate([
251
- Alias(),
252
- __metadata("design:type", TemplateRef)
253
- ], Column.prototype, "groupCellTemplate", void 0);
254
- __decorate([
255
- Alias(),
256
- __metadata("design:type", TemplateRef)
257
- ], Column.prototype, "cellTemplate", void 0);
258
- __decorate([
259
- Alias(),
260
- __metadata("design:type", TemplateRef)
261
- ], Column.prototype, "footerTemplate", void 0);
262
- __decorate([
263
- Alias(),
264
- __metadata("design:type", TemplateRef)
265
- ], Column.prototype, "expandTrigger", void 0);
266
- __decorate([
267
- Alias(),
268
- __metadata("design:type", TemplateRef)
269
- ], Column.prototype, "superTriger", void 0);
270
- __decorate([
271
- Alias('headerConfigs', StyleConfig),
272
- __metadata("design:type", StyleConfig)
273
- ], Column.prototype, "headerConfigs", void 0);
274
- __decorate([
275
- Alias('groupCellConfigs', StyleConfig),
276
- __metadata("design:type", StyleConfig)
277
- ], Column.prototype, "groupCellConfigs", void 0);
278
- __decorate([
279
- Alias('cellConfigs', StyleConfig),
280
- __metadata("design:type", StyleConfig)
281
- ], Column.prototype, "cellConfigs", void 0);
282
- __decorate([
283
- Alias('footerConfigs', StyleConfig),
284
- __metadata("design:type", StyleConfig)
285
- ], Column.prototype, "footerConfigs", void 0);
286
- __decorate([
287
- Alias('direction'),
288
- __metadata("design:type", String)
289
- ], Column.prototype, "sortingDirection", void 0);
290
279
 
291
280
  var ActionType;
292
281
  (function (ActionType) {
@@ -438,7 +427,8 @@ __decorate([
438
427
 
439
428
  class ColumnsController {
440
429
  constructor() {
441
- this.visibleColumns = [];
430
+ this._visibleColumns$ = new BehaviorSubject([]);
431
+ this._visibleColumnsShared$ = this._visibleColumns$.pipe();
442
432
  this._theadClass = '';
443
433
  this._isConfigured = false;
444
434
  this._loadFnConfigured = false;
@@ -447,11 +437,18 @@ class ColumnsController {
447
437
  this._hasHeader = false;
448
438
  this._hasFooter = false;
449
439
  this._columns = [];
440
+ this._columnsUpdated$ = new Subject();
450
441
  this._destroy$ = new Subject();
451
442
  }
452
443
  get columns() {
453
444
  return this._columns.slice();
454
445
  }
446
+ get visibleColumns() {
447
+ return this._visibleColumns$.getValue();
448
+ }
449
+ get visibleColumns$() {
450
+ return this._visibleColumnsShared$;
451
+ }
455
452
  get columnsForDialog() {
456
453
  const hasCustomTitle = !!this._customizeFieldTitleFn;
457
454
  const hasCustomDisabledStatus = !!this._customizeFieldDisabledFn;
@@ -466,12 +463,12 @@ class ColumnsController {
466
463
  ? this._customizeFieldDisabledFn(column.name)
467
464
  : false;
468
465
  const tooltip = hasCustomTooltip
469
- ? this._columnTooltipFn(column.name, column.show, disabled)
466
+ ? this._columnTooltipFn(column.name, column.visible, disabled)
470
467
  : void 0;
471
468
  return {
472
469
  template: column.headerTemplate,
473
470
  name: column.name,
474
- show: column.show,
471
+ show: column.visible,
475
472
  title: title,
476
473
  disabled: disabled,
477
474
  tooltip: tooltip,
@@ -558,6 +555,7 @@ class ColumnsController {
558
555
  this._updateColspans('cellConfigs', 'cellColspanned');
559
556
  this._updateColspans('footerConfigs', 'footerColspanned');
560
557
  this.updateVisibleColumns();
558
+ this._listenColumnVisibilityUpdates();
561
559
  }
562
560
  /**
563
561
  * Load visiblity config for columns from remote
@@ -573,8 +571,7 @@ class ColumnsController {
573
571
  * Set visible columns based on current columns show status
574
572
  */
575
573
  updateVisibleColumns() {
576
- this.visibleColumns =
577
- this._columns.filter((column) => column.show) || [];
574
+ this._visibleColumns$.next(this._columns.filter((column) => column.visible) || []);
578
575
  }
579
576
  /**
580
577
  * Update visibility based on passed config
@@ -585,7 +582,7 @@ class ColumnsController {
585
582
  const col = this._columns
586
583
  .find((column) => column.name === columnConfig.name);
587
584
  if (col) {
588
- col.show = columnConfig.show;
585
+ col.updateVisibility(columnConfig.show);
589
586
  }
590
587
  });
591
588
  this.updateVisibleColumns();
@@ -593,12 +590,24 @@ class ColumnsController {
593
590
  destroy() {
594
591
  this._destroy$.next();
595
592
  this._destroy$.complete();
593
+ this._columnsUpdated$.complete();
596
594
  this._columns = void 0;
597
- this.visibleColumns = void 0;
595
+ this._visibleColumns$ = void 0;
598
596
  this._defaultConfigs = void 0;
599
597
  this._loadFn = void 0;
600
598
  this._changeFn = void 0;
601
599
  }
600
+ _listenColumnVisibilityUpdates() {
601
+ this._columnsUpdated$.next();
602
+ const columnsVisibility = this._columns.map((column) => {
603
+ return column.visible$.pipe(skip(1));
604
+ });
605
+ merge(...columnsVisibility)
606
+ .pipe(takeUntil(this._columnsUpdated$), takeUntil(this._destroy$))
607
+ .subscribe(() => {
608
+ this.updateVisibleColumns();
609
+ });
610
+ }
602
611
  _updateColspans(config, updateFlag) {
603
612
  this._columns.forEach((col, index) => {
604
613
  if (col[config].colspan !== void 0) {
@@ -923,7 +932,7 @@ class DataController {
923
932
  if (group) {
924
933
  this._groupByFn = group.groupBy;
925
934
  this._compareByFn = group.compareBy;
926
- this._initialExpand = (_a = group.initialExpand, (_a !== null && _a !== void 0 ? _a : true));
935
+ this._initialExpand = (_a = group.initialExpand) !== null && _a !== void 0 ? _a : true;
927
936
  // group mode enabled by default
928
937
  this._groupEnabled = (group.enabled !== void 0)
929
938
  ? group.enabled
@@ -1615,7 +1624,7 @@ class PaginationController {
1615
1624
  _fromParams(params) {
1616
1625
  var _a;
1617
1626
  if (!this.loadMoreEnabled) {
1618
- this.limit = (_a = params.limit, (_a !== null && _a !== void 0 ? _a : 25));
1627
+ this.limit = (_a = params.limit) !== null && _a !== void 0 ? _a : 25;
1619
1628
  }
1620
1629
  this.records = params.records;
1621
1630
  this.manual = params.manual;
@@ -1763,6 +1772,7 @@ class SelectionController {
1763
1772
  selectAll: this.selectAll,
1764
1773
  allCount: this._totalRecordsCount,
1765
1774
  actions: [...this.actions],
1775
+ // selectAll: this.sele
1766
1776
  });
1767
1777
  this._subscribeToSelection();
1768
1778
  }
@@ -1829,11 +1839,11 @@ class SelectionController {
1829
1839
  }
1830
1840
  updateConfig({ actions, actionSelected, allSelected, cancelled, selectionChanged, selectAll }) {
1831
1841
  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);
1842
+ this.actionSelectedFn = actionSelected !== null && actionSelected !== void 0 ? actionSelected : this.actionSelectedFn;
1843
+ this.allSelectedFn = allSelected !== null && allSelected !== void 0 ? allSelected : this.allSelectedFn;
1844
+ this.cancelledFn = cancelled !== null && cancelled !== void 0 ? cancelled : this.cancelledFn;
1845
+ this.selectionChangedFn = selectionChanged !== null && selectionChanged !== void 0 ? selectionChanged : this.selectionChangedFn;
1846
+ this.selectAll = selectAll !== null && selectAll !== void 0 ? selectAll : this.selectAll;
1837
1847
  }
1838
1848
  // Reset actions to default set
1839
1849
  resetActions() {
@@ -2076,6 +2086,130 @@ class SelectionController {
2076
2086
  }
2077
2087
  }
2078
2088
 
2089
+ class ColumnAsyncAttribute extends BehaviorSubject {
2090
+ constructor(value) {
2091
+ super(Object.freeze(value));
2092
+ }
2093
+ next(value) {
2094
+ const newValue = value;
2095
+ const oldValue = this.getValue();
2096
+ if (newValue !== oldValue) {
2097
+ super.next(Object.freeze(value));
2098
+ }
2099
+ }
2100
+ }
2101
+
2102
+ class ColumnAttributes {
2103
+ constructor(attrs = {}) {
2104
+ this._customize = true;
2105
+ this._visible$ = new ColumnAsyncAttribute(true);
2106
+ this._init(attrs);
2107
+ }
2108
+ // title
2109
+ set title(value) {
2110
+ this._title = value;
2111
+ }
2112
+ get title() {
2113
+ return this._title;
2114
+ }
2115
+ // name
2116
+ set name(value) {
2117
+ this._name = value;
2118
+ }
2119
+ get name() {
2120
+ return this._name;
2121
+ }
2122
+ // customize
2123
+ set customize(value) {
2124
+ this._customize = value;
2125
+ }
2126
+ get customize() {
2127
+ return this._customize;
2128
+ }
2129
+ // sortable
2130
+ set sortable(value) {
2131
+ this._sortable = value;
2132
+ }
2133
+ get sortable() {
2134
+ return this._sortable;
2135
+ }
2136
+ // sortableDefault
2137
+ set sortableDefault(value) {
2138
+ this._sortableDefault = value;
2139
+ if (this.sortableDefault) {
2140
+ this.sortable = true;
2141
+ }
2142
+ }
2143
+ get sortableDefault() {
2144
+ return this._sortableDefault;
2145
+ }
2146
+ // direction
2147
+ set direction(value) {
2148
+ this._direction = value;
2149
+ }
2150
+ get direction() {
2151
+ return this._direction;
2152
+ }
2153
+ // align
2154
+ set align(value) {
2155
+ this._align = value;
2156
+ }
2157
+ get align() {
2158
+ return this._align;
2159
+ }
2160
+ // width
2161
+ set width(value) {
2162
+ this._width = value;
2163
+ }
2164
+ get width() {
2165
+ return this._width;
2166
+ }
2167
+ // className
2168
+ set className(value) {
2169
+ this._className = value;
2170
+ }
2171
+ get className() {
2172
+ return this._className;
2173
+ }
2174
+ // visibility
2175
+ set visible(value) {
2176
+ this._visible$.next(value);
2177
+ }
2178
+ get visible() {
2179
+ return this._visible$.getValue();
2180
+ }
2181
+ get visible$() {
2182
+ return this._visible$.asObservable();
2183
+ }
2184
+ _init(attrs) {
2185
+ Object.keys(attrs)
2186
+ .forEach((key) => {
2187
+ switch (key) {
2188
+ case 'title':
2189
+ {
2190
+ this.title = attrs[key];
2191
+ }
2192
+ break;
2193
+ case 'name':
2194
+ {
2195
+ this.name = attrs[key];
2196
+ }
2197
+ break;
2198
+ case 'align':
2199
+ {
2200
+ this.align = attrs[key];
2201
+ }
2202
+ break;
2203
+ case 'direction':
2204
+ {
2205
+ this.direction = attrs[key];
2206
+ }
2207
+ break;
2208
+ }
2209
+ });
2210
+ }
2211
+ }
2212
+
2079
2213
  class SortingController {
2080
2214
  constructor() {
2081
2215
  this.sortingColumns = [];
@@ -2154,12 +2288,15 @@ class SortingController {
2154
2288
  */
2155
2289
  initFakeColumns(columns) {
2156
2290
  columns.forEach((column) => {
2157
- const fakeColumn = new Column({
2291
+ const attributes = new ColumnAttributes({
2158
2292
  title: column.name,
2159
2293
  name: column.value,
2160
2294
  sortable: true,
2161
2295
  direction: column.direction,
2162
2296
  });
2297
+ const fakeColumn = new Column({
2298
+ attributes,
2299
+ });
2163
2300
  this.fakeSortingColumns.push(fakeColumn);
2164
2301
  });
2165
2302
  }
@@ -2329,20 +2466,18 @@ class ExternalParamsController {
2329
2466
  this._destroy$.complete();
2330
2467
  }
2331
2468
  _restorePaginationParams(values) {
2332
- var _a, _b;
2333
- if ((_a = values) === null || _a === void 0 ? void 0 : _a.page) {
2469
+ if (values === null || values === void 0 ? void 0 : values.page) {
2334
2470
  this._externalParams.page = +values.page;
2335
2471
  }
2336
- if ((_b = values) === null || _b === void 0 ? void 0 : _b.limit) {
2472
+ if (values === null || values === void 0 ? void 0 : values.limit) {
2337
2473
  this._externalParams.limit = +values.limit;
2338
2474
  }
2339
2475
  }
2340
2476
  _restoreSortingParams(values) {
2341
- var _a, _b;
2342
- if ((_a = values) === null || _a === void 0 ? void 0 : _a.sortName) {
2477
+ if (values === null || values === void 0 ? void 0 : values.sortName) {
2343
2478
  this._externalParams.sortName = values.sortName;
2344
2479
  }
2345
- if ((_b = values) === null || _b === void 0 ? void 0 : _b.sortDirection) {
2480
+ if (values === null || values === void 0 ? void 0 : values.sortDirection) {
2346
2481
  this._externalParams.sortDirection = values.sortDirection;
2347
2482
  }
2348
2483
  }
@@ -2495,7 +2630,7 @@ class List extends Model {
2495
2630
  // Set sortBy default column
2496
2631
  this.sorting.clearSortableColumns();
2497
2632
  this.columns.columns
2498
- .filter((column) => column.sortable && column.show)
2633
+ .filter((column) => column.sortable && column.visible)
2499
2634
  .forEach((column) => {
2500
2635
  this.sorting.addSortableColumn(column);
2501
2636
  });
@@ -2676,6 +2811,11 @@ class List extends Model {
2676
2811
  if (!config.trackBy) {
2677
2812
  this.trackBy = 'id';
2678
2813
  }
2814
+ if (config.afterContentInit) {
2815
+ this.afterContentInit = () => {
2816
+ config.afterContentInit(this.paging.query, this.dataController.visibleRows);
2817
+ };
2818
+ }
2679
2819
  }
2680
2820
  /**
2681
2821
  * Init restore row action and append Show Deleted option into filters
@@ -3156,7 +3296,7 @@ var ReorderStrategy;
3156
3296
  ReorderStrategy["Manual"] = "manual";
3157
3297
  ReorderStrategy["Custom"] = "custom";
3158
3298
  })(ReorderStrategy || (ReorderStrategy = {}));
3159
- let ReorderController = class ReorderController {
3299
+ class ReorderController {
3160
3300
  constructor() {
3161
3301
  this._enabled$ = new BehaviorSubject(false);
3162
3302
  this._manualReorderActivated$ = new BehaviorSubject(false);
@@ -3204,10 +3344,10 @@ let ReorderController = class ReorderController {
3204
3344
  if (!data) {
3205
3345
  return;
3206
3346
  }
3207
- this.menu = (_a = data.menu, (_a !== null && _a !== void 0 ? _a : true));
3208
- this.position = (_b = data.position, (_b !== null && _b !== void 0 ? _b : ReorderPosition.Left));
3209
- this.strategy = (_c = data.strategy, (_c !== null && _c !== void 0 ? _c : ReorderStrategy.Manual));
3210
- this.status = (_d = data.status, (_d !== null && _d !== void 0 ? _d : true));
3347
+ this.menu = (_a = data.menu) !== null && _a !== void 0 ? _a : true;
3348
+ this.position = (_b = data.position) !== null && _b !== void 0 ? _b : ReorderPosition.Left;
3349
+ this.strategy = (_c = data.strategy) !== null && _c !== void 0 ? _c : ReorderStrategy.Manual;
3350
+ this.status = (_d = data.status) !== null && _d !== void 0 ? _d : true;
3211
3351
  this.label = data.label;
3212
3352
  this.startCallback = data.start;
3213
3353
  this.movedCallback = data.moved;
@@ -3304,75 +3444,73 @@ let ReorderController = class ReorderController {
3304
3444
  this._numberOfActiveFilters = activeFilters;
3305
3445
  this.enabled = this.enabled;
3306
3446
  }
3307
- };
3308
- ReorderController = __decorate([
3309
- Injectable(),
3310
- __metadata("design:paramtypes", [])
3311
- ], ReorderController);
3447
+ }
3448
+ ReorderController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReorderController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3449
+ ReorderController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReorderController });
3450
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ReorderController, decorators: [{
3451
+ type: Injectable
3452
+ }], ctorParameters: function () { return []; } });
3312
3453
 
3313
- let FsListHeaderDirective = class FsListHeaderDirective {
3314
- };
3315
- __decorate([
3316
- Input(),
3317
- __metadata("design:type", Object)
3318
- ], FsListHeaderDirective.prototype, "colspan", void 0);
3319
- __decorate([
3320
- Input(),
3321
- __metadata("design:type", String)
3322
- ], FsListHeaderDirective.prototype, "align", void 0);
3323
- __decorate([
3324
- Input('class'),
3325
- __metadata("design:type", Object)
3326
- ], FsListHeaderDirective.prototype, "className", void 0);
3327
- FsListHeaderDirective = __decorate([
3328
- Directive({ selector: '[fs-list-header]' })
3329
- ], FsListHeaderDirective);
3454
+ class FsListHeaderDirective {
3455
+ }
3456
+ FsListHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3457
+ 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 });
3458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListHeaderDirective, decorators: [{
3459
+ type: Directive,
3460
+ args: [{ selector: '[fs-list-header]' }]
3461
+ }], propDecorators: { colspan: [{
3462
+ type: Input
3463
+ }], align: [{
3464
+ type: Input
3465
+ }], className: [{
3466
+ type: Input,
3467
+ args: ['class']
3468
+ }] } });
3330
3469
 
3331
- let FsListCellDirective = class FsListCellDirective {
3332
- };
3333
- __decorate([
3334
- Input(),
3335
- __metadata("design:type", Object)
3336
- ], FsListCellDirective.prototype, "colspan", void 0);
3337
- __decorate([
3338
- Input(),
3339
- __metadata("design:type", String)
3340
- ], FsListCellDirective.prototype, "align", void 0);
3341
- __decorate([
3342
- Input('class'),
3343
- __metadata("design:type", Object)
3344
- ], FsListCellDirective.prototype, "className", void 0);
3345
- FsListCellDirective = __decorate([
3346
- Directive({ selector: '[fs-list-cell]' })
3347
- ], FsListCellDirective);
3470
+ class FsListCellDirective {
3471
+ }
3472
+ FsListCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListCellDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3473
+ 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 });
3474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListCellDirective, decorators: [{
3475
+ type: Directive,
3476
+ args: [{ selector: '[fs-list-cell]' }]
3477
+ }], propDecorators: { colspan: [{
3478
+ type: Input
3479
+ }], align: [{
3480
+ type: Input
3481
+ }], className: [{
3482
+ type: Input,
3483
+ args: ['class']
3484
+ }] } });
3348
3485
 
3349
- let FsListFooterDirective = class FsListFooterDirective {
3350
- };
3351
- __decorate([
3352
- Input(),
3353
- __metadata("design:type", Object)
3354
- ], FsListFooterDirective.prototype, "colspan", void 0);
3355
- __decorate([
3356
- Input(),
3357
- __metadata("design:type", String)
3358
- ], FsListFooterDirective.prototype, "align", void 0);
3359
- __decorate([
3360
- Input('class'),
3361
- __metadata("design:type", Object)
3362
- ], FsListFooterDirective.prototype, "className", void 0);
3363
- FsListFooterDirective = __decorate([
3364
- Directive({ selector: '[fs-list-footer]' })
3365
- ], FsListFooterDirective);
3486
+ class FsListFooterDirective {
3487
+ }
3488
+ FsListFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3489
+ 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 });
3490
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListFooterDirective, decorators: [{
3491
+ type: Directive,
3492
+ args: [{ selector: '[fs-list-footer]' }]
3493
+ }], propDecorators: { colspan: [{
3494
+ type: Input
3495
+ }], align: [{
3496
+ type: Input
3497
+ }], className: [{
3498
+ type: Input,
3499
+ args: ['class']
3500
+ }] } });
3366
3501
 
3367
- let FsListGroupCellDirective = class FsListGroupCellDirective extends FsListCellDirective {
3368
- };
3369
- FsListGroupCellDirective = __decorate([
3370
- Directive({
3371
- selector: '[fs-list-group-cell]'
3372
- })
3373
- ], FsListGroupCellDirective);
3502
+ class FsListGroupCellDirective extends FsListCellDirective {
3503
+ }
3504
+ FsListGroupCellDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListGroupCellDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3505
+ FsListGroupCellDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListGroupCellDirective, selector: "[fs-list-group-cell]", usesInheritance: true, ngImport: i0 });
3506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListGroupCellDirective, decorators: [{
3507
+ type: Directive,
3508
+ args: [{
3509
+ selector: '[fs-list-group-cell]'
3510
+ }]
3511
+ }] });
3374
3512
 
3375
- let GroupExpandNotifierService = class GroupExpandNotifierService {
3513
+ class GroupExpandNotifierService {
3376
3514
  constructor() {
3377
3515
  this._expandStatusChanged$ = new Subject();
3378
3516
  this._destroy$ = new Subject();
@@ -3387,12 +3525,14 @@ let GroupExpandNotifierService = class GroupExpandNotifierService {
3387
3525
  this._destroy$.next();
3388
3526
  this._destroy$.complete();
3389
3527
  }
3390
- };
3391
- GroupExpandNotifierService = __decorate([
3392
- Injectable()
3393
- ], GroupExpandNotifierService);
3528
+ }
3529
+ GroupExpandNotifierService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GroupExpandNotifierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3530
+ GroupExpandNotifierService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GroupExpandNotifierService });
3531
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: GroupExpandNotifierService, decorators: [{
3532
+ type: Injectable
3533
+ }] });
3394
3534
 
3395
- let FsListGroupExpandTriggerDirective = class FsListGroupExpandTriggerDirective {
3535
+ class FsListGroupExpandTriggerDirective {
3396
3536
  constructor(_expandNotifier) {
3397
3537
  this._expandNotifier = _expandNotifier;
3398
3538
  }
@@ -3401,125 +3541,130 @@ let FsListGroupExpandTriggerDirective = class FsListGroupExpandTriggerDirective
3401
3541
  event.stopPropagation();
3402
3542
  this._expandNotifier.toggleExpandStatus(this.row);
3403
3543
  }
3404
- };
3405
- FsListGroupExpandTriggerDirective.ctorParameters = () => [
3406
- { type: GroupExpandNotifierService }
3407
- ];
3408
- __decorate([
3409
- HostListener('click', ['$event']),
3410
- __metadata("design:type", Function),
3411
- __metadata("design:paramtypes", [Object]),
3412
- __metadata("design:returntype", void 0)
3413
- ], FsListGroupExpandTriggerDirective.prototype, "click", null);
3414
- __decorate([
3415
- Input(),
3416
- __metadata("design:type", Object)
3417
- ], FsListGroupExpandTriggerDirective.prototype, "row", void 0);
3418
- FsListGroupExpandTriggerDirective = __decorate([
3419
- Directive({ selector: '[fsListGroupExpandTrigger]' }),
3420
- __metadata("design:paramtypes", [GroupExpandNotifierService])
3421
- ], FsListGroupExpandTriggerDirective);
3544
+ }
3545
+ FsListGroupExpandTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListGroupExpandTriggerDirective, deps: [{ token: GroupExpandNotifierService }], target: i0.ɵɵFactoryTarget.Directive });
3546
+ 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 });
3547
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListGroupExpandTriggerDirective, decorators: [{
3548
+ type: Directive,
3549
+ args: [{ selector: '[fsListGroupExpandTrigger]' }]
3550
+ }], ctorParameters: function () { return [{ type: GroupExpandNotifierService }]; }, propDecorators: { click: [{
3551
+ type: HostListener,
3552
+ args: ['click', ['$event']]
3553
+ }], row: [{
3554
+ type: Input
3555
+ }] } });
3422
3556
 
3423
- let FsListColumnDirective = class FsListColumnDirective {
3557
+ class FsListColumnDirective {
3424
3558
  constructor() {
3425
- this.show = true;
3426
- this.customize = true;
3559
+ this._columnAttributes = new ColumnAttributes();
3427
3560
  }
3428
- };
3429
- __decorate([
3430
- Input(),
3431
- __metadata("design:type", String)
3432
- ], FsListColumnDirective.prototype, "title", void 0);
3433
- __decorate([
3434
- Input(),
3435
- __metadata("design:type", String)
3436
- ], FsListColumnDirective.prototype, "name", void 0);
3437
- __decorate([
3438
- Input(),
3439
- __metadata("design:type", Object)
3440
- ], FsListColumnDirective.prototype, "show", void 0);
3441
- __decorate([
3442
- Input(),
3443
- __metadata("design:type", Object)
3444
- ], FsListColumnDirective.prototype, "customize", void 0);
3445
- __decorate([
3446
- Input(),
3447
- __metadata("design:type", Boolean)
3448
- ], FsListColumnDirective.prototype, "sortable", void 0);
3449
- __decorate([
3450
- Input(),
3451
- __metadata("design:type", Boolean)
3452
- ], FsListColumnDirective.prototype, "sortableDefault", void 0);
3453
- __decorate([
3454
- Input(),
3455
- __metadata("design:type", String)
3456
- ], FsListColumnDirective.prototype, "direction", void 0);
3457
- __decorate([
3458
- Input(),
3459
- __metadata("design:type", String)
3460
- ], FsListColumnDirective.prototype, "align", void 0);
3461
- __decorate([
3462
- Input(),
3463
- __metadata("design:type", String)
3464
- ], FsListColumnDirective.prototype, "width", void 0);
3465
- __decorate([
3466
- Input('class'),
3467
- __metadata("design:type", Object)
3468
- ], FsListColumnDirective.prototype, "className", void 0);
3469
- __decorate([
3470
- ContentChild(FsListHeaderDirective, { read: TemplateRef, static: true }),
3471
- __metadata("design:type", TemplateRef)
3472
- ], FsListColumnDirective.prototype, "headerTemplate", void 0);
3473
- __decorate([
3474
- ContentChild(FsListHeaderDirective, { static: true }),
3475
- __metadata("design:type", Object)
3476
- ], FsListColumnDirective.prototype, "headerConfigs", void 0);
3477
- __decorate([
3478
- ContentChild(FsListGroupCellDirective, { read: TemplateRef, static: true }),
3479
- __metadata("design:type", TemplateRef)
3480
- ], FsListColumnDirective.prototype, "groupCellTemplate", void 0);
3481
- __decorate([
3482
- ContentChild(FsListGroupCellDirective, { static: true }),
3483
- __metadata("design:type", Object)
3484
- ], FsListColumnDirective.prototype, "groupCellConfigs", void 0);
3485
- __decorate([
3486
- ContentChildren(FsListGroupExpandTriggerDirective, { descendants: true }),
3487
- __metadata("design:type", QueryList)
3488
- ], FsListColumnDirective.prototype, "expandTrigger", void 0);
3489
- __decorate([
3490
- ContentChild(FsListCellDirective, { read: TemplateRef, static: true }),
3491
- __metadata("design:type", TemplateRef)
3492
- ], FsListColumnDirective.prototype, "cellTemplate", void 0);
3493
- __decorate([
3494
- ContentChild(FsListCellDirective, { static: true }),
3495
- __metadata("design:type", Object)
3496
- ], FsListColumnDirective.prototype, "cellConfigs", void 0);
3497
- __decorate([
3498
- ContentChild(FsListFooterDirective, { read: TemplateRef, static: true }),
3499
- __metadata("design:type", TemplateRef)
3500
- ], FsListColumnDirective.prototype, "footerTemplate", void 0);
3501
- __decorate([
3502
- ContentChild(FsListFooterDirective, { static: true }),
3503
- __metadata("design:type", Object)
3504
- ], FsListColumnDirective.prototype, "footerConfigs", void 0);
3505
- FsListColumnDirective = __decorate([
3506
- Directive({
3507
- selector: 'fs-list-column'
3508
- })
3509
- ], FsListColumnDirective);
3561
+ get attributes() {
3562
+ return this._columnAttributes;
3563
+ }
3564
+ set visible(value) {
3565
+ this._columnAttributes.visible = value;
3566
+ }
3567
+ set title(value) {
3568
+ this._columnAttributes.title = value;
3569
+ }
3570
+ set name(value) {
3571
+ this._columnAttributes.name = value;
3572
+ }
3573
+ set customize(value) {
3574
+ this._columnAttributes.customize = value;
3575
+ }
3576
+ set sortable(value) {
3577
+ this._columnAttributes.sortable = value;
3578
+ }
3579
+ set sortableDefault(value) {
3580
+ this._columnAttributes.sortableDefault = value;
3581
+ }
3582
+ set direction(value) {
3583
+ this._columnAttributes.direction = value;
3584
+ }
3585
+ set align(value) {
3586
+ this._columnAttributes.align = value;
3587
+ }
3588
+ set width(value) {
3589
+ this._columnAttributes.width = value;
3590
+ }
3591
+ set className(value) {
3592
+ this._columnAttributes.className = value;
3593
+ }
3594
+ }
3595
+ FsListColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3596
+ FsListColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListColumnDirective, selector: "fs-list-column", inputs: { visible: ["show", "visible"], title: "title", name: "name", 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 });
3597
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListColumnDirective, decorators: [{
3598
+ type: Directive,
3599
+ args: [{
3600
+ selector: 'fs-list-column'
3601
+ }]
3602
+ }], ctorParameters: function () { return []; }, propDecorators: { headerTemplate: [{
3603
+ type: ContentChild,
3604
+ args: [FsListHeaderDirective, { read: TemplateRef, static: true }]
3605
+ }], headerConfigs: [{
3606
+ type: ContentChild,
3607
+ args: [FsListHeaderDirective, { static: true }]
3608
+ }], groupCellTemplate: [{
3609
+ type: ContentChild,
3610
+ args: [FsListGroupCellDirective, { read: TemplateRef, static: true }]
3611
+ }], groupCellConfigs: [{
3612
+ type: ContentChild,
3613
+ args: [FsListGroupCellDirective, { static: true }]
3614
+ }], expandTrigger: [{
3615
+ type: ContentChildren,
3616
+ args: [FsListGroupExpandTriggerDirective, { descendants: true }]
3617
+ }], cellTemplate: [{
3618
+ type: ContentChild,
3619
+ args: [FsListCellDirective, { read: TemplateRef, static: true }]
3620
+ }], cellConfigs: [{
3621
+ type: ContentChild,
3622
+ args: [FsListCellDirective, { static: true }]
3623
+ }], footerTemplate: [{
3624
+ type: ContentChild,
3625
+ args: [FsListFooterDirective, { read: TemplateRef, static: true }]
3626
+ }], footerConfigs: [{
3627
+ type: ContentChild,
3628
+ args: [FsListFooterDirective, { static: true }]
3629
+ }], visible: [{
3630
+ type: Input,
3631
+ args: ['show']
3632
+ }], title: [{
3633
+ type: Input
3634
+ }], name: [{
3635
+ type: Input
3636
+ }], customize: [{
3637
+ type: Input
3638
+ }], sortable: [{
3639
+ type: Input
3640
+ }], sortableDefault: [{
3641
+ type: Input
3642
+ }], direction: [{
3643
+ type: Input
3644
+ }], align: [{
3645
+ type: Input
3646
+ }], width: [{
3647
+ type: Input
3648
+ }], className: [{
3649
+ type: Input,
3650
+ args: ['class']
3651
+ }] } });
3510
3652
 
3511
- let FsListEmptyStateDirective = class FsListEmptyStateDirective {
3512
- };
3513
- FsListEmptyStateDirective = __decorate([
3514
- Directive({
3515
- selector: '[fs-list-empty-state]',
3516
- })
3517
- ], FsListEmptyStateDirective);
3653
+ class FsListEmptyStateDirective {
3654
+ }
3655
+ FsListEmptyStateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListEmptyStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3656
+ FsListEmptyStateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListEmptyStateDirective, selector: "[fs-list-empty-state]", ngImport: i0 });
3657
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListEmptyStateDirective, decorators: [{
3658
+ type: Directive,
3659
+ args: [{
3660
+ selector: '[fs-list-empty-state]',
3661
+ }]
3662
+ }] });
3518
3663
 
3519
3664
  const FS_LIST_DEFAULT_CONFIG = new InjectionToken('fs-list.default-config');
3520
3665
  const FS_LIST_CONFIG = new InjectionToken('fs-list.config');
3521
3666
 
3522
- let CustomizeColsDialogComponent = class CustomizeColsDialogComponent {
3667
+ class CustomizeColsDialogComponent {
3523
3668
  constructor(data, _dialog) {
3524
3669
  this._dialog = _dialog;
3525
3670
  this.columns = [];
@@ -3565,385 +3710,312 @@ let CustomizeColsDialogComponent = class CustomizeColsDialogComponent {
3565
3710
  cancel() {
3566
3711
  this._dialog.close();
3567
3712
  }
3568
- };
3569
- CustomizeColsDialogComponent.ctorParameters = () => [
3570
- { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
3571
- { type: MatDialogRef }
3572
- ];
3573
- CustomizeColsDialogComponent = __decorate([
3574
- Component({
3575
- 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",
3576
- changeDetection: ChangeDetectionStrategy.OnPush,
3577
- styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}"]
3578
- }),
3579
- __param(0, Inject(MAT_DIALOG_DATA)),
3580
- __metadata("design:paramtypes", [Object, MatDialogRef])
3581
- ], CustomizeColsDialogComponent);
3713
+ }
3714
+ 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 });
3715
+ 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 });
3716
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: CustomizeColsDialogComponent, decorators: [{
3717
+ type: Component,
3718
+ args: [{
3719
+ templateUrl: 'customize-cols.component.html',
3720
+ styleUrls: ['customize-cols.component.scss'],
3721
+ changeDetection: ChangeDetectionStrategy.OnPush,
3722
+ }]
3723
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
3724
+ type: Inject,
3725
+ args: [MAT_DIALOG_DATA]
3726
+ }] }, { type: i4.MatDialogRef }]; } });
3582
3727
 
3583
3728
  const FILTER_STORE_KEY = 'fs-list-persist';
3584
- let PersistanceController = class PersistanceController extends FsPersistanceStore {
3729
+ class PersistanceController extends FsPersistanceStore {
3585
3730
  constructor(_store, _route) {
3586
3731
  super(_store, _route);
3587
3732
  this.STORE_KEY = FILTER_STORE_KEY;
3588
3733
  }
3589
- };
3590
- PersistanceController.ctorParameters = () => [
3591
- { type: FsStore },
3592
- { type: ActivatedRoute }
3593
- ];
3594
- PersistanceController = __decorate([
3595
- Injectable(),
3596
- __metadata("design:paramtypes", [FsStore,
3597
- ActivatedRoute])
3598
- ], PersistanceController);
3734
+ }
3735
+ 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 });
3736
+ PersistanceController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PersistanceController });
3737
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PersistanceController, decorators: [{
3738
+ type: Injectable
3739
+ }], ctorParameters: function () { return [{ type: i1.FsStore }, { type: i6$1.ActivatedRoute }]; } });
3599
3740
 
3600
- let FsListComponent = class FsListComponent {
3601
- constructor(reorderController, _el, _defaultOptions, fsScroll, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location, _dialogRef, _drawerRef) {
3602
- this.reorderController = reorderController;
3603
- this._el = _el;
3604
- this._defaultOptions = _defaultOptions;
3605
- this.fsScroll = fsScroll;
3606
- this.selectionDialog = selectionDialog;
3607
- this.dialog = dialog;
3608
- this.cdRef = cdRef;
3609
- this._groupExpandNotifier = _groupExpandNotifier;
3610
- this._router = _router;
3611
- this._route = _route;
3612
- this._persistance = _persistance;
3613
- this._location = _location;
3614
- this._dialogRef = _dialogRef;
3615
- this._drawerRef = _drawerRef;
3616
- this.classFsList = true;
3617
- this.loaderLines = 3;
3618
- this.filtersReady = new EventEmitter();
3619
- // Event will fired if action remove: true will clicked
3620
- this.rowRemoved = new EventEmitter();
3621
- this.firstLoad = true;
3622
- this._filterParamsReady = false;
3623
- this._inDialog = !!this._dialogRef || !!this._drawerRef;
3624
- this._destroy = new Subject();
3625
- }
3626
- set config(config) {
3627
- this._initWithConfig(config);
3741
+ // import { FsListManageSavedFiltersComponent } from '../manage-saved-filters/manage-saved-filters.component';
3742
+ class FsListSavedFiltersComponent {
3743
+ constructor(_dialog, _externalParams, _vcRef) {
3744
+ this._dialog = _dialog;
3745
+ this._externalParams = _externalParams;
3746
+ this._vcRef = _vcRef;
3628
3747
  }
3629
- set filterReference(component) {
3630
- this._filterRef = component;
3631
- this.list.actions.setFilterRef(component);
3632
- this._emitFiltersReadyEvent();
3748
+ get savedFiltersEnabled$() {
3749
+ return this._externalParams.savedFiltersController.enabled$;
3633
3750
  }
3634
- /**
3635
- * Set columns to config
3636
- * Create Column Model instances
3637
- *
3638
- */
3639
- set columnTemplates(listColumnDirectives) {
3640
- this.listColumnDirectives = listColumnDirectives;
3641
- if (this.list) {
3642
- this.list.tranformTemplatesToColumns(listColumnDirectives);
3643
- }
3751
+ showManageDialog() {
3752
+ // this._dialog.open(FsListManageSavedFiltersComponent, {
3753
+ // viewContainerRef: this._vcRef,
3754
+ // });
3644
3755
  }
3645
- set _emptyStateTemplate(template) {
3646
- if (this.list) {
3647
- this.list.emptyStateTemplate = template;
3648
- }
3649
- }
3650
- /**
3651
- * Return reference for filter
3652
- */
3653
- get filterRef() {
3654
- return this._filterRef;
3655
- }
3656
- get groupEnabled() {
3657
- return this.list.dataController.groupEnabled;
3658
- }
3659
- get paginatorVisible() {
3660
- return this.list.paging.enabled
3661
- && !this.firstLoad
3662
- && !this.list.scrollable
3663
- && !this.list.emptyStateEnabled
3664
- && this.list.dataController.visibleRowsCount > 0
3665
- && this.list.paging.pages > 1;
3666
- }
3667
- set groupEnabled(value) {
3668
- this.list.groupEnabled(value);
3756
+ }
3757
+ 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 });
3758
+ 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 } });
3759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListSavedFiltersComponent, decorators: [{
3760
+ type: Component,
3761
+ args: [{
3762
+ selector: 'fs-list-saved-filters',
3763
+ templateUrl: 'saved-filters.component.html',
3764
+ }]
3765
+ }], ctorParameters: function () { return [{ type: i4.MatDialog }, { type: i2$2.ExternalParamsController }, { type: i0.ViewContainerRef }]; } });
3766
+
3767
+ class FsStatusComponent {
3768
+ constructor(_cdRef) {
3769
+ this._cdRef = _cdRef;
3770
+ this._destroy$ = new Subject();
3669
3771
  }
3670
3772
  ngOnInit() {
3671
- this._subscribeToRemoveRow();
3672
- this._subscribeToGroupExpandStatusChange();
3773
+ this.sorting.sortingChanged$
3774
+ .pipe(takeUntil(this._destroy$))
3775
+ .subscribe(() => {
3776
+ this._cdRef.markForCheck();
3777
+ });
3673
3778
  }
3674
3779
  ngOnDestroy() {
3675
- if (this.list) {
3676
- this.list.destroy();
3677
- }
3678
- this._destroy.next();
3679
- this._destroy.complete();
3680
- }
3681
- nextPage() {
3682
- this.list.paging.goNext();
3683
- }
3684
- prevPage() {
3685
- this.list.paging.goPrev();
3686
- }
3687
- firstPage() {
3688
- this.list.paging.goFirst();
3689
- }
3690
- lastPage() {
3691
- this.list.paging.goLast();
3692
- }
3693
- reload() {
3694
- this.list.reload();
3780
+ this._destroy$.next();
3781
+ this._destroy$.complete();
3695
3782
  }
3696
- getData(trackBy) {
3697
- return this.list.getData(trackBy);
3783
+ toggleDirection() {
3784
+ if (this.sorting.sortingColumn.direction === 'asc') {
3785
+ this.sorting.sortDirection(SortingDirection.desc);
3786
+ }
3787
+ else {
3788
+ this.sorting.sortDirection(SortingDirection.asc);
3789
+ }
3698
3790
  }
3699
- hasData(trackBy) {
3700
- return this.list.hasData(trackBy);
3791
+ setSortableColumn(column) {
3792
+ if (this.sorting.sortingColumn !== column) {
3793
+ this.sorting.sortBy(column);
3794
+ }
3701
3795
  }
3702
- updateData(rows, trackBy) {
3703
- return this.list.dataController.updateData(rows, trackBy);
3796
+ setLimit(limit) {
3797
+ this.paging.setLimit(limit);
3704
3798
  }
3705
- replaceRow(row, trackBy) {
3706
- return this.list.dataController.replaceData(row, trackBy);
3799
+ }
3800
+ FsStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStatusComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3801
+ 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 });
3802
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStatusComponent, decorators: [{
3803
+ type: Component,
3804
+ args: [{
3805
+ selector: 'fs-list-status',
3806
+ templateUrl: 'status.component.html',
3807
+ styleUrls: [
3808
+ './status.component.scss',
3809
+ ],
3810
+ changeDetection: ChangeDetectionStrategy.OnPush,
3811
+ preserveWhitespaces: true
3812
+ }]
3813
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { paging: [{
3814
+ type: Input
3815
+ }], sorting: [{
3816
+ type: Input
3817
+ }], rows: [{
3818
+ type: Input
3819
+ }], scrollable: [{
3820
+ type: Input
3821
+ }], firstLoad: [{
3822
+ type: Input
3823
+ }, {
3824
+ type: HostBinding,
3825
+ args: ['class.first-load']
3826
+ }, {
3827
+ type: HostBinding,
3828
+ args: ['class.fs-skeleton-placeholder']
3829
+ }] } });
3830
+
3831
+ class FsCellComponent {
3832
+ constructor() {
3833
+ this.isColl = true;
3834
+ this.role = 'gridcell';
3835
+ this.cellContext = {};
3836
+ this._destroy$ = new Subject();
3707
3837
  }
3708
- updateSelectionConfig(config) {
3709
- this.list.selection.updateConfig(config);
3838
+ ngOnInit() {
3839
+ this._initCellContext();
3840
+ this._initCellTemplate();
3841
+ this._listenGroupOpen();
3710
3842
  }
3711
- resetSelectionActions() {
3712
- this.list.selection.resetActions();
3843
+ ngOnChanges(changes) {
3844
+ if (changes.rowIndex) {
3845
+ this.cellContext.index = this.rowIndex;
3846
+ }
3713
3847
  }
3714
- removeData(data) {
3715
- return this.list.dataController.removeData(data);
3848
+ ngOnDestroy() {
3849
+ this._destroy$.next();
3850
+ this._destroy$.complete();
3716
3851
  }
3717
- setHeading(heading) {
3718
- this.list.heading = heading;
3852
+ _initCellContext() {
3853
+ this.cellContext.index = this.rowIndex;
3854
+ if (this.row) {
3855
+ if (this.row.isGroup) {
3856
+ this.cellContext.groupIndex = this.row.index;
3857
+ }
3858
+ else if (this.row.isChild) {
3859
+ this.cellContext.groupChildIndex = this.row.index;
3860
+ }
3861
+ }
3862
+ this.cellContext.column = this.column;
3863
+ if (this.row) {
3864
+ this.cellContext.$implicit = this.row.data;
3865
+ this.cellContext.row = this.row.data;
3866
+ this.cellContext.value = this.row.data[this.column.name];
3867
+ this.cellContext.expanded = this.row.expanded;
3868
+ }
3719
3869
  }
3720
- setSubheading(subheading) {
3721
- this.list.subheading = subheading;
3870
+ _initCellTemplate() {
3871
+ if (this.row && this.row.isGroup) {
3872
+ this.cellTemplate = this.column.groupCellTemplate || this.column.cellTemplate;
3873
+ }
3874
+ else {
3875
+ this.cellTemplate = this.column.cellTemplate;
3876
+ }
3722
3877
  }
3723
- reorderStart() {
3724
- this.reorderController.enableReorder();
3878
+ _listenGroupOpen() {
3879
+ if (this.row && this.row.isGroup) {
3880
+ this.row.expanded$
3881
+ .pipe(takeUntil(this._destroy$))
3882
+ .subscribe((status) => {
3883
+ this.cellContext.expanded = status;
3884
+ });
3885
+ }
3725
3886
  }
3726
- reorderFinish() {
3727
- this.reorderController.disableReorder();
3887
+ }
3888
+ FsCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3889
+ 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 });
3890
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsCellComponent, decorators: [{
3891
+ type: Component,
3892
+ args: [{
3893
+ selector: '[fs-cell]',
3894
+ templateUrl: 'cell.component.html',
3895
+ changeDetection: ChangeDetectionStrategy.OnPush
3896
+ }]
3897
+ }], ctorParameters: function () { return []; }, propDecorators: { isColl: [{
3898
+ type: HostBinding,
3899
+ args: ['class.fs-list-col']
3900
+ }], role: [{
3901
+ type: HostBinding,
3902
+ args: ['attr.role']
3903
+ }], column: [{
3904
+ type: Input
3905
+ }], row: [{
3906
+ type: Input
3907
+ }], rowIndex: [{
3908
+ type: Input
3909
+ }] } });
3910
+
3911
+ class FsHeadCellComponent extends FsCellComponent {
3912
+ constructor(cdRef, differs) {
3913
+ super();
3914
+ this.cdRef = cdRef;
3915
+ this.differs = differs;
3916
+ this.cellContext = {};
3917
+ this._columnDiffer = differs.find({}).create();
3728
3918
  }
3729
- setActions(actions) {
3730
- if (actions) {
3731
- this.list.actions.clearActions();
3732
- this.list.actions.setActions(actions);
3919
+ ngDoCheck() {
3920
+ if (this._columnDiffer.diff(this.column)) {
3921
+ this.cdRef.markForCheck();
3733
3922
  }
3734
3923
  }
3735
- filterReady() {
3736
- this.list.filtersReady$.next();
3737
- this._filterParamsReady = true;
3738
- this._emitFiltersReadyEvent();
3924
+ initCellContext() {
3925
+ this.cellContext.value = this.column.title;
3739
3926
  }
3740
- /**
3741
- * Update visibility for specific column
3742
- */
3743
- columnVisibility(name, show) {
3744
- this.columnsVisibility([{ name, show }]);
3927
+ }
3928
+ 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 });
3929
+ 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 });
3930
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadCellComponent, decorators: [{
3931
+ type: Component,
3932
+ args: [{
3933
+ selector: '[fs-head-cell]',
3934
+ templateUrl: 'head-cell.component.html',
3935
+ changeDetection: ChangeDetectionStrategy.OnPush
3936
+ }]
3937
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }]; } });
3938
+
3939
+ class FsHeadComponent {
3940
+ constructor(reorderController, cdRef) {
3941
+ this.reorderController = reorderController;
3942
+ this.cdRef = cdRef;
3943
+ this.selectedAll = false;
3944
+ this.ReorderPosition = ReorderPosition;
3945
+ this.ReorderStrategy = ReorderStrategy;
3946
+ this._destroy$ = new Subject();
3745
3947
  }
3746
- /**
3747
- * Update visibility for list of specific columns
3748
- */
3749
- columnsVisibility(columns) {
3750
- this.list.columns.updateVisibilityForCols(columns);
3948
+ ngOnInit() {
3949
+ this.initSorting();
3950
+ this.initSelection();
3751
3951
  }
3752
- _emitFiltersReadyEvent() {
3753
- if (!!this.filterRef && this._filterParamsReady) {
3754
- this.filtersReady.emit();
3755
- }
3952
+ ngOnDestroy() {
3953
+ this._destroy$.next();
3954
+ this._destroy$.complete();
3756
3955
  }
3757
3956
  /**
3758
- * Initialize config for list
3759
- * @param config
3957
+ * Select All Visible Rows
3958
+ * @param event
3760
3959
  */
3761
- _initWithConfig(config) {
3762
- if (this.list) {
3763
- this.list.destroy();
3764
- }
3765
- const defaultOpts = this._defaultOptions
3766
- ? cloneDeep(this._defaultOptions)
3767
- : {};
3768
- const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
3769
- if (listConfig.persist !== false) {
3770
- this._restorePersistance(listConfig.persist);
3771
- }
3772
- this._updateCustomizeAction(listConfig.actions);
3773
- this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
3774
- this._waitFirstLoad();
3775
- this._listenFiltersQueryChange();
3776
- this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions);
3777
- if (this.listColumnDirectives) {
3778
- this.list.tranformTemplatesToColumns(this.listColumnDirectives);
3779
- }
3780
- this._listenSortingChange();
3960
+ selectAll(event) {
3961
+ this.selection.selectAllVisibleRows(event.checked);
3781
3962
  }
3782
3963
  /**
3783
- * Find action with customize flag and re-declare click function for CustomizeColsDialog
3784
- * @param actions
3964
+ * Track By for improve change detection
3965
+ * @param index
3785
3966
  */
3786
- _updateCustomizeAction(actions) {
3787
- var _a;
3788
- const customizeAction = (_a = actions) === null || _a === void 0 ? void 0 : _a.find((action) => action.customize);
3789
- if (customizeAction) {
3790
- const actionClickFn = customizeAction.click;
3791
- customizeAction.click = () => {
3792
- if (actionClickFn) {
3793
- actionClickFn(null);
3794
- }
3795
- const dialogRef = this.dialog.open(CustomizeColsDialogComponent, {
3796
- data: {
3797
- columns: this.list.columns.columnsForDialog,
3798
- changeFn: this.list.columns.changeFn,
3799
- },
3800
- });
3801
- dialogRef
3802
- .afterClosed()
3803
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
3804
- .subscribe((data) => {
3805
- if (data) {
3806
- this.list.columns.updateVisibilityForCols(data);
3807
- this.cdRef.markForCheck();
3808
- }
3809
- });
3810
- };
3811
- }
3967
+ trackByFn(index) {
3968
+ return index;
3812
3969
  }
3813
3970
  /**
3814
- * Update sorting in filter
3971
+ * Subscribe to sorting change
3815
3972
  */
3816
- _listenSortingChange() {
3817
- this.list.sorting
3818
- .sortingChanged$
3819
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
3820
- .subscribe((sort) => {
3821
- this._filterRef.updateSort(sort);
3822
- });
3823
- }
3824
- _subscribeToRemoveRow() {
3825
- this.rowRemoved
3826
- .pipe(takeUntil(this._destroy))
3827
- .subscribe((row) => {
3828
- this.list.dataController.removeData(row);
3829
- });
3830
- }
3831
- _subscribeToGroupExpandStatusChange() {
3832
- if (this.list.dataController.hasGroups) {
3833
- this._groupExpandNotifier.expandStatusChange$
3834
- .pipe(takeUntil(this._destroy))
3835
- .subscribe((row) => {
3836
- this.list.dataController.toggleRowGroup(row);
3837
- });
3838
- }
3839
- }
3840
- _waitFirstLoad() {
3841
- this.list.loading$
3842
- .pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
3973
+ initSorting() {
3974
+ this.sorting.sortingChanged$
3975
+ .pipe(takeUntil(this._destroy$))
3843
3976
  .subscribe(() => {
3844
- this.firstLoad = false;
3845
- this.cdRef.markForCheck();
3846
- });
3847
- }
3848
- _listenFiltersQueryChange() {
3849
- this.list.filtersQuery$
3850
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
3851
- .subscribe((value) => {
3852
- if (value) {
3853
- const activeFilters = Object.keys(value).length;
3854
- this.reorderController.setNunberOfActiveFilters(activeFilters);
3855
- }
3977
+ this.cdRef.detectChanges();
3856
3978
  });
3857
3979
  }
3858
- _configMergeCustomizer(objValue, srcValue) {
3859
- if (Array.isArray(objValue)) {
3860
- return objValue;
3980
+ /**
3981
+ * Subscribe to selection change
3982
+ */
3983
+ initSelection() {
3984
+ if (this.selection) {
3985
+ this.selection.selectionChange$
3986
+ .pipe(filter(({ type }) => (type === SelectionChangeType.AllVisibleSelectionChange
3987
+ || type === SelectionChangeType.SelectedAll
3988
+ || type === SelectionChangeType.RowSelectionChange)), takeUntil(this._destroy$))
3989
+ .subscribe(({ type, payload: status }) => {
3990
+ this.selectedAll = status;
3991
+ this.cdRef.markForCheck();
3992
+ });
3861
3993
  }
3862
3994
  }
3863
- _restorePersistance(persistConfig) {
3864
- const namespace = getNormalizedPath(this._location);
3865
- this._persistance.setConfig(persistConfig, namespace, this._inDialog);
3866
- }
3867
- };
3868
- FsListComponent.ctorParameters = () => [
3869
- { type: ReorderController },
3870
- { type: ElementRef },
3871
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FS_LIST_DEFAULT_CONFIG,] }] },
3872
- { type: FsScrollService, decorators: [{ type: Optional }] },
3873
- { type: SelectionDialog },
3874
- { type: MatDialog },
3875
- { type: ChangeDetectorRef },
3876
- { type: GroupExpandNotifierService },
3877
- { type: Router },
3878
- { type: ActivatedRoute },
3879
- { type: PersistanceController },
3880
- { type: Location },
3881
- { type: MatDialogRef, decorators: [{ type: Optional }] },
3882
- { type: DrawerRef, decorators: [{ type: Optional }] }
3883
- ];
3884
- __decorate([
3885
- HostBinding('class.fs-list'),
3886
- __metadata("design:type", Object)
3887
- ], FsListComponent.prototype, "classFsList", void 0);
3888
- __decorate([
3889
- Input('config'),
3890
- __metadata("design:type", Object),
3891
- __metadata("design:paramtypes", [Object])
3892
- ], FsListComponent.prototype, "config", null);
3893
- __decorate([
3894
- Input(),
3895
- __metadata("design:type", Object)
3896
- ], FsListComponent.prototype, "loaderLines", void 0);
3897
- __decorate([
3898
- Output(),
3899
- __metadata("design:type", Object)
3900
- ], FsListComponent.prototype, "filtersReady", void 0);
3901
- __decorate([
3902
- ViewChild(FilterComponent),
3903
- __metadata("design:type", Object),
3904
- __metadata("design:paramtypes", [Object])
3905
- ], FsListComponent.prototype, "filterReference", null);
3906
- __decorate([
3907
- ContentChildren(FsListColumnDirective),
3908
- __metadata("design:type", QueryList),
3909
- __metadata("design:paramtypes", [QueryList])
3910
- ], FsListComponent.prototype, "columnTemplates", null);
3911
- __decorate([
3912
- ContentChild(FsListEmptyStateDirective, { read: TemplateRef }),
3913
- __metadata("design:type", TemplateRef),
3914
- __metadata("design:paramtypes", [TemplateRef])
3915
- ], FsListComponent.prototype, "_emptyStateTemplate", null);
3916
- FsListComponent = __decorate([
3917
- Component({
3918
- selector: 'fs-list',
3919
- 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 <table class=\"fs-list-table\" role=\"grid\" *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\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 <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",
3920
- changeDetection: ChangeDetectionStrategy.OnPush,
3921
- providers: [
3922
- GroupExpandNotifierService,
3923
- PersistanceController,
3924
- ReorderController,
3925
- ],
3926
- 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}}"]
3927
- }),
3928
- __param(2, Optional()), __param(2, Inject(FS_LIST_DEFAULT_CONFIG)),
3929
- __param(3, Optional()),
3930
- __param(12, Optional()),
3931
- __param(13, Optional()),
3932
- __metadata("design:paramtypes", [ReorderController,
3933
- ElementRef, Object, FsScrollService,
3934
- SelectionDialog,
3935
- MatDialog,
3936
- ChangeDetectorRef,
3937
- GroupExpandNotifierService,
3938
- Router,
3939
- ActivatedRoute,
3940
- PersistanceController,
3941
- Location,
3942
- MatDialogRef,
3943
- DrawerRef])
3944
- ], FsListComponent);
3995
+ }
3996
+ 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 });
3997
+ 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 });
3998
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, decorators: [{
3999
+ type: Component,
4000
+ args: [{
4001
+ selector: '[fs-list-head]',
4002
+ templateUrl: 'head.component.html',
4003
+ changeDetection: ChangeDetectionStrategy.OnPush
4004
+ }]
4005
+ }], ctorParameters: function () { return [{ type: ReorderController }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { sorting: [{
4006
+ type: Input
4007
+ }], columns: [{
4008
+ type: Input
4009
+ }], hasRowActions: [{
4010
+ type: Input
4011
+ }], selection: [{
4012
+ type: Input
4013
+ }], rowsContainer: [{
4014
+ type: ViewChild,
4015
+ args: ['rowsContainer', { read: ViewContainerRef, static: true }]
4016
+ }] } });
3945
4017
 
3946
- let FsListDraggableListDirective = class FsListDraggableListDirective {
4018
+ class FsListDraggableListDirective {
3947
4019
  constructor(_cdRef, _zone, _containerElement, _reorderController) {
3948
4020
  this._cdRef = _cdRef;
3949
4021
  this._zone = _zone;
@@ -4161,47 +4233,183 @@ let FsListDraggableListDirective = class FsListDraggableListDirective {
4161
4233
  doneResult
4162
4234
  .pipe(takeUntil(this._destroy$))
4163
4235
  .subscribe(() => {
4164
- console.log('enable');
4165
- this._reorderController.enableReorderAction();
4236
+ console.log('enable');
4237
+ this._reorderController.enableReorderAction();
4238
+ });
4239
+ }
4240
+ }
4241
+ /**
4242
+ * Fix background when mobile
4243
+ * @param e
4244
+ */
4245
+ touchFix(e) {
4246
+ if (!('clientX' in e) && !('clientY' in e)) {
4247
+ const touches = e.touches || e.originalEvent.touches;
4248
+ if (touches && touches.length) {
4249
+ e.clientX = touches[0].clientX;
4250
+ e.clientY = touches[0].clientY;
4251
+ }
4252
+ e.preventDefault();
4253
+ }
4254
+ }
4255
+ }
4256
+ 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 });
4257
+ FsListDraggableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: { _rows: ["rows", "_rows"] }, ngImport: i0 });
4258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableListDirective, decorators: [{
4259
+ type: Directive,
4260
+ args: [{
4261
+ selector: '[fsListDraggableList]',
4262
+ }]
4263
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: ReorderController }]; }, propDecorators: { _rows: [{
4264
+ type: Input,
4265
+ args: ['rows']
4266
+ }] } });
4267
+
4268
+ class FsRowInlineActionComponent {
4269
+ constructor(_fsPrompt) {
4270
+ this._fsPrompt = _fsPrompt;
4271
+ this.clicked = new EventEmitter();
4272
+ this.fileSelect = new EventEmitter();
4273
+ }
4274
+ actionClick(event) {
4275
+ this.clicked.emit(event);
4276
+ }
4277
+ fileSelected(event) {
4278
+ this.fileSelect.emit(event);
4279
+ }
4280
+ }
4281
+ 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 });
4282
+ 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 });
4283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowInlineActionComponent, decorators: [{
4284
+ type: Component,
4285
+ args: [{
4286
+ selector: 'fs-list-row-inline-action',
4287
+ templateUrl: './inline-action.component.html',
4288
+ changeDetection: ChangeDetectionStrategy.OnPush,
4289
+ }]
4290
+ }], ctorParameters: function () { return [{ type: i1$1.FsPrompt }]; }, propDecorators: { action: [{
4291
+ type: Input
4292
+ }], clicked: [{
4293
+ type: Output
4294
+ }], fileSelect: [{
4295
+ type: Output
4296
+ }] } });
4297
+
4298
+ class FsRowMenuActionComponent {
4299
+ constructor() {
4300
+ this.fileSelect = new EventEmitter();
4301
+ this.fileError = new EventEmitter();
4302
+ }
4303
+ }
4304
+ FsRowMenuActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowMenuActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4305
+ 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 });
4306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
4307
+ type: Component,
4308
+ args: [{
4309
+ selector: 'fs-list-row-menu-action',
4310
+ templateUrl: './menu-action.component.html',
4311
+ changeDetection: ChangeDetectionStrategy.OnPush,
4312
+ }]
4313
+ }], propDecorators: { icon: [{
4314
+ type: Input
4315
+ }], label: [{
4316
+ type: Input
4317
+ }], file: [{
4318
+ type: Input
4319
+ }], fileSelect: [{
4320
+ type: Output
4321
+ }], fileError: [{
4322
+ type: Output
4323
+ }] } });
4324
+
4325
+ class FsRowActionsComponent {
4326
+ constructor(_fsPrompt) {
4327
+ this._fsPrompt = _fsPrompt;
4328
+ this.restoreMode = false;
4329
+ this.rowActions = [];
4330
+ this.menuRowActions = [];
4331
+ this.inlineRowActions = [];
4332
+ this._destroy$ = new Subject();
4333
+ }
4334
+ actionClick(action, row, event, menuRef) {
4335
+ if (action.remove) {
4336
+ if (typeof action.remove === 'boolean') {
4337
+ this.removeAction(action, row.data, event, this.index);
4338
+ }
4339
+ else {
4340
+ this._fsPrompt.confirm({
4341
+ title: action.remove.title,
4342
+ template: action.remove.template,
4343
+ }).pipe(take(1), takeUntil(this._destroy$)).subscribe({
4344
+ next: () => {
4345
+ this.removeAction(action, row.data, event, this.index);
4346
+ },
4347
+ error: () => { },
4348
+ });
4349
+ }
4350
+ }
4351
+ else {
4352
+ action.click(row.data, event, this.index, menuRef);
4353
+ }
4354
+ }
4355
+ /**
4356
+ * Track By for improve change detection
4357
+ * @param index
4358
+ */
4359
+ trackByFn(index) {
4360
+ return index;
4361
+ }
4362
+ clickOnTrigger(event) {
4363
+ event.stopPropagation();
4364
+ this.rowActions
4365
+ .forEach((action) => action.updateLabel(this.row.data));
4366
+ }
4367
+ /**
4368
+ * Emit that some row must be removed
4369
+ * @param action
4370
+ * @param row
4371
+ * @param event
4372
+ * @param index
4373
+ */
4374
+ removeAction(action, row, event, index) {
4375
+ const removeObservable = action.click(row, event, index);
4376
+ if (removeObservable && removeObservable instanceof Observable) {
4377
+ removeObservable
4378
+ .pipe(take(1), takeUntil(this._destroy$))
4379
+ .subscribe(() => {
4380
+ this.rowRemoved.emit(row);
4166
4381
  });
4167
4382
  }
4168
4383
  }
4169
- /**
4170
- * Fix background when mobile
4171
- * @param e
4172
- */
4173
- touchFix(e) {
4174
- if (!('clientX' in e) && !('clientY' in e)) {
4175
- const touches = e.touches || e.originalEvent.touches;
4176
- if (touches && touches.length) {
4177
- e.clientX = touches[0].clientX;
4178
- e.clientY = touches[0].clientY;
4179
- }
4180
- e.preventDefault();
4181
- }
4182
- }
4183
- };
4184
- FsListDraggableListDirective.ctorParameters = () => [
4185
- { type: ChangeDetectorRef },
4186
- { type: NgZone },
4187
- { type: ElementRef },
4188
- { type: ReorderController }
4189
- ];
4190
- __decorate([
4191
- Input('rows'),
4192
- __metadata("design:type", Array)
4193
- ], FsListDraggableListDirective.prototype, "_rows", void 0);
4194
- FsListDraggableListDirective = __decorate([
4195
- Directive({
4196
- selector: '[fsListDraggableList]',
4197
- }),
4198
- __metadata("design:paramtypes", [ChangeDetectorRef,
4199
- NgZone,
4200
- ElementRef,
4201
- ReorderController])
4202
- ], FsListDraggableListDirective);
4384
+ }
4385
+ 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 });
4386
+ 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 });
4387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowActionsComponent, decorators: [{
4388
+ type: Component,
4389
+ args: [{
4390
+ selector: 'fs-list-row-actions',
4391
+ templateUrl: './actions.component.html',
4392
+ changeDetection: ChangeDetectionStrategy.OnPush,
4393
+ }]
4394
+ }], ctorParameters: function () { return [{ type: i1$1.FsPrompt }]; }, propDecorators: { row: [{
4395
+ type: Input
4396
+ }], index: [{
4397
+ type: Input
4398
+ }], restoreMode: [{
4399
+ type: Input
4400
+ }], rowActions: [{
4401
+ type: Input
4402
+ }], rowRemoved: [{
4403
+ type: Input
4404
+ }], menuRowActions: [{
4405
+ type: Input
4406
+ }], inlineRowActions: [{
4407
+ type: Input
4408
+ }], restoreAction: [{
4409
+ type: Input
4410
+ }] } });
4203
4411
 
4204
- let FsRowComponent = class FsRowComponent {
4412
+ class FsRowComponent {
4205
4413
  constructor(el, reorderController, _cdRef, _differs, _renderer, _draggableList) {
4206
4414
  this.el = el;
4207
4415
  this.reorderController = reorderController;
@@ -4378,530 +4586,279 @@ let FsRowComponent = class FsRowComponent {
4378
4586
  }
4379
4587
  });
4380
4588
  }
4381
- };
4382
- FsRowComponent.ctorParameters = () => [
4383
- { type: ElementRef },
4384
- { type: ReorderController },
4385
- { type: ChangeDetectorRef },
4386
- { type: KeyValueDiffers },
4387
- { type: Renderer2 },
4388
- { type: FsListDraggableListDirective }
4389
- ];
4390
- __decorate([
4391
- HostBinding('attr.role'),
4392
- __metadata("design:type", Object)
4393
- ], FsRowComponent.prototype, "role", void 0);
4394
- __decorate([
4395
- Input(),
4396
- __metadata("design:type", Row)
4397
- ], FsRowComponent.prototype, "row", void 0);
4398
- __decorate([
4399
- Input(),
4400
- __metadata("design:type", Array)
4401
- ], FsRowComponent.prototype, "rowActionsRaw", void 0);
4402
- __decorate([
4403
- Input(),
4404
- __metadata("design:type", Array)
4405
- ], FsRowComponent.prototype, "groupActionsRaw", void 0);
4406
- __decorate([
4407
- Input(),
4408
- __metadata("design:type", Object)
4409
- ], FsRowComponent.prototype, "hasRowActions", void 0);
4410
- __decorate([
4411
- Input(),
4412
- __metadata("design:type", Object)
4413
- ], FsRowComponent.prototype, "rowEvents", void 0);
4414
- __decorate([
4415
- Input(),
4416
- __metadata("design:type", Object)
4417
- ], FsRowComponent.prototype, "rowClass", void 0);
4418
- __decorate([
4419
- Input(),
4420
- __metadata("design:type", Object)
4421
- ], FsRowComponent.prototype, "restoreMode", void 0);
4422
- __decorate([
4423
- Input(),
4424
- __metadata("design:type", Number)
4425
- ], FsRowComponent.prototype, "rowIndex", void 0);
4426
- __decorate([
4427
- Input(),
4428
- __metadata("design:type", Array)
4429
- ], FsRowComponent.prototype, "columns", void 0);
4430
- __decorate([
4431
- Input(),
4432
- __metadata("design:type", SelectionController)
4433
- ], FsRowComponent.prototype, "selection", void 0);
4434
- __decorate([
4435
- Input(),
4436
- __metadata("design:type", EventEmitter)
4437
- ], FsRowComponent.prototype, "rowRemoved", void 0);
4438
- __decorate([
4439
- ViewChildren('td'),
4440
- __metadata("design:type", Object)
4441
- ], FsRowComponent.prototype, "cellRefs", void 0);
4442
- __decorate([
4443
- HostBinding('class'),
4444
- __metadata("design:type", Object),
4445
- __metadata("design:paramtypes", [])
4446
- ], FsRowComponent.prototype, "rowCssClass", null);
4447
- FsRowComponent = __decorate([
4448
- Component({
4449
- selector: '[fs-list-row]',
4450
- 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",
4451
- changeDetection: ChangeDetectionStrategy.OnPush
4452
- }),
4453
- __metadata("design:paramtypes", [ElementRef,
4454
- ReorderController,
4455
- ChangeDetectorRef,
4456
- KeyValueDiffers,
4457
- Renderer2,
4458
- FsListDraggableListDirective])
4459
- ], FsRowComponent);
4460
-
4461
- let FsBodyComponent = class FsBodyComponent {
4462
- constructor(reorderContoller, el, cdRef, differs) {
4463
- this.reorderContoller = reorderContoller;
4464
- this.el = el;
4465
- this.cdRef = cdRef;
4466
- this.differs = differs;
4467
- this.columns = [];
4468
- this.hasFooter = false;
4469
- this.rowActionsRaw = [];
4470
- this.groupActionsRaw = [];
4471
- this.rowEvents = {};
4472
- this.hasRowActions = false;
4473
- this.restoreMode = false;
4474
- this._destroy$ = new Subject();
4475
- this._rowsDiffer = differs.find([]).create(null);
4476
- }
4477
- ngDoCheck() {
4478
- if (this._rowsDiffer.diff(this.rows)) {
4479
- this.cdRef.markForCheck();
4480
- }
4481
- }
4482
- ngOnDestroy() {
4483
- this._destroy$.next();
4484
- this._destroy$.complete();
4485
- }
4486
- };
4487
- FsBodyComponent.ctorParameters = () => [
4488
- { type: ReorderController },
4489
- { type: ElementRef },
4490
- { type: ChangeDetectorRef },
4491
- { type: IterableDiffers }
4492
- ];
4493
- __decorate([
4494
- Input(),
4495
- __metadata("design:type", Array)
4496
- ], FsBodyComponent.prototype, "rows", void 0);
4497
- __decorate([
4498
- Input(),
4499
- __metadata("design:type", Array)
4500
- ], FsBodyComponent.prototype, "columns", void 0);
4501
- __decorate([
4502
- Input(),
4503
- __metadata("design:type", Object)
4504
- ], FsBodyComponent.prototype, "hasFooter", void 0);
4505
- __decorate([
4506
- Input(),
4507
- __metadata("design:type", Array)
4508
- ], FsBodyComponent.prototype, "rowActionsRaw", void 0);
4509
- __decorate([
4510
- Input(),
4511
- __metadata("design:type", Array)
4512
- ], FsBodyComponent.prototype, "groupActionsRaw", void 0);
4513
- __decorate([
4514
- Input(),
4515
- __metadata("design:type", Object)
4516
- ], FsBodyComponent.prototype, "rowEvents", void 0);
4517
- __decorate([
4518
- Input(),
4519
- __metadata("design:type", Object)
4520
- ], FsBodyComponent.prototype, "rowClass", void 0);
4521
- __decorate([
4522
- Input(),
4523
- __metadata("design:type", Object)
4524
- ], FsBodyComponent.prototype, "hasRowActions", void 0);
4525
- __decorate([
4526
- Input(),
4527
- __metadata("design:type", SelectionController)
4528
- ], FsBodyComponent.prototype, "selection", void 0);
4529
- __decorate([
4530
- Input(),
4531
- __metadata("design:type", Object)
4532
- ], FsBodyComponent.prototype, "restoreMode", void 0);
4533
- __decorate([
4534
- Input(),
4535
- __metadata("design:type", EventEmitter)
4536
- ], FsBodyComponent.prototype, "rowRemoved", void 0);
4537
- __decorate([
4538
- ViewChild('rowsContainer', { read: ViewContainerRef, static: true }),
4539
- __metadata("design:type", Object)
4540
- ], FsBodyComponent.prototype, "rowsContainer", void 0);
4541
- __decorate([
4542
- ContentChild(FsRowComponent, { read: TemplateRef, static: true }),
4543
- __metadata("design:type", TemplateRef)
4544
- ], FsBodyComponent.prototype, "headerTemplate", void 0);
4545
- FsBodyComponent = __decorate([
4546
- Component({
4547
- selector: '[fs-list-body]',
4548
- 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",
4549
- changeDetection: ChangeDetectionStrategy.OnPush
4550
- }),
4551
- __metadata("design:paramtypes", [ReorderController,
4552
- ElementRef,
4553
- ChangeDetectorRef,
4554
- IterableDiffers])
4555
- ], FsBodyComponent);
4589
+ }
4590
+ 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 });
4591
+ 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 });
4592
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowComponent, decorators: [{
4593
+ type: Component,
4594
+ args: [{
4595
+ selector: '[fs-list-row]',
4596
+ templateUrl: 'row.component.html',
4597
+ changeDetection: ChangeDetectionStrategy.OnPush
4598
+ }]
4599
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ReorderController }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }, { type: FsListDraggableListDirective }]; }, propDecorators: { role: [{
4600
+ type: HostBinding,
4601
+ args: ['attr.role']
4602
+ }], row: [{
4603
+ type: Input
4604
+ }], rowActionsRaw: [{
4605
+ type: Input
4606
+ }], groupActionsRaw: [{
4607
+ type: Input
4608
+ }], hasRowActions: [{
4609
+ type: Input
4610
+ }], rowEvents: [{
4611
+ type: Input
4612
+ }], rowClass: [{
4613
+ type: Input
4614
+ }], restoreMode: [{
4615
+ type: Input
4616
+ }], rowIndex: [{
4617
+ type: Input
4618
+ }], columns: [{
4619
+ type: Input
4620
+ }], selection: [{
4621
+ type: Input
4622
+ }], rowRemoved: [{
4623
+ type: Input
4624
+ }], cellRefs: [{
4625
+ type: ViewChildren,
4626
+ args: ['td']
4627
+ }], rowCssClass: [{
4628
+ type: HostBinding,
4629
+ args: ['class']
4630
+ }] } });
4556
4631
 
4557
- let FsCellComponent = class FsCellComponent {
4558
- constructor() {
4559
- this.isColl = true;
4560
- this.role = 'gridcell';
4561
- this.cellContext = {};
4632
+ class FsListDraggableRowDirective {
4633
+ constructor(_el, _renderer, _reorderController, _draggableList) {
4634
+ this._el = _el;
4635
+ this._renderer = _renderer;
4636
+ this._reorderController = _reorderController;
4637
+ this._draggableList = _draggableList;
4562
4638
  this._destroy$ = new Subject();
4563
4639
  }
4564
4640
  ngOnInit() {
4565
- this._initCellContext();
4566
- this._initCellTemplate();
4567
- this._listenGroupOpen();
4568
- }
4569
- ngOnChanges(changes) {
4570
- if (changes.rowIndex) {
4571
- this.cellContext.index = this.rowIndex;
4572
- }
4573
- }
4574
- ngOnDestroy() {
4575
- this._destroy$.next();
4576
- this._destroy$.complete();
4577
- }
4578
- _initCellContext() {
4579
- this.cellContext.index = this.rowIndex;
4580
- if (this.row) {
4581
- if (this.row.isGroup) {
4582
- this.cellContext.groupIndex = this.row.index;
4583
- }
4584
- else if (this.row.isChild) {
4585
- this.cellContext.groupChildIndex = this.row.index;
4586
- }
4587
- }
4588
- this.cellContext.column = this.column;
4589
- if (this.row) {
4590
- this.cellContext.$implicit = this.row.data;
4591
- this.cellContext.row = this.row.data;
4592
- this.cellContext.value = this.row.data[this.column.name];
4593
- this.cellContext.expanded = this.row.expanded;
4594
- }
4595
- }
4596
- _initCellTemplate() {
4597
- if (this.row && this.row.isGroup) {
4598
- this.cellTemplate = this.column.groupCellTemplate || this.column.cellTemplate;
4599
- }
4600
- else {
4601
- this.cellTemplate = this.column.cellTemplate;
4602
- }
4603
- }
4604
- _listenGroupOpen() {
4605
- if (this.row && this.row.isGroup) {
4606
- this.row.expanded$
4607
- .pipe(takeUntil(this._destroy$))
4608
- .subscribe((status) => {
4609
- this.cellContext.expanded = status;
4610
- });
4641
+ if (this._reorderController.moveDropCallback) {
4642
+ this._listenDragEvents();
4611
4643
  }
4612
4644
  }
4613
- };
4614
- __decorate([
4615
- HostBinding('class.fs-list-col'),
4616
- __metadata("design:type", Object)
4617
- ], FsCellComponent.prototype, "isColl", void 0);
4618
- __decorate([
4619
- HostBinding('attr.role'),
4620
- __metadata("design:type", Object)
4621
- ], FsCellComponent.prototype, "role", void 0);
4622
- __decorate([
4623
- Input(),
4624
- __metadata("design:type", Column)
4625
- ], FsCellComponent.prototype, "column", void 0);
4626
- __decorate([
4627
- Input(),
4628
- __metadata("design:type", Row)
4629
- ], FsCellComponent.prototype, "row", void 0);
4630
- __decorate([
4631
- Input(),
4632
- __metadata("design:type", Number)
4633
- ], FsCellComponent.prototype, "rowIndex", void 0);
4634
- FsCellComponent = __decorate([
4635
- Component({
4636
- selector: '[fs-cell]',
4637
- template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\n\n<ng-template #defaultCellTemplate let-value=\"value\">\n {{value}}\n</ng-template>\n",
4638
- changeDetection: ChangeDetectionStrategy.OnPush
4639
- }),
4640
- __metadata("design:paramtypes", [])
4641
- ], FsCellComponent);
4642
-
4643
- let FsHeadComponent = class FsHeadComponent {
4644
- constructor(reorderController, cdRef) {
4645
- this.reorderController = reorderController;
4646
- this.cdRef = cdRef;
4647
- this.selectedAll = false;
4648
- this.ReorderPosition = ReorderPosition;
4649
- this.ReorderStrategy = ReorderStrategy;
4650
- this._destroy$ = new Subject();
4651
- }
4652
- ngOnInit() {
4653
- this.initSorting();
4654
- this.initSelection();
4655
- }
4656
4645
  ngOnDestroy() {
4657
4646
  this._destroy$.next();
4658
4647
  this._destroy$.complete();
4659
4648
  }
4660
- /**
4661
- * Select All Visible Rows
4662
- * @param event
4663
- */
4664
- selectAll(event) {
4665
- this.selection.selectAllVisibleRows(event.checked);
4666
- }
4667
- /**
4668
- * Track By for improve change detection
4669
- * @param index
4670
- */
4671
- trackByFn(index) {
4672
- return index;
4673
- }
4674
- /**
4675
- * Subscribe to sorting change
4676
- */
4677
- initSorting() {
4678
- this.sorting.sortingChanged$
4649
+ _listenDragEvents() {
4650
+ this._draggableList
4651
+ .dragStart$
4679
4652
  .pipe(takeUntil(this._destroy$))
4680
4653
  .subscribe(() => {
4681
- this.cdRef.detectChanges();
4654
+ this._markReadyToSwapRows();
4655
+ });
4656
+ this._draggableList
4657
+ .dragEnd$
4658
+ .pipe(takeUntil(this._destroy$))
4659
+ .subscribe(() => {
4660
+ this._unmarkRows();
4682
4661
  });
4683
4662
  }
4684
- /**
4685
- * Subscribe to selection change
4686
- */
4687
- initSelection() {
4688
- if (this.selection) {
4689
- this.selection.selectionChange$
4690
- .pipe(filter(({ type }) => (type === SelectionChangeType.AllVisibleSelectionChange
4691
- || type === SelectionChangeType.SelectedAll
4692
- || type === SelectionChangeType.RowSelectionChange)), takeUntil(this._destroy$))
4693
- .subscribe(({ type, payload: status }) => {
4694
- this.selectedAll = status;
4695
- this.cdRef.markForCheck();
4696
- });
4663
+ _markReadyToSwapRows() {
4664
+ var _a, _b;
4665
+ const currentEl = this.row;
4666
+ const targetEl = this._draggableList.draggableItem;
4667
+ const currentElGroup = (currentEl.isChild && currentEl.parent) || currentEl;
4668
+ const targetElGroup = (targetEl.isChild && targetEl.parent) || targetEl;
4669
+ this.row.readyToSwap = this._reorderController.moveDropCallback({
4670
+ row1: currentEl === null || currentEl === void 0 ? void 0 : currentEl.data,
4671
+ row2: targetEl === null || targetEl === void 0 ? void 0 : targetEl.data,
4672
+ group1: (_a = currentEl === null || currentEl === void 0 ? void 0 : currentEl.parent) === null || _a === void 0 ? void 0 : _a.data,
4673
+ group2: (_b = targetEl === null || targetEl === void 0 ? void 0 : targetEl.parent) === null || _b === void 0 ? void 0 : _b.data
4674
+ });
4675
+ if (!this.row.readyToSwap) {
4676
+ this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');
4697
4677
  }
4698
4678
  }
4699
- };
4700
- FsHeadComponent.ctorParameters = () => [
4701
- { type: ReorderController },
4702
- { type: ChangeDetectorRef }
4703
- ];
4704
- __decorate([
4705
- Input(),
4706
- __metadata("design:type", SortingController)
4707
- ], FsHeadComponent.prototype, "sorting", void 0);
4708
- __decorate([
4709
- Input(),
4710
- __metadata("design:type", Array)
4711
- ], FsHeadComponent.prototype, "columns", void 0);
4712
- __decorate([
4713
- Input(),
4714
- __metadata("design:type", Boolean)
4715
- ], FsHeadComponent.prototype, "hasRowActions", void 0);
4716
- __decorate([
4717
- Input(),
4718
- __metadata("design:type", SelectionController)
4719
- ], FsHeadComponent.prototype, "selection", void 0);
4720
- __decorate([
4721
- ViewChild('rowsContainer', { read: ViewContainerRef, static: true }),
4722
- __metadata("design:type", Object)
4723
- ], FsHeadComponent.prototype, "rowsContainer", void 0);
4724
- FsHeadComponent = __decorate([
4725
- Component({
4726
- selector: '[fs-list-head]',
4727
- 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",
4728
- changeDetection: ChangeDetectionStrategy.OnPush
4729
- }),
4730
- __metadata("design:paramtypes", [ReorderController,
4731
- ChangeDetectorRef])
4732
- ], FsHeadComponent);
4679
+ _unmarkRows() {
4680
+ if (!this.row.readyToSwap) {
4681
+ this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');
4682
+ }
4683
+ }
4684
+ }
4685
+ 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 });
4686
+ FsListDraggableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: { row: "row" }, ngImport: i0 });
4687
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableRowDirective, decorators: [{
4688
+ type: Directive,
4689
+ args: [{
4690
+ selector: '[fsListDraggableRow]',
4691
+ }]
4692
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ReorderController }, { type: FsListDraggableListDirective }]; }, propDecorators: { row: [{
4693
+ type: Input
4694
+ }] } });
4733
4695
 
4734
- let FsHeadCellComponent = class FsHeadCellComponent extends FsCellComponent {
4735
- constructor(cdRef, differs) {
4736
- super();
4696
+ class FsBodyComponent {
4697
+ constructor(reorderContoller, el, cdRef, differs) {
4698
+ this.reorderContoller = reorderContoller;
4699
+ this.el = el;
4737
4700
  this.cdRef = cdRef;
4738
4701
  this.differs = differs;
4739
- this.cellContext = {};
4740
- this._columnDiffer = differs.find({}).create();
4702
+ this.columns = [];
4703
+ this.hasFooter = false;
4704
+ this.rowActionsRaw = [];
4705
+ this.groupActionsRaw = [];
4706
+ this.rowEvents = {};
4707
+ this.hasRowActions = false;
4708
+ this.restoreMode = false;
4709
+ this._destroy$ = new Subject();
4710
+ this._rowsDiffer = differs.find([]).create(null);
4741
4711
  }
4742
4712
  ngDoCheck() {
4743
- if (this._columnDiffer.diff(this.column)) {
4713
+ if (this._rowsDiffer.diff(this.rows)) {
4744
4714
  this.cdRef.markForCheck();
4745
4715
  }
4746
4716
  }
4747
- initCellContext() {
4748
- this.cellContext.value = this.column.title;
4717
+ ngOnDestroy() {
4718
+ this._destroy$.next();
4719
+ this._destroy$.complete();
4749
4720
  }
4750
- };
4751
- FsHeadCellComponent.ctorParameters = () => [
4752
- { type: ChangeDetectorRef },
4753
- { type: KeyValueDiffers }
4754
- ];
4755
- FsHeadCellComponent = __decorate([
4756
- Component({
4757
- selector: '[fs-head-cell]',
4758
- 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",
4759
- changeDetection: ChangeDetectionStrategy.OnPush
4760
- }),
4761
- __metadata("design:paramtypes", [ChangeDetectorRef,
4762
- KeyValueDiffers])
4763
- ], FsHeadCellComponent);
4721
+ }
4722
+ 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 });
4723
+ 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 });
4724
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsBodyComponent, decorators: [{
4725
+ type: Component,
4726
+ args: [{
4727
+ selector: '[fs-list-body]',
4728
+ templateUrl: 'body.component.html',
4729
+ changeDetection: ChangeDetectionStrategy.OnPush
4730
+ }]
4731
+ }], ctorParameters: function () { return [{ type: ReorderController }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }]; }, propDecorators: { rows: [{
4732
+ type: Input
4733
+ }], columns: [{
4734
+ type: Input
4735
+ }], hasFooter: [{
4736
+ type: Input
4737
+ }], rowActionsRaw: [{
4738
+ type: Input
4739
+ }], groupActionsRaw: [{
4740
+ type: Input
4741
+ }], rowEvents: [{
4742
+ type: Input
4743
+ }], rowClass: [{
4744
+ type: Input
4745
+ }], hasRowActions: [{
4746
+ type: Input
4747
+ }], selection: [{
4748
+ type: Input
4749
+ }], restoreMode: [{
4750
+ type: Input
4751
+ }], rowRemoved: [{
4752
+ type: Input
4753
+ }], rowsContainer: [{
4754
+ type: ViewChild,
4755
+ args: ['rowsContainer', { read: ViewContainerRef, static: true }]
4756
+ }], headerTemplate: [{
4757
+ type: ContentChild,
4758
+ args: [FsRowComponent, { read: TemplateRef, static: true }]
4759
+ }] } });
4764
4760
 
4765
- let FsFooterComponent = class FsFooterComponent {
4761
+ class FsFooterCellComponent extends FsCellComponent {
4766
4762
  constructor() {
4767
- this.columns = [];
4763
+ super();
4768
4764
  }
4769
- };
4770
- __decorate([
4771
- Input(),
4772
- __metadata("design:type", Boolean)
4773
- ], FsFooterComponent.prototype, "hasRowActions", void 0);
4774
- __decorate([
4775
- Input(),
4776
- __metadata("design:type", Array)
4777
- ], FsFooterComponent.prototype, "columns", void 0);
4778
- __decorate([
4779
- Input(),
4780
- __metadata("design:type", SelectionController)
4781
- ], FsFooterComponent.prototype, "selection", void 0);
4782
- FsFooterComponent = __decorate([
4783
- Component({
4784
- selector: '[fs-list-footer]',
4785
- template: "<tr fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n></tr>\n",
4786
- changeDetection: ChangeDetectionStrategy.OnPush
4787
- }),
4788
- __metadata("design:paramtypes", [])
4789
- ], FsFooterComponent);
4765
+ }
4766
+ FsFooterCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4767
+ 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 });
4768
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterCellComponent, decorators: [{
4769
+ type: Component,
4770
+ args: [{
4771
+ selector: '[fs-list-footer-cell]',
4772
+ templateUrl: 'footer-cell.component.html',
4773
+ changeDetection: ChangeDetectionStrategy.OnPush
4774
+ }]
4775
+ }], ctorParameters: function () { return []; } });
4790
4776
 
4791
- let FsFooterRowComponent = class FsFooterRowComponent extends FsRowComponent {
4777
+ class FsFooterRowComponent extends FsRowComponent {
4792
4778
  constructor(el, reorderController, cdRef, differs, renderer) {
4793
4779
  super(el, reorderController, cdRef, differs, renderer, null);
4794
4780
  this.ReorderPosition = ReorderPosition;
4795
4781
  }
4796
- };
4797
- FsFooterRowComponent.ctorParameters = () => [
4798
- { type: ElementRef },
4799
- { type: ReorderController },
4800
- { type: ChangeDetectorRef },
4801
- { type: KeyValueDiffers },
4802
- { type: Renderer2 }
4803
- ];
4804
- __decorate([
4805
- Input(),
4806
- __metadata("design:type", Boolean)
4807
- ], FsFooterRowComponent.prototype, "hasRowActions", void 0);
4808
- FsFooterRowComponent = __decorate([
4809
- Component({
4810
- selector: '[fs-list-footer-row]',
4811
- 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",
4812
- changeDetection: ChangeDetectionStrategy.OnPush
4813
- }),
4814
- __metadata("design:paramtypes", [ElementRef,
4815
- ReorderController,
4816
- ChangeDetectorRef,
4817
- KeyValueDiffers,
4818
- Renderer2])
4819
- ], FsFooterRowComponent);
4782
+ }
4783
+ 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 });
4784
+ 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 });
4785
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterRowComponent, decorators: [{
4786
+ type: Component,
4787
+ args: [{
4788
+ selector: '[fs-list-footer-row]',
4789
+ templateUrl: 'footer-row.component.html',
4790
+ changeDetection: ChangeDetectionStrategy.OnPush
4791
+ }]
4792
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ReorderController }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { hasRowActions: [{
4793
+ type: Input
4794
+ }] } });
4820
4795
 
4821
- let FsFooterCellComponent = class FsFooterCellComponent extends FsCellComponent {
4796
+ class FsFooterComponent {
4822
4797
  constructor() {
4823
- super();
4798
+ this.columns = [];
4824
4799
  }
4825
- };
4826
- FsFooterCellComponent = __decorate([
4827
- Component({
4828
- selector: '[fs-list-footer-cell]',
4829
- 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",
4830
- changeDetection: ChangeDetectionStrategy.OnPush
4831
- }),
4832
- __metadata("design:paramtypes", [])
4833
- ], FsFooterCellComponent);
4800
+ }
4801
+ FsFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4802
+ 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 });
4803
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFooterComponent, decorators: [{
4804
+ type: Component,
4805
+ args: [{
4806
+ selector: '[fs-list-footer]',
4807
+ templateUrl: 'footer.component.html',
4808
+ changeDetection: ChangeDetectionStrategy.OnPush
4809
+ }]
4810
+ }], ctorParameters: function () { return []; }, propDecorators: { hasRowActions: [{
4811
+ type: Input
4812
+ }], columns: [{
4813
+ type: Input
4814
+ }], selection: [{
4815
+ type: Input
4816
+ }] } });
4834
4817
 
4835
- let FsStatusComponent = class FsStatusComponent {
4836
- constructor(_cdRef) {
4837
- this._cdRef = _cdRef;
4838
- this._destroy$ = new Subject();
4818
+ class FsListLoaderComponent {
4819
+ constructor() {
4820
+ this.placeholderWidths = [[], [], []];
4821
+ this.widths = [];
4822
+ this.cols = [];
4823
+ this.rows = [];
4839
4824
  }
4840
4825
  ngOnInit() {
4841
- this.sorting.sortingChanged$
4842
- .pipe(takeUntil(this._destroy$))
4843
- .subscribe(() => {
4844
- this._cdRef.markForCheck();
4845
- });
4846
- }
4847
- ngOnDestroy() {
4848
- this._destroy$.next();
4849
- this._destroy$.complete();
4850
- }
4851
- toggleDirection() {
4852
- if (this.sorting.sortingColumn.direction === 'asc') {
4853
- this.sorting.sortDirection(SortingDirection.desc);
4826
+ this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;
4827
+ const length = this.cols.length;
4828
+ for (let w = length; w >= 0; w--) {
4829
+ this.widths[w] = w ? random(15, 100 / length, false) : 0;
4854
4830
  }
4855
- else {
4856
- this.sorting.sortDirection(SortingDirection.asc);
4831
+ for (let r = 0; r < 3; r++) {
4832
+ for (let c = 0; c < length; c++) {
4833
+ this.placeholderWidths[r].push(random(50, 90));
4834
+ }
4857
4835
  }
4858
4836
  }
4859
- setSortableColumn(column) {
4860
- if (this.sorting.sortingColumn !== column) {
4861
- this.sorting.sortBy(column);
4837
+ ngOnChanges(changes) {
4838
+ if (changes.loaderLines) {
4839
+ this.rows = new Array(this.loaderLines);
4862
4840
  }
4863
4841
  }
4864
- setLimit(limit) {
4865
- this.paging.setLimit(limit);
4866
- }
4867
- };
4868
- FsStatusComponent.ctorParameters = () => [
4869
- { type: ChangeDetectorRef }
4870
- ];
4871
- __decorate([
4872
- Input(),
4873
- __metadata("design:type", PaginationController)
4874
- ], FsStatusComponent.prototype, "paging", void 0);
4875
- __decorate([
4876
- Input(),
4877
- __metadata("design:type", SortingController)
4878
- ], FsStatusComponent.prototype, "sorting", void 0);
4879
- __decorate([
4880
- Input(),
4881
- __metadata("design:type", Object)
4882
- ], FsStatusComponent.prototype, "rows", void 0);
4883
- __decorate([
4884
- Input(),
4885
- __metadata("design:type", Object)
4886
- ], FsStatusComponent.prototype, "scrollable", void 0);
4887
- __decorate([
4888
- Input(),
4889
- HostBinding('class.first-load'),
4890
- HostBinding('class.fs-skeleton-placeholder'),
4891
- __metadata("design:type", Boolean)
4892
- ], FsStatusComponent.prototype, "firstLoad", void 0);
4893
- FsStatusComponent = __decorate([
4894
- Component({
4895
- selector: 'fs-list-status',
4896
- 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",
4897
- changeDetection: ChangeDetectionStrategy.OnPush,
4898
- preserveWhitespaces: true,
4899
- styles: [":host{display:inline-block}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}"]
4900
- }),
4901
- __metadata("design:paramtypes", [ChangeDetectorRef])
4902
- ], FsStatusComponent);
4842
+ }
4843
+ FsListLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4844
+ 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 });
4845
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListLoaderComponent, decorators: [{
4846
+ type: Component,
4847
+ args: [{
4848
+ selector: 'fs-list-loader',
4849
+ templateUrl: './loader.component.html',
4850
+ styleUrls: [
4851
+ './loader.component.scss',
4852
+ ],
4853
+ changeDetection: ChangeDetectionStrategy.OnPush,
4854
+ }]
4855
+ }], propDecorators: { columns: [{
4856
+ type: Input
4857
+ }], loaderLines: [{
4858
+ type: Input
4859
+ }] } });
4903
4860
 
4904
- let FsPaginationComponent = class FsPaginationComponent {
4861
+ class FsPaginationComponent {
4905
4862
  constructor(cdRef) {
4906
4863
  this.cdRef = cdRef;
4907
4864
  this._destroy$ = new Subject();
@@ -4917,246 +4874,366 @@ let FsPaginationComponent = class FsPaginationComponent {
4917
4874
  this._destroy$.next();
4918
4875
  this._destroy$.complete();
4919
4876
  }
4920
- };
4921
- FsPaginationComponent.ctorParameters = () => [
4922
- { type: ChangeDetectorRef }
4923
- ];
4924
- __decorate([
4925
- Input(),
4926
- __metadata("design:type", PaginationController)
4927
- ], FsPaginationComponent.prototype, "pagination", void 0);
4928
- __decorate([
4929
- Input(),
4930
- __metadata("design:type", Object)
4931
- ], FsPaginationComponent.prototype, "rows", void 0);
4932
- FsPaginationComponent = __decorate([
4933
- Component({
4934
- selector: 'fs-list-pagination',
4935
- 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",
4936
- changeDetection: ChangeDetectionStrategy.OnPush,
4937
- 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}"]
4938
- }),
4939
- __metadata("design:paramtypes", [ChangeDetectorRef])
4940
- ], FsPaginationComponent);
4877
+ }
4878
+ FsPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPaginationComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4879
+ 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 });
4880
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPaginationComponent, decorators: [{
4881
+ type: Component,
4882
+ args: [{
4883
+ selector: 'fs-list-pagination',
4884
+ templateUrl: 'pagination.component.html',
4885
+ styleUrls: [
4886
+ './pagination.component.scss'
4887
+ ],
4888
+ changeDetection: ChangeDetectionStrategy.OnPush
4889
+ }]
4890
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pagination: [{
4891
+ type: Input
4892
+ }], rows: [{
4893
+ type: Input
4894
+ }] } });
4941
4895
 
4942
- let FsListLoaderComponent = class FsListLoaderComponent {
4943
- constructor() {
4944
- this.placeholderWidths = [[], [], []];
4945
- this.widths = [];
4946
- this.cols = [];
4947
- this.rows = [];
4896
+ class FsListContentInitDirective {
4897
+ constructor() { }
4898
+ ngAfterViewInit() {
4899
+ if (this.contentInitCallback) {
4900
+ this.contentInitCallback();
4901
+ }
4902
+ }
4903
+ }
4904
+ FsListContentInitDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListContentInitDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4905
+ FsListContentInitDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: { contentInitCallback: ["fsListContentInit", "contentInitCallback"] }, ngImport: i0 });
4906
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListContentInitDirective, decorators: [{
4907
+ type: Directive,
4908
+ args: [{
4909
+ selector: '[fsListContentInit]'
4910
+ }]
4911
+ }], ctorParameters: function () { return []; }, propDecorators: { contentInitCallback: [{
4912
+ type: Input,
4913
+ args: ['fsListContentInit']
4914
+ }] } });
4915
+
4916
+ class FsListComponent {
4917
+ constructor(reorderController, _el, _defaultOptions, fsScroll, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location, _dialogRef, _drawerRef) {
4918
+ this.reorderController = reorderController;
4919
+ this._el = _el;
4920
+ this._defaultOptions = _defaultOptions;
4921
+ this.fsScroll = fsScroll;
4922
+ this.selectionDialog = selectionDialog;
4923
+ this.dialog = dialog;
4924
+ this.cdRef = cdRef;
4925
+ this._groupExpandNotifier = _groupExpandNotifier;
4926
+ this._router = _router;
4927
+ this._route = _route;
4928
+ this._persistance = _persistance;
4929
+ this._location = _location;
4930
+ this._dialogRef = _dialogRef;
4931
+ this._drawerRef = _drawerRef;
4932
+ this.classFsList = true;
4933
+ this.loaderLines = 3;
4934
+ this.filtersReady = new EventEmitter();
4935
+ // Event will fired if action remove: true will clicked
4936
+ this.rowRemoved = new EventEmitter();
4937
+ this.firstLoad = true;
4938
+ this._filterParamsReady = false;
4939
+ this._inDialog = !!this._dialogRef || !!this._drawerRef;
4940
+ this._destroy = new Subject();
4941
+ }
4942
+ set config(config) {
4943
+ this._initWithConfig(config);
4944
+ }
4945
+ set filterReference(component) {
4946
+ this._filterRef = component;
4947
+ this.list.actions.setFilterRef(component);
4948
+ this._emitFiltersReadyEvent();
4949
+ }
4950
+ /**
4951
+ * Set columns to config
4952
+ * Create Column Model instances
4953
+ *
4954
+ */
4955
+ set columnTemplates(listColumnDirectives) {
4956
+ this.listColumnDirectives = listColumnDirectives;
4957
+ if (this.list) {
4958
+ this.list.tranformTemplatesToColumns(listColumnDirectives);
4959
+ }
4960
+ }
4961
+ set _emptyStateTemplate(template) {
4962
+ if (this.list) {
4963
+ this.list.emptyStateTemplate = template;
4964
+ }
4965
+ }
4966
+ /**
4967
+ * Return reference for filter
4968
+ */
4969
+ get filterRef() {
4970
+ return this._filterRef;
4971
+ }
4972
+ get groupEnabled() {
4973
+ return this.list.dataController.groupEnabled;
4974
+ }
4975
+ get paginatorVisible() {
4976
+ return this.list.paging.enabled
4977
+ && !this.firstLoad
4978
+ && !this.list.scrollable
4979
+ && !this.list.emptyStateEnabled
4980
+ && this.list.dataController.visibleRowsCount > 0
4981
+ && this.list.paging.pages > 1;
4982
+ }
4983
+ set groupEnabled(value) {
4984
+ this.list.groupEnabled(value);
4948
4985
  }
4949
4986
  ngOnInit() {
4950
- this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;
4951
- const length = this.cols.length;
4952
- for (let w = length; w >= 0; w--) {
4953
- this.widths[w] = w ? random(15, 100 / length, false) : 0;
4987
+ this._subscribeToRemoveRow();
4988
+ this._subscribeToGroupExpandStatusChange();
4989
+ }
4990
+ ngOnDestroy() {
4991
+ if (this.list) {
4992
+ this.list.destroy();
4993
+ }
4994
+ this._destroy.next();
4995
+ this._destroy.complete();
4996
+ }
4997
+ nextPage() {
4998
+ this.list.paging.goNext();
4999
+ }
5000
+ prevPage() {
5001
+ this.list.paging.goPrev();
5002
+ }
5003
+ firstPage() {
5004
+ this.list.paging.goFirst();
5005
+ }
5006
+ lastPage() {
5007
+ this.list.paging.goLast();
5008
+ }
5009
+ reload() {
5010
+ this.list.reload();
5011
+ }
5012
+ getData(trackBy) {
5013
+ return this.list.getData(trackBy);
5014
+ }
5015
+ hasData(trackBy) {
5016
+ return this.list.hasData(trackBy);
5017
+ }
5018
+ updateData(rows, trackBy) {
5019
+ return this.list.dataController.updateData(rows, trackBy);
5020
+ }
5021
+ replaceRow(row, trackBy) {
5022
+ return this.list.dataController.replaceData(row, trackBy);
5023
+ }
5024
+ updateSelectionConfig(config) {
5025
+ this.list.selection.updateConfig(config);
5026
+ }
5027
+ resetSelectionActions() {
5028
+ this.list.selection.resetActions();
5029
+ }
5030
+ removeData(data) {
5031
+ return this.list.dataController.removeData(data);
5032
+ }
5033
+ setHeading(heading) {
5034
+ this.list.heading = heading;
5035
+ }
5036
+ setSubheading(subheading) {
5037
+ this.list.subheading = subheading;
5038
+ }
5039
+ reorderStart() {
5040
+ this.reorderController.enableReorder();
5041
+ }
5042
+ reorderFinish() {
5043
+ this.reorderController.disableReorder();
5044
+ }
5045
+ setActions(actions) {
5046
+ if (actions) {
5047
+ this.list.actions.clearActions();
5048
+ this.list.actions.setActions(actions);
5049
+ }
5050
+ }
5051
+ filterReady() {
5052
+ this.list.filtersReady$.next();
5053
+ this._filterParamsReady = true;
5054
+ this._emitFiltersReadyEvent();
5055
+ }
5056
+ /**
5057
+ * Update visibility for specific column
5058
+ */
5059
+ columnVisibility(name, show) {
5060
+ this.columnsVisibility([{ name, show }]);
5061
+ }
5062
+ /**
5063
+ * Update visibility for list of specific columns
5064
+ */
5065
+ columnsVisibility(columns) {
5066
+ this.list.columns.updateVisibilityForCols(columns);
5067
+ }
5068
+ _emitFiltersReadyEvent() {
5069
+ if (!!this.filterRef && this._filterParamsReady) {
5070
+ this.filtersReady.emit();
5071
+ }
5072
+ }
5073
+ /**
5074
+ * Initialize config for list
5075
+ * @param config
5076
+ */
5077
+ _initWithConfig(config) {
5078
+ if (this.list) {
5079
+ this.list.destroy();
4954
5080
  }
4955
- for (let r = 0; r < 3; r++) {
4956
- for (let c = 0; c < length; c++) {
4957
- this.placeholderWidths[r].push(random(50, 90));
4958
- }
5081
+ const defaultOpts = this._defaultOptions
5082
+ ? cloneDeep(this._defaultOptions)
5083
+ : {};
5084
+ const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
5085
+ if (listConfig.persist !== false) {
5086
+ this._restorePersistance(listConfig.persist);
4959
5087
  }
4960
- }
4961
- ngOnChanges(changes) {
4962
- if (changes.loaderLines) {
4963
- this.rows = new Array(this.loaderLines);
5088
+ this._updateCustomizeAction(listConfig.actions);
5089
+ this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
5090
+ this._waitFirstLoad();
5091
+ this._listenFiltersQueryChange();
5092
+ this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions);
5093
+ if (this.listColumnDirectives) {
5094
+ this.list.tranformTemplatesToColumns(this.listColumnDirectives);
4964
5095
  }
5096
+ this._listenSortingChange();
4965
5097
  }
4966
- };
4967
- __decorate([
4968
- Input(),
4969
- __metadata("design:type", Object)
4970
- ], FsListLoaderComponent.prototype, "columns", void 0);
4971
- __decorate([
4972
- Input(),
4973
- __metadata("design:type", Number)
4974
- ], FsListLoaderComponent.prototype, "loaderLines", void 0);
4975
- FsListLoaderComponent = __decorate([
4976
- Component({
4977
- selector: 'fs-list-loader',
4978
- 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",
4979
- changeDetection: ChangeDetectionStrategy.OnPush,
4980
- styles: ["table{width:100%;border-spacing:0}.fs-skeleton-placeholder{opacity:.5}:host ::ng-deep tbody tr:hover td{background:0 0}"]
4981
- })
4982
- ], FsListLoaderComponent);
4983
-
4984
- let FsRowActionsComponent = class FsRowActionsComponent {
4985
- constructor(_fsPrompt) {
4986
- this._fsPrompt = _fsPrompt;
4987
- this.restoreMode = false;
4988
- this.rowActions = [];
4989
- this.menuRowActions = [];
4990
- this.inlineRowActions = [];
4991
- this._destroy$ = new Subject();
4992
- }
4993
- actionClick(action, row, event, menuRef) {
4994
- if (action.remove) {
4995
- if (typeof action.remove === 'boolean') {
4996
- this.removeAction(action, row.data, event, this.index);
4997
- }
4998
- else {
4999
- this._fsPrompt.confirm({
5000
- title: action.remove.title,
5001
- template: action.remove.template,
5002
- }).pipe(take(1), takeUntil(this._destroy$)).subscribe({
5003
- next: () => {
5004
- this.removeAction(action, row.data, event, this.index);
5098
+ /**
5099
+ * Find action with customize flag and re-declare click function for CustomizeColsDialog
5100
+ * @param actions
5101
+ */
5102
+ _updateCustomizeAction(actions) {
5103
+ const customizeAction = actions === null || actions === void 0 ? void 0 : actions.find((action) => action.customize);
5104
+ if (customizeAction) {
5105
+ const actionClickFn = customizeAction.click;
5106
+ customizeAction.click = () => {
5107
+ if (actionClickFn) {
5108
+ actionClickFn(null);
5109
+ }
5110
+ const dialogRef = this.dialog.open(CustomizeColsDialogComponent, {
5111
+ data: {
5112
+ columns: this.list.columns.columnsForDialog,
5113
+ changeFn: this.list.columns.changeFn,
5005
5114
  },
5006
- error: () => { },
5007
5115
  });
5008
- }
5009
- }
5010
- else {
5011
- action.click(row.data, event, this.index, menuRef);
5116
+ dialogRef
5117
+ .afterClosed()
5118
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
5119
+ .subscribe((data) => {
5120
+ if (data) {
5121
+ this.list.columns.updateVisibilityForCols(data);
5122
+ this.cdRef.markForCheck();
5123
+ }
5124
+ });
5125
+ };
5012
5126
  }
5013
5127
  }
5014
5128
  /**
5015
- * Track By for improve change detection
5016
- * @param index
5129
+ * Update sorting in filter
5017
5130
  */
5018
- trackByFn(index) {
5019
- return index;
5131
+ _listenSortingChange() {
5132
+ this.list.sorting
5133
+ .sortingChanged$
5134
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
5135
+ .subscribe((sort) => {
5136
+ this._filterRef.updateSort(sort);
5137
+ });
5020
5138
  }
5021
- clickOnTrigger(event) {
5022
- event.stopPropagation();
5023
- this.rowActions
5024
- .forEach((action) => action.updateLabel(this.row.data));
5139
+ _subscribeToRemoveRow() {
5140
+ this.rowRemoved
5141
+ .pipe(takeUntil(this._destroy))
5142
+ .subscribe((row) => {
5143
+ this.list.dataController.removeData(row);
5144
+ });
5025
5145
  }
5026
- /**
5027
- * Emit that some row must be removed
5028
- * @param action
5029
- * @param row
5030
- * @param event
5031
- * @param index
5032
- */
5033
- removeAction(action, row, event, index) {
5034
- const removeObservable = action.click(row, event, index);
5035
- if (removeObservable && removeObservable instanceof Observable) {
5036
- removeObservable
5037
- .pipe(take(1), takeUntil(this._destroy$))
5038
- .subscribe(() => {
5039
- this.rowRemoved.emit(row);
5146
+ _subscribeToGroupExpandStatusChange() {
5147
+ if (this.list.dataController.hasGroups) {
5148
+ this._groupExpandNotifier.expandStatusChange$
5149
+ .pipe(takeUntil(this._destroy))
5150
+ .subscribe((row) => {
5151
+ this.list.dataController.toggleRowGroup(row);
5040
5152
  });
5041
5153
  }
5042
5154
  }
5043
- };
5044
- FsRowActionsComponent.ctorParameters = () => [
5045
- { type: FsPrompt }
5046
- ];
5047
- __decorate([
5048
- Input(),
5049
- __metadata("design:type", Row)
5050
- ], FsRowActionsComponent.prototype, "row", void 0);
5051
- __decorate([
5052
- Input(),
5053
- __metadata("design:type", Number)
5054
- ], FsRowActionsComponent.prototype, "index", void 0);
5055
- __decorate([
5056
- Input(),
5057
- __metadata("design:type", Object)
5058
- ], FsRowActionsComponent.prototype, "restoreMode", void 0);
5059
- __decorate([
5060
- Input(),
5061
- __metadata("design:type", Array)
5062
- ], FsRowActionsComponent.prototype, "rowActions", void 0);
5063
- __decorate([
5064
- Input(),
5065
- __metadata("design:type", EventEmitter)
5066
- ], FsRowActionsComponent.prototype, "rowRemoved", void 0);
5067
- __decorate([
5068
- Input(),
5069
- __metadata("design:type", Array)
5070
- ], FsRowActionsComponent.prototype, "menuRowActions", void 0);
5071
- __decorate([
5072
- Input(),
5073
- __metadata("design:type", Array)
5074
- ], FsRowActionsComponent.prototype, "inlineRowActions", void 0);
5075
- __decorate([
5076
- Input(),
5077
- __metadata("design:type", RowAction)
5078
- ], FsRowActionsComponent.prototype, "restoreAction", void 0);
5079
- FsRowActionsComponent = __decorate([
5080
- Component({
5081
- selector: 'fs-list-row-actions',
5082
- 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",
5083
- changeDetection: ChangeDetectionStrategy.OnPush
5084
- }),
5085
- __metadata("design:paramtypes", [FsPrompt])
5086
- ], FsRowActionsComponent);
5087
-
5088
- let FsRowInlineActionComponent = class FsRowInlineActionComponent {
5089
- constructor(_fsPrompt) {
5090
- this._fsPrompt = _fsPrompt;
5091
- this.clicked = new EventEmitter();
5092
- this.fileSelect = new EventEmitter();
5155
+ _waitFirstLoad() {
5156
+ this.list.loading$
5157
+ .pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
5158
+ .subscribe(() => {
5159
+ this.firstLoad = false;
5160
+ this.cdRef.markForCheck();
5161
+ });
5093
5162
  }
5094
- actionClick(event) {
5095
- this.clicked.emit(event);
5163
+ _listenFiltersQueryChange() {
5164
+ this.list.filtersQuery$
5165
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
5166
+ .subscribe((value) => {
5167
+ if (value) {
5168
+ const activeFilters = Object.keys(value).length;
5169
+ this.reorderController.setNunberOfActiveFilters(activeFilters);
5170
+ }
5171
+ });
5096
5172
  }
5097
- fileSelected(event) {
5098
- this.fileSelect.emit(event);
5173
+ _configMergeCustomizer(objValue, srcValue) {
5174
+ if (Array.isArray(objValue)) {
5175
+ return objValue;
5176
+ }
5099
5177
  }
5100
- };
5101
- FsRowInlineActionComponent.ctorParameters = () => [
5102
- { type: FsPrompt }
5103
- ];
5104
- __decorate([
5105
- Input(),
5106
- __metadata("design:type", RowAction)
5107
- ], FsRowInlineActionComponent.prototype, "action", void 0);
5108
- __decorate([
5109
- Output(),
5110
- __metadata("design:type", Object)
5111
- ], FsRowInlineActionComponent.prototype, "clicked", void 0);
5112
- __decorate([
5113
- Output(),
5114
- __metadata("design:type", Object)
5115
- ], FsRowInlineActionComponent.prototype, "fileSelect", void 0);
5116
- FsRowInlineActionComponent = __decorate([
5117
- Component({
5118
- selector: 'fs-list-row-inline-action',
5119
- 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",
5120
- changeDetection: ChangeDetectionStrategy.OnPush
5121
- }),
5122
- __metadata("design:paramtypes", [FsPrompt])
5123
- ], FsRowInlineActionComponent);
5124
-
5125
- let FsRowMenuActionComponent = class FsRowMenuActionComponent {
5126
- constructor() {
5127
- this.fileSelect = new EventEmitter();
5128
- this.fileError = new EventEmitter();
5178
+ _restorePersistance(persistConfig) {
5179
+ const namespace = getNormalizedPath(this._location);
5180
+ this._persistance.setConfig(persistConfig, namespace, this._inDialog);
5129
5181
  }
5130
- };
5131
- __decorate([
5132
- Input(),
5133
- __metadata("design:type", String)
5134
- ], FsRowMenuActionComponent.prototype, "icon", void 0);
5135
- __decorate([
5136
- Input(),
5137
- __metadata("design:type", String)
5138
- ], FsRowMenuActionComponent.prototype, "label", void 0);
5139
- __decorate([
5140
- Input(),
5141
- __metadata("design:type", Object)
5142
- ], FsRowMenuActionComponent.prototype, "file", void 0);
5143
- __decorate([
5144
- Output(),
5145
- __metadata("design:type", Object)
5146
- ], FsRowMenuActionComponent.prototype, "fileSelect", void 0);
5147
- __decorate([
5148
- Output(),
5149
- __metadata("design:type", Object)
5150
- ], FsRowMenuActionComponent.prototype, "fileError", void 0);
5151
- FsRowMenuActionComponent = __decorate([
5152
- Component({
5153
- selector: 'fs-list-row-menu-action',
5154
- 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",
5155
- changeDetection: ChangeDetectionStrategy.OnPush
5156
- })
5157
- ], FsRowMenuActionComponent);
5182
+ }
5183
+ 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 });
5184
+ 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: [
5185
+ GroupExpandNotifierService,
5186
+ PersistanceController,
5187
+ ReorderController,
5188
+ ], 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$ | async\"\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$ | async\"\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$ | async\"\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 });
5189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, decorators: [{
5190
+ type: Component,
5191
+ args: [{
5192
+ selector: 'fs-list',
5193
+ templateUrl: 'list.component.html',
5194
+ styleUrls: [
5195
+ './list.component.scss',
5196
+ ],
5197
+ changeDetection: ChangeDetectionStrategy.OnPush,
5198
+ providers: [
5199
+ GroupExpandNotifierService,
5200
+ PersistanceController,
5201
+ ReorderController,
5202
+ ]
5203
+ }]
5204
+ }], ctorParameters: function () { return [{ type: ReorderController }, { type: i0.ElementRef }, { type: undefined, decorators: [{
5205
+ type: Optional
5206
+ }, {
5207
+ type: Inject,
5208
+ args: [FS_LIST_DEFAULT_CONFIG]
5209
+ }] }, { type: i2$4.FsScrollService, decorators: [{
5210
+ type: Optional
5211
+ }] }, { 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: [{
5212
+ type: Optional
5213
+ }] }, { type: i9.DrawerRef, decorators: [{
5214
+ type: Optional
5215
+ }] }]; }, propDecorators: { classFsList: [{
5216
+ type: HostBinding,
5217
+ args: ['class.fs-list']
5218
+ }], config: [{
5219
+ type: Input,
5220
+ args: ['config']
5221
+ }], loaderLines: [{
5222
+ type: Input
5223
+ }], filtersReady: [{
5224
+ type: Output
5225
+ }], filterReference: [{
5226
+ type: ViewChild,
5227
+ args: [FilterComponent]
5228
+ }], columnTemplates: [{
5229
+ type: ContentChildren,
5230
+ args: [FsListColumnDirective]
5231
+ }], _emptyStateTemplate: [{
5232
+ type: ContentChild,
5233
+ args: [FsListEmptyStateDirective, { read: TemplateRef }]
5234
+ }] } });
5158
5235
 
5159
- let FsListManageSavedFiltersComponent = class FsListManageSavedFiltersComponent {
5236
+ class FsListManageSavedFiltersComponent {
5160
5237
  constructor(_externalParams) {
5161
5238
  this._externalParams = _externalParams;
5162
5239
  this._reorderReady = true;
@@ -5214,133 +5291,31 @@ let FsListManageSavedFiltersComponent = class FsListManageSavedFiltersComponent
5214
5291
  }
5215
5292
  };
5216
5293
  }
5217
- };
5218
- FsListManageSavedFiltersComponent.ctorParameters = () => [
5219
- { type: ExternalParamsController$1 }
5220
- ];
5221
- FsListManageSavedFiltersComponent = __decorate([
5222
- Component({
5223
- 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"
5224
- }),
5225
- __metadata("design:paramtypes", [ExternalParamsController$1])
5226
- ], FsListManageSavedFiltersComponent);
5227
-
5228
- let FsListSavedFiltersComponent = class FsListSavedFiltersComponent {
5229
- constructor(_dialog, _externalParams, _vcRef) {
5230
- this._dialog = _dialog;
5231
- this._externalParams = _externalParams;
5232
- this._vcRef = _vcRef;
5233
- }
5234
- get savedFiltersEnabled$() {
5235
- return this._externalParams.savedFiltersController.enabled$;
5236
- }
5237
- showManageDialog() {
5238
- this._dialog.open(FsListManageSavedFiltersComponent, {
5239
- viewContainerRef: this._vcRef,
5240
- });
5241
- }
5242
- };
5243
- FsListSavedFiltersComponent.ctorParameters = () => [
5244
- { type: MatDialog },
5245
- { type: ExternalParamsController$1 },
5246
- { type: ViewContainerRef }
5247
- ];
5248
- FsListSavedFiltersComponent = __decorate([
5249
- Component({
5250
- selector: 'fs-list-saved-filters',
5251
- 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"
5252
- }),
5253
- __metadata("design:paramtypes", [MatDialog,
5254
- ExternalParamsController$1,
5255
- ViewContainerRef])
5256
- ], FsListSavedFiltersComponent);
5257
-
5258
- let FsListDraggableRowDirective = class FsListDraggableRowDirective {
5259
- constructor(_el, _renderer, _reorderController, _draggableList) {
5260
- this._el = _el;
5261
- this._renderer = _renderer;
5262
- this._reorderController = _reorderController;
5263
- this._draggableList = _draggableList;
5264
- this._destroy$ = new Subject();
5265
- }
5266
- ngOnInit() {
5267
- if (this._reorderController.moveDropCallback) {
5268
- this._listenDragEvents();
5269
- }
5270
- }
5271
- ngOnDestroy() {
5272
- this._destroy$.next();
5273
- this._destroy$.complete();
5274
- }
5275
- _listenDragEvents() {
5276
- this._draggableList
5277
- .dragStart$
5278
- .pipe(takeUntil(this._destroy$))
5279
- .subscribe(() => {
5280
- this._markReadyToSwapRows();
5281
- });
5282
- this._draggableList
5283
- .dragEnd$
5284
- .pipe(takeUntil(this._destroy$))
5285
- .subscribe(() => {
5286
- this._unmarkRows();
5287
- });
5288
- }
5289
- _markReadyToSwapRows() {
5290
- var _a, _b, _c, _d, _e, _f;
5291
- const currentEl = this.row;
5292
- const targetEl = this._draggableList.draggableItem;
5293
- const currentElGroup = (currentEl.isChild && currentEl.parent) || currentEl;
5294
- const targetElGroup = (targetEl.isChild && targetEl.parent) || targetEl;
5295
- this.row.readyToSwap = this._reorderController.moveDropCallback({
5296
- row1: (_a = currentEl) === null || _a === void 0 ? void 0 : _a.data,
5297
- row2: (_b = targetEl) === null || _b === void 0 ? void 0 : _b.data,
5298
- group1: (_d = (_c = currentEl) === null || _c === void 0 ? void 0 : _c.parent) === null || _d === void 0 ? void 0 : _d.data,
5299
- group2: (_f = (_e = targetEl) === null || _e === void 0 ? void 0 : _e.parent) === null || _f === void 0 ? void 0 : _f.data
5300
- });
5301
- if (!this.row.readyToSwap) {
5302
- this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');
5303
- }
5304
- }
5305
- _unmarkRows() {
5306
- if (!this.row.readyToSwap) {
5307
- this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');
5308
- }
5309
- }
5310
- };
5311
- FsListDraggableRowDirective.ctorParameters = () => [
5312
- { type: ElementRef },
5313
- { type: Renderer2 },
5314
- { type: ReorderController },
5315
- { type: FsListDraggableListDirective }
5316
- ];
5317
- __decorate([
5318
- Input(),
5319
- __metadata("design:type", Row)
5320
- ], FsListDraggableRowDirective.prototype, "row", void 0);
5321
- FsListDraggableRowDirective = __decorate([
5322
- Directive({
5323
- selector: '[fsListDraggableRow]',
5324
- }),
5325
- __metadata("design:paramtypes", [ElementRef,
5326
- Renderer2,
5327
- ReorderController,
5328
- FsListDraggableListDirective])
5329
- ], FsListDraggableRowDirective);
5294
+ }
5295
+ 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 });
5296
+ 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: ["show", "title", "name", "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"] }] });
5297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListManageSavedFiltersComponent, decorators: [{
5298
+ type: Component,
5299
+ args: [{
5300
+ templateUrl: 'manage-saved-filters.component.html',
5301
+ }]
5302
+ }], ctorParameters: function () { return [{ type: i2$2.ExternalParamsController }]; } });
5330
5303
 
5331
- let FsListContentDirective = class FsListContentDirective {
5332
- };
5333
- FsListContentDirective = __decorate([
5334
- Directive({
5335
- selector: '[fs-list-content]',
5336
- })
5337
- ], FsListContentDirective);
5304
+ class FsListContentDirective {
5305
+ }
5306
+ FsListContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5307
+ FsListContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListContentDirective, selector: "[fs-list-content]", ngImport: i0 });
5308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListContentDirective, decorators: [{
5309
+ type: Directive,
5310
+ args: [{
5311
+ selector: '[fs-list-content]',
5312
+ }]
5313
+ }] });
5338
5314
 
5339
- var FsListModule_1;
5340
- let FsListModule = FsListModule_1 = class FsListModule {
5315
+ class FsListModule {
5341
5316
  static forRoot(config = {}) {
5342
5317
  return {
5343
- ngModule: FsListModule_1,
5318
+ ngModule: FsListModule,
5344
5319
  providers: [
5345
5320
  { provide: FS_LIST_CONFIG, useValue: config },
5346
5321
  {
@@ -5351,10 +5326,69 @@ let FsListModule = FsListModule_1 = class FsListModule {
5351
5326
  ]
5352
5327
  };
5353
5328
  }
5354
- };
5355
- FsListModule = FsListModule_1 = __decorate([
5356
- NgModule({
5357
- imports: [
5329
+ }
5330
+ FsListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5331
+ FsListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListModule, declarations: [
5332
+ // Components
5333
+ FsListComponent,
5334
+ FsRowComponent,
5335
+ FsRowActionsComponent,
5336
+ FsRowInlineActionComponent,
5337
+ FsRowMenuActionComponent,
5338
+ FsCellComponent,
5339
+ FsFooterRowComponent,
5340
+ FsFooterCellComponent,
5341
+ FsStatusComponent,
5342
+ FsListLoaderComponent,
5343
+ FsListSavedFiltersComponent,
5344
+ FsListManageSavedFiltersComponent,
5345
+ // Internal Components
5346
+ FsHeadComponent,
5347
+ FsHeadCellComponent,
5348
+ FsBodyComponent,
5349
+ FsFooterComponent,
5350
+ FsPaginationComponent,
5351
+ // Directives
5352
+ FsListColumnDirective,
5353
+ FsListCellDirective,
5354
+ FsListHeaderDirective,
5355
+ FsListFooterDirective,
5356
+ FsListGroupCellDirective,
5357
+ FsListGroupExpandTriggerDirective,
5358
+ FsListDraggableListDirective,
5359
+ FsListDraggableRowDirective,
5360
+ FsListEmptyStateDirective,
5361
+ FsListContentDirective,
5362
+ FsListContentInitDirective,
5363
+ // Dialog
5364
+ CustomizeColsDialogComponent], imports: [CommonModule,
5365
+ RouterModule,
5366
+ MatButtonModule,
5367
+ MatIconModule,
5368
+ MatMenuModule,
5369
+ MatProgressSpinnerModule,
5370
+ MatCheckboxModule,
5371
+ MatRippleModule,
5372
+ FsFilterModule,
5373
+ FsMenuModule,
5374
+ FlexLayoutModule,
5375
+ FsScrollModule,
5376
+ FsPromptModule,
5377
+ MatDialogModule,
5378
+ MatTooltipModule,
5379
+ FsFileModule], exports: [FsListComponent,
5380
+ FsRowComponent,
5381
+ FsCellComponent,
5382
+ FsListLoaderComponent,
5383
+ FsListColumnDirective,
5384
+ FsListCellDirective,
5385
+ FsListHeaderDirective,
5386
+ FsListFooterDirective,
5387
+ FsListGroupCellDirective,
5388
+ FsListGroupExpandTriggerDirective,
5389
+ FsListEmptyStateDirective,
5390
+ FsListContentDirective] });
5391
+ FsListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListModule, providers: [], imports: [[
5358
5392
  CommonModule,
5359
5393
  RouterModule,
5360
5394
  MatButtonModule,
@@ -5371,62 +5405,80 @@ FsListModule = FsListModule_1 = __decorate([
5371
5405
  MatDialogModule,
5372
5406
  MatTooltipModule,
5373
5407
  FsFileModule,
5374
- ],
5375
- declarations: [
5376
- // Components
5377
- FsListComponent,
5378
- FsRowComponent,
5379
- FsRowActionsComponent,
5380
- FsRowInlineActionComponent,
5381
- FsRowMenuActionComponent,
5382
- FsCellComponent,
5383
- FsFooterRowComponent,
5384
- FsFooterCellComponent,
5385
- FsStatusComponent,
5386
- FsListLoaderComponent,
5387
- FsListSavedFiltersComponent,
5388
- FsListManageSavedFiltersComponent,
5389
- // Internal Components
5390
- FsHeadComponent,
5391
- FsHeadCellComponent,
5392
- FsBodyComponent,
5393
- FsFooterComponent,
5394
- FsPaginationComponent,
5395
- // Directives
5396
- FsListColumnDirective,
5397
- FsListCellDirective,
5398
- FsListHeaderDirective,
5399
- FsListFooterDirective,
5400
- FsListGroupCellDirective,
5401
- FsListGroupExpandTriggerDirective,
5402
- FsListDraggableListDirective,
5403
- FsListDraggableRowDirective,
5404
- FsListEmptyStateDirective,
5405
- FsListContentDirective,
5406
- // Dialog
5407
- CustomizeColsDialogComponent,
5408
- ],
5409
- entryComponents: [
5410
- // Dialog
5411
- CustomizeColsDialogComponent,
5412
- ],
5413
- providers: [],
5414
- exports: [
5415
- FsListComponent,
5416
- FsRowComponent,
5417
- FsCellComponent,
5418
- FsListLoaderComponent,
5419
- FsListColumnDirective,
5420
- FsListCellDirective,
5421
- FsListHeaderDirective,
5422
- FsListFooterDirective,
5423
- FsListGroupCellDirective,
5424
- FsListGroupExpandTriggerDirective,
5425
- FsListEmptyStateDirective,
5426
- FsListContentDirective,
5427
- ],
5428
- })
5429
- ], FsListModule);
5408
+ ]] });
5409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListModule, decorators: [{
5410
+ type: NgModule,
5411
+ args: [{
5412
+ imports: [
5413
+ CommonModule,
5414
+ RouterModule,
5415
+ MatButtonModule,
5416
+ MatIconModule,
5417
+ MatMenuModule,
5418
+ MatProgressSpinnerModule,
5419
+ MatCheckboxModule,
5420
+ MatRippleModule,
5421
+ FsFilterModule,
5422
+ FsMenuModule,
5423
+ FlexLayoutModule,
5424
+ FsScrollModule,
5425
+ FsPromptModule,
5426
+ MatDialogModule,
5427
+ MatTooltipModule,
5428
+ FsFileModule,
5429
+ ],
5430
+ declarations: [
5431
+ // Components
5432
+ FsListComponent,
5433
+ FsRowComponent,
5434
+ FsRowActionsComponent,
5435
+ FsRowInlineActionComponent,
5436
+ FsRowMenuActionComponent,
5437
+ FsCellComponent,
5438
+ FsFooterRowComponent,
5439
+ FsFooterCellComponent,
5440
+ FsStatusComponent,
5441
+ FsListLoaderComponent,
5442
+ FsListSavedFiltersComponent,
5443
+ FsListManageSavedFiltersComponent,
5444
+ // Internal Components
5445
+ FsHeadComponent,
5446
+ FsHeadCellComponent,
5447
+ FsBodyComponent,
5448
+ FsFooterComponent,
5449
+ FsPaginationComponent,
5450
+ // Directives
5451
+ FsListColumnDirective,
5452
+ FsListCellDirective,
5453
+ FsListHeaderDirective,
5454
+ FsListFooterDirective,
5455
+ FsListGroupCellDirective,
5456
+ FsListGroupExpandTriggerDirective,
5457
+ FsListDraggableListDirective,
5458
+ FsListDraggableRowDirective,
5459
+ FsListEmptyStateDirective,
5460
+ FsListContentDirective,
5461
+ FsListContentInitDirective,
5462
+ // Dialog
5463
+ CustomizeColsDialogComponent,
5464
+ ],
5465
+ providers: [],
5466
+ exports: [
5467
+ FsListComponent,
5468
+ FsRowComponent,
5469
+ FsCellComponent,
5470
+ FsListLoaderComponent,
5471
+ FsListColumnDirective,
5472
+ FsListCellDirective,
5473
+ FsListHeaderDirective,
5474
+ FsListFooterDirective,
5475
+ FsListGroupCellDirective,
5476
+ FsListGroupExpandTriggerDirective,
5477
+ FsListEmptyStateDirective,
5478
+ FsListContentDirective,
5479
+ ],
5480
+ }]
5481
+ }] });
5430
5482
  function FsListConfigFactory(config) {
5431
5483
  return merge$1({ noResults: { message: 'No Results Found' } }, config);
5432
5484
  }
@@ -5439,5 +5491,5 @@ function FsListConfigFactory(config) {
5439
5491
  * Generated bundle index. Do not edit.
5440
5492
  */
5441
5493
 
5442
- export { ActionType, Column, FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG, FsBodyComponent, FsCellComponent, FsFooterCellComponent, FsFooterComponent, FsFooterRowComponent, FsHeadCellComponent, FsHeadComponent, FsListCellDirective, FsListColumnDirective, FsListComponent, FsListContentDirective, 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 };
5494
+ 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 };
5443
5495
  //# sourceMappingURL=firestitch-list.js.map