@firestitch/list 15.0.0 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/app/components/body/body.component.d.ts +1 -1
  2. package/app/components/body/row/actions/actions.component.d.ts +1 -1
  3. package/app/components/body/row/cell/cell.component.d.ts +1 -1
  4. package/app/components/body/row/inline-action/inline-action.component.d.ts +1 -1
  5. package/app/components/body/row/menu-action/menu-action.component.d.ts +1 -1
  6. package/app/components/body/row/row.component.d.ts +1 -1
  7. package/app/components/footer/footer-row/footer-row.component.d.ts +1 -7
  8. package/app/components/footer/footer.component.d.ts +1 -1
  9. package/app/components/head/head.component.d.ts +1 -1
  10. package/app/components/list/list.component.d.ts +1 -1
  11. package/app/components/loader/loader.component.d.ts +1 -1
  12. package/app/components/pagination/pagination.component.d.ts +1 -1
  13. package/app/components/status/status.component.d.ts +1 -1
  14. package/app/directives/cell/cell.directive.d.ts +1 -1
  15. package/app/directives/column/column.directive.d.ts +1 -1
  16. package/app/directives/content-init/content-init.directive.d.ts +1 -1
  17. package/app/directives/draggable-list/draggable-list.directive.d.ts +1 -1
  18. package/app/directives/draggable-row/draggable-row.directive.d.ts +1 -1
  19. package/app/directives/footer/footer.directive.d.ts +1 -1
  20. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +1 -1
  21. package/app/directives/header/header.directive.d.ts +1 -1
  22. package/app/models/column.model.d.ts +1 -1
  23. package/esm2022/app/classes/actions-controller.mjs +57 -0
  24. package/esm2022/app/classes/columns-controller.mjs +211 -0
  25. package/esm2022/app/classes/data-controller.mjs +348 -0
  26. package/esm2022/app/classes/external-params-controller.mjs +153 -0
  27. package/esm2022/app/classes/list-controller.mjs +712 -0
  28. package/esm2022/app/classes/pagination-controller.mjs +491 -0
  29. package/esm2022/app/classes/persistance-controller.mjs +19 -0
  30. package/esm2022/app/classes/reorder-controller.mjs +191 -0
  31. package/esm2022/app/classes/selection-controller.mjs +473 -0
  32. package/esm2022/app/classes/sorting-controller.mjs +207 -0
  33. package/esm2022/app/components/body/body.component.mjs +73 -0
  34. package/esm2022/app/components/body/row/actions/actions.component.mjs +102 -0
  35. package/esm2022/app/components/body/row/cell/cell.component.mjs +109 -0
  36. package/esm2022/app/components/body/row/inline-action/inline-action.component.mjs +32 -0
  37. package/esm2022/app/components/body/row/menu-action/menu-action.component.mjs +51 -0
  38. package/esm2022/app/components/body/row/row.component.mjs +341 -0
  39. package/esm2022/app/components/customize-cols/customize-cols.component.mjs +70 -0
  40. package/{esm2020 → esm2022}/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +4 -4
  41. package/esm2022/app/components/footer/footer-row/footer-row.component.mjs +17 -0
  42. package/esm2022/app/components/footer/footer.component.mjs +35 -0
  43. package/esm2022/app/components/head/head-cell/head-cell.component.mjs +32 -0
  44. package/esm2022/app/components/head/head.component.mjs +113 -0
  45. package/esm2022/app/components/list/list.component.mjs +406 -0
  46. package/esm2022/app/components/loader/loader.component.mjs +40 -0
  47. package/esm2022/app/components/manage-saved-filters/manage-saved-filters.component.mjs +78 -0
  48. package/esm2022/app/components/pagination/pagination.component.mjs +40 -0
  49. package/esm2022/app/components/saved-filters/saved-filters.component.mjs +32 -0
  50. package/esm2022/app/components/status/status.component.mjs +69 -0
  51. package/esm2022/app/directives/cell/cell.directive.mjs +21 -0
  52. package/esm2022/app/directives/column/column.directive.mjs +137 -0
  53. package/{esm2020 → esm2022}/app/directives/content/content.directive.mjs +4 -4
  54. package/esm2022/app/directives/content-init/content-init.directive.mjs +23 -0
  55. package/esm2022/app/directives/draggable-list/draggable-list.directive.mjs +344 -0
  56. package/esm2022/app/directives/draggable-row/draggable-row.directive.mjs +83 -0
  57. package/{esm2020 → esm2022}/app/directives/empty-state/empty-state.directive.mjs +4 -4
  58. package/esm2022/app/directives/footer/footer.directive.mjs +21 -0
  59. package/esm2022/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +28 -0
  60. package/{esm2020 → esm2022}/app/directives/group-footer/group-footer.directive.mjs +4 -4
  61. package/{esm2020 → esm2022}/app/directives/group-header/group-header.directive.mjs +4 -4
  62. package/esm2022/app/directives/header/header.directive.mjs +21 -0
  63. package/{esm2020 → esm2022}/app/directives/heading/heading.directive.mjs +4 -4
  64. package/{esm2020 → esm2022}/app/directives/heading-container/heading-container.directive.mjs +4 -4
  65. package/{esm2020 → esm2022}/app/directives/subheading/subheading.directive.mjs +4 -4
  66. package/{esm2020 → esm2022}/app/fs-list.module.mjs +89 -89
  67. package/esm2022/app/models/column-attributes.mjs +139 -0
  68. package/esm2022/app/models/column.model.mjs +173 -0
  69. package/esm2022/app/models/row/base-row.mjs +25 -0
  70. package/esm2022/app/models/row/child-row.mjs +29 -0
  71. package/esm2022/app/models/row/group-footer-row.mjs +22 -0
  72. package/{esm2020 → esm2022}/app/models/row/group-row.mjs +3 -3
  73. package/esm2022/app/models/row-action.model.mjs +102 -0
  74. package/esm2022/app/models/row.mjs +90 -0
  75. package/esm2022/app/models/styleConfig.model.mjs +78 -0
  76. package/{esm2020 → esm2022}/app/pipes/action-label.mjs +4 -4
  77. package/esm2022/app/services/group-expand-notifier.service.mjs +24 -0
  78. package/{fesm2020 → fesm2022}/firestitch-list.mjs +675 -442
  79. package/fesm2022/firestitch-list.mjs.map +1 -0
  80. package/package.json +5 -11
  81. package/esm2020/app/classes/actions-controller.mjs +0 -55
  82. package/esm2020/app/classes/columns-controller.mjs +0 -206
  83. package/esm2020/app/classes/data-controller.mjs +0 -345
  84. package/esm2020/app/classes/external-params-controller.mjs +0 -147
  85. package/esm2020/app/classes/list-controller.mjs +0 -674
  86. package/esm2020/app/classes/pagination-controller.mjs +0 -491
  87. package/esm2020/app/classes/persistance-controller.mjs +0 -19
  88. package/esm2020/app/classes/reorder-controller.mjs +0 -182
  89. package/esm2020/app/classes/selection-controller.mjs +0 -466
  90. package/esm2020/app/classes/sorting-controller.mjs +0 -206
  91. package/esm2020/app/components/body/body.component.mjs +0 -64
  92. package/esm2020/app/components/body/row/actions/actions.component.mjs +0 -97
  93. package/esm2020/app/components/body/row/cell/cell.component.mjs +0 -107
  94. package/esm2020/app/components/body/row/inline-action/inline-action.component.mjs +0 -33
  95. package/esm2020/app/components/body/row/menu-action/menu-action.component.mjs +0 -46
  96. package/esm2020/app/components/body/row/row.component.mjs +0 -322
  97. package/esm2020/app/components/customize-cols/customize-cols.component.mjs +0 -68
  98. package/esm2020/app/components/footer/footer-row/footer-row.component.mjs +0 -28
  99. package/esm2020/app/components/footer/footer.component.mjs +0 -31
  100. package/esm2020/app/components/head/head-cell/head-cell.component.mjs +0 -29
  101. package/esm2020/app/components/head/head.component.mjs +0 -103
  102. package/esm2020/app/components/list/list.component.mjs +0 -385
  103. package/esm2020/app/components/loader/loader.component.mjs +0 -40
  104. package/esm2020/app/components/manage-saved-filters/manage-saved-filters.component.mjs +0 -76
  105. package/esm2020/app/components/pagination/pagination.component.mjs +0 -37
  106. package/esm2020/app/components/saved-filters/saved-filters.component.mjs +0 -29
  107. package/esm2020/app/components/status/status.component.mjs +0 -64
  108. package/esm2020/app/directives/cell/cell.directive.mjs +0 -18
  109. package/esm2020/app/directives/column/column.directive.mjs +0 -121
  110. package/esm2020/app/directives/content-init/content-init.directive.mjs +0 -22
  111. package/esm2020/app/directives/draggable-list/draggable-list.directive.mjs +0 -330
  112. package/esm2020/app/directives/draggable-row/draggable-row.directive.mjs +0 -78
  113. package/esm2020/app/directives/footer/footer.directive.mjs +0 -18
  114. package/esm2020/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +0 -26
  115. package/esm2020/app/directives/header/header.directive.mjs +0 -18
  116. package/esm2020/app/models/column-attributes.mjs +0 -132
  117. package/esm2020/app/models/column.model.mjs +0 -164
  118. package/esm2020/app/models/row/base-row.mjs +0 -23
  119. package/esm2020/app/models/row/child-row.mjs +0 -28
  120. package/esm2020/app/models/row/group-footer-row.mjs +0 -21
  121. package/esm2020/app/models/row-action.model.mjs +0 -90
  122. package/esm2020/app/models/row.mjs +0 -89
  123. package/esm2020/app/models/styleConfig.model.mjs +0 -76
  124. package/esm2020/app/services/group-expand-notifier.service.mjs +0 -26
  125. package/fesm2015/firestitch-list.mjs +0 -5802
  126. package/fesm2015/firestitch-list.mjs.map +0 -1
  127. package/fesm2020/firestitch-list.mjs.map +0 -1
  128. /package/{esm2020 → esm2022}/app/classes/index.mjs +0 -0
  129. /package/{esm2020 → esm2022}/app/directives/index.mjs +0 -0
  130. /package/{esm2020 → esm2022}/app/enums/action-type.enum.mjs +0 -0
  131. /package/{esm2020 → esm2022}/app/enums/page-change-type.enum.mjs +0 -0
  132. /package/{esm2020 → esm2022}/app/enums/pagination-strategy.enum.mjs +0 -0
  133. /package/{esm2020 → esm2022}/app/enums/row-type.enum.mjs +0 -0
  134. /package/{esm2020 → esm2022}/app/enums/state.enum.mjs +0 -0
  135. /package/{esm2020 → esm2022}/app/fs-list.providers.mjs +0 -0
  136. /package/{esm2020 → esm2022}/app/interfaces/cellconfig.interface.mjs +0 -0
  137. /package/{esm2020 → esm2022}/app/interfaces/column-config.interface.mjs +0 -0
  138. /package/{esm2020 → esm2022}/app/interfaces/draggable-list.interface.mjs +0 -0
  139. /package/{esm2020 → esm2022}/app/interfaces/external-params.interface.mjs +0 -0
  140. /package/{esm2020 → esm2022}/app/interfaces/index.mjs +0 -0
  141. /package/{esm2020 → esm2022}/app/interfaces/listconfig.interface.mjs +0 -0
  142. /package/{esm2020 → esm2022}/app/interfaces/pagination-state.interface.mjs +0 -0
  143. /package/{esm2020 → esm2022}/app/interfaces/pagination.interface.mjs +0 -0
  144. /package/{esm2020 → esm2022}/app/interfaces/sorting-change-event.interface.mjs +0 -0
  145. /package/{esm2020 → esm2022}/app/models/column-async-attribute.mjs +0 -0
  146. /package/{esm2020 → esm2022}/app/models/row/simple-row.mjs +0 -0
  147. /package/{esm2020 → esm2022}/app/pipes/index.mjs +0 -0
  148. /package/{esm2020 → esm2022}/firestitch-list.mjs +0 -0
  149. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -0,0 +1,344 @@
