amis-core 6.12.0-beta.1 → 6.12.0-beta.11

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 (303) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.js +1 -1
  3. package/esm/SchemaRenderer.js +1 -1
  4. package/esm/Scoped.js +2 -1
  5. package/esm/StatusScoped.js +1 -1
  6. package/esm/StyleManager.js +1 -1
  7. package/esm/WithRootStore.js +1 -1
  8. package/esm/WithStore.js +1 -1
  9. package/esm/actions/Action.js +1 -1
  10. package/esm/actions/AjaxAction.js +2 -2
  11. package/esm/actions/BreakAction.js +1 -1
  12. package/esm/actions/BroadcastAction.js +1 -1
  13. package/esm/actions/CmptAction.js +1 -1
  14. package/esm/actions/ContinueAction.js +1 -1
  15. package/esm/actions/CopyAction.js +1 -1
  16. package/esm/actions/CustomAction.js +2 -1
  17. package/esm/actions/DialogAction.js +2 -1
  18. package/esm/actions/DrawerAction.js +2 -1
  19. package/esm/actions/EmailAction.js +1 -1
  20. package/esm/actions/EventAction.js +2 -1
  21. package/esm/actions/LinkAction.js +1 -1
  22. package/esm/actions/LoopAction.js +1 -1
  23. package/esm/actions/PageAction.js +1 -1
  24. package/esm/actions/ParallelAction.js +1 -1
  25. package/esm/actions/PrintAction.js +1 -1
  26. package/esm/actions/StatusAction.js +1 -1
  27. package/esm/actions/SwitchAction.js +1 -1
  28. package/esm/actions/ToastAction.js +1 -1
  29. package/esm/actions/WaitAction.js +1 -1
  30. package/esm/components/Animations.js +2 -1
  31. package/esm/components/CustomStyle.js +2 -1
  32. package/esm/components/ErrorBoundary.js +1 -1
  33. package/esm/components/LazyComponent.js +1 -1
  34. package/esm/components/Overlay.js +2 -1
  35. package/esm/components/PopOver.js +2 -1
  36. package/esm/env.js +1 -1
  37. package/esm/envOverwrite.d.ts +1 -1
  38. package/esm/envOverwrite.js +4 -3
  39. package/esm/factory.js +1 -1
  40. package/esm/globalVar.js +1 -1
  41. package/esm/globalVarClientHandler.js +1 -1
  42. package/esm/globalVarDefaultValueHandler.js +1 -1
  43. package/esm/index.js +7 -7
  44. package/esm/locale.js +1 -1
  45. package/esm/polyfills.js +1 -1
  46. package/esm/renderers/Form.js +4 -3
  47. package/esm/renderers/Item.js +1 -1
  48. package/esm/renderers/Options.d.ts +2 -2
  49. package/esm/renderers/Options.js +11 -5
  50. package/esm/renderers/Placeholder.js +1 -1
  51. package/esm/renderers/builtin.js +1 -1
  52. package/esm/renderers/register.js +1 -1
  53. package/esm/renderers/wrapControl.js +18 -4
  54. package/esm/store/app.js +2 -1
  55. package/esm/store/combo.d.ts +4 -2
  56. package/esm/store/combo.js +1 -1
  57. package/esm/store/crud.d.ts +4 -0
  58. package/esm/store/crud.js +131 -110
  59. package/esm/store/form.d.ts +3 -1
  60. package/esm/store/form.js +17 -11
  61. package/esm/store/formItem.js +1 -1
  62. package/esm/store/iRenderer.js +5 -1
  63. package/esm/store/index.js +1 -1
  64. package/esm/store/list.js +1 -1
  65. package/esm/store/manager.js +1 -1
  66. package/esm/store/modal.js +1 -1
  67. package/esm/store/node.js +1 -1
  68. package/esm/store/pagination.js +1 -1
  69. package/esm/store/root.js +2 -1
  70. package/esm/store/service.js +2 -1
  71. package/esm/store/status.js +1 -1
  72. package/esm/store/table.d.ts +5 -2
  73. package/esm/store/table.js +28 -19
  74. package/esm/store/table2.js +1 -1
  75. package/esm/theme.js +1 -1
  76. package/esm/utils/Animation.js +1 -1
  77. package/esm/utils/ColorScale.js +1 -1
  78. package/esm/utils/DataSchema.js +1 -1
  79. package/esm/utils/DataScope.js +1 -1
  80. package/esm/utils/RootClose.js +1 -1
  81. package/esm/utils/SimpleMap.js +1 -1
  82. package/esm/utils/animations.d.ts +1 -0
  83. package/esm/utils/animations.js +17 -9
  84. package/esm/utils/api.js +1 -1
  85. package/esm/utils/arraySlice.js +1 -1
  86. package/esm/utils/attachmentAdpator.js +3 -29
  87. package/esm/utils/autobind.js +1 -1
  88. package/esm/utils/browser.js +1 -1
  89. package/esm/utils/columnsSplit.js +1 -1
  90. package/esm/utils/concatData.js +1 -1
  91. package/esm/utils/dataMapping.js +1 -1
  92. package/esm/utils/date.js +1 -1
  93. package/esm/utils/debug.js +1 -1
  94. package/esm/utils/decodeEntity.js +1 -1
  95. package/esm/utils/dom.d.ts +1 -0
  96. package/esm/utils/dom.js +39 -2
  97. package/esm/utils/errors.js +1 -1
  98. package/esm/utils/escapeHtml.js +1 -1
  99. package/esm/utils/filter-schema.js +1 -1
  100. package/esm/utils/filter.js +1 -1
  101. package/esm/utils/formatDuration.js +1 -1
  102. package/esm/utils/formula.js +1 -1
  103. package/esm/utils/getVariable.js +1 -1
  104. package/esm/utils/grammar.js +1 -1
  105. package/esm/utils/handleAction.js +1 -1
  106. package/esm/utils/helper.d.ts +1 -0
  107. package/esm/utils/helper.js +9 -2
  108. package/esm/utils/highlight.js +1 -1
  109. package/esm/utils/icon.js +1 -1
  110. package/esm/utils/image.js +1 -1
  111. package/esm/utils/index.js +3 -2
  112. package/esm/utils/isPureVariable.js +1 -1
  113. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  114. package/esm/utils/keyToPath.js +1 -1
  115. package/esm/utils/labelToString.js +1 -1
  116. package/esm/utils/loopTooMuch.js +1 -1
  117. package/esm/utils/makeSorter.js +1 -1
  118. package/esm/utils/math.js +1 -1
  119. package/esm/utils/memoryParse.js +1 -1
  120. package/esm/utils/normalizeLink.js +1 -1
  121. package/esm/utils/normalizeOptions.js +1 -1
  122. package/esm/utils/object.js +1 -1
  123. package/esm/utils/offset.js +1 -1
  124. package/esm/utils/offsetParent.js +1 -1
  125. package/esm/utils/optionValueCompare.js +1 -1
  126. package/esm/utils/position.js +1 -1
  127. package/esm/utils/prettyBytes.js +1 -1
  128. package/esm/utils/printElement.js +1 -1
  129. package/esm/utils/renderer-event.js +1 -1
  130. package/esm/utils/replaceText.js +1 -1
  131. package/esm/utils/resize-sensor.js +1 -1
  132. package/esm/utils/resolveCondition.js +1 -1
  133. package/esm/utils/resolveVariable.js +1 -1
  134. package/esm/utils/resolveVariableAndFilter.js +1 -1
  135. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  136. package/esm/utils/scrollPosition.js +1 -1
  137. package/esm/utils/string2regExp.js +1 -1
  138. package/esm/utils/stripNumber.js +1 -1
  139. package/esm/utils/style-helper.d.ts +1 -0
  140. package/esm/utils/style-helper.js +10 -7
  141. package/esm/utils/style.js +1 -1
  142. package/esm/utils/toNumber.js +1 -1
  143. package/esm/utils/tokenize.js +1 -1
  144. package/esm/utils/tpl-builtin.js +1 -1
  145. package/esm/utils/tpl-lodash.js +1 -1
  146. package/esm/utils/tpl.js +1 -1
  147. package/esm/utils/uncontrollable.js +1 -1
  148. package/esm/utils/validateId.js +1 -1
  149. package/esm/utils/validations.js +1 -1
  150. package/esm/utils/visitedCache.js +1 -1
  151. package/lib/Root.js +1 -1
  152. package/lib/RootRenderer.d.ts +1 -1
  153. package/lib/RootRenderer.js +1 -1
  154. package/lib/SchemaRenderer.js +1 -1
  155. package/lib/Scoped.js +2 -1
  156. package/lib/StatusScoped.js +1 -1
  157. package/lib/StyleManager.js +1 -1
  158. package/lib/WithRootStore.js +1 -1
  159. package/lib/WithStore.js +1 -1
  160. package/lib/actions/Action.js +1 -1
  161. package/lib/actions/AjaxAction.js +2 -2
  162. package/lib/actions/BreakAction.js +1 -1
  163. package/lib/actions/BroadcastAction.js +1 -1
  164. package/lib/actions/CmptAction.js +1 -1
  165. package/lib/actions/ContinueAction.js +1 -1
  166. package/lib/actions/CopyAction.js +1 -1
  167. package/lib/actions/CustomAction.js +2 -1
  168. package/lib/actions/DialogAction.js +2 -1
  169. package/lib/actions/DrawerAction.js +2 -1
  170. package/lib/actions/EmailAction.js +1 -1
  171. package/lib/actions/EventAction.js +2 -1
  172. package/lib/actions/LinkAction.js +1 -1
  173. package/lib/actions/LoopAction.js +1 -1
  174. package/lib/actions/PageAction.js +1 -1
  175. package/lib/actions/ParallelAction.js +1 -1
  176. package/lib/actions/PrintAction.js +1 -1
  177. package/lib/actions/StatusAction.js +1 -1
  178. package/lib/actions/SwitchAction.js +1 -1
  179. package/lib/actions/ToastAction.js +1 -1
  180. package/lib/actions/WaitAction.js +1 -1
  181. package/lib/components/Animations.js +2 -1
  182. package/lib/components/CustomStyle.js +2 -1
  183. package/lib/components/ErrorBoundary.js +1 -1
  184. package/lib/components/LazyComponent.js +1 -1
  185. package/lib/components/Overlay.js +2 -1
  186. package/lib/components/PopOver.js +2 -1
  187. package/lib/env.js +1 -1
  188. package/lib/envOverwrite.d.ts +1 -1
  189. package/lib/envOverwrite.js +4 -3
  190. package/lib/factory.js +1 -1
  191. package/lib/globalVar.js +1 -1
  192. package/lib/globalVarClientHandler.js +1 -1
  193. package/lib/globalVarDefaultValueHandler.js +1 -1
  194. package/lib/index.js +7 -5
  195. package/lib/locale.js +1 -1
  196. package/lib/polyfills.js +1 -1
  197. package/lib/renderers/Form.js +4 -3
  198. package/lib/renderers/Item.js +1 -1
  199. package/lib/renderers/Options.d.ts +2 -2
  200. package/lib/renderers/Options.js +11 -5
  201. package/lib/renderers/Placeholder.js +1 -1
  202. package/lib/renderers/builtin.js +1 -1
  203. package/lib/renderers/register.js +1 -1
  204. package/lib/renderers/wrapControl.js +19 -5
  205. package/lib/store/app.js +2 -1
  206. package/lib/store/combo.d.ts +4 -2
  207. package/lib/store/combo.js +1 -1
  208. package/lib/store/crud.d.ts +4 -0
  209. package/lib/store/crud.js +131 -110
  210. package/lib/store/form.d.ts +4 -1
  211. package/lib/store/form.js +17 -11
  212. package/lib/store/formItem.js +1 -1
  213. package/lib/store/iRenderer.js +5 -1
  214. package/lib/store/index.js +1 -1
  215. package/lib/store/list.js +1 -1
  216. package/lib/store/manager.js +1 -1
  217. package/lib/store/modal.js +1 -1
  218. package/lib/store/node.js +1 -1
  219. package/lib/store/pagination.js +1 -1
  220. package/lib/store/root.d.ts +1 -0
  221. package/lib/store/root.js +2 -1
  222. package/lib/store/service.js +2 -1
  223. package/lib/store/status.js +1 -1
  224. package/lib/store/table.d.ts +5 -2
  225. package/lib/store/table.js +27 -18
  226. package/lib/store/table2.js +1 -1
  227. package/lib/theme.js +1 -1
  228. package/lib/utils/Animation.js +1 -1
  229. package/lib/utils/ColorScale.js +1 -1
  230. package/lib/utils/DataSchema.js +1 -1
  231. package/lib/utils/DataScope.js +1 -1
  232. package/lib/utils/RootClose.js +1 -1
  233. package/lib/utils/SimpleMap.js +1 -1
  234. package/lib/utils/animations.d.ts +1 -0
  235. package/lib/utils/animations.js +17 -9
  236. package/lib/utils/api.js +1 -1
  237. package/lib/utils/arraySlice.js +1 -1
  238. package/lib/utils/attachmentAdpator.js +3 -29
  239. package/lib/utils/autobind.js +1 -1
  240. package/lib/utils/browser.js +1 -1
  241. package/lib/utils/columnsSplit.js +1 -1
  242. package/lib/utils/concatData.js +1 -1
  243. package/lib/utils/dataMapping.js +1 -1
  244. package/lib/utils/date.js +1 -1
  245. package/lib/utils/debug.js +1 -1
  246. package/lib/utils/decodeEntity.js +1 -1
  247. package/lib/utils/dom.d.ts +1 -0
  248. package/lib/utils/dom.js +39 -1
  249. package/lib/utils/errors.js +1 -1
  250. package/lib/utils/escapeHtml.js +1 -1
  251. package/lib/utils/filter-schema.js +1 -1
  252. package/lib/utils/filter.js +1 -1
  253. package/lib/utils/formatDuration.js +1 -1
  254. package/lib/utils/formula.js +1 -1
  255. package/lib/utils/getVariable.js +1 -1
  256. package/lib/utils/grammar.js +1 -1
  257. package/lib/utils/handleAction.js +1 -1
  258. package/lib/utils/helper.d.ts +1 -0
  259. package/lib/utils/helper.js +9 -1
  260. package/lib/utils/highlight.js +1 -1
  261. package/lib/utils/icon.js +1 -1
  262. package/lib/utils/image.js +1 -1
  263. package/lib/utils/index.js +4 -1
  264. package/lib/utils/isPureVariable.js +1 -1
  265. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  266. package/lib/utils/keyToPath.js +1 -1
  267. package/lib/utils/labelToString.js +1 -1
  268. package/lib/utils/loopTooMuch.js +1 -1
  269. package/lib/utils/makeSorter.js +1 -1
  270. package/lib/utils/math.js +1 -1
  271. package/lib/utils/memoryParse.js +1 -1
  272. package/lib/utils/normalizeLink.js +1 -1
  273. package/lib/utils/normalizeOptions.js +1 -1
  274. package/lib/utils/object.js +1 -1
  275. package/lib/utils/offset.js +1 -1
  276. package/lib/utils/offsetParent.js +1 -1
  277. package/lib/utils/optionValueCompare.js +1 -1
  278. package/lib/utils/position.js +1 -1
  279. package/lib/utils/prettyBytes.js +1 -1
  280. package/lib/utils/printElement.js +1 -1
  281. package/lib/utils/renderer-event.js +1 -1
  282. package/lib/utils/replaceText.js +1 -1
  283. package/lib/utils/resize-sensor.js +1 -1
  284. package/lib/utils/resolveCondition.js +1 -1
  285. package/lib/utils/resolveVariable.js +1 -1
  286. package/lib/utils/resolveVariableAndFilter.js +1 -1
  287. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  288. package/lib/utils/scrollPosition.js +1 -1
  289. package/lib/utils/string2regExp.js +1 -1
  290. package/lib/utils/stripNumber.js +1 -1
  291. package/lib/utils/style-helper.d.ts +1 -0
  292. package/lib/utils/style-helper.js +10 -7
  293. package/lib/utils/style.js +1 -1
  294. package/lib/utils/toNumber.js +1 -1
  295. package/lib/utils/tokenize.js +1 -1
  296. package/lib/utils/tpl-builtin.js +1 -1
  297. package/lib/utils/tpl-lodash.js +1 -1
  298. package/lib/utils/tpl.js +1 -1
  299. package/lib/utils/uncontrollable.js +1 -1
  300. package/lib/utils/validateId.js +1 -1
  301. package/lib/utils/validations.js +1 -1
  302. package/lib/utils/visitedCache.js +1 -1
  303. package/package.json +2 -2
