@firestitch/list 12.12.11 → 12.12.12

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 (155) hide show
  1. package/app/classes/actions-controller.d.ts +20 -20
  2. package/app/classes/columns-controller.d.ts +71 -71
  3. package/app/classes/data-controller.d.ts +91 -91
  4. package/app/classes/external-params-controller.d.ts +31 -31
  5. package/app/classes/index.d.ts +2 -2
  6. package/app/classes/list-controller.d.ts +174 -174
  7. package/app/classes/pagination-controller.d.ts +189 -189
  8. package/app/classes/persistance-controller.d.ts +10 -10
  9. package/app/classes/reorder-controller.d.ts +66 -66
  10. package/app/classes/selection-controller.d.ts +146 -146
  11. package/app/classes/sorting-controller.d.ts +64 -64
  12. package/app/components/body/body.component.d.ts +31 -32
  13. package/app/components/body/row/actions/actions.component.d.ts +34 -34
  14. package/app/components/body/row/cell/cell.component.d.ts +23 -23
  15. package/app/components/body/row/inline-action/inline-action.component.d.ts +16 -16
  16. package/app/components/body/row/menu-action/menu-action.component.d.ts +14 -14
  17. package/app/components/body/row/row.component.d.ts +74 -74
  18. package/app/components/customize-cols/customize-cols.component.d.ts +17 -17
  19. package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +7 -7
  20. package/app/components/footer/footer-row/footer-row.component.d.ts +11 -11
  21. package/app/components/footer/footer.component.d.ts +11 -11
  22. package/app/components/head/head-cell/head-cell.component.d.ts +14 -14
  23. package/app/components/head/head.component.d.ts +43 -43
  24. package/app/components/list/list.component.d.ts +121 -121
  25. package/app/components/loader/loader.component.d.ts +14 -14
  26. package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +13 -13
  27. package/app/components/pagination/pagination.component.d.ts +14 -14
  28. package/app/components/saved-filters/saved-filters.component.d.ts +15 -15
  29. package/app/components/status/status.component.d.ts +21 -21
  30. package/app/directives/cell/cell.directive.d.ts +8 -8
  31. package/app/directives/column/column.directive.d.ts +33 -33
  32. package/app/directives/content/content.directive.d.ts +5 -5
  33. package/app/directives/content-init/content-init.directive.d.ts +9 -9
  34. package/app/directives/draggable-list/draggable-list.directive.d.ts +89 -89
  35. package/app/directives/draggable-row/draggable-row.directive.d.ts +23 -23
  36. package/app/directives/empty-state/empty-state.directive.d.ts +5 -5
  37. package/app/directives/footer/footer.directive.d.ts +8 -8
  38. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +10 -10
  39. package/app/directives/group-footer/group-footer.directive.d.ts +6 -6
  40. package/app/directives/group-header/group-header.directive.d.ts +6 -6
  41. package/app/directives/header/header.directive.d.ts +8 -8
  42. package/app/directives/heading/heading.directive.d.ts +5 -5
  43. package/app/directives/heading-container/heading-container.directive.d.ts +5 -5
  44. package/app/directives/index.d.ts +3 -3
  45. package/app/directives/subheading/subheading.directive.d.ts +5 -5
  46. package/app/enums/button-type.enum.d.ts +7 -7
  47. package/app/enums/page-change-type.enum.d.ts +4 -4
  48. package/app/enums/pagination-strategy.enum.d.ts +5 -5
  49. package/app/enums/row-type.enum.d.ts +6 -6
  50. package/app/enums/state.enum.d.ts +9 -9
  51. package/app/fs-list.module.d.ts +60 -60
  52. package/app/fs-list.providers.d.ts +3 -3
  53. package/app/interfaces/cellconfig.interface.d.ts +5 -5
  54. package/app/interfaces/column-config.interface.d.ts +2 -2
  55. package/app/interfaces/draggable-list.interface.d.ts +7 -7
  56. package/app/interfaces/external-params.interface.d.ts +13 -13
  57. package/app/interfaces/index.d.ts +3 -3
  58. package/app/interfaces/listconfig.interface.d.ts +253 -253
  59. package/app/interfaces/pagination.interface.d.ts +13 -13
  60. package/app/models/column-async-attribute.d.ts +5 -5
  61. package/app/models/column-attributes.d.ts +39 -39
  62. package/app/models/column.model.d.ts +59 -59
  63. package/app/models/row/base-row.d.ts +13 -13
  64. package/app/models/row/child-row.d.ts +12 -12
  65. package/app/models/row/group-footer-row.d.ts +10 -10
  66. package/app/models/row/group-row.d.ts +16 -16
  67. package/app/models/row/simple-row.d.ts +5 -5
  68. package/app/models/row-action.model.d.ts +29 -29
  69. package/app/models/row.d.ts +30 -30
  70. package/app/models/styleConfig.model.d.ts +31 -31
  71. package/app/pipes/action-label.d.ts +8 -8
  72. package/app/pipes/index.d.ts +1 -1
  73. package/app/services/group-expand-notifier.service.d.ts +11 -11
  74. package/bundles/firestitch-list.umd.js +6766 -6772
  75. package/bundles/firestitch-list.umd.js.map +1 -1
  76. package/esm2015/app/classes/actions-controller.js +55 -55
  77. package/esm2015/app/classes/columns-controller.js +205 -205
  78. package/esm2015/app/classes/data-controller.js +351 -351
  79. package/esm2015/app/classes/external-params-controller.js +153 -153
  80. package/esm2015/app/classes/index.js +3 -3
  81. package/esm2015/app/classes/list-controller.js +713 -713
  82. package/esm2015/app/classes/pagination-controller.js +460 -460
  83. package/esm2015/app/classes/persistance-controller.js +19 -19
  84. package/esm2015/app/classes/reorder-controller.js +183 -184
  85. package/esm2015/app/classes/selection-controller.js +458 -458
  86. package/esm2015/app/classes/sorting-controller.js +180 -180
  87. package/esm2015/app/components/body/body.component.js +70 -75
  88. package/esm2015/app/components/body/row/actions/actions.component.js +95 -95
  89. package/esm2015/app/components/body/row/cell/cell.component.js +107 -107
  90. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +39 -39
  91. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +35 -35
  92. package/esm2015/app/components/body/row/row.component.js +271 -271
  93. package/esm2015/app/components/customize-cols/customize-cols.component.js +72 -72
  94. package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +20 -20
  95. package/esm2015/app/components/footer/footer-row/footer-row.component.js +26 -26
  96. package/esm2015/app/components/footer/footer.component.js +26 -26
  97. package/esm2015/app/components/head/head-cell/head-cell.component.js +33 -33
  98. package/esm2015/app/components/head/head.component.js +90 -90
  99. package/esm2015/app/components/list/list.component.js +388 -388
  100. package/esm2015/app/components/loader/loader.component.js +47 -47
  101. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +78 -78
  102. package/esm2015/app/components/pagination/pagination.component.js +44 -44
  103. package/esm2015/app/components/saved-filters/saved-filters.component.js +33 -33
  104. package/esm2015/app/components/status/status.component.js +72 -72
  105. package/esm2015/app/directives/cell/cell.directive.js +18 -18
  106. package/esm2015/app/directives/column/column.directive.js +111 -111
  107. package/esm2015/app/directives/content/content.directive.js +12 -12
  108. package/esm2015/app/directives/content-init/content-init.directive.js +21 -21
  109. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +321 -321
  110. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +80 -80
  111. package/esm2015/app/directives/empty-state/empty-state.directive.js +13 -13
  112. package/esm2015/app/directives/footer/footer.directive.js +18 -18
  113. package/esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js +26 -26
  114. package/esm2015/app/directives/group-footer/group-footer.directive.js +13 -13
  115. package/esm2015/app/directives/group-header/group-header.directive.js +13 -13
  116. package/esm2015/app/directives/header/header.directive.js +18 -18
  117. package/esm2015/app/directives/heading/heading.directive.js +13 -13
  118. package/esm2015/app/directives/heading-container/heading-container.directive.js +13 -13
  119. package/esm2015/app/directives/index.js +4 -4
  120. package/esm2015/app/directives/subheading/subheading.directive.js +13 -13
  121. package/esm2015/app/enums/button-type.enum.js +9 -9
  122. package/esm2015/app/enums/page-change-type.enum.js +6 -6
  123. package/esm2015/app/enums/pagination-strategy.enum.js +7 -7
  124. package/esm2015/app/enums/row-type.enum.js +7 -7
  125. package/esm2015/app/enums/state.enum.js +11 -11
  126. package/esm2015/app/fs-list.module.js +244 -244
  127. package/esm2015/app/fs-list.providers.js +4 -4
  128. package/esm2015/app/interfaces/cellconfig.interface.js +2 -2
  129. package/esm2015/app/interfaces/column-config.interface.js +1 -1
  130. package/esm2015/app/interfaces/draggable-list.interface.js +2 -2
  131. package/esm2015/app/interfaces/external-params.interface.js +2 -2
  132. package/esm2015/app/interfaces/index.js +4 -4
  133. package/esm2015/app/interfaces/listconfig.interface.js +1 -1
  134. package/esm2015/app/interfaces/pagination.interface.js +2 -2
  135. package/esm2015/app/models/column-async-attribute.js +13 -13
  136. package/esm2015/app/models/column-attributes.js +130 -130
  137. package/esm2015/app/models/column.model.js +166 -166
  138. package/esm2015/app/models/row/base-row.js +23 -23
  139. package/esm2015/app/models/row/child-row.js +28 -28
  140. package/esm2015/app/models/row/group-footer-row.js +20 -20
  141. package/esm2015/app/models/row/group-row.js +44 -44
  142. package/esm2015/app/models/row/simple-row.js +10 -10
  143. package/esm2015/app/models/row-action.model.js +94 -94
  144. package/esm2015/app/models/row.js +80 -80
  145. package/esm2015/app/models/styleConfig.model.js +75 -75
  146. package/esm2015/app/pipes/action-label.js +16 -16
  147. package/esm2015/app/pipes/index.js +1 -1
  148. package/esm2015/app/services/group-expand-notifier.service.js +26 -26
  149. package/esm2015/firestitch-list.js +4 -4
  150. package/esm2015/public_api.js +45 -45
  151. package/fesm2015/firestitch-list.js +5567 -5573
  152. package/fesm2015/firestitch-list.js.map +1 -1
  153. package/firestitch-list.d.ts +5 -5
  154. package/package.json +1 -1
  155. package/public_api.d.ts +39 -39