1
+ import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';
2
+ import { Observable, Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { ReorderController, ReorderStrategy } from '../../classes/reorder-controller';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../classes/reorder-controller";
7
+ export class FsListDraggableListDirective {
8
+ _cdRef;
9
+ _zone;
10
+ _containerElement;
11
+ _reorderController;
12
+ _renderer;
13
+ // Draggable Element
14
+ _draggableElement;
15
+ _draggableElementPreview;
16
+ _multipleDraggableElementPreview;
17
+ _draggableElementHeight;
18
+ _draggableElementIndex;
19
+ _draggableElementStartIndex;
20
+ // Handlers
21
+ _dragToHandler = this.dragTo.bind(this);
22
+ _dragEndHandler = this.dragEnd.bind(this);
23
+ _dragInProgress = false;
24
+ _childRowElements;
25
+ _dragStart$ = new Subject();
26
+ _dragEnd$ = new Subject();
27
+ _rows;
28
+ _draggableChildrenDirectives = [];
29
+ _selectedRowsDirectives = [];
30
+ _destroy$ = new Subject();
31
+ constructor(_cdRef, _zone, _containerElement, _reorderController, _renderer) {
32
+ this._cdRef = _cdRef;
33
+ this._zone = _zone;
34
+ this._containerElement = _containerElement;
35
+ this._reorderController = _reorderController;
36
+ this._renderer = _renderer;
37
+ }
38
+ _windowTouchMoveHandler = () => {
39
+ //
40
+ };
41
+ get dragStart$() {
42
+ return this._dragStart$.pipe(takeUntil(this._destroy$));
43
+ }
44
+ get dragEnd$() {
45
+ return this._dragEnd$.pipe(takeUntil(this._destroy$));
46
+ }
47
+ get draggableItem() {
48
+ return this._rows[this._draggableElementIndex];
49
+ }
50
+ addDraggableDirective(dir) {
51
+ this._draggableChildrenDirectives.push(dir);
52
+ }
53
+ removeDraggableDirective(dir) {
54
+ const idx = this._draggableChildrenDirectives.indexOf(dir);
55
+ if (idx !== -1) {
56
+ this._draggableChildrenDirectives.splice(idx, 1);
57
+ }
58
+ }
59
+ /**
60
+ * Prepare draggable elements and add events
61
+ *
62
+ * @param draggableElement
63
+ */
64
+ dragStart(draggableElement) {
65
+ if (this._dragInProgress) {
66
+ return;
67
+ }
68
+ if (this._reorderController.startCallback
69
+ && this._reorderController.strategy === ReorderStrategy.Always) {
70
+ this._reorderController.startCallback();
71
+ }
72
+ this._dragInProgress = true;
73
+ window.document.body.classList.add('reorder-in-progress');
74
+ this._draggableElement = draggableElement;
75
+ this._detectSelectedRows();
76
+ this.prepareElements();
77
+ this.initDraggableElement();
78
+ this._draggableElementStartIndex = this._draggableElementIndex;
79
+ this._draggableElement.classList.add('draggable-elem');
80
+ this._zone.runOutsideAngular(() => {
81
+ window.addEventListener('touchmove', this._windowTouchMoveHandler, { passive: true });
82
+ window.document.addEventListener('mousemove', this._dragToHandler, { passive: true });
83
+ window.document.addEventListener('touchmove', this._dragToHandler, { passive: false });
84
+ });
85
+ window.document.addEventListener('mouseup', this._dragEndHandler);
86
+ window.document.addEventListener('touchend', this._dragEndHandler);
87
+ window.document.addEventListener('touchcancel', this._dragEndHandler);
88
+ this._dragStart$.next();
89
+ }
90
+ /**
91
+ * Move draggable elements and swap items
92
+ *
93
+ * @param event
94
+ */
95
+ dragTo(event) {
96
+ this.touchFix(event);
97
+ const elemIndex = this.lookupElementUnder(event);
98
+ const targetRow = this._rows[elemIndex];
99
+ if (this._multipleDraggableElementPreview) {
100
+ this._multipleDraggableElementPreview.style.left = `${event.clientX}px`;
101
+ this._multipleDraggableElementPreview.style.top = `${event.clientY}px`;
102
+ }
103
+ // Can not drag before first group and after last group
104
+ const swapWithBoundaryGroupElement = (elemIndex === 0 || elemIndex === this._rows.length - 1)
105
+ && targetRow.isGroup
106
+ // TODO fix isChild & all
107
+ && this.draggableItem.isChild;
108
+ if (!swapWithBoundaryGroupElement) {
109
+ if (elemIndex !== null) {
110
+ if (targetRow.readyToSwap) {
111
+ this.swapWithIndex(elemIndex);
112
+ if (this._draggableElementPreview) {
113
+ this._draggableElementPreview.classList.remove('fs-list-no-drop');
114
+ }
115
+ }
116
+ else {
117
+ if (this._draggableElementPreview) {
118
+ this._draggableElementPreview.classList.add('fs-list-no-drop');
119
+ }
120
+ }
121
+ }
122
+ // FIXME
123
+ if (this._draggableElementPreview) {
124
+ const topOffset = (event.y || event.clientY) - (this._draggableElementHeight / 2);
125
+ this._draggableElementPreview.style.top = `${topOffset}px`;
126
+ }
127
+ }
128
+ }
129
+ /**
130
+ * Remove events and classes after drag finish
131
+ */
132
+ dragEnd() {
133
+ this._dragInProgress = false;
134
+ this._reorderController.dataController.finishReorder();
135
+ if (this._reorderController.movedCallback
136
+ && this._draggableElementStartIndex !== this._draggableElementIndex) {
137
+ this._reorderController.movedCallback(this._reorderController.dataController.reorderData);
138
+ }
139
+ if (this._reorderController.strategy === ReorderStrategy.Always) {
140
+ this._zone.run(() => {
141
+ if (this._reorderController.doneCallback) {
142
+ const result = this._reorderController.doneCallback(this._reorderController.dataController.reorderData);
143
+ this._waitUntilIsNotDone(result);
144
+ }
145
+ });
146
+ }
147
+ // this._reorderController.dataController.updateOrderByRows(this._rows);
148
+ ///
149
+ this._containerElement.nativeElement.classList.remove('drag-hidden');
150
+ this._draggableElement.classList.remove('draggable-elem');
151
+ window.document.body.classList.remove('reorder-in-progress');
152
+ this._draggableElement = null;
153
+ if (this._draggableElementPreview) {
154
+ this._draggableElementPreview.remove();
155
+ this._draggableElementPreview = null;
156
+ }
157
+ else {
158
+ this._renderer.removeChild(document.body, this._multipleDraggableElementPreview);
159
+ this._multipleDraggableElementPreview = null;
160
+ }
161
+ this._draggableElementHeight = null;
162
+ this._draggableElementIndex = null;
163
+ this._draggableElementStartIndex = null;
164
+ this._selectedRowsDirectives = [];
165
+ window.removeEventListener('touchmove', this._windowTouchMoveHandler);
166
+ window.document.removeEventListener('mousemove', this._dragToHandler);
167
+ window.document.removeEventListener('touchmove', this._dragToHandler);
168
+ window.document.removeEventListener('mouseup', this._dragEndHandler);
169
+ window.document.removeEventListener('touchend', this._dragEndHandler);
170
+ window.document.removeEventListener('touchcancel', this._dragEndHandler);
171
+ this._dragEnd$.next();
172
+ }
173
+ get _isMultipleDrag() {
174
+ return this._reorderController.multiple && this._selectedRowsDirectives.length > 1;
175
+ }
176
+ /**
177
+ * looking row elements and save their dims
178
+ */
179
+ prepareElements() {
180
+ this.lookupChildElements();
181
+ this.calcElementsDimensions();
182
+ }
183
+ /**
184
+ * Store child rows
185
+ */
186
+ lookupChildElements() {
187
+ this._childRowElements = Array.from(this._containerElement.nativeElement.querySelectorAll('tr:not(.drag-hidden)'))
188
+ .reduce((acc, rowElement, index) => {
189
+ const element = { target: rowElement };
190
+ if (rowElement === this._draggableElement) {
191
+ this._draggableElementIndex = index;
192
+ element.active = true;
193
+ }
194
+ acc.push(element);
195
+ return acc;
196
+ }, []);
197
+ }
198
+ /**
199
+ * Calc child rows sizes/offsets
200
+ */
201
+ calcElementsDimensions() {
202
+ this._childRowElements.forEach((el, index) => {
203
+ const dims = el.target.getBoundingClientRect();
204
+ el.top = dims.top;
205
+ el.height = dims.height;
206
+ el.center = dims.top + (dims.height / 2);
207
+ el.index = index;
208
+ });
209
+ }
210
+ /**
211
+ * Init draggable element
212
+ */
213
+ initDraggableElement() {
214
+ const el = this._draggableElement.cloneNode(true);
215
+ const data = this._draggableElement.getBoundingClientRect();
216
+ if (!(this._isMultipleDrag)) {
217
+ el.style.width = `${data.width}px`;
218
+ el.style.left = `${data.left}px`;
219
+ el.style.top = `${data.top}px`;
220
+ el.classList.add('draggable');
221
+ this._containerElement.nativeElement.append(el);
222
+ this._draggableElementPreview = el;
223
+ this._draggableElementHeight = data.height;
224
+ this.updateDraggableDims();
225
+ }
226
+ else {
227
+ // Create preview DIV
228
+ this._containerElement.nativeElement.classList.add('drag-hidden');
229
+ const selectedCount = this._selectedRowsDirectives?.length;
230
+ const previewBlock = this._renderer.createElement('div');
231
+ previewBlock.style.left = `${data.left}px`;
232
+ previewBlock.style.top = `${data.top}px`;
233
+ const text = this._renderer.createText(`${selectedCount} selected items`);
234
+ this._renderer.appendChild(previewBlock, text);
235
+ this._renderer.addClass(previewBlock, 'fs-list-preview-block');
236
+ this._renderer.appendChild(document.body, previewBlock);
237
+ this._multipleDraggableElementPreview = previewBlock;
238
+ }
239
+ }
240
+ /**
241
+ * Looking by stored row elements for overlapped row
242
+ *
243
+ * @param event
244
+ */
245
+ lookupElementUnder(event) {
246
+ const top = event.y || event.clientY;
247
+ const bottom = event.y || event.clientY;
248
+ let elemIndex = null;
249
+ for (let i = 0; i < this._childRowElements.length; i++) {
250
+ const el = this._childRowElements[i];
251
+ if (!el.active) {
252
+ if (top < el.center + (el.height / 2) && el.index < this._draggableElementIndex
253
+ || bottom > el.center - (el.height / 2) && el.index > this._draggableElementIndex) {
254
+ elemIndex = i;
255
+ }
256
+ }
257
+ }
258
+ return elemIndex;
259
+ }
260
+ /**
261
+ * Swap rows
262
+ *
263
+ * @param index
264
+ */
265
+ swapWithIndex(index) {
266
+ const activeIndex = this._draggableElementIndex;
267
+ const selectedRows = this._selectedRowsDirectives
268
+ .map((d) => d.row)
269
+ .filter((d) => d.readyToSwap);
270
+ // Swap rows in global rows stack
271
+ this._reorderController
272
+ .dataController
273
+ .swapRows(this._rows[activeIndex], this._rows[index], selectedRows, this._isMultipleDrag);
274
+ // Swap visible rows
275
+ if (!this._isMultipleDrag) {
276
+ const activeRow = this._rows[activeIndex];
277
+ this._rows[activeIndex] = this._rows[index];
278
+ this._rows[index] = activeRow;
279
+ const activeElement = this._childRowElements[activeIndex].target;
280
+ this._childRowElements[activeIndex].active = false;
281
+ this._childRowElements[activeIndex].target = this._childRowElements[index].target;
282
+ this._childRowElements[index].target = activeElement;
283
+ this._childRowElements[index].active = true;
284
+ }
285
+ this._draggableElementIndex = index;
286
+ this._cdRef.detectChanges();
287
+ }
288
+ /**
289
+ * Update cell width for draggable elem
290
+ */
291
+ updateDraggableDims() {
292
+ const draggableCells = Array.from(this._draggableElementPreview.querySelectorAll('td'));
293
+ Array.from(this._draggableElementPreview.querySelectorAll('td')).forEach((elem, index) => {
294
+ const dims = elem.getBoundingClientRect();
295
+ draggableCells[index].style.width = `${dims.width}px`;
296
+ });
297
+ }
298
+ _waitUntilIsNotDone(doneResult) {
299
+ if (doneResult instanceof Observable) {
300
+ this._reorderController.disableReorderAction();
301
+ doneResult
302
+ .pipe(takeUntil(this._destroy$))
303
+ .subscribe(() => {
304
+ this._reorderController.enableReorderAction();
305
+ });
306
+ }
307
+ }
308
+ _detectSelectedRows() {
309
+ this._draggableChildrenDirectives
310
+ .forEach((dir) => {
311
+ const isRowSelected = this._reorderController.selectionController?.isRowSelected(dir.row.data);
312
+ if (isRowSelected && !dir.row.isGroup) {
313
+ this._selectedRowsDirectives.push(dir);
314
+ }
315
+ });
316
+ }
317
+ /**
318
+ * Fix background when mobile
319
+ *
320
+ * @param e
321
+ */
322
+ touchFix(e) {
323
+ if (!('clientX' in e) && !('clientY' in e)) {
324
+ const touches = e.touches || e.originalEvent.touches;
325
+ if (touches && touches.length) {
326
+ e.clientX = touches[0].clientX;
327
+ e.clientY = touches[0].clientY;
328
+ }
329
+ e.preventDefault();
330
+ }
331
+ }
332
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListDraggableListDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.ReorderController }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
333
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: { _rows: ["rows", "_rows"] }, ngImport: i0 });
334
+ }
335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListDraggableListDirective, decorators: [{
336
+ type: Directive,
337
+ args: [{
338
+ selector: '[fsListDraggableList]',
339
+ }]
340
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.ReorderController }, { type: i0.Renderer2 }]; }, propDecorators: { _rows: [{
341
+ type: Input,
342
+ args: ['rows']
343
+ }] } });
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFTdEYsTUFBTSxPQUFPLDRCQUE0QjtJQTBCN0I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTdCVixvQkFBb0I7SUFDWixpQkFBaUIsQ0FBYztJQUMvQix3QkFBd0IsQ0FBYztJQUN0QyxnQ0FBZ0MsQ0FBYztJQUM5Qyx1QkFBdUIsQ0FBUztJQUNoQyxzQkFBc0IsQ0FBUztJQUMvQiwyQkFBMkIsQ0FBUztJQUU1QyxXQUFXO0lBQ0gsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRXhCLGlCQUFpQixDQUE4QjtJQUMvQyxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNsQyxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUdoQyxLQUFLLENBQVE7SUFDYiw0QkFBNEIsR0FBa0MsRUFBRSxDQUFDO0lBQ2pFLHVCQUF1QixH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UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFJlb3JkZXJDb250cm9sbGVyLCBSZW9yZGVyU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBGc0xpc3REcmFnQ2hpbGRSb3dFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kcmFnZ2FibGUtbGlzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Jvdyc7XG5pbXBvcnQgeyBGc0xpc3REcmFnZ2FibGVSb3dEaXJlY3RpdmUgfSBmcm9tICcuLi9kcmFnZ2FibGUtcm93L2RyYWdnYWJsZS1yb3cuZGlyZWN0aXZlJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNMaXN0RHJhZ2dhYmxlTGlzdF0nLFxufSlcbmV4cG9ydCBjbGFzcyBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlIHtcbiAgLy8gRHJhZ2dhYmxlIEVsZW1lbnRcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfbXVsdGlwbGVEcmFnZ2FibGVFbGVtZW50UHJldmlldzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2RyYWdnYWJsZUVsZW1lbnRIZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlRWxlbWVudEluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgX2RyYWdnYWJsZUVsZW1lbnRTdGFydEluZGV4OiBudW1iZXI7XG5cbiAgLy8gSGFuZGxlcnNcbiAgcHJpdmF0ZSBfZHJhZ1RvSGFuZGxlciA9IHRoaXMuZHJhZ1RvLmJpbmQodGhpcyk7XG4gIHByaXZhdGUgX2RyYWdFbmRIYW5kbGVyID0gdGhpcy5kcmFnRW5kLmJpbmQodGhpcyk7XG5cbiAgcHJpdmF0ZSBfZHJhZ0luUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICBwcml2YXRlIF9jaGlsZFJvd0VsZW1lbnRzOiBGc0xpc3REcmFnQ2hpbGRSb3dFbGVtZW50W107XG4gIHByaXZhdGUgX2RyYWdTdGFydCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kcmFnRW5kJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KCdyb3dzJylcbiAgcHJpdmF0ZSBfcm93czogUm93W107XG4gIHByaXZhdGUgX2RyYWdnYWJsZUNoaWxkcmVuRGlyZWN0aXZlczogRnNMaXN0RHJhZ2dhYmxlUm93RGlyZWN0aXZlW10gPSBbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSb3dzRGlyZWN0aXZlczogRnNMaXN0RHJhZ2dhYmxlUm93RGlyZWN0aXZlW10gPSBbXTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfY29udGFpbmVyRWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9yZW9yZGVyQ29udHJvbGxlcjogUmVvcmRlckNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgKSB7IH1cbiAgXG4gIHByaXZhdGUgX3dpbmRvd1RvdWNoTW92ZUhhbmRsZXIgPSAoKSA9PiB7IFxuICAgIC8vXG4gIH07XG5cbiAgcHVibGljIGdldCBkcmFnU3RhcnQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kcmFnU3RhcnQkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRyYWdFbmQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kcmFnRW5kJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBkcmFnZ2FibGVJdGVtKCk6IFJvdyB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NbdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4XTtcbiAgfVxuICBwdWJsaWMgYWRkRHJhZ2dhYmxlRGlyZWN0aXZlKGRpcjogRnNMaXN0RHJhZ2dhYmxlUm93RGlyZWN0aXZlKTogdm9pZCB7XG4gICAgdGhpcy5fZHJhZ2dhYmxlQ2hpbGRyZW5EaXJlY3RpdmVzLnB1c2goZGlyKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVEcmFnZ2FibGVEaXJlY3RpdmUoZGlyOiBGc0xpc3REcmFnZ2FibGVSb3dEaXJlY3RpdmUpOiB2b2lkIHtcbiAgICBjb25zdCBpZHggPSB0aGlzLl9kcmFnZ2FibGVDaGlsZHJlbkRpcmVjdGl2ZXMuaW5kZXhPZihkaXIpO1xuXG4gICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuX2RyYWdnYWJsZUNoaWxkcmVuRGlyZWN0aXZlcy5zcGxpY2UoaWR4LCAxKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSBkcmFnZ2FibGUgZWxlbWVudHMgYW5kIGFkZCBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIGRyYWdnYWJsZUVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBkcmFnU3RhcnQoZHJhZ2dhYmxlRWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fZHJhZ0luUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5zdGFydENhbGxiYWNrXG4gICAgICAmJiB0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5LkFsd2F5c1xuICAgICkge1xuICAgICAgdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuc3RhcnRDYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMuX2RyYWdJblByb2dyZXNzID0gdHJ1ZTtcblxuICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3Jlb3JkZXItaW4tcHJvZ3Jlc3MnKTtcblxuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnQgPSBkcmFnZ2FibGVFbGVtZW50O1xuXG4gICAgdGhpcy5fZGV0ZWN0U2VsZWN0ZWRSb3dzKCk7XG4gICAgdGhpcy5wcmVwYXJlRWxlbWVudHMoKTtcbiAgICB0aGlzLmluaXREcmFnZ2FibGVFbGVtZW50KCk7XG5cbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50U3RhcnRJbmRleCA9IHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRJbmRleDtcbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RyYWdnYWJsZS1lbGVtJyk7XG5cbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLl93aW5kb3dUb3VjaE1vdmVIYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fZHJhZ1RvSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuX2RyYWdUb0hhbmRsZXIsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgfSk7XG5cbiAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2RyYWdFbmRIYW5kbGVyKTtcbiAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLl9kcmFnRW5kSGFuZGxlcik7XG4gICAgd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgdGhpcy5fZHJhZ0VuZEhhbmRsZXIpO1xuXG4gICAgdGhpcy5fZHJhZ1N0YXJ0JC5uZXh0KCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBNb3ZlIGRyYWdnYWJsZSBlbGVtZW50cyBhbmQgc3dhcCBpdGVtc1xuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHB1YmxpYyBkcmFnVG8oZXZlbnQpIHtcbiAgICB0aGlzLnRvdWNoRml4KGV2ZW50KTtcbiAgICBjb25zdCBlbGVtSW5kZXggPSB0aGlzLmxvb2t1cEVsZW1lbnRVbmRlcihldmVudCk7XG4gICAgY29uc3QgdGFyZ2V0Um93ID0gdGhpcy5fcm93c1tlbGVtSW5kZXhdO1xuXG4gICAgaWYgKHRoaXMuX211bHRpcGxlRHJhZ2dhYmxlRWxlbWVudFByZXZpZXcpIHtcbiAgICAgIHRoaXMuX211bHRpcGxlRHJhZ2dhYmxlRWxlbWVudFByZXZpZXcuc3R5bGUubGVmdCA9IGAke2V2ZW50LmNsaWVudFh9cHhgO1xuICAgICAgdGhpcy5fbXVsdGlwbGVEcmFnZ2FibGVFbGVtZW50UHJldmlldy5zdHlsZS50b3AgPSBgJHtldmVudC5jbGllbnRZfXB4YDtcbiAgICB9XG5cbiAgICAvLyBDYW4gbm90IGRyYWcgYmVmb3JlIGZpcnN0IGdyb3VwIGFuZCBhZnRlciBsYXN0IGdyb3VwXG4gICAgY29uc3Qgc3dhcFdpdGhCb3VuZGFyeUdyb3VwRWxlbWVudCA9XG4gICAgICAoZWxlbUluZGV4ID09PSAwIHx8IGVsZW1JbmRleCA9PT0gdGhpcy5fcm93cy5sZW5ndGggLSAxKVxuICAgICAgJiYgdGFyZ2V0Um93LmlzR3JvdXBcbiAgICAgIC8vIFRPRE8gZml4IGlzQ2hpbGQgJiBhbGxcbiAgICAgICYmICh0aGlzLmRyYWdnYWJsZUl0ZW0gYXMgYW55KS5pc0NoaWxkO1xuXG5cbiAgICBpZiAoIXN3YXBXaXRoQm91bmRhcnlHcm91cEVsZW1lbnQpIHtcbiAgICAgIGlmIChlbGVtSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHRhcmdldFJvdy5yZWFkeVRvU3dhcCkge1xuICAgICAgICAgIHRoaXMuc3dhcFdpdGhJbmRleChlbGVtSW5kZXgpO1xuICAgICAgICAgIGlmICh0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldykge1xuICAgICAgICAgICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudFByZXZpZXcuY2xhc3NMaXN0LnJlbW92ZSgnZnMtbGlzdC1uby1kcm9wJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldykge1xuICAgICAgICAgICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudFByZXZpZXcuY2xhc3NMaXN0LmFkZCgnZnMtbGlzdC1uby1kcm9wJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZJWE1FXG4gICAgICBpZiAodGhpcy5fZHJhZ2dhYmxlRWxlbWVudFByZXZpZXcpIHtcbiAgICAgICAgY29uc3QgdG9wT2Zmc2V0ID0gKGV2ZW50LnkgfHwgZXZlbnQuY2xpZW50WSkgLSAodGhpcy5fZHJhZ2dhYmxlRWxlbWVudEhlaWdodCAvIDIpO1xuICAgICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5zdHlsZS50b3AgPSBgJHt0b3BPZmZzZXR9cHhgO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZXZlbnRzIGFuZCBjbGFzc2VzIGFmdGVyIGRyYWcgZmluaXNoXG4gICAqL1xuICBwdWJsaWMgZHJhZ0VuZCgpIHtcbiAgICB0aGlzLl9kcmFnSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRhdGFDb250cm9sbGVyLmZpbmlzaFJlb3JkZXIoKTtcblxuICAgIGlmICh0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5tb3ZlZENhbGxiYWNrXG4gICAgICAmJiB0aGlzLl9kcmFnZ2FibGVFbGVtZW50U3RhcnRJbmRleCAhPT0gdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4KSB7XG5cbiAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLm1vdmVkQ2FsbGJhY2soXG4gICAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRhdGFDb250cm9sbGVyLnJlb3JkZXJEYXRhLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuc3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5BbHdheXMpIHtcbiAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRvbmVDYWxsYmFjaykge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRvbmVDYWxsYmFjayhcbiAgICAgICAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRhdGFDb250cm9sbGVyLnJlb3JkZXJEYXRhLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLl93YWl0VW50aWxJc05vdERvbmUocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZGF0YUNvbnRyb2xsZXIudXBkYXRlT3JkZXJCeVJvd3ModGhpcy5fcm93cyk7XG4gICAgLy8vXG4gICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2RyYWctaGlkZGVuJyk7XG4gICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnZ2FibGUtZWxlbScpO1xuICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ3Jlb3JkZXItaW4tcHJvZ3Jlc3MnKTtcbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50ID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldykge1xuICAgICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudFByZXZpZXcucmVtb3ZlKCk7XG5cbiAgICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy5fbXVsdGlwbGVEcmFnZ2FibGVFbGVtZW50UHJldmlldyk7XG4gICAgICB0aGlzLl9tdWx0aXBsZURyYWdnYWJsZUVsZW1lbnRQcmV2aWV3ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SGVpZ2h0ID0gbnVsbDtcbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SW5kZXggPSBudWxsO1xuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRTdGFydEluZGV4ID0gbnVsbDtcbiAgICB0aGlzLl9zZWxlY3RlZFJvd3NEaXJlY3RpdmVzID0gW107XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5fd2luZG93VG91Y2hNb3ZlSGFuZGxlcik7XG4gICAgd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuX2RyYWdUb0hhbmRsZXIpO1xuICAgIHdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLl9kcmFnVG9IYW5kbGVyKTtcbiAgICB3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2RyYWdFbmRIYW5kbGVyKTtcbiAgICB3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLl9kcmFnRW5kSGFuZGxlcik7XG4gICAgd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgdGhpcy5fZHJhZ0VuZEhhbmRsZXIpO1xuXG4gICAgdGhpcy5fZHJhZ0VuZCQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2lzTXVsdGlwbGVEcmFnKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5tdWx0aXBsZSAmJiB0aGlzLl9zZWxlY3RlZFJvd3NEaXJlY3RpdmVzLmxlbmd0aCA+IDE7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBsb29raW5nIHJvdyBlbGVtZW50cyBhbmQgc2F2ZSB0aGVpciBkaW1zXG4gICAqL1xuICBwcml2YXRlIHByZXBhcmVFbGVtZW50cygpIHtcbiAgICB0aGlzLmxvb2t1cENoaWxkRWxlbWVudHMoKTtcbiAgICB0aGlzLmNhbGNFbGVtZW50c0RpbWVuc2lvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSBjaGlsZCByb3dzXG4gICAqL1xuICBwcml2YXRlIGxvb2t1cENoaWxkRWxlbWVudHMoKSB7XG4gICAgdGhpcy5fY2hpbGRSb3dFbGVtZW50cyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyOm5vdCguZHJhZy1oaWRkZW4pJykpXG4gICAgICAucmVkdWNlKChhY2M6IGFueVtdLCByb3dFbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSB7IHRhcmdldDogcm93RWxlbWVudCB9O1xuXG4gICAgICAgIGlmIChyb3dFbGVtZW50ID09PSB0aGlzLl9kcmFnZ2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgZWxlbWVudC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYWNjLnB1c2goZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKSBhcyBGc0xpc3REcmFnQ2hpbGRSb3dFbGVtZW50W107XG4gIH1cblxuICAvKipcbiAgICogQ2FsYyBjaGlsZCByb3dzIHNpemVzL29mZnNldHNcbiAgICovXG4gIHByaXZhdGUgY2FsY0VsZW1lbnRzRGltZW5zaW9ucygpIHtcbiAgICB0aGlzLl9jaGlsZFJvd0VsZW1lbnRzLmZvckVhY2goKGVsOiBhbnksIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBkaW1zID0gZWwudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgZWwudG9wID0gZGltcy50b3A7XG4gICAgICBlbC5oZWlnaHQgPSBkaW1zLmhlaWdodDtcbiAgICAgIGVsLmNlbnRlciA9IGRpbXMudG9wICsgKGRpbXMuaGVpZ2h0IC8gMik7XG4gICAgICBlbC5pbmRleCA9IGluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgZHJhZ2dhYmxlIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgaW5pdERyYWdnYWJsZUVsZW1lbnQoKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzLl9kcmFnZ2FibGVFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZHJhZ2dhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmICghKHRoaXMuX2lzTXVsdGlwbGVEcmFnKSkge1xuICAgICAgZWwuc3R5bGUud2lkdGggPSBgJHtkYXRhLndpZHRofXB4YDtcbiAgICAgIGVsLnN0eWxlLmxlZnQgPSBgJHtkYXRhLmxlZnR9cHhgO1xuICAgICAgZWwuc3R5bGUudG9wID0gYCR7ZGF0YS50b3B9cHhgO1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZCgnZHJhZ2dhYmxlJyk7XG5cbiAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudC5hcHBlbmQoZWwpO1xuXG4gICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldyA9IGVsO1xuICAgICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEhlaWdodCA9IGRhdGEuaGVpZ2h0O1xuXG4gICAgICB0aGlzLnVwZGF0ZURyYWdnYWJsZURpbXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIHByZXZpZXcgRElWXG4gICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZHJhZy1oaWRkZW4nKTtcblxuICAgICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IHRoaXMuX3NlbGVjdGVkUm93c0RpcmVjdGl2ZXM/Lmxlbmd0aDtcbiAgICAgIGNvbnN0IHByZXZpZXdCbG9jayA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgcHJldmlld0Jsb2NrLnN0eWxlLmxlZnQgPSBgJHtkYXRhLmxlZnR9cHhgO1xuICAgICAgcHJldmlld0Jsb2NrLnN0eWxlLnRvcCA9IGAke2RhdGEudG9wfXB4YDtcblxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZVRleHQoYCR7c2VsZWN0ZWRDb3VudH0gc2VsZWN0ZWQgaXRlbXNgKTtcblxuICAgICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQocHJldmlld0Jsb2NrLCB0ZXh0KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHByZXZpZXdCbG9jaywgJ2ZzLWxpc3QtcHJldmlldy1ibG9jaycpO1xuICAgICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgcHJldmlld0Jsb2NrKTtcbiAgICAgIHRoaXMuX211bHRpcGxlRHJhZ2dhYmxlRWxlbWVudFByZXZpZXcgPSBwcmV2aWV3QmxvY2s7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogTG9va2luZyBieSBzdG9yZWQgcm93IGVsZW1lbnRzIGZvciBvdmVybGFwcGVkIHJvd1xuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHByaXZhdGUgbG9va3VwRWxlbWVudFVuZGVyKGV2ZW50KSB7XG4gICAgY29uc3QgdG9wID0gZXZlbnQueSB8fCBldmVudC5jbGllbnRZO1xuICAgIGNvbnN0IGJvdHRvbSA9IGV2ZW50LnkgfHwgZXZlbnQuY2xpZW50WTtcbiAgICBsZXQgZWxlbUluZGV4ID0gbnVsbDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fY2hpbGRSb3dFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWwgPSB0aGlzLl9jaGlsZFJvd0VsZW1lbnRzW2ldO1xuXG4gICAgICBpZiAoIWVsLmFjdGl2ZSkge1xuICAgICAgICBpZiAodG9wIDwgZWwuY2VudGVyICsgKGVsLmhlaWdodCAvIDIpICYmIGVsLmluZGV4IDwgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4XG4gICAgICAgICAgfHwgYm90dG9tID4gZWwuY2VudGVyIC0gKGVsLmhlaWdodCAvIDIpICYmIGVsLmluZGV4ID4gdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4KSB7XG4gICAgICAgICAgZWxlbUluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogU3dhcCByb3dzXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBzd2FwV2l0aEluZGV4KGluZGV4KSB7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SW5kZXg7XG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5fc2VsZWN0ZWRSb3dzRGlyZWN0aXZlc1xuICAgICAgLm1hcCgoZCkgPT4gZC5yb3cpXG4gICAgICAuZmlsdGVyKChkKSA9PiBkLnJlYWR5VG9Td2FwKTtcblxuICAgIC8vIFN3YXAgcm93cyBpbiBnbG9iYWwgcm93cyBzdGFja1xuICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyXG4gICAgICAuZGF0YUNvbnRyb2xsZXJcbiAgICAgIC5zd2FwUm93cyhcbiAgICAgICAgdGhpcy5fcm93c1thY3RpdmVJbmRleF0sXG4gICAgICAgIHRoaXMuX3Jvd3NbaW5kZXhdLFxuICAgICAgICBzZWxlY3RlZFJvd3MsXG4gICAgICAgIHRoaXMuX2lzTXVsdGlwbGVEcmFnLFxuICAgICAgKTtcblxuICAgIC8vIFN3YXAgdmlzaWJsZSByb3dzXG4gICAgaWYgKCF0aGlzLl9pc011bHRpcGxlRHJhZykge1xuICAgICAgY29uc3QgYWN0aXZlUm93ID0gdGhpcy5fcm93c1thY3RpdmVJbmRleF07XG4gICAgICB0aGlzLl9yb3dzW2FjdGl2ZUluZGV4XSA9IHRoaXMuX3Jvd3NbaW5kZXhdO1xuICAgICAgdGhpcy5fcm93c1tpbmRleF0gPSBhY3RpdmVSb3c7XG5cbiAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLl9jaGlsZFJvd0VsZW1lbnRzW2FjdGl2ZUluZGV4XS50YXJnZXQ7XG4gICAgICB0aGlzLl9jaGlsZFJvd0VsZW1lbnRzW2FjdGl2ZUluZGV4XS5hY3RpdmUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5fY2hpbGRSb3dFbGVtZW50c1thY3RpdmVJbmRleF0udGFyZ2V0ID0gdGhpcy5fY2hpbGRSb3dFbGVtZW50c1tpbmRleF0udGFyZ2V0O1xuICAgICAgdGhpcy5fY2hpbGRSb3dFbGVtZW50c1tpbmRleF0udGFyZ2V0ID0gYWN0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMuX2NoaWxkUm93RWxlbWVudHNbaW5kZXhdLmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjZWxsIHdpZHRoIGZvciBkcmFnZ2FibGUgZWxlbVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVEcmFnZ2FibGVEaW1zKCkge1xuICAgIGNvbnN0IGRyYWdnYWJsZUNlbGxzOiBhbnkgPSBBcnJheS5mcm9tKHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJykpO1xuXG4gICAgQXJyYXkuZnJvbShcbiAgICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyksXG4gICAgKS5mb3JFYWNoKChlbGVtOiBhbnksIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBkaW1zID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGRyYWdnYWJsZUNlbGxzW2luZGV4XS5zdHlsZS53aWR0aCA9IGAke2RpbXMud2lkdGh9cHhgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2FpdFVudGlsSXNOb3REb25lKGRvbmVSZXN1bHQ6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAoZG9uZVJlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRpc2FibGVSZW9yZGVyQWN0aW9uKCk7XG5cbiAgICAgIGRvbmVSZXN1bHRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlUmVvcmRlckFjdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXRlY3RTZWxlY3RlZFJvd3MoKTogdm9pZCB7XG4gICAgdGhpcy5fZHJhZ2dhYmxlQ2hpbGRyZW5EaXJlY3RpdmVzXG4gICAgICAuZm9yRWFjaCgoZGlyOiBGc0xpc3REcmFnZ2FibGVSb3dEaXJlY3RpdmUpID0+IHtcbiAgICAgICAgY29uc3QgaXNSb3dTZWxlY3RlZCA9IHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLnNlbGVjdGlvbkNvbnRyb2xsZXI/LmlzUm93U2VsZWN0ZWQoZGlyLnJvdy5kYXRhKTtcblxuICAgICAgICBpZiAoaXNSb3dTZWxlY3RlZCAmJiAhZGlyLnJvdy5pc0dyb3VwKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzRGlyZWN0aXZlcy5wdXNoKGRpcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpeCBiYWNrZ3JvdW5kIHdoZW4gbW9iaWxlXG4gICAqXG4gICAqIEBwYXJhbSBlXG4gICAqL1xuICBwcml2YXRlIHRvdWNoRml4KGUpIHtcbiAgICBpZiAoISgnY2xpZW50WCcgaW4gZSkgJiYgISgnY2xpZW50WScgaW4gZSkpIHtcbiAgICAgIGNvbnN0IHRvdWNoZXMgPSBlLnRvdWNoZXMgfHwgZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgICBpZiAodG91Y2hlcyAmJiB0b3VjaGVzLmxlbmd0aCkge1xuICAgICAgICBlLmNsaWVudFggPSB0b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICAgIGUuY2xpZW50WSA9IHRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,83 @@
1
+ import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { ReorderController } from '../../classes/reorder-controller';
5
+ import { Row } from '../../models/row';
6
+ import { FsListDraggableListDirective } from '../draggable-list/draggable-list.directive';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../classes/reorder-controller";
9
+ import * as i2 from "../draggable-list/draggable-list.directive";
10
+ export class FsListDraggableRowDirective {
11
+ _el;
12
+ _renderer;
13
+ _reorderController;
14
+ _draggableList;
15
+ row;
16
+ _destroy$ = new Subject();
17
+ constructor(_el, _renderer, _reorderController, _draggableList) {
18
+ this._el = _el;
19
+ this._renderer = _renderer;
20
+ this._reorderController = _reorderController;
21
+ this._draggableList = _draggableList;
22
+ }
23
+ get elRef() {
24
+ return this._el;
25
+ }
26
+ ngOnInit() {
27
+ if (this._reorderController.moveDropCallback) {
28
+ this._listenDragEvents();
29
+ }
30
+ this._draggableList.addDraggableDirective(this);
31
+ }
32
+ ngOnDestroy() {
33
+ this._draggableList.removeDraggableDirective(this);
34
+ this._destroy$.next();
35
+ this._destroy$.complete();
36
+ }
37
+ dragHide() {
38
+ this._el.nativeElement.classList.add('drag-hidden');
39
+ }
40
+ _listenDragEvents() {
41
+ this._draggableList
42
+ .dragStart$
43
+ .pipe(takeUntil(this._destroy$))
44
+ .subscribe(() => {
45
+ this._markReadyToSwapRows();
46
+ });
47
+ this._draggableList
48
+ .dragEnd$
49
+ .pipe(takeUntil(this._destroy$))
50
+ .subscribe(() => {
51
+ this._unmarkRows();
52
+ });
53
+ }
54
+ _markReadyToSwapRows() {
55
+ const currentEl = this.row;
56
+ const targetEl = this._draggableList.draggableItem;
57
+ this.row.readyToSwap = this._reorderController.moveDropCallback({
58
+ row1: currentEl?.data,
59
+ row2: targetEl?.data,
60
+ group1: currentEl?.parent?.data,
61
+ group2: targetEl?.parent?.data,
62
+ });
63
+ if (!this.row.readyToSwap) {
64
+ this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');
65
+ }
66
+ }
67
+ _unmarkRows() {
68
+ if (!this.row.readyToSwap) {
69
+ this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');
70
+ }
71
+ }
72
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListDraggableRowDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ReorderController }, { token: i2.FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Directive });
73
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: { row: "row" }, ngImport: i0 });
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListDraggableRowDirective, decorators: [{
76
+ type: Directive,
77
+ args: [{
78
+ selector: '[fsListDraggableRow]',
79
+ }]
80
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ReorderController }, { type: i2.FsListDraggableListDirective }]; }, propDecorators: { row: [{
81
+ type: Input
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLXJvdy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLXJvdy9kcmFnZ2FibGUtcm93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7QUFNMUYsTUFBTSxPQUFPLDJCQUEyQjtJQVE1QjtJQUNBO0lBQ0E7SUFDQTtJQVJILEdBQUcsQ0FBTTtJQUVSLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXhDLFlBQ1UsR0FBZSxFQUNmLFNBQW9CLEVBQ3BCLGtCQUFxQyxFQUNyQyxjQUE0QztRQUg1QyxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLG1CQUFjLEdBQWQsY0FBYyxDQUE4QjtJQUNsRCxDQUFDO0lBRUwsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxjQUFjO2FBQ2hCLFVBQVU7YUFDVixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsY0FBYzthQUNoQixRQUFRO2FBQ1IsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztRQUVuRCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQzdEO1lBQ0UsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJO1lBQ3JCLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSTtZQUNwQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJO1lBQy9CLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUk7U0FDL0IsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLENBQUM7U0FDNUU7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUU7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUseUJBQXlCLENBQUMsQ0FBQztTQUMvRTtJQUNILENBQUM7d0dBN0VVLDJCQUEyQjs0RkFBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUh2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7aUJBQ2pDO29NQUlRLEdBQUc7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSZW9yZGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzTGlzdERyYWdnYWJsZVJvd10nLFxufSlcbmV4cG9ydCBjbGFzcyBGc0xpc3REcmFnZ2FibGVSb3dEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvdzogUm93O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX3Jlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9kcmFnZ2FibGVMaXN0OiBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlLFxuICApIHsgfVxuXG4gIHB1YmxpYyBnZXQgZWxSZWYoKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX2VsO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5tb3ZlRHJvcENhbGxiYWNrKSB7XG4gICAgICB0aGlzLl9saXN0ZW5EcmFnRXZlbnRzKCk7XG4gICAgfVxuICAgIHRoaXMuX2RyYWdnYWJsZUxpc3QuYWRkRHJhZ2dhYmxlRGlyZWN0aXZlKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2RyYWdnYWJsZUxpc3QucmVtb3ZlRHJhZ2dhYmxlRGlyZWN0aXZlKHRoaXMpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGRyYWdIaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZHJhZy1oaWRkZW4nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkRyYWdFdmVudHMoKSB7XG4gICAgdGhpcy5fZHJhZ2dhYmxlTGlzdFxuICAgICAgLmRyYWdTdGFydCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX21hcmtSZWFkeVRvU3dhcFJvd3MoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZHJhZ2dhYmxlTGlzdFxuICAgICAgLmRyYWdFbmQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl91bm1hcmtSb3dzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX21hcmtSZWFkeVRvU3dhcFJvd3MoKSB7XG4gICAgY29uc3QgY3VycmVudEVsID0gdGhpcy5yb3c7XG4gICAgY29uc3QgdGFyZ2V0RWwgPSB0aGlzLl9kcmFnZ2FibGVMaXN0LmRyYWdnYWJsZUl0ZW07XG5cbiAgICB0aGlzLnJvdy5yZWFkeVRvU3dhcCA9IHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLm1vdmVEcm9wQ2FsbGJhY2soXG4gICAgICB7XG4gICAgICAgIHJvdzE6IGN1cnJlbnRFbD8uZGF0YSxcbiAgICAgICAgcm93MjogdGFyZ2V0RWw/LmRhdGEsXG4gICAgICAgIGdyb3VwMTogY3VycmVudEVsPy5wYXJlbnQ/LmRhdGEsXG4gICAgICAgIGdyb3VwMjogdGFyZ2V0RWw/LnBhcmVudD8uZGF0YSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmICghdGhpcy5yb3cucmVhZHlUb1N3YXApIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICdmcy1saXN0LXN3YXAtcmVzdHJpY3RlZCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VubWFya1Jvd3MoKSB7XG4gICAgaWYgKCF0aGlzLnJvdy5yZWFkeVRvU3dhcCkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ2ZzLWxpc3Qtc3dhcC1yZXN0cmljdGVkJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,13 +1,13 @@
1
1
  import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class FsListEmptyStateDirective {
4
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListEmptyStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsListEmptyStateDirective, selector: "[fs-list-empty-state]", ngImport: i0 });
4
6
  }
5
- FsListEmptyStateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListEmptyStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- FsListEmptyStateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListEmptyStateDirective, selector: "[fs-list-empty-state]", ngImport: i0 });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListEmptyStateDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListEmptyStateDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  selector: '[fs-list-empty-state]',
11
11
  }]
