amis-core 6.12.0-beta.0 → 6.12.0-beta.10

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 (305) 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.d.ts +8 -0
  10. package/esm/actions/Action.js +53 -15
  11. package/esm/actions/AjaxAction.js +2 -2
  12. package/esm/actions/BreakAction.js +1 -1
  13. package/esm/actions/BroadcastAction.js +1 -1
  14. package/esm/actions/CmptAction.js +1 -1
  15. package/esm/actions/ContinueAction.js +1 -1
  16. package/esm/actions/CopyAction.js +1 -1
  17. package/esm/actions/CustomAction.js +2 -1
  18. package/esm/actions/DialogAction.js +2 -1
  19. package/esm/actions/DrawerAction.js +2 -1
  20. package/esm/actions/EmailAction.js +1 -1
  21. package/esm/actions/EventAction.js +2 -1
  22. package/esm/actions/LinkAction.js +1 -1
  23. package/esm/actions/LoopAction.js +1 -1
  24. package/esm/actions/PageAction.js +1 -1
  25. package/esm/actions/ParallelAction.js +1 -1
  26. package/esm/actions/PrintAction.js +1 -1
  27. package/esm/actions/StatusAction.js +1 -1
  28. package/esm/actions/SwitchAction.js +1 -1
  29. package/esm/actions/ToastAction.js +1 -1
  30. package/esm/actions/WaitAction.js +1 -1
  31. package/esm/components/Animations.js +2 -1
  32. package/esm/components/CustomStyle.js +2 -1
  33. package/esm/components/ErrorBoundary.js +1 -1
  34. package/esm/components/LazyComponent.js +1 -1
  35. package/esm/components/Overlay.js +2 -1
  36. package/esm/components/PopOver.js +2 -1
  37. package/esm/env.js +1 -1
  38. package/esm/envOverwrite.d.ts +1 -1
  39. package/esm/envOverwrite.js +4 -3
  40. package/esm/factory.js +1 -1
  41. package/esm/globalVar.js +1 -1
  42. package/esm/globalVarClientHandler.js +1 -1
  43. package/esm/globalVarDefaultValueHandler.js +1 -1
  44. package/esm/index.js +8 -8
  45. package/esm/locale.js +4 -2
  46. package/esm/polyfills.js +1 -1
  47. package/esm/renderers/Form.js +4 -3
  48. package/esm/renderers/Item.js +1 -1
  49. package/esm/renderers/Options.d.ts +2 -2
  50. package/esm/renderers/Options.js +11 -5
  51. package/esm/renderers/Placeholder.js +1 -1
  52. package/esm/renderers/builtin.js +1 -1
  53. package/esm/renderers/register.js +1 -1
  54. package/esm/renderers/wrapControl.js +18 -4
  55. package/esm/store/app.js +2 -1
  56. package/esm/store/combo.d.ts +4 -2
  57. package/esm/store/combo.js +1 -1
  58. package/esm/store/crud.d.ts +2 -0
  59. package/esm/store/crud.js +116 -100
  60. package/esm/store/form.d.ts +3 -1
  61. package/esm/store/form.js +17 -11
  62. package/esm/store/formItem.js +8 -6
  63. package/esm/store/iRenderer.js +5 -1
  64. package/esm/store/index.js +1 -1
  65. package/esm/store/list.js +1 -1
  66. package/esm/store/manager.js +1 -1
  67. package/esm/store/modal.js +1 -1
  68. package/esm/store/node.js +1 -1
  69. package/esm/store/pagination.js +1 -1
  70. package/esm/store/root.js +2 -1
  71. package/esm/store/service.js +2 -1
  72. package/esm/store/status.js +1 -1
  73. package/esm/store/table.d.ts +4 -2
  74. package/esm/store/table.js +3 -1
  75. package/esm/store/table2.js +1 -1
  76. package/esm/theme.js +1 -1
  77. package/esm/utils/Animation.js +1 -1
  78. package/esm/utils/ColorScale.js +1 -1
  79. package/esm/utils/DataSchema.js +1 -1
  80. package/esm/utils/DataScope.js +1 -1
  81. package/esm/utils/RootClose.js +1 -1
  82. package/esm/utils/SimpleMap.js +1 -1
  83. package/esm/utils/animations.d.ts +1 -0
  84. package/esm/utils/animations.js +17 -9
  85. package/esm/utils/api.js +1 -1
  86. package/esm/utils/arraySlice.js +1 -1
  87. package/esm/utils/attachmentAdpator.js +3 -29
  88. package/esm/utils/autobind.js +1 -1
  89. package/esm/utils/browser.js +1 -1
  90. package/esm/utils/columnsSplit.js +1 -1
  91. package/esm/utils/concatData.js +1 -1
  92. package/esm/utils/dataMapping.js +1 -1
  93. package/esm/utils/date.js +1 -1
  94. package/esm/utils/debug.js +1 -1
  95. package/esm/utils/decodeEntity.js +1 -1
  96. package/esm/utils/dom.d.ts +1 -0
  97. package/esm/utils/dom.js +39 -2
  98. package/esm/utils/errors.js +1 -1
  99. package/esm/utils/escapeHtml.js +1 -1
  100. package/esm/utils/filter-schema.js +1 -1
  101. package/esm/utils/filter.js +1 -1
  102. package/esm/utils/formatDuration.js +1 -1
  103. package/esm/utils/formula.js +1 -1
  104. package/esm/utils/getVariable.js +1 -1
  105. package/esm/utils/grammar.js +1 -1
  106. package/esm/utils/handleAction.js +1 -1
  107. package/esm/utils/helper.d.ts +1 -0
  108. package/esm/utils/helper.js +9 -2
  109. package/esm/utils/highlight.js +1 -1
  110. package/esm/utils/icon.js +1 -1
  111. package/esm/utils/image.js +1 -1
  112. package/esm/utils/index.js +3 -2
  113. package/esm/utils/isPureVariable.js +1 -1
  114. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  115. package/esm/utils/keyToPath.js +1 -1
  116. package/esm/utils/labelToString.js +1 -1
  117. package/esm/utils/loopTooMuch.js +1 -1
  118. package/esm/utils/makeSorter.js +1 -1
  119. package/esm/utils/math.js +1 -1
  120. package/esm/utils/memoryParse.js +1 -1
  121. package/esm/utils/normalizeLink.js +1 -1
  122. package/esm/utils/normalizeOptions.js +1 -1
  123. package/esm/utils/object.js +1 -1
  124. package/esm/utils/offset.js +1 -1
  125. package/esm/utils/offsetParent.js +1 -1
  126. package/esm/utils/optionValueCompare.js +1 -1
  127. package/esm/utils/position.js +1 -1
  128. package/esm/utils/prettyBytes.js +1 -1
  129. package/esm/utils/printElement.js +1 -1
  130. package/esm/utils/renderer-event.js +1 -1
  131. package/esm/utils/replaceText.js +1 -1
  132. package/esm/utils/resize-sensor.js +1 -1
  133. package/esm/utils/resolveCondition.js +1 -1
  134. package/esm/utils/resolveVariable.js +1 -1
  135. package/esm/utils/resolveVariableAndFilter.js +1 -1
  136. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  137. package/esm/utils/scrollPosition.js +1 -1
  138. package/esm/utils/string2regExp.js +1 -1
  139. package/esm/utils/stripNumber.js +1 -1
  140. package/esm/utils/style-helper.d.ts +1 -0
  141. package/esm/utils/style-helper.js +10 -7
  142. package/esm/utils/style.js +1 -1
  143. package/esm/utils/toNumber.js +1 -1
  144. package/esm/utils/tokenize.js +1 -1
  145. package/esm/utils/tpl-builtin.js +1 -1
  146. package/esm/utils/tpl-lodash.js +1 -1
  147. package/esm/utils/tpl.js +1 -1
  148. package/esm/utils/uncontrollable.js +1 -1
  149. package/esm/utils/validateId.js +1 -1
  150. package/esm/utils/validations.js +1 -1
  151. package/esm/utils/visitedCache.js +1 -1
  152. package/lib/Root.js +1 -1
  153. package/lib/RootRenderer.d.ts +1 -1
  154. package/lib/RootRenderer.js +1 -1
  155. package/lib/SchemaRenderer.js +1 -1
  156. package/lib/Scoped.js +2 -1
  157. package/lib/StatusScoped.js +1 -1
  158. package/lib/StyleManager.js +1 -1
  159. package/lib/WithRootStore.js +1 -1
  160. package/lib/WithStore.js +1 -1
  161. package/lib/actions/Action.d.ts +8 -0
  162. package/lib/actions/Action.js +56 -14
  163. package/lib/actions/AjaxAction.js +2 -2
  164. package/lib/actions/BreakAction.js +1 -1
  165. package/lib/actions/BroadcastAction.js +1 -1
  166. package/lib/actions/CmptAction.js +1 -1
  167. package/lib/actions/ContinueAction.js +1 -1
  168. package/lib/actions/CopyAction.js +1 -1
  169. package/lib/actions/CustomAction.js +2 -1
  170. package/lib/actions/DialogAction.js +2 -1
  171. package/lib/actions/DrawerAction.js +2 -1
  172. package/lib/actions/EmailAction.js +1 -1
  173. package/lib/actions/EventAction.js +2 -1
  174. package/lib/actions/LinkAction.js +1 -1
  175. package/lib/actions/LoopAction.js +1 -1
  176. package/lib/actions/PageAction.js +1 -1
  177. package/lib/actions/ParallelAction.js +1 -1
  178. package/lib/actions/PrintAction.js +1 -1
  179. package/lib/actions/StatusAction.js +1 -1
  180. package/lib/actions/SwitchAction.js +1 -1
  181. package/lib/actions/ToastAction.js +1 -1
  182. package/lib/actions/WaitAction.js +1 -1
  183. package/lib/components/Animations.js +2 -1
  184. package/lib/components/CustomStyle.js +2 -1
  185. package/lib/components/ErrorBoundary.js +1 -1
  186. package/lib/components/LazyComponent.js +1 -1
  187. package/lib/components/Overlay.js +2 -1
  188. package/lib/components/PopOver.js +2 -1
  189. package/lib/env.js +1 -1
  190. package/lib/envOverwrite.d.ts +1 -1
  191. package/lib/envOverwrite.js +4 -3
  192. package/lib/factory.js +1 -1
  193. package/lib/globalVar.js +1 -1
  194. package/lib/globalVarClientHandler.js +1 -1
  195. package/lib/globalVarDefaultValueHandler.js +1 -1
  196. package/lib/index.js +11 -5
  197. package/lib/locale.js +4 -2
  198. package/lib/polyfills.js +1 -1
  199. package/lib/renderers/Form.js +4 -3
  200. package/lib/renderers/Item.d.ts +1 -1
  201. package/lib/renderers/Item.js +1 -1
  202. package/lib/renderers/Options.d.ts +2 -2
  203. package/lib/renderers/Options.js +11 -5
  204. package/lib/renderers/Placeholder.js +1 -1
  205. package/lib/renderers/builtin.js +1 -1
  206. package/lib/renderers/register.js +1 -1
  207. package/lib/renderers/wrapControl.js +19 -5
  208. package/lib/store/app.js +2 -1
  209. package/lib/store/combo.d.ts +4 -3
  210. package/lib/store/combo.js +1 -1
  211. package/lib/store/crud.d.ts +2 -0
  212. package/lib/store/crud.js +116 -100
  213. package/lib/store/form.d.ts +3 -2
  214. package/lib/store/form.js +17 -11
  215. package/lib/store/formItem.js +8 -6
  216. package/lib/store/iRenderer.js +5 -1
  217. package/lib/store/index.js +1 -1
  218. package/lib/store/list.js +1 -1
  219. package/lib/store/manager.js +1 -1
  220. package/lib/store/modal.js +1 -1
  221. package/lib/store/node.js +1 -1
  222. package/lib/store/pagination.js +1 -1
  223. package/lib/store/root.js +2 -1
  224. package/lib/store/service.js +2 -1
  225. package/lib/store/status.js +1 -1
  226. package/lib/store/table.d.ts +4 -3
  227. package/lib/store/table.js +3 -1
  228. package/lib/store/table2.js +1 -1
  229. package/lib/theme.js +1 -1
  230. package/lib/utils/Animation.js +1 -1
  231. package/lib/utils/ColorScale.js +1 -1
  232. package/lib/utils/DataSchema.js +1 -1
  233. package/lib/utils/DataScope.js +1 -1
  234. package/lib/utils/RootClose.js +1 -1
  235. package/lib/utils/SimpleMap.js +1 -1
  236. package/lib/utils/animations.d.ts +1 -0
  237. package/lib/utils/animations.js +17 -9
  238. package/lib/utils/api.js +1 -1
  239. package/lib/utils/arraySlice.js +1 -1
  240. package/lib/utils/attachmentAdpator.js +3 -29
  241. package/lib/utils/autobind.js +1 -1
  242. package/lib/utils/browser.js +1 -1
  243. package/lib/utils/columnsSplit.js +1 -1
  244. package/lib/utils/concatData.js +1 -1
  245. package/lib/utils/dataMapping.js +1 -1
  246. package/lib/utils/date.js +1 -1
  247. package/lib/utils/debug.js +1 -1
  248. package/lib/utils/decodeEntity.js +1 -1
  249. package/lib/utils/dom.d.ts +1 -0
  250. package/lib/utils/dom.js +39 -1
  251. package/lib/utils/errors.js +1 -1
  252. package/lib/utils/escapeHtml.js +1 -1
  253. package/lib/utils/filter-schema.js +1 -1
  254. package/lib/utils/filter.js +1 -1
  255. package/lib/utils/formatDuration.js +1 -1
  256. package/lib/utils/formula.js +1 -1
  257. package/lib/utils/getVariable.js +1 -1
  258. package/lib/utils/grammar.js +1 -1
  259. package/lib/utils/handleAction.js +1 -1
  260. package/lib/utils/helper.d.ts +1 -0
  261. package/lib/utils/helper.js +9 -1
  262. package/lib/utils/highlight.js +1 -1
  263. package/lib/utils/icon.js +1 -1
  264. package/lib/utils/image.js +1 -1
  265. package/lib/utils/index.js +4 -1
  266. package/lib/utils/isPureVariable.js +1 -1
  267. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  268. package/lib/utils/keyToPath.js +1 -1
  269. package/lib/utils/labelToString.js +1 -1
  270. package/lib/utils/loopTooMuch.js +1 -1
  271. package/lib/utils/makeSorter.js +1 -1
  272. package/lib/utils/math.js +1 -1
  273. package/lib/utils/memoryParse.js +1 -1
  274. package/lib/utils/normalizeLink.js +1 -1
  275. package/lib/utils/normalizeOptions.js +1 -1
  276. package/lib/utils/object.js +1 -1
  277. package/lib/utils/offset.js +1 -1
  278. package/lib/utils/offsetParent.js +1 -1
  279. package/lib/utils/optionValueCompare.js +1 -1
  280. package/lib/utils/position.js +1 -1
  281. package/lib/utils/prettyBytes.js +1 -1
  282. package/lib/utils/printElement.js +1 -1
  283. package/lib/utils/renderer-event.js +1 -1
  284. package/lib/utils/replaceText.js +1 -1
  285. package/lib/utils/resize-sensor.js +1 -1
  286. package/lib/utils/resolveCondition.js +1 -1
  287. package/lib/utils/resolveVariable.js +1 -1
  288. package/lib/utils/resolveVariableAndFilter.js +1 -1
  289. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  290. package/lib/utils/scrollPosition.js +1 -1
  291. package/lib/utils/string2regExp.js +1 -1
  292. package/lib/utils/stripNumber.js +1 -1
  293. package/lib/utils/style-helper.d.ts +1 -0
  294. package/lib/utils/style-helper.js +10 -7
  295. package/lib/utils/style.js +1 -1
  296. package/lib/utils/toNumber.js +1 -1
  297. package/lib/utils/tokenize.js +1 -1
  298. package/lib/utils/tpl-builtin.js +1 -1
  299. package/lib/utils/tpl-lodash.js +1 -1
  300. package/lib/utils/tpl.js +1 -1
  301. package/lib/utils/uncontrollable.js +1 -1
  302. package/lib/utils/validateId.js +1 -1
  303. package/lib/utils/validations.js +1 -1
  304. package/lib/utils/visitedCache.js +1 -1
  305. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -134,7 +134,7 @@ export interface OptionsControlProps extends FormControlProps, Omit<FormOptionsC
