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,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
 
@@ -13,7 +13,6 @@ var iRenderer = require('./iRenderer.js');
13
13
  require('amis-formula');
14
14
  require('moment');
15
15
  var object = require('../utils/object.js');
16
- var isPureVariable = require('../utils/isPureVariable.js');
17
16
  var resolveVariable = require('../utils/resolveVariable.js');
18
17
  var resolveVariableAndFilter = require('../utils/resolveVariableAndFilter.js');
19
18
  require('lodash/isPlainObject');
@@ -35,6 +34,38 @@ var sortBy__default = /*#__PURE__*/_interopDefaultLegacy(sortBy);
35
34
  * 内部列的数量 '__checkme' | '__dragme' | '__expandme'
36
35
  */
37
36
  var PARTITION_INDEX = 3;
37
+ function initChildren(children, depth, pindex, parentId, path) {
38
+ if (path === void 0) { path = ''; }
39
+ depth += 1;
40
+ return children.map(function (item, index) {
41
+ var _a;
42
+ item = object.isObject(item)
43
+ ? item
44
+ : {
45
+ item: item
46
+ };
47
+ var id = (_a = item.__id) !== null && _a !== void 0 ? _a : helper.guid();
48
+ return {
49
+ // id: String(item && (item as any)[self.primaryField] || `${pindex}-${depth}-${key}`),
50
+ id: String(id),
51
+ parentId: String(parentId),
52
+ key: String("".concat(pindex, "-").concat(depth, "-").concat(index)),
53
+ path: "".concat(path).concat(index),
54
+ depth: depth,
55
+ index: index,
56
+ newIndex: index,
57
+ pristine: item,
58
+ data: item,
59
+ defer: !!item.defer,
60
+ loaded: false,
61
+ loading: false,
62
+ rowSpans: {},
63
+ children: item && Array.isArray(item.children)
64
+ ? initChildren(item.children, depth, index, id, "".concat(path).concat(index, "."))
65
+ : []
66
+ };
67
+ });
68
+ }
38
69
  var Column = mobxStateTree.types
39
70
  .model('Column', {
40
71
  label: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
@@ -66,7 +97,7 @@ var Column = mobxStateTree.types
66
97
  get isPrimary() {
67
98
  var _a;
68
99
  var table = mobxStateTree.getParent(self, 2);
69
- return ((_a = table.filteredColumns[0]) === null || _a === void 0 ? void 0 : _a.id) === self.id;
100
+ return (((_a = table.filteredColumns.find(function (column) { return !column.type.startsWith('__'); })) === null || _a === void 0 ? void 0 : _a.id) === self.id);
70
101
  }
71
102
  }); })
