amis-core 3.4.3 → 3.5.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 (269) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.js +12 -2
  3. package/esm/SchemaRenderer.js +1 -1
  4. package/esm/Scoped.js +1 -1
  5. package/esm/StatusScoped.js +1 -1
  6. package/esm/WithRootStore.js +1 -1
  7. package/esm/WithStore.js +1 -1
  8. package/esm/actions/Action.js +1 -1
  9. package/esm/actions/AjaxAction.js +1 -1
  10. package/esm/actions/BreakAction.js +1 -1
  11. package/esm/actions/BroadcastAction.js +1 -1
  12. package/esm/actions/CmptAction.js +1 -1
  13. package/esm/actions/ContinueAction.js +1 -1
  14. package/esm/actions/CopyAction.js +1 -1
  15. package/esm/actions/CustomAction.js +1 -1
  16. package/esm/actions/DialogAction.js +1 -1
  17. package/esm/actions/DrawerAction.js +1 -1
  18. package/esm/actions/EmailAction.js +1 -1
  19. package/esm/actions/LinkAction.js +1 -1
  20. package/esm/actions/LoopAction.js +1 -1
  21. package/esm/actions/PageAction.js +1 -1
  22. package/esm/actions/ParallelAction.js +1 -1
  23. package/esm/actions/StatusAction.js +1 -1
  24. package/esm/actions/SwitchAction.js +1 -1
  25. package/esm/actions/ToastAction.js +1 -1
  26. package/esm/components/CustomStyle.js +9 -9
  27. package/esm/components/LazyComponent.js +1 -1
  28. package/esm/components/Overlay.js +1 -1
  29. package/esm/components/PopOver.js +1 -1
  30. package/esm/env.d.ts +11 -3
  31. package/esm/env.js +1 -1
  32. package/esm/envOverwrite.js +1 -1
  33. package/esm/factory.js +1 -3
  34. package/esm/index.js +4 -4
  35. package/esm/locale.js +1 -1
  36. package/esm/polyfills.js +1 -1
  37. package/esm/renderers/Form.js +3 -3
  38. package/esm/renderers/Item.d.ts +2 -6
  39. package/esm/renderers/Item.js +10 -16
  40. package/esm/renderers/Options.js +1 -1
  41. package/esm/renderers/Placeholder.js +1 -1
  42. package/esm/renderers/builtin.js +1 -1
  43. package/esm/renderers/register.js +1 -1
  44. package/esm/renderers/wrapControl.js +40 -21
  45. package/esm/store/app.js +6 -4
  46. package/esm/store/combo.d.ts +120 -0
  47. package/esm/store/combo.js +3 -2
  48. package/esm/store/crud.d.ts +13 -1
  49. package/esm/store/crud.js +94 -36
  50. package/esm/store/form.d.ts +50 -0
  51. package/esm/store/form.js +1 -1
  52. package/esm/store/formItem.d.ts +1 -0
  53. package/esm/store/formItem.js +17 -5
  54. package/esm/store/iRenderer.js +1 -1
  55. package/esm/store/index.js +1 -1
  56. package/esm/store/list.js +1 -1
  57. package/esm/store/manager.js +1 -1
  58. package/esm/store/modal.js +1 -1
  59. package/esm/store/node.js +1 -1
  60. package/esm/store/pagination.js +1 -1
  61. package/esm/store/root.js +1 -1
  62. package/esm/store/service.js +1 -1
  63. package/esm/store/status.js +1 -1
  64. package/esm/store/table.d.ts +418 -65
  65. package/esm/store/table.js +106 -72
  66. package/esm/store/table2.js +1 -1
  67. package/esm/theme.js +1 -1
  68. package/esm/types.d.ts +6 -0
  69. package/esm/utils/Animation.js +1 -1
  70. package/esm/utils/ColorScale.js +1 -1
  71. package/esm/utils/DataSchema.js +1 -1
  72. package/esm/utils/DataScope.js +1 -1
  73. package/esm/utils/RootClose.js +1 -1
  74. package/esm/utils/SimpleMap.js +1 -1
  75. package/esm/utils/api.js +2 -1
  76. package/esm/utils/arraySlice.js +1 -1
  77. package/esm/utils/attachmentAdpator.d.ts +2 -1
  78. package/esm/utils/attachmentAdpator.js +17 -11
  79. package/esm/utils/autobind.js +1 -1
  80. package/esm/utils/columnsSplit.js +1 -1
  81. package/esm/utils/dataMapping.js +1 -1
  82. package/esm/utils/date.js +1 -1
  83. package/esm/utils/debug.js +1 -1
  84. package/esm/utils/decodeEntity.js +1 -1
  85. package/esm/utils/dom.js +1 -1
  86. package/esm/utils/errors.js +1 -1
  87. package/esm/utils/escapeHtml.js +1 -1
  88. package/esm/utils/filter-schema.d.ts +8 -0
  89. package/esm/utils/filter-schema.js +23 -9
  90. package/esm/utils/filter.js +1 -1
  91. package/esm/utils/formatDuration.js +1 -1
  92. package/esm/utils/formula.js +1 -1
  93. package/esm/utils/getVariable.js +1 -1
  94. package/esm/utils/grammar.js +1 -1
  95. package/esm/utils/handleAction.js +2 -1
  96. package/esm/utils/helper.d.ts +13 -0
  97. package/esm/utils/helper.js +46 -4
  98. package/esm/utils/highlight.js +1 -1
  99. package/esm/utils/icon.js +1 -1
  100. package/esm/utils/image.js +1 -1
  101. package/esm/utils/isPureVariable.js +1 -1
  102. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  103. package/esm/utils/keyToPath.js +1 -1
  104. package/esm/utils/makeSorter.js +1 -1
  105. package/esm/utils/math.js +1 -1
  106. package/esm/utils/memoryParse.js +1 -1
  107. package/esm/utils/normalizeLink.js +1 -1
  108. package/esm/utils/normalizeOptions.js +1 -1
  109. package/esm/utils/object.js +1 -1
  110. package/esm/utils/offset.js +1 -1
  111. package/esm/utils/offsetParent.js +1 -1
  112. package/esm/utils/optionValueCompare.js +1 -1
  113. package/esm/utils/position.js +1 -1
  114. package/esm/utils/prettyBytes.js +1 -1
  115. package/esm/utils/renderer-event.js +1 -1
  116. package/esm/utils/replaceText.d.ts +1 -1
  117. package/esm/utils/replaceText.js +9 -4
  118. package/esm/utils/resize-sensor.js +1 -1
  119. package/esm/utils/resolveCondition.js +1 -1
  120. package/esm/utils/resolveVariable.js +1 -1
  121. package/esm/utils/resolveVariableAndFilter.js +1 -1
  122. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  123. package/esm/utils/scrollPosition.js +1 -1
  124. package/esm/utils/string2regExp.js +1 -1
  125. package/esm/utils/stripNumber.js +1 -1
  126. package/esm/utils/style-helper.js +3 -3
  127. package/esm/utils/style.js +1 -1
  128. package/esm/utils/toNumber.js +1 -1
  129. package/esm/utils/tokenize.js +1 -1
  130. package/esm/utils/tpl-builtin.js +1 -1
  131. package/esm/utils/tpl-lodash.js +1 -1
  132. package/esm/utils/tpl.js +1 -1
  133. package/esm/utils/uncontrollable.js +1 -1
  134. package/esm/utils/validations.js +1 -1
  135. package/lib/Root.js +1 -1
  136. package/lib/RootRenderer.js +12 -2
  137. package/lib/SchemaRenderer.js +1 -1
  138. package/lib/Scoped.js +1 -1
  139. package/lib/StatusScoped.js +1 -1
  140. package/lib/WithRootStore.js +1 -1
  141. package/lib/WithStore.js +1 -1
  142. package/lib/actions/Action.js +1 -1
  143. package/lib/actions/AjaxAction.js +1 -1
  144. package/lib/actions/BreakAction.js +1 -1
  145. package/lib/actions/BroadcastAction.js +1 -1
  146. package/lib/actions/CmptAction.js +1 -1
  147. package/lib/actions/ContinueAction.js +1 -1
  148. package/lib/actions/CopyAction.js +1 -1
  149. package/lib/actions/CustomAction.js +1 -1
  150. package/lib/actions/DialogAction.js +1 -1
  151. package/lib/actions/DrawerAction.js +1 -1
  152. package/lib/actions/EmailAction.js +1 -1
  153. package/lib/actions/LinkAction.js +1 -1
  154. package/lib/actions/LoopAction.js +1 -1
  155. package/lib/actions/PageAction.js +1 -1
  156. package/lib/actions/ParallelAction.js +1 -1
  157. package/lib/actions/StatusAction.js +1 -1
  158. package/lib/actions/SwitchAction.js +1 -1
  159. package/lib/actions/ToastAction.js +1 -1
  160. package/lib/components/CustomStyle.js +9 -9
  161. package/lib/components/LazyComponent.js +1 -1
  162. package/lib/components/Overlay.js +1 -1
  163. package/lib/components/PopOver.js +1 -1
  164. package/lib/env.d.ts +11 -3
  165. package/lib/env.js +1 -1
  166. package/lib/envOverwrite.js +1 -1
  167. package/lib/factory.js +1 -3
  168. package/lib/index.js +6 -2
  169. package/lib/locale.js +1 -1
  170. package/lib/polyfills.js +1 -1
  171. package/lib/renderers/Form.js +3 -3
  172. package/lib/renderers/Item.d.ts +3 -7
  173. package/lib/renderers/Item.js +10 -16
  174. package/lib/renderers/Options.js +1 -1
  175. package/lib/renderers/Placeholder.js +1 -1
  176. package/lib/renderers/builtin.js +1 -1
  177. package/lib/renderers/register.js +1 -1
  178. package/lib/renderers/wrapControl.js +40 -21
  179. package/lib/store/app.js +5 -3
  180. package/lib/store/combo.d.ts +120 -1
  181. package/lib/store/combo.js +3 -2
  182. package/lib/store/crud.d.ts +13 -1
  183. package/lib/store/crud.js +94 -36
  184. package/lib/store/form.d.ts +50 -0
  185. package/lib/store/form.js +1 -1
  186. package/lib/store/formItem.d.ts +1 -0
  187. package/lib/store/formItem.js +15 -3
  188. package/lib/store/iRenderer.js +1 -1
  189. package/lib/store/index.js +1 -1
  190. package/lib/store/list.js +1 -1
  191. package/lib/store/manager.js +1 -1
  192. package/lib/store/modal.js +1 -1
  193. package/lib/store/node.js +1 -1
  194. package/lib/store/pagination.js +1 -1
  195. package/lib/store/root.js +1 -1
  196. package/lib/store/service.js +1 -1
  197. package/lib/store/status.js +1 -1
  198. package/lib/store/table.d.ts +418 -66
  199. package/lib/store/table.js +104 -70
  200. package/lib/store/table2.js +1 -1
  201. package/lib/theme.js +1 -1
  202. package/lib/types.d.ts +6 -0
  203. package/lib/utils/Animation.js +1 -1
  204. package/lib/utils/ColorScale.js +1 -1
  205. package/lib/utils/DataSchema.js +1 -1
  206. package/lib/utils/DataScope.js +1 -1
  207. package/lib/utils/RootClose.js +1 -1
  208. package/lib/utils/SimpleMap.js +1 -1
  209. package/lib/utils/api.js +2 -1
  210. package/lib/utils/arraySlice.js +1 -1
  211. package/lib/utils/attachmentAdpator.d.ts +2 -1
  212. package/lib/utils/attachmentAdpator.js +17 -11
  213. package/lib/utils/autobind.js +1 -1
  214. package/lib/utils/columnsSplit.js +1 -1
  215. package/lib/utils/dataMapping.js +1 -1
  216. package/lib/utils/date.js +1 -1
  217. package/lib/utils/debug.js +1 -1
  218. package/lib/utils/decodeEntity.js +1 -1
  219. package/lib/utils/dom.js +1 -1
  220. package/lib/utils/errors.js +1 -1
  221. package/lib/utils/escapeHtml.js +1 -1
  222. package/lib/utils/filter-schema.d.ts +8 -0
  223. package/lib/utils/filter-schema.js +22 -7
  224. package/lib/utils/filter.js +1 -1
  225. package/lib/utils/formatDuration.js +1 -1
  226. package/lib/utils/formula.js +1 -1
  227. package/lib/utils/getVariable.js +1 -1
  228. package/lib/utils/grammar.js +1 -1
  229. package/lib/utils/handleAction.js +2 -1
  230. package/lib/utils/helper.d.ts +13 -0
  231. package/lib/utils/helper.js +48 -3
  232. package/lib/utils/highlight.js +1 -1
  233. package/lib/utils/icon.js +1 -1
  234. package/lib/utils/image.js +1 -1
  235. package/lib/utils/isPureVariable.js +1 -1
  236. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  237. package/lib/utils/keyToPath.js +1 -1
  238. package/lib/utils/makeSorter.js +1 -1
  239. package/lib/utils/math.js +1 -1
  240. package/lib/utils/memoryParse.js +1 -1
  241. package/lib/utils/normalizeLink.js +1 -1
  242. package/lib/utils/normalizeOptions.js +1 -1
  243. package/lib/utils/object.js +1 -1
  244. package/lib/utils/offset.js +1 -1
  245. package/lib/utils/offsetParent.js +1 -1
  246. package/lib/utils/optionValueCompare.js +1 -1
  247. package/lib/utils/position.js +1 -1
  248. package/lib/utils/prettyBytes.js +1 -1
  249. package/lib/utils/renderer-event.js +1 -1
  250. package/lib/utils/replaceText.d.ts +1 -1
  251. package/lib/utils/replaceText.js +9 -4
  252. package/lib/utils/resize-sensor.js +1 -1
  253. package/lib/utils/resolveCondition.js +1 -1
  254. package/lib/utils/resolveVariable.js +1 -1
  255. package/lib/utils/resolveVariableAndFilter.js +1 -1
  256. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  257. package/lib/utils/scrollPosition.js +1 -1
  258. package/lib/utils/string2regExp.js +1 -1
  259. package/lib/utils/stripNumber.js +1 -1
  260. package/lib/utils/style-helper.js +3 -3
  261. package/lib/utils/style.js +1 -1
  262. package/lib/utils/toNumber.js +1 -1
  263. package/lib/utils/tokenize.js +1 -1
  264. package/lib/utils/tpl-builtin.js +1 -1
  265. package/lib/utils/tpl-lodash.js +1 -1
  266. package/lib/utils/tpl.js +1 -1
  267. package/lib/utils/uncontrollable.js +1 -1
  268. package/lib/utils/validations.js +1 -1
  269. package/package.json +4 -3