12
12
  }] });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUsxQyxNQUFNLE9BQU8seUJBQXlCOzt1SEFBekIseUJBQXlCOzJHQUF6Qix5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1lbXB0eS1zdGF0ZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBGc0xpc3RFbXB0eVN0YXRlRGlyZWN0aXZlIHt9XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUsxQyxNQUFNLE9BQU8seUJBQXlCO3dHQUF6Qix5QkFBeUI7NEZBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1lbXB0eS1zdGF0ZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBGc0xpc3RFbXB0eVN0YXRlRGlyZWN0aXZlIHt9XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FsListFooterDirective {
4
+ colspan;
5
+ align;
6
+ className;
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
8
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListFooterDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{ selector: '[fs-list-footer]' }]
13
+ }], propDecorators: { colspan: [{
14
+ type: Input
15
+ }], align: [{
16
+ type: Input
17
+ }], className: [{
18
+ type: Input,
19
+ args: ['class']
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9mb290ZXIvZm9vdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHakQsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQixPQUFPLENBQUM7SUFDUixLQUFLLENBQVM7SUFDUCxTQUFTLENBQW9CO3dHQUh6QyxxQkFBcUI7NEZBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTs4QkFFekIsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNpQixTQUFTO3NCQUEvQixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmcy1saXN0LWZvb3Rlcl0nIH0pXG5leHBvcnQgY2xhc3MgRnNMaXN0Rm9vdGVyRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgcHVibGljIGNvbHNwYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGlnbjogc3RyaW5nO1xuICBASW5wdXQoJ2NsYXNzJykgcHVibGljIGNsYXNzTmFtZTogc3RyaW5nIHwgc3RyaW5nW107XG59XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/group-expand-notifier.service";
5
+ export class FsListGroupExpandTriggerDirective {
6
+ _expandNotifier;
7
+ click(event) {
8
+ event.preventDefault();
9
+ event.stopPropagation();
10
+ this._expandNotifier.toggleExpandStatus(this.row);
11
+ }
12
+ row;
13
+ constructor(_expandNotifier) {
14
+ this._expandNotifier = _expandNotifier;
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListGroupExpandTriggerDirective, deps: [{ token: i1.GroupExpandNotifierService }], target: i0.ɵɵFactoryTarget.Directive });
17
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsListGroupExpandTriggerDirective, selector: "[fsListGroupExpandTrigger]", inputs: { row: "row" }, host: { listeners: { "click": "click($event)" } }, ngImport: i0 });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListGroupExpandTriggerDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{ selector: '[fsListGroupExpandTrigger]' }]
22
+ }], ctorParameters: function () { return [{ type: i1.GroupExpandNotifierService }]; }, propDecorators: { click: [{
23
+ type: HostListener,
24
+ args: ['click', ['$event']]
25
+ }], row: [{
26
+ type: Input
27
+ }] } });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtZXhwYW5kLXRyaWdnZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL2dyb3VwLWV4cGFuZC10cmlnZ2VyL2dyb3VwLWV4cGFuZC10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7OztBQUkxRixNQUFNLE9BQU8saUNBQWlDO0lBWXhCO0lBVGIsS0FBSyxDQUFDLEtBQUs7UUFDaEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBR00sR0FBRyxDQUFDO0lBRVgsWUFBb0IsZUFBMkM7UUFBM0Msb0JBQWUsR0FBZixlQUFlLENBQTRCO0lBQUcsQ0FBQzt3R0FaeEQsaUNBQWlDOzRGQUFqQyxpQ0FBaUM7OzRGQUFqQyxpQ0FBaUM7a0JBRDdDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsNEJBQTRCLEVBQUU7aUhBSTVDLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUTFCLEdBQUc7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cC1leHBhbmQtbm90aWZpZXIuc2VydmljZSc7XG5cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2ZzTGlzdEdyb3VwRXhwYW5kVHJpZ2dlcl0nIH0pXG5leHBvcnQgY2xhc3MgRnNMaXN0R3JvdXBFeHBhbmRUcmlnZ2VyRGlyZWN0aXZlIHtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBjbGljayhldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5fZXhwYW5kTm90aWZpZXIudG9nZ2xlRXhwYW5kU3RhdHVzKHRoaXMucm93KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3c7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXhwYW5kTm90aWZpZXI6IEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlKSB7fVxufVxuIl19
@@ -2,13 +2,13 @@ import { Directive } from '@angular/core';
2
2
  import { FsListCellDirective } from '../cell/cell.directive';