134
134
  selectedOptions: Array<Option>;
135
135
  setOptions: (value: Array<any>, skipNormalize?: boolean) => void;
136
136
  setLoading: (value: boolean) => void;
137
- reloadOptions: (setError?: boolean, isInit?: boolean, data?: Record<string, any>) => void;
137
+ reloadOptions: (subpath?: string, query?: any) => void;
138
138
  deferLoad: (option: Option) => void;
139
139
  leftDeferLoad: (option: Option, leftOptions: Option) => void;
140
140
  expandTreeOptions: (nodePathArr: any[]) => void;
@@ -185,7 +185,7 @@ export declare class OptionsControlBase<T extends OptionsProps = OptionsProps, S
185
185
  formatValueArray(valueArray: Array<Option>): string | Option | Option[];
186
186
  handleToggleAll(): Promise<void>;
187
187
  toggleValue(option: Option, originValue?: any): string | Option | Option[];
188
- reload(): Promise<import("../types").Payload | null> | undefined;
188
+ reload(subpath?: string, query?: any): Promise<import("../types").Payload | null> | undefined;
189
189
  reloadOptions(setError?: boolean, isInit?: boolean, data?: T["data"]): Promise<import("../types").Payload | null> | undefined;
190
190
  deferLoad(option: Option): Promise<void>;