@@ -1,15 +1,14 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
6
- import { __assign, __spreadArray, __read, __values } from 'tslib';
6
+ import { __assign, __rest, __spreadArray, __read, __values } from 'tslib';
7
7
  import { types, getParent, isAlive } from 'mobx-state-tree';
8
8
  import { iRendererStore } from './iRenderer.js';
9
9
  import 'amis-formula';
10
10
  import 'moment';
11
11
  import { createObject, extendObject, isObject } from '../utils/object.js';
12
- import { isPureVariable } from '../utils/isPureVariable.js';
13
12
  import { resolveVariable } from '../utils/resolveVariable.js';
14
13
  import { resolveVariableAndFilter } from '../utils/resolveVariableAndFilter.js';
15
14
  import 'lodash/isPlainObject';
@@ -17,7 +16,7 @@ import '../utils/filter.js';
17
16
  import isEqual from 'lodash/isEqual';
18
17
  import find from 'lodash/find';
19
18
  import sortBy from 'lodash/sortBy';
20
- import { immutableExtends, flattenTree, findTree, eachTree, isVisible, hasVisibleExpression, isBreakpoint, difference, guid, sortArray } from '../utils/helper.js';
19
+ import { immutableExtends, flattenTree, findTree, eachTree, guid, isVisible, hasVisibleExpression, isBreakpoint, difference, sortArray } from '../utils/helper.js';
21
20
  import { evalExpression } from '../utils/tpl.js';