3
3
  import * as i0 from "@angular/core";
4
4
  export class FsListGroupFooterDirective extends FsListCellDirective {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListGroupFooterDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsListGroupFooterDirective, selector: "[fs-list-group-footer]", usesInheritance: true, ngImport: i0 });
5
7
  }
6
- FsListGroupFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupFooterDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
7
- FsListGroupFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListGroupFooterDirective, selector: "[fs-list-group-footer]", usesInheritance: true, ngImport: i0 });
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupFooterDirective, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListGroupFooterDirective, decorators: [{
9
9
  type: Directive,
10
10
  args: [{
11
11
  selector: '[fs-list-group-footer]'
12
12
  }]
13
13
  }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtZm9vdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9ncm91cC1mb290ZXIvZ3JvdXAtZm9vdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU03RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1COzt3SEFBdEQsMEJBQTBCOzRHQUExQiwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0xpc3RDZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi4vY2VsbC9jZWxsLmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3QtZ3JvdXAtZm9vdGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0R3JvdXBGb290ZXJEaXJlY3RpdmUgZXh0ZW5kcyBGc0xpc3RDZWxsRGlyZWN0aXZlIHt9XG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtZm9vdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9ncm91cC1mb290ZXIvZ3JvdXAtZm9vdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU03RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1CO3dHQUF0RCwwQkFBMEI7NEZBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0xpc3RDZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi4vY2VsbC9jZWxsLmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3QtZ3JvdXAtZm9vdGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0R3JvdXBGb290ZXJEaXJlY3RpdmUgZXh0ZW5kcyBGc0xpc3RDZWxsRGlyZWN0aXZlIHt9XG4iXX0=
@@ -2,13 +2,13 @@ import { Directive } from '@angular/core';
2
2
  import { FsListCellDirective } from '../cell/cell.directive';
3
3
  import * as i0 from "@angular/core";
4
4
  export class FsListGroupHeaderDirective extends FsListCellDirective {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListGroupHeaderDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsListGroupHeaderDirective, selector: "[fs-list-group-cell],[fs-list-group-header]", usesInheritance: true, ngImport: i0 });