package/lib/store/crud.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -141,14 +141,15 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
141
141
  }
142
142
  }
143
143
  var fetchInitData = mobxStateTree.flow(function getInitData(api$1, data, options) {
144
- var rawItems, matchFunc, items, dir, data_1, ctx, json, result, total, count, page, hasNext, oItems, oRows, columns, rest, items, _a, _b, key, rowsData, data_2, filteredItems, dir, e_1, env;
145
- var _c, e_2, _d;
146
- var _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
144
+ var startTime, rawItems, matchFunc, items, dir, data_1, ctx, json, elapsedTime, remainingTime_1, result, total, count, page, hasNext, oItems, oRows, columns, rest, items, _a, _b, key, rowsData, data_2, filteredItems, dir, e_1, env;
145
+ var _c, _d, e_2, _e;
146
+ var _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
147
147
  if (options === void 0) { options = {}; }
148
- return tslib.__generator(this, function (_q) {
149
- switch (_q.label) {
148
+ return tslib.__generator(this, function (_r) {
149
+ switch (_r.label) {
150
150
  case 0:
151
- _q.trys.push([0, 2, , 3]);
151
+ _r.trys.push([0, 6, , 7]);
152
+ startTime = Date.now();
152
153
  rawItems = options.source
153
154
  ? resolveVariableAndFilter.resolveVariableAndFilter(options.source, object.createObject(self.mergedData, {
154
155
  items: self.data.itemsRaw,
@@ -168,8 +169,10 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
168
169
  dir = /desc/i.test(self.query.orderDir) ? -1 : 1;
169
170
  items = helper.sortArray(items, self.query.orderBy, dir);
170
171
  }
171
- data_1 = tslib.__assign(tslib.__assign({}, self.data), { total: items.length, items: items.slice((self.page - 1) * self.perPage, self.page * self.perPage) });
172
- self.total = parseInt((_e = data_1.total) !== null && _e !== void 0 ? _e : data_1.count, 10) || 0;
172
+ data_1 = tslib.__assign(tslib.__assign({}, self.data), (_c = {}, _c[options.totalField || 'total'] = items.length, _c.items = items.slice((self.page - 1) * self.perPage, self.page * self.perPage), _c));
173
+ self.total =
174
+ parseInt((_f = data_1[options.totalField || 'total']) !== null && _f !== void 0 ? _f : data_1.count, 10) ||
175
+ 0;
173
176
  self.reInitData(data_1);
174
177
  return [2 /*return*/];
175
178
  }
@@ -179,126 +182,143 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
179
182
  self.fetching = false;
180
183
  }
181
184
  options.silent || self.markFetching(true);
182
- ctx = object.createObject(self.data, tslib.__assign(tslib.__assign(tslib.__assign({}, self.query), data), (_c = {}, _c[options.pageField || 'page'] = self.page, _c[options.perPageField || 'perPage'] = self.perPage, _c)));
185
+ ctx = object.createObject(self.data, tslib.__assign(tslib.__assign(tslib.__assign({}, self.query), data), (_d = {}, _d[options.pageField || 'page'] = self.page, _d[options.perPageField || 'perPage'] = self.perPage, _d)));
183
186
  // 一次性加载不要发送 perPage 属性
184
187
  if (options.loadDataOnce) {
185
188
  delete ctx[options.perPageField || 'perPage'];
186
189
  }
187
190
  return [4 /*yield*/, mobxStateTree.getEnv(self).fetcher(api$1, ctx, tslib.__assign(tslib.__assign({}, options), { cancelExecutor: function (executor) { return (fetchCancel = executor); } }))];
188
191
  case 1:
189
- json = _q.sent();
192
+ json = _r.sent();
190
193
  fetchCancel = null;
191
- if (!json.ok) {
192
- self.updateMessage((_j = (_h = (_g = (_f = api$1 === null || api$1 === void 0 ? void 0 : api$1.messages) === null || _f === void 0 ? void 0 : _f.failed) !== null && _g !== void 0 ? _g : json.msg) !== null && _h !== void 0 ? _h : options.errorMessage) !== null && _j !== void 0 ? _j : self.__('CRUD.fetchFailed'), true);
193
- !(api$1 === null || api$1 === void 0 ? void 0 : api$1.silent) &&
194
- mobxStateTree.getEnv(self).notify('error', json.msg, json.msgTimeout !== undefined
195
- ? {
196
- closeButton: true,
197
- timeout: json.msgTimeout
198
- }
199
- : undefined);
194
+ if (!!json.ok) return [3 /*break*/, 2];
195
+ self.updateMessage((_k = (_j = (_h = (_g = api$1 === null || api$1 === void 0 ? void 0 : api$1.messages) === null || _g === void 0 ? void 0 : _g.failed) !== null && _h !== void 0 ? _h : json.msg) !== null && _j !== void 0 ? _j : options.errorMessage) !== null && _k !== void 0 ? _k : self.__('CRUD.fetchFailed'), true);
196
+ !(api$1 === null || api$1 === void 0 ? void 0 : api$1.silent) &&
197
+ mobxStateTree.getEnv(self).notify('error', json.msg, json.msgTimeout !== undefined
198
+ ? {
199
+ closeButton: true,
200
+ timeout: json.msgTimeout
201
+ }
202
+ : undefined);
203
+ return [3 /*break*/, 5];
204
+ case 2:
205
+ if (!json.data) {
206
+ throw new Error(self.__('CRUD.invalidData'));
207
+ }
208
+ if (!options.minLoadingTime) return [3 /*break*/, 4];
209
+ elapsedTime = Date.now() - startTime;
210
+ remainingTime_1 = options.minLoadingTime - elapsedTime;
211
+ if (!(remainingTime_1 > 0)) return [3 /*break*/, 4];
212
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, remainingTime_1); })];
213
+ case 3:
214
+ _r.sent();
215
+ _r.label = 4;
216
+ case 4:
217
+ self.updatedAt = Date.now();
218
+ result = api.normalizeApiResponseData(json.data);
219
+ total = result.total, count = result.count, page = result.page, hasNext = result.hasNext, oItems = result.items, oRows = result.rows, columns = result.columns, rest = tslib.__rest(result, ["total", "count", "page", "hasNext", "items", "rows", "columns"]);
220
+ items = void 0;
221
+ if (options.source) {
222
+ items = resolveVariableAndFilter.resolveVariableAndFilter(options.source, object.createObject(self.filterData, result), '| raw');
200
223
  }
201
224
  else {
202
- if (!json.data) {
203
- throw new Error(self.__('CRUD.invalidData'));
204
- }
205
- self.updatedAt = Date.now();
206
- result = api.normalizeApiResponseData(json.data);
207
- total = result.total, count = result.count, page = result.page, hasNext = result.hasNext, oItems = result.items, oRows = result.rows, columns = result.columns, rest = tslib.__rest(result, ["total", "count", "page", "hasNext", "items", "rows", "columns"]);
208
- items = void 0;
209
- if (options.source) {
210
- items = resolveVariableAndFilter.resolveVariableAndFilter(options.source, object.createObject(self.filterData, result), '| raw');
211
- }
212
- else {
213
- items = result.items || result.rows;
214
- }
215
- if (!Array.isArray(items)) {
216
- try {
217
- // 如果不按照 items 格式返回,就拿第一个数组当成 items
218
- for (_a = tslib.__values(Object.keys(result)), _b = _a.next(); !_b.done; _b = _a.next()) {
219
- key = _b.value;
220
- if (result.hasOwnProperty(key) && Array.isArray(result[key])) {
221
- items = result[key];
222
- break;
223
- }
224
- }
225
- }
226
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
227
- finally {
228
- try {
229
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
225
+ items = result.items || result.rows;
226
+ }
227
+ if (!Array.isArray(items)) {
228
+ try {
229
+ // 如果不按照 items 格式返回,就拿第一个数组当成 items
230
+ for (_a = tslib.__values(Object.keys(result)), _b = _a.next(); !_b.done; _b = _a.next()) {
231
+ key = _b.value;
232
+ if (result.hasOwnProperty(key) && Array.isArray(result[key])) {
233
+ items = result[key];
234
+ break;
230
235
  }
231
- finally { if (e_2) throw e_2.error; }
232
236
  }
233
237
  }
234
- else if (items == null) {
235
- items = [];
238
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
239
+ finally {
240
+ try {
241
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
242
+ }
243
+ finally { if (e_2) throw e_2.error; }
236
244
  }
237
- if (!Array.isArray(items)) {
238
- throw new Error(self.__('CRUD.invalidArray'));
245
+ }
246
+ else if (items == null) {
247
+ items = [];
248
+ }
249
+ if (!Array.isArray(items)) {
250
+ throw new Error(self.__('CRUD.invalidArray'));
251
+ }
252
+ else {
253
+ // 确保成员是对象。
254
+ items.map(function (item) {
255
+ return typeof item === 'string' ? { text: item } : item;
256
+ });
257
+ }
258
+ rowsData = [];
259
+ if (options.loadDataMode && Array.isArray(self.data.items)) {
260
+ if (options.dataAppendTo === 'top') {
261
+ rowsData = items.concat(self.data.items);
239
262
  }
240
263
  else {
241
- // 确保成员是对象。
242
- items.map(function (item) {
243
- return typeof item === 'string' ? { text: item } : item;
244
- });
245
- }
246
- rowsData = [];
247
- if (options.loadDataMode && Array.isArray(self.data.items)) {
248
264
  rowsData = self.data.items.concat(items);
249
265
  }
250
- else {
251
- // 第一次的时候就是直接加载请求的数据
252
- rowsData = items;
253
- }
254
- data_2 = tslib.__assign(tslib.__assign(tslib.__assign({}, (api$1.replaceData ? {} : self.pristine)), { items: rowsData, count: count, total: total }), rest);
255
- if (options.loadDataOnce) {
256
- /**
257
- * 1. 记录原始集合,后续可能基于原始数据做排序查找。
258
- * 2. 接口返回中没有 items 和 rows 字段,则直接用查到的数据。
259
- */
260
- data_2.itemsRaw = oItems || oRows || rowsData.concat();
261
- filteredItems = helper.applyFilters(rowsData, {
262
- query: self.query,
263
- columns: options.columns,
264
- filterOnAllColumns: false,
265
- matchFunc: options.matchFunc
266
- });
267
- if (self.query.orderBy) {
268
- dir = /desc/i.test(self.query.orderDir) ? -1 : 1;
269
- filteredItems = helper.sortArray(filteredItems, self.query.orderBy, dir);
270
- }
271
- data_2.items = filteredItems.slice((self.page - 1) * self.perPage, self.page * self.perPage);
272
- data_2.count = data_2.total = filteredItems.length;
273
- }
274
- if (Array.isArray(columns)) {
275
- self.columns = columns.concat();
276
- }
277
- else if (rest.isTable2) {
278
- self.columns = options.columns;
279
- }
280
- self.items.replace(rowsData);
281
- self.reInitData(data_2, !!api$1.replaceData, api$1.concatDataFields);
282
- options.syncResponse2Query !== false &&
283
- updateQuery(pick__default["default"](rest, Object.keys(self.query)), undefined, options.pageField || 'page', options.perPageField || 'perPage');
284
- self.total = parseInt((_k = data_2.total) !== null && _k !== void 0 ? _k : data_2.count, 10) || 0;
285
- typeof page !== 'undefined' && (self.page = parseInt(page, 10));
286
- // 分页情况不清楚,只能知道有没有下一页。
287
- if (typeof hasNext !== 'undefined') {
288
- self.mode = 'simple';
289
- self.total = 0;
290
- self.hasNext = !!hasNext;
266
+ }
267
+ else {
268
+ // 第一次的时候就是直接加载请求的数据
269
+ rowsData = items;
270
+ }
271
+ data_2 = tslib.__assign(tslib.__assign(tslib.__assign({}, (api$1.replaceData ? {} : self.pristine)), { items: rowsData, count: count, total: total }), rest);
272
+ if (options.loadDataOnce) {
273
+ /**
274
+ * 1. 记录原始集合,后续可能基于原始数据做排序查找。
275
+ * 2. 接口返回中没有 items 和 rows 字段,则直接用查到的数据。
276
+ */
277
+ data_2.itemsRaw = oItems || oRows || rowsData.concat();
278
+ filteredItems = helper.applyFilters(rowsData, {
279
+ query: self.query,
280
+ columns: options.columns,
281
+ filterOnAllColumns: false,
282
+ matchFunc: options.matchFunc
283
+ });
284
+ if (self.query.orderBy) {
285
+ dir = /desc/i.test(self.query.orderDir) ? -1 : 1;
286
+ filteredItems = helper.sortArray(filteredItems, self.query.orderBy, dir);
291
287
  }
292
- self.updateMessage((_p = (_o = (_m = (_l = api$1.messages) === null || _l === void 0 ? void 0 : _l.success) !== null && _m !== void 0 ? _m : json.msg) !== null && _o !== void 0 ? _o : options.successMessage) !== null && _p !== void 0 ? _p : json.defaultMsg);
293
- // 配置了获取成功提示后提示,默认是空不会提示。
294
- options &&
295
- options.successMessage &&
296
- mobxStateTree.getEnv(self).notify('success', self.msg);
288
+ data_2.items = filteredItems.slice((self.page - 1) * self.perPage, self.page * self.perPage);
289
+ data_2.count = data_2.total = filteredItems.length;
290
+ }
291
+ if (Array.isArray(columns)) {
292
+ self.columns = columns.concat();
293
+ }
294
+ else if (rest.isTable2) {
295
+ self.columns = options.columns;
297
296
  }
297
+ self.items.replace(rowsData);
298
+ self.reInitData(data_2, !!api$1.replaceData, api$1.concatDataFields);
299
+ options.syncResponse2Query !== false &&
300
+ updateQuery(pick__default["default"](rest, Object.keys(self.query)), undefined, options.pageField || 'page', options.perPageField || 'perPage');
301
+ self.total =
302
+ parseInt((_l = data_2[options.totalField || 'total']) !== null && _l !== void 0 ? _l : data_2.count, 10) ||
303
+ 0;
304
+ typeof page !== 'undefined' && (self.page = parseInt(page, 10));
305
+ // 分页情况不清楚,只能知道有没有下一页。
306
+ if (typeof hasNext !== 'undefined') {
307
+ self.mode = 'simple';
308
+ self.total = 0;
309
+ self.hasNext = !!hasNext;
310
+ }
311
+ self.updateMessage((_q = (_p = (_o = (_m = api$1.messages) === null || _m === void 0 ? void 0 : _m.success) !== null && _o !== void 0 ? _o : json.msg) !== null && _p !== void 0 ? _p : options.successMessage) !== null && _q !== void 0 ? _q : json.defaultMsg);
312
+ // 配置了获取成功提示后提示,默认是空不会提示。
313
+ options &&
314
+ options.successMessage &&
315
+ mobxStateTree.getEnv(self).notify('success', self.msg);
316
+ _r.label = 5;
317
+ case 5:
298
318
  self.markFetching(false);
299
319
  return [2 /*return*/, json];
300
- case 2:
301
- e_1 = _q.sent();
320
+ case 6:
321
+ e_1 = _r.sent();
302
322
  env = mobxStateTree.getEnv(self);
303
323
  if (!mobxStateTree.isAlive(self) || self.disposed) {
304
324
  return [2 /*return*/];
@@ -310,7 +330,7 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
310
330
  console.error(e_1);
311
331
  !(api$1 === null || api$1 === void 0 ? void 0 : api$1.silent) && env.notify('error', e_1.message);
312
332
  return [2 /*return*/];
313
- case 3: return [2 /*return*/];
333
+ case 7: return [2 /*return*/];
314
334
  }
315
335
  });
316
336
  });
@@ -431,7 +451,8 @@ var CRUDStore = service.ServiceStore.named('CRUDStore')
431
451
  var data = tslib.__assign(tslib.__assign({}, self.pristine), { items: items.length > self.perPage
432
452
  ? items.slice((self.page - 1) * self.perPage, self.page * self.perPage)
433
453
  : items, count: items.length, total: items.length });
434
- self.total = parseInt((_a = data.total) !== null && _a !== void 0 ? _a : data.count, 10) || 0;
454
+ self.total =
455
+ parseInt((_a = data[options.totalField || 'total']) !== null && _a !== void 0 ? _a : data.count, 10) || 0;
435
456
  self.items.replace(items);
436
457
  self.reInitData(data);
437
458
  };
@@ -1,3 +1,4 @@
1
+ /// <reference types="lodash" />
1
2
  import { Instance } from 'mobx-state-tree';
2
3
  import type { IFormItemStore } from './formItem';
3
4
  import { Api, DataChangeReason, fetchOptions, Payload } from '../types';
@@ -57,6 +58,7 @@ export declare const FormStore: import("mobx-state-tree").IModelType<{
57
58
  readonly pristineDiff: any;
58
59
  } & {
59
60
  setTopStore(value: any): void;
61
+ /** 获取InputGroup的子元素 */
60
62
  initData(data?: object, skipSetPristine?: boolean, changeReason?: DataChangeReason | undefined): void;
61
63
  reset(): void;
62
64
  updateData(data?: object, tag?: object | undefined, replace?: boolean | undefined, concatFields?: string | string[] | undefined, changeReason?: DataChangeReason | undefined): void;
@@ -84,7 +86,6 @@ export declare const FormStore: import("mobx-state-tree").IModelType<{
84
86
  fetchSchema: (api: Api, data?: object | undefined, options?: fetchOptions | undefined) => Promise<any>;
85
87
  checkRemote: (api: Api, data?: object | undefined, options?: fetchOptions | undefined) => Promise<any>;
86
88
  } & {
87
- readonly loading: boolean;
88
89
  readonly items: ({
89
90
  id: string;
90
91
  path: string;
@@ -1159,6 +1160,8 @@ export declare const FormStore: import("mobx-state-tree").IModelType<{
1159
1160
  addInitHook(fn: (store: any) => any, weight?: number): () => void;
1160
1161
  beforeDestroy: () => void;
1161
1162
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>)[];
1163
+ } & {
1164
+ readonly loading: boolean;
1162
1165
  /** 获取InputGroup的子元素 */
1163
1166
  readonly inputGroupItems: Record<string, ({
1164
1167
  id: string;
package/lib/store/form.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -71,17 +71,21 @@ var FormStore = service.ServiceStore.named('FormStore')
71
71
  return formItems;
72
72
  }
73
73
  return {
74
- get loading() {
75
- return self.saving || self.fetching;
76
- },
77
74
  get items() {
78
75
  return getItems();
76
+ }
77
+ };
78
+ })
79
+ .views(function (self) {
80
+ return {
81
+ get loading() {
82
+ return self.saving || self.fetching;
79
83
  },
80
84
  /** 获取InputGroup的子元素 */
81
85
  get inputGroupItems() {
82
86
  var _a, _b;
83
87
  var formItems = {};
84
- var children = this.items.concat();
88
+ var children = self.items.concat();
85
89
  while (children.length) {
86
90
  var current = children.shift();
87
91
  if (current.inputGroupControl && ((_a = current.inputGroupControl) === null || _a === void 0 ? void 0 : _a.name)) {
@@ -98,7 +102,7 @@ var FormStore = service.ServiceStore.named('FormStore')
98
102
  },
99
103
  get errors() {
100
104
  var errors = {};
101
- getItems().forEach(function (item) {
105
+ self.items.forEach(function (item) {
102
106
  if (!item.valid) {
103
107
  errors[item.name] = Array.isArray(errors[item.name])
104
108
  ? errors[item.name].concat(item.errors)
@@ -115,20 +119,20 @@ var FormStore = service.ServiceStore.named('FormStore')
115
119
  return getVariable.getVariable(self.pristine, name);
116
120
  },
117
121
  getItemById: function (id) {
118
- return getItems().find(function (item) { return item.itemId === id; });
122
+ return self.items.find(function (item) { return item.itemId === id; });
119
123
  },
120
124
  getItemByName: function (name) {
121
- return getItems().find(function (item) { return item.name === name; });
125
+ return self.items.find(function (item) { return item.name === name; });
122
126
  },
123
127
  getItemsByName: function (name) {
124
- return getItems().filter(function (item) { return item.name === name; });
128
+ return self.items.filter(function (item) { return item.name === name; });
125
129
  },
126
130
  get valid() {
127
- return (getItems().every(function (item) { return item.valid; }) &&
131
+ return (self.items.every(function (item) { return item.valid; }) &&
128
132
  (!self.restError || !self.restError.length));
129
133
  },
130
134
  get validating() {
131
- return getItems().some(function (item) { return item.validating; });
135
+ return self.items.some(function (item) { return item.validating; });
132
136
  },
133
137
  get isPristine() {
134
138
  return isEqual__default["default"](self.pristine, self.data);
@@ -223,6 +227,7 @@ var FormStore = service.ServiceStore.named('FormStore')
223
227
  }
224
228
  changeReason &&
225
229
  Object.isExtensible(data) &&
230
+ !data.__changeReason &&
226
231
  Object.defineProperty(data, '__changeReason', {
227
232
  value: changeReason,
228
233
  enumerable: false,
@@ -258,6 +263,7 @@ var FormStore = service.ServiceStore.named('FormStore')
258
263
  object.deleteVariable(data, name);
259
264
  changeReason &&
260
265
  Object.isExtensible(data) &&
266
+ !data.__changeReason &&
261
267
  Object.defineProperty(data, '__changeReason', {
262
268
  value: changeReason,
263
269
  enumerable: false,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -21,6 +21,7 @@ require('../utils/filter.js');
21
21
  var SimpleMap = require('../utils/SimpleMap.js');
22
22
  var node = require('./node.js');
23
23
  require('../utils/api.js');
24
+ require('file-saver');
24
25
  require('../utils/browser.js');
25
26
  require('../utils/ColorScale.js');
26
27
  require('../utils/columnsSplit.js');
@@ -113,6 +114,7 @@ var iRendererStore = node.StoreNode.named('iRendererStore')
113
114
  }
114
115
  changeReason &&
115
116
  Object.isExtensible(data) &&
117
+ !data.__changeReason &&
116
118
  Object.defineProperty(data, '__changeReason', {
117
119
  value: changeReason,
118
120
  enumerable: false,
@@ -147,6 +149,7 @@ var iRendererStore = node.StoreNode.named('iRendererStore')
147
149
  });
148
150
  changeReason &&
149
151
  Object.isExtensible(newData) &&
152
+ !newData.__changeReason &&
150
153
  Object.defineProperty(newData, '__changeReason', {
151
154
  value: changeReason,
152
155
  enumerable: false,
@@ -207,6 +210,7 @@ var iRendererStore = node.StoreNode.named('iRendererStore')
207
210
  }
208
211
  changeReason &&
209
212
  Object.isExtensible(data) &&
213
+ !data.__changeReason &&
210
214
  Object.defineProperty(data, '__changeReason', {
211
215
  value: changeReason,
212
216
  enumerable: false,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
package/lib/store/list.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
package/lib/store/node.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,3 +1,4 @@
1
+ /// <reference types="lodash" />
1
2
  import { Instance } from 'mobx-state-tree';
2
3
  import { GlobalVariableItem, GlobalVariableState, GlobalVariableItemFull } from '../globalVar';
3
4
  export declare const RootStore: import("mobx-state-tree").IModelType<{
package/lib/store/root.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -12,6 +12,7 @@ var mobxStateTree = require('mobx-state-tree');
12
12
  var helper = require('../utils/helper.js');
13
13
  var service = require('./service.js');
14
14
  require('../utils/api.js');
15
+ require('file-saver');
15
16
  require('../utils/browser.js');
16
17
  require('../utils/ColorScale.js');
17
18
  require('../utils/columnsSplit.js');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -16,6 +16,7 @@ var api = require('../utils/api.js');
16
16
  var replaceText = require('../utils/replaceText.js');
17
17
  var concatData = require('../utils/concatData.js');
18
18
  var envOverwrite = require('../envOverwrite.js');
19
+ require('file-saver');
19
20
  require('../utils/browser.js');
20
21
  require('../utils/ColorScale.js');
21
22
  require('../utils/columnsSplit.js');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.1
2
+ * amis-core v6.12.0-beta.11
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -345,6 +345,7 @@ export declare const TableStore: import("mobx-state-tree").IModelType<{
345
345
  getDialogScoped(): import("..").IScopedContext | null;
346
346
  getDrawerScoped(): import("..").IScopedContext | null;
347
347
  } & {
348
+ readonly __: any;
348
349
  getSelectionUpperLimit: () => number;
349
350
  readonly columnsKey: string;
350
351
  readonly columnsData: ({
@@ -499,7 +500,6 @@ export declare const TableStore: import("mobx-state-tree").IModelType<{
499
500
  fetchSchema: (api: import("..").Api, data?: object | undefined, options?: import("..").fetchOptions | undefined) => Promise<any>;
500
501
  checkRemote: (api: import("..").Api, data?: object | undefined, options?: import("..").fetchOptions | undefined) => Promise<any>;
501
502
  } & {
502
- readonly loading: boolean;
503
503
  readonly items: ({
504
504
  id: string;
505
505
  path: string;
@@ -1574,6 +1574,8 @@ export declare const TableStore: import("mobx-state-tree").IModelType<{
1574
1574
  addInitHook(fn: (store: any) => any, weight?: number): () => void;
1575
1575
  beforeDestroy: () => void;
1576
1576
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>)[];
1577
+ } & {
1578
+ readonly loading: boolean;
1577
1579
  readonly inputGroupItems: Record<string, ({
1578
1580
  id: string;
1579
1581
  path: string;
@@ -5997,7 +5999,6 @@ export declare const TableStore: import("mobx-state-tree").IModelType<{
5997
5999
  fetchSchema: (api: import("..").Api, data?: object | undefined, options?: import("..").fetchOptions | undefined) => Promise<any>;
5998
6000
  checkRemote: (api: import("..").Api, data?: object | undefined, options?: import("..").fetchOptions | undefined) => Promise<any>;
5999
6001
  } & {
6000
- readonly loading: boolean;
6001
6002
  readonly items: ({
6002
6003
  id: string;
6003
6004
  path: string;
@@ -7072,6 +7073,8 @@ export declare const TableStore: import("mobx-state-tree").IModelType<{
7072
7073
  addInitHook(fn: (store: any) => any, weight?: number): () => void;
7073
7074
  beforeDestroy: () => void;
7074
7075
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>)[];
7076
+ } & {
7077
+ readonly loading: boolean;
7075
7078
  readonly inputGroupItems: Record<string, ({
7076
7079
  id: string;
7077
7080
  path: string;