@servicetitan/table 31.2.0 → 31.3.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 (181) hide show
  1. package/dist/demo/column-hiding/index.js +1 -0
  2. package/dist/demo/column-hiding/index.js.map +1 -1
  3. package/dist/demo/column-hiding/product.js +7 -6
  4. package/dist/demo/column-hiding/product.js.map +1 -1
  5. package/dist/demo/column-hiding/products.js +12 -11
  6. package/dist/demo/column-hiding/products.js.map +1 -1
  7. package/dist/demo/column-hiding/table.js +126 -32
  8. package/dist/demo/column-hiding/table.js.map +1 -1
  9. package/dist/demo/column-hiding/table.store.js +30 -27
  10. package/dist/demo/column-hiding/table.store.js.map +1 -1
  11. package/dist/demo/filters/async-select-filter.js +59 -12
  12. package/dist/demo/filters/async-select-filter.js.map +1 -1
  13. package/dist/demo/filters/categories.js +20 -16
  14. package/dist/demo/filters/categories.js.map +1 -1
  15. package/dist/demo/filters/multiselect-filter.js +37 -5
  16. package/dist/demo/filters/multiselect-filter.js.map +1 -1
  17. package/dist/demo/filters/range-filter.js +104 -10
  18. package/dist/demo/filters/range-filter.js.map +1 -1
  19. package/dist/demo/filters/select-filter.js +139 -41
  20. package/dist/demo/filters/select-filter.js.map +1 -1
  21. package/dist/demo/filters/single-select-filter.js +109 -18
  22. package/dist/demo/filters/single-select-filter.js.map +1 -1
  23. package/dist/demo/filters/table.store.js +77 -86
  24. package/dist/demo/filters/table.store.js.map +1 -1
  25. package/dist/demo/footer-page-size/index.js +1 -0
  26. package/dist/demo/footer-page-size/index.js.map +1 -1
  27. package/dist/demo/footer-page-size/table.js +82 -6
  28. package/dist/demo/footer-page-size/table.js.map +1 -1
  29. package/dist/demo/index.js +1 -0
  30. package/dist/demo/index.js.map +1 -1
  31. package/dist/demo/master-detail/detail-table.js +41 -9
  32. package/dist/demo/master-detail/detail-table.js.map +1 -1
  33. package/dist/demo/master-detail/detail-table.store.js +60 -56
  34. package/dist/demo/master-detail/detail-table.store.js.map +1 -1
  35. package/dist/demo/master-detail/index.js +1 -0
  36. package/dist/demo/master-detail/index.js.map +1 -1
  37. package/dist/demo/master-detail/master-table.store.js +65 -61
  38. package/dist/demo/master-detail/master-table.store.js.map +1 -1
  39. package/dist/demo/master-detail/product-detail.js +2 -1
  40. package/dist/demo/master-detail/product-detail.js.map +1 -1
  41. package/dist/demo/master-detail/product-details.js +10 -9
  42. package/dist/demo/master-detail/product-details.js.map +1 -1
  43. package/dist/demo/master-detail/product.js +7 -6
  44. package/dist/demo/master-detail/product.js.map +1 -1
  45. package/dist/demo/master-detail/products.js +12 -11
  46. package/dist/demo/master-detail/products.js.map +1 -1
  47. package/dist/demo/master-detail/table-master-detail.js +39 -8
  48. package/dist/demo/master-detail/table-master-detail.js.map +1 -1
  49. package/dist/demo/overview/actions-cell.js +47 -10
  50. package/dist/demo/overview/actions-cell.js.map +1 -1
  51. package/dist/demo/overview/index.js +1 -0
  52. package/dist/demo/overview/index.js.map +1 -1
  53. package/dist/demo/overview/product.js +7 -6
  54. package/dist/demo/overview/product.js.map +1 -1
  55. package/dist/demo/overview/products.js +15 -14
  56. package/dist/demo/overview/products.js.map +1 -1
  57. package/dist/demo/overview/table.js +176 -21
  58. package/dist/demo/overview/table.js.map +1 -1
  59. package/dist/demo/overview/table.store.js +45 -51
  60. package/dist/demo/overview/table.store.js.map +1 -1
  61. package/dist/demo/row-details/index.js +1 -0
  62. package/dist/demo/row-details/index.js.map +1 -1
  63. package/dist/demo/row-details/row-details-table.js +52 -5
  64. package/dist/demo/row-details/row-details-table.js.map +1 -1
  65. package/dist/demo/row-details/row-details-table.store.js +27 -19
  66. package/dist/demo/row-details/row-details-table.store.js.map +1 -1
  67. package/dist/demo/state-caching/beverages.js +11 -10
  68. package/dist/demo/state-caching/beverages.js.map +1 -1
  69. package/dist/demo/state-caching/index.js +1 -0
  70. package/dist/demo/state-caching/index.js.map +1 -1
  71. package/dist/demo/state-caching/product.js +2 -1
  72. package/dist/demo/state-caching/product.js.map +1 -1
  73. package/dist/demo/state-caching/products.js +12 -11
  74. package/dist/demo/state-caching/products.js.map +1 -1
  75. package/dist/demo/state-caching/state-caching-table.js +44 -3
  76. package/dist/demo/state-caching/state-caching-table.js.map +1 -1
  77. package/dist/demo/state-caching/state-caching-table.store.js +42 -54
  78. package/dist/demo/state-caching/state-caching-table.store.js.map +1 -1
  79. package/dist/details/expand-column.js +31 -7
  80. package/dist/details/expand-column.js.map +1 -1
  81. package/dist/details/index.js +1 -0
  82. package/dist/details/index.js.map +1 -1
  83. package/dist/editable-cell/boolean-editable-cell.js +15 -4
  84. package/dist/editable-cell/boolean-editable-cell.js.map +1 -1
  85. package/dist/editable-cell/get-action-cell.js +14 -7
  86. package/dist/editable-cell/get-action-cell.js.map +1 -1
  87. package/dist/editable-cell/get-editable-cell.js +16 -8
  88. package/dist/editable-cell/get-editable-cell.js.map +1 -1
  89. package/dist/editable-cell/get-select-editable-cell.js +19 -5
  90. package/dist/editable-cell/get-select-editable-cell.js.map +1 -1
  91. package/dist/editable-cell/index.js +1 -0
  92. package/dist/editable-cell/index.js.map +1 -1
  93. package/dist/editable-cell/text-editable-cell.js +23 -5
  94. package/dist/editable-cell/text-editable-cell.js.map +1 -1
  95. package/dist/export/export.js +38 -1
  96. package/dist/export/export.js.map +1 -1
  97. package/dist/export/export.module.css.d.ts +3 -0
  98. package/dist/export/index.js +1 -0
  99. package/dist/export/index.js.map +1 -1
  100. package/dist/filters/async-select/async-select-filter.js +167 -132
  101. package/dist/filters/async-select/async-select-filter.js.map +1 -1
  102. package/dist/filters/column-menu-filters.js +39 -8
  103. package/dist/filters/column-menu-filters.js.map +1 -1
  104. package/dist/filters/datetime-filter/datetime-filter.js +73 -50
  105. package/dist/filters/datetime-filter/datetime-filter.js.map +1 -1
  106. package/dist/filters/field-values-filter.js +80 -72
  107. package/dist/filters/field-values-filter.js.map +1 -1
  108. package/dist/filters/index.js +1 -0
  109. package/dist/filters/index.js.map +1 -1
  110. package/dist/filters/multiselect-filter/multiselect-filter.js +77 -73
  111. package/dist/filters/multiselect-filter/multiselect-filter.js.map +1 -1
  112. package/dist/filters/numeric-filter-extended/numeric-extended-operators.js +10 -3
  113. package/dist/filters/numeric-filter-extended/numeric-extended-operators.js.map +1 -1
  114. package/dist/filters/numeric-filter-extended/numeric-filter-extended.js +39 -16
  115. package/dist/filters/numeric-filter-extended/numeric-filter-extended.js.map +1 -1
  116. package/dist/filters/range-filter/range-filter.js +76 -72
  117. package/dist/filters/range-filter/range-filter.js.map +1 -1
  118. package/dist/filters/select-filter/object-search.js +4 -3
  119. package/dist/filters/select-filter/object-search.js.map +1 -1
  120. package/dist/filters/select-filter/operators.js +6 -5
  121. package/dist/filters/select-filter/operators.js.map +1 -1
  122. package/dist/filters/select-filter/select-filter.js +180 -145
  123. package/dist/filters/select-filter/select-filter.js.map +1 -1
  124. package/dist/filters/select-filter/value-getter.js +2 -1
  125. package/dist/filters/select-filter/value-getter.js.map +1 -1
  126. package/dist/filters/single-select/single-select-filter.js +29 -15
  127. package/dist/filters/single-select/single-select-filter.js.map +1 -1
  128. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js +114 -67
  129. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js.map +1 -1
  130. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.module.css.d.ts +7 -0
  131. package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js +10 -3
  132. package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js.map +1 -1
  133. package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js +77 -55
  134. package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js.map +1 -1
  135. package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js +23 -10
  136. package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js.map +1 -1
  137. package/dist/filters/time-filter/time-filter.js +63 -49
  138. package/dist/filters/time-filter/time-filter.js.map +1 -1
  139. package/dist/index.js +4 -2
  140. package/dist/index.js.map +1 -1
  141. package/dist/select-cell/index.js +1 -0
  142. package/dist/select-cell/index.js.map +1 -1
  143. package/dist/select-cell/select-cell.js +36 -11
  144. package/dist/select-cell/select-cell.js.map +1 -1
  145. package/dist/select-cell/select-cell.module.css.d.ts +3 -0
  146. package/dist/table-state.js +479 -660
  147. package/dist/table-state.js.map +1 -1
  148. package/dist/table.js +235 -250
  149. package/dist/table.js.map +1 -1
  150. package/dist/table.module.css.d.ts +5 -0
  151. package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js +97 -5
  152. package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js.map +1 -1
  153. package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js +71 -97
  154. package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js.map +1 -1
  155. package/dist/use-observing-table-state/index.js +1 -0
  156. package/dist/use-observing-table-state/index.js.map +1 -1
  157. package/dist/use-observing-table-state/use-observing-table-state.js +26 -20
  158. package/dist/use-observing-table-state/use-observing-table-state.js.map +1 -1
  159. package/dist/utils/filters.js +14 -9
  160. package/dist/utils/filters.js.map +1 -1
  161. package/dist/utils/use-td-props.js +3 -2
  162. package/dist/utils/use-td-props.js.map +1 -1
  163. package/package.json +13 -13
  164. package/dist/filters/async-select/async-select-filter.stories.js +0 -7
  165. package/dist/filters/async-select/async-select-filter.stories.js.map +0 -1
  166. package/dist/filters/multiselect-filter/multiselect-filter.stories.js +0 -7
  167. package/dist/filters/multiselect-filter/multiselect-filter.stories.js.map +0 -1
  168. package/dist/filters/range-filter/range-filter.stories.js +0 -9
  169. package/dist/filters/range-filter/range-filter.stories.js.map +0 -1
  170. package/dist/filters/select-filter/__tests__/object-search.test.js +0 -28
  171. package/dist/filters/select-filter/__tests__/object-search.test.js.map +0 -1
  172. package/dist/filters/select-filter/select-filter.stories.js +0 -8
  173. package/dist/filters/select-filter/select-filter.stories.js.map +0 -1
  174. package/dist/filters/single-select/single-select-filter.stories.js +0 -8
  175. package/dist/filters/single-select/single-select-filter.stories.js.map +0 -1
  176. package/dist/table.stories.js +0 -12
  177. package/dist/table.stories.js.map +0 -1
  178. package/dist/use-observing-table-state/use-observing-table-state.stories.js +0 -11
  179. package/dist/use-observing-table-state/use-observing-table-state.stories.js.map +0 -1
  180. package/dist/utils/__tests__/filters.test.js +0 -24
  181. package/dist/utils/__tests__/filters.test.js.map +0 -1