22
21
  import { getStoreById } from './manager.js';
23
22
 
@@ -25,6 +24,38 @@ import { getStoreById } from './manager.js';
25
24
  * 内部列的数量 '__checkme' | '__dragme' | '__expandme'
26
25
  */
27
26
  var PARTITION_INDEX = 3;
27
+ function initChildren(children, depth, pindex, parentId, path) {
28
+ if (path === void 0) { path = ''; }
29
+ depth += 1;
30
+ return children.map(function (item, index) {
31
+ var _a;
32
+ item = isObject(item)
33
+ ? item
34
+ : {
35
+ item: item
36
+ };
37
+ var id = (_a = item.__id) !== null && _a !== void 0 ? _a : guid();
38
+ return {
39
+ // id: String(item && (item as any)[self.primaryField] || `${pindex}-${depth}-${key}`),
40
+ id: String(id),
41
+ parentId: String(parentId),
42
+ key: String("".concat(pindex, "-").concat(depth, "-").concat(index)),
43
+ path: "".concat(path).concat(index),
44
+ depth: depth,
45
+ index: index,
46
+ newIndex: index,
47
+ pristine: item,
48
+ data: item,
49
+ defer: !!item.defer,
50
+ loaded: false,
51
+ loading: false,
52
+ rowSpans: {},
53
+ children: item && Array.isArray(item.children)
54
+ ? initChildren(item.children, depth, index, id, "".concat(path).concat(index, "."))
55
+ : []
56
+ };
57
+ });
58
+ }
28
59
  var Column = types
