amis-core 1.0.0-beta.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 (211) hide show
  1. package/dist/Root.js +94 -0
  2. package/dist/RootRenderer.js +288 -0
  3. package/dist/SchemaRenderer.js +323 -0
  4. package/dist/Scoped.js +252 -0
  5. package/dist/WithRootStore.js +44 -0
  6. package/dist/WithStore.js +179 -0
  7. package/dist/__tests__/compat.test.d.ts +1 -0
  8. package/dist/__tests__/factory.test.d.ts +1 -0
  9. package/dist/__tests__/filter.test.d.ts +1 -0
  10. package/dist/__tests__/helper.d.ts +13 -0
  11. package/dist/__tests__/tokenize.test.d.ts +1 -0
  12. package/dist/actions/Action.js +119 -0
  13. package/dist/actions/AjaxAction.js +96 -0
  14. package/dist/actions/BreakAction.js +35 -0
  15. package/dist/actions/BroadcastAction.js +49 -0
  16. package/dist/actions/CmptAction.js +60 -0
  17. package/dist/actions/ContinueAction.js +35 -0
  18. package/dist/actions/CopyAction.js +43 -0
  19. package/dist/actions/CustomAction.js +49 -0
  20. package/dist/actions/DialogAction.js +104 -0
  21. package/dist/actions/DrawerAction.js +66 -0
  22. package/dist/actions/EmailAction.js +48 -0
  23. package/dist/actions/LinkAction.js +52 -0
  24. package/dist/actions/LoopAction.js +107 -0
  25. package/dist/actions/PageAction.js +80 -0
  26. package/dist/actions/ParallelAction.js +40 -0
  27. package/dist/actions/SwitchAction.js +52 -0
  28. package/dist/actions/ToastAction.js +35 -0
  29. package/dist/components/LazyComponent.js +99 -0
  30. package/dist/env.js +20 -0
  31. package/dist/envOverwrite.js +43 -0
  32. package/dist/factory.js +308 -0
  33. package/dist/index.js +218 -0
  34. package/dist/index2.js +255 -0
  35. package/dist/locale.js +114 -0
  36. package/dist/renderers/Form.js +1162 -0
  37. package/dist/renderers/Item.js +636 -0
  38. package/dist/renderers/Options.js +881 -0
  39. package/dist/renderers/Placeholder.js +31 -0
  40. package/dist/renderers/builtin.js +27 -0
  41. package/dist/renderers/wrapControl.js +507 -0
  42. package/dist/src/Root.d.ts +37 -0
  43. package/dist/src/RootRenderer.d.ts +27 -0
  44. package/dist/src/SchemaRenderer.d.ts +37 -0
  45. package/dist/src/Scoped.d.ts +38 -0
  46. package/dist/src/WithRootStore.d.ts +737 -0
  47. package/dist/src/WithStore.d.ts +5 -0
  48. package/dist/src/actions/Action.d.ts +38 -0
  49. package/dist/src/actions/AjaxAction.d.ts +25 -0
  50. package/dist/src/actions/BreakAction.d.ts +15 -0
  51. package/dist/src/actions/BroadcastAction.d.ts +16 -0
  52. package/dist/src/actions/CmptAction.d.ts +20 -0
  53. package/dist/src/actions/ContinueAction.d.ts +15 -0
  54. package/dist/src/actions/CopyAction.d.ts +20 -0
  55. package/dist/src/actions/CustomAction.d.ts +17 -0
  56. package/dist/src/actions/Decorators.d.ts +25 -0
  57. package/dist/src/actions/DialogAction.d.ts +57 -0
  58. package/dist/src/actions/DrawerAction.d.ts +30 -0
  59. package/dist/src/actions/EmailAction.d.ts +23 -0
  60. package/dist/src/actions/LinkAction.d.ts +24 -0
  61. package/dist/src/actions/LoopAction.d.ts +19 -0
  62. package/dist/src/actions/PageAction.d.ts +39 -0
  63. package/dist/src/actions/ParallelAction.d.ts +8 -0
  64. package/dist/src/actions/SwitchAction.d.ts +11 -0
  65. package/dist/src/actions/ToastAction.d.ts +19 -0
  66. package/dist/src/actions/index.d.ts +21 -0
  67. package/dist/src/components/LazyComponent.d.ts +32 -0
  68. package/dist/src/env.d.ts +172 -0
  69. package/dist/src/envOverwrite.d.ts +4 -0
  70. package/dist/src/factory.d.ts +78 -0
  71. package/dist/src/index.d.ts +25 -0
  72. package/dist/src/locale.d.ts +82 -0
  73. package/dist/src/renderers/Form.d.ts +352 -0
  74. package/dist/src/renderers/Item.d.ts +795 -0
  75. package/dist/src/renderers/Options.d.ts +150 -0
  76. package/dist/src/renderers/Placeholder.d.ts +6 -0
  77. package/dist/src/renderers/builtin.d.ts +1 -0
  78. package/dist/src/renderers/wrapControl.d.ts +446 -0
  79. package/dist/src/schema.d.ts +369 -0
  80. package/dist/src/store/app.d.ts +89 -0
  81. package/dist/src/store/combo.d.ts +8504 -0
  82. package/dist/src/store/crud.d.ts +124 -0
  83. package/dist/src/store/form.d.ts +3394 -0
  84. package/dist/src/store/formItem.d.ts +130 -0
  85. package/dist/src/store/iRenderer.d.ts +46 -0
  86. package/dist/src/store/index.d.ts +105 -0
  87. package/dist/src/store/list.d.ts +270 -0
  88. package/dist/src/store/manager.d.ts +115 -0
  89. package/dist/src/store/modal.d.ts +84 -0
  90. package/dist/src/store/node.d.ts +22 -0
  91. package/dist/src/store/pagination.d.ts +58 -0
  92. package/dist/src/store/root.d.ts +79 -0
  93. package/dist/src/store/service.d.ts +71 -0
  94. package/dist/src/store/table-v2.d.ts +309 -0
  95. package/dist/src/store/table.d.ts +8334 -0
  96. package/dist/src/theme.d.ts +83 -0
  97. package/dist/src/types.d.ts +217 -0
  98. package/dist/src/utils/Animation.d.ts +22 -0
  99. package/dist/src/utils/ColorScale.d.ts +19 -0
  100. package/dist/src/utils/DataSchema.d.ts +25 -0
  101. package/dist/src/utils/DataScope.d.ts +23 -0
  102. package/dist/src/utils/RootClose.d.ts +4 -0
  103. package/dist/src/utils/SimpleMap.d.ts +8 -0
  104. package/dist/src/utils/api.d.ts +27 -0
  105. package/dist/src/utils/attachmentAdpator.d.ts +7 -0
  106. package/dist/src/utils/autobind.d.ts +7 -0
  107. package/dist/src/utils/columnsSplit.d.ts +1 -0
  108. package/dist/src/utils/dataMapping.d.ts +3 -0
  109. package/dist/src/utils/date.d.ts +4 -0
  110. package/dist/src/utils/debug.d.ts +26 -0
  111. package/dist/src/utils/dom.d.ts +13 -0
  112. package/dist/src/utils/errors.d.ts +6 -0
  113. package/dist/src/utils/escapeHtml.d.ts +1 -0
  114. package/dist/src/utils/filter-schema.d.ts +12 -0
  115. package/dist/src/utils/filter.d.ts +1 -0
  116. package/dist/src/utils/formatDuration.d.ts +1 -0
  117. package/dist/src/utils/formula.d.ts +16 -0
  118. package/dist/src/utils/getVariable.d.ts +3 -0
  119. package/dist/src/utils/grammar.d.ts +4 -0
  120. package/dist/src/utils/handleAction.d.ts +6 -0
  121. package/dist/src/utils/helper.d.ts +286 -0
  122. package/dist/src/utils/icon.d.ts +12 -0
  123. package/dist/src/utils/image.d.ts +17 -0
  124. package/dist/src/utils/index.d.ts +12 -0
  125. package/dist/src/utils/isPureVariable.d.ts +1 -0
  126. package/dist/src/utils/json-schema-2-amis-schema.d.ts +6 -0
  127. package/dist/src/utils/keyToPath.d.ts +6 -0
  128. package/dist/src/utils/makeSorter.d.ts +1 -0
  129. package/dist/src/utils/markdown.d.ts +5 -0
  130. package/dist/src/utils/normalizeLink.d.ts +1 -0
  131. package/dist/src/utils/normalizeOptions.d.ts +7 -0
  132. package/dist/src/utils/object.d.ts +15 -0
  133. package/dist/src/utils/offset.d.ts +14 -0
  134. package/dist/src/utils/offsetParent.d.ts +4 -0
  135. package/dist/src/utils/optionValueCompare.d.ts +3 -0
  136. package/dist/src/utils/position.d.ts +15 -0
  137. package/dist/src/utils/prettyBytes.d.ts +1 -0
  138. package/dist/src/utils/renderer-event.d.ts +44 -0
  139. package/dist/src/utils/replaceText.d.ts +6 -0
  140. package/dist/src/utils/resize-sensor.d.ts +6 -0
  141. package/dist/src/utils/resolveVariable.d.ts +1 -0
  142. package/dist/src/utils/resolveVariableAndFilter.d.ts +1 -0
  143. package/dist/src/utils/scrollPosition.d.ts +6 -0
  144. package/dist/src/utils/string2regExp.d.ts +1 -0
  145. package/dist/src/utils/stripNumber.d.ts +1 -0
  146. package/dist/src/utils/style.d.ts +10 -0
  147. package/dist/src/utils/tokenize.d.ts +1 -0
  148. package/dist/src/utils/tpl-builtin.d.ts +18 -0
  149. package/dist/src/utils/tpl-lodash.d.ts +4 -0
  150. package/dist/src/utils/tpl.d.ts +11 -0
  151. package/dist/src/utils/validations.d.ts +39 -0
  152. package/dist/store/app.js +190 -0
  153. package/dist/store/combo.js +154 -0
  154. package/dist/store/crud.js +413 -0
  155. package/dist/store/form.js +579 -0
  156. package/dist/store/formItem.js +846 -0
  157. package/dist/store/iRenderer.js +189 -0
  158. package/dist/store/index.js +103 -0
  159. package/dist/store/list.js +248 -0
  160. package/dist/store/manager.js +56 -0
  161. package/dist/store/modal.js +54 -0
  162. package/dist/store/node.js +93 -0
  163. package/dist/store/pagination.js +60 -0
  164. package/dist/store/root.js +45 -0
  165. package/dist/store/service.js +415 -0
  166. package/dist/store/table-v2.js +471 -0
  167. package/dist/store/table.js +1105 -0
  168. package/dist/theme.js +93 -0
  169. package/dist/tsconfig.tsbuildinfo +1 -0
  170. package/dist/utils/Animation.js +290 -0
  171. package/dist/utils/DataSchema.js +120 -0
  172. package/dist/utils/DataScope.js +151 -0
  173. package/dist/utils/SimpleMap.js +46 -0
  174. package/dist/utils/api.js +555 -0
  175. package/dist/utils/autobind.js +94 -0
  176. package/dist/utils/dataMapping.js +136 -0
  177. package/dist/utils/date.js +90 -0
  178. package/dist/utils/debug.js +343 -0
  179. package/dist/utils/errors.js +23 -0
  180. package/dist/utils/escapeHtml.js +24 -0
  181. package/dist/utils/filter-schema.js +75 -0
  182. package/dist/utils/filter.js +481 -0
  183. package/dist/utils/formatDuration.js +27 -0
  184. package/dist/utils/formula.js +165 -0
  185. package/dist/utils/getVariable.js +29 -0
  186. package/dist/utils/grammar.js +54 -0
  187. package/dist/utils/helper.js +1283 -0
  188. package/dist/utils/isPureVariable.js +16 -0
  189. package/dist/utils/keyToPath.js +34 -0
  190. package/dist/utils/makeSorter.js +30 -0
  191. package/dist/utils/normalizeLink.js +47 -0
  192. package/dist/utils/normalizeOptions.js +92 -0
  193. package/dist/utils/object.js +156 -0
  194. package/dist/utils/offset.js +36 -0
  195. package/dist/utils/offsetParent.js +27 -0
  196. package/dist/utils/optionValueCompare.js +25 -0
  197. package/dist/utils/position.js +50 -0
  198. package/dist/utils/prettyBytes.js +28 -0
  199. package/dist/utils/renderer-event.js +131 -0
  200. package/dist/utils/replaceText.js +35 -0
  201. package/dist/utils/resize-sensor.js +177 -0
  202. package/dist/utils/resolveVariable.js +39 -0
  203. package/dist/utils/resolveVariableAndFilter.js +37 -0
  204. package/dist/utils/string2regExp.js +18 -0
  205. package/dist/utils/stripNumber.js +20 -0
  206. package/dist/utils/tokenize.js +33 -0
  207. package/dist/utils/tpl-builtin.js +71 -0
  208. package/dist/utils/tpl-lodash.js +71 -0
  209. package/dist/utils/tpl.js +140 -0
  210. package/dist/utils/validations.js +377 -0
  211. package/package.json +121 -0