@@ -1,389 +1,389 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, QueryList, ViewChild, HostBinding, Optional, ContentChild, TemplateRef, Output, } from '@angular/core';
2
- import { ActivatedRoute, Router } from '@angular/router';
3
- import { Location } from '@angular/common';
4
- import { MatDialog, MatDialogRef } from '@angular/material/dialog';
5
- import { Subject } from 'rxjs';
6
- import { filter, skip, take, takeUntil } from 'rxjs/operators';
7
- import { FsScrollService } from '@firestitch/scroll';
8
- import { FilterComponent } from '@firestitch/filter';
9
- import { SelectionDialog } from '@firestitch/selection';
10
- import { getNormalizedPath } from '@firestitch/common';
11
- import { DrawerRef } from '@firestitch/drawer';
12
- import { cloneDeep, mergeWith } from 'lodash-es';
13
- import { List } from '../../classes/list-controller';
14
- import { ReorderController } from '../../classes/reorder-controller';
15
- import { FsListColumnDirective } from '../../directives/column/column.directive';
16
- import { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';
17
- import { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';
18
- import { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';
19
- import { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';
20
- import { PersistanceController } from '../../classes/persistance-controller';
21
- import { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from '../../directives';
22
- import * as i0 from "@angular/core";
23
- import * as i1 from "../../classes/reorder-controller";
24
- import * as i2 from "@firestitch/scroll";
25
- import * as i3 from "@angular/material/dialog";
26
- import * as i4 from "@firestitch/drawer";
27
- import * as i5 from "@firestitch/selection";
28
- import * as i6 from "../../services/group-expand-notifier.service";
29
- import * as i7 from "@angular/router";
30
- import * as i8 from "../../classes/persistance-controller";
31
- import * as i9 from "@angular/common";
32
- import * as i10 from "@firestitch/filter";
33
- import * as i11 from "../status/status.component";
34
- import * as i12 from "../head/head.component";
35
- import * as i13 from "../body/body.component";
36
- import * as i14 from "../footer/footer.component";
37
- import * as i15 from "../loader/loader.component";
38
- import * as i16 from "../pagination/pagination.component";
39
- import * as i17 from "../../directives/content-init/content-init.directive";
40
- import * as i18 from "../../directives/draggable-list/draggable-list.directive";
41
- import * as i19 from "../../directives/footer/footer.directive";
42
- export class FsListComponent {
43
- constructor(reorderController, _defaultOptions, fsScroll, _dialogRef, _drawerRef, _el, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location) {
44
- this.reorderController = reorderController;
45
- this._defaultOptions = _defaultOptions;
46
- this.fsScroll = fsScroll;
47
- this._dialogRef = _dialogRef;
48
- this._drawerRef = _drawerRef;
49
- this._el = _el;
50
- this.selectionDialog = selectionDialog;
51
- this.dialog = dialog;
52
- this.cdRef = cdRef;
53
- this._groupExpandNotifier = _groupExpandNotifier;
54
- this._router = _router;
55
- this._route = _route;
56
- this._persistance = _persistance;
57
- this._location = _location;
58
- this.classFsList = true;
59
- this.loaderLines = 3;
60
- this.filtersReady = new EventEmitter();
61
- this.keywordVisible = true;
62
- // Event will fired if action remove: true will clicked
63
- this.rowRemoved = new EventEmitter();
64
- this.firstLoad = true;
65
- this._filterParamsReady = false;
66
- this._inDialog = !!this._dialogRef || !!this._drawerRef;
67
- this._destroy = new Subject();
68
- }
69
- set config(config) {
70
- this._initWithConfig(config);
71
- }
72
- set filterReference(component) {
73
- this._filterRef = component;
74
- this.list.actions.setFilterRef(component);
75
- this._emitFiltersReadyEvent();
76
- }
77
- /**
78
- * Set columns to config
79
- * Create Column Model instances
80
- *
81
- */
82
- set columnTemplates(listColumnDirectives) {
83
- this.listColumnDirectives = listColumnDirectives;
84
- if (this.list) {
85
- this.list.tranformTemplatesToColumns(listColumnDirectives);
86
- }
87
- }
88
- set _emptyStateTemplate(template) {
89
- if (this.list) {
90
- this.list.emptyStateTemplate = template;
91
- }
92
- }
93
- /**
94
- * Return reference for filter
95
- */
96
- get filterRef() {
97
- return this._filterRef;
98
- }
99
- get groupEnabled() {
100
- return this.list.dataController.groupEnabled;
101
- }
102
- get hasFilterKeyword() {
103
- return this.list.filterInput && this.keywordVisible;
104
- }
105
- get hasStatus() {
106
- return this.list.status &&
107
- (this.list.sorting.isDefined || this.list.paging.enabled) &&
108
- (!this.reorderController.enabled || (this.reorderController.enabled && this.reorderController.status)) &&
109
- ((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);
110
- }
111
- get paginatorVisible() {
112
- return this.list.paging.enabled
113
- && !this.firstLoad
114
- && !this.list.scrollable
115
- && !this.list.emptyStateEnabled
116
- && this.list.dataController.visibleRowsCount > 0
117
- && this.list.paging.pages > 1;
118
- }
119
- set groupEnabled(value) {
120
- this.list.groupEnabled(value);
121
- }
122
- get filtersQuery() {
123
- return this.list.filtersQuery;
124
- }
125
- ngOnInit() {
126
- this._subscribeToRemoveRow();
127
- this._subscribeToGroupExpandStatusChange();
128
- }
129
- ngOnDestroy() {
130
- if (this.list) {
131
- this.list.destroy();
132
- }
133
- this._destroy.next();
134
- this._destroy.complete();
135
- }
136
- nextPage() {
137
- this.list.paging.goNext();
138
- }
139
- prevPage() {
140
- this.list.paging.goPrev();
141
- }
142
- firstPage() {
143
- this.list.paging.goFirst();
144
- }
145
- lastPage() {
146
- this.list.paging.goLast();
147
- }
148
- reload() {
149
- this.list.reload();
150
- }
151
- getData(trackBy) {
152
- return this.list.getData(trackBy);
153
- }
154
- hasData(trackBy) {
155
- return this.list.hasData(trackBy);
156
- }
157
- updateData(rows, trackBy) {
158
- return this.list.dataController.updateData(rows, trackBy);
159
- }
160
- replaceRow(row, trackBy) {
161
- return this.list.dataController.replaceData(row, trackBy);
162
- }
163
- updateSelectionConfig(config) {
164
- this.list.selection.updateConfig(config);
165
- }
166
- resetSelectionActions() {
167
- this.list.selection.resetActions();
168
- }
169
- enableSelection() {
170
- this.list.selection.enableSelection();
171
- }
172
- disableSelection() {
173
- this.list.selection.disableSelection();
174
- }
175
- removeData(data) {
176
- return this.list.dataController.removeData(data);
177
- }
178
- setHeading(heading) {
179
- this.list.heading = heading;
180
- }
181
- setSubheading(subheading) {
182
- this.list.subheading = subheading;
183
- }
184
- reorderStart() {
185
- this.reorderController.enableReorder();
186
- }
187
- reorderFinish() {
188
- this.reorderController.disableReorder();
189
- }
190
- setActions(actions) {
191
- if (actions) {
192
- this.list.actions.clearActions();
193
- this.list.actions.setActions(actions);
194
- }
195
- }
196
- filterReady() {
197
- this.list.filtersReady$.next();
198
- this._filterParamsReady = true;
199
- this._emitFiltersReadyEvent();
200
- }
201
- /**
202
- * Update visibility for specific column
203
- */
204
- columnVisibility(name, show) {
205
- this.columnsVisibility([{ name, show }]);
206
- }
207
- /**
208
- * Update visibility for list of specific columns
209
- */
210
- columnsVisibility(columns) {
211
- this.list.columns.updateVisibilityForCols(columns);
212
- }
213
- _emitFiltersReadyEvent() {
214
- if (!!this.filterRef && this._filterParamsReady) {
215
- this.filtersReady.emit();
216
- this.keywordVisible = this.filterRef.hasKeyword;
217
- this.cdRef.markForCheck();
218
- }
219
- }
220
- /**
221
- * Initialize config for list
222
- * @param config
223
- */
224
- _initWithConfig(config) {
225
- if (this.list) {
226
- this.list.destroy();
227
- }
228
- const defaultOpts = this._defaultOptions
229
- ? cloneDeep(this._defaultOptions)
230
- : {};
231
- const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
232
- if (listConfig.persist !== false) {
233
- this._restorePersistance(listConfig.persist);
234
- }
235
- this._updateCustomizeAction(listConfig.actions);
236
- this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
237
- this._waitFirstLoad();
238
- this._listenFiltersQueryChange();
239
- this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions, this.list.selection);
240
- if (this.listColumnDirectives) {
241
- this.list.tranformTemplatesToColumns(this.listColumnDirectives);
242
- }
243
- this._listenSortingChange();
244
- }
245
- /**
246
- * Find action with customize flag and re-declare click function for CustomizeColsDialog
247
- * @param actions
248
- */
249
- _updateCustomizeAction(actions) {
250
- const customizeAction = actions === null || actions === void 0 ? void 0 : actions.find((action) => action.customize);
251
- if (customizeAction) {
252
- const actionClickFn = customizeAction.click;
253
- customizeAction.click = () => {
254
- if (actionClickFn) {
255
- actionClickFn(null);
256
- }
257
- const dialogRef = this.dialog.open(CustomizeColsDialogComponent, {
258
- data: {
259
- columns: this.list.columns.columnsForDialog,
260
- changeFn: this.list.columns.changeFn,
261
- },
262
- });
263
- dialogRef
264
- .afterClosed()
265
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
266
- .subscribe((data) => {
267
- if (data) {
268
- this.list.columns.updateVisibilityForCols(data);
269
- this.cdRef.markForCheck();
270
- }
271
- });
272
- };
273
- }
274
- }
275
- /**
276
- * Update sorting in filter
277
- */
278
- _listenSortingChange() {
279
- this.list.sorting
280
- .sortingChanged$
281
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
282
- .subscribe((sort) => {
283
- this._filterRef.updateSort(sort);
284
- });
285
- }
286
- _subscribeToRemoveRow() {
287
- this.rowRemoved
288
- .pipe(takeUntil(this._destroy))
289
- .subscribe((row) => {
290
- this.list.dataController.removeData(row);
291
- });
292
- }
293
- _subscribeToGroupExpandStatusChange() {
294
- if (this.list.dataController.hasGroups) {
295
- this._groupExpandNotifier.expandStatusChange$
296
- .pipe(takeUntil(this._destroy))
297
- .subscribe((row) => {
298
- this.list.dataController.toggleRowGroup(row);
299
- });
300
- }
301
- }
302
- _waitFirstLoad() {
303
- this.list.loading$
304
- .pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
305
- .subscribe(() => {
306
- this.firstLoad = false;
307
- this.cdRef.markForCheck();
308
- });
309
- }
310
- _listenFiltersQueryChange() {
311
- this.list.filtersQuery$
312
- .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
313
- .subscribe((value) => {
314
- if (value) {
315
- const activeFilters = Object.keys(value).length;
316
- this.reorderController.setNunberOfActiveFilters(activeFilters);
317
- }
318
- });
319
- }
320
- _configMergeCustomizer(objValue, srcValue) {
321
- if (Array.isArray(objValue)) {
322
- return objValue;
323
- }
324
- }
325
- _restorePersistance(persistConfig) {
326
- const namespace = getNormalizedPath(this._location);
327
- this._persistance.setConfig(persistConfig, namespace, this._inDialog);
328
- }
329
- }
330
- FsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, deps: [{ token: i1.ReorderController }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i2.FsScrollService, optional: true }, { token: i3.MatDialogRef, optional: true }, { token: i4.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i5.SelectionDialog }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i6.GroupExpandNotifierService }, { token: i7.Router }, { token: i7.ActivatedRoute }, { token: i8.PersistanceController }, { token: i9.Location }], target: i0.ɵɵFactoryTarget.Component });
331
- 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: [
332
- GroupExpandNotifierService,
333
- PersistanceController,
334
- ReorderController,
335
- ], queries: [{ propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable || list.paging.loadMoreEnabled\">\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\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container \n [ngTemplateOutlet]=\"headingContainerTemplate\" \n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading .filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load .filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-header .heading{margin:0}.fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-header .fs-list-actions{white-space:nowrap;float:right}.fs-list-header .fs-list-actions .menu-button{width:36px;height:36px;line-height:36px}.fs-list-header .action-button{margin-left:5px}.fs-list-header .action-button:first-child{margin-left:0}.fs-list-header .mat-button{margin-top:0;margin-bottom:0;margin-right:0}.fs-list-table-container{width:100%;overflow:auto}::ng-deep .preview-block{position:fixed;height:30px;width:200px;background:grey;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .fs-list{display:block;width:100%}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead,::ng-deep .fs-list-table .fs-list-head{display:table-header-group}::ng-deep .fs-list-table thead th,::ng-deep .fs-list-table thead .fs-list-col,::ng-deep .fs-list-table .fs-list-head th,::ng-deep .fs-list-table .fs-list-head .fs-list-col{color:#999;padding:8px;font-weight:normal;color:#8f8f8f;font-size:85%}::ng-deep .fs-list-table thead th.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-col.fs-list-col-selection{width:1%;text-align:left}::ng-deep .fs-list-table thead th.sorting,::ng-deep .fs-list-table thead .fs-list-col.sorting,::ng-deep .fs-list-table .fs-list-head th.sorting,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting{cursor:pointer}::ng-deep .fs-list-table thead th.sorting:hover,::ng-deep .fs-list-table thead .fs-list-col.sorting:hover,::ng-deep .fs-list-table .fs-list-head th.sorting:hover,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting:hover{background-color:#f6f6f6}::ng-deep .fs-list-table thead th .wrap,::ng-deep .fs-list-table thead .fs-list-col .wrap,::ng-deep .fs-list-table .fs-list-head th .wrap,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap{display:inline-flex;vertical-align:middle;white-space:nowrap}::ng-deep .fs-list-table thead th .wrap mat-icon,::ng-deep .fs-list-table thead .fs-list-col .wrap mat-icon,::ng-deep .fs-list-table .fs-list-head th .wrap mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}::ng-deep .fs-list-table thead th .wrap .direction,::ng-deep .fs-list-table thead .fs-list-col .wrap .direction,::ng-deep .fs-list-table .fs-list-head th .wrap .direction,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap .direction{margin-left:5px}::ng-deep .fs-list-table thead th.sorting,::ng-deep .fs-list-table thead .fs-list-col.sorting,::ng-deep .fs-list-table .fs-list-head th.sorting,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting{background-image:none}::ng-deep .fs-list-table tbody,::ng-deep .fs-list-table .fs-list-body{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody.drag-hidden .drag-col,::ng-deep .fs-list-table .fs-list-body.drag-hidden .drag-col{opacity:0!important;cursor:default}::ng-deep .fs-list-table tbody.disabled,::ng-deep .fs-list-table .fs-list-body.disabled{opacity:.4;pointer-events:none}::ng-deep .fs-list-table tbody td,::ng-deep .fs-list-table tbody .fs-list-col,::ng-deep .fs-list-table .fs-list-body td,::ng-deep .fs-list-table .fs-list-body .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table tbody tr:hover td,::ng-deep .fs-list-table tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr:hover td,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table tbody tr:hover td,::ng-deep .fs-list-table tbody tr:hover .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row:hover td,::ng-deep .fs-list-table tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr:hover td,::ng-deep .fs-list-table .fs-list-body tr:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover td,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table tbody tr:first-child td,::ng-deep .fs-list-table .fs-list-body tr:first-child td{border-top:2px solid #ddd}::ng-deep .fs-list-table tbody tr:last-child td,::ng-deep .fs-list-table .fs-list-body tr:last-child td{border-bottom:2px solid #ddd}::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table thead .fs-list-row,::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table tbody .fs-list-row,::ng-deep .fs-list-table tfoot tr,::ng-deep .fs-list-table tfoot .fs-list-row,::ng-deep .fs-list-table .fs-list-head tr,::ng-deep .fs-list-table .fs-list-head .fs-list-row,::ng-deep .fs-list-table .fs-list-body tr,::ng-deep .fs-list-table .fs-list-body .fs-list-row,::ng-deep .fs-list-table .fs-list-footer tr,::ng-deep .fs-list-table .fs-list-footer .fs-list-row{display:table-row}::ng-deep .fs-list-table thead tr.drag-hidden,::ng-deep .fs-list-table thead .fs-list-row.drag-hidden,::ng-deep .fs-list-table tbody tr.drag-hidden,::ng-deep .fs-list-table tbody .fs-list-row.drag-hidden,::ng-deep .fs-list-table tfoot tr.drag-hidden,::ng-deep .fs-list-table tfoot .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-head tr.drag-hidden,::ng-deep .fs-list-table .fs-list-head .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-body tr.drag-hidden,::ng-deep .fs-list-table .fs-list-body .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-footer tr.drag-hidden,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.drag-hidden{display:none}::ng-deep .fs-list-table thead tr.multiple-selection,::ng-deep .fs-list-table thead .fs-list-row.multiple-selection,::ng-deep .fs-list-table tbody tr.multiple-selection,::ng-deep .fs-list-table tbody .fs-list-row.multiple-selection,::ng-deep .fs-list-table tfoot tr.multiple-selection,::ng-deep .fs-list-table tfoot .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-head tr.multiple-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-body tr.multiple-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-footer tr.multiple-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.multiple-selection{background-color:#2196f380}::ng-deep .fs-list-table thead tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table tbody tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table tfoot tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.multiple-selection .fs-list-col{background-color:#2196f380}::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table thead tr th,::ng-deep .fs-list-table thead tr .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row td,::ng-deep .fs-list-table thead .fs-list-row th,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col,::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table tbody tr th,::ng-deep .fs-list-table tbody tr .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row td,::ng-deep .fs-list-table tbody .fs-list-row th,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col,::ng-deep .fs-list-table tfoot tr td,::ng-deep .fs-list-table tfoot tr th,::ng-deep .fs-list-table tfoot tr .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row td,::ng-deep .fs-list-table tfoot .fs-list-row th,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr td,::ng-deep .fs-list-table .fs-list-head tr th,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row td,::ng-deep .fs-list-table .fs-list-head .fs-list-row th,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr td,::ng-deep .fs-list-table .fs-list-body tr th,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row td,::ng-deep .fs-list-table .fs-list-body .fs-list-row th,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr td,::ng-deep .fs-list-table .fs-list-footer tr th,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table thead tr td.drag-col,::ng-deep .fs-list-table thead tr th.drag-col,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col,::ng-deep .fs-list-table thead .fs-list-row td.drag-col,::ng-deep .fs-list-table thead .fs-list-row th.drag-col,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table tbody tr td.drag-col,::ng-deep .fs-list-table tbody tr th.drag-col,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table tfoot tr td.drag-col,::ng-deep .fs-list-table tfoot tr th.drag-col,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-head tr td.drag-col,::ng-deep .fs-list-table .fs-list-head tr th.drag-col,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-body tr td.drag-col,::ng-deep .fs-list-table .fs-list-body tr th.drag-col,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col{width:24px;text-align:center;cursor:grab}::ng-deep .fs-list-table thead tr td.drag-col.drag-disabled,::ng-deep .fs-list-table thead tr th.drag-col.drag-disabled,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr td.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr th.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr td.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr th.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col.drag-disabled{opacity:.4;cursor:no-drop}::ng-deep .fs-list-table thead tr td.drag-col mat-icon,::ng-deep .fs-list-table thead tr th.drag-col mat-icon,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tbody tr td.drag-col mat-icon,::ng-deep .fs-list-table tbody tr th.drag-col mat-icon,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr td.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr th.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col mat-icon{display:flex}::ng-deep .fs-list-table thead tr td.fs-list-col-selection,::ng-deep .fs-list-table thead tr th.fs-list-col-selection,::ng-deep .fs-list-table thead tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tbody tr td.fs-list-col-selection,::ng-deep .fs-list-table tbody tr th.fs-list-col-selection,::ng-deep .fs-list-table tbody tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr td.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr th.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.fs-list-col-selection{padding:10px}::ng-deep .fs-list-table thead tr td.row-actions,::ng-deep .fs-list-table thead tr th.row-actions,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions,::ng-deep .fs-list-table thead .fs-list-row td.row-actions,::ng-deep .fs-list-table thead .fs-list-row th.row-actions,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table tbody tr td.row-actions,::ng-deep .fs-list-table tbody tr th.row-actions,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table tfoot tr td.row-actions,::ng-deep .fs-list-table tfoot tr th.row-actions,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-head tr td.row-actions,::ng-deep .fs-list-table .fs-list-head tr th.row-actions,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-body tr td.row-actions,::ng-deep .fs-list-table .fs-list-body tr th.row-actions,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions,::ng-deep .fs-list-table .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-table thead tr td.row-actions .row-inline-action,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action{margin-left:12px;display:inline-block}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child{margin-left:0}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr td.row-actions .row-menu-action,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr th.row-actions .row-menu-action,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr td.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr th.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr td.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr th.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .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-table thead tr td.left,::ng-deep .fs-list-table thead tr th.left,::ng-deep .fs-list-table thead tr .fs-list-col.left,::ng-deep .fs-list-table thead .fs-list-row td.left,::ng-deep .fs-list-table thead .fs-list-row th.left,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table tbody tr td.left,::ng-deep .fs-list-table tbody tr th.left,::ng-deep .fs-list-table tbody tr .fs-list-col.left,::ng-deep .fs-list-table tbody .fs-list-row td.left,::ng-deep .fs-list-table tbody .fs-list-row th.left,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table tfoot tr td.left,::ng-deep .fs-list-table tfoot tr th.left,::ng-deep .fs-list-table tfoot tr .fs-list-col.left,::ng-deep .fs-list-table tfoot .fs-list-row td.left,::ng-deep .fs-list-table tfoot .fs-list-row th.left,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-head tr td.left,::ng-deep .fs-list-table .fs-list-head tr th.left,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-body tr td.left,::ng-deep .fs-list-table .fs-list-body tr th.left,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-footer tr td.left,::ng-deep .fs-list-table .fs-list-footer tr th.left,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.left{text-align:left}::ng-deep .fs-list-table thead tr td.center,::ng-deep .fs-list-table thead tr th.center,::ng-deep .fs-list-table thead tr .fs-list-col.center,::ng-deep .fs-list-table thead .fs-list-row td.center,::ng-deep .fs-list-table thead .fs-list-row th.center,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table tbody tr td.center,::ng-deep .fs-list-table tbody tr th.center,::ng-deep .fs-list-table tbody tr .fs-list-col.center,::ng-deep .fs-list-table tbody .fs-list-row td.center,::ng-deep .fs-list-table tbody .fs-list-row th.center,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table tfoot tr td.center,::ng-deep .fs-list-table tfoot tr th.center,::ng-deep .fs-list-table tfoot tr .fs-list-col.center,::ng-deep .fs-list-table tfoot .fs-list-row td.center,::ng-deep .fs-list-table tfoot .fs-list-row th.center,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-head tr td.center,::ng-deep .fs-list-table .fs-list-head tr th.center,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-body tr td.center,::ng-deep .fs-list-table .fs-list-body tr th.center,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-footer tr td.center,::ng-deep .fs-list-table .fs-list-footer tr th.center,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.center{text-align:center}::ng-deep .fs-list-table thead tr td.right,::ng-deep .fs-list-table thead tr th.right,::ng-deep .fs-list-table thead tr .fs-list-col.right,::ng-deep .fs-list-table thead .fs-list-row td.right,::ng-deep .fs-list-table thead .fs-list-row th.right,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table tbody tr td.right,::ng-deep .fs-list-table tbody tr th.right,::ng-deep .fs-list-table tbody tr .fs-list-col.right,::ng-deep .fs-list-table tbody .fs-list-row td.right,::ng-deep .fs-list-table tbody .fs-list-row th.right,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table tfoot tr td.right,::ng-deep .fs-list-table tfoot tr th.right,::ng-deep .fs-list-table tfoot tr .fs-list-col.right,::ng-deep .fs-list-table tfoot .fs-list-row td.right,::ng-deep .fs-list-table tfoot .fs-list-row th.right,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-head tr td.right,::ng-deep .fs-list-table .fs-list-head tr th.right,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-body tr td.right,::ng-deep .fs-list-table .fs-list-body tr th.right,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-footer tr td.right,::ng-deep .fs-list-table .fs-list-footer tr th.right,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.right{text-align:right}::ng-deep .fs-list-table thead tr.draggable,::ng-deep .fs-list-table thead .fs-list-row.draggable,::ng-deep .fs-list-table tbody tr.draggable,::ng-deep .fs-list-table tbody .fs-list-row.draggable,::ng-deep .fs-list-table tfoot tr.draggable,::ng-deep .fs-list-table tfoot .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-head tr.draggable,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-body tr.draggable,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-footer tr.draggable,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable{position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px;background-color:#f6f6f6}::ng-deep .fs-list-table thead tr.draggable td,::ng-deep .fs-list-table thead tr.draggable .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row.draggable td,::ng-deep .fs-list-table thead .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table tbody tr.draggable td,::ng-deep .fs-list-table tbody tr.draggable .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row.draggable td,::ng-deep .fs-list-table tbody .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table tfoot tr.draggable td,::ng-deep .fs-list-table tfoot tr.draggable .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row.draggable td,::ng-deep .fs-list-table tfoot .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr.draggable td,::ng-deep .fs-list-table .fs-list-head tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr.draggable td,::ng-deep .fs-list-table .fs-list-body tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr.draggable td,::ng-deep .fs-list-table .fs-list-footer tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable .fs-list-col{border:none}::ng-deep .fs-list-table .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table 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: i10.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { type: i11.FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "scrollable", "firstLoad"] }, { type: i12.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection"] }, { type: i13.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved"] }, { type: i14.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection"] }, { type: i15.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { type: i16.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { type: i17.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { type: i18.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { type: i19.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, decorators: [{
337
- type: Component,
338
- args: [{
339
- selector: 'fs-list',
340
- templateUrl: 'list.component.html',
341
- styleUrls: ['./list.component.scss'],
342
- changeDetection: ChangeDetectionStrategy.OnPush,
343
- providers: [
344
- GroupExpandNotifierService,
345
- PersistanceController,
346
- ReorderController,
347
- ]
348
- }]
349
- }], ctorParameters: function () { return [{ type: i1.ReorderController }, { type: undefined, decorators: [{
350
- type: Optional
351
- }, {
352
- type: Inject,
353
- args: [FS_LIST_DEFAULT_CONFIG]
354
- }] }, { type: i2.FsScrollService, decorators: [{
355
- type: Optional
356
- }] }, { type: i3.MatDialogRef, decorators: [{
357
- type: Optional
358
- }] }, { type: i4.DrawerRef, decorators: [{
359
- type: Optional
360
- }] }, { type: i0.ElementRef }, { type: i5.SelectionDialog }, { type: i3.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i6.GroupExpandNotifierService }, { type: i7.Router }, { type: i7.ActivatedRoute }, { type: i8.PersistanceController }, { type: i9.Location }]; }, propDecorators: { classFsList: [{
361
- type: HostBinding,
362
- args: ['class.fs-list']
363
- }], config: [{
364
- type: Input,
365
- args: ['config']
366
- }], loaderLines: [{
367
- type: Input
368
- }], filtersReady: [{
369
- type: Output
370
- }], filterReference: [{
371
- type: ViewChild,
372
- args: [FilterComponent]
373
- }], columnTemplates: [{
374
- type: ContentChildren,
375
- args: [FsListColumnDirective]
376
- }], _emptyStateTemplate: [{
377
- type: ContentChild,
378
- args: [FsListEmptyStateDirective, { read: TemplateRef }]
379
- }], headingTemplate: [{
380
- type: ContentChild,
381
- args: [FsListHeadingDirective, { read: TemplateRef }]
382
- }], headingContainerTemplate: [{
383
- type: ContentChild,
384
- args: [FsListHeadingContainerDirective, { read: TemplateRef }]
385
- }], subheadingTemplate: [{
386
- type: ContentChild,
387
- args: [FsListSubheadingDirective, { read: TemplateRef }]
388
- }] } });
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, QueryList, ViewChild, HostBinding, Optional, ContentChild, TemplateRef, Output, } from '@angular/core';
2
+ import { ActivatedRoute, Router } from '@angular/router';
3
+ import { Location } from '@angular/common';
4
+ import { MatDialog, MatDialogRef } from '@angular/material/dialog';
5
+ import { Subject } from 'rxjs';
6
+ import { filter, skip, take, takeUntil } from 'rxjs/operators';
7
+ import { FsScrollService } from '@firestitch/scroll';
8
+ import { FilterComponent } from '@firestitch/filter';
9
+ import { SelectionDialog } from '@firestitch/selection';
10
+ import { getNormalizedPath } from '@firestitch/common';
11
+ import { DrawerRef } from '@firestitch/drawer';
12
+ import { cloneDeep, mergeWith } from 'lodash-es';
13
+ import { List } from '../../classes/list-controller';
14
+ import { ReorderController } from '../../classes/reorder-controller';
15
+ import { FsListColumnDirective } from '../../directives/column/column.directive';
16
+ import { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';
17
+ import { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';
18
+ import { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';
19
+ import { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';
20
+ import { PersistanceController } from '../../classes/persistance-controller';
21
+ import { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from '../../directives';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "../../classes/reorder-controller";
24
+ import * as i2 from "@firestitch/scroll";
25
+ import * as i3 from "@angular/material/dialog";
26
+ import * as i4 from "@firestitch/drawer";
27
+ import * as i5 from "@firestitch/selection";
28
+ import * as i6 from "../../services/group-expand-notifier.service";
29
+ import * as i7 from "@angular/router";
30
+ import * as i8 from "../../classes/persistance-controller";
31
+ import * as i9 from "@angular/common";
32
+ import * as i10 from "@firestitch/filter";
33
+ import * as i11 from "../status/status.component";
34
+ import * as i12 from "../head/head.component";
35
+ import * as i13 from "../body/body.component";
36
+ import * as i14 from "../footer/footer.component";
37
+ import * as i15 from "../loader/loader.component";
38
+ import * as i16 from "../pagination/pagination.component";
39
+ import * as i17 from "../../directives/content-init/content-init.directive";
40
+ import * as i18 from "../../directives/draggable-list/draggable-list.directive";
41
+ import * as i19 from "../../directives/footer/footer.directive";
42
+ export class FsListComponent {
43
+ constructor(reorderController, _defaultOptions, fsScroll, _dialogRef, _drawerRef, _el, selectionDialog, dialog, cdRef, _groupExpandNotifier, _router, _route, _persistance, _location) {
44
+ this.reorderController = reorderController;
45
+ this._defaultOptions = _defaultOptions;
46
+ this.fsScroll = fsScroll;
47
+ this._dialogRef = _dialogRef;
48
+ this._drawerRef = _drawerRef;
49
+ this._el = _el;
50
+ this.selectionDialog = selectionDialog;
51
+ this.dialog = dialog;
52
+ this.cdRef = cdRef;
53
+ this._groupExpandNotifier = _groupExpandNotifier;
54
+ this._router = _router;
55
+ this._route = _route;
56
+ this._persistance = _persistance;
57
+ this._location = _location;
58
+ this.classFsList = true;
59
+ this.loaderLines = 3;
60
+ this.filtersReady = new EventEmitter();
61
+ this.keywordVisible = true;
62
+ // Event will fired if action remove: true will clicked
63
+ this.rowRemoved = new EventEmitter();
64
+ this.firstLoad = true;
65
+ this._filterParamsReady = false;
66
+ this._inDialog = !!this._dialogRef || !!this._drawerRef;
67
+ this._destroy = new Subject();
68
+ }
69
+ set config(config) {
70
+ this._initWithConfig(config);
71
+ }
72
+ set filterReference(component) {
73
+ this._filterRef = component;
74
+ this.list.actions.setFilterRef(component);
75
+ this._emitFiltersReadyEvent();
76
+ }
77
+ /**
78
+ * Set columns to config
79
+ * Create Column Model instances
80
+ *
81
+ */
82
+ set columnTemplates(listColumnDirectives) {
83
+ this.listColumnDirectives = listColumnDirectives;
84
+ if (this.list) {
85
+ this.list.tranformTemplatesToColumns(listColumnDirectives);
86
+ }
87
+ }
88
+ set _emptyStateTemplate(template) {
89
+ if (this.list) {
90
+ this.list.emptyStateTemplate = template;
91
+ }
92
+ }
93
+ /**
94
+ * Return reference for filter
95
+ */
96
+ get filterRef() {
97
+ return this._filterRef;
98
+ }
99
+ get groupEnabled() {
100
+ return this.list.dataController.groupEnabled;
101
+ }
102
+ get hasFilterKeyword() {
103
+ return this.list.filterInput && this.keywordVisible;
104
+ }
105
+ get hasStatus() {
106
+ return this.list.status &&
107
+ (this.list.sorting.isDefined || this.list.paging.enabled) &&
108
+ (!this.reorderController.enabled || (this.reorderController.enabled && this.reorderController.status)) &&
109
+ ((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);
110
+ }
111
+ get paginatorVisible() {
112
+ return this.list.paging.enabled
113
+ && !this.firstLoad
114
+ && !this.list.scrollable
115
+ && !this.list.emptyStateEnabled
116
+ && this.list.dataController.visibleRowsCount > 0
117
+ && this.list.paging.pages > 1;
118
+ }
119
+ set groupEnabled(value) {
120
+ this.list.groupEnabled(value);
121
+ }
122
+ get filtersQuery() {
123
+ return this.list.filtersQuery;
124
+ }
125
+ ngOnInit() {
126
+ this._subscribeToRemoveRow();
127
+ this._subscribeToGroupExpandStatusChange();
128
+ }
129
+ ngOnDestroy() {
130
+ if (this.list) {
131
+ this.list.destroy();
132
+ }
133
+ this._destroy.next();
134
+ this._destroy.complete();
135
+ }
136
+ nextPage() {
137
+ this.list.paging.goNext();
138
+ }
139
+ prevPage() {
140
+ this.list.paging.goPrev();
141
+ }
142
+ firstPage() {
143
+ this.list.paging.goFirst();
144
+ }
145
+ lastPage() {
146
+ this.list.paging.goLast();
147
+ }
148
+ reload() {
149
+ this.list.reload();
150
+ }
151
+ getData(trackBy) {
152
+ return this.list.getData(trackBy);
153
+ }
154
+ hasData(trackBy) {
155
+ return this.list.hasData(trackBy);
156
+ }
157
+ updateData(rows, trackBy) {
158
+ return this.list.dataController.updateData(rows, trackBy);
159
+ }
160
+ replaceRow(row, trackBy) {
161
+ return this.list.dataController.replaceData(row, trackBy);
162
+ }
163
+ updateSelectionConfig(config) {
164
+ this.list.selection.updateConfig(config);
165
+ }
166
+ resetSelectionActions() {
167
+ this.list.selection.resetActions();
168
+ }
169
+ enableSelection() {
170
+ this.list.selection.enableSelection();
171
+ }
172
+ disableSelection() {
173
+ this.list.selection.disableSelection();
174
+ }
175
+ removeData(data) {
176
+ return this.list.dataController.removeData(data);
177
+ }
178
+ setHeading(heading) {
179
+ this.list.heading = heading;
180
+ }
181
+ setSubheading(subheading) {
182
+ this.list.subheading = subheading;
183
+ }
184
+ reorderStart() {
185
+ this.reorderController.enableReorder();
186
+ }
187
+ reorderFinish() {
188
+ this.reorderController.disableReorder();
189
+ }
190
+ setActions(actions) {
191
+ if (actions) {
192
+ this.list.actions.clearActions();
193
+ this.list.actions.setActions(actions);
194
+ }
195
+ }
196
+ filterReady() {
197
+ this.list.filtersReady$.next();
198
+ this._filterParamsReady = true;
199
+ this._emitFiltersReadyEvent();
200
+ }
201
+ /**
202
+ * Update visibility for specific column
203
+ */
204
+ columnVisibility(name, show) {
205
+ this.columnsVisibility([{ name, show }]);
206
+ }
207
+ /**
208
+ * Update visibility for list of specific columns
209
+ */
210
+ columnsVisibility(columns) {
211
+ this.list.columns.updateVisibilityForCols(columns);
212
+ }
213
+ _emitFiltersReadyEvent() {
214
+ if (!!this.filterRef && this._filterParamsReady) {
215
+ this.filtersReady.emit();
216
+ this.keywordVisible = this.filterRef.hasKeyword;
217
+ this.cdRef.markForCheck();
218
+ }
219
+ }
220
+ /**
221
+ * Initialize config for list
222
+ * @param config
223
+ */
224
+ _initWithConfig(config) {
225
+ if (this.list) {
226
+ this.list.destroy();
227
+ }
228
+ const defaultOpts = this._defaultOptions
229
+ ? cloneDeep(this._defaultOptions)
230
+ : {};
231
+ const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
232
+ if (listConfig.persist !== false) {
233
+ this._restorePersistance(listConfig.persist);
234
+ }
235
+ this._updateCustomizeAction(listConfig.actions);
236
+ this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
237
+ this._waitFirstLoad();
238
+ this._listenFiltersQueryChange();
239
+ this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions, this.list.selection);
240
+ if (this.listColumnDirectives) {
241
+ this.list.tranformTemplatesToColumns(this.listColumnDirectives);
242
+ }
243
+ this._listenSortingChange();
244
+ }
245
+ /**
246
+ * Find action with customize flag and re-declare click function for CustomizeColsDialog
247
+ * @param actions
248
+ */
249
+ _updateCustomizeAction(actions) {
250
+ const customizeAction = actions === null || actions === void 0 ? void 0 : actions.find((action) => action.customize);
251
+ if (customizeAction) {
252
+ const actionClickFn = customizeAction.click;
253
+ customizeAction.click = () => {
254
+ if (actionClickFn) {
255
+ actionClickFn(null);
256
+ }
257
+ const dialogRef = this.dialog.open(CustomizeColsDialogComponent, {
258
+ data: {
259
+ columns: this.list.columns.columnsForDialog,
260
+ changeFn: this.list.columns.changeFn,
261
+ },
262
+ });
263
+ dialogRef
264
+ .afterClosed()
265
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
266
+ .subscribe((data) => {
267
+ if (data) {
268
+ this.list.columns.updateVisibilityForCols(data);
269
+ this.cdRef.markForCheck();
270
+ }
271
+ });
272
+ };
273
+ }
274
+ }
275
+ /**
276
+ * Update sorting in filter
277
+ */
278
+ _listenSortingChange() {
279
+ this.list.sorting
280
+ .sortingChanged$
281
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
282
+ .subscribe((sort) => {
283
+ this._filterRef.updateSort(sort);
284
+ });
285
+ }
286
+ _subscribeToRemoveRow() {
287
+ this.rowRemoved
288
+ .pipe(takeUntil(this._destroy))
289
+ .subscribe((row) => {
290
+ this.list.dataController.removeData(row);
291
+ });
292
+ }
293
+ _subscribeToGroupExpandStatusChange() {
294
+ if (this.list.dataController.hasGroups) {
295
+ this._groupExpandNotifier.expandStatusChange$
296
+ .pipe(takeUntil(this._destroy))
297
+ .subscribe((row) => {
298
+ this.list.dataController.toggleRowGroup(row);
299
+ });
300
+ }
301
+ }
302
+ _waitFirstLoad() {
303
+ this.list.loading$
304
+ .pipe(skip(1), filter((value) => value === false), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
305
+ .subscribe(() => {
306
+ this.firstLoad = false;
307
+ this.cdRef.markForCheck();
308
+ });
309
+ }
310
+ _listenFiltersQueryChange() {
311
+ this.list.filtersQuery$
312
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
313
+ .subscribe((value) => {
314
+ if (value) {
315
+ const activeFilters = Object.keys(value).length;
316
+ this.reorderController.setNunberOfActiveFilters(activeFilters);
317
+ }
318
+ });
319
+ }
320
+ _configMergeCustomizer(objValue, srcValue) {
321
+ if (Array.isArray(objValue)) {
322
+ return objValue;
323
+ }
324
+ }
325
+ _restorePersistance(persistConfig) {
326
+ const namespace = getNormalizedPath(this._location);
327
+ this._persistance.setConfig(persistConfig, namespace, this._inDialog);
328
+ }
329
+ }
330
+ FsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, deps: [{ token: i1.ReorderController }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i2.FsScrollService, optional: true }, { token: i3.MatDialogRef, optional: true }, { token: i4.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i5.SelectionDialog }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i6.GroupExpandNotifierService }, { token: i7.Router }, { token: i7.ActivatedRoute }, { token: i8.PersistanceController }, { token: i9.Location }], target: i0.ɵɵFactoryTarget.Component });
331
+ 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: [
332
+ GroupExpandNotifierService,
333
+ PersistanceController,
334
+ ReorderController,
335
+ ], queries: [{ propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable || list.paging.loadMoreEnabled\">\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\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container \n [ngTemplateOutlet]=\"headingContainerTemplate\" \n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading .filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load .filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-header .heading{margin:0}.fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-header .fs-list-actions{white-space:nowrap;float:right}.fs-list-header .fs-list-actions .menu-button{width:36px;height:36px;line-height:36px}.fs-list-header .action-button{margin-left:5px}.fs-list-header .action-button:first-child{margin-left:0}.fs-list-header .mat-button{margin-top:0;margin-bottom:0;margin-right:0}.fs-list-table-container{width:100%;overflow:auto}::ng-deep .preview-block{position:fixed;height:30px;width:200px;background:grey;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .fs-list{display:block;width:100%}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead,::ng-deep .fs-list-table .fs-list-head{display:table-header-group}::ng-deep .fs-list-table thead th,::ng-deep .fs-list-table thead .fs-list-col,::ng-deep .fs-list-table .fs-list-head th,::ng-deep .fs-list-table .fs-list-head .fs-list-col{color:#999;padding:8px;font-weight:normal;color:#8f8f8f;font-size:85%}::ng-deep .fs-list-table thead th.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-col.fs-list-col-selection{width:1%;text-align:left}::ng-deep .fs-list-table thead th.sorting,::ng-deep .fs-list-table thead .fs-list-col.sorting,::ng-deep .fs-list-table .fs-list-head th.sorting,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting{cursor:pointer}::ng-deep .fs-list-table thead th.sorting:hover,::ng-deep .fs-list-table thead .fs-list-col.sorting:hover,::ng-deep .fs-list-table .fs-list-head th.sorting:hover,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting:hover{background-color:#f6f6f6}::ng-deep .fs-list-table thead th .wrap,::ng-deep .fs-list-table thead .fs-list-col .wrap,::ng-deep .fs-list-table .fs-list-head th .wrap,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap{display:inline-flex;vertical-align:middle;white-space:nowrap}::ng-deep .fs-list-table thead th .wrap mat-icon,::ng-deep .fs-list-table thead .fs-list-col .wrap mat-icon,::ng-deep .fs-list-table .fs-list-head th .wrap mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}::ng-deep .fs-list-table thead th .wrap .direction,::ng-deep .fs-list-table thead .fs-list-col .wrap .direction,::ng-deep .fs-list-table .fs-list-head th .wrap .direction,::ng-deep .fs-list-table .fs-list-head .fs-list-col .wrap .direction{margin-left:5px}::ng-deep .fs-list-table thead th.sorting,::ng-deep .fs-list-table thead .fs-list-col.sorting,::ng-deep .fs-list-table .fs-list-head th.sorting,::ng-deep .fs-list-table .fs-list-head .fs-list-col.sorting{background-image:none}::ng-deep .fs-list-table tbody,::ng-deep .fs-list-table .fs-list-body{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody.drag-hidden .drag-col,::ng-deep .fs-list-table .fs-list-body.drag-hidden .drag-col{opacity:0!important;cursor:default}::ng-deep .fs-list-table tbody.disabled,::ng-deep .fs-list-table .fs-list-body.disabled{opacity:.4;pointer-events:none}::ng-deep .fs-list-table tbody td,::ng-deep .fs-list-table tbody .fs-list-col,::ng-deep .fs-list-table .fs-list-body td,::ng-deep .fs-list-table .fs-list-body .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table tbody tr:hover td,::ng-deep .fs-list-table tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr:hover td,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table tbody tr:hover td,::ng-deep .fs-list-table tbody tr:hover .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row:hover td,::ng-deep .fs-list-table tbody .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr:hover td,::ng-deep .fs-list-table .fs-list-body tr:hover .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover td,::ng-deep .fs-list-table .fs-list-body .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table tbody tr:first-child td,::ng-deep .fs-list-table .fs-list-body tr:first-child td{border-top:2px solid #ddd}::ng-deep .fs-list-table tbody tr:last-child td,::ng-deep .fs-list-table .fs-list-body tr:last-child td{border-bottom:2px solid #ddd}::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table thead .fs-list-row,::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table tbody .fs-list-row,::ng-deep .fs-list-table tfoot tr,::ng-deep .fs-list-table tfoot .fs-list-row,::ng-deep .fs-list-table .fs-list-head tr,::ng-deep .fs-list-table .fs-list-head .fs-list-row,::ng-deep .fs-list-table .fs-list-body tr,::ng-deep .fs-list-table .fs-list-body .fs-list-row,::ng-deep .fs-list-table .fs-list-footer tr,::ng-deep .fs-list-table .fs-list-footer .fs-list-row{display:table-row}::ng-deep .fs-list-table thead tr.drag-hidden,::ng-deep .fs-list-table thead .fs-list-row.drag-hidden,::ng-deep .fs-list-table tbody tr.drag-hidden,::ng-deep .fs-list-table tbody .fs-list-row.drag-hidden,::ng-deep .fs-list-table tfoot tr.drag-hidden,::ng-deep .fs-list-table tfoot .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-head tr.drag-hidden,::ng-deep .fs-list-table .fs-list-head .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-body tr.drag-hidden,::ng-deep .fs-list-table .fs-list-body .fs-list-row.drag-hidden,::ng-deep .fs-list-table .fs-list-footer tr.drag-hidden,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.drag-hidden{display:none}::ng-deep .fs-list-table thead tr.multiple-selection,::ng-deep .fs-list-table thead .fs-list-row.multiple-selection,::ng-deep .fs-list-table tbody tr.multiple-selection,::ng-deep .fs-list-table tbody .fs-list-row.multiple-selection,::ng-deep .fs-list-table tfoot tr.multiple-selection,::ng-deep .fs-list-table tfoot .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-head tr.multiple-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-body tr.multiple-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row.multiple-selection,::ng-deep .fs-list-table .fs-list-footer tr.multiple-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.multiple-selection{background-color:#2196f380}::ng-deep .fs-list-table thead tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table tbody tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table tfoot tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr.multiple-selection .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.multiple-selection .fs-list-col{background-color:#2196f380}::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table thead tr th,::ng-deep .fs-list-table thead tr .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row td,::ng-deep .fs-list-table thead .fs-list-row th,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col,::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table tbody tr th,::ng-deep .fs-list-table tbody tr .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row td,::ng-deep .fs-list-table tbody .fs-list-row th,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col,::ng-deep .fs-list-table tfoot tr td,::ng-deep .fs-list-table tfoot tr th,::ng-deep .fs-list-table tfoot tr .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row td,::ng-deep .fs-list-table tfoot .fs-list-row th,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr td,::ng-deep .fs-list-table .fs-list-head tr th,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row td,::ng-deep .fs-list-table .fs-list-head .fs-list-row th,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr td,::ng-deep .fs-list-table .fs-list-body tr th,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row td,::ng-deep .fs-list-table .fs-list-body .fs-list-row th,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr td,::ng-deep .fs-list-table .fs-list-footer tr th,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table thead tr td.drag-col,::ng-deep .fs-list-table thead tr th.drag-col,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col,::ng-deep .fs-list-table thead .fs-list-row td.drag-col,::ng-deep .fs-list-table thead .fs-list-row th.drag-col,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table tbody tr td.drag-col,::ng-deep .fs-list-table tbody tr th.drag-col,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table tfoot tr td.drag-col,::ng-deep .fs-list-table tfoot tr th.drag-col,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-head tr td.drag-col,::ng-deep .fs-list-table .fs-list-head tr th.drag-col,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-body tr td.drag-col,::ng-deep .fs-list-table .fs-list-body tr th.drag-col,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col{width:24px;text-align:center;cursor:grab}::ng-deep .fs-list-table thead tr td.drag-col.drag-disabled,::ng-deep .fs-list-table thead tr th.drag-col.drag-disabled,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr td.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr th.drag-col.drag-disabled,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr td.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr th.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col.drag-disabled,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col.drag-disabled{opacity:.4;cursor:no-drop}::ng-deep .fs-list-table thead tr td.drag-col mat-icon,::ng-deep .fs-list-table thead tr th.drag-col mat-icon,::ng-deep .fs-list-table thead tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tbody tr td.drag-col mat-icon,::ng-deep .fs-list-table tbody tr th.drag-col mat-icon,::ng-deep .fs-list-table tbody tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr td.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr th.drag-col mat-icon,::ng-deep .fs-list-table tfoot tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.drag-col mat-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.drag-col mat-icon{display:flex}::ng-deep .fs-list-table thead tr td.fs-list-col-selection,::ng-deep .fs-list-table thead tr th.fs-list-col-selection,::ng-deep .fs-list-table thead tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tbody tr td.fs-list-col-selection,::ng-deep .fs-list-table tbody tr th.fs-list-col-selection,::ng-deep .fs-list-table tbody tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr td.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr th.fs-list-col-selection,::ng-deep .fs-list-table tfoot tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.fs-list-col-selection,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.fs-list-col-selection{padding:10px}::ng-deep .fs-list-table thead tr td.row-actions,::ng-deep .fs-list-table thead tr th.row-actions,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions,::ng-deep .fs-list-table thead .fs-list-row td.row-actions,::ng-deep .fs-list-table thead .fs-list-row th.row-actions,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table tbody tr td.row-actions,::ng-deep .fs-list-table tbody tr th.row-actions,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table tfoot tr td.row-actions,::ng-deep .fs-list-table tfoot tr th.row-actions,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-head tr td.row-actions,::ng-deep .fs-list-table .fs-list-head tr th.row-actions,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-body tr td.row-actions,::ng-deep .fs-list-table .fs-list-body tr th.row-actions,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions,::ng-deep .fs-list-table .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-table thead tr td.row-actions .row-inline-action,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action{margin-left:12px;display:inline-block}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action:first-child,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action:first-child{margin-left:0}::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr td.row-actions .row-menu-action,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr th.row-actions .row-menu-action,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr td.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr th.row-actions .row-menu-action,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr td.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr th.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.row-actions .row-menu-action,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-icon,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-fab,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.row-actions .row-inline-action-mini-fab,::ng-deep .fs-list-table .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-table thead tr td.left,::ng-deep .fs-list-table thead tr th.left,::ng-deep .fs-list-table thead tr .fs-list-col.left,::ng-deep .fs-list-table thead .fs-list-row td.left,::ng-deep .fs-list-table thead .fs-list-row th.left,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table tbody tr td.left,::ng-deep .fs-list-table tbody tr th.left,::ng-deep .fs-list-table tbody tr .fs-list-col.left,::ng-deep .fs-list-table tbody .fs-list-row td.left,::ng-deep .fs-list-table tbody .fs-list-row th.left,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table tfoot tr td.left,::ng-deep .fs-list-table tfoot tr th.left,::ng-deep .fs-list-table tfoot tr .fs-list-col.left,::ng-deep .fs-list-table tfoot .fs-list-row td.left,::ng-deep .fs-list-table tfoot .fs-list-row th.left,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-head tr td.left,::ng-deep .fs-list-table .fs-list-head tr th.left,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-body tr td.left,::ng-deep .fs-list-table .fs-list-body tr th.left,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.left,::ng-deep .fs-list-table .fs-list-footer tr td.left,::ng-deep .fs-list-table .fs-list-footer tr th.left,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.left,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.left{text-align:left}::ng-deep .fs-list-table thead tr td.center,::ng-deep .fs-list-table thead tr th.center,::ng-deep .fs-list-table thead tr .fs-list-col.center,::ng-deep .fs-list-table thead .fs-list-row td.center,::ng-deep .fs-list-table thead .fs-list-row th.center,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table tbody tr td.center,::ng-deep .fs-list-table tbody tr th.center,::ng-deep .fs-list-table tbody tr .fs-list-col.center,::ng-deep .fs-list-table tbody .fs-list-row td.center,::ng-deep .fs-list-table tbody .fs-list-row th.center,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table tfoot tr td.center,::ng-deep .fs-list-table tfoot tr th.center,::ng-deep .fs-list-table tfoot tr .fs-list-col.center,::ng-deep .fs-list-table tfoot .fs-list-row td.center,::ng-deep .fs-list-table tfoot .fs-list-row th.center,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-head tr td.center,::ng-deep .fs-list-table .fs-list-head tr th.center,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-body tr td.center,::ng-deep .fs-list-table .fs-list-body tr th.center,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.center,::ng-deep .fs-list-table .fs-list-footer tr td.center,::ng-deep .fs-list-table .fs-list-footer tr th.center,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.center,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.center{text-align:center}::ng-deep .fs-list-table thead tr td.right,::ng-deep .fs-list-table thead tr th.right,::ng-deep .fs-list-table thead tr .fs-list-col.right,::ng-deep .fs-list-table thead .fs-list-row td.right,::ng-deep .fs-list-table thead .fs-list-row th.right,::ng-deep .fs-list-table thead .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table tbody tr td.right,::ng-deep .fs-list-table tbody tr th.right,::ng-deep .fs-list-table tbody tr .fs-list-col.right,::ng-deep .fs-list-table tbody .fs-list-row td.right,::ng-deep .fs-list-table tbody .fs-list-row th.right,::ng-deep .fs-list-table tbody .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table tfoot tr td.right,::ng-deep .fs-list-table tfoot tr th.right,::ng-deep .fs-list-table tfoot tr .fs-list-col.right,::ng-deep .fs-list-table tfoot .fs-list-row td.right,::ng-deep .fs-list-table tfoot .fs-list-row th.right,::ng-deep .fs-list-table tfoot .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-head tr td.right,::ng-deep .fs-list-table .fs-list-head tr th.right,::ng-deep .fs-list-table .fs-list-head tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-head .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-body tr td.right,::ng-deep .fs-list-table .fs-list-body tr th.right,::ng-deep .fs-list-table .fs-list-body tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-body .fs-list-row .fs-list-col.right,::ng-deep .fs-list-table .fs-list-footer tr td.right,::ng-deep .fs-list-table .fs-list-footer tr th.right,::ng-deep .fs-list-table .fs-list-footer tr .fs-list-col.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row td.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row th.right,::ng-deep .fs-list-table .fs-list-footer .fs-list-row .fs-list-col.right{text-align:right}::ng-deep .fs-list-table thead tr.draggable,::ng-deep .fs-list-table thead .fs-list-row.draggable,::ng-deep .fs-list-table tbody tr.draggable,::ng-deep .fs-list-table tbody .fs-list-row.draggable,::ng-deep .fs-list-table tfoot tr.draggable,::ng-deep .fs-list-table tfoot .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-head tr.draggable,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-body tr.draggable,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable,::ng-deep .fs-list-table .fs-list-footer tr.draggable,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable{position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px;background-color:#f6f6f6}::ng-deep .fs-list-table thead tr.draggable td,::ng-deep .fs-list-table thead tr.draggable .fs-list-col,::ng-deep .fs-list-table thead .fs-list-row.draggable td,::ng-deep .fs-list-table thead .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table tbody tr.draggable td,::ng-deep .fs-list-table tbody tr.draggable .fs-list-col,::ng-deep .fs-list-table tbody .fs-list-row.draggable td,::ng-deep .fs-list-table tbody .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table tfoot tr.draggable td,::ng-deep .fs-list-table tfoot tr.draggable .fs-list-col,::ng-deep .fs-list-table tfoot .fs-list-row.draggable td,::ng-deep .fs-list-table tfoot .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-head tr.draggable td,::ng-deep .fs-list-table .fs-list-head tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-head .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-body tr.draggable td,::ng-deep .fs-list-table .fs-list-body tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-body .fs-list-row.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-footer tr.draggable td,::ng-deep .fs-list-table .fs-list-footer tr.draggable .fs-list-col,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable td,::ng-deep .fs-list-table .fs-list-footer .fs-list-row.draggable .fs-list-col{border:none}::ng-deep .fs-list-table .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table 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: i10.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { type: i11.FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "scrollable", "firstLoad"] }, { type: i12.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection"] }, { type: i13.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved"] }, { type: i14.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection"] }, { type: i15.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { type: i16.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { type: i17.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { type: i18.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { type: i19.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListComponent, decorators: [{
337
+ type: Component,
338
+ args: [{
339
+ selector: 'fs-list',
340
+ templateUrl: 'list.component.html',
341
+ styleUrls: ['./list.component.scss'],
342
+ changeDetection: ChangeDetectionStrategy.OnPush,
343
+ providers: [
344
+ GroupExpandNotifierService,
345
+ PersistanceController,
346
+ ReorderController,
347
+ ]
348
+ }]
349
+ }], ctorParameters: function () { return [{ type: i1.ReorderController }, { type: undefined, decorators: [{
350
+ type: Optional
351
+ }, {
352
+ type: Inject,
353
+ args: [FS_LIST_DEFAULT_CONFIG]
354
+ }] }, { type: i2.FsScrollService, decorators: [{
355
+ type: Optional
356
+ }] }, { type: i3.MatDialogRef, decorators: [{
357
+ type: Optional
358
+ }] }, { type: i4.DrawerRef, decorators: [{
359
+ type: Optional
360
+ }] }, { type: i0.ElementRef }, { type: i5.SelectionDialog }, { type: i3.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i6.GroupExpandNotifierService }, { type: i7.Router }, { type: i7.ActivatedRoute }, { type: i8.PersistanceController }, { type: i9.Location }]; }, propDecorators: { classFsList: [{
361
+ type: HostBinding,
362
+ args: ['class.fs-list']
363
+ }], config: [{
364
+ type: Input,
365
+ args: ['config']
366
+ }], loaderLines: [{
367
+ type: Input
368
+ }], filtersReady: [{
369
+ type: Output
370
+ }], filterReference: [{
371
+ type: ViewChild,
372
+ args: [FilterComponent]
373
+ }], columnTemplates: [{
374
+ type: ContentChildren,
375
+ args: [FsListColumnDirective]
376
+ }], _emptyStateTemplate: [{
377
+ type: ContentChild,
378
+ args: [FsListEmptyStateDirective, { read: TemplateRef }]
379
+ }], headingTemplate: [{
380
+ type: ContentChild,
381
+ args: [FsListHeadingDirective, { read: TemplateRef }]
382
+ }], headingContainerTemplate: [{
383
+ type: ContentChild,
384
+ args: [FsListHeadingContainerDirective, { read: TemplateRef }]
385
+ }], subheadingTemplate: [{
386
+ type: ContentChild,
387
+ args: [FsListSubheadingDirective, { read: TemplateRef }]
388
+ }] } });
389
389
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUMxQyxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsT0FBTyxFQUFFLFNBQVMsRUFB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UzFCLG1CQUFtQjtzQkFEOUIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBUXZELGVBQWU7c0JBRHJCLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUlwRCx3QkFBd0I7c0JBRDlCLFlBQVk7dUJBQUMsK0JBQStCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUk3RCxrQkFBa0I7c0JBRHhCLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIEhvc3RCaW5kaW5nLFxuICBPcHRpb25hbCxcbiAgQ29udGVudENoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHNraXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNTY3JvbGxTZXJ2aWNlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2Nyb2xsJztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25EaWFsb2cgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgZ2V0Tm9ybWFsaXplZFBhdGggfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuaW1wb3J0IHsgRHJhd2VyUmVmIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZHJhd2VyJztcblxuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZVdpdGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9saXN0LWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgUmVvcmRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5cbmltcG9ydCB7IEZzTGlzdENvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29sdW1uL2NvbHVtbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNMaXN0RW1wdHlTdGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZTX0xJU1RfREVGQVVMVF9DT05GSUcgfSBmcm9tICcuLi8uLi9mcy1saXN0LnByb3ZpZGVycyc7XG5pbXBvcnQge1xuICBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgRnNMaXN0QWN0aW9uLFxuICBGc0xpc3RDb25maWcsIEZzTGlzdFBlcnNpdGFuY2UsIEZzTGlzdFNlbGVjdGlvbkNvbmZpZyxcbiAgRnNMaXN0VHJhY2tCeUZuLFxuICBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm5cbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9taXplLWNvbHMvY3VzdG9taXplLWNvbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXAtZXhwYW5kLW5vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVyc2lzdGFuY2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9wZXJzaXN0YW5jZS1jb250cm9sbGVyJztcbmltcG9ydCB7IEZzTGlzdEhlYWRpbmdDb250YWluZXJEaXJlY3RpdmUsIEZzTGlzdEhlYWRpbmdEaXJlY3RpdmUsIEZzTGlzdFN1YmhlYWRpbmdEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgUGVyc2lzdGFuY2VDb250cm9sbGVyLFxuICAgIFJlb3JkZXJDb250cm9sbGVyLFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWxpc3QnKSBjbGFzc0ZzTGlzdCA9IHRydWU7XG5cbiAgQElucHV0KCdjb25maWcnKVxuICBzZXQgY29uZmlnKGNvbmZpZzogRnNMaXN0Q29uZmlnKSB7XG4gICAgdGhpcy5faW5pdFdpdGhDb25maWcoY29uZmlnKVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxvYWRlckxpbmVzID0gMztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlcnNSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwdWJsaWMgbGlzdDogTGlzdDtcbiAgcHVibGljIGtleXdvcmRWaXNpYmxlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT47XG5cbiAgLy8gRXZlbnQgd2lsbCBmaXJlZCBpZiBhY3Rpb24gcmVtb3ZlOiB0cnVlIHdpbGwgY2xpY2tlZFxuICBwdWJsaWMgcm93UmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGZpcnN0TG9hZCA9IHRydWU7XG5cbiAgLy8gcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcblxuICBwcml2YXRlIF9maWx0ZXJSZWY6IEZpbHRlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBfZmlsdGVyUGFyYW1zUmVhZHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaW5EaWFsb2cgPSAhIXRoaXMuX2RpYWxvZ1JlZiB8fCAhIXRoaXMuX2RyYXdlclJlZjtcblxuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcblxuICBAVmlld0NoaWxkKEZpbHRlckNvbXBvbmVudClcbiAgcHJpdmF0ZSBzZXQgZmlsdGVyUmVmZXJlbmNlKGNvbXBvbmVudCkge1xuICAgIHRoaXMuX2ZpbHRlclJlZiA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmxpc3QuYWN0aW9ucy5zZXRGaWx0ZXJSZWYoY29tcG9uZW50KTtcblxuICAgIHRoaXMuX2VtaXRGaWx0ZXJzUmVhZHlFdmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb2x1bW5zIHRvIGNvbmZpZ1xuICAgKiBDcmVhdGUgQ29sdW1uIE1vZGVsIGluc3RhbmNlc1xuICAgKlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihGc0xpc3RDb2x1bW5EaXJlY3RpdmUpXG4gIHByaXZhdGUgc2V0IGNvbHVtblRlbXBsYXRlcyhsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLmxpc3RDb2x1bW5EaXJlY3RpdmVzID0gbGlzdENvbHVtbkRpcmVjdGl2ZXM7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LnRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zKGxpc3RDb2x1bW5EaXJlY3RpdmVzKTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzZXQgX2VtcHR5U3RhdGVUZW1wbGF0ZSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5lbXB0eVN0YXRlVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKEZzTGlzdEhlYWRpbmdEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGhlYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEZzTGlzdEhlYWRpbmdDb250YWluZXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGhlYWRpbmdDb250YWluZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEZzTGlzdFN1YmhlYWRpbmdEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIHN1YmhlYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVvcmRlckNvbnRyb2xsZXI6IFJlb3JkZXJDb250cm9sbGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRlNfTElTVF9ERUZBVUxUX0NPTkZJRykgcHJpdmF0ZSBfZGVmYXVsdE9wdGlvbnMsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmc1Njcm9sbDogRnNTY3JvbGxTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZHJhd2VyUmVmOiBEcmF3ZXJSZWY8YW55PixcbiAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHNlbGVjdGlvbkRpYWxvZzogU2VsZWN0aW9uRGlhbG9nLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZ3JvdXBFeHBhbmROb3RpZmllcjogR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgX3BlcnNpc3RhbmNlOiBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiByZWZlcmVuY2UgZm9yIGZpbHRlclxuICAgKi9cbiAgcHVibGljIGdldCBmaWx0ZXJSZWYoKTogRmlsdGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUmVmO1xuICB9XG5cbiAgcHVibGljIGdldCBncm91cEVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5ncm91cEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0ZpbHRlcktleXdvcmQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5maWx0ZXJJbnB1dCAmJiB0aGlzLmtleXdvcmRWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5zdGF0dXMgJiZcbiAgICAgICh0aGlzLmxpc3Quc29ydGluZy5pc0RlZmluZWQgfHwgdGhpcy5saXN0LnBhZ2luZy5lbmFibGVkKSAmJlxuICAgICAgKCF0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQgfHwgKHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCAmJiB0aGlzLnJlb3JkZXJDb250cm9sbGVyLnN0YXR1cykpICYmXG4gICAgICAoKHRoaXMubGlzdC5zY3JvbGxhYmxlICYmIHRoaXMubGlzdC5zY3JvbGxhYmxlLnN0YXR1cykgfHwgIXRoaXMubGlzdC5zY3JvbGxhYmxlKVxuICB9XG5cbiAgcHVibGljIGdldCBwYWdpbmF0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QucGFnaW5nLmVuYWJsZWRcbiAgICAgICYmICF0aGlzLmZpcnN0TG9hZFxuICAgICAgJiYgIXRoaXMubGlzdC5zY3JvbGxhYmxlXG4gICAgICAmJiAhdGhpcy5saXN0LmVtcHR5U3RhdGVFbmFibGVkXG4gICAgICAmJiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3NDb3VudCA+IDBcbiAgICAgICYmIHRoaXMubGlzdC5wYWdpbmcucGFnZXMgPiAxO1xuICB9XG5cbiAgcHVibGljIHNldCBncm91cEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxpc3QuZ3JvdXBFbmFibGVkKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc1F1ZXJ5KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmZpbHRlcnNRdWVyeTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1JlbW92ZVJvdygpO1xuICAgIHRoaXMuX3N1YnNjcmliZVRvR3JvdXBFeHBhbmRTdGF0dXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvTmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHByZXZQYWdlKCkge1xuICAgIHRoaXMubGlzdC5wYWdpbmcuZ29QcmV2KCk7XG4gIH1cblxuICBwdWJsaWMgZmlyc3RQYWdlKCkge1xuICAgIHRoaXMubGlzdC5wYWdpbmcuZ29GaXJzdCgpO1xuICB9XG5cbiAgcHVibGljIGxhc3RQYWdlKCkge1xuICAgIHRoaXMubGlzdC5wYWdpbmcuZ29MYXN0KCk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCkge1xuICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhKHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5Rm4pIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmdldERhdGEodHJhY2tCeSk7XG4gIH1cblxuICBwdWJsaWMgaGFzRGF0YSh0cmFja0J5OiBGc0xpc3RUcmFja0J5Rm4pIHtcbiAgICByZXR1cm4gdGhpcy5saXN0Lmhhc0RhdGEodHJhY2tCeSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShcbiAgICByb3dzOiBGc0xpc3RBYnN0cmFjdFJvdyB8IEZzTGlzdEFic3RyYWN0Um93W10sXG4gICAgdHJhY2tCeT86IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGblxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnVwZGF0ZURhdGEocm93cywgdHJhY2tCeSk7XG4gIH1cblxuICBwdWJsaWMgcmVwbGFjZVJvdyhcbiAgICByb3c6IEZzTGlzdEFic3RyYWN0Um93LFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm5cbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZXBsYWNlRGF0YShyb3csIHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGlvbkNvbmZpZyhjb25maWc6IEZzTGlzdFNlbGVjdGlvbkNvbmZpZykge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24udXBkYXRlQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWxlY3Rpb25BY3Rpb25zKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24ucmVzZXRBY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24uZW5hYmxlU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLmRpc2FibGVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVEYXRhKGRhdGE6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSB8IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVtb3ZlRGF0YShkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIZWFkaW5nKGhlYWRpbmc6IHN0cmluZykge1xuICAgIHRoaXMubGlzdC5oZWFkaW5nID0gaGVhZGluZztcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdWJoZWFkaW5nKHN1YmhlYWRpbmc6IHN0cmluZykge1xuICAgIHRoaXMubGlzdC5zdWJoZWFkaW5nID0gc3ViaGVhZGluZztcbiAgfVxuXG4gIHB1YmxpYyByZW9yZGVyU3RhcnQoKSB7XG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVSZW9yZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVvcmRlckZpbmlzaCgpIHtcbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmRpc2FibGVSZW9yZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aW9ucyhhY3Rpb25zOiBGc0xpc3RBY3Rpb25bXSkge1xuICAgIGlmIChhY3Rpb25zKSB7XG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucy5jbGVhckFjdGlvbnMoKTtcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLnNldEFjdGlvbnMoYWN0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbHRlclJlYWR5KCkge1xuICAgIHRoaXMubGlzdC5maWx0ZXJzUmVhZHkkLm5leHQoKTtcbiAgICB0aGlzLl9maWx0ZXJQYXJhbXNSZWFkeSA9IHRydWU7XG4gICAgdGhpcy5fZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgZm9yIHNwZWNpZmljIGNvbHVtblxuICAgKi9cbiAgcHVibGljIGNvbHVtblZpc2liaWxpdHkobmFtZTogc3RyaW5nLCBzaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eShbIHtuYW1lLCBzaG93IH0gXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJpbGl0eSBmb3IgbGlzdCBvZiBzcGVjaWZpYyBjb2x1bW5zXG4gICAqL1xuICBwdWJsaWMgY29sdW1uc1Zpc2liaWxpdHkoY29sdW1uczogeyBuYW1lOiBzdHJpbmcsIHNob3c6IGJvb2xlYW4gfVtdKSB7XG4gICAgdGhpcy5saXN0LmNvbHVtbnMudXBkYXRlVmlzaWJpbGl0eUZvckNvbHMoY29sdW1ucyk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0RmlsdGVyc1JlYWR5RXZlbnQoKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5maWx0ZXJSZWYgJiYgdGhpcy5fZmlsdGVyUGFyYW1zUmVhZHkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1JlYWR5LmVtaXQoKTtcblxuICAgICAgdGhpcy5rZXl3b3JkVmlzaWJsZSA9IHRoaXMuZmlsdGVyUmVmLmhhc0tleXdvcmQ7XG4gICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGNvbmZpZyBmb3IgbGlzdFxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBwcml2YXRlIF9pbml0V2l0aENvbmZpZyhjb25maWc6IEZzTGlzdENvbmZpZykge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdE9wdHMgPSB0aGlzLl9kZWZhdWx0T3B0aW9uc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5fZGVmYXVsdE9wdGlvbnMpXG4gICAgICA6IHt9O1xuICAgIGNvbnN0IGxpc3RDb25maWcgPSBtZXJnZVdpdGgoZGVmYXVsdE9wdHMsIGNvbmZpZywgdGhpcy5fY29uZmlnTWVyZ2VDdXN0b21pemVyKTtcblxuICAgIGlmIChsaXN0Q29uZmlnLnBlcnNpc3QgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9yZXN0b3JlUGVyc2lzdGFuY2UobGlzdENvbmZpZy5wZXJzaXN0KTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDdXN0b21pemVBY3Rpb24obGlzdENvbmZpZy5hY3Rpb25zKTtcblxuICAgIHRoaXMubGlzdCA9IG5ldyBMaXN0KFxuICAgICAgdGhpcy5fZWwsXG4gICAgICBsaXN0Q29uZmlnLFxuICAgICAgdGhpcy5mc1Njcm9sbCxcbiAgICAgIHRoaXMuc2VsZWN0aW9uRGlhbG9nLFxuICAgICAgdGhpcy5fcm91dGVyLFxuICAgICAgdGhpcy5fcm91dGUsXG4gICAgICB0aGlzLl9wZXJzaXN0YW5jZSxcbiAgICAgIHRoaXMuX2luRGlhbG9nLFxuICAgICk7XG5cbiAgICB0aGlzLl93YWl0Rmlyc3RMb2FkKCk7XG4gICAgdGhpcy5fbGlzdGVuRmlsdGVyc1F1ZXJ5Q2hhbmdlKCk7XG5cbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmluaXRXaXRoQ29uZmlnKFxuICAgICAgY29uZmlnLnJlb3JkZXIsXG4gICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIsXG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucyxcbiAgICAgIHRoaXMubGlzdC5zZWxlY3Rpb24sXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmxpc3RDb2x1bW5EaXJlY3RpdmVzKSB7XG4gICAgICB0aGlzLmxpc3QudHJhbmZvcm1UZW1wbGF0ZXNUb0NvbHVtbnModGhpcy5saXN0Q29sdW1uRGlyZWN0aXZlcyk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3RlblNvcnRpbmdDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGFjdGlvbiB3aXRoIGN1c3RvbWl6ZSBmbGFnIGFuZCByZS1kZWNsYXJlIGNsaWNrIGZ1bmN0aW9uIGZvciBDdXN0b21pemVDb2xzRGlhbG9nXG4gICAqIEBwYXJhbSBhY3Rpb25zXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVDdXN0b21pemVBY3Rpb24oYWN0aW9uczogRnNMaXN0QWN0aW9uW10pIHtcbiAgICBjb25zdCBjdXN0b21pemVBY3Rpb24gPSBhY3Rpb25zPy5maW5kKChhY3Rpb24pID0+IGFjdGlvbi5jdXN0b21pemUpO1xuXG4gICAgaWYgKGN1c3RvbWl6ZUFjdGlvbikge1xuICAgICAgY29uc3QgYWN0aW9uQ2xpY2tGbiA9IGN1c3RvbWl6ZUFjdGlvbi5jbGljaztcblxuICAgICAgY3VzdG9taXplQWN0aW9uLmNsaWNrID0gKCkgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uQ2xpY2tGbikge1xuICAgICAgICAgIGFjdGlvbkNsaWNrRm4obnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEN1c3RvbWl6ZUNvbHNEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmxpc3QuY29sdW1ucy5jb2x1bW5zRm9yRGlhbG9nLFxuICAgICAgICAgICAgY2hhbmdlRm46IHRoaXMubGlzdC5jb2x1bW5zLmNoYW5nZUZuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZlxuICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0Lm9uRGVzdHJveSQpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICB0aGlzLmxpc3QuY29sdW1ucy51cGRhdGVWaXNpYmlsaXR5Rm9yQ29scyhkYXRhKTtcblxuICAgICAgICAgICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc29ydGluZyBpbiBmaWx0ZXJcbiAgICovXG4gIHByaXZhdGUgX2xpc3RlblNvcnRpbmdDaGFuZ2UoKSB7XG4gICAgdGhpcy5saXN0LnNvcnRpbmdcbiAgICAgIC5zb3J0aW5nQ2hhbmdlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0Lm9uRGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzb3J0KSA9PiB7XG4gICAgICAgIHRoaXMuX2ZpbHRlclJlZi51cGRhdGVTb3J0KHNvcnQpO1xuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvUmVtb3ZlUm93KCkge1xuICAgIHRoaXMucm93UmVtb3ZlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgocm93KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZW1vdmVEYXRhKHJvdyk7XG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Hcm91cEV4cGFuZFN0YXR1c0NoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5saXN0LmRhdGFDb250cm9sbGVyLmhhc0dyb3Vwcykge1xuICAgICAgdGhpcy5fZ3JvdXBFeHBhbmROb3RpZmllci5leHBhbmRTdGF0dXNDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJvdykgPT4ge1xuICAgICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci50b2dnbGVSb3dHcm91cChyb3cpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3dhaXRGaXJzdExvYWQoKSB7XG4gICAgdGhpcy5saXN0LmxvYWRpbmckXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgPT09IGZhbHNlKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5vbkRlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkZpbHRlcnNRdWVyeUNoYW5nZSgpIHtcbiAgICB0aGlzLmxpc3QuZmlsdGVyc1F1ZXJ5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmxpc3Qub25EZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZUZpbHRlcnMgPSBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoO1xuXG4gICAgICAgICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5zZXROdW5iZXJPZkFjdGl2ZUZpbHRlcnMoYWN0aXZlRmlsdGVycyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlnTWVyZ2VDdXN0b21pemVyKG9ialZhbHVlOiBhbnksIHNyY1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBvYmpWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXN0b3JlUGVyc2lzdGFuY2UocGVyc2lzdENvbmZpZzogRnNMaXN0UGVyc2l0YW5jZSkge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IGdldE5vcm1hbGl6ZWRQYXRoKHRoaXMuX2xvY2F0aW9uKTtcbiAgICB0aGlzLl9wZXJzaXN0YW5jZS5zZXRDb25maWcocGVyc2lzdENvbmZpZywgbmFtZXNwYWNlLCB0aGlzLl9pbkRpYWxvZyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmcy1saXN0LWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2hhcy1maWx0ZXIta2V5d29yZCc6IGhhc0ZpbHRlcktleXdvcmQsXG4gICAgICAnaGFzLWZpbHRlcnMnOiBsaXN0LmZpbHRlckNvbmZpZz8uaXRlbXMubGVuZ3RoLFxuICAgICAgJ2hhcy1oZWFkaW5nJzogbGlzdC5oZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZSxcbiAgICAgICdoYXMtc3RhdHVzJzogaGFzU3RhdHVzLFxuICAgICAgJ2hhcy1jaGlwcyc6IGxpc3QuY2hpcHMsXG4gICAgICAnaGFzLWFjdGlvbnMnOiBsaXN0LmFjdGlvbnMuaGFzQWN0aW9ucyxcbiAgICAgICdmaXJzdC1sb2FkJzogZmlyc3RMb2FkLFxuICAgICAgJ2xvYWRpbmcnOiBsaXN0LmxvYWRpbmckIHwgYXN5bmNcbiAgICB9XCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0Q29udGFpbmVyQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsaXN0Q29udGFpbmVyQ29udGVudD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3QuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3MkIHwgYXN5bmMgYXMgbGlzdERhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtbGlzdC1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWhlYWRlclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnbm8td3JhcCc6IHJlb3JkZXJDb250cm9sbGVyLm1hbnVhbFJlb3JkZXJBY3RpdmF0ZWQgfHwgIWxpc3QuZmlsdGVyQ29uZmlnPy5pdGVtcy5sZW5ndGggfVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImhhc0ZpbHRlcktleXdvcmRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1wiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGZzLWZpbHRlclxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWZpbHRlclwiXG4gICAgICAgICAgICAqbmdJZj1cImxpc3QuZmlsdGVyQ29uZmlnXCJcbiAgICAgICAgICAgIFtmaWx0ZXJdPVwibGlzdC5maWx0ZXJDb25maWdcIlxuICAgICAgICAgICAgW3Nob3dTb3J0QnldPVwiIWxpc3Quc3RhdHVzXCJcbiAgICAgICAgICAgIFtzaG93RmlsdGVySW5wdXRdPVwibGlzdC5maWx0ZXJJbnB1dFwiXG4gICAgICAgICAgICAocmVhZHkpPVwiZmlsdGVyUmVhZHkoKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmc0ZpbHRlclN0YXR1c0Jhcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFoYXNGaWx0ZXJLZXl3b3JkXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nXCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdGF0dXNcIj5cbiAgICAgICAgICAgICAgPGZzLWxpc3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LXN0YXR1c1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaGlkZGVuLW1vYmlsZSc6ICFsaXN0LnN0YXR1cyB9XCJcbiAgICAgICAgICAgICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICAgICAgICAgICAgW3NvcnRpbmddPVwibGlzdC5zb3J0aW5nXCJcbiAgICAgICAgICAgICAgICBbcGFnaW5nXT1cImxpc3QucGFnaW5nXCJcbiAgICAgICAgICAgICAgICBbZmlyc3RMb2FkXT1cImZpcnN0TG9hZFwiXG4gICAgICAgICAgICAgICAgW3Njcm9sbGFibGVdPVwibGlzdC5zY3JvbGxhYmxlIHx8IGxpc3QucGFnaW5nLmxvYWRNb3JlRW5hYmxlZFwiPlxuICAgICAgICAgICAgICA8L2ZzLWxpc3Qtc3RhdHVzPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mcy1maWx0ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmcy1saXN0LWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgPCEtLSBUYWJsZSBpbXBsZW1lbnRhdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtbGlzdC10YWJsZS1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlyc3RMb2FkICYmIGxpc3REYXRhLmxlbmd0aCA+IDAgJiYgIWxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZnMtbGlzdC10YWJsZVwiIHJvbGU9XCJncmlkXCIgW2ZzTGlzdENvbnRlbnRJbml0XT1cImxpc3QuYWZ0ZXJDb250ZW50SW5pdFwiPlxuICAgICAgICAgIDx0aGVhZFxuICAgICAgICAgICAgZnMtbGlzdC1oZWFkXG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtaGVhZFwiXG4gICAgICAgICAgICByb2xlPVwicm93Z3JvdXBcIlxuICAgICAgICAgICAgKm5nSWY9XCJsaXN0LmNvbHVtbnMuaGFzSGVhZGVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImxpc3QuY29sdW1ucy50aGVhZENsYXNzXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy52aXNpYmxlQ29sdW1ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbc29ydGluZ109XCJsaXN0LnNvcnRpbmdcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICBbaGFzUm93QWN0aW9uc109XCJsaXN0Lmhhc1Jvd0FjdGlvbnNcIj5cbiAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgPHRib2R5XG4gICAgICAgICAgICBmcy1saXN0LWJvZHlcbiAgICAgICAgICAgIGZzTGlzdERyYWdnYWJsZUxpc3RcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1ib2R5XCJcbiAgICAgICAgICAgIHJvbGU9XCJyb3dncm91cFwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiISEocmVvcmRlckNvbnRyb2xsZXIucmVvcmRlckRpc2FibGVkJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICAgICAgICBbcm93QWN0aW9uc1Jhd109XCJsaXN0LnJvd0FjdGlvbnNSYXdcIlxuICAgICAgICAgICAgW2dyb3VwQWN0aW9uc1Jhd109XCJsaXN0Lmdyb3VwQWN0aW9uc1Jhd1wiXG4gICAgICAgICAgICBbaGFzUm93QWN0aW9uc109XCJsaXN0Lmhhc1Jvd0FjdGlvbnNcIlxuICAgICAgICAgICAgW3Jvd0V2ZW50c109XCJsaXN0LnJvd0V2ZW50c1wiXG4gICAgICAgICAgICBbcm93Q2xhc3NdPVwibGlzdC5yb3dDbGFzc1wiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlc3RvcmVNb2RlXT1cImxpc3QucmVzdG9yZU1vZGVcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICBbcm93UmVtb3ZlZF09XCJyb3dSZW1vdmVkXCI+XG4gICAgICAgICAgPC90Ym9keT5cblxuICAgICAgICAgIDx0Zm9vdFxuICAgICAgICAgICAgZnMtbGlzdC1mb290ZXJcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1mb290ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJsaXN0LmNvbHVtbnMuaGFzRm9vdGVyXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy52aXNpYmxlQ29sdW1ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiPlxuICAgICAgICAgIDwvdGZvb3Q+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxmcy1saXN0LWxvYWRlclxuICAgICAgICAqbmdJZj1cImZpcnN0TG9hZFwiXG4gICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy5jb2x1bW5zXCJcbiAgICAgICAgW2xvYWRlckxpbmVzXT1cImxvYWRlckxpbmVzXCI+XG4gICAgICA8L2ZzLWxpc3QtbG9hZGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGZzLWxpc3QtcGFnaW5hdGlvblxuICAgICAgKm5nSWY9XCJwYWdpbmF0b3JWaXNpYmxlXCJcbiAgICAgIGNsYXNzPVwiZnMtbGlzdC1wYWdpbmF0aW9uXCJcbiAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgIFtwYWdpbmF0aW9uXT1cImxpc3QucGFnaW5nXCI+XG4gICAgPC9mcy1saXN0LXBhZ2luYXRpb24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpcnN0TG9hZFwiPlxuICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwibGlzdERhdGEubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0cy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJsaXN0Lm5vUmVzdWx0cz8ubWVzc2FnZSAmJiAhbGlzdC5lbXB0eVN0YXRlRW5hYmxlZFwiXG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0c1wiPlxuICAgICAgICAgIHt7IGxpc3Qubm9SZXN1bHRzPy5tZXNzYWdlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdC5lbXB0eVN0YXRlRW5hYmxlZFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0LmVtcHR5U3RhdGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNoZWFkaW5nPlxuICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1jb250YWluZXJcIiAqbmdJZj1cImhlYWRpbmdDb250YWluZXJUZW1wbGF0ZSB8fCBsaXN0LmhlYWRpbmcgfHwgbGlzdC5zdWJoZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGU7IGVsc2UgaGVhZGluZ0NvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ0NvbnRhaW5lclRlbXBsYXRlXCIgXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHRlbXBsYXRlOiBoZWFkaW5nQ29udGFpbmVyIH1cIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGluZ0NvbnRhaW5lcj5cbiAgICAgIDxoMiBjbGFzcz1cImhlYWRpbmdcIiAqbmdJZj1cImxpc3QuaGVhZGluZyB8fCBoZWFkaW5nVGVtcGxhdGVcIj5cbiAgICAgICAge3tsaXN0LmhlYWRpbmd9fVxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9oMj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbCBzdWJoZWFkaW5nXCIgKm5nSWY9XCJsaXN0LnN1YmhlYWRpbmcgfHwgc3ViaGVhZGluZ1RlbXBsYXRlXCI+XG4gICAgICAgIHt7bGlzdC5zdWJoZWFkaW5nfX1cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWJoZWFkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==