@@ -1,24 +1,37 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1
+ /* eslint-disable @typescript-eslint/member-ordering */ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _ts_decorate(decorators, target, key, desc) {
2
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
16
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
19
+ }
20
+ function _ts_metadata(k, v) {
8
21
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
22
+ }
10
23
  import { action, computed, observable, runInAction, makeObservable } from 'mobx';
11
24
  import { fromPromise } from 'mobx-utils';
12
25
  import { formStateToJS } from '@servicetitan/form';
13
26
  export function isGroupItem(item, groups) {
14
27
  const field = item.field;
15
- return !!field && groups.some(g => g.field === field);
28
+ return !!field && groups.some((g)=>g.field === field);
16
29
  }
17
30
  function addAggregatesToGroups(groups, aggregates) {
18
- return groups.map(group => ({
19
- ...group,
20
- aggregates,
21
- }));
31
+ return groups.map((group)=>({
32
+ ...group,
33
+ aggregates
34
+ }));
22
35
  }
23
36
  export class TableState {
24
37
  get dataSource() {
@@ -28,22 +41,21 @@ export class TableState {
28
41
  if (!items) {
29
42
  return;
30
43
  }
31
- for (const item of items) {
44
+ for (const item of items){
32
45
  if (isGroupItem(item, this.group)) {
33
46
  const groupMaterializedPath = materializedPath + `/${item.value}`;
34
47
  if (groupCallback) {
35
48
  groupCallback(item, groupMaterializedPath);
36
49
  }
37
50
  this.traverse(item.items, itemCallback, groupCallback, groupMaterializedPath);
38
- }
39
- else {
51
+ } else {
40
52
  itemCallback(item);
41
53
  }
42
54
  }
43
55
  }
44
56
  get originalData() {
45
57
  const result = [];
46
- this.traverse(this.data, item => {
58
+ this.traverse(this.data, (item)=>{
47
59
  result.push(item);
48
60
  });
49
61
  return result;
@@ -61,19 +73,15 @@ export class TableState {
61
73
  return this.originalData.length - this.filteredUnselectableCount;
62
74
  }
63
75
  get totalFilteredSelectableCountPromise() {
64
- return fromPromise(new Promise((resolve, reject) => {
76
+ return fromPromise(new Promise((resolve, reject)=>{
65
77
  if (!this.dataSource) {
66
78
  return reject();
67
79
  }
68
- this.dataSource
69
- .getData({
70
- filter: this.filter,
71
- })
72
- .then(filteredData => {
73
- resolve(filteredData.data.filter(row => !this.isRowUnselectable(row))
74
- .length);
75
- })
76
- .catch(reject);
80
+ this.dataSource.getData({
81
+ filter: this.filter
82
+ }).then((filteredData)=>{
83
+ resolve(filteredData.data.filter((row)=>!this.isRowUnselectable(row)).length);
84
+ }).catch(reject);
77
85
  }));
78
86
  }
79
87
  get totalFilteredSelectableCount() {
@@ -85,446 +93,6 @@ export class TableState {
85
93
  set group(value) {
86
94
  this.innerGroup = value;
87
95
  }
88
- constructor({ dataSource = null, rowIdKey, pageSize, isRowUnselectable = () => false, rowDetailsExpandState = 'collapsed', selectionLimit = Infinity, getFormState, parent, getDetailTableState, initialState, alwaysEditable = false, } = {}) {
89
- Object.defineProperty(this, "innerDataSource", {
90
- enumerable: true,
91
- configurable: true,
92
- writable: true,
93
- value: void 0
94
- });
95
- Object.defineProperty(this, "parent", {
96
- enumerable: true,
97
- configurable: true,
98
- writable: true,
99
- value: void 0
100
- });
101
- Object.defineProperty(this, "getDetailTableState", {
102
- enumerable: true,
103
- configurable: true,
104
- writable: true,
105
- value: void 0
106
- });
107
- Object.defineProperty(this, "selectedIds", {
108
- enumerable: true,
109
- configurable: true,
110
- writable: true,
111
- value: new Set()
112
- });
113
- Object.defineProperty(this, "inEdit", {
114
- enumerable: true,
115
- configurable: true,
116
- writable: true,
117
- value: new Map()
118
- });
119
- Object.defineProperty(this, "expandedIds", {
120
- enumerable: true,
121
- configurable: true,
122
- writable: true,
123
- value: new Set()
124
- });
125
- Object.defineProperty(this, "collapsedIds", {
126
- enumerable: true,
127
- configurable: true,
128
- writable: true,
129
- value: new Set()
130
- });
131
- Object.defineProperty(this, "collapsedGroups", {
132
- enumerable: true,
133
- configurable: true,
134
- writable: true,
135
- value: new Set()
136
- });
137
- Object.defineProperty(this, "isRowUnselectable", {
138
- enumerable: true,
139
- configurable: true,
140
- writable: true,
141
- value: void 0
142
- }); // TODO: think about a better name
143
- Object.defineProperty(this, "selectionLimit", {
144
- enumerable: true,
145
- configurable: true,
146
- writable: true,
147
- value: void 0
148
- });
149
- Object.defineProperty(this, "data", {
150
- enumerable: true,
151
- configurable: true,
152
- writable: true,
153
- value: []
154
- });
155
- Object.defineProperty(this, "totalCount", {
156
- enumerable: true,
157
- configurable: true,
158
- writable: true,
159
- value: 0
160
- });
161
- Object.defineProperty(this, "filteredCount", {
162
- enumerable: true,
163
- configurable: true,
164
- writable: true,
165
- value: 0
166
- });
167
- Object.defineProperty(this, "selectedCount", {
168
- enumerable: true,
169
- configurable: true,
170
- writable: true,
171
- value: 0
172
- });
173
- Object.defineProperty(this, "unselectableCount", {
174
- enumerable: true,
175
- configurable: true,
176
- writable: true,
177
- value: 0
178
- });
179
- Object.defineProperty(this, "sort", {
180
- enumerable: true,
181
- configurable: true,
182
- writable: true,
183
- value: []
184
- });
185
- Object.defineProperty(this, "filter", {
186
- enumerable: true,
187
- configurable: true,
188
- writable: true,
189
- value: void 0
190
- });
191
- Object.defineProperty(this, "aggregates", {
192
- enumerable: true,
193
- configurable: true,
194
- writable: true,
195
- value: []
196
- });
197
- Object.defineProperty(this, "innerGroup", {
198
- enumerable: true,
199
- configurable: true,
200
- writable: true,
201
- value: []
202
- });
203
- Object.defineProperty(this, "skip", {
204
- enumerable: true,
205
- configurable: true,
206
- writable: true,
207
- value: 0
208
- });
209
- Object.defineProperty(this, "pageSize", {
210
- enumerable: true,
211
- configurable: true,
212
- writable: true,
213
- value: void 0
214
- });
215
- Object.defineProperty(this, "tablePdfExport", {
216
- enumerable: true,
217
- configurable: true,
218
- writable: true,
219
- value: null
220
- });
221
- Object.defineProperty(this, "tableExcelExport", {
222
- enumerable: true,
223
- configurable: true,
224
- writable: true,
225
- value: null
226
- });
227
- Object.defineProperty(this, "rowDetailsExpandState", {
228
- enumerable: true,
229
- configurable: true,
230
- writable: true,
231
- value: void 0
232
- });
233
- Object.defineProperty(this, "rowIdKey", {
234
- enumerable: true,
235
- configurable: true,
236
- writable: true,
237
- value: void 0
238
- });
239
- Object.defineProperty(this, "alwaysEditable", {
240
- enumerable: true,
241
- configurable: true,
242
- writable: true,
243
- value: void 0
244
- });
245
- Object.defineProperty(this, "fetchInitialData", {
246
- enumerable: true,
247
- configurable: true,
248
- writable: true,
249
- value: async () => {
250
- if (!this.dataSource) {
251
- return;
252
- }
253
- const initial = (await this.dataSource.getData({
254
- skip: this.skip,
255
- take: this.pageSize,
256
- filter: this.filter,
257
- sort: [...this.sort],
258
- group: [...this.group],
259
- }));
260
- runInAction(() => {
261
- this.totalCount = initial.total;
262
- this.filteredCount = initial.total;
263
- this.updateExpandState(initial.data);
264
- this.data = initial.data;
265
- this.unselectableCount = this.originalData.filter(this.isRowUnselectable).length;
266
- this.addPropertiesToRows(this.data);
267
- });
268
- }
269
- });
270
- Object.defineProperty(this, "handleFilterChange", {
271
- enumerable: true,
272
- configurable: true,
273
- writable: true,
274
- value: (ev) => {
275
- this.fetchData({
276
- newFilter: ev.filter,
277
- });
278
- }
279
- });
280
- Object.defineProperty(this, "handleGroupChange", {
281
- enumerable: true,
282
- configurable: true,
283
- writable: true,
284
- value: (ev) => {
285
- this.collapsedGroups = new Set();
286
- this.fetchData({
287
- newGroup: ev.group,
288
- });
289
- }
290
- });
291
- Object.defineProperty(this, "handleExpandChange", {
292
- enumerable: true,
293
- configurable: true,
294
- writable: true,
295
- value: ({ dataItem, value }) => {
296
- if (isGroupItem(dataItem, this.group)) {
297
- const { materializedPath } = dataItem;
298
- if (value) {
299
- this.collapsedGroups.delete(materializedPath);
300
- }
301
- else {
302
- this.collapsedGroups.add(materializedPath);
303
- }
304
- }
305
- else {
306
- if (!this.dataSource) {
307
- return;
308
- }
309
- if (!this.dataSource.idSelector) {
310
- throw 'missing idSelector in the data source';
311
- }
312
- const id = this.dataSource.idSelector(dataItem);
313
- if (value) {
314
- this.expandedIds.add(id);
315
- this.collapsedIds.delete(id);
316
- }
317
- else {
318
- this.expandedIds.delete(id);
319
- this.collapsedIds.add(id);
320
- }
321
- }
322
- this.data = this.data.slice();
323
- }
324
- });
325
- Object.defineProperty(this, "handleSortChange", {
326
- enumerable: true,
327
- configurable: true,
328
- writable: true,
329
- value: (ev) => {
330
- this.fetchData({
331
- newSort: ev.sort,
332
- });
333
- }
334
- });
335
- Object.defineProperty(this, "handlePageChange", {
336
- enumerable: true,
337
- configurable: true,
338
- writable: true,
339
- value: (ev) => {
340
- if (this.pageSize !== ev.page.take) {
341
- this.pageSize = ev.page.take;
342
- this.skip = 0;
343
- }
344
- else if (this.skip === ev.page.skip) {
345
- return;
346
- }
347
- this.fetchData({
348
- newSkip: ev.page.skip,
349
- });
350
- }
351
- });
352
- /** Call without params if unchanged */
353
- Object.defineProperty(this, "fetchData", {
354
- enumerable: true,
355
- configurable: true,
356
- writable: true,
357
- value: async ({ newSkip, newSort, newFilter, newAggregates, newGroup, } = {}) => {
358
- const sort = newSort !== null && newSort !== void 0 ? newSort : [...this.sort];
359
- const filter = newFilter === null ? undefined : (newFilter !== null && newFilter !== void 0 ? newFilter : this.filter);
360
- const aggregates = newAggregates !== null && newAggregates !== void 0 ? newAggregates : this.aggregates;
361
- const group = addAggregatesToGroups(newGroup !== null && newGroup !== void 0 ? newGroup : this.group, aggregates);
362
- const skip = newSort || newFilter !== undefined || newGroup
363
- ? 0
364
- : newSkip !== undefined
365
- ? newSkip
366
- : this.skip;
367
- if (!this.dataSource) {
368
- runInAction(() => {
369
- this.sort = sort;
370
- this.filter = filter;
371
- this.aggregates = aggregates;
372
- this.innerGroup = group;
373
- });
374
- return;
375
- }
376
- const newData = (await this.dataSource.getData({
377
- skip,
378
- sort,
379
- filter,
380
- group: [...group],
381
- take: this.pageSize,
382
- }));
383
- runInAction(() => {
384
- if (!this.dataSource) {
385
- return;
386
- }
387
- if (newFilter !== undefined) {
388
- // When a new filter is applied, deselect items that don't match the filter
389
- if (this.dataSource.getFilteredPersistentItems) {
390
- // For persistent items, deselect everything in the persistent array that's been filtered out
391
- if (newFilter !== null && this.dataSource.idSelector) {
392
- let delta = 0;
393
- const filteredData = this.dataSource.getFilteredPersistentItems(newFilter);
394
- filteredData.forEach(dataItem => {
395
- const id = this.dataSource.idSelector(dataItem);
396
- if (this.selectedIds.delete(id)) {
397
- delta += 1;
398
- }
399
- if (!this.alwaysEditable) {
400
- this.inEdit.delete(id);
401
- }
402
- this.expandedIds.delete(id);
403
- });
404
- this.selectedCount -= delta;
405
- }
406
- }
407
- else {
408
- // For non-peristent items, everything is deselected by default
409
- this.selectedCount = 0;
410
- }
411
- }
412
- this.updateExpandState(newData.data);
413
- this.data = newData.data;
414
- this.filteredCount = newData.total;
415
- this.sort = sort;
416
- this.filter = filter;
417
- this.aggregates = aggregates;
418
- this.innerGroup = group;
419
- this.skip = skip;
420
- this.addPropertiesToRows(this.data);
421
- });
422
- }
423
- });
424
- Object.defineProperty(this, "isRowSelectable", {
425
- enumerable: true,
426
- configurable: true,
427
- writable: true,
428
- value: (row) => !this.isRowUnselectable(row) &&
429
- (this.selectionLimit === Infinity ||
430
- row.selected ||
431
- this.selectedCount < this.selectionLimit)
432
- });
433
- Object.defineProperty(this, "setTablePdfExportRef", {
434
- enumerable: true,
435
- configurable: true,
436
- writable: true,
437
- value: (el) => (this.tablePdfExport = el)
438
- });
439
- Object.defineProperty(this, "setTableExcelExportRef", {
440
- enumerable: true,
441
- configurable: true,
442
- writable: true,
443
- value: (el) => (this.tableExcelExport = el)
444
- });
445
- Object.defineProperty(this, "exportPdf", {
446
- enumerable: true,
447
- configurable: true,
448
- writable: true,
449
- value: async () => {
450
- if (this.dataSource && this.tablePdfExport) {
451
- const { data } = await this.dataSource.getData({}); // fetch all data
452
- this.tablePdfExport.save(data);
453
- }
454
- }
455
- });
456
- Object.defineProperty(this, "exportExcel", {
457
- enumerable: true,
458
- configurable: true,
459
- writable: true,
460
- value: async (data, columns) => {
461
- if (this.tableExcelExport) {
462
- this.tableExcelExport.save(data !== null && data !== void 0 ? data : (await this.filteredSortedUnpaginatedData()).data, columns);
463
- }
464
- }
465
- });
466
- Object.defineProperty(this, "filteredSortedUnpaginatedData", {
467
- enumerable: true,
468
- configurable: true,
469
- writable: true,
470
- value: () => {
471
- if (!this.dataSource) {
472
- throw 'missing dataSource';
473
- }
474
- return this.dataSource.getData({
475
- filter: this.filter,
476
- sort: [...this.sort],
477
- group: [...this.group],
478
- });
479
- }
480
- });
481
- Object.defineProperty(this, "getRowsBetween", {
482
- enumerable: true,
483
- configurable: true,
484
- writable: true,
485
- value: (start, end) => {
486
- var _a;
487
- const idSelector = (_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.idSelector;
488
- if (!idSelector) {
489
- return [];
490
- }
491
- let from, to;
492
- const startId = idSelector(start);
493
- const endId = idSelector(end);
494
- for (const [index, row] of this.originalData.entries()) {
495
- const id = idSelector(row);
496
- if (startId === id) {
497
- from = index;
498
- }
499
- if (endId === id) {
500
- to = index;
501
- }
502
- }
503
- if (from === undefined || to === undefined) {
504
- return [];
505
- }
506
- return this.originalData.slice(Math.min(from, to), Math.max(from, to) + 1);
507
- }
508
- });
509
- makeObservable(this);
510
- this.innerDataSource = dataSource;
511
- this.pageSize = pageSize;
512
- this.isRowUnselectable = isRowUnselectable;
513
- this.rowDetailsExpandState = rowDetailsExpandState;
514
- this.selectionLimit = selectionLimit;
515
- this.rowIdKey = rowIdKey;
516
- this.getFormState = getFormState;
517
- this.parent = parent;
518
- this.getDetailTableState = getDetailTableState;
519
- if (initialState) {
520
- this.importState(initialState);
521
- }
522
- this.alwaysEditable = alwaysEditable;
523
- this.fetchInitialData();
524
- if (this.alwaysEditable) {
525
- this.editAll();
526
- }
527
- }
528
96
  async addToDataSource(row, select, index) {
529
97
  if (!this.dataSource) {
530
98
  return;
@@ -533,7 +101,7 @@ export class TableState {
533
101
  throw 'missing addData in the data source';
534
102
  }
535
103
  await this.dataSource.addData(row, index);
536
- runInAction(() => {
104
+ runInAction(()=>{
537
105
  this.totalCount += 1;
538
106
  if (select) {
539
107
  if (!this.dataSource.idSelector) {
@@ -555,11 +123,11 @@ export class TableState {
555
123
  if (!this.dataSource.removeData) {
556
124
  throw 'missing removeData in the data source';
557
125
  }
558
- const row = (await this.dataSource.removeData(id));
126
+ const row = await this.dataSource.removeData(id);
559
127
  if (!row) {
560
128
  return;
561
129
  }
562
- runInAction(() => {
130
+ runInAction(()=>{
563
131
  this.totalCount -= 1;
564
132
  // Updating filteredCount here to force Table rerender after this action
565
133
  this.filteredCount -= 1;
@@ -576,9 +144,10 @@ export class TableState {
576
144
  });
577
145
  // If the current page has only one row and it's removed, fetch the previous page if it exists
578
146
  if (this.data.length === 1 && this.pageSize && this.skip >= this.pageSize) {
579
- await this.fetchData({ newSkip: this.skip - this.pageSize });
580
- }
581
- else {
147
+ await this.fetchData({
148
+ newSkip: this.skip - this.pageSize
149
+ });
150
+ } else {
582
151
  await this.fetchData();
583
152
  }
584
153
  return row;
@@ -590,15 +159,14 @@ export class TableState {
590
159
  if (!this.dataSource.idSelector) {
591
160
  throw 'missing idSelector in the data source';
592
161
  }
593
- for (const row of rows) {
162
+ for (const row of rows){
594
163
  if (ignoreUnselectable && this.isRowUnselectable(row)) {
595
164
  continue;
596
165
  }
597
- runInAction(() => {
166
+ runInAction(()=>{
598
167
  if (!value) {
599
168
  this.selectedIds.delete(this.dataSource.idSelector(row));
600
- }
601
- else if (this.selectedCount < this.selectionLimit) {
169
+ } else if (this.selectedCount < this.selectionLimit) {
602
170
  this.selectedIds.add(this.dataSource.idSelector(row));
603
171
  }
604
172
  });
@@ -614,17 +182,20 @@ export class TableState {
614
182
  // update parent selection
615
183
  if (this.parent) {
616
184
  if (this.isAllPageRowsSelected) {
617
- await this.parent.tableState.setRowsSelection([this.parent.row], true, {
618
- recursive: false,
185
+ await this.parent.tableState.setRowsSelection([
186
+ this.parent.row
187
+ ], true, {
188
+ recursive: false
619
189
  });
620
- }
621
- else {
622
- await this.parent.tableState.setRowsSelection([this.parent.row], false, {
623
- recursive: false,
190
+ } else {
191
+ await this.parent.tableState.setRowsSelection([
192
+ this.parent.row
193
+ ], false, {
194
+ recursive: false
624
195
  });
625
196
  }
626
197
  }
627
- runInAction(() => {
198
+ runInAction(()=>{
628
199
  this.selectedCount = this.selectedIds.size;
629
200
  this.data = this.data.slice();
630
201
  });
@@ -640,7 +211,7 @@ export class TableState {
640
211
  return;
641
212
  }
642
213
  const filteredData = await this.dataSource.getData({
643
- filter: this.filter,
214
+ filter: this.filter
644
215
  });
645
216
  await this.setRowsSelection(filteredData.data, value, options);
646
217
  }
@@ -665,7 +236,7 @@ export class TableState {
665
236
  }
666
237
  this.inEdit.set(this.dataSource.idSelector(row), {
667
238
  form: this.getFormState(row),
668
- field,
239
+ field
669
240
  });
670
241
  this.data = this.data.slice();
671
242
  }
@@ -691,7 +262,7 @@ export class TableState {
691
262
  }
692
263
  await this.dataSource.updateData(id, changed);
693
264
  if (!this.alwaysEditable) {
694
- runInAction(() => {
265
+ runInAction(()=>{
695
266
  this.inEdit.delete(id);
696
267
  });
697
268
  }
@@ -721,13 +292,15 @@ export class TableState {
721
292
  throw 'missing getFormState';
722
293
  }
723
294
  const rows = (await this.dataSource.getData({
724
- filter: this.filter,
295
+ filter: this.filter
725
296
  })).data;
726
- runInAction(() => {
727
- this.inEdit = new Map(rows.map(row => [
728
- this.dataSource.idSelector(row),
729
- { form: this.getFormState(row) },
730
- ]));
297
+ runInAction(()=>{
298
+ this.inEdit = new Map(rows.map((row)=>[
299
+ this.dataSource.idSelector(row),
300
+ {
301
+ form: this.getFormState(row)
302
+ }
303
+ ]));
731
304
  this.data = this.data.slice();
732
305
  });
733
306
  }
@@ -738,19 +311,19 @@ export class TableState {
738
311
  if (!this.dataSource.updateData) {
739
312
  throw 'missing updateData in the data source';
740
313
  }
741
- const changes = Array.from(this.inEdit).map(([id, { form }]) => ({
742
- id,
743
- changed: formStateToJS(form), // FIXME: incompatible types
744
- }));
314
+ const changes = Array.from(this.inEdit).map(([id, { form }])=>({
315
+ id,
316
+ changed: formStateToJS(form)
317
+ }));
745
318
  if (beforeSave) {
746
- await beforeSave(changes.map(change => change.changed));
319
+ await beforeSave(changes.map((change)=>change.changed));
747
320
  }
748
- for (const { id, changed } of changes) {
321
+ for (const { id, changed } of changes){
749
322
  // eslint-disable-next-line no-await-in-loop
750
323
  await this.dataSource.updateData(id, changed);
751
324
  }
752
325
  if (!this.alwaysEditable) {
753
- runInAction(() => {
326
+ runInAction(()=>{
754
327
  this.inEdit = new Map();
755
328
  });
756
329
  }
@@ -784,9 +357,7 @@ export class TableState {
784
357
  async setDataSource(dataSource, setDataSourceParams) {
785
358
  this.innerDataSource = dataSource;
786
359
  this.skip = 0;
787
- const reset = typeof setDataSourceParams === 'boolean'
788
- ? setDataSourceParams
789
- : setDataSourceParams === null || setDataSourceParams === void 0 ? void 0 : setDataSourceParams.reset;
360
+ const reset = typeof setDataSourceParams === 'boolean' ? setDataSourceParams : setDataSourceParams === null || setDataSourceParams === void 0 ? void 0 : setDataSourceParams.reset;
790
361
  const config = setDataSourceParams;
791
362
  if (reset) {
792
363
  this.reset();
@@ -800,7 +371,7 @@ export class TableState {
800
371
  }
801
372
  }
802
373
  addPropertiesToRows(data) {
803
- this.traverse(data, item => {
374
+ this.traverse(data, (item)=>{
804
375
  if (!this.dataSource) {
805
376
  return;
806
377
  }
@@ -809,40 +380,40 @@ export class TableState {
809
380
  }
810
381
  if (!('selected' in item)) {
811
382
  Object.defineProperty(item, 'selected', {
812
- get: () => this.selectedIds.has(this.dataSource.idSelector(item)),
383
+ get: ()=>this.selectedIds.has(this.dataSource.idSelector(item))
813
384
  });
814
385
  }
815
386
  if (!('indeterminate' in item)) {
816
387
  Object.defineProperty(item, 'indeterminate', {
817
- get: () => {
818
- var _a;
819
- const detail = (_a = this.getDetailTableState) === null || _a === void 0 ? void 0 : _a.call(this, item);
388
+ get: ()=>{
389
+ var _this_getDetailTableState, _this;
390
+ const detail = (_this_getDetailTableState = (_this = this).getDetailTableState) === null || _this_getDetailTableState === void 0 ? void 0 : _this_getDetailTableState.call(_this, item);
820
391
  if (!detail) {
821
392
  return false;
822
393
  }
823
394
  return detail.isSomePageRowsSelected;
824
- },
395
+ }
825
396
  });
826
397
  }
827
398
  if (!('inEdit' in item)) {
828
399
  Object.defineProperty(item, 'inEdit', {
829
- get: () => this.inEdit.has(this.dataSource.idSelector(item)),
400
+ get: ()=>this.inEdit.has(this.dataSource.idSelector(item))
830
401
  });
831
402
  }
832
403
  if (!('expanded' in item)) {
833
404
  Object.defineProperty(item, 'expanded', {
834
- get: () => this.expandedIds.has(this.dataSource.idSelector(item)),
405
+ get: ()=>this.expandedIds.has(this.dataSource.idSelector(item))
835
406
  });
836
407
  }
837
- }, (group, materializedPath) => {
408
+ }, (group, materializedPath)=>{
838
409
  if (!('materializedPath' in group)) {
839
410
  Object.defineProperty(group, 'materializedPath', {
840
- get: () => materializedPath,
411
+ get: ()=>materializedPath
841
412
  });
842
413
  }
843
414
  if (!('expanded' in group)) {
844
415
  Object.defineProperty(group, 'expanded', {
845
- get: () => !this.collapsedGroups.has(group.materializedPath),
416
+ get: ()=>!this.collapsedGroups.has(group.materializedPath)
846
417
  });
847
418
  }
848
419
  });
@@ -854,14 +425,15 @@ export class TableState {
854
425
  if (!this.dataSource.idSelector) {
855
426
  throw 'missing idSelector in the data source';
856
427
  }
857
- await this.setRowsSelection([row], !this.selectedIds.has(this.dataSource.idSelector(row)), options);
428
+ await this.setRowsSelection([
429
+ row
430
+ ], !this.selectedIds.has(this.dataSource.idSelector(row)), options);
858
431
  }
859
432
  get isAllPageRowsSelected() {
860
- return (this.originalData.some(row => row.selected) &&
861
- this.originalData.every(row => this.isRowUnselectable(row) || row.selected));
433
+ return this.originalData.some((row)=>row.selected) && this.originalData.every((row)=>this.isRowUnselectable(row) || row.selected);
862
434
  }
863
435
  get isSomePageRowsSelected() {
864
- return this.originalData.some(row => row.selected) && !this.isAllPageRowsSelected;
436
+ return this.originalData.some((row)=>row.selected) && !this.isAllPageRowsSelected;
865
437
  }
866
438
  get isAllRowsSelected() {
867
439
  if (!this.selectedIds.size) {
@@ -884,7 +456,7 @@ export class TableState {
884
456
  sort: this.sort,
885
457
  filter: this.filter,
886
458
  aggregates: this.aggregates,
887
- group: this.innerGroup,
459
+ group: this.innerGroup
888
460
  };
889
461
  }
890
462
  importState(data) {
@@ -899,231 +471,478 @@ export class TableState {
899
471
  }
900
472
  updateExpandState(data) {
901
473
  if (this.rowDetailsExpandState === 'expanded') {
902
- this.traverse(data, item => {
903
- var _a, _b;
904
- const id = (_b = (_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.idSelector) === null || _b === void 0 ? void 0 : _b.call(_a, item);
474
+ this.traverse(data, (item)=>{
475
+ var _this_dataSource_idSelector, _this_dataSource;
476
+ const id = (_this_dataSource = this.dataSource) === null || _this_dataSource === void 0 ? void 0 : (_this_dataSource_idSelector = _this_dataSource.idSelector) === null || _this_dataSource_idSelector === void 0 ? void 0 : _this_dataSource_idSelector.call(_this_dataSource, item);
905
477
  if (id !== undefined && !this.collapsedIds.has(id)) {
906
478
  this.expandedIds.add(id);
907
479
  }
908
480
  });
909
481
  }
910
482
  }
483
+ constructor({ dataSource = null, rowIdKey, pageSize, isRowUnselectable = ()=>false, rowDetailsExpandState = 'collapsed', selectionLimit = Infinity, getFormState, parent, getDetailTableState, initialState, alwaysEditable = false } = {}){
484
+ _define_property(this, "innerDataSource", void 0);
485
+ _define_property(this, "parent", void 0);
486
+ _define_property(this, "getDetailTableState", void 0);
487
+ _define_property(this, "selectedIds", new Set());
488
+ _define_property(this, "inEdit", new Map());
489
+ _define_property(this, "expandedIds", new Set());
490
+ _define_property(this, "collapsedIds", new Set());
491
+ _define_property(this, "collapsedGroups", new Set());
492
+ _define_property(this, "isRowUnselectable", void 0 // TODO: think about a better name
493
+ );
494
+ _define_property(this, "selectionLimit", void 0);
495
+ _define_property(this, "data", []);
496
+ _define_property(this, "totalCount", 0);
497
+ _define_property(this, "filteredCount", 0);
498
+ _define_property(this, "selectedCount", 0);
499
+ _define_property(this, "unselectableCount", 0);
500
+ _define_property(this, "sort", []);
501
+ _define_property(this, "filter", void 0);
502
+ _define_property(this, "aggregates", []);
503
+ _define_property(this, "innerGroup", []);
504
+ _define_property(this, "skip", 0);
505
+ _define_property(this, "pageSize", void 0);
506
+ _define_property(this, "tablePdfExport", null);
507
+ _define_property(this, "tableExcelExport", null);
508
+ _define_property(this, "rowDetailsExpandState", void 0);
509
+ _define_property(this, "rowIdKey", void 0);
510
+ _define_property(this, "alwaysEditable", void 0);
511
+ _define_property(this, "fetchInitialData", async ()=>{
512
+ if (!this.dataSource) {
513
+ return;
514
+ }
515
+ const initial = await this.dataSource.getData({
516
+ skip: this.skip,
517
+ take: this.pageSize,
518
+ filter: this.filter,
519
+ sort: [
520
+ ...this.sort
521
+ ],
522
+ group: [
523
+ ...this.group
524
+ ]
525
+ });
526
+ runInAction(()=>{
527
+ this.totalCount = initial.total;
528
+ this.filteredCount = initial.total;
529
+ this.updateExpandState(initial.data);
530
+ this.data = initial.data;
531
+ this.unselectableCount = this.originalData.filter(this.isRowUnselectable).length;
532
+ this.addPropertiesToRows(this.data);
533
+ });
534
+ });
535
+ _define_property(this, "handleFilterChange", (ev)=>{
536
+ this.fetchData({
537
+ newFilter: ev.filter
538
+ });
539
+ });
540
+ _define_property(this, "handleGroupChange", (ev)=>{
541
+ this.collapsedGroups = new Set();
542
+ this.fetchData({
543
+ newGroup: ev.group
544
+ });
545
+ });
546
+ _define_property(this, "handleExpandChange", ({ dataItem, value })=>{
547
+ if (isGroupItem(dataItem, this.group)) {
548
+ const { materializedPath } = dataItem;
549
+ if (value) {
550
+ this.collapsedGroups.delete(materializedPath);
551
+ } else {
552
+ this.collapsedGroups.add(materializedPath);
553
+ }
554
+ } else {
555
+ if (!this.dataSource) {
556
+ return;
557
+ }
558
+ if (!this.dataSource.idSelector) {
559
+ throw 'missing idSelector in the data source';
560
+ }
561
+ const id = this.dataSource.idSelector(dataItem);
562
+ if (value) {
563
+ this.expandedIds.add(id);
564
+ this.collapsedIds.delete(id);
565
+ } else {
566
+ this.expandedIds.delete(id);
567
+ this.collapsedIds.add(id);
568
+ }
569
+ }
570
+ this.data = this.data.slice();
571
+ });
572
+ _define_property(this, "handleSortChange", (ev)=>{
573
+ this.fetchData({
574
+ newSort: ev.sort
575
+ });
576
+ });
577
+ _define_property(this, "handlePageChange", (ev)=>{
578
+ if (this.pageSize !== ev.page.take) {
579
+ this.pageSize = ev.page.take;
580
+ this.skip = 0;
581
+ } else if (this.skip === ev.page.skip) {
582
+ return;
583
+ }
584
+ this.fetchData({
585
+ newSkip: ev.page.skip
586
+ });
587
+ });
588
+ /** Call without params if unchanged */ _define_property(this, "fetchData", async ({ newSkip, newSort, newFilter, newAggregates, newGroup } = {})=>{
589
+ const sort = newSort !== null && newSort !== void 0 ? newSort : [
590
+ ...this.sort
591
+ ];
592
+ const filter = newFilter === null ? undefined : newFilter !== null && newFilter !== void 0 ? newFilter : this.filter;
593
+ const aggregates = newAggregates !== null && newAggregates !== void 0 ? newAggregates : this.aggregates;
594
+ const group = addAggregatesToGroups(newGroup !== null && newGroup !== void 0 ? newGroup : this.group, aggregates);
595
+ const skip = newSort || newFilter !== undefined || newGroup ? 0 : newSkip !== undefined ? newSkip : this.skip;
596
+ if (!this.dataSource) {
597
+ runInAction(()=>{
598
+ this.sort = sort;
599
+ this.filter = filter;
600
+ this.aggregates = aggregates;
601
+ this.innerGroup = group;
602
+ });
603
+ return;
604
+ }
605
+ const newData = await this.dataSource.getData({
606
+ skip,
607
+ sort,
608
+ filter,
609
+ group: [
610
+ ...group
611
+ ],
612
+ take: this.pageSize
613
+ });
614
+ runInAction(()=>{
615
+ if (!this.dataSource) {
616
+ return;
617
+ }
618
+ if (newFilter !== undefined) {
619
+ // When a new filter is applied, deselect items that don't match the filter
620
+ if (this.dataSource.getFilteredPersistentItems) {
621
+ // For persistent items, deselect everything in the persistent array that's been filtered out
622
+ if (newFilter !== null && this.dataSource.idSelector) {
623
+ let delta = 0;
624
+ const filteredData = this.dataSource.getFilteredPersistentItems(newFilter);
625
+ filteredData.forEach((dataItem)=>{
626
+ const id = this.dataSource.idSelector(dataItem);
627
+ if (this.selectedIds.delete(id)) {
628
+ delta += 1;
629
+ }
630
+ if (!this.alwaysEditable) {
631
+ this.inEdit.delete(id);
632
+ }
633
+ this.expandedIds.delete(id);
634
+ });
635
+ this.selectedCount -= delta;
636
+ }
637
+ } else {
638
+ // For non-peristent items, everything is deselected by default
639
+ this.selectedCount = 0;
640
+ }
641
+ }
642
+ this.updateExpandState(newData.data);
643
+ this.data = newData.data;
644
+ this.filteredCount = newData.total;
645
+ this.sort = sort;
646
+ this.filter = filter;
647
+ this.aggregates = aggregates;
648
+ this.innerGroup = group;
649
+ this.skip = skip;
650
+ this.addPropertiesToRows(this.data);
651
+ });
652
+ });
653
+ _define_property(this, "isRowSelectable", (row)=>!this.isRowUnselectable(row) && (this.selectionLimit === Infinity || row.selected || this.selectedCount < this.selectionLimit));
654
+ _define_property(this, "setTablePdfExportRef", (el)=>this.tablePdfExport = el);
655
+ _define_property(this, "setTableExcelExportRef", (el)=>this.tableExcelExport = el);
656
+ _define_property(this, "exportPdf", async ()=>{
657
+ if (this.dataSource && this.tablePdfExport) {
658
+ const { data } = await this.dataSource.getData({}); // fetch all data
659
+ this.tablePdfExport.save(data);
660
+ }
661
+ });
662
+ _define_property(this, "exportExcel", async (data, columns)=>{
663
+ if (this.tableExcelExport) {
664
+ this.tableExcelExport.save(data !== null && data !== void 0 ? data : (await this.filteredSortedUnpaginatedData()).data, columns);
665
+ }
666
+ });
667
+ _define_property(this, "filteredSortedUnpaginatedData", ()=>{
668
+ if (!this.dataSource) {
669
+ throw 'missing dataSource';
670
+ }
671
+ return this.dataSource.getData({
672
+ filter: this.filter,
673
+ sort: [
674
+ ...this.sort
675
+ ],
676
+ group: [
677
+ ...this.group
678
+ ]
679
+ });
680
+ });
681
+ _define_property(this, "getRowsBetween", (start, end)=>{
682
+ var _this_dataSource;
683
+ const idSelector = (_this_dataSource = this.dataSource) === null || _this_dataSource === void 0 ? void 0 : _this_dataSource.idSelector;
684
+ if (!idSelector) {
685
+ return [];
686
+ }
687
+ let from, to;
688
+ const startId = idSelector(start);
689
+ const endId = idSelector(end);
690
+ for (const [index, row] of this.originalData.entries()){
691
+ const id = idSelector(row);
692
+ if (startId === id) {
693
+ from = index;
694
+ }
695
+ if (endId === id) {
696
+ to = index;
697
+ }
698
+ }
699
+ if (from === undefined || to === undefined) {
700
+ return [];
701
+ }
702
+ return this.originalData.slice(Math.min(from, to), Math.max(from, to) + 1);
703
+ });
704
+ makeObservable(this);
705
+ this.innerDataSource = dataSource;
706
+ this.pageSize = pageSize;
707
+ this.isRowUnselectable = isRowUnselectable;
708
+ this.rowDetailsExpandState = rowDetailsExpandState;
709
+ this.selectionLimit = selectionLimit;
710
+ this.rowIdKey = rowIdKey;
711
+ this.getFormState = getFormState;
712
+ this.parent = parent;
713
+ this.getDetailTableState = getDetailTableState;
714
+ if (initialState) {
715
+ this.importState(initialState);
716
+ }
717
+ this.alwaysEditable = alwaysEditable;
718
+ this.fetchInitialData();
719
+ if (this.alwaysEditable) {
720
+ this.editAll();
721
+ }
722
+ }
911
723
  }
912
- __decorate([
724
+ _ts_decorate([
913
725
  observable,
914
- __metadata("design:type", Object)
726
+ _ts_metadata("design:type", Object)
915
727
  ], TableState.prototype, "innerDataSource", void 0);
916
- __decorate([
728
+ _ts_decorate([
917
729
  computed,
918
- __metadata("design:type", Object),
919
- __metadata("design:paramtypes", [])
730
+ _ts_metadata("design:type", void 0),
731
+ _ts_metadata("design:paramtypes", [])
920
732
  ], TableState.prototype, "dataSource", null);
921
- __decorate([
733
+ _ts_decorate([
922
734
  computed,
923
- __metadata("design:type", Object),
924
- __metadata("design:paramtypes", [])
735
+ _ts_metadata("design:type", void 0),
736
+ _ts_metadata("design:paramtypes", [])
925
737
  ], TableState.prototype, "originalData", null);
926
- __decorate([
927
- observable,
928
- __metadata("design:type", Object)
738
+ _ts_decorate([
739
+ observable
929
740
  ], TableState.prototype, "selectedIds", void 0);
930
- __decorate([
931
- observable,
932
- __metadata("design:type", Object)
741
+ _ts_decorate([
742
+ observable
933
743
  ], TableState.prototype, "inEdit", void 0);
934
- __decorate([
935
- observable,
936
- __metadata("design:type", Object)
744
+ _ts_decorate([
745
+ observable
937
746
  ], TableState.prototype, "expandedIds", void 0);
938
- __decorate([
939
- observable,
940
- __metadata("design:type", Object)
747
+ _ts_decorate([
748
+ observable
941
749
  ], TableState.prototype, "collapsedIds", void 0);
942
- __decorate([
943
- observable,
944
- __metadata("design:type", Object)
750
+ _ts_decorate([
751
+ observable
945
752
  ], TableState.prototype, "collapsedGroups", void 0);
946
- __decorate([
753
+ _ts_decorate([
947
754
  observable,
948
- __metadata("design:type", Object)
755
+ _ts_metadata("design:type", typeof Data === "undefined" ? Object : Data)
949
756
  ], TableState.prototype, "data", void 0);
950
- __decorate([
951
- observable,
952
- __metadata("design:type", Object)
757
+ _ts_decorate([
758
+ observable
953
759
  ], TableState.prototype, "totalCount", void 0);
954
- __decorate([
955
- observable,
956
- __metadata("design:type", Object)
760
+ _ts_decorate([
761
+ observable
957
762
  ], TableState.prototype, "filteredCount", void 0);
958
- __decorate([
959
- observable,
960
- __metadata("design:type", Object)
763
+ _ts_decorate([
764
+ observable
961
765
  ], TableState.prototype, "selectedCount", void 0);
962
- __decorate([
963
- observable,
964
- __metadata("design:type", Object)
766
+ _ts_decorate([
767
+ observable
965
768
  ], TableState.prototype, "unselectableCount", void 0);
966
- __decorate([
769
+ _ts_decorate([
967
770
  computed,
968
- __metadata("design:type", Object),
969
- __metadata("design:paramtypes", [])
771
+ _ts_metadata("design:type", void 0),
772
+ _ts_metadata("design:paramtypes", [])
970
773
  ], TableState.prototype, "unselectedCount", null);
971
- __decorate([
774
+ _ts_decorate([
972
775
  computed,
973
- __metadata("design:type", Object),
974
- __metadata("design:paramtypes", [])
776
+ _ts_metadata("design:type", void 0),
777
+ _ts_metadata("design:paramtypes", [])
975
778
  ], TableState.prototype, "selectableCount", null);
976
- __decorate([
779
+ _ts_decorate([
977
780
  computed,
978
- __metadata("design:type", Object),
979
- __metadata("design:paramtypes", [])
781
+ _ts_metadata("design:type", void 0),
782
+ _ts_metadata("design:paramtypes", [])
980
783
  ], TableState.prototype, "filteredUnselectableCount", null);
981
- __decorate([
784
+ _ts_decorate([
982
785
  computed,
983
- __metadata("design:type", Object),
984
- __metadata("design:paramtypes", [])
786
+ _ts_metadata("design:type", void 0),
787
+ _ts_metadata("design:paramtypes", [])
985
788
  ], TableState.prototype, "filteredSelectableCount", null);
986
- __decorate([
789
+ _ts_decorate([
987
790
  computed,
988
- __metadata("design:type", Object),
989
- __metadata("design:paramtypes", [])
791
+ _ts_metadata("design:type", void 0),
792
+ _ts_metadata("design:paramtypes", [])
990
793
  ], TableState.prototype, "totalFilteredSelectableCountPromise", null);
991
- __decorate([
794
+ _ts_decorate([
992
795
  computed,
993
- __metadata("design:type", Number),
994
- __metadata("design:paramtypes", [])
796
+ _ts_metadata("design:type", Number),
797
+ _ts_metadata("design:paramtypes", [])
995
798
  ], TableState.prototype, "totalFilteredSelectableCount", null);
996
- __decorate([
799
+ _ts_decorate([
997
800
  observable,
998
- __metadata("design:type", Array)
801
+ _ts_metadata("design:type", Array)
999
802
  ], TableState.prototype, "sort", void 0);
1000
- __decorate([
803
+ _ts_decorate([
1001
804
  observable,
1002
- __metadata("design:type", Object)
805
+ _ts_metadata("design:type", Object)
1003
806
  ], TableState.prototype, "filter", void 0);
1004
- __decorate([
807
+ _ts_decorate([
1005
808
  observable,
1006
- __metadata("design:type", Array)
809
+ _ts_metadata("design:type", Array)
1007
810
  ], TableState.prototype, "aggregates", void 0);
1008
- __decorate([
811
+ _ts_decorate([
1009
812
  observable,
1010
- __metadata("design:type", Array)
813
+ _ts_metadata("design:type", Array)
1011
814
  ], TableState.prototype, "innerGroup", void 0);
1012
- __decorate([
815
+ _ts_decorate([
1013
816
  computed,
1014
- __metadata("design:type", Array),
1015
- __metadata("design:paramtypes", [Array])
817
+ _ts_metadata("design:type", Array),
818
+ _ts_metadata("design:paramtypes", [])
1016
819
  ], TableState.prototype, "group", null);
1017
- __decorate([
1018
- observable,
1019
- __metadata("design:type", Object)
820
+ _ts_decorate([
821
+ observable
1020
822
  ], TableState.prototype, "skip", void 0);
1021
- __decorate([
823
+ _ts_decorate([
1022
824
  observable,
1023
- __metadata("design:type", Number)
825
+ _ts_metadata("design:type", Number)
1024
826
  ], TableState.prototype, "pageSize", void 0);
1025
- __decorate([
827
+ _ts_decorate([
1026
828
  action,
1027
- __metadata("design:type", Function),
1028
- __metadata("design:paramtypes", [Array, Boolean, Object]),
1029
- __metadata("design:returntype", Promise)
829
+ _ts_metadata("design:type", Function),
830
+ _ts_metadata("design:paramtypes", [
831
+ Array,
832
+ Boolean,
833
+ typeof SelectionOptions === "undefined" ? Object : SelectionOptions
834
+ ]),
835
+ _ts_metadata("design:returntype", Promise)
1030
836
  ], TableState.prototype, "setRowsSelection", null);
1031
- __decorate([
837
+ _ts_decorate([
1032
838
  action,
1033
- __metadata("design:type", Function),
1034
- __metadata("design:paramtypes", [Object, Object]),
1035
- __metadata("design:returntype", void 0)
839
+ _ts_metadata("design:type", Function),
840
+ _ts_metadata("design:paramtypes", [
841
+ typeof T === "undefined" ? Object : T,
842
+ Object
843
+ ]),
844
+ _ts_metadata("design:returntype", void 0)
1036
845
  ], TableState.prototype, "edit", null);
1037
- __decorate([
846
+ _ts_decorate([
1038
847
  action,
1039
- __metadata("design:type", Function),
1040
- __metadata("design:paramtypes", [Object, Function]),
1041
- __metadata("design:returntype", Promise)
848
+ _ts_metadata("design:type", Function),
849
+ _ts_metadata("design:paramtypes", [
850
+ typeof T === "undefined" ? Object : T,
851
+ Function
852
+ ]),
853
+ _ts_metadata("design:returntype", Promise)
1042
854
  ], TableState.prototype, "saveEdit", null);
1043
- __decorate([
855
+ _ts_decorate([
1044
856
  action,
1045
- __metadata("design:type", Function),
1046
- __metadata("design:paramtypes", [Object]),
1047
- __metadata("design:returntype", void 0)
857
+ _ts_metadata("design:type", Function),
858
+ _ts_metadata("design:paramtypes", [
859
+ typeof T === "undefined" ? Object : T
860
+ ]),
861
+ _ts_metadata("design:returntype", void 0)
1048
862
  ], TableState.prototype, "cancelEdit", null);
1049
- __decorate([
863
+ _ts_decorate([
1050
864
  action,
1051
- __metadata("design:type", Function),
1052
- __metadata("design:paramtypes", []),
1053
- __metadata("design:returntype", void 0)
865
+ _ts_metadata("design:type", Function),
866
+ _ts_metadata("design:paramtypes", []),
867
+ _ts_metadata("design:returntype", void 0)
1054
868
  ], TableState.prototype, "cancelEditAll", null);
1055
- __decorate([
869
+ _ts_decorate([
1056
870
  action,
1057
- __metadata("design:type", Function),
1058
- __metadata("design:paramtypes", []),
1059
- __metadata("design:returntype", void 0)
871
+ _ts_metadata("design:type", Function),
872
+ _ts_metadata("design:paramtypes", []),
873
+ _ts_metadata("design:returntype", void 0)
1060
874
  ], TableState.prototype, "reset", null);
1061
- __decorate([
875
+ _ts_decorate([
1062
876
  action,
1063
- __metadata("design:type", Function),
1064
- __metadata("design:paramtypes", [Object, Object]),
1065
- __metadata("design:returntype", Promise)
877
+ _ts_metadata("design:type", Function),
878
+ _ts_metadata("design:paramtypes", [
879
+ Object,
880
+ Object
881
+ ]),
882
+ _ts_metadata("design:returntype", Promise)
1066
883
  ], TableState.prototype, "setDataSource", null);
1067
- __decorate([
1068
- action,
1069
- __metadata("design:type", Object)
884
+ _ts_decorate([
885
+ action
1070
886
  ], TableState.prototype, "fetchInitialData", void 0);
1071
- __decorate([
1072
- action,
1073
- __metadata("design:type", Object)
887
+ _ts_decorate([
888
+ action
1074
889
  ], TableState.prototype, "handleFilterChange", void 0);
1075
- __decorate([
1076
- action,
1077
- __metadata("design:type", Object)
890
+ _ts_decorate([
891
+ action
1078
892
  ], TableState.prototype, "handleGroupChange", void 0);
1079
- __decorate([
1080
- action,
1081
- __metadata("design:type", Object)
893
+ _ts_decorate([
894
+ action
1082
895
  ], TableState.prototype, "handleExpandChange", void 0);
1083
- __decorate([
1084
- action,
1085
- __metadata("design:type", Object)
896
+ _ts_decorate([
897
+ action
1086
898
  ], TableState.prototype, "handleSortChange", void 0);
1087
- __decorate([
1088
- action,
1089
- __metadata("design:type", Object)
899
+ _ts_decorate([
900
+ action
1090
901
  ], TableState.prototype, "handlePageChange", void 0);
1091
- __decorate([
902
+ _ts_decorate([
1092
903
  action,
1093
- __metadata("design:type", Function),
1094
- __metadata("design:paramtypes", [Object, Object]),
1095
- __metadata("design:returntype", Promise)
904
+ _ts_metadata("design:type", Function),
905
+ _ts_metadata("design:paramtypes", [
906
+ typeof T === "undefined" ? Object : T,
907
+ typeof SelectionOptions === "undefined" ? Object : SelectionOptions
908
+ ]),
909
+ _ts_metadata("design:returntype", Promise)
1096
910
  ], TableState.prototype, "toggleRowSelection", null);
1097
- __decorate([
911
+ _ts_decorate([
1098
912
  computed,
1099
- __metadata("design:type", Object),
1100
- __metadata("design:paramtypes", [])
913
+ _ts_metadata("design:type", void 0),
914
+ _ts_metadata("design:paramtypes", [])
1101
915
  ], TableState.prototype, "isAllPageRowsSelected", null);
1102
- __decorate([
916
+ _ts_decorate([
1103
917
  computed,
1104
- __metadata("design:type", Object),
1105
- __metadata("design:paramtypes", [])
918
+ _ts_metadata("design:type", void 0),
919
+ _ts_metadata("design:paramtypes", [])
1106
920
  ], TableState.prototype, "isSomePageRowsSelected", null);
1107
- __decorate([
921
+ _ts_decorate([
1108
922
  computed,
1109
- __metadata("design:type", Object),
1110
- __metadata("design:paramtypes", [])
923
+ _ts_metadata("design:type", void 0),
924
+ _ts_metadata("design:paramtypes", [])
1111
925
  ], TableState.prototype, "isAllRowsSelected", null);
1112
- __decorate([
926
+ _ts_decorate([
1113
927
  computed,
1114
- __metadata("design:type", Object),
1115
- __metadata("design:paramtypes", [])
928
+ _ts_metadata("design:type", void 0),
929
+ _ts_metadata("design:paramtypes", [])
1116
930
  ], TableState.prototype, "isSomeRowsSelected", null);
1117
- __decorate([
931
+ _ts_decorate([
1118
932
  action,
1119
- __metadata("design:type", Function),
1120
- __metadata("design:paramtypes", [Object]),
1121
- __metadata("design:returntype", void 0)
933
+ _ts_metadata("design:type", Function),
934
+ _ts_metadata("design:paramtypes", [
935
+ typeof TableStateModel === "undefined" ? Object : TableStateModel
936
+ ]),
937
+ _ts_metadata("design:returntype", void 0)
1122
938
  ], TableState.prototype, "importState", null);
1123
- __decorate([
939
+ _ts_decorate([
1124
940
  action,
1125
- __metadata("design:type", Function),
1126
- __metadata("design:paramtypes", [Object]),
1127
- __metadata("design:returntype", void 0)
941
+ _ts_metadata("design:type", Function),
942
+ _ts_metadata("design:paramtypes", [
943
+ Object
944
+ ]),
945
+ _ts_metadata("design:returntype", void 0)
1128
946
  ], TableState.prototype, "updateExpandState", null);
947
+
1129
948
  //# sourceMappingURL=table-state.js.map