72
103
  .actions(function (self) { return ({
@@ -108,17 +139,27 @@ var Row = mobxStateTree.types
108
139
  rowSpans: mobxStateTree.types.frozen({}),
109
140
  index: mobxStateTree.types.number,
110
141
  newIndex: mobxStateTree.types.number,
111
- nth: 0,
112
142
  path: '',
113
- expandable: false,
114
143
  checkdisable: false,
115
144
  isHover: false,
116
145
  children: mobxStateTree.types.optional(mobxStateTree.types.array(mobxStateTree.types.late(function () { return Row; })), []),
146
+ defer: false,
147
+ loaded: false,
148
+ loading: false,
149
+ error: '',
117
150
  depth: mobxStateTree.types.number,
118
151
  appeared: true,
119
152
  lazyRender: false
120
153
  })
121
154
  .views(function (self) { return ({
155
+ get expandable() {
156
+ var table;
157
+ return !!((self && self.children.length) ||
158
+ (self && self.defer && !self.loaded) ||
159
+ ((table = mobxStateTree.getParent(self, self.depth * 2)) &&
160
+ table.footable &&
161
+ table.footableColumns.length));
162
+ },
122
163
  get checked() {
123
164
  return mobxStateTree.getParent(self, self.depth * 2).isSelected(self);
124
165
  },
@@ -246,30 +287,53 @@ var Row = mobxStateTree.types
246
287
  }
247
288
  });
248
289
  if (Array.isArray(data.children)) {
249
- var arr = data.children;
250
- var pool = arr.concat();
251
- // 把多的删了先
252
- if (self.children.length > arr.length) {
253
- self.children.splice(arr.length, self.children.length - arr.length);
290
+ this.replaceChildren(data.children);
291
+ }
292
+ },
293
+ replaceChildren: function (children) {
294
+ var arr = children;
295
+ var pool = arr.concat();
296
+ // 把多的删了先
297
+ if (self.children.length > arr.length) {
298
+ self.children.splice(arr.length, self.children.length - arr.length);
299
+ }
300
+ var index = 0;
301
+ var len = self.children.length;
302
+ while (pool.length) {
303
+ // 因为父级id未更新,所以需要将子级的parentId正确指向父级id
304
+ var item = tslib.__assign(tslib.__assign({}, pool.shift()), { parentId: self.id });
305
+ if (index < len) {
306
+ self.children[index].replaceWith(item);
254
307
  }
255
- var index = 0;
256
- var len = self.children.length;
257
- while (pool.length) {
258
- // 因为父级id未更新,所以需要将子级的parentId正确指向父级id
259
- var item = tslib.__assign(tslib.__assign({}, pool.shift()), { parentId: self.id });
260
- if (index < len) {
261
- self.children[index].replaceWith(item);
262
- }
263
- else {
264
- var row = Row.create(item);
265
- self.children.push(row);
266
- }
267
- index++;
308
+ else {
309
+ var row = Row.create(item);
310
+ self.children.push(row);
268
311
  }
312
+ index++;
269
313
  }
270
314
  },
271
315
  markAppeared: function (value) {
272
316
  value && (self.appeared = !!value);
317
+ },
318
+ markLoading: function (value) {
319
+ self.loading = !!value;
320
+ },
321
+ markLoaded: function (value) {
322
+ self.loaded = !!value;
323
+ },
324
+ setError: function (value) {
325
+ self.error = String(value);
326
+ },
327
+ resetDefered: function () {
328
+ self.error = '';
329
+ self.loaded = false;
330
+ },
331
+ setDeferData: function (_a) {
332
+ var children = _a.children, rest = tslib.__rest(_a, ["children"]);
333
+ self.data = tslib.__assign(tslib.__assign({}, self.data), rest);
334
+ if (Array.isArray(children)) {
335
+ this.replaceChildren(initChildren(children, self.depth, self.index, self.id, self.path));
336
+ }
273
337
  }
274
338
  }); });
275
339
  var TableStore = iRenderer.iRendererStore
@@ -674,7 +738,7 @@ var TableStore = iRenderer.iRendererStore
674
738
  function getTable() {
675
739
  return tableRef;
676
740
  }
677
- function update(config) {
741
+ function update(config, options) {
678
742
  var _a;
679
743
  config.primaryField !== undefined &&
680
744
  (self.primaryField = config.primaryField);
@@ -721,8 +785,15 @@ var TableStore = iRenderer.iRendererStore
721
785
  (self.tableLayout = config.tableLayout);
722
786
  if (config.columns && Array.isArray(config.columns)) {
723
787
  var columns = config.columns
724
- .filter(function (column) { return column; })
725
- .concat();
788
+ .map(function (column) {
789
+ if ((options === null || options === void 0 ? void 0 : options.resolveDefinitions) &&
790
+ typeof (column === null || column === void 0 ? void 0 : column.$ref) == 'string' &&
791
+ column.$ref) {
792
+ return tslib.__assign(tslib.__assign({}, options.resolveDefinitions(column.$ref)), column);
793
+ }
794
+ return column;
795
+ })
796
+ .filter(function (column) { return column; });
726
797
  // 更新列顺序,afterCreate生命周期中更新columns不会触发组件的render
727
798
  var key = getPersistDataKey(columns);
728
799
  var data = localStorage.getItem(key);
@@ -772,11 +843,7 @@ var TableStore = iRenderer.iRendererStore
772
843
  var origin = item.id
773
844
  ? originColumns_1.find(function (column) { return column.pristine.id === item.id; })
774
845
  : originColumns_1[index];
775
- return tslib.__assign(tslib.__assign({}, item), { id: (origin === null || origin === void 0 ? void 0 : origin.id) || helper.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,
776
- /** 提前映射变量,方便后续view中使用 */
777
- label: isPureVariable.isPureVariable(item.label)
778
- ? resolveVariableAndFilter.resolveVariableAndFilter(item.label, self.data)
779
- : item.label });
846
+ return tslib.__assign(tslib.__assign({}, item), { id: (origin === null || origin === void 0 ? void 0 : origin.id) || helper.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 });
780
847
  });
781
848
  self.columns.replace(columns);
782
849
  }