29
60
  .model('Column', {
30
61
  label: types.optional(types.frozen(), undefined),
@@ -56,7 +87,7 @@ var Column = types
56
87
  get isPrimary() {
57
88
  var _a;
58
89
  var table = getParent(self, 2);
59
- return ((_a = table.filteredColumns[0]) === null || _a === void 0 ? void 0 : _a.id) === self.id;
90
+ return (((_a = table.filteredColumns.find(function (column) { return !column.type.startsWith('__'); })) === null || _a === void 0 ? void 0 : _a.id) === self.id);
60
91
  }
61
92
  }); })
62
93
  .actions(function (self) { return ({
@@ -98,17 +129,27 @@ var Row = types
98
129
  rowSpans: types.frozen({}),
99
130
  index: types.number,
100
131
  newIndex: types.number,
101
- nth: 0,
102
132
  path: '',
103
- expandable: false,
104
133
  checkdisable: false,
105
134
  isHover: false,
106
135
  children: types.optional(types.array(types.late(function () { return Row; })), []),
136
+ defer: false,
137
+ loaded: false,
138
+ loading: false,
139
+ error: '',
107
140
  depth: types.number,
108
141
  appeared: true,
109
142
  lazyRender: false
110
143
  })
111
144
  .views(function (self) { return ({
145
+ get expandable() {
146
+ var table;
147
+ return !!((self && self.children.length) ||
148
+ (self && self.defer && !self.loaded) ||
149
+ ((table = getParent(self, self.depth * 2)) &&
150
+ table.footable &&
151
+ table.footableColumns.length));
152
+ },
112
153
  get checked() {
113
154
  return getParent(self, self.depth * 2).isSelected(self);
114
155
  },
@@ -236,30 +277,53 @@ var Row = types
236
277
  }
237
278
  });
238
279
  if (Array.isArray(data.children)) {
239
- var arr = data.children;
240
- var pool = arr.concat();
241
- // 把多的删了先
242
- if (self.children.length > arr.length) {
243
- self.children.splice(arr.length, self.children.length - arr.length);
280
+ this.replaceChildren(data.children);
281
+ }
282
+ },
283
+ replaceChildren: function (children) {
284
+ var arr = children;
285
+ var pool = arr.concat();
286
+ // 把多的删了先
287
+ if (self.children.length > arr.length) {
288
+ self.children.splice(arr.length, self.children.length - arr.length);
289
+ }
290
+ var index = 0;
291
+ var len = self.children.length;
292
+ while (pool.length) {
293
+ // 因为父级id未更新,所以需要将子级的parentId正确指向父级id
294
+ var item = __assign(__assign({}, pool.shift()), { parentId: self.id });
295
+ if (index < len) {
296
+ self.children[index].replaceWith(item);
244
297
  }
245
- var index = 0;
246
- var len = self.children.length;
247
- while (pool.length) {
248
- // 因为父级id未更新,所以需要将子级的parentId正确指向父级id
249
- var item = __assign(__assign({}, pool.shift()), { parentId: self.id });
250
- if (index < len) {
251
- self.children[index].replaceWith(item);
252
- }
253
- else {
254
- var row = Row.create(item);
255
- self.children.push(row);
256
- }
257
- index++;
298
+ else {
299
+ var row = Row.create(item);
300
+ self.children.push(row);
258
301
  }
302
+ index++;
259
303
  }
260
304
  },
261
305
  markAppeared: function (value) {
262
306
  value && (self.appeared = !!value);
307
+ },
308
+ markLoading: function (value) {
309
+ self.loading = !!value;
310
+ },
311
+ markLoaded: function (value) {
312
+ self.loaded = !!value;
313
+ },
314
+ setError: function (value) {
315
+ self.error = String(value);
316
+ },
317
+ resetDefered: function () {
318
+ self.error = '';
319
+ self.loaded = false;
320
+ },
321
+ setDeferData: function (_a) {
322
+ var children = _a.children, rest = __rest(_a, ["children"]);
323
+ self.data = __assign(__assign({}, self.data), rest);
324
+ if (Array.isArray(children)) {
325
+ this.replaceChildren(initChildren(children, self.depth, self.index, self.id, self.path));
326
+ }
263
327
  }
264
328
  }); });