191
191
  leftDeferLoad(option: Option, leftOptions: Option): void;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -16,10 +16,10 @@ import findIndex from 'lodash/findIndex';
16
16
  import { normalizeOptions } from '../utils/normalizeOptions.js';
17
17
  import { optionValueCompare } from '../utils/optionValueCompare.js';
18
18
  import '../utils/index.js';
19
+ import { extendObject, createObject, setVariable } from '../utils/object.js';
19
20
  import { isPureVariable } from '../utils/isPureVariable.js';
20
21
  import { resolveVariableAndFilter } from '../utils/resolveVariableAndFilter.js';
21
22
  import { resolveEventData } from '../utils/renderer-event.js';
22
- import { createObject, setVariable } from '../utils/object.js';
23
23
 
24
24
  var detectProps = detectProps$1.concat([
25
25
  'value',
@@ -373,8 +373,14 @@ var OptionsControlBase = /** @class */ (function (_super) {
373
373
  return newValue;
374
374
  };
375
375
  // 当有 action 触发,如果指定了 reload 目标组件,有可能会来到这里面来
376
- OptionsControlBase.prototype.reload = function () {
377
- return this.reloadOptions();
376
+ OptionsControlBase.prototype.reload = function (subpath, query) {
377
+ var _a, _b;
378
+ var data = this.props.data;
379
+ if (query) {
380
+ (_b = (_a = this.props).onBulkChange) === null || _b === void 0 ? void 0 : _b.call(_a, query);
381
+ data = extendObject(data, query);
382
+ }
383
+ return this.reloadOptions(false, false, data);
378
384
  };
379
385
  OptionsControlBase.prototype.reloadOptions = function (setError, isInit, data) {
380
386
  if (isInit === void 0) { isInit = false; }
@@ -911,7 +917,7 @@ var OptionsControlBase = /** @class */ (function (_super) {
911
917
  __decorate([
912
918
  autobind,
913
919
  __metadata("design:type", Function),
914
- __metadata("design:paramtypes", []),
920
+ __metadata("design:paramtypes", [String, Object]),
915
921
  __metadata("design:returntype", void 0)
916
922
  ], OptionsControlBase.prototype, "reload", null);
917
923
  __decorate([
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -9,6 +9,7 @@ import debounce from 'lodash/debounce';
9
9
  import isEqual from 'lodash/isEqual';
10
10
  import { ComboStore } from '../store/combo.js';
11
11
  import { guid, promisify, changedEffect } from '../utils/helper.js';
12
+ import { str2rules } from '../utils/validations.js';
12
13
  import { isExpression, isNeedFormula, FormulaExec, replaceExpression } from '../utils/formula.js';
13
14
  import { ScopedContext } from '../Scoped.js';
14
15
  import { FormItemStore } from '../store/formItem.js';
@@ -67,9 +68,13 @@ function wrapControl(config, ComposedComponent) {
67
68
  rowIndex: rowIndex !== undefined ? rowIndex : undefined
68
69
  });
69
70
  _this.model = model;
71
+ // 如果组件有默认验证器类型,则合并
72
+ var rules = validations && model && config.validations
73
+ ? __assign(__assign({}, validations), str2rules(config.validations)) : validations;
70
74
  // @issue 打算干掉这个
71
75
  formItem === null || formItem === void 0 ? void 0 : formItem.addSubFormItem(model);
72
- model.config(__assign(__assign({}, pick(__assign(__assign({}, ComposedComponent.defaultProps), _this.props.$schema), ['multiple'])), { id: id, type: type, required: props.required || required, unique: unique, value: value, isValueSchemaExp: isExpression(value), rules: validations, messages: validationErrors, delimiter: delimiter, valueField: valueField, labelField: labelField, joinValues: joinValues, extractValue: extractValue, selectFirst: selectFirst, autoFill: autoFill, clearValueOnHidden: clearValueOnHidden, validateApi: validateApi, minLength: minLength, maxLength: maxLength, validateOnChange: validateOnChange, label: label, inputGroupControl: inputGroupControl, extraName: extraName, pagination: pagination }));
76
+ model.config(__assign(__assign({}, pick(__assign(__assign({}, ComposedComponent.defaultProps), _this.props.$schema), ['multiple'])), { id: id, type: type, required: props.required || required, unique: unique, value: value, isValueSchemaExp: isExpression(value) &&
77
+ value.replace(/\s/g, '') !== "${".concat(name, "}"), rules: rules, messages: validationErrors, delimiter: delimiter, valueField: valueField, labelField: labelField, joinValues: joinValues, extractValue: extractValue, selectFirst: selectFirst, autoFill: autoFill, clearValueOnHidden: clearValueOnHidden, validateApi: validateApi, minLength: minLength, maxLength: maxLength, validateOnChange: validateOnChange, label: label, inputGroupControl: inputGroupControl, extraName: extraName, pagination: pagination }));
73
78
  // issue 这个逻辑应该在 combo 里面自己实现。
74
79
  if (_this.model.unique &&
75
80
  ((_b = form === null || form === void 0 ? void 0 : form.parentStore) === null || _b === void 0 ? void 0 : _b.storeType) === ComboStore.name) {
@@ -172,7 +177,9 @@ function wrapControl(config, ComposedComponent) {
172
177
  ], prevProps.$schema, props.$schema, function (changes) {
173
178
  model.config(__assign(__assign({}, changes), {
174
179
  // todo 优化后面两个
175
- isValueSchemaExp: isExpression(props.$schema.value), inputGroupControl: props === null || props === void 0 ? void 0 : props.inputGroupControl }));
180
+ isValueSchemaExp: isExpression(props.$schema.value) &&
181
+ props.$schema.value.replace(/\s/g, '') !==
182
+ "${".concat(props.$schema.name, "}"), inputGroupControl: props === null || props === void 0 ? void 0 : props.inputGroupControl }));
176
183
  if (changes.hasOwnProperty('name')) {
177
184
  _this.setInitialValue(_this.props.$schema.value);
178
185
  }
@@ -193,6 +200,8 @@ function wrapControl(config, ComposedComponent) {
193
200
  }
194
201
  else if (typeof props.defaultValue !== 'undefined' &&
195
202
  isExpression(props.defaultValue) &&
203
+ props.defaultValue.replace(/\s/g, '') !==
204
+ "${".concat(props.name, "}") &&
196
205
  (!isEqual(props.defaultValue, prevProps.defaultValue) ||
197
206
  (props.data !== prevProps.data &&
198
207
  isNeedFormula(props.defaultValue, props.data, prevProps.data)))) {
@@ -253,8 +262,13 @@ function wrapControl(config, ComposedComponent) {
253
262
  };
254
263
  class_1.prototype.setInitialValue = function (value) {
255
264
  var model = this.model;
256
- var _a = this.props, form = _a.formStore, data = _a.data, canAccessSuperData = _a.canAccessSuperData;
265
+ var _a = this.props, form = _a.formStore, data = _a.data, canAccessSuperData = _a.canAccessSuperData, name = _a.name;
257
266
  var isExp = isExpression(value);
267
+ if (isExp && value.replace(/\s/g, '') === "${".concat(name, "}")) {
268
+ console.warn('value 不要使用表达式关联自己');
269
+ isExp = false;
270
+ value = undefined;
271
+ }
258
272
  var initialValue = model.extraName
259
273
  ? [
260
274
  getVariable(data, model.name, canAccessSuperData !== null && canAccessSuperData !== void 0 ? canAccessSuperData : form === null || form === void 0 ? void 0 : form.canAccessSuperData),
package/esm/store/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -8,6 +8,7 @@ import { types } from 'mobx-state-tree';
8
8
  import { mapTree, findTree, isVisible, guid, replaceUrlParams } from '../utils/helper.js';
9
9
  import { ServiceStore } from './service.js';
10
10
  import '../utils/api.js';
11
+ import 'file-saver';
11
12
  import '../utils/browser.js';
12
13
  import '../utils/ColorScale.js';
13
14
  import 'react';
@@ -2303,7 +2303,6 @@ export declare const ComboStore: import("mobx-state-tree").IModelType<{
2303
2303
  fetchSchema: (api: import("..").Api, data?: object | undefined, options?: import("..").fetchOptions | undefined) => Promise<any>;
2304
2304
  checkRemote: (api: import("..").Api, data?: object | undefined, options?: import("..").fetchOptions | undefined) => Promise<any>;
2305
2305
  } & {
2306
- readonly loading: boolean;
2307
2306
  readonly items: ({
2308
2307
  id: string;
2309
2308
  path: string;
@@ -3378,6 +3377,8 @@ export declare const ComboStore: import("mobx-state-tree").IModelType<{
3378
3377
  addInitHook(fn: (store: any) => any, weight?: number): () => void;
3379
3378
  beforeDestroy: () => void;
3380
3379
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>)[];
3380
+ } & {
3381
+ readonly loading: boolean;
3381
3382
  readonly inputGroupItems: Record<string, ({
3382
3383
  id: string;
3383
3384
  path: string;
@@ -7801,7 +7802,6 @@ export declare const ComboStore: import("mobx-state-tree").IModelType<{
7801
7802
  fetchSchema: (api: import("..").Api, data?: object | undefined, options?: import("..").fetchOptions | undefined) => Promise<any>;
7802
7803
  checkRemote: (api: import("..").Api, data?: object | undefined, options?: import("..").fetchOptions | undefined) => Promise<any>;
7803
7804
  } & {
7804
- readonly loading: boolean;
7805
7805
  readonly items: ({
7806
7806
  id: string;
7807
7807
  path: string;
@@ -8876,6 +8876,8 @@ export declare const ComboStore: import("mobx-state-tree").IModelType<{
8876
8876
  addInitHook(fn: (store: any) => any, weight?: number): () => void;
8877
8877
  beforeDestroy: () => void;
8878
8878
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>)[];
8879
+ } & {
8880
+ readonly loading: boolean;
8879
8881
  readonly inputGroupItems: Record<string, ({
8880
8882
  id: string;
8881
8883
  path: string;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -137,6 +137,8 @@ export declare const CRUDStore: import("mobx-state-tree").IModelType<{
137
137
  matchFunc?: MatchFunc;
138
138
  filterOnAllColumns?: boolean;
139
139
  isTable2?: Boolean;
140
+ minLoadingTime?: number;
141
+ dataAppendTo?: 'top' | 'bottom';
140
142
  }) => Promise<any>;
141
143
  changePage: (page: number | string, perPage?: number | string) => void;
142
144
  changePerPage: (perPage: number | string) => void;
package/esm/store/crud.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -133,14 +133,15 @@ var CRUDStore = ServiceStore.named('CRUDStore')
133
133
  }
134
134
  }
135
135
  var fetchInitData = flow(function getInitData(api, data, options) {
136
- 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;
136
+ 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;
137
137
  var _c, e_2, _d;
138
138
  var _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
139
139
  if (options === void 0) { options = {}; }
140
140
  return __generator(this, function (_q) {
141
141
  switch (_q.label) {
142
142
  case 0:
143
- _q.trys.push([0, 2, , 3]);
143
+ _q.trys.push([0, 6, , 7]);
144
+ startTime = Date.now();
144
145
  rawItems = options.source
145
146
  ? resolveVariableAndFilter(options.source, createObject(self.mergedData, {
146
147
  items: self.data.itemsRaw,
@@ -180,116 +181,131 @@ var CRUDStore = ServiceStore.named('CRUDStore')
180
181
  case 1:
181
182
  json = _q.sent();
182
183
  fetchCancel = null;
183
- if (!json.ok) {
184
- self.updateMessage((_j = (_h = (_g = (_f = api === null || api === void 0 ? void 0 : api.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);
185
- !(api === null || api === void 0 ? void 0 : api.silent) &&
186
- getEnv(self).notify('error', json.msg, json.msgTimeout !== undefined
187
- ? {
188
- closeButton: true,
189
- timeout: json.msgTimeout
190
- }
191
- : undefined);
184
+ if (!!json.ok) return [3 /*break*/, 2];
185
+ self.updateMessage((_j = (_h = (_g = (_f = api === null || api === void 0 ? void 0 : api.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);
186
+ !(api === null || api === void 0 ? void 0 : api.silent) &&
187
+ getEnv(self).notify('error', json.msg, json.msgTimeout !== undefined
188
+ ? {
189
+ closeButton: true,
190
+ timeout: json.msgTimeout
191
+ }
192
+ : undefined);
193
+ return [3 /*break*/, 5];
194
+ case 2:
195
+ if (!json.data) {
196
+ throw new Error(self.__('CRUD.invalidData'));
197
+ }
198
+ if (!options.minLoadingTime) return [3 /*break*/, 4];
199
+ elapsedTime = Date.now() - startTime;
200
+ remainingTime_1 = options.minLoadingTime - elapsedTime;
201
+ if (!(remainingTime_1 > 0)) return [3 /*break*/, 4];
202
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, remainingTime_1); })];
203
+ case 3:
204
+ _q.sent();
205
+ _q.label = 4;
206
+ case 4:
207
+ self.updatedAt = Date.now();
208
+ result = normalizeApiResponseData(json.data);
209
+ total = result.total, count = result.count, page = result.page, hasNext = result.hasNext, oItems = result.items, oRows = result.rows, columns = result.columns, rest = __rest(result, ["total", "count", "page", "hasNext", "items", "rows", "columns"]);
210
+ items = void 0;
211
+ if (options.source) {
212
+ items = resolveVariableAndFilter(options.source, createObject(self.filterData, result), '| raw');
192
213
  }
193
214
  else {
194
- if (!json.data) {
195
- throw new Error(self.__('CRUD.invalidData'));
196
- }
197
- self.updatedAt = Date.now();
198
- result = normalizeApiResponseData(json.data);
199
- total = result.total, count = result.count, page = result.page, hasNext = result.hasNext, oItems = result.items, oRows = result.rows, columns = result.columns, rest = __rest(result, ["total", "count", "page", "hasNext", "items", "rows", "columns"]);
200
- items = void 0;
201
- if (options.source) {
202
- items = resolveVariableAndFilter(options.source, createObject(self.filterData, result), '| raw');
203
- }
204
- else {
205
- items = result.items || result.rows;
206
- }
207
- if (!Array.isArray(items)) {
208
- try {
209
- // 如果不按照 items 格式返回,就拿第一个数组当成 items
210
- for (_a = __values(Object.keys(result)), _b = _a.next(); !_b.done; _b = _a.next()) {
211
- key = _b.value;
212
- if (result.hasOwnProperty(key) && Array.isArray(result[key])) {
213
- items = result[key];
214
- break;
215
- }
216
- }
217
- }
218
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
219
- finally {
220
- try {
221
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
215
+ items = result.items || result.rows;
216
+ }
217
+ if (!Array.isArray(items)) {
218
+ try {
219
+ // 如果不按照 items 格式返回,就拿第一个数组当成 items
220
+ for (_a = __values(Object.keys(result)), _b = _a.next(); !_b.done; _b = _a.next()) {
221
+ key = _b.value;
222
+ if (result.hasOwnProperty(key) && Array.isArray(result[key])) {
223
+ items = result[key];
224
+ break;
222
225
  }
223
- finally { if (e_2) throw e_2.error; }
224
226
  }
225
227
  }
226
- else if (items == null) {
227
- items = [];
228
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
229
+ finally {
230
+ try {
231
+ if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
232
+ }
233
+ finally { if (e_2) throw e_2.error; }
228
234
  }
229
- if (!Array.isArray(items)) {
230
- throw new Error(self.__('CRUD.invalidArray'));
235
+ }
236
+ else if (items == null) {
237
+ items = [];
238
+ }
239
+ if (!Array.isArray(items)) {
240
+ throw new Error(self.__('CRUD.invalidArray'));
241
+ }
242
+ else {
243
+ // 确保成员是对象。
244
+ items.map(function (item) {
245
+ return typeof item === 'string' ? { text: item } : item;
246
+ });
247
+ }
248
+ rowsData = [];
249
+ if (options.loadDataMode && Array.isArray(self.data.items)) {
250
+ if (options.dataAppendTo === 'top') {
251
+ rowsData = items.concat(self.data.items);
231
252
  }
232
253
  else {
233
- // 确保成员是对象。
234
- items.map(function (item) {
235
- return typeof item === 'string' ? { text: item } : item;
236
- });
237
- }
238
- rowsData = [];
239
- if (options.loadDataMode && Array.isArray(self.data.items)) {
240
254
  rowsData = self.data.items.concat(items);
241
255
  }
242
- else {
243
- // 第一次的时候就是直接加载请求的数据
244
- rowsData = items;
245
- }
246
- data_2 = __assign(__assign(__assign({}, (api.replaceData ? {} : self.pristine)), { items: rowsData, count: count, total: total }), rest);
247
- if (options.loadDataOnce) {
248
- /**
249
- * 1. 记录原始集合,后续可能基于原始数据做排序查找。
250
- * 2. 接口返回中没有 items 和 rows 字段,则直接用查到的数据。
251
- */
252
- data_2.itemsRaw = oItems || oRows || rowsData.concat();
253
- filteredItems = applyFilters(rowsData, {
254
- query: self.query,
255
- columns: options.columns,
256
- filterOnAllColumns: false,
257
- matchFunc: options.matchFunc
258
- });
259
- if (self.query.orderBy) {
260
- dir = /desc/i.test(self.query.orderDir) ? -1 : 1;
261
- filteredItems = sortArray(filteredItems, self.query.orderBy, dir);
262
- }
263
- data_2.items = filteredItems.slice((self.page - 1) * self.perPage, self.page * self.perPage);
264
- data_2.count = data_2.total = filteredItems.length;
265
- }
266
- if (Array.isArray(columns)) {
267
- self.columns = columns.concat();
268
- }
269
- else if (rest.isTable2) {
270
- self.columns = options.columns;
271
- }
272
- self.items.replace(rowsData);
273
- self.reInitData(data_2, !!api.replaceData, api.concatDataFields);
274
- options.syncResponse2Query !== false &&
275
- updateQuery(pick(rest, Object.keys(self.query)), undefined, options.pageField || 'page', options.perPageField || 'perPage');
276
- self.total = parseInt((_k = data_2.total) !== null && _k !== void 0 ? _k : data_2.count, 10) || 0;
277
- typeof page !== 'undefined' && (self.page = parseInt(page, 10));
278
- // 分页情况不清楚,只能知道有没有下一页。
279
- if (typeof hasNext !== 'undefined') {
280
- self.mode = 'simple';
281
- self.total = 0;
282
- self.hasNext = !!hasNext;
256
+ }
257
+ else {
258
+ // 第一次的时候就是直接加载请求的数据
259
+ rowsData = items;
260
+ }
261
+ data_2 = __assign(__assign(__assign({}, (api.replaceData ? {} : self.pristine)), { items: rowsData, count: count, total: total }), rest);
262
+ if (options.loadDataOnce) {
263
+ /**
264
+ * 1. 记录原始集合,后续可能基于原始数据做排序查找。
265
+ * 2. 接口返回中没有 items 和 rows 字段,则直接用查到的数据。
266
+ */
267
+ data_2.itemsRaw = oItems || oRows || rowsData.concat();
268
+ filteredItems = applyFilters(rowsData, {
269
+ query: self.query,
270
+ columns: options.columns,
271
+ filterOnAllColumns: false,
272
+ matchFunc: options.matchFunc
273
+ });
274
+ if (self.query.orderBy) {
275
+ dir = /desc/i.test(self.query.orderDir) ? -1 : 1;
276
+ filteredItems = sortArray(filteredItems, self.query.orderBy, dir);
283
277
  }
284
- self.updateMessage((_p = (_o = (_m = (_l = api.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);
285
- // 配置了获取成功提示后提示,默认是空不会提示。
286
- options &&
287
- options.successMessage &&
288
- getEnv(self).notify('success', self.msg);
278
+ data_2.items = filteredItems.slice((self.page - 1) * self.perPage, self.page * self.perPage);
279
+ data_2.count = data_2.total = filteredItems.length;
280
+ }
281
+ if (Array.isArray(columns)) {
282
+ self.columns = columns.concat();
283
+ }
284
+ else if (rest.isTable2) {
285
+ self.columns = options.columns;
289
286
  }
287
+ self.items.replace(rowsData);
288
+ self.reInitData(data_2, !!api.replaceData, api.concatDataFields);
289
+ options.syncResponse2Query !== false &&
290
+ updateQuery(pick(rest, Object.keys(self.query)), undefined, options.pageField || 'page', options.perPageField || 'perPage');
291
+ self.total = parseInt((_k = data_2.total) !== null && _k !== void 0 ? _k : data_2.count, 10) || 0;
292
+ typeof page !== 'undefined' && (self.page = parseInt(page, 10));
293
+ // 分页情况不清楚,只能知道有没有下一页。
294
+ if (typeof hasNext !== 'undefined') {
295
+ self.mode = 'simple';
296
+ self.total = 0;
297
+ self.hasNext = !!hasNext;
298
+ }
299
+ self.updateMessage((_p = (_o = (_m = (_l = api.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);
300
+ // 配置了获取成功提示后提示,默认是空不会提示。
301
+ options &&
302
+ options.successMessage &&
303
+ getEnv(self).notify('success', self.msg);
304
+ _q.label = 5;
305
+ case 5:
290
306
  self.markFetching(false);
291
307
  return [2 /*return*/, json];
292
- case 2:
308
+ case 6:
293
309
  e_1 = _q.sent();
294
310
  env = getEnv(self);
295
311
  if (!isAlive(self) || self.disposed) {
@@ -302,7 +318,7 @@ var CRUDStore = ServiceStore.named('CRUDStore')
302
318
  console.error(e_1);
303
319
  !(api === null || api === void 0 ? void 0 : api.silent) && env.notify('error', e_1.message);
304
320
  return [2 /*return*/];
305
- case 3: return [2 /*return*/];
321
+ case 7: return [2 /*return*/];
306
322
  }
307
323
  });
308
324
  });
@@ -58,6 +58,7 @@ export declare const FormStore: import("mobx-state-tree").IModelType<{
58
58
  readonly pristineDiff: any;
59
59
  } & {
60
60
  setTopStore(value: any): void;
61
+ /** 获取InputGroup的子元素 */
61
62
  initData(data?: object, skipSetPristine?: boolean, changeReason?: DataChangeReason | undefined): void;
62
63
  reset(): void;
63
64
  updateData(data?: object, tag?: object | undefined, replace?: boolean | undefined, concatFields?: string | string[] | undefined, changeReason?: DataChangeReason | undefined): void;
@@ -85,7 +86,6 @@ export declare const FormStore: import("mobx-state-tree").IModelType<{
85
86
  fetchSchema: (api: Api, data?: object | undefined, options?: fetchOptions | undefined) => Promise<any>;
86
87
  checkRemote: (api: Api, data?: object | undefined, options?: fetchOptions | undefined) => Promise<any>;
87
88
  } & {
88
- readonly loading: boolean;
89
89
  readonly items: ({
90
90
  id: string;
91
91
  path: string;
@@ -1160,6 +1160,8 @@ export declare const FormStore: import("mobx-state-tree").IModelType<{
1160
1160
  addInitHook(fn: (store: any) => any, weight?: number): () => void;
1161
1161
  beforeDestroy: () => void;
1162
1162
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>)[];
1163
+ } & {
1164
+ readonly loading: boolean;
1163
1165
  /** 获取InputGroup的子元素 */
1164
1166
  readonly inputGroupItems: Record<string, ({
1165
1167
  id: string;
package/esm/store/form.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -57,17 +57,21 @@ var FormStore = ServiceStore.named('FormStore')
57
57
  return formItems;
58
58
  }
59
59
  return {
60
- get loading() {
61
- return self.saving || self.fetching;
62
- },
63
60
  get items() {
64
61
  return getItems();
62
+ }
63
+ };
64
+ })
65
+ .views(function (self) {
66
+ return {
67
+ get loading() {
68
+ return self.saving || self.fetching;
65
69
  },
66
70
  /** 获取InputGroup的子元素 */
67
71
  get inputGroupItems() {
68
72
  var _a, _b;
69
73
  var formItems = {};
70
- var children = this.items.concat();
74
+ var children = self.items.concat();
71
75
  while (children.length) {
72
76
  var current = children.shift();
73
77
  if (current.inputGroupControl && ((_a = current.inputGroupControl) === null || _a === void 0 ? void 0 : _a.name)) {
@@ -84,7 +88,7 @@ var FormStore = ServiceStore.named('FormStore')
84
88
  },
85
89
  get errors() {
86
90
  var errors = {};
87
- getItems().forEach(function (item) {
91
+ self.items.forEach(function (item) {
88
92
  if (!item.valid) {
89
93
  errors[item.name] = Array.isArray(errors[item.name])
90
94
  ? errors[item.name].concat(item.errors)
@@ -101,20 +105,20 @@ var FormStore = ServiceStore.named('FormStore')
101
105
  return getVariable(self.pristine, name);
102
106
  },
103
107
  getItemById: function (id) {
104
- return getItems().find(function (item) { return item.itemId === id; });
108
+ return self.items.find(function (item) { return item.itemId === id; });
105
109
  },
106
110
  getItemByName: function (name) {
107
- return getItems().find(function (item) { return item.name === name; });
111
+ return self.items.find(function (item) { return item.name === name; });
108
112
  },
109
113
  getItemsByName: function (name) {
110
- return getItems().filter(function (item) { return item.name === name; });
114
+ return self.items.filter(function (item) { return item.name === name; });
111
115
  },
112
116
  get valid() {
113
- return (getItems().every(function (item) { return item.valid; }) &&
117
+ return (self.items.every(function (item) { return item.valid; }) &&
114
118
  (!self.restError || !self.restError.length));
115
119
  },
116
120
  get validating() {
117
- return getItems().some(function (item) { return item.validating; });
121
+ return self.items.some(function (item) { return item.validating; });
118
122
  },
119
123
  get isPristine() {
120
124
  return isEqual(self.pristine, self.data);
@@ -209,6 +213,7 @@ var FormStore = ServiceStore.named('FormStore')
209
213
  }
210
214
  changeReason &&
211
215
  Object.isExtensible(data) &&
216
+ !data.__changeReason &&
212
217
  Object.defineProperty(data, '__changeReason', {
213
218
  value: changeReason,
214
219
  enumerable: false,
@@ -244,6 +249,7 @@ var FormStore = ServiceStore.named('FormStore')
244
249
  deleteVariable(data, name);
245
250
  changeReason &&
246
251
  Object.isExtensible(data) &&
252
+ !data.__changeReason &&
247
253
  Object.defineProperty(data, '__changeReason', {
248
254
  value: changeReason,
249
255
  enumerable: false,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.12.0-beta.0
2
+ * amis-core v6.12.0-beta.10
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -252,11 +252,13 @@ var FormItemStore = StoreNode.named('FormItemStore')
252
252
  },
253
253
  splitExtraValue: function (value) {
254
254
  var delimiter = self.delimiter || ',';
255
- var values = Array.isArray(value)
256
- ? value
257
- : typeof value === 'string'
258
- ? value.split(delimiter || ',').map(function (v) { return v.trim(); })
259
- : [];
255
+ var values = value === ''
256
+ ? ['', '']
257
+ : Array.isArray(value)
258
+ ? value
259
+ : typeof value === 'string'
260
+ ? value.split(delimiter || ',').map(function (v) { return v.trim(); })
261
+ : [];
260
262
  return values;
261
263
  },
262
264
  getMergedData: function (data) {