@@ -922,44 +989,11 @@ var TableStore = iRenderer.iRendererStore
922
989
  }
923
990
  return combineCell(arr, keys);
924
991
  }
925
- function initChildren(children, depth, pindex, parentId, path, nThRef) {
926
- if (path === void 0) { path = ''; }
927
- depth += 1;
928
- return children.map(function (item, index) {
929
- var _a;
930
- item = object.isObject(item)
931
- ? item
932
- : {
933
- item: item
934
- };
935
- var id = (_a = item.__id) !== null && _a !== void 0 ? _a : helper.guid();
936
- return {
937
- // id: String(item && (item as any)[self.primaryField] || `${pindex}-${depth}-${key}`),
938
- id: String(id),
939
- parentId: String(parentId),
940
- key: String("".concat(pindex, "-").concat(depth, "-").concat(index)),
941
- path: "".concat(path).concat(index),
942
- depth: depth,
943
- index: index,
944
- nth: nThRef.index++,
945
- newIndex: index,
946
- pristine: item,
947
- data: item,
948
- rowSpans: {},
949
- children: item && Array.isArray(item.children)
950
- ? initChildren(item.children, depth, index, id, "".concat(path).concat(index, "."), nThRef)
951
- : [],
952
- expandable: !!((item && Array.isArray(item.children) && item.children.length) ||
953
- (self.footable && self.footableColumns.length))
954
- };
955
- });
956
- }
957
992
  function initRows(rows, getEntryId, reUseRow) {
958
993
  self.selectedRows.clear();
959
994
  // self.expandedRows.clear();
960
995
  /* 避免输入内容为非数组挂掉 */
961
996
  rows = !Array.isArray(rows) ? [] : rows;
962
- var nThRef = { index: 0 };
963
997
  var arr = rows.map(function (item, index) {
964
998
  var _a;
965
999
  if (!object.isObject(item)) {
@@ -974,24 +1008,24 @@ var TableStore = iRenderer.iRendererStore
974
1008
  key: String("".concat(index, "-1-").concat(index)),
975
1009
  depth: 1,
976
1010
  index: index,
977
- nth: nThRef.index++,
978
1011
  newIndex: index,
979
1012
  pristine: item,
980
1013
  path: "".concat(index),
981
1014
  data: item,
982
1015
  rowSpans: {},
1016
+ defer: !!item.defer,
1017
+ loaded: false,
1018
+ loading: false,
983
1019
  children: item && Array.isArray(item.children)
984
- ? initChildren(item.children, 1, index, id, "".concat(index, "."), nThRef)
985
- : [],
986
- expandable: !!((item && Array.isArray(item.children) && item.children.length) ||
987
- (self.footable && self.footableColumns.length))
1020
+ ? initChildren(item.children, 1, index, id, "".concat(index, "."))
1021
+ : []
988
1022
  };
989
1023
  });
990
1024
  if (self.combineNum) {
991
1025
  arr = autoCombineCell(arr, self.columns, self.combineNum, self.combineFromIndex);
992
1026
  }
993
1027
  replaceRow(arr, reUseRow);
994
- self.isNested = self.rows.some(function (item) { return item.children.length; });
1028
+ self.isNested = self.rows.some(function (item) { return item.children.length || (item.defer && !item.loaded); });
995
1029
  // 前 20 个直接渲染,后面的按需渲染
996
1030
  if (self.lazyRenderAfter &&
997
1031
  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/lib/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/lib/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/lib/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
 
@@ -379,6 +379,7 @@ function wrapFetcher(fn, tracker) {
379
379
  switch (_d.label) {
380
380
  case 0:
381
381
  api = buildApi(api, data, options);
382
+ api.context = data;
382
383
  if (!api.requestAdaptor) return [3 /*break*/, 2];
383
384
  debug.debug('api', 'before requestAdaptor', api);
384
385
  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
 
@@ -15,21 +15,27 @@ var tslib = require('tslib');
15
15
  * @param __
16
16
  * @returns
17
17
  */
18
- function attachmentAdpator(response, __) {
18
+ function attachmentAdpator(response, __, api) {
19
19
  if (response && response.headers && response.headers['content-disposition']) {
20
20
  var disposition = response.headers['content-disposition'];
21
21
  var filename = '';
22
22
  if (disposition && disposition.indexOf('attachment') !== -1) {
23
- // disposition 有可能是 attachment; filename="??.xlsx"; filename*=UTF-8''%E4%B8%AD%E6%96%87.xlsx
24
- // 这种情况下最后一个才是正确的文件名
25
- var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
26
- var matches = disposition.match(filenameRegex);
27
- if (matches && matches.length) {
28
- filename = matches[1].replace("UTF-8''", '').replace(/['"]/g, '');
23
+ // 如果 api 中配置了,则优先用 api 中的配置
24
+ if (api === null || api === void 0 ? void 0 : api.downloadFileName) {
25
+ filename = api.downloadFileName;
29
26
  }
30
- // 很可能是中文被 url-encode 了
31
- if (filename && filename.replace(/[^%]/g, '').length > 2) {
32
- filename = decodeURIComponent(filename);
27
+ else {
28
+ // disposition 有可能是 attachment; filename="??.xlsx"; filename*=UTF-8''%E4%B8%AD%E6%96%87.xlsx
29
+ // 这种情况下最后一个才是正确的文件名
30
+ var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/i;
31
+ var matches = disposition.match(filenameRegex);
32
+ if (matches && matches.length) {
33
+ filename = matches[1].replace("UTF-8''", '').replace(/['"]/g, '');
34
+ }
35
+ // 很可能是中文被 url-encode 了
36
+ if (filename && filename.replace(/[^%]/g, '').length > 2) {
37
+ filename = decodeURIComponent(filename);
38
+ }
33
39
  }
34
40
  var type = response.headers['content-type'];
35
41
  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/lib/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/lib/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,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
 
@@ -16,6 +16,25 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
16
16
 
17
17
  var isPlainObject__default = /*#__PURE__*/_interopDefaultLegacy(isPlainObject);
18
18
 
19
+ /**
20
+ * 计算下发给子组件的className,处理对象类型的className,将其中的表达式计算出来,避免被classnames识别为true
21
+ *
22
+ * @param value - CSS类名值
23
+ * @param ctx - 数据域
24
+ */
25
+ function filterClassNameObject(classValue, ctx) {
26
+ if (ctx === void 0) { ctx = {}; }
27
+ var result = classValue;
28
+ if (classValue && typeof classValue === 'string') {
29
+ result = tokenize.tokenize(classValue, ctx);
30
+ }
31
+ else if (classValue && isPlainObject__default["default"](classValue)) {
32
+ result = helper.mapObject(classValue, function (value) {
33
+ return typeof value === 'string' ? tpl.evalExpression(value, ctx) : value;
34
+ }, undefined, function (key) { return tokenize.tokenize(key, ctx); });
35
+ }
36
+ return result;
37
+ }
19
38
  /**
20
39
  * 处理 Props 数据,所有带 On 结束的做一次
21
40
  *
@@ -66,16 +85,12 @@ function getExprProperties(schema, data, blackList, props) {
66
85
  value &&
67
86
  (typeof value === 'string' || isPlainObject__default["default"](value))) {
68
87
  exprProps["".concat(key, "Raw")] = value;
69
- exprProps[key] =
70
- typeof value === 'string'
71
- ? tokenize.tokenize(value, data)
72
- : helper.mapObject(value, function (value) {
73
- return typeof value === 'string' ? tpl.evalExpression(value, data) : value;
74
- }, undefined, function (key) { return tokenize.tokenize(key, data); });
88
+ exprProps[key] = filterClassNameObject(value, data);
75
89
  }
76
90
  });
77
91
  return exprProps;
78
92
  }
79
93
 
80
94
  exports["default"] = getExprProperties;
95
+ exports.filterClassNameObject = filterClassNameObject;
81
96
  exports.getExprProperties = 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
 
@@ -30,6 +30,7 @@ function handleAction(e, action, props, data) {
30
30
  action.actionType = 'ajax';
31
31
  var api$1 = api.normalizeApi(action.api);
32
32
  api$1.responseType = 'blob';
33
+ api$1.downloadFileName = action.downloadFileName;
33
34
  action.api = api$1;
34
35
  }
35
36
  onAction(e, action, data || props.data);