265
329
  var TableStore = iRendererStore
@@ -664,7 +728,7 @@ var TableStore = iRendererStore
664
728
  function getTable() {
665
729
  return tableRef;
666
730
  }
667
- function update(config) {
731
+ function update(config, options) {
668
732
  var _a;
669
733
  config.primaryField !== undefined &&
670
734
  (self.primaryField = config.primaryField);
@@ -711,8 +775,15 @@ var TableStore = iRendererStore
711
775
  (self.tableLayout = config.tableLayout);
712
776
  if (config.columns && Array.isArray(config.columns)) {
713
777
  var columns = config.columns
714
- .filter(function (column) { return column; })
715
- .concat();
778
+ .map(function (column) {
779
+ if ((options === null || options === void 0 ? void 0 : options.resolveDefinitions) &&
780
+ typeof (column === null || column === void 0 ? void 0 : column.$ref) == 'string' &&
781
+ column.$ref) {
782
+ return __assign(__assign({}, options.resolveDefinitions(column.$ref)), column);
783
+ }
784
+ return column;
785
+ })
786
+ .filter(function (column) { return column; });
716
787
  // 更新列顺序,afterCreate生命周期中更新columns不会触发组件的render
717
788
  var key = getPersistDataKey(columns);
718
789
  var data = localStorage.getItem(key);
@@ -762,11 +833,7 @@ var TableStore = iRendererStore
762
833
  var origin = item.id
763
834
  ? originColumns_1.find(function (column) { return column.pristine.id === item.id; })
764
835
  : originColumns_1[index];
765
- return __assign(__assign({}, item), { id: (origin === null || origin === void 0 ? void 0 : origin.id) || guid(), index: index, width: (origin === null || origin === void 0 ? void 0 : origin.width) || 0, minWidth: (origin === null || origin === void 0 ? void 0 : origin.minWidth) || 0, realWidth: (origin === null || origin === void 0 ? void 0 : origin.realWidth) || 0, rawIndex: index - PARTITION_INDEX, type: item.type || 'plain', pristine: item.pristine || item, toggled: item.toggled !== false, breakpoint: item.breakpoint,
766
- /** 提前映射变量,方便后续view中使用 */
767
- label: isPureVariable(item.label)
768
- ? resolveVariableAndFilter(item.label, self.data)
769
- : item.label });
836
+ return __assign(__assign({}, item), { id: (origin === null || origin === void 0 ? void 0 : origin.id) || guid(), index: index, width: (origin === null || origin === void 0 ? void 0 : origin.width) || 0, minWidth: (origin === null || origin === void 0 ? void 0 : origin.minWidth) || 0, realWidth: (origin === null || origin === void 0 ? void 0 : origin.realWidth) || 0, rawIndex: index - PARTITION_INDEX, type: item.type || 'plain', pristine: item.pristine || item, toggled: item.toggled !== false, breakpoint: item.breakpoint, isPrimary: index === PARTITION_INDEX });
770
837
  });
771
838
  self.columns.replace(columns);
772
839
  }