5
7
  }
6
- FsListGroupHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupHeaderDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
7
- FsListGroupHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsListGroupHeaderDirective, selector: "[fs-list-group-cell],[fs-list-group-header]", usesInheritance: true, ngImport: i0 });
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsListGroupHeaderDirective, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsListGroupHeaderDirective, decorators: [{
9
9
  type: Directive,
10
10
  args: [{
11
11
  selector: '[fs-list-group-cell],[fs-list-group-header]'
12
12
  }]
13
13
  }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9ncm91cC1oZWFkZXIvZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU03RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1COzt3SEFBdEQsMEJBQTBCOzRHQUExQiwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkNBQTZDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0xpc3RDZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi4vY2VsbC9jZWxsLmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3QtZ3JvdXAtY2VsbF0sW2ZzLWxpc3QtZ3JvdXAtaGVhZGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUgZXh0ZW5kcyBGc0xpc3RDZWxsRGlyZWN0aXZlIHt9XG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlyZWN0aXZlcy9ncm91cC1oZWFkZXIvZ3JvdXAtaGVhZGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU03RCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1CO3dHQUF0RCwwQkFBMEI7NEZBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkNBQTZDO2lCQUN4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0xpc3RDZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi4vY2VsbC9jZWxsLmRpcmVjdGl2ZSc7XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3QtZ3JvdXAtY2VsbF0sW2ZzLWxpc3QtZ3JvdXAtaGVhZGVyXSdcbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0R3JvdXBIZWFkZXJEaXJlY3RpdmUgZXh0ZW5kcyBGc0xpc3RDZWxsRGlyZWN0aXZlIHt9XG4iXX0=