amis-core 6.11.0 → 6.12.0-ab.2

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 (302) 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.js +1 -1
  57. package/esm/store/crud.d.ts +2 -0
  58. package/esm/store/crud.js +116 -100
  59. package/esm/store/form.js +3 -1
  60. package/esm/store/formItem.js +8 -6
  61. package/esm/store/iRenderer.js +5 -1
  62. package/esm/store/index.js +1 -1
  63. package/esm/store/list.js +1 -1
  64. package/esm/store/manager.js +1 -1
  65. package/esm/store/modal.js +1 -1
  66. package/esm/store/node.js +1 -1
  67. package/esm/store/pagination.js +1 -1
  68. package/esm/store/root.js +2 -1
  69. package/esm/store/service.js +2 -1
  70. package/esm/store/status.js +1 -1
  71. package/esm/store/table.js +3 -1
  72. package/esm/store/table2.js +1 -1
  73. package/esm/theme.js +1 -1
  74. package/esm/utils/Animation.js +1 -1
  75. package/esm/utils/ColorScale.js +1 -1
  76. package/esm/utils/DataSchema.js +1 -1
  77. package/esm/utils/DataScope.js +1 -1
  78. package/esm/utils/RootClose.js +1 -1
  79. package/esm/utils/SimpleMap.js +1 -1
  80. package/esm/utils/animations.d.ts +1 -0
  81. package/esm/utils/animations.js +17 -9
  82. package/esm/utils/api.js +1 -1
  83. package/esm/utils/arraySlice.js +1 -1
  84. package/esm/utils/attachmentAdpator.js +3 -29
  85. package/esm/utils/autobind.js +1 -1
  86. package/esm/utils/browser.js +1 -1
  87. package/esm/utils/columnsSplit.js +1 -1
  88. package/esm/utils/concatData.js +1 -1
  89. package/esm/utils/dataMapping.js +1 -1
  90. package/esm/utils/date.js +1 -1
  91. package/esm/utils/debug.js +1 -1
  92. package/esm/utils/decodeEntity.js +1 -1
  93. package/esm/utils/dom.d.ts +1 -0
  94. package/esm/utils/dom.js +39 -2
  95. package/esm/utils/errors.js +1 -1
  96. package/esm/utils/escapeHtml.js +1 -1
  97. package/esm/utils/filter-schema.js +1 -1
  98. package/esm/utils/filter.js +1 -1
  99. package/esm/utils/formatDuration.js +1 -1
  100. package/esm/utils/formula.js +1 -1
  101. package/esm/utils/getVariable.js +1 -1
  102. package/esm/utils/grammar.js +1 -1
  103. package/esm/utils/handleAction.js +1 -1
  104. package/esm/utils/helper.d.ts +1 -0
  105. package/esm/utils/helper.js +9 -2
  106. package/esm/utils/highlight.js +1 -1
  107. package/esm/utils/icon.js +1 -1
  108. package/esm/utils/image.js +1 -1
  109. package/esm/utils/index.js +3 -2
  110. package/esm/utils/isPureVariable.js +1 -1
  111. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  112. package/esm/utils/keyToPath.js +1 -1
  113. package/esm/utils/labelToString.js +1 -1
  114. package/esm/utils/loopTooMuch.js +1 -1
  115. package/esm/utils/makeSorter.js +1 -1
  116. package/esm/utils/math.js +1 -1
  117. package/esm/utils/memoryParse.js +1 -1
  118. package/esm/utils/normalizeLink.js +1 -1
  119. package/esm/utils/normalizeOptions.js +1 -1
  120. package/esm/utils/object.js +1 -1
  121. package/esm/utils/offset.js +1 -1
  122. package/esm/utils/offsetParent.js +1 -1
  123. package/esm/utils/optionValueCompare.js +1 -1
  124. package/esm/utils/position.js +1 -1
  125. package/esm/utils/prettyBytes.js +1 -1
  126. package/esm/utils/printElement.js +1 -1
  127. package/esm/utils/renderer-event.js +1 -1
  128. package/esm/utils/replaceText.js +1 -1
  129. package/esm/utils/resize-sensor.js +1 -1
  130. package/esm/utils/resolveCondition.js +1 -1
  131. package/esm/utils/resolveVariable.js +1 -1
  132. package/esm/utils/resolveVariableAndFilter.js +1 -1
  133. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  134. package/esm/utils/scrollPosition.js +1 -1
  135. package/esm/utils/string2regExp.js +1 -1
  136. package/esm/utils/stripNumber.js +1 -1
  137. package/esm/utils/style-helper.d.ts +1 -0
  138. package/esm/utils/style-helper.js +10 -7
  139. package/esm/utils/style.js +1 -1
  140. package/esm/utils/toNumber.js +1 -1
  141. package/esm/utils/tokenize.js +1 -1
  142. package/esm/utils/tpl-builtin.js +1 -1
  143. package/esm/utils/tpl-lodash.js +1 -1
  144. package/esm/utils/tpl.js +1 -1
  145. package/esm/utils/uncontrollable.js +1 -1
  146. package/esm/utils/validateId.js +1 -1
  147. package/esm/utils/validations.js +1 -1
  148. package/esm/utils/visitedCache.js +1 -1
  149. package/lib/Root.js +1 -1
  150. package/lib/RootRenderer.d.ts +1 -1
  151. package/lib/RootRenderer.js +1 -1
  152. package/lib/SchemaRenderer.js +1 -1
  153. package/lib/Scoped.js +2 -1
  154. package/lib/StatusScoped.js +1 -1
  155. package/lib/StyleManager.js +1 -1
  156. package/lib/WithRootStore.js +1 -1
  157. package/lib/WithStore.js +1 -1
  158. package/lib/actions/Action.d.ts +8 -0
  159. package/lib/actions/Action.js +56 -14
  160. package/lib/actions/AjaxAction.js +2 -2
  161. package/lib/actions/BreakAction.js +1 -1
  162. package/lib/actions/BroadcastAction.js +1 -1
  163. package/lib/actions/CmptAction.js +1 -1
  164. package/lib/actions/ContinueAction.js +1 -1
  165. package/lib/actions/CopyAction.js +1 -1
  166. package/lib/actions/CustomAction.js +2 -1
  167. package/lib/actions/DialogAction.js +2 -1
  168. package/lib/actions/DrawerAction.js +2 -1
  169. package/lib/actions/EmailAction.js +1 -1
  170. package/lib/actions/EventAction.js +2 -1
  171. package/lib/actions/LinkAction.js +1 -1
  172. package/lib/actions/LoopAction.js +1 -1
  173. package/lib/actions/PageAction.js +1 -1
  174. package/lib/actions/ParallelAction.js +1 -1
  175. package/lib/actions/PrintAction.js +1 -1
  176. package/lib/actions/StatusAction.js +1 -1
  177. package/lib/actions/SwitchAction.js +1 -1
  178. package/lib/actions/ToastAction.js +1 -1
  179. package/lib/actions/WaitAction.js +1 -1
  180. package/lib/components/Animations.js +2 -1
  181. package/lib/components/CustomStyle.js +2 -1
  182. package/lib/components/ErrorBoundary.js +1 -1
  183. package/lib/components/LazyComponent.js +1 -1
  184. package/lib/components/Overlay.js +2 -1
  185. package/lib/components/PopOver.js +2 -1
  186. package/lib/env.js +1 -1
  187. package/lib/envOverwrite.d.ts +1 -1
  188. package/lib/envOverwrite.js +4 -3
  189. package/lib/factory.js +1 -1
  190. package/lib/globalVar.js +1 -1
  191. package/lib/globalVarClientHandler.js +1 -1
  192. package/lib/globalVarDefaultValueHandler.js +1 -1
  193. package/lib/index.js +11 -5
  194. package/lib/locale.js +4 -2
  195. package/lib/polyfills.js +1 -1
  196. package/lib/renderers/Form.js +4 -3
  197. package/lib/renderers/Item.js +1 -1
  198. package/lib/renderers/Options.d.ts +2 -2
  199. package/lib/renderers/Options.js +11 -5
  200. package/lib/renderers/Placeholder.js +1 -1
  201. package/lib/renderers/builtin.js +1 -1
  202. package/lib/renderers/register.js +1 -1
  203. package/lib/renderers/wrapControl.js +19 -5
  204. package/lib/store/app.js +2 -1
  205. package/lib/store/combo.d.ts +25 -24
  206. package/lib/store/combo.js +1 -1
  207. package/lib/store/crud.d.ts +2 -0
  208. package/lib/store/crud.js +116 -100
  209. package/lib/store/form.d.ts +11 -10
  210. package/lib/store/form.js +3 -1
  211. package/lib/store/formItem.js +8 -6
  212. package/lib/store/iRenderer.js +5 -1
  213. package/lib/store/index.js +1 -1
  214. package/lib/store/list.js +1 -1
  215. package/lib/store/manager.js +1 -1
  216. package/lib/store/modal.js +1 -1
  217. package/lib/store/node.js +1 -1
  218. package/lib/store/pagination.js +1 -1
  219. package/lib/store/root.d.ts +1 -0
  220. package/lib/store/root.js +2 -1
  221. package/lib/store/service.js +2 -1
  222. package/lib/store/status.js +1 -1
  223. package/lib/store/table.d.ts +21 -20
  224. package/lib/store/table.js +3 -1
  225. package/lib/store/table2.js +1 -1
  226. package/lib/theme.js +1 -1
  227. package/lib/utils/Animation.js +1 -1
  228. package/lib/utils/ColorScale.js +1 -1
  229. package/lib/utils/DataSchema.js +1 -1
  230. package/lib/utils/DataScope.js +1 -1
  231. package/lib/utils/RootClose.js +1 -1
  232. package/lib/utils/SimpleMap.js +1 -1
  233. package/lib/utils/animations.d.ts +1 -0
  234. package/lib/utils/animations.js +17 -9
  235. package/lib/utils/api.js +1 -1
  236. package/lib/utils/arraySlice.js +1 -1
  237. package/lib/utils/attachmentAdpator.js +3 -29
  238. package/lib/utils/autobind.js +1 -1
  239. package/lib/utils/browser.js +1 -1
  240. package/lib/utils/columnsSplit.js +1 -1
  241. package/lib/utils/concatData.js +1 -1
  242. package/lib/utils/dataMapping.js +1 -1
  243. package/lib/utils/date.js +1 -1
  244. package/lib/utils/debug.js +1 -1
  245. package/lib/utils/decodeEntity.js +1 -1
  246. package/lib/utils/dom.d.ts +1 -0
  247. package/lib/utils/dom.js +39 -1
  248. package/lib/utils/errors.js +1 -1
  249. package/lib/utils/escapeHtml.js +1 -1
  250. package/lib/utils/filter-schema.js +1 -1
  251. package/lib/utils/filter.js +1 -1
  252. package/lib/utils/formatDuration.js +1 -1
  253. package/lib/utils/formula.js +1 -1
  254. package/lib/utils/getVariable.js +1 -1
  255. package/lib/utils/grammar.js +1 -1
  256. package/lib/utils/handleAction.js +1 -1
  257. package/lib/utils/helper.d.ts +1 -0
  258. package/lib/utils/helper.js +9 -1
  259. package/lib/utils/highlight.js +1 -1
  260. package/lib/utils/icon.js +1 -1
  261. package/lib/utils/image.js +1 -1
  262. package/lib/utils/index.js +4 -1
  263. package/lib/utils/isPureVariable.js +1 -1
  264. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  265. package/lib/utils/keyToPath.js +1 -1
  266. package/lib/utils/labelToString.js +1 -1
  267. package/lib/utils/loopTooMuch.js +1 -1
  268. package/lib/utils/makeSorter.js +1 -1
  269. package/lib/utils/math.js +1 -1
  270. package/lib/utils/memoryParse.js +1 -1
  271. package/lib/utils/normalizeLink.js +1 -1
  272. package/lib/utils/normalizeOptions.js +1 -1
  273. package/lib/utils/object.js +1 -1
  274. package/lib/utils/offset.js +1 -1
  275. package/lib/utils/offsetParent.js +1 -1
  276. package/lib/utils/optionValueCompare.js +1 -1
  277. package/lib/utils/position.js +1 -1
  278. package/lib/utils/prettyBytes.js +1 -1
  279. package/lib/utils/printElement.js +1 -1
  280. package/lib/utils/renderer-event.js +1 -1
  281. package/lib/utils/replaceText.js +1 -1
  282. package/lib/utils/resize-sensor.js +1 -1
  283. package/lib/utils/resolveCondition.js +1 -1
  284. package/lib/utils/resolveVariable.js +1 -1
  285. package/lib/utils/resolveVariableAndFilter.js +1 -1
  286. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  287. package/lib/utils/scrollPosition.js +1 -1
  288. package/lib/utils/string2regExp.js +1 -1
  289. package/lib/utils/stripNumber.js +1 -1
  290. package/lib/utils/style-helper.d.ts +1 -0
  291. package/lib/utils/style-helper.js +10 -7
  292. package/lib/utils/style.js +1 -1
  293. package/lib/utils/toNumber.js +1 -1
  294. package/lib/utils/tokenize.js +1 -1
  295. package/lib/utils/tpl-builtin.js +1 -1
  296. package/lib/utils/tpl-lodash.js +1 -1
  297. package/lib/utils/tpl.js +1 -1
  298. package/lib/utils/uncontrollable.js +1 -1
  299. package/lib/utils/validateId.js +1 -1
  300. package/lib/utils/validations.js +1 -1
  301. package/lib/utils/visitedCache.js +1 -1
  302. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
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.11.0
2
+ * amis-core v6.12.0-ab.2
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.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
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.11.0
2
+ * amis-core v6.12.0-ab.2
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';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
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.11.0
2
+ * amis-core v6.12.0-ab.2
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
  });