@@ -0,0 +1,1105 @@
1
+ /**
2
+ * amis-core v1.0.0-beta.0
3
+ * Copyright 2018-2022 fex
4
+ */
5
+
6
+ 'use strict';
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
9
+
10
+ var tslib = require('tslib');
11
+ var mobxStateTree = require('mobx-state-tree');
12
+ var iRenderer = require('./iRenderer.js');
13
+ require('amis-formula');
14
+ require('moment');
15
+ var object = require('../utils/object.js');
16
+ var resolveVariable = require('../utils/resolveVariable.js');
17
+ var resolveVariableAndFilter = require('../utils/resolveVariableAndFilter.js');
18
+ require('lodash/isPlainObject');
19
+ require('../utils/filter.js');
20
+ var isEqual = require('lodash/isEqual');
21
+ var find = require('lodash/find');
22
+ var sortBy = require('lodash/sortBy');
23
+ var helper = require('../utils/helper.js');
24
+ var tpl = require('../utils/tpl.js');
25
+ var manager = require('./manager.js');
26
+
27
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
28
+
29
+ var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
30
+ var find__default = /*#__PURE__*/_interopDefaultLegacy(find);
31
+ var sortBy__default = /*#__PURE__*/_interopDefaultLegacy(sortBy);
32
+
33
+ /**
34
+ * 内部列的数量 '__checkme' | '__dragme' | '__expandme'
35
+ */
36
+ var PARTITION_INDEX = 3;
37
+ var Column = mobxStateTree.types
38
+ .model('Column', {
39
+ label: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
40
+ type: mobxStateTree.types.optional(mobxStateTree.types.string, 'plain'),
41
+ name: mobxStateTree.types.maybe(mobxStateTree.types.string),
42
+ value: mobxStateTree.types.frozen(),
43
+ groupName: '',
44
+ toggled: false,
45
+ toggable: true,
46
+ expandable: false,
47
+ checkdisable: false,
48
+ isPrimary: false,
49
+ searchable: mobxStateTree.types.maybe(mobxStateTree.types.frozen()),
50
+ enableSearch: true,
51
+ sortable: false,
52
+ filterable: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
53
+ fixed: '',
54
+ index: 0,
55
+ rawIndex: 0,
56
+ breakpoint: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
57
+ pristine: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
58
+ remark: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
59
+ className: mobxStateTree.types.union(mobxStateTree.types.string, mobxStateTree.types.frozen())
60
+ })
61
+ .actions(function (self) { return ({
62
+ toggleToggle: function () {
63
+ self.toggled = !self.toggled;
64
+ var table = mobxStateTree.getParent(self, 2);
65
+ if (!table.activeToggaleColumns.length) {
66
+ self.toggled = true;
67
+ }
68
+ table.persistSaveToggledColumns();
69
+ },
70
+ setToggled: function (value) {
71
+ self.toggled = value;
72
+ },
73
+ setEnableSearch: function (value) {
74
+ self.enableSearch = value;
75
+ var table = mobxStateTree.getParent(self, 2);
76
+ table.persistSaveToggledColumns();
77
+ }
78
+ }); });
79
+ var Row = mobxStateTree.types
80
+ .model('Row', {
81
+ storeType: 'Row',
82
+ id: mobxStateTree.types.identifier,
83
+ parentId: '',
84
+ key: mobxStateTree.types.string,
85
+ pristine: mobxStateTree.types.frozen({}),
86
+ data: mobxStateTree.types.frozen({}),
87
+ rowSpans: mobxStateTree.types.frozen({}),
88
+ index: mobxStateTree.types.number,
89
+ newIndex: mobxStateTree.types.number,
90
+ path: '',
91
+ expandable: false,
92
+ checkdisable: false,
93
+ isHover: false,
94
+ children: mobxStateTree.types.optional(mobxStateTree.types.array(mobxStateTree.types.late(function () { return Row; })), []),
95
+ depth: mobxStateTree.types.number // 当前children位于第几层,便于使用getParent获取最顶层TableStore
96
+ })
97
+ .views(function (self) { return ({
98
+ get checked() {
99
+ return mobxStateTree.getParent(self, self.depth * 2).isSelected(self);
100
+ },
101
+ get modified() {
102
+ if (!self.data) {
103
+ return false;
104
+ }
105
+ return Object.keys(self.data).some(function (key) { return !isEqual__default["default"](self.data[key], self.pristine[key]); });
106
+ },
107
+ getDataWithModifiedChilden: function () {
108
+ var data = tslib.__assign({}, self.data);
109
+ if (data.children && self.children) {
110
+ data.children = self.children.map(function (item) {
111
+ return item.getDataWithModifiedChilden();
112
+ });
113
+ }
114
+ return data;
115
+ },
116
+ get collapsed() {
117
+ var table = mobxStateTree.getParent(self, self.depth * 2);
118
+ if (table.dragging) {
119
+ return true;
120
+ }
121
+ var from = self;
122
+ while (from && from !== table) {
123
+ if (!table.isExpanded(from)) {
124
+ return true;
125
+ }
126
+ from = mobxStateTree.getParent(from, 2);
127
+ }
128
+ return false;
129
+ },
130
+ get expanded() {
131
+ return !this.collapsed;
132
+ },
133
+ get moved() {
134
+ return self.index !== self.newIndex;
135
+ },
136
+ get locals() {
137
+ var children = null;
138
+ if (self.children.length) {
139
+ children = self.children.map(function (item) { return item.locals; });
140
+ }
141
+ var parent = mobxStateTree.getParent(self, 2);
142
+ return object.createObject(object.extendObject(mobxStateTree.getParent(self, self.depth * 2).data, {
143
+ index: self.index,
144
+ // todo 以后再支持多层,目前先一层
145
+ parent: parent.storeType === Row.name ? parent.data : undefined
146
+ }), children
147
+ ? tslib.__assign(tslib.__assign({}, self.data), { children: children }) : self.data);
148
+ },
149
+ get checkable() {
150
+ var table = mobxStateTree.getParent(self, self.depth * 2);
151
+ return table && table.itemCheckableOn
152
+ ? tpl.evalExpression(table.itemCheckableOn, self.locals)
153
+ : true;
154
+ },
155
+ get draggable() {
156
+ var table = mobxStateTree.getParent(self, self.depth * 2);
157
+ return table && table.itemDraggableOn
158
+ ? tpl.evalExpression(table.itemDraggableOn, self.locals)
159
+ : true;
160
+ }
161
+ }); })
162
+ .actions(function (self) { return ({
163
+ toggle: function () {
164
+ mobxStateTree.getParent(self, self.depth * 2).toggle(self);
165
+ },
166
+ toggleExpanded: function () {
167
+ mobxStateTree.getParent(self, self.depth * 2).toggleExpanded(self);
168
+ },
169
+ change: function (values, savePristine) {
170
+ self.data = helper.immutableExtends(self.data, values);
171
+ savePristine && (self.pristine = self.data);
172
+ },
173
+ reset: function () {
174
+ self.newIndex = self.index;
175
+ self.data = self.pristine;
176
+ },
177
+ setCheckdisable: function (bool) {
178
+ self.checkdisable = bool;
179
+ },
180
+ setIsHover: function (value) {
181
+ self.isHover = value;
182
+ },
183
+ replaceWith: function (data) {
184
+ Object.keys(data).forEach(function (key) {
185
+ if (key !== 'id') {
186
+ self[key] = data[key];
187
+ }
188
+ });
189
+ if (Array.isArray(data.children)) {
190
+ var arr = data.children;
191
+ var pool = arr.concat();
192
+ // 把多的删了先
193
+ if (self.children.length > arr.length) {
194
+ self.children.splice(arr.length, self.children.length - arr.length);
195
+ }
196
+ var index = 0;
197
+ var len = self.children.length;
198
+ while (pool.length) {
199
+ // 因为父级id未更新,所以需要将子级的parentId正确指向父级id
200
+ var item = tslib.__assign(tslib.__assign({}, pool.shift()), { parentId: self.id });
201
+ if (index < len) {
202
+ self.children[index].replaceWith(item);
203
+ }
204
+ else {
205
+ var row = Row.create(item);
206
+ self.children.push(row);
207
+ }
208
+ index++;
209
+ }
210
+ }
211
+ }
212
+ }); });
213
+ var TableStore = iRenderer.iRendererStore
214
+ .named('TableStore')
215
+ .props({
216
+ columns: mobxStateTree.types.array(Column),
217
+ rows: mobxStateTree.types.array(Row),
218
+ selectedRows: mobxStateTree.types.array(mobxStateTree.types.reference(Row)),
219
+ expandedRows: mobxStateTree.types.array(mobxStateTree.types.string),
220
+ primaryField: 'id',
221
+ orderBy: '',
222
+ orderDir: mobxStateTree.types.optional(mobxStateTree.types.union(mobxStateTree.types.literal('asc'), mobxStateTree.types.literal('desc')), 'asc'),
223
+ draggable: false,
224
+ dragging: false,
225
+ selectable: false,
226
+ multiple: true,
227
+ footable: mobxStateTree.types.frozen(),
228
+ expandConfig: mobxStateTree.types.frozen(),
229
+ isNested: false,
230
+ columnsTogglable: mobxStateTree.types.optional(mobxStateTree.types.union(mobxStateTree.types.boolean, mobxStateTree.types.literal('auto')), 'auto'),
231
+ itemCheckableOn: '',
232
+ itemDraggableOn: '',
233
+ hideCheckToggler: false,
234
+ combineNum: 0,
235
+ combineFromIndex: 0,
236
+ formsRef: mobxStateTree.types.optional(mobxStateTree.types.array(mobxStateTree.types.frozen()), []),
237
+ maxKeepItemSelectionLength: 0,
238
+ keepItemSelectionOnPageChange: false
239
+ })
240
+ .views(function (self) {
241
+ function getColumnsExceptBuiltinTypes() {
242
+ return self.columns.filter(function (item) { return !/^__/.test(item.type); });
243
+ }
244
+ function getForms() {
245
+ return self.formsRef.map(function (item) { return ({
246
+ store: manager.getStoreById(item.id),
247
+ rowIndex: item.rowIndex
248
+ }); });
249
+ }
250
+ function getExportedColumns() {
251
+ return self.columns.filter(function (item) {
252
+ return (item &&
253
+ helper.isVisible(item.pristine, helper.hasVisibleExpression(item.pristine) ? self.data : {}) &&
254
+ (item.type === '__checkme'
255
+ ? self.selectable &&
256
+ !self.dragging &&
257
+ !self.hideCheckToggler &&
258
+ self.rows.length
259
+ : item.type === '__dragme'
260
+ ? self.dragging
261
+ : item.type === '__expandme'
262
+ ? (getFootableColumns().length || self.isNested) && !self.dragging
263
+ : item.toggled || !item.toggable));
264
+ });
265
+ }
266
+ function getFilteredColumns() {
267
+ return self.columns.filter(function (item) {
268
+ return item &&
269
+ helper.isVisible(item.pristine, helper.hasVisibleExpression(item.pristine) ? self.data : {}) &&
270
+ (item.type === '__checkme'
271
+ ? self.selectable &&
272
+ !self.dragging &&
273
+ !self.hideCheckToggler &&
274
+ self.rows.length
275
+ : item.type === '__dragme'
276
+ ? self.dragging
277
+ : item.type === '__expandme'
278
+ ? (getFootableColumns().length || self.isNested) && !self.dragging
279
+ : (item.toggled || !item.toggable) &&
280
+ (!self.footable ||
281
+ !item.breakpoint ||
282
+ !helper.isBreakpoint(item.breakpoint)));
283
+ });
284
+ }
285
+ function getFootableColumns() {
286
+ return self.columns.filter(function (item) {
287
+ return item.type === '__checkme' ||
288
+ item.type === '__dragme' ||
289
+ item.type === '__expandme'
290
+ ? false
291
+ : (item.toggled || !item.toggable) &&
292
+ self.footable &&
293
+ item.breakpoint &&
294
+ helper.isBreakpoint(item.breakpoint);
295
+ });
296
+ }
297
+ function getLeftFixedColumns() {
298
+ if (self.dragging) {
299
+ return [];
300
+ }
301
+ var columns = getFilteredColumns().filter(function (item) { return item.fixed === 'left'; });
302
+ // 有才带过去,没有就不带了
303
+ if (columns.length) {
304
+ columns = getFilteredColumns().filter(function (item) { return item.fixed === 'left' || /^__/.test(item.type); });
305
+ }
306
+ return columns;
307
+ }
308
+ function getRightFixedColumns() {
309
+ if (self.dragging) {
310
+ return [];
311
+ }
312
+ return getFilteredColumns().filter(function (item) { return item.fixed === 'right'; });
313
+ }
314
+ function isSelected(row) {
315
+ return !!~self.selectedRows.indexOf(row);
316
+ }
317
+ function isExpanded(row) {
318
+ return self.expandedRows.includes(row.id);
319
+ }
320
+ function getTogglable() {
321
+ if (self.columnsTogglable === 'auto') {
322
+ return self.columns.filter(function (item) { return !/^__/.test(item.type); }).length > 5;
323
+ }
324
+ return self.columnsTogglable;
325
+ }
326
+ function getToggableColumns() {
327
+ return self.columns.filter(function (item) { return helper.isVisible(item.pristine, self.data) && item.toggable !== false; });
328
+ }
329
+ function getActiveToggableColumns() {
330
+ return getToggableColumns().filter(function (item) { return item.toggled; });
331
+ }
332
+ function getModifiedRows(rows, modifiedRows) {
333
+ if (rows === void 0) { rows = []; }
334
+ if (modifiedRows === void 0) { modifiedRows = []; }
335
+ rows = rows && rows.length ? rows : self.rows;
336
+ rows.forEach(function (item) {
337
+ if (item.children && item.children.length) {
338
+ getModifiedRows(item.children, modifiedRows);
339
+ }
340
+ var diff = helper.difference(item.data, item.pristine);
341
+ var hasDifference = Object.keys(diff).length;
342
+ if (hasDifference) {
343
+ modifiedRows.push(item);
344
+ }
345
+ });
346
+ return modifiedRows;
347
+ }
348
+ function getModified() {
349
+ return getModifiedRows().length;
350
+ }
351
+ function getMovedRows() {
352
+ return helper.flattenTree(self.rows).filter(function (item) { return item.moved; });
353
+ }
354
+ function getMoved() {
355
+ return getMovedRows().length;
356
+ }
357
+ function getHovedRow() {
358
+ return helper.flattenTree(self.rows).find(function (item) { return item.isHover; });
359
+ }
360
+ function getUnSelectedRows() {
361
+ return helper.flattenTree(self.rows).filter(function (item) { return !item.checked; });
362
+ }
363
+ function getData(superData) {
364
+ return object.createObject(superData, {
365
+ items: self.rows.map(function (item) { return item.data; }),
366
+ selectedItems: self.selectedRows.map(function (item) { return item.data; }),
367
+ unSelectedItems: getUnSelectedRows().map(function (item) { return item.data; })
368
+ });
369
+ }
370
+ function hasColumnHidden() {
371
+ return self.columns.findIndex(function (column) { return !column.toggled; }) !== -1;
372
+ }
373
+ function getColumnGroup() {
374
+ var columns = getFilteredColumns();
375
+ var len = columns.length;
376
+ if (!len) {
377
+ return [];
378
+ }
379
+ var groups = [
380
+ {
381
+ label: columns[0].groupName,
382
+ colSpan: 1,
383
+ rowSpan: 1,
384
+ index: columns[0].index,
385
+ has: [columns[0]]
386
+ }
387
+ ];
388
+ // 如果是勾选栏,让它和下一列合并。
389
+ if (columns[0].type === '__checkme' && columns[1]) {
390
+ groups[0].label = columns[1].groupName;
391
+ }
392
+ // 用户是否启用了 groupName
393
+ var hasGroupName = columns.some(function (column) { return column.groupName; });
394
+ for (var i = 1; i < len; i++) {
395
+ var prev = groups[groups.length - 1];
396
+ var current = columns[i];
397
+ var groupNameIsSame = current.groupName === prev.label ||
398
+ resolveVariableAndFilter.resolveVariableAndFilter(current.groupName, self.data) ===
399
+ resolveVariableAndFilter.resolveVariableAndFilter(prev.label, self.data);
400
+ if (groupNameIsSame &&
401
+ ((hasGroupName && current.groupName) || !hasGroupName)) {
402
+ prev.colSpan++;
403
+ prev.has.push(current);
404
+ }
405
+ else {
406
+ groups.push({
407
+ label: current.groupName || current.label || ' ',
408
+ colSpan: 1,
409
+ rowSpan: 1,
410
+ index: current.index,
411
+ has: [current]
412
+ });
413
+ }
414
+ }
415
+ if (groups.length === 1 && !groups[0].label) {
416
+ groups.pop();
417
+ }
418
+ return groups.map(function (item) {
419
+ var rowSpan = !item.label ||
420
+ (item.has.length === 1 && item.label === item.has[0].label)
421
+ ? 2
422
+ : 1;
423
+ return tslib.__assign(tslib.__assign({}, item), { rowSpan: rowSpan, label: rowSpan === 2 ? item.label || item.has[0].label : item.label });
424
+ });
425
+ }
426
+ function getFirstToggledColumnIndex() {
427
+ var column = self.columns.find(function (column) { return !/^__/.test(column.type) && column.toggled; });
428
+ return column == null ? null : column.index;
429
+ }
430
+ function getSearchableColumns() {
431
+ return self.columns.filter(function (column) { return column.searchable; });
432
+ }
433
+ return {
434
+ get columnsData() {
435
+ return getColumnsExceptBuiltinTypes();
436
+ },
437
+ get forms() {
438
+ return getForms();
439
+ },
440
+ get searchableColumns() {
441
+ return getSearchableColumns();
442
+ },
443
+ get activedSearchableColumns() {
444
+ return getSearchableColumns().filter(function (column) { return column.enableSearch; });
445
+ },
446
+ /** 导出excel列(包含breakpoint列) */
447
+ get exportColumns() {
448
+ return getExportedColumns();
449
+ },
450
+ get filteredColumns() {
451
+ return getFilteredColumns();
452
+ },
453
+ get footableColumns() {
454
+ return getFootableColumns();
455
+ },
456
+ get leftFixedColumns() {
457
+ return getLeftFixedColumns();
458
+ },
459
+ get rightFixedColumns() {
460
+ return getRightFixedColumns();
461
+ },
462
+ get toggableColumns() {
463
+ return getToggableColumns();
464
+ },
465
+ get activeToggaleColumns() {
466
+ return getActiveToggableColumns();
467
+ },
468
+ get someChecked() {
469
+ return !!self.selectedRows.length;
470
+ },
471
+ get allChecked() {
472
+ return !!(self.selectedRows.length ===
473
+ self.checkableRows.length &&
474
+ self.checkableRows.length);
475
+ },
476
+ isSelected: isSelected,
477
+ get allExpanded() {
478
+ return !!(self.expandedRows.length === this.expandableRows.length &&
479
+ this.expandableRows.length);
480
+ },
481
+ isExpanded: isExpanded,
482
+ get toggable() {
483
+ return getTogglable();
484
+ },
485
+ get modified() {
486
+ return getModified();
487
+ },
488
+ get modifiedRows() {
489
+ return getModifiedRows();
490
+ },
491
+ get unSelectedRows() {
492
+ return getUnSelectedRows();
493
+ },
494
+ get checkableRows() {
495
+ return helper.flattenTree(self.rows).filter(function (item) { return item.checkable; });
496
+ },
497
+ get expandableRows() {
498
+ return self.rows.filter(function (item) { return item.expandable; });
499
+ },
500
+ get moved() {
501
+ return getMoved();
502
+ },
503
+ get movedRows() {
504
+ return getMovedRows();
505
+ },
506
+ get hoverRow() {
507
+ return getHovedRow();
508
+ },
509
+ get disabledHeadCheckbox() {
510
+ var _a, _b;
511
+ var selectedLength = (_b = (_a = self.data) === null || _a === void 0 ? void 0 : _a.selectedItems) === null || _b === void 0 ? void 0 : _b.length;
512
+ var maxLength = self.maxKeepItemSelectionLength;
513
+ if (!self.data || !self.keepItemSelectionOnPageChange || !maxLength) {
514
+ return false;
515
+ }
516
+ return maxLength === selectedLength;
517
+ },
518
+ get firstToggledColumnIndex() {
519
+ return getFirstToggledColumnIndex();
520
+ },
521
+ getData: getData,
522
+ get columnGroup() {
523
+ return getColumnGroup();
524
+ },
525
+ getRowById: function (id) {
526
+ return helper.findTree(self.rows, function (item) { return item.id === id; });
527
+ },
528
+ getItemsByName: function (name) {
529
+ return this.forms
530
+ .filter(function (form) { return form.rowIndex === parseInt(name, 10); })
531
+ .map(function (item) { return item.store; });
532
+ },
533
+ // 是否隐藏了某列
534
+ hasColumnHidden: function () {
535
+ return hasColumnHidden();
536
+ },
537
+ getExpandedRows: function () {
538
+ var list = [];
539
+ helper.eachTree(self.rows, function (i) {
540
+ if (self.expandedRows.includes(i.id)) {
541
+ list.push(i);
542
+ }
543
+ });
544
+ return list;
545
+ }
546
+ };
547
+ })
548
+ .actions(function (self) {
549
+ function update(config) {
550
+ config.primaryField !== void 0 &&
551
+ (self.primaryField = config.primaryField);
552
+ config.selectable !== void 0 && (self.selectable = config.selectable);
553
+ config.columnsTogglable !== void 0 &&
554
+ (self.columnsTogglable = config.columnsTogglable);
555
+ config.draggable !== void 0 && (self.draggable = config.draggable);
556
+ if (typeof config.orderBy === 'string') {
557
+ setOrderByInfo(config.orderBy, config.orderDir === 'desc' ? 'desc' : 'asc');
558
+ }
559
+ config.multiple !== void 0 && (self.multiple = config.multiple);
560
+ config.footable !== void 0 && (self.footable = config.footable);
561
+ config.expandConfig !== void 0 &&
562
+ (self.expandConfig = config.expandConfig);
563
+ config.itemCheckableOn !== void 0 &&
564
+ (self.itemCheckableOn = config.itemCheckableOn);
565
+ config.itemDraggableOn !== void 0 &&
566
+ (self.itemDraggableOn = config.itemDraggableOn);
567
+ config.hideCheckToggler !== void 0 &&
568
+ (self.hideCheckToggler = !!config.hideCheckToggler);
569
+ config.combineNum !== void 0 &&
570
+ (self.combineNum = parseInt(config.combineNum, 10) || 0);
571
+ config.combineFromIndex !== void 0 &&
572
+ (self.combineFromIndex =
573
+ parseInt(config.combineFromIndex, 10) || 0);
574
+ config.maxKeepItemSelectionLength !== void 0 &&
575
+ (self.maxKeepItemSelectionLength = config.maxKeepItemSelectionLength);
576
+ config.keepItemSelectionOnPageChange !== void 0 &&
577
+ (self.keepItemSelectionOnPageChange =
578
+ config.keepItemSelectionOnPageChange);
579
+ if (config.columns && Array.isArray(config.columns)) {
580
+ var columns = config.columns
581
+ .filter(function (column) { return column; })
582
+ .concat();
583
+ if (!columns.length) {
584
+ columns.push({
585
+ type: 'text',
586
+ label: '空'
587
+ });
588
+ }
589
+ // 更新列顺序,afterCreate生命周期中更新columns不会触发组件的render
590
+ var key = getPersistDataKey(columns);
591
+ var data = localStorage.getItem(key);
592
+ var tableMetaData = null;
593
+ if (data) {
594
+ try {
595
+ tableMetaData = JSON.parse(data);
596
+ }
597
+ catch (error) { }
598
+ var order_1 = tableMetaData === null || tableMetaData === void 0 ? void 0 : tableMetaData.columnOrder;
599
+ if (Array.isArray(order_1) && order_1.length != 0) {
600
+ columns = sortBy__default["default"](columns, function (item, index) {
601
+ return order_1.indexOf(item.name || item.label || index);
602
+ });
603
+ }
604
+ }
605
+ columns.unshift({
606
+ type: '__expandme',
607
+ toggable: false,
608
+ className: 'Table-expandCell'
609
+ });
610
+ columns.unshift({
611
+ type: '__checkme',
612
+ fixed: 'left',
613
+ toggable: false,
614
+ className: 'Table-checkCell'
615
+ });
616
+ columns.unshift({
617
+ type: '__dragme',
618
+ toggable: false,
619
+ className: 'Table-dragCell'
620
+ });
621
+ columns = columns.map(function (item, index) { return (tslib.__assign(tslib.__assign({}, item), { index: index, rawIndex: index - PARTITION_INDEX, type: item.type || 'plain', pristine: item, toggled: item.toggled !== false, breakpoint: item.breakpoint, isPrimary: index === PARTITION_INDEX, className: item.className || '' })); });
622
+ self.columns.replace(columns);
623
+ }
624
+ }
625
+ function updateColumns(columns) {
626
+ if (columns && Array.isArray(columns)) {
627
+ columns = columns.filter(function (column) { return column; }).concat();
628
+ if (!columns.length) {
629
+ columns.push({
630
+ type: 'text',
631
+ label: '空'
632
+ });
633
+ }
634
+ columns.unshift({
635
+ type: '__expandme',
636
+ toggable: false,
637
+ className: 'Table-expandCell'
638
+ });
639
+ columns.unshift({
640
+ type: '__checkme',
641
+ fixed: 'left',
642
+ toggable: false,
643
+ className: 'Table-checkCell'
644
+ });
645
+ columns.unshift({
646
+ type: '__dragme',
647
+ toggable: false,
648
+ className: 'Table-dragCell'
649
+ });
650
+ columns = columns.map(function (item, index) { return (tslib.__assign(tslib.__assign({}, item), { index: index, rawIndex: index - PARTITION_INDEX, type: item.type || 'plain', pristine: item.pristine || item, toggled: item.toggled !== false, breakpoint: item.breakpoint, isPrimary: index === PARTITION_INDEX })); });
651
+ self.columns.replace(columns);
652
+ persistSaveToggledColumns();
653
+ }
654
+ }
655
+ function combineCell(arr, keys) {
656
+ if (!keys.length || !arr.length) {
657
+ return arr;
658
+ }
659
+ var key = keys.shift();
660
+ var rowIndex = 0;
661
+ var row = arr[rowIndex];
662
+ row.rowSpans[key] = 1;
663
+ var value = resolveVariable.resolveVariable(key, row.data);
664
+ for (var i = 1, len = arr.length; i < len; i++) {
665
+ var current = arr[i];
666
+ if (isEqual__default["default"](resolveVariable.resolveVariable(key, current.data), value)) {
667
+ row.rowSpans[key] += 1;
668
+ current.rowSpans[key] = 0;
669
+ }
670
+ else {
671
+ if (row.rowSpans[key] > 1) {
672
+ combineCell(arr.slice(rowIndex, i), keys.concat());
673
+ }
674
+ rowIndex = i;
675
+ row = current;
676
+ row.rowSpans[key] = 1;
677
+ value = resolveVariable.resolveVariable(key, row.data);
678
+ }
679
+ }
680
+ if (row.rowSpans[key] > 1 && keys.length) {
681
+ combineCell(arr.slice(rowIndex, arr.length), keys.concat());
682
+ }
683
+ return arr;
684
+ }
685
+ function autoCombineCell(arr, columns, maxCount, fromIndex) {
686
+ if (fromIndex === void 0) { fromIndex = 0; }
687
+ if (!columns.length || !maxCount || !arr.length) {
688
+ return arr;
689
+ }
690
+ // 如果是嵌套模式,通常第一列都是存在差异的,所以从第二列开始。
691
+ fromIndex =
692
+ fromIndex ||
693
+ (arr.some(function (item) { return Array.isArray(item.children) && item.children.length; })
694
+ ? 1
695
+ : 0);
696
+ var keys = [];
697
+ var len = columns.length;
698
+ for (var i = 0; i < len; i++) {
699
+ var column = columns[i];
700
+ // maxCount 可能比实际配置的 columns 还有多。
701
+ if (!column) {
702
+ break;
703
+ }
704
+ if ('__' === column.type.substring(0, 2)) {
705
+ maxCount++;
706
+ continue;
707
+ }
708
+ var key = column.name;
709
+ if (!key) {
710
+ break;
711
+ }
712
+ keys.push(key);
713
+ }
714
+ while (fromIndex--) {
715
+ keys.shift();
716
+ }
717
+ while (keys.length > maxCount) {
718
+ keys.pop();
719
+ }
720
+ return combineCell(arr, keys);
721
+ }
722
+ function initChildren(children, depth, pindex, parentId, path) {
723
+ if (path === void 0) { path = ''; }
724
+ depth += 1;
725
+ return children.map(function (item, index) {
726
+ var _a;
727
+ item = object.isObject(item)
728
+ ? item
729
+ : {
730
+ item: item
731
+ };
732
+ var id = (_a = item.__id) !== null && _a !== void 0 ? _a : helper.guid();
733
+ return {
734
+ // id: String(item && (item as any)[self.primaryField] || `${pindex}-${depth}-${key}`),
735
+ id: String(id),
736
+ parentId: String(parentId),
737
+ key: String("".concat(pindex, "-").concat(depth, "-").concat(index)),
738
+ path: "".concat(path).concat(index),
739
+ depth: depth,
740
+ index: index,
741
+ newIndex: index,
742
+ pristine: item,
743
+ data: item,
744
+ rowSpans: {},
745
+ children: item && Array.isArray(item.children)
746
+ ? initChildren(item.children, depth, index, id, "".concat(path).concat(index, "."))
747
+ : [],
748
+ expandable: !!((item && Array.isArray(item.children) && item.children.length) ||
749
+ (self.footable && self.footableColumns.length))
750
+ };
751
+ });
752
+ }
753
+ function initRows(rows, getEntryId, reUseRow) {
754
+ self.selectedRows.clear();
755
+ // self.expandedRows.clear();
756
+ var arr = rows.map(function (item, index) {
757
+ var _a;
758
+ if (!object.isObject(item)) {
759
+ item = {
760
+ item: item
761
+ };
762
+ }
763
+ var id = String(getEntryId ? getEntryId(item, index) : (_a = item.__id) !== null && _a !== void 0 ? _a : helper.guid());
764
+ return {
765
+ // id: getEntryId ? getEntryId(item, key) : String(item && (item as any)[self.primaryField] || `${key}-1-${key}`),
766
+ id: id,
767
+ key: String("".concat(index, "-1-").concat(index)),
768
+ depth: 1,
769
+ index: index,
770
+ newIndex: index,
771
+ pristine: item,
772
+ path: "".concat(index),
773
+ data: item,
774
+ rowSpans: {},
775
+ children: item && Array.isArray(item.children)
776
+ ? initChildren(item.children, 1, index, id, "".concat(index, "."))
777
+ : [],
778
+ expandable: !!((item && Array.isArray(item.children) && item.children.length) ||
779
+ (self.footable && self.footableColumns.length))
780
+ };
781
+ });
782
+ if (self.combineNum) {
783
+ arr = autoCombineCell(arr, self.columns, self.combineNum, self.combineFromIndex);
784
+ }
785
+ replaceRow(arr, reUseRow);
786
+ self.isNested = self.rows.some(function (item) { return item.children.length; });
787
+ var expand = self.footable && self.footable.expand;
788
+ if (expand === 'first' ||
789
+ (self.expandConfig && self.expandConfig.expand === 'first')) {
790
+ self.rows.length && self.expandedRows.push(self.rows[0].id);
791
+ }
792
+ else if ((expand === 'all' && !self.footable.accordion) ||
793
+ (self.expandConfig &&
794
+ self.expandConfig.expand === 'all' &&
795
+ !self.expandConfig.accordion)) {
796
+ self.expandedRows.replace(self.rows.map(function (item) { return item.id; }));
797
+ }
798
+ self.dragging = false;
799
+ }
800
+ // 尽可能的复用 row
801
+ function replaceRow(arr, reUseRow) {
802
+ if (reUseRow === false) {
803
+ self.rows.replace(arr.map(function (item) { return Row.create(item); }));
804
+ return;
805
+ }
806
+ var pool = arr.concat();
807
+ // 把多的删了先
808
+ if (self.rows.length > arr.length) {
809
+ self.rows.splice(arr.length, self.rows.length - arr.length);
810
+ }
811
+ var index = 0;
812
+ var len = self.rows.length;
813
+ while (pool.length) {
814
+ var item = pool.shift();
815
+ if (index < len) {
816
+ self.rows[index].replaceWith(item);
817
+ }
818
+ else {
819
+ var row = Row.create(item);
820
+ self.rows.push(row);
821
+ }
822
+ index++;
823
+ }
824
+ }
825
+ function updateSelected(selected, valueField) {
826
+ self.selectedRows.clear();
827
+ helper.eachTree(self.rows, function (item) {
828
+ if (~selected.indexOf(item.pristine)) {
829
+ self.selectedRows.push(item.id);
830
+ }
831
+ else if (find__default["default"](selected, function (a) {
832
+ return a[valueField || 'value'] &&
833
+ a[valueField || 'value'] == item.pristine[valueField || 'value'];
834
+ })) {
835
+ self.selectedRows.push(item.id);
836
+ }
837
+ });
838
+ updateCheckDisable();
839
+ }
840
+ function getSelectedRows() {
841
+ var _a;
842
+ var maxLength = self.maxKeepItemSelectionLength;
843
+ var keep = self.keepItemSelectionOnPageChange;
844
+ var selectedItems = (_a = self.data) === null || _a === void 0 ? void 0 : _a.selectedItems;
845
+ if (keep &&
846
+ maxLength &&
847
+ selectedItems &&
848
+ maxLength >= selectedItems.length) {
849
+ var restCheckableRows = self.checkableRows.filter(function (item) { return !item.checked; });
850
+ var checkableRows = restCheckableRows.filter(function (item, i) { return i < maxLength - selectedItems.length; });
851
+ return tslib.__spreadArray(tslib.__spreadArray([], self.selectedRows, true), checkableRows, true);
852
+ }
853
+ else {
854
+ return self.checkableRows;
855
+ }
856
+ }
857
+ function toggleAll() {
858
+ if (self.allChecked) {
859
+ self.selectedRows.clear();
860
+ }
861
+ else {
862
+ self.selectedRows.replace(getSelectedRows());
863
+ }
864
+ }
865
+ // 记录最近一次点击的多选框,主要用于 shift 多选时判断上一个选的是什么
866
+ var lastCheckedRow = null;
867
+ function toggle(row) {
868
+ if (!row.checkable) {
869
+ return;
870
+ }
871
+ lastCheckedRow = row;
872
+ var idx = self.selectedRows.indexOf(row);
873
+ if (self.multiple) {
874
+ ~idx ? self.selectedRows.splice(idx, 1) : self.selectedRows.push(row);
875
+ }
876
+ else {
877
+ ~idx
878
+ ? self.selectedRows.splice(idx, 1)
879
+ : self.selectedRows.replace([row]);
880
+ }
881
+ }
882
+ // 按住 shift 的时候点击选项
883
+ function toggleShift(row) {
884
+ // 如果是同一个或非 multiple 模式下就和不用 shift 一样
885
+ if (!lastCheckedRow || row === lastCheckedRow || !self.multiple) {
886
+ toggle(row);
887
+ return;
888
+ }
889
+ var maxLength = self.maxKeepItemSelectionLength;
890
+ var checkableRows = self.checkableRows;
891
+ var lastCheckedRowIndex = checkableRows.findIndex(function (row) { return row === lastCheckedRow; });
892
+ var rowIndex = checkableRows.findIndex(function (rowItem) { return row === rowItem; });
893
+ var minIndex = lastCheckedRowIndex > rowIndex ? rowIndex : lastCheckedRowIndex;
894
+ var maxIndex = lastCheckedRowIndex > rowIndex ? lastCheckedRowIndex : rowIndex;
895
+ var rows = checkableRows.slice(minIndex, maxIndex);
896
+ rows.push(row); // 将当前行也加入进行判断
897
+ for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
898
+ var rowItem = rows_1[_i];
899
+ var idx = self.selectedRows.indexOf(rowItem);
900
+ if (idx === -1) {
901
+ // 如果上一个是选中状态,则将之间的所有 check 都变成可选
902
+ if (lastCheckedRow.checked) {
903
+ if (maxLength) {
904
+ if (self.selectedRows.length < maxLength) {
905
+ self.selectedRows.push(rowItem);
906
+ }
907
+ }
908
+ else {
909
+ self.selectedRows.push(rowItem);
910
+ }
911
+ }
912
+ }
913
+ else {
914
+ if (!lastCheckedRow.checked) {
915
+ self.selectedRows.splice(idx, 1);
916
+ }
917
+ }
918
+ }
919
+ lastCheckedRow = row;
920
+ }
921
+ function updateCheckDisable() {
922
+ if (!self.data) {
923
+ return;
924
+ }
925
+ var maxLength = self.maxKeepItemSelectionLength;
926
+ var selectedItems = self.data.selectedItems;
927
+ self.selectedRows.map(function (item) { return item.setCheckdisable(false); });
928
+ if (maxLength && maxLength <= selectedItems.length) {
929
+ self.unSelectedRows.map(function (item) { return !item.checked && item.setCheckdisable(true); });
930
+ }
931
+ else {
932
+ self.unSelectedRows.map(function (item) { return item.checkdisable && item.setCheckdisable(false); });
933
+ }
934
+ }
935
+ function clear() {
936
+ self.selectedRows.clear();
937
+ }
938
+ function toggleExpandAll() {
939
+ if (self.allExpanded) {
940
+ self.expandedRows.clear();
941
+ }
942
+ else {
943
+ self.expandedRows.replace(self.rows.filter(function (item) { return item.expandable; }).map(function (item) { return item.id; }));
944
+ }
945
+ }
946
+ function toggleExpanded(row) {
947
+ var idx = self.expandedRows.indexOf(row.id);
948
+ if (~idx) {
949
+ self.expandedRows.splice(idx, 1);
950
+ }
951
+ else if (self.footable && self.footable.accordion) {
952
+ self.expandedRows.replace([row.id]);
953
+ }
954
+ else if (self.expandConfig && self.expandConfig.accordion) {
955
+ var rows = self
956
+ .getExpandedRows()
957
+ .filter(function (item) { return item.depth !== row.depth; });
958
+ rows.push(row);
959
+ self.expandedRows.replace(rows.map(function (item) { return item.id; }));
960
+ }
961
+ else {
962
+ self.expandedRows.push(row.id);
963
+ }
964
+ }
965
+ function collapseAllAtDepth(depth) {
966
+ var rows = self.getExpandedRows().filter(function (item) { return item.depth !== depth; });
967
+ self.expandedRows.replace(rows.map(function (item) { return item.id; }));
968
+ }
969
+ function setOrderByInfo(key, direction) {
970
+ self.orderBy = key;
971
+ self.orderDir = direction;
972
+ }
973
+ function reset() {
974
+ self.rows.forEach(function (item) { return item.reset(); });
975
+ var rows = self.rows.concat();
976
+ helper.eachTree(rows, function (item) {
977
+ if (item.children) {
978
+ var rows_2 = item.children.concat().sort(function (a, b) { return a.index - b.index; });
979
+ rows_2.forEach(function (item) { return item.reset(); });
980
+ item.children.replace(rows_2);
981
+ }
982
+ });
983
+ rows.forEach(function (item) { return item.reset(); });
984
+ rows = rows.sort(function (a, b) { return a.index - b.index; });
985
+ self.rows.replace(rows);
986
+ self.dragging = false;
987
+ }
988
+ function toggleDragging() {
989
+ self.dragging = !self.dragging;
990
+ }
991
+ function stopDragging() {
992
+ self.dragging = false;
993
+ }
994
+ function exchange(fromIndex, toIndex, item) {
995
+ item = item || self.rows[fromIndex];
996
+ if (item.parentId) {
997
+ var parent_1 = self.getRowById(item.parentId);
998
+ var offset = parent_1.children.indexOf(item) - fromIndex;
999
+ toIndex += offset;
1000
+ fromIndex += offset;
1001
+ var newRows_1 = parent_1.children.concat();
1002
+ newRows_1.splice(fromIndex, 1);
1003
+ newRows_1.splice(toIndex, 0, item);
1004
+ newRows_1.forEach(function (item, index) { return (item.newIndex = index); });
1005
+ parent_1.children.replace(newRows_1);
1006
+ return;
1007
+ }
1008
+ var newRows = self.rows.concat();
1009
+ newRows.splice(fromIndex, 1);
1010
+ newRows.splice(toIndex, 0, item);
1011
+ newRows.forEach(function (item, index) { return (item.newIndex = index); });
1012
+ self.rows.replace(newRows);
1013
+ }
1014
+ /**
1015
+ * 前端持久化记录列排序,查询字段,显示列信息
1016
+ */
1017
+ function persistSaveToggledColumns() {
1018
+ var key = getPersistDataKey(self.columnsData);
1019
+ localStorage.setItem(key, JSON.stringify({
1020
+ // 可显示列index
1021
+ toggledColumnIndex: self.activeToggaleColumns.map(function (item) { return item.index; }),
1022
+ // 列排序,name,label可能不存在
1023
+ columnOrder: self.columnsData.map(function (item) { return item.name || item.label || item.rawIndex; }),
1024
+ // 已激活的可查询列
1025
+ enabledSearchableColumn: self.activedSearchableColumns.map(function (item) { return item.name; })
1026
+ }));
1027
+ }
1028
+ function addForm(form, rowIndex) {
1029
+ self.formsRef.push({
1030
+ id: form.id,
1031
+ rowIndex: rowIndex
1032
+ });
1033
+ }
1034
+ function toggleAllColumns() {
1035
+ if (self.activeToggaleColumns.length) {
1036
+ if (self.activeToggaleColumns.length === self.toggableColumns.length) {
1037
+ self.toggableColumns.map(function (column) { return column.setToggled(false); });
1038
+ }
1039
+ else {
1040
+ self.toggableColumns.map(function (column) { return column.setToggled(true); });
1041
+ }
1042
+ }
1043
+ else {
1044
+ // 如果没有一个激活的,那就改成全选
1045
+ self.toggableColumns.map(function (column) { return column.setToggled(true); });
1046
+ }
1047
+ persistSaveToggledColumns();
1048
+ }
1049
+ function getPersistDataKey(columns) {
1050
+ // 这里的columns使用除了__开头的所有列
1051
+ // sort保证存储和读取的key值保持一致
1052
+ return (location.pathname +
1053
+ self.path +
1054
+ sortBy__default["default"](columns.map(function (item, index) { return item.name || item.label || index; })).join('-'));
1055
+ }
1056
+ return {
1057
+ update: update,
1058
+ updateColumns: updateColumns,
1059
+ initRows: initRows,
1060
+ updateSelected: updateSelected,
1061
+ toggleAll: toggleAll,
1062
+ getSelectedRows: getSelectedRows,
1063
+ toggle: toggle,
1064
+ toggleShift: toggleShift,
1065
+ toggleExpandAll: toggleExpandAll,
1066
+ toggleExpanded: toggleExpanded,
1067
+ collapseAllAtDepth: collapseAllAtDepth,
1068
+ clear: clear,
1069
+ setOrderByInfo: setOrderByInfo,
1070
+ reset: reset,
1071
+ toggleDragging: toggleDragging,
1072
+ stopDragging: stopDragging,
1073
+ exchange: exchange,
1074
+ addForm: addForm,
1075
+ toggleAllColumns: toggleAllColumns,
1076
+ persistSaveToggledColumns: persistSaveToggledColumns,
1077
+ // events
1078
+ afterCreate: function () {
1079
+ setTimeout(function () {
1080
+ if (!mobxStateTree.isAlive(self)) {
1081
+ return;
1082
+ }
1083
+ var key = getPersistDataKey(self.columnsData);
1084
+ var data = localStorage.getItem(key);
1085
+ if (data) {
1086
+ var tableMetaData_1 = JSON.parse(data);
1087
+ var toggledColumns_1 = object.isObject(tableMetaData_1)
1088
+ ? tableMetaData_1 === null || tableMetaData_1 === void 0 ? void 0 : tableMetaData_1.toggledColumnIndex
1089
+ : tableMetaData_1; // 兼容之前的类型
1090
+ self.toggableColumns.forEach(function (item) {
1091
+ return item.setToggled(!!~toggledColumns_1.indexOf(item.index));
1092
+ });
1093
+ self.searchableColumns.forEach(function (item) {
1094
+ var _a;
1095
+ item.setEnableSearch(!!~((_a = tableMetaData_1 === null || tableMetaData_1 === void 0 ? void 0 : tableMetaData_1.enabledSearchableColumn) !== null && _a !== void 0 ? _a : []).indexOf(item.name));
1096
+ });
1097
+ }
1098
+ }, 200);
1099
+ }
1100
+ };
1101
+ });
1102
+
1103
+ exports.Column = Column;
1104
+ exports.Row = Row;
1105
+ exports.TableStore = TableStore;