@@ -912,44 +979,11 @@ var TableStore = iRendererStore
912
979
  }
913
980
  return combineCell(arr, keys);
914
981
  }
915
- function initChildren(children, depth, pindex, parentId, path, nThRef) {
916
- if (path === void 0) { path = ''; }
917
- depth += 1;
918
- return children.map(function (item, index) {
919
- var _a;
920
- item = isObject(item)
921
- ? item
922
- : {
923
- item: item
924
- };
925
- var id = (_a = item.__id) !== null && _a !== void 0 ? _a : guid();
926
- return {
927
- // id: String(item && (item as any)[self.primaryField] || `${pindex}-${depth}-${key}`),
928
- id: String(id),
929
- parentId: String(parentId),
930
- key: String("".concat(pindex, "-").concat(depth, "-").concat(index)),
931
- path: "".concat(path).concat(index),
932
- depth: depth,
933
- index: index,
934
- nth: nThRef.index++,
935
- newIndex: index,
936
- pristine: item,
937
- data: item,
938
- rowSpans: {},
939
- children: item && Array.isArray(item.children)
940
- ? initChildren(item.children, depth, index, id, "".concat(path).concat(index, "."), nThRef)
941
- : [],
942
- expandable: !!((item && Array.isArray(item.children) && item.children.length) ||
943
- (self.footable && self.footableColumns.length))
944
- };
945
- });
946
- }
947
982
  function initRows(rows, getEntryId, reUseRow) {
948
983
  self.selectedRows.clear();
949
984
  // self.expandedRows.clear();
950
985
  /* 避免输入内容为非数组挂掉 */
951
986
  rows = !Array.isArray(rows) ? [] : rows;
952
- var nThRef = { index: 0 };
953
987
  var arr = rows.map(function (item, index) {
954
988
  var _a;
955
989
  if (!isObject(item)) {
@@ -964,24 +998,24 @@ var TableStore = iRendererStore
964
998
  key: String("".concat(index, "-1-").concat(index)),
965
999
  depth: 1,
966
1000
  index: index,
967
- nth: nThRef.index++,
968
1001
  newIndex: index,
969
1002
  pristine: item,
970
1003
  path: "".concat(index),
971
1004
  data: item,
972
1005
  rowSpans: {},
1006
+ defer: !!item.defer,
1007
+ loaded: false,
1008
+ loading: false,
973
1009
  children: item && Array.isArray(item.children)
974
- ? initChildren(item.children, 1, index, id, "".concat(index, "."), nThRef)
975
- : [],
976
- expandable: !!((item && Array.isArray(item.children) && item.children.length) ||
977
- (self.footable && self.footableColumns.length))
1010
+ ? initChildren(item.children, 1, index, id, "".concat(index, "."))
1011
+ : []
978
1012
  };
979
1013
  });
980
1014
  if (self.combineNum) {
981
1015
  arr = autoCombineCell(arr, self.columns, self.combineNum, self.combineFromIndex);
982
1016
  }
983
1017
  replaceRow(arr, reUseRow);
984
- self.isNested = self.rows.some(function (item) { return item.children.length; });
1018
+ self.isNested = self.rows.some(function (item) { return item.children.length || (item.defer && !item.loaded); });
985
1019
  // 前 20 个直接渲染,后面的按需渲染
986
1020
  if (self.lazyRenderAfter &&
987
1021
  self.falttenedRows.length > self.lazyRenderAfter) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/theme.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/types.d.ts CHANGED
@@ -186,8 +186,14 @@ export interface ApiObject extends BaseApiObject {
186
186
  mockResponse?: PlainObject;
187
187
  adaptor?: (payload: object, response: fetcherResult, api: ApiObject, context: any) => any;
188
188
  requestAdaptor?: (api: ApiObject, context: any) => ApiObject | Promise<ApiObject>;
189
+ /**
190
+ * api 发送上下文,可以用来传递一些数据给 api 的 adaptor
191
+ * @readonly
192
+ */
193
+ context?: any;
189
194
  /** 是否过滤为空字符串的 query 参数 */
190
195
  filterEmptyQuery?: boolean;
196
+ downloadFileName?: string;
191
197
  }
192
198
  export type ApiString = string;
193
199
  export type Api = ApiString | ApiObject;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/utils/api.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -370,6 +370,7 @@ function wrapFetcher(fn, tracker) {
370
370
  switch (_d.label) {
371
371
  case 0:
372
372
  api = buildApi(api, data, options);
373
+ api.context = data;
373
374
  if (!api.requestAdaptor) return [3 /*break*/, 2];
374
375
  debug('api', 'before requestAdaptor', api);
375
376
  return [4 /*yield*/, api.requestAdaptor(api, data)];
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -4,5 +4,6 @@
4
4
  * @param __
5
5
  * @returns
6
6
  */
7
- export declare function attachmentAdpator(response: any, __: Function): any;
7
+ import { ApiObject } from '../types';
8
+ export declare function attachmentAdpator(response: any, __: Function, api?: ApiObject): any;
8
9
  export default attachmentAdpator;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -11,21 +11,27 @@ import { __assign } from 'tslib';
11
11
  * @param __
12
12
  * @returns
13
13
  */
14
- function attachmentAdpator(response, __) {
14
+ function attachmentAdpator(response, __, api) {
15
15
  if (response && response.headers && response.headers['content-disposition']) {
16
16
  var disposition = response.headers['content-disposition'];
17
17
  var filename = '';
18
18
  if (disposition && disposition.indexOf('attachment') !== -1) {
19
- // disposition 有可能是 attachment; filename="??.xlsx"; filename*=UTF-8''%E4%B8%AD%E6%96%87.xlsx
20
- // 这种情况下最后一个才是正确的文件名
21
- var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
22
- var matches = disposition.match(filenameRegex);
23
- if (matches && matches.length) {
24
- filename = matches[1].replace("UTF-8''", '').replace(/['"]/g, '');
19
+ // 如果 api 中配置了,则优先用 api 中的配置
20
+ if (api === null || api === void 0 ? void 0 : api.downloadFileName) {
21
+ filename = api.downloadFileName;
25
22
  }
26
- // 很可能是中文被 url-encode 了
27
- if (filename && filename.replace(/[^%]/g, '').length > 2) {
28
- filename = decodeURIComponent(filename);
23
+ else {
24
+ // disposition 有可能是 attachment; filename="??.xlsx"; filename*=UTF-8''%E4%B8%AD%E6%96%87.xlsx
25
+ // 这种情况下最后一个才是正确的文件名
26
+ var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/i;
27
+ var matches = disposition.match(filenameRegex);
28
+ if (matches && matches.length) {
29
+ filename = matches[1].replace("UTF-8''", '').replace(/['"]/g, '');
30
+ }
31
+ // 很可能是中文被 url-encode 了
32
+ if (filename && filename.replace(/[^%]/g, '').length > 2) {
33
+ filename = decodeURIComponent(filename);
34
+ }
29
35
  }
30
36
  var type = response.headers['content-type'];
31
37
  var blob = response.data.toString() === '[object Blob]'
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/utils/date.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/utils/dom.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,4 +1,12 @@
1
1
  import { PlainObject } from '../types';
2
+ import type { ClassValue } from '../theme';
3
+ /**
4
+ * 计算下发给子组件的className,处理对象类型的className,将其中的表达式计算出来,避免被classnames识别为true
5
+ *
6
+ * @param value - CSS类名值
7
+ * @param ctx - 数据域
8
+ */
9
+ export declare function filterClassNameObject(classValue: ClassValue, ctx?: Record<string, any>): ClassValue;
2
10
  /**
3
11
  * 处理 Props 数据,所有带 On 结束的做一次
4
12
  *
@@ -1,13 +1,32 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
6
6
  import { evalExpression, filter } from './tpl.js';
7
- import { injectPropsToObject, mapObject } from './helper.js';
7
+ import { mapObject, injectPropsToObject } from './helper.js';
8
8
  import isPlainObject from 'lodash/isPlainObject';
9
9
  import { tokenize } from './tokenize.js';
10
10
 
11
+ /**
12
+ * 计算下发给子组件的className,处理对象类型的className,将其中的表达式计算出来,避免被classnames识别为true
13
+ *
14
+ * @param value - CSS类名值
15
+ * @param ctx - 数据域
16
+ */
17
+ function filterClassNameObject(classValue, ctx) {
18
+ if (ctx === void 0) { ctx = {}; }
19
+ var result = classValue;
20
+ if (classValue && typeof classValue === 'string') {
21
+ result = tokenize(classValue, ctx);
22
+ }
23
+ else if (classValue && isPlainObject(classValue)) {
24
+ result = mapObject(classValue, function (value) {
25
+ return typeof value === 'string' ? evalExpression(value, ctx) : value;
26
+ }, undefined, function (key) { return tokenize(key, ctx); });
27
+ }
28
+ return result;
29
+ }
11
30
  /**
12
31
  * 处理 Props 数据,所有带 On 结束的做一次
13
32
  *
@@ -58,15 +77,10 @@ function getExprProperties(schema, data, blackList, props) {
58
77
  value &&
59
78
  (typeof value === 'string' || isPlainObject(value))) {
60
79
  exprProps["".concat(key, "Raw")] = value;
61
- exprProps[key] =
62
- typeof value === 'string'
63
- ? tokenize(value, data)
64
- : mapObject(value, function (value) {
65
- return typeof value === 'string' ? evalExpression(value, data) : value;
66
- }, undefined, function (key) { return tokenize(key, data); });
80
+ exprProps[key] = filterClassNameObject(value, data);
67
81
  }
68
82
  });
69
83
  return exprProps;
70
84
  }
71
85
 
72
- export { getExprProperties as default, getExprProperties };
86
+ export { getExprProperties as default, filterClassNameObject, getExprProperties };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.3
2
+ * amis-core v3.5.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -26,6 +26,7 @@ function handleAction(e, action, props, data) {
26
26
  action.actionType = 'ajax';
27
27
  var api = normalizeApi(action.api);
28
28
  api.responseType = 'blob';
29
+ api.downloadFileName = action.downloadFileName;
29
30
  action.api = api;
30
31
  }
31
32
  onAction(e, action, data || props.data);