package/esm/store/form.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -209,6 +209,7 @@ var FormStore = ServiceStore.named('FormStore')
209
209
  }
210
210
  changeReason &&
211
211
  Object.isExtensible(data) &&
212
+ !data.__changeReason &&
212
213
  Object.defineProperty(data, '__changeReason', {
213
214
  value: changeReason,
214
215
  enumerable: false,
@@ -244,6 +245,7 @@ var FormStore = ServiceStore.named('FormStore')
244
245
  deleteVariable(data, name);
245
246
  changeReason &&
246
247
  Object.isExtensible(data) &&
248
+ !data.__changeReason &&
247
249
  Object.defineProperty(data, '__changeReason', {
248
250
  value: changeReason,
249
251
  enumerable: false,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
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) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -17,6 +17,7 @@ import '../utils/filter.js';
17
17
  import { SimpleMap } from '../utils/SimpleMap.js';
18
18
  import { StoreNode } from './node.js';
19
19
  import '../utils/api.js';
20
+ import 'file-saver';
20
21
  import '../utils/browser.js';
21
22
  import '../utils/ColorScale.js';
22
23
  import 'react';
@@ -106,6 +107,7 @@ var iRendererStore = StoreNode.named('iRendererStore')
106
107
  }
107
108
  changeReason &&
108
109
  Object.isExtensible(data) &&
110
+ !data.__changeReason &&
109
111
  Object.defineProperty(data, '__changeReason', {
110
112
  value: changeReason,
111
113
  enumerable: false,
@@ -140,6 +142,7 @@ var iRendererStore = StoreNode.named('iRendererStore')
140
142
  });
141
143
  changeReason &&
142
144
  Object.isExtensible(newData) &&
145
+ !newData.__changeReason &&
143
146
  Object.defineProperty(newData, '__changeReason', {
144
147
  value: changeReason,
145
148
  enumerable: false,
@@ -200,6 +203,7 @@ var iRendererStore = StoreNode.named('iRendererStore')
200
203
  }
201
204
  changeReason &&
202
205
  Object.isExtensible(data) &&
206
+ !data.__changeReason &&
203
207
  Object.defineProperty(data, '__changeReason', {
204
208
  value: changeReason,
205
209
  enumerable: false,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
package/esm/store/list.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
package/esm/store/node.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
package/esm/store/root.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -8,6 +8,7 @@ import { types, flow } from 'mobx-state-tree';
8
8
  import { parseQuery, isObjectShallowModified } 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';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5
 
@@ -12,6 +12,7 @@ import { normalizeApiResponseData } from '../utils/api.js';
12
12
  import { replaceText } from '../utils/replaceText.js';
13
13
  import { concatData } from '../utils/concatData.js';
14
14
  import { envOverwrite } from '../envOverwrite.js';
15
+ import 'file-saver';
15
16
  import '../utils/browser.js';
16
17
  import '../utils/ColorScale.js';
17
18
  import 'react';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.11.0
2
+ * amis-core v6.12.0-ab.2
3
3
  * Copyright 2018-2025 fex
4
4
  */
5
5