amis-core 3.4.0 → 3.4.1

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 (287) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.js +8 -8
  3. package/esm/SchemaRenderer.js +16 -12
  4. package/esm/Scoped.js +3 -1
  5. package/esm/StatusScoped.js +1 -1
  6. package/esm/WithRootStore.js +1 -1
  7. package/esm/WithStore.js +9 -8
  8. package/esm/actions/Action.js +1 -1
  9. package/esm/actions/AjaxAction.js +2 -2
  10. package/esm/actions/BreakAction.js +1 -1
  11. package/esm/actions/BroadcastAction.js +1 -1
  12. package/esm/actions/CmptAction.js +1 -1
  13. package/esm/actions/ContinueAction.js +1 -1
  14. package/esm/actions/CopyAction.js +1 -1
  15. package/esm/actions/CustomAction.js +3 -1
  16. package/esm/actions/DialogAction.js +1 -1
  17. package/esm/actions/DrawerAction.js +1 -1
  18. package/esm/actions/EmailAction.js +1 -1
  19. package/esm/actions/LinkAction.js +1 -1
  20. package/esm/actions/LoopAction.js +1 -1
  21. package/esm/actions/PageAction.js +1 -1
  22. package/esm/actions/ParallelAction.js +1 -1
  23. package/esm/actions/StatusAction.js +1 -1
  24. package/esm/actions/SwitchAction.js +1 -1
  25. package/esm/actions/ToastAction.js +1 -1
  26. package/esm/components/CustomStyle.d.ts +4 -6
  27. package/esm/components/CustomStyle.js +29 -5
  28. package/esm/components/LazyComponent.d.ts +1 -2
  29. package/esm/components/LazyComponent.js +12 -8
  30. package/esm/components/Overlay.js +3 -1
  31. package/esm/components/PopOver.d.ts +12 -12
  32. package/esm/components/PopOver.js +3 -1
  33. package/esm/env.d.ts +2 -2
  34. package/esm/env.js +1 -1
  35. package/esm/envOverwrite.js +1 -1
  36. package/esm/factory.d.ts +7 -7
  37. package/esm/factory.js +1 -1
  38. package/esm/index.d.ts +1 -0
  39. package/esm/index.js +5 -5
  40. package/esm/locale.d.ts +1 -1
  41. package/esm/locale.js +3 -3
  42. package/esm/polyfills.js +1 -1
  43. package/esm/renderers/Form.d.ts +1 -1
  44. package/esm/renderers/Form.js +10 -8
  45. package/esm/renderers/Item.d.ts +24 -56
  46. package/esm/renderers/Item.js +25 -31
  47. package/esm/renderers/Options.js +14 -12
  48. package/esm/renderers/Placeholder.js +1 -1
  49. package/esm/renderers/builtin.js +1 -1
  50. package/esm/renderers/register.js +1 -1
  51. package/esm/renderers/wrapControl.js +70 -80
  52. package/esm/store/app.js +3 -1
  53. package/esm/store/combo.d.ts +384 -0
  54. package/esm/store/combo.js +1 -1
  55. package/esm/store/crud.js +31 -25
  56. package/esm/store/form.d.ts +160 -0
  57. package/esm/store/form.js +15 -13
  58. package/esm/store/formItem.d.ts +4 -0
  59. package/esm/store/formItem.js +42 -26
  60. package/esm/store/iRenderer.js +3 -1
  61. package/esm/store/index.js +1 -1
  62. package/esm/store/list.js +1 -1
  63. package/esm/store/manager.js +1 -1
  64. package/esm/store/modal.js +1 -1
  65. package/esm/store/node.js +1 -1
  66. package/esm/store/pagination.js +1 -1
  67. package/esm/store/root.d.ts +1 -1
  68. package/esm/store/root.js +12 -5
  69. package/esm/store/service.js +38 -33
  70. package/esm/store/status.js +1 -1
  71. package/esm/store/table.d.ts +760 -21
  72. package/esm/store/table.js +155 -55
  73. package/esm/store/table2.js +11 -8
  74. package/esm/theme.d.ts +18 -31
  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/api.d.ts +3 -3
  83. package/esm/utils/api.js +2 -2
  84. package/esm/utils/arraySlice.js +1 -1
  85. package/esm/utils/attachmentAdpator.js +1 -1
  86. package/esm/utils/autobind.js +1 -1
  87. package/esm/utils/columnsSplit.js +1 -1
  88. package/esm/utils/dataMapping.js +1 -1
  89. package/esm/utils/date.js +1 -1
  90. package/esm/utils/debug.d.ts +1 -0
  91. package/esm/utils/debug.js +24 -2
  92. package/esm/utils/decodeEntity.js +1 -1
  93. package/esm/utils/dom.js +1 -1
  94. package/esm/utils/errors.js +1 -1
  95. package/esm/utils/escapeHtml.js +1 -1
  96. package/esm/utils/filter-schema.js +1 -1
  97. package/esm/utils/filter.js +1 -1
  98. package/esm/utils/formatDuration.js +1 -1
  99. package/esm/utils/formula.js +1 -1
  100. package/esm/utils/getVariable.js +1 -1
  101. package/esm/utils/grammar.js +1 -1
  102. package/esm/utils/handleAction.js +1 -1
  103. package/esm/utils/helper.d.ts +13 -1
  104. package/esm/utils/helper.js +99 -5
  105. package/esm/utils/highlight.js +1 -1
  106. package/esm/utils/icon.js +1 -1
  107. package/esm/utils/image.js +1 -1
  108. package/esm/utils/isPureVariable.js +1 -1
  109. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  110. package/esm/utils/keyToPath.d.ts +1 -1
  111. package/esm/utils/keyToPath.js +2 -1
  112. package/esm/utils/makeSorter.js +1 -1
  113. package/esm/utils/math.js +1 -1
  114. package/esm/utils/memoryParse.js +1 -1
  115. package/esm/utils/normalizeLink.js +1 -1
  116. package/esm/utils/normalizeOptions.js +1 -1
  117. package/esm/utils/object.js +1 -1
  118. package/esm/utils/offset.js +1 -1
  119. package/esm/utils/offsetParent.js +1 -1
  120. package/esm/utils/optionValueCompare.js +1 -1
  121. package/esm/utils/position.js +1 -1
  122. package/esm/utils/prettyBytes.js +1 -1
  123. package/esm/utils/renderer-event.js +2 -2
  124. package/esm/utils/replaceText.js +1 -1
  125. package/esm/utils/resize-sensor.d.ts +3 -1
  126. package/esm/utils/resize-sensor.js +34 -22
  127. package/esm/utils/resolveCondition.js +1 -1
  128. package/esm/utils/resolveVariable.js +1 -1
  129. package/esm/utils/resolveVariableAndFilter.js +1 -1
  130. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  131. package/esm/utils/scrollPosition.js +1 -1
  132. package/esm/utils/string2regExp.js +1 -1
  133. package/esm/utils/stripNumber.js +1 -1
  134. package/esm/utils/style-helper.d.ts +22 -14
  135. package/esm/utils/style-helper.js +181 -120
  136. package/esm/utils/style.js +1 -1
  137. package/esm/utils/toNumber.js +1 -1
  138. package/esm/utils/tokenize.js +1 -1
  139. package/esm/utils/tpl-builtin.js +1 -1
  140. package/esm/utils/tpl-lodash.js +1 -1
  141. package/esm/utils/tpl.js +1 -1
  142. package/esm/utils/uncontrollable.js +1 -1
  143. package/esm/utils/validations.js +1 -1
  144. package/lib/Root.js +1 -1
  145. package/lib/RootRenderer.js +8 -8
  146. package/lib/SchemaRenderer.js +16 -12
  147. package/lib/Scoped.js +3 -1
  148. package/lib/StatusScoped.js +1 -1
  149. package/lib/WithRootStore.js +1 -1
  150. package/lib/WithStore.js +9 -8
  151. package/lib/actions/Action.js +1 -1
  152. package/lib/actions/AjaxAction.js +2 -2
  153. package/lib/actions/BreakAction.js +1 -1
  154. package/lib/actions/BroadcastAction.js +1 -1
  155. package/lib/actions/CmptAction.js +1 -1
  156. package/lib/actions/ContinueAction.js +1 -1
  157. package/lib/actions/CopyAction.js +1 -1
  158. package/lib/actions/CustomAction.js +3 -1
  159. package/lib/actions/DialogAction.js +1 -1
  160. package/lib/actions/DrawerAction.js +1 -1
  161. package/lib/actions/EmailAction.js +1 -1
  162. package/lib/actions/LinkAction.js +1 -1
  163. package/lib/actions/LoopAction.js +1 -1
  164. package/lib/actions/PageAction.js +1 -1
  165. package/lib/actions/ParallelAction.js +1 -1
  166. package/lib/actions/StatusAction.js +1 -1
  167. package/lib/actions/SwitchAction.js +1 -1
  168. package/lib/actions/ToastAction.js +1 -1
  169. package/lib/components/CustomStyle.d.ts +4 -6
  170. package/lib/components/CustomStyle.js +28 -4
  171. package/lib/components/LazyComponent.d.ts +1 -2
  172. package/lib/components/LazyComponent.js +12 -9
  173. package/lib/components/Overlay.js +3 -1
  174. package/lib/components/PopOver.d.ts +12 -12
  175. package/lib/components/PopOver.js +3 -1
  176. package/lib/env.d.ts +2 -2
  177. package/lib/env.js +1 -1
  178. package/lib/envOverwrite.js +1 -1
  179. package/lib/factory.d.ts +7 -7
  180. package/lib/factory.js +1 -1
  181. package/lib/index.d.ts +1 -0
  182. package/lib/index.js +11 -3
  183. package/lib/locale.d.ts +1 -1
  184. package/lib/locale.js +3 -3
  185. package/lib/polyfills.js +1 -1
  186. package/lib/renderers/Form.d.ts +1 -1
  187. package/lib/renderers/Form.js +10 -8
  188. package/lib/renderers/Item.d.ts +24 -56
  189. package/lib/renderers/Item.js +26 -31
  190. package/lib/renderers/Options.js +14 -12
  191. package/lib/renderers/Placeholder.js +1 -1
  192. package/lib/renderers/builtin.js +1 -1
  193. package/lib/renderers/register.js +1 -1
  194. package/lib/renderers/wrapControl.js +70 -79
  195. package/lib/store/app.js +3 -1
  196. package/lib/store/combo.d.ts +384 -0
  197. package/lib/store/combo.js +1 -1
  198. package/lib/store/crud.js +31 -25
  199. package/lib/store/form.d.ts +160 -0
  200. package/lib/store/form.js +15 -13
  201. package/lib/store/formItem.d.ts +4 -0
  202. package/lib/store/formItem.js +41 -25
  203. package/lib/store/iRenderer.js +3 -1
  204. package/lib/store/index.js +1 -1
  205. package/lib/store/list.js +1 -1
  206. package/lib/store/manager.js +1 -1
  207. package/lib/store/modal.js +1 -1
  208. package/lib/store/node.js +1 -1
  209. package/lib/store/pagination.js +1 -1
  210. package/lib/store/root.d.ts +1 -1
  211. package/lib/store/root.js +11 -4
  212. package/lib/store/service.js +38 -33
  213. package/lib/store/status.js +1 -1
  214. package/lib/store/table.d.ts +760 -21
  215. package/lib/store/table.js +155 -55
  216. package/lib/store/table2.js +11 -8
  217. package/lib/theme.d.ts +18 -31
  218. package/lib/theme.js +1 -1
  219. package/lib/utils/Animation.js +1 -1
  220. package/lib/utils/ColorScale.js +1 -1
  221. package/lib/utils/DataSchema.js +1 -1
  222. package/lib/utils/DataScope.js +1 -1
  223. package/lib/utils/RootClose.js +1 -1
  224. package/lib/utils/SimpleMap.js +1 -1
  225. package/lib/utils/api.d.ts +3 -3
  226. package/lib/utils/api.js +2 -2
  227. package/lib/utils/arraySlice.js +1 -1
  228. package/lib/utils/attachmentAdpator.js +1 -1
  229. package/lib/utils/autobind.js +1 -1
  230. package/lib/utils/columnsSplit.js +1 -1
  231. package/lib/utils/dataMapping.js +1 -1
  232. package/lib/utils/date.js +1 -1
  233. package/lib/utils/debug.d.ts +1 -0
  234. package/lib/utils/debug.js +24 -1
  235. package/lib/utils/decodeEntity.js +1 -1
  236. package/lib/utils/dom.js +1 -1
  237. package/lib/utils/errors.js +1 -1
  238. package/lib/utils/escapeHtml.js +1 -1
  239. package/lib/utils/filter-schema.js +1 -1
  240. package/lib/utils/filter.js +1 -1
  241. package/lib/utils/formatDuration.js +1 -1
  242. package/lib/utils/formula.js +1 -1
  243. package/lib/utils/getVariable.js +1 -1
  244. package/lib/utils/grammar.js +1 -1
  245. package/lib/utils/handleAction.js +1 -1
  246. package/lib/utils/helper.d.ts +13 -1
  247. package/lib/utils/helper.js +101 -4
  248. package/lib/utils/highlight.js +1 -1
  249. package/lib/utils/icon.js +1 -1
  250. package/lib/utils/image.js +1 -1
  251. package/lib/utils/isPureVariable.js +1 -1
  252. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  253. package/lib/utils/keyToPath.d.ts +1 -1
  254. package/lib/utils/keyToPath.js +2 -1
  255. package/lib/utils/makeSorter.js +1 -1
  256. package/lib/utils/math.js +1 -1
  257. package/lib/utils/memoryParse.js +1 -1
  258. package/lib/utils/normalizeLink.js +1 -1
  259. package/lib/utils/normalizeOptions.js +1 -1
  260. package/lib/utils/object.js +1 -1
  261. package/lib/utils/offset.js +1 -1
  262. package/lib/utils/offsetParent.js +1 -1
  263. package/lib/utils/optionValueCompare.js +1 -1
  264. package/lib/utils/position.js +1 -1
  265. package/lib/utils/prettyBytes.js +1 -1
  266. package/lib/utils/renderer-event.js +2 -2
  267. package/lib/utils/replaceText.js +1 -1
  268. package/lib/utils/resize-sensor.d.ts +3 -1
  269. package/lib/utils/resize-sensor.js +34 -22
  270. package/lib/utils/resolveCondition.js +1 -1
  271. package/lib/utils/resolveVariable.js +1 -1
  272. package/lib/utils/resolveVariableAndFilter.js +1 -1
  273. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  274. package/lib/utils/scrollPosition.js +1 -1
  275. package/lib/utils/string2regExp.js +1 -1
  276. package/lib/utils/stripNumber.js +1 -1
  277. package/lib/utils/style-helper.d.ts +22 -14
  278. package/lib/utils/style-helper.js +188 -120
  279. package/lib/utils/style.js +1 -1
  280. package/lib/utils/toNumber.js +1 -1
  281. package/lib/utils/tokenize.js +1 -1
  282. package/lib/utils/tpl-builtin.js +1 -1
  283. package/lib/utils/tpl-lodash.js +1 -1
  284. package/lib/utils/tpl.js +1 -1
  285. package/lib/utils/uncontrollable.js +1 -1
  286. package/lib/utils/validations.js +1 -1
  287. package/package.json +5 -5
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.1
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -43,6 +43,8 @@ import 'react-overlays/useRootClose';
43
43
  import '../utils/SimpleMap.js';
44
44
  import 'lodash/mapValues';
45
45
  import 'lodash/camelCase';
46
+ import 'lodash/map';
47
+ import 'lodash/isEmpty';
46
48
  import 'uncontrollable';
47
49
  import 'hoist-non-react-statics';
48
50
  import '../utils/validations.js';
@@ -123,7 +125,7 @@ function registerOptionsControl(config) {
123
125
  this.normalizeValue();
124
126
  };
125
127
  FormOptionsItem.prototype.shouldComponentUpdate = function (nextProps) {
126
- var _a, _b;
128
+ var _a;
127
129
  if (config.strictMode === false || nextProps.strictMode === false) {
128
130
  return true;
129
131
  }
@@ -133,10 +135,7 @@ function registerOptionsControl(config) {
133
135
  else if ((_a = nextProps.formItem) === null || _a === void 0 ? void 0 : _a.expressionsInOptions) {
134
136
  return true;
135
137
  }
136
- else if ((_b = nextProps.formItem) === null || _b === void 0 ? void 0 : _b.filteredOptions) {
137
- return true;
138
- }
139
- if (anyChanged(detectProps, this.props, nextProps)) {
138
+ else if (anyChanged(detectProps, this.props, nextProps)) {
140
139
  return true;
141
140
  }
142
141
  return false;
@@ -578,7 +577,8 @@ function registerOptionsControl(config) {
578
577
  case 5:
579
578
  payload = _f.sent();
580
579
  if (!payload.ok) {
581
- env.notify('error', (_b = (_a = addApi === null || addApi === void 0 ? void 0 : addApi.messages) === null || _a === void 0 ? void 0 : _a.failed) !== null && _b !== void 0 ? _b : (payload.msg || __('Options.createFailed')));
580
+ !addApi.silent &&
581
+ env.notify('error', (_b = (_a = addApi === null || addApi === void 0 ? void 0 : addApi.messages) === null || _a === void 0 ? void 0 : _a.failed) !== null && _b !== void 0 ? _b : (payload.msg || __('Options.createFailed')));
582
582
  result = null;
583
583
  }
584
584
  else {
@@ -589,7 +589,7 @@ function registerOptionsControl(config) {
589
589
  e_1 = _f.sent();
590
590
  result = null;
591
591
  console.error(e_1);
592
- env.notify('error', e_1.message);
592
+ !addApi.silent && env.notify('error', e_1.message);
593
593
  return [3 /*break*/, 7];
594
594
  case 7:
595
595
  // 有 result 说明弹框点了确认。否则就是取消了。
@@ -684,7 +684,8 @@ function registerOptionsControl(config) {
684
684
  case 5:
685
685
  payload = _e.sent();
686
686
  if (!payload.ok) {
687
- env.notify('error', (_b = (_a = editApi === null || editApi === void 0 ? void 0 : editApi.messages) === null || _a === void 0 ? void 0 : _a.failed) !== null && _b !== void 0 ? _b : (payload.msg || __('saveFailed')));
687
+ !editApi.silent &&
688
+ env.notify('error', (_b = (_a = editApi === null || editApi === void 0 ? void 0 : editApi.messages) === null || _a === void 0 ? void 0 : _a.failed) !== null && _b !== void 0 ? _b : (payload.msg || __('saveFailed')));
688
689
  result = null;
689
690
  }
690
691
  else {
@@ -695,7 +696,7 @@ function registerOptionsControl(config) {
695
696
  e_2 = _e.sent();
696
697
  result = null;
697
698
  console.error(e_2);
698
- env.notify('error', e_2.message);
699
+ !editApi.silent && env.notify('error', e_2.message);
699
700
  return [3 /*break*/, 7];
700
701
  case 7:
701
702
  // 没有结果,说明取消了。
@@ -763,7 +764,8 @@ function registerOptionsControl(config) {
763
764
  case 6:
764
765
  result = _e.sent();
765
766
  if (!result.ok) {
766
- env.notify('error', (_b = (_a = deleteApi === null || deleteApi === void 0 ? void 0 : deleteApi.messages) === null || _a === void 0 ? void 0 : _a.failed) !== null && _b !== void 0 ? _b : (result.msg || __('deleteFailed')));
767
+ !deleteApi.silent &&
768
+ env.notify('error', (_b = (_a = deleteApi === null || deleteApi === void 0 ? void 0 : deleteApi.messages) === null || _a === void 0 ? void 0 : _a.failed) !== null && _b !== void 0 ? _b : (result.msg || __('deleteFailed')));
767
769
  return [2 /*return*/];
768
770
  }
769
771
  _e.label = 7;
@@ -786,7 +788,7 @@ function registerOptionsControl(config) {
786
788
  case 8:
787
789
  e_3 = _e.sent();
788
790
  console.error(e_3);
789
- env.notify('error', e_3.message);
791
+ !deleteApi.silent && env.notify('error', e_3.message);
790
792
  return [3 /*break*/, 9];
791
793
  case 9: return [2 /*return*/];
792
794
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.1
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.1
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.1
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.1
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -7,8 +7,9 @@ import { __extends, __assign, __awaiter, __generator } from 'tslib';
7
7
  import React from 'react';
8
8
  import debounce from 'lodash/debounce';
9
9
  import isEqual from 'lodash/isEqual';
10
+ import { getRendererByName } from '../factory.js';
10
11
  import { ComboStore } from '../store/combo.js';
11
- import { guid, promisify, anyChanged } from '../utils/helper.js';
12
+ import { guid, promisify, changedEffect } from '../utils/helper.js';
12
13
  import { isExpression, FormulaExec, replaceExpression, isNeedFormula } from '../utils/formula.js';
13
14
  import { ScopedContext } from '../Scoped.js';
14
15
  import { FormItemStore } from '../store/formItem.js';
@@ -42,6 +43,8 @@ import 'react-overlays/useRootClose';
42
43
  import '../utils/SimpleMap.js';
43
44
  import 'lodash/mapValues';
44
45
  import 'lodash/camelCase';
46
+ import 'lodash/map';
47
+ import 'lodash/isEmpty';
45
48
  import 'uncontrollable';
46
49
  import '../utils/validations.js';
47
50
  import '../utils/resolveCondition.js';
@@ -54,29 +57,26 @@ function wrapControl(ComposedComponent) {
54
57
  __extends(class_1, _super);
55
58
  function class_1(props) {
56
59
  var _this = this;
57
- var _a;
60
+ var _a, _b;
58
61
  _this = _super.call(this, props) || this;
59
62
  _this.value = undefined;
60
63
  _this.lazyEmitChange = debounce(_this.emitChange.bind(_this), 250, {
61
64
  trailing: true,
62
65
  leading: false
63
66
  });
64
- var _b = _this.props, form = _b.formStore, formItem = _b.formItem, rootStore = _b.rootStore, store = _b.store, onChange = _b.onChange, data = _b.data, inputGroupControl = _b.inputGroupControl, _c = _b.$schema, name = _c.name, id = _c.id, type = _c.type, required = _c.required, validations = _c.validations, validationErrors = _c.validationErrors, unique = _c.unique, value = _c.value, extraName = _c.extraName; _c.multiple; var delimiter = _c.delimiter, valueField = _c.valueField, labelField = _c.labelField, joinValues = _c.joinValues, extractValue = _c.extractValue, selectFirst = _c.selectFirst, autoFill = _c.autoFill, clearValueOnHidden = _c.clearValueOnHidden, validateApi = _c.validateApi, minLength = _c.minLength, maxLength = _c.maxLength, validateOnChange = _c.validateOnChange, label = _c.label;
67
+ var _c = _this.props, form = _c.formStore, formItem = _c.formItem, rootStore = _c.rootStore, store = _c.store, onChange = _c.onChange, data = _c.data, inputGroupControl = _c.inputGroupControl, colIndex = _c.colIndex, rowIndex = _c.rowIndex, _d = _c.$schema, name = _d.name, id = _d.id, type = _d.type, required = _d.required, validations = _d.validations, validationErrors = _d.validationErrors, unique = _d.unique, value = _d.value, extraName = _d.extraName; _d.multiple; var delimiter = _d.delimiter, valueField = _d.valueField, labelField = _d.labelField, joinValues = _d.joinValues, extractValue = _d.extractValue, selectFirst = _d.selectFirst, autoFill = _d.autoFill, clearValueOnHidden = _d.clearValueOnHidden, validateApi = _d.validateApi, minLength = _d.minLength, maxLength = _d.maxLength, validateOnChange = _d.validateOnChange, label = _d.label;
65
68
  _this.getValue = _this.getValue.bind(_this);
66
69
  _this.setValue = _this.setValue.bind(_this);
67
70
  _this.handleChange = _this.handleChange.bind(_this);
68
71
  _this.setPrinstineValue = _this.setPrinstineValue.bind(_this);
69
72
  _this.controlRef = _this.controlRef.bind(_this);
70
73
  _this.handleBlur = _this.handleBlur.bind(_this);
74
+ _this.validate = _this.validate.bind(_this);
75
+ _this.flushChange = _this.flushChange.bind(_this);
71
76
  if (!name) {
72
77
  // 一般情况下这些表单项都是需要 name 的,提示一下
73
78
  if (typeof type === 'string' &&
74
- (type.startsWith('input-') ||
75
- type.endsWith('select') ||
76
- type === 'switch' ||
77
- type === 'textarea' ||
78
- type === 'radios') &&
79
- type !== 'input-group') {
79
+ ((_a = getRendererByName(type)) === null || _a === void 0 ? void 0 : _a.isFormItem)) {
80
80
  console.warn('name is required', _this.props.$schema);
81
81
  }
82
82
  return _this;
@@ -87,21 +87,24 @@ function wrapControl(ComposedComponent) {
87
87
  path: _this.props.$path,
88
88
  storeType: FormItemStore.name,
89
89
  parentId: store === null || store === void 0 ? void 0 : store.id,
90
- name: name
90
+ name: name,
91
+ colIndex: colIndex !== undefined ? colIndex : undefined,
92
+ rowIndex: rowIndex !== undefined ? rowIndex : undefined
91
93
  });
92
94
  _this.model = model;
93
95
  // @issue 打算干掉这个
94
96
  formItem === null || formItem === void 0 ? void 0 : formItem.addSubFormItem(model);
95
- model.config(__assign(__assign({}, pick(__assign(__assign({}, ComposedComponent.defaultProps), _this.props.$schema), ['multiple'])), { id: id, type: type, 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 }));
97
+ 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 }));
96
98
  // issue 这个逻辑应该在 combo 里面自己实现。
97
99
  if (_this.model.unique &&
98
- ((_a = form === null || form === void 0 ? void 0 : form.parentStore) === null || _a === void 0 ? void 0 : _a.storeType) === ComboStore.name) {
100
+ ((_b = form === null || form === void 0 ? void 0 : form.parentStore) === null || _b === void 0 ? void 0 : _b.storeType) === ComboStore.name) {
99
101
  var combo = form.parentStore;
100
102
  combo.bindUniuqueItem(model);
101
103
  }
102
104
  if (propValue !== undefined && propValue !== null) {
103
105
  // 同步 value: 优先使用 props 中的 value
104
106
  model.changeTmpValue(propValue, 'controlled');
107
+ model.setIsControlled(true);
105
108
  }
106
109
  else {
107
110
  var isExp = isExpression(value);
@@ -167,7 +170,7 @@ function wrapControl(ComposedComponent) {
167
170
  addHook === null || addHook === void 0 ? void 0 : addHook(this.hook3, 'flush');
168
171
  var formItem = this.model;
169
172
  if (formItem && validate) {
170
- var finalValidate_1 = promisify(validate.bind(formItem));
173
+ var finalValidate_1 = promisify(validate.bind(this.control));
171
174
  this.hook2 = function () {
172
175
  formItem.clearError('control:valdiate');
173
176
  return finalValidate_1(_this.props.data, _this.getValue(), name).then(function (ret) {
@@ -182,59 +185,44 @@ function wrapControl(ComposedComponent) {
182
185
  class_1.prototype.componentDidUpdate = function (prevProps) {
183
186
  var _a, _b, _c;
184
187
  var props = this.props;
185
- props.formStore;
186
188
  var model = this.model;
187
- if (model &&
188
- anyChanged([
189
- 'id',
190
- 'validations',
191
- 'validationErrors',
192
- 'value',
193
- 'defaultValue',
194
- 'required',
195
- 'unique',
196
- 'multiple',
197
- 'delimiter',
198
- 'valueField',
199
- 'labelField',
200
- 'joinValues',
201
- 'extractValue',
202
- 'selectFirst',
203
- 'autoFill',
204
- 'clearValueOnHidden',
205
- 'validateApi',
206
- 'minLength',
207
- 'maxLength',
208
- 'label',
209
- 'extraName'
210
- ], prevProps.$schema, props.$schema)) {
189
+ if (!model) {
190
+ return;
191
+ }
192
+ changedEffect([
193
+ 'id',
194
+ 'validations',
195
+ 'validationErrors',
196
+ 'value',
197
+ 'defaultValue',
198
+ 'required',
199
+ 'unique',
200
+ 'multiple',
201
+ 'delimiter',
202
+ 'valueField',
203
+ 'labelField',
204
+ 'joinValues',
205
+ 'extractValue',
206
+ 'selectFirst',
207
+ 'autoFill',
208
+ 'clearValueOnHidden',
209
+ 'validateApi',
210
+ 'minLength',
211
+ 'maxLength',
212
+ 'label',
213
+ 'extraName'
214
+ ], prevProps.$schema, props.$schema, function (changes) {
215
+ model.config(__assign(__assign({}, changes), {
216
+ // todo 优化后面两个
217
+ isValueSchemaExp: isExpression(props.$schema.value), inputGroupControl: props === null || props === void 0 ? void 0 : props.inputGroupControl }));
218
+ });
219
+ if (props.required !== prevProps.required) {
211
220
  model.config({
212
- required: props.$schema.required,
213
- id: props.$schema.id,
214
- unique: props.$schema.unique,
215
- value: props.$schema.value,
216
- isValueSchemaExp: isExpression(props.$schema.value),
217
- rules: props.$schema.validations,
218
- multiple: props.$schema.multiple,
219
- delimiter: props.$schema.delimiter,
220
- valueField: props.$schema.valueField,
221
- labelField: props.$schema.labelField,
222
- joinValues: props.$schema.joinValues,
223
- extractValue: props.$schema.extractValue,
224
- messages: props.$schema.validationErrors,
225
- selectFirst: props.$schema.selectFirst,
226
- autoFill: props.$schema.autoFill,
227
- clearValueOnHidden: props.$schema.clearValueOnHidden,
228
- validateApi: props.$schema.validateApi,
229
- minLength: props.$schema.minLength,
230
- maxLength: props.$schema.maxLength,
231
- label: props.$schema.label,
232
- inputGroupControl: props === null || props === void 0 ? void 0 : props.inputGroupControl,
233
- extraName: props.$schema.extraName
221
+ required: props.required
234
222
  });
235
223
  }
236
224
  // 此处需要同时考虑 defaultValue 和 value
237
- if (model && typeof props.value !== 'undefined') {
225
+ if (typeof props.value !== 'undefined') {
238
226
  // 渲染器中的 value 优先
239
227
  if (!isEqual(props.value, prevProps.value) &&
240
228
  !isEqual(props.value, model.tmpValue)) {
@@ -242,8 +230,7 @@ function wrapControl(ComposedComponent) {
242
230
  model.changeTmpValue(props.value, 'controlled');
243
231
  }
244
232
  }
245
- else if (model &&
246
- typeof props.defaultValue !== 'undefined' &&
233
+ else if (typeof props.defaultValue !== 'undefined' &&
247
234
  isExpression(props.defaultValue) &&
248
235
  (!isEqual(props.defaultValue, prevProps.defaultValue) ||
249
236
  (props.data !== prevProps.data &&
@@ -264,7 +251,7 @@ function wrapControl(ComposedComponent) {
264
251
  }
265
252
  }
266
253
  }
267
- else if (model) {
254
+ else {
268
255
  // value 非公式表达式时,name 值优先,若 defaultValue 主动变动时,则使用 defaultValue
269
256
  if (
270
257
  // 然后才是查看关联的 name 属性值是否变化
@@ -379,7 +366,7 @@ function wrapControl(ComposedComponent) {
379
366
  };
380
367
  class_1.prototype.validate = function () {
381
368
  return __awaiter(this, void 0, void 0, function () {
382
- var _a, form, data, formItemDispatchEvent, result, combo, group, validPromises;
369
+ var _a, form, data, formItemDispatchEvent, result, combo, group, validPromises, valid;
383
370
  return __generator(this, function (_b) {
384
371
  switch (_b.label) {
385
372
  case 0:
@@ -403,19 +390,16 @@ function wrapControl(ComposedComponent) {
403
390
  result = [_b.sent()];
404
391
  _b.label = 4;
405
392
  case 4:
406
- if (result && result.length) {
407
- if (result.indexOf(false) > -1) {
408
- formItemDispatchEvent('formItemValidateError', data);
409
- }
410
- else {
411
- formItemDispatchEvent('formItemValidateSucc', data);
412
- }
413
- }
414
- return [2 /*return*/];
393
+ valid = !result.some(function (item) { return item === false; });
394
+ formItemDispatchEvent === null || formItemDispatchEvent === void 0 ? void 0 : formItemDispatchEvent(valid ? 'formItemValidateSucc' : 'formItemValidateError', data);
395
+ return [2 /*return*/, valid];
415
396
  }
416
397
  });
417
398
  });
418
399
  };
400
+ class_1.prototype.flushChange = function () {
401
+ this.lazyEmitChange.flush();
402
+ };
419
403
  class_1.prototype.handleChange = function (value, submitOnChange, changeImmediately) {
420
404
  if (submitOnChange === void 0) { submitOnChange = this.props.$schema.submitOnChange; }
421
405
  if (changeImmediately === void 0) { changeImmediately = false; }
@@ -435,7 +419,7 @@ function wrapControl(ComposedComponent) {
435
419
  }
436
420
  if (pipeOut) {
437
421
  var oldValue = this.model.value;
438
- value = callStrFunction(pipeOut, ['value', 'oldValue', 'data'], value, oldValue, data);
422
+ value = callStrFunction.call(this, pipeOut, ['value', 'oldValue', 'data'], value, oldValue, data);
439
423
  }
440
424
  this.model.changeTmpValue(value, 'input');
441
425
  if (changeImmediately || conrolChangeImmediately || !formInited) {
@@ -507,7 +491,7 @@ function wrapControl(ComposedComponent) {
507
491
  var model = this.model;
508
492
  var _a = this.props; _a.formStore; var name = _a.name, pipeOut = _a.$schema.pipeOut, onChange = _a.onChange, oldValue = _a.value, data = _a.data;
509
493
  if (pipeOut) {
510
- value = callStrFunction(pipeOut, ['value', 'oldValue', 'data'], value, oldValue, data);
494
+ value = callStrFunction.call(this, pipeOut, ['value', 'oldValue', 'data'], value, oldValue, data);
511
495
  }
512
496
  if (model.extraName) {
513
497
  var values = model.splitExtraValue(value);
@@ -522,7 +506,7 @@ function wrapControl(ComposedComponent) {
522
506
  var _a = this.props, data = _a.formStore, control = _a.$schema;
523
507
  var value = this.model ? this.model.tmpValue : control.value;
524
508
  if (control.pipeIn) {
525
- value = callStrFunction(control.pipeIn, ['value', 'data'], value, data);
509
+ value = callStrFunction.call(this, control.pipeIn, ['value', 'data'], value, data);
526
510
  }
527
511
  return value;
528
512
  };
@@ -551,7 +535,7 @@ function wrapControl(ComposedComponent) {
551
535
  var injectedProps = {
552
536
  defaultSize: controlWidth,
553
537
  disabled: disabled !== null && disabled !== void 0 ? disabled : control.disabled,
554
- static: (_a = control.static) !== null && _a !== void 0 ? _a : defaultStatic,
538
+ static: (_b = (_a = this.props.static) !== null && _a !== void 0 ? _a : control.static) !== null && _b !== void 0 ? _b : defaultStatic,
555
539
  formItem: this.model,
556
540
  formMode: control.mode || formMode,
557
541
  ref: this.controlRef,
@@ -566,13 +550,19 @@ function wrapControl(ComposedComponent) {
566
550
  getValue: this.getValue,
567
551
  prinstine: model ? model.prinstine : undefined,
568
552
  setPrinstineValue: this.setPrinstineValue,
553
+ onValidate: this.validate,
554
+ onFlushChange: this.flushChange
569
555
  // !没了这个, tree 里的 options 渲染会出问题
570
- _filteredOptions: (_b = this.model) === null || _b === void 0 ? void 0 : _b.filteredOptions
556
+ // todo 理论上不应该影响,待确认
557
+ // _filteredOptions: this.model?.filteredOptions
571
558
  };
572
559
  return (React.createElement(ComposedComponent, __assign({}, this.props, injectedProps)));
573
560
  };
574
561
  return class_1;
575
562
  }(React.Component)),
563
+ _a.displayName = "WrapControl".concat(ComposedComponent.displayName || ComposedComponent.name
564
+ ? "(".concat(ComposedComponent.displayName || ComposedComponent.name, ")")
565
+ : ''),
576
566
  _a.contextType = ScopedContext,
577
567
  _a.defaultProps = {},
578
568
  _a))), ComposedComponent);
package/esm/store/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.1
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -36,6 +36,8 @@ import 'react-overlays/useRootClose';
36
36
  import '../utils/SimpleMap.js';
37
37
  import 'lodash/mapValues';
38
38
  import 'lodash/camelCase';
39
+ import 'lodash/map';
40
+ import 'lodash/isEmpty';
39
41
  import 'uncontrollable';
40
42
  import 'hoist-non-react-statics';
41
43
  import '../utils/validations.js';