amis-core 3.4.0 → 3.4.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 (285) 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 +5 -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 +5 -6
  27. package/esm/components/CustomStyle.js +47 -6
  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.js +5 -5
  39. package/esm/locale.d.ts +1 -1
  40. package/esm/locale.js +3 -3
  41. package/esm/polyfills.js +1 -1
  42. package/esm/renderers/Form.d.ts +1 -1
  43. package/esm/renderers/Form.js +10 -8
  44. package/esm/renderers/Item.d.ts +24 -56
  45. package/esm/renderers/Item.js +25 -31
  46. package/esm/renderers/Options.js +14 -12
  47. package/esm/renderers/Placeholder.js +1 -1
  48. package/esm/renderers/builtin.js +1 -1
  49. package/esm/renderers/register.js +1 -1
  50. package/esm/renderers/wrapControl.js +70 -80
  51. package/esm/store/app.js +3 -1
  52. package/esm/store/combo.d.ts +384 -0
  53. package/esm/store/combo.js +1 -1
  54. package/esm/store/crud.js +31 -25
  55. package/esm/store/form.d.ts +160 -0
  56. package/esm/store/form.js +15 -13
  57. package/esm/store/formItem.d.ts +4 -0
  58. package/esm/store/formItem.js +42 -26
  59. package/esm/store/iRenderer.js +3 -1
  60. package/esm/store/index.js +1 -1
  61. package/esm/store/list.js +1 -1
  62. package/esm/store/manager.js +1 -1
  63. package/esm/store/modal.js +1 -1
  64. package/esm/store/node.js +1 -1
  65. package/esm/store/pagination.js +1 -1
  66. package/esm/store/root.d.ts +1 -1
  67. package/esm/store/root.js +12 -5
  68. package/esm/store/service.js +38 -33
  69. package/esm/store/status.js +1 -1
  70. package/esm/store/table.d.ts +760 -21
  71. package/esm/store/table.js +157 -57
  72. package/esm/store/table2.js +11 -8
  73. package/esm/theme.d.ts +18 -31
  74. package/esm/theme.js +1 -1
  75. package/esm/utils/Animation.js +1 -1
  76. package/esm/utils/ColorScale.js +1 -1
  77. package/esm/utils/DataSchema.js +1 -1
  78. package/esm/utils/DataScope.js +1 -1
  79. package/esm/utils/RootClose.js +1 -1
  80. package/esm/utils/SimpleMap.js +1 -1
  81. package/esm/utils/api.d.ts +3 -3
  82. package/esm/utils/api.js +3 -2
  83. package/esm/utils/arraySlice.js +1 -1
  84. package/esm/utils/attachmentAdpator.js +1 -1
  85. package/esm/utils/autobind.js +1 -1
  86. package/esm/utils/columnsSplit.js +1 -1
  87. package/esm/utils/dataMapping.js +1 -1
  88. package/esm/utils/date.js +1 -1
  89. package/esm/utils/debug.d.ts +1 -0
  90. package/esm/utils/debug.js +24 -2
  91. package/esm/utils/decodeEntity.js +1 -1
  92. package/esm/utils/dom.js +1 -1
  93. package/esm/utils/errors.js +1 -1
  94. package/esm/utils/escapeHtml.js +1 -1
  95. package/esm/utils/filter-schema.js +1 -1
  96. package/esm/utils/filter.js +1 -1
  97. package/esm/utils/formatDuration.js +1 -1
  98. package/esm/utils/formula.js +1 -1
  99. package/esm/utils/getVariable.js +1 -1
  100. package/esm/utils/grammar.js +1 -1
  101. package/esm/utils/handleAction.js +1 -1
  102. package/esm/utils/helper.d.ts +13 -1
  103. package/esm/utils/helper.js +99 -5
  104. package/esm/utils/highlight.js +1 -1
  105. package/esm/utils/icon.js +1 -1
  106. package/esm/utils/image.js +1 -1
  107. package/esm/utils/isPureVariable.js +1 -1
  108. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  109. package/esm/utils/keyToPath.d.ts +1 -1
  110. package/esm/utils/keyToPath.js +2 -1
  111. package/esm/utils/makeSorter.js +1 -1
  112. package/esm/utils/math.js +1 -1
  113. package/esm/utils/memoryParse.js +1 -1
  114. package/esm/utils/normalizeLink.js +1 -1
  115. package/esm/utils/normalizeOptions.js +1 -1
  116. package/esm/utils/object.js +1 -1
  117. package/esm/utils/offset.js +1 -1
  118. package/esm/utils/offsetParent.js +1 -1
  119. package/esm/utils/optionValueCompare.js +1 -1
  120. package/esm/utils/position.js +1 -1
  121. package/esm/utils/prettyBytes.js +1 -1
  122. package/esm/utils/renderer-event.js +2 -2
  123. package/esm/utils/replaceText.js +1 -1
  124. package/esm/utils/resize-sensor.d.ts +3 -1
  125. package/esm/utils/resize-sensor.js +34 -22
  126. package/esm/utils/resolveCondition.js +1 -1
  127. package/esm/utils/resolveVariable.js +1 -1
  128. package/esm/utils/resolveVariableAndFilter.js +1 -1
  129. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  130. package/esm/utils/scrollPosition.js +1 -1
  131. package/esm/utils/string2regExp.js +1 -1
  132. package/esm/utils/stripNumber.js +1 -1
  133. package/esm/utils/style-helper.d.ts +22 -14
  134. package/esm/utils/style-helper.js +181 -120
  135. package/esm/utils/style.js +1 -1
  136. package/esm/utils/toNumber.js +1 -1
  137. package/esm/utils/tokenize.js +1 -1
  138. package/esm/utils/tpl-builtin.js +1 -1
  139. package/esm/utils/tpl-lodash.js +1 -1
  140. package/esm/utils/tpl.js +1 -1
  141. package/esm/utils/uncontrollable.js +1 -1
  142. package/esm/utils/validations.js +1 -1
  143. package/lib/Root.js +1 -1
  144. package/lib/RootRenderer.js +8 -8
  145. package/lib/SchemaRenderer.js +16 -12
  146. package/lib/Scoped.js +3 -1
  147. package/lib/StatusScoped.js +1 -1
  148. package/lib/WithRootStore.js +1 -1
  149. package/lib/WithStore.js +9 -8
  150. package/lib/actions/Action.js +1 -1
  151. package/lib/actions/AjaxAction.js +2 -2
  152. package/lib/actions/BreakAction.js +1 -1
  153. package/lib/actions/BroadcastAction.js +1 -1
  154. package/lib/actions/CmptAction.js +1 -1
  155. package/lib/actions/ContinueAction.js +1 -1
  156. package/lib/actions/CopyAction.js +1 -1
  157. package/lib/actions/CustomAction.js +3 -1
  158. package/lib/actions/DialogAction.js +1 -1
  159. package/lib/actions/DrawerAction.js +5 -1
  160. package/lib/actions/EmailAction.js +1 -1
  161. package/lib/actions/LinkAction.js +1 -1
  162. package/lib/actions/LoopAction.js +1 -1
  163. package/lib/actions/PageAction.js +1 -1
  164. package/lib/actions/ParallelAction.js +1 -1
  165. package/lib/actions/StatusAction.js +1 -1
  166. package/lib/actions/SwitchAction.js +1 -1
  167. package/lib/actions/ToastAction.js +1 -1
  168. package/lib/components/CustomStyle.d.ts +5 -6
  169. package/lib/components/CustomStyle.js +46 -4
  170. package/lib/components/LazyComponent.d.ts +1 -2
  171. package/lib/components/LazyComponent.js +12 -9
  172. package/lib/components/Overlay.js +3 -1
  173. package/lib/components/PopOver.d.ts +12 -12
  174. package/lib/components/PopOver.js +3 -1
  175. package/lib/env.d.ts +2 -2
  176. package/lib/env.js +1 -1
  177. package/lib/envOverwrite.js +1 -1
  178. package/lib/factory.d.ts +7 -7
  179. package/lib/factory.js +1 -1
  180. package/lib/index.js +11 -3
  181. package/lib/locale.d.ts +1 -1
  182. package/lib/locale.js +3 -3
  183. package/lib/polyfills.js +1 -1
  184. package/lib/renderers/Form.d.ts +1 -1
  185. package/lib/renderers/Form.js +10 -8
  186. package/lib/renderers/Item.d.ts +24 -56
  187. package/lib/renderers/Item.js +26 -31
  188. package/lib/renderers/Options.js +14 -12
  189. package/lib/renderers/Placeholder.js +1 -1
  190. package/lib/renderers/builtin.js +1 -1
  191. package/lib/renderers/register.js +1 -1
  192. package/lib/renderers/wrapControl.js +70 -79
  193. package/lib/store/app.js +3 -1
  194. package/lib/store/combo.d.ts +384 -0
  195. package/lib/store/combo.js +1 -1
  196. package/lib/store/crud.js +31 -25
  197. package/lib/store/form.d.ts +160 -0
  198. package/lib/store/form.js +15 -13
  199. package/lib/store/formItem.d.ts +4 -0
  200. package/lib/store/formItem.js +41 -25
  201. package/lib/store/iRenderer.js +3 -1
  202. package/lib/store/index.js +1 -1
  203. package/lib/store/list.js +1 -1
  204. package/lib/store/manager.js +1 -1
  205. package/lib/store/modal.js +1 -1
  206. package/lib/store/node.js +1 -1
  207. package/lib/store/pagination.js +1 -1
  208. package/lib/store/root.d.ts +1 -1
  209. package/lib/store/root.js +11 -4
  210. package/lib/store/service.js +38 -33
  211. package/lib/store/status.js +1 -1
  212. package/lib/store/table.d.ts +760 -21
  213. package/lib/store/table.js +157 -57
  214. package/lib/store/table2.js +11 -8
  215. package/lib/theme.d.ts +18 -31
  216. package/lib/theme.js +1 -1
  217. package/lib/utils/Animation.js +1 -1
  218. package/lib/utils/ColorScale.js +1 -1
  219. package/lib/utils/DataSchema.js +1 -1
  220. package/lib/utils/DataScope.js +1 -1
  221. package/lib/utils/RootClose.js +1 -1
  222. package/lib/utils/SimpleMap.js +1 -1
  223. package/lib/utils/api.d.ts +3 -3
  224. package/lib/utils/api.js +3 -2
  225. package/lib/utils/arraySlice.js +1 -1
  226. package/lib/utils/attachmentAdpator.js +1 -1
  227. package/lib/utils/autobind.js +1 -1
  228. package/lib/utils/columnsSplit.js +1 -1
  229. package/lib/utils/dataMapping.js +1 -1
  230. package/lib/utils/date.js +1 -1
  231. package/lib/utils/debug.d.ts +1 -0
  232. package/lib/utils/debug.js +24 -1
  233. package/lib/utils/decodeEntity.js +1 -1
  234. package/lib/utils/dom.js +1 -1
  235. package/lib/utils/errors.js +1 -1
  236. package/lib/utils/escapeHtml.js +1 -1
  237. package/lib/utils/filter-schema.js +1 -1
  238. package/lib/utils/filter.js +1 -1
  239. package/lib/utils/formatDuration.js +1 -1
  240. package/lib/utils/formula.js +1 -1
  241. package/lib/utils/getVariable.js +1 -1
  242. package/lib/utils/grammar.js +1 -1
  243. package/lib/utils/handleAction.js +1 -1
  244. package/lib/utils/helper.d.ts +13 -1
  245. package/lib/utils/helper.js +101 -4
  246. package/lib/utils/highlight.js +1 -1
  247. package/lib/utils/icon.js +1 -1
  248. package/lib/utils/image.js +1 -1
  249. package/lib/utils/isPureVariable.js +1 -1
  250. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  251. package/lib/utils/keyToPath.d.ts +1 -1
  252. package/lib/utils/keyToPath.js +2 -1
  253. package/lib/utils/makeSorter.js +1 -1
  254. package/lib/utils/math.js +1 -1
  255. package/lib/utils/memoryParse.js +1 -1
  256. package/lib/utils/normalizeLink.js +1 -1
  257. package/lib/utils/normalizeOptions.js +1 -1
  258. package/lib/utils/object.js +1 -1
  259. package/lib/utils/offset.js +1 -1
  260. package/lib/utils/offsetParent.js +1 -1
  261. package/lib/utils/optionValueCompare.js +1 -1
  262. package/lib/utils/position.js +1 -1
  263. package/lib/utils/prettyBytes.js +1 -1
  264. package/lib/utils/renderer-event.js +2 -2
  265. package/lib/utils/replaceText.js +1 -1
  266. package/lib/utils/resize-sensor.d.ts +3 -1
  267. package/lib/utils/resize-sensor.js +34 -22
  268. package/lib/utils/resolveCondition.js +1 -1
  269. package/lib/utils/resolveVariable.js +1 -1
  270. package/lib/utils/resolveVariableAndFilter.js +1 -1
  271. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  272. package/lib/utils/scrollPosition.js +1 -1
  273. package/lib/utils/string2regExp.js +1 -1
  274. package/lib/utils/stripNumber.js +1 -1
  275. package/lib/utils/style-helper.d.ts +22 -14
  276. package/lib/utils/style-helper.js +188 -120
  277. package/lib/utils/style.js +1 -1
  278. package/lib/utils/toNumber.js +1 -1
  279. package/lib/utils/tokenize.js +1 -1
  280. package/lib/utils/tpl-builtin.js +1 -1
  281. package/lib/utils/tpl-lodash.js +1 -1
  282. package/lib/utils/tpl.js +1 -1
  283. package/lib/utils/uncontrollable.js +1 -1
  284. package/lib/utils/validations.js +1 -1
  285. package/package.json +5 -5
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.2
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -32,7 +32,7 @@ require('../utils/debug.js');
32
32
  require('../utils/dom.js');
33
33
  require('../utils/errors.js');
34
34
  require('lodash/isPlainObject');
35
- require('classnames');
35
+ var cx = require('classnames');
36
36
  require('../utils/filter.js');
37
37
  require('lodash/isObject');
38
38
  require('lodash/isString');
@@ -49,6 +49,7 @@ require('react-overlays/useRootClose');
49
49
  require('../utils/SimpleMap.js');
50
50
  require('lodash/mapValues');
51
51
  require('lodash/camelCase');
52
+ var styleHelper = require('../utils/style-helper.js');
52
53
  require('uncontrollable');
53
54
  require('../utils/validations.js');
54
55
  require('../utils/resolveCondition.js');
@@ -62,15 +63,16 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
62
63
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
63
64
  var hoistNonReactStatic__default = /*#__PURE__*/_interopDefaultLegacy(hoistNonReactStatic);
64
65
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
66
+ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
65
67
 
66
68
  var __react_jsx__ = require('react');
67
69
  var _J$X_ = (__react_jsx__["default"] || __react_jsx__).createElement;
68
70
  (__react_jsx__["default"] || __react_jsx__).Fragment;
69
71
  var getItemLabelClassName = function (props) {
70
- var staticLabelClassName = props.staticLabelClassName, labelClassName = props.labelClassName;
72
+ var staticLabelClassName = props.staticLabelClassName, labelClassName = props.labelClassName, id = props.id, themeCss = props.themeCss;
71
73
  return props.static && staticLabelClassName
72
74
  ? staticLabelClassName
73
- : labelClassName;
75
+ : cx__default["default"](labelClassName, styleHelper.setThemeClassName('labelClassName', id, themeCss, 'item'));
74
76
  };
75
77
  var getItemInputClassName = function (props) {
76
78
  var staticInputClassName = props.staticInputClassName, inputClassName = props.inputClassName;
@@ -362,12 +364,12 @@ var FormItemWrap = /** @class */ (function (_super) {
362
364
  typeof controlSize === 'string' &&
363
365
  !!controlSize &&
364
366
  controlSize !== 'full',
365
- _a), model === null || model === void 0 ? void 0 : model.errClassNames, getItemInputClassName(this.props)) }));
367
+ _a), model === null || model === void 0 ? void 0 : model.errClassNames, styleHelper.setThemeClassName('wrapperCustomStyle', rest.id, rest.wrapperCustomStyle, 'item'), getItemInputClassName(this.props)) }));
366
368
  }
367
369
  return null;
368
370
  };
369
371
  FormItemWrap.prototype.render = function () {
370
- var _a = this.props, formMode = _a.formMode, inputOnly = _a.inputOnly, wrap = _a.wrap, render = _a.render, model = _a.formItem, css = _a.css, themeCss = _a.themeCss, id = _a.id, labelClassName = _a.labelClassName, descriptionClassName = _a.descriptionClassName, env = _a.env;
372
+ var _a = this.props, formMode = _a.formMode, inputOnly = _a.inputOnly, wrap = _a.wrap, render = _a.render, model = _a.formItem, css = _a.css, themeCss = _a.themeCss, id = _a.id, wrapperCustomStyle = _a.wrapperCustomStyle, env = _a.env;
371
373
  var mode = this.props.mode || formMode;
372
374
  if (wrap === false || inputOnly) {
373
375
  return this.renderControl();
@@ -389,21 +391,14 @@ var FormItemWrap = /** @class */ (function (_super) {
389
391
  themeCss: themeCss || css,
390
392
  classNames: [
391
393
  {
392
- key: 'labelClassName',
393
- value: labelClassName
394
- }
395
- ],
396
- id: id + '-label'
397
- }, env: env }),
398
- _J$X_(CustomStyle["default"], { config: {
399
- themeCss: themeCss || css,
400
- classNames: [
394
+ key: 'labelClassName'
395
+ },
401
396
  {
402
- key: 'descriptionClassName',
403
- value: descriptionClassName
397
+ key: 'descriptionClassName'
404
398
  }
405
399
  ],
406
- id: id + '-description'
400
+ wrapperCustomStyle: wrapperCustomStyle,
401
+ id: id && id + '-item'
407
402
  }, env: env })));
408
403
  };
409
404
  /**
@@ -412,7 +407,7 @@ var FormItemWrap = /** @class */ (function (_super) {
412
407
  FormItemWrap.layoutRenderers = {
413
408
  horizontal: function (props, renderControl) {
414
409
  var _a, _b, _c;
415
- var className = props.className, style = props.style, cx = props.classnames, description = props.description, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, desc = props.desc, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint, data = props.data, showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName;
410
+ var className = props.className, style = props.style, cx = props.classnames, description = props.description, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, desc = props.desc, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint, data = props.data, showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, id = props.id, wrapperCustomStyle = props.wrapperCustomStyle, themeCss = props.themeCss;
416
411
  // 强制不渲染 label 的话
417
412
  if (renderLabel === false) {
418
413
  label = label === false ? false : '';
@@ -428,7 +423,7 @@ var FormItemWrap = /** @class */ (function (_super) {
428
423
  },
429
424
  _a["is-error"] = model && !model.valid,
430
425
  _a["is-required"] = required,
431
- _a), model === null || model === void 0 ? void 0 : model.errClassNames), style: style },
426
+ _a), model === null || model === void 0 ? void 0 : model.errClassNames, styleHelper.setThemeClassName('wrapperCustomStyle', id, wrapperCustomStyle, 'item')), style: style },
432
427
  label !== false ? (_J$X_("label", { className: cx("Form-label", (_b = {},
433
428
  _b["Form-itemColumn--".concat(typeof horizontal.leftFixed === 'string'
434
429
  ? horizontal.leftFixed
@@ -483,19 +478,19 @@ var FormItemWrap = /** @class */ (function (_super) {
483
478
  Array.isArray(model.errors) ? (_J$X_("ul", { className: cx("Form-feedback") }, model.errors.map(function (msg, key) { return (_J$X_("li", { key: key }, msg)); }))) : null,
484
479
  renderDescription !== false && description
485
480
  ? render('description', description, {
486
- className: cx("Form-description", descriptionClassName)
481
+ className: cx("Form-description", descriptionClassName, styleHelper.setThemeClassName('descriptionClassName', id, themeCss, 'item'))
487
482
  })
488
483
  : null)));
489
484
  },
490
485
  normal: function (props, renderControl) {
491
486
  var _a;
492
- var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint, data = props.data, showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName;
487
+ var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint, data = props.data, showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, themeCss = props.themeCss, wrapperCustomStyle = props.wrapperCustomStyle, id = props.id;
493
488
  description = description || desc;
494
489
  return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--normal", isStatic && staticClassName ? staticClassName : className, (_a = {
495
490
  'is-error': model && !model.valid
496
491
  },
497
492
  _a["is-required"] = required,
498
- _a), model === null || model === void 0 ? void 0 : model.errClassNames), style: style },
493
+ _a), model === null || model === void 0 ? void 0 : model.errClassNames, styleHelper.setThemeClassName('wrapperCustomStyle', id, wrapperCustomStyle, 'item')), style: style },
499
494
  label && renderLabel !== false ? (_J$X_("label", { className: cx("Form-label", getItemLabelClassName(props)) },
500
495
  _J$X_("span", null,
501
496
  label
@@ -540,7 +535,7 @@ var FormItemWrap = /** @class */ (function (_super) {
540
535
  Array.isArray(model.errors) ? (_J$X_("ul", { className: cx("Form-feedback") }, model.errors.map(function (msg, key) { return (_J$X_("li", { key: key }, msg)); }))) : null,
541
536
  renderDescription !== false && description
542
537
  ? render('description', description, {
543
- className: cx("Form-description", descriptionClassName)
538
+ className: cx("Form-description", descriptionClassName, styleHelper.setThemeClassName('descriptionClassName', id, themeCss, 'item'))
544
539
  })
545
540
  : null)) : (_J$X_(React__default["default"].Fragment, null,
546
541
  renderControl(),
@@ -570,20 +565,20 @@ var FormItemWrap = /** @class */ (function (_super) {
570
565
  Array.isArray(model.errors) ? (_J$X_("ul", { className: cx("Form-feedback") }, model.errors.map(function (msg, key) { return (_J$X_("li", { key: key }, msg)); }))) : null,
571
566
  renderDescription !== false && description
572
567
  ? render('description', description, {
573
- className: cx("Form-description", descriptionClassName)
568
+ className: cx("Form-description", descriptionClassName, styleHelper.setThemeClassName('descriptionClassName', id, themeCss, 'item'))
574
569
  })
575
570
  : null))));
576
571
  },
577
572
  inline: function (props, renderControl) {
578
573
  var _a;
579
- var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, remark = props.remark, labelRemark = props.labelRemark, env = props.env, hint = props.hint, renderLabel = props.renderLabel, renderDescription = props.renderDescription, data = props.data, showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName;
574
+ var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, remark = props.remark, labelRemark = props.labelRemark, env = props.env, hint = props.hint, renderLabel = props.renderLabel, renderDescription = props.renderDescription, data = props.data, showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, themeCss = props.themeCss, wrapperCustomStyle = props.wrapperCustomStyle, id = props.id;
580
575
  var labelWidth = props.labelWidth || props.formLabelWidth;
581
576
  description = description || desc;
582
577
  return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--inline", isStatic && staticClassName ? staticClassName : className, (_a = {
583
578
  'is-error': model && !model.valid
584
579
  },
585
580
  _a["is-required"] = required,
586
- _a), model === null || model === void 0 ? void 0 : model.errClassNames), style: style },
581
+ _a), model === null || model === void 0 ? void 0 : model.errClassNames, styleHelper.setThemeClassName('wrapperCustomStyle', id, wrapperCustomStyle, 'item')), style: style },
587
582
  label && renderLabel !== false ? (_J$X_("label", { className: cx("Form-label", getItemLabelClassName(props)), style: labelWidth != null ? { width: labelWidth } : undefined },
588
583
  _J$X_("span", null,
589
584
  label
@@ -628,20 +623,20 @@ var FormItemWrap = /** @class */ (function (_super) {
628
623
  Array.isArray(model.errors) ? (_J$X_("ul", { className: cx("Form-feedback") }, model.errors.map(function (msg, key) { return (_J$X_("li", { key: key }, msg)); }))) : null,
629
624
  renderDescription !== false && description
630
625
  ? render('description', description, {
631
- className: cx("Form-description", descriptionClassName)
626
+ className: cx("Form-description", descriptionClassName, styleHelper.setThemeClassName('descriptionClassName', id, themeCss, 'item'))
632
627
  })
633
628
  : null)));
634
629
  },
635
630
  row: function (props, renderControl) {
636
631
  var _a;
637
- var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint, data = props.data, showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName;
632
+ var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint, data = props.data, showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, wrapperCustomStyle = props.wrapperCustomStyle, themeCss = props.themeCss, id = props.id;
638
633
  var labelWidth = props.labelWidth || props.formLabelWidth;
639
634
  description = description || desc;
640
635
  return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--row", isStatic && staticClassName ? staticClassName : className, (_a = {
641
636
  'is-error': model && !model.valid
642
637
  },
643
638
  _a["is-required"] = required,
644
- _a), model === null || model === void 0 ? void 0 : model.errClassNames), style: style },
639
+ _a), model === null || model === void 0 ? void 0 : model.errClassNames, styleHelper.setThemeClassName('wrapperCustomStyle', id, wrapperCustomStyle, 'item')), style: style },
645
640
  _J$X_("div", { className: cx('Form-rowInner') },
646
641
  label && renderLabel !== false ? (_J$X_("label", { className: cx("Form-label", getItemLabelClassName(props)), style: labelWidth != null ? { width: labelWidth } : undefined },
647
642
  _J$X_("span", null,
@@ -683,7 +678,7 @@ var FormItemWrap = /** @class */ (function (_super) {
683
678
  Array.isArray(model.errors) ? (_J$X_("ul", { className: cx('Form-feedback') }, model.errors.map(function (msg, key) { return (_J$X_("li", { key: key }, msg)); }))) : null,
684
679
  description && renderDescription !== false
685
680
  ? render('description', description, {
686
- className: cx("Form-description", descriptionClassName)
681
+ className: cx("Form-description", descriptionClassName, styleHelper.setThemeClassName('descriptionClassName', id, themeCss, 'item'))
687
682
  })
688
683
  : null));
689
684
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.2
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -50,6 +50,8 @@ require('react-dom');
50
50
  require('../utils/SimpleMap.js');
51
51
  require('lodash/mapValues');
52
52
  require('lodash/camelCase');
53
+ require('lodash/map');
54
+ require('lodash/isEmpty');
53
55
  require('uncontrollable');
54
56
  require('hoist-non-react-statics');
55
57
  require('../utils/validations.js');
@@ -139,7 +141,7 @@ function registerOptionsControl(config) {
139
141
  this.normalizeValue();
140
142
  };
141
143
  FormOptionsItem.prototype.shouldComponentUpdate = function (nextProps) {
142
- var _a, _b;
144
+ var _a;
143
145
  if (config.strictMode === false || nextProps.strictMode === false) {
144
146
  return true;
145
147
  }
@@ -149,10 +151,7 @@ function registerOptionsControl(config) {
149
151
  else if ((_a = nextProps.formItem) === null || _a === void 0 ? void 0 : _a.expressionsInOptions) {
150
152
  return true;
151
153
  }
152
- else if ((_b = nextProps.formItem) === null || _b === void 0 ? void 0 : _b.filteredOptions) {
153
- return true;
154
- }
155
- if (helper.anyChanged(detectProps, this.props, nextProps)) {
154
+ else if (helper.anyChanged(detectProps, this.props, nextProps)) {
156
155
  return true;
157
156
  }
158
157
  return false;
@@ -594,7 +593,8 @@ function registerOptionsControl(config) {
594
593
  case 5:
595
594
  payload = _f.sent();
596
595
  if (!payload.ok) {
597
- 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')));
596
+ !addApi.silent &&
597
+ 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')));
598
598
  result = null;
599
599
  }
600
600
  else {
@@ -605,7 +605,7 @@ function registerOptionsControl(config) {
605
605
  e_1 = _f.sent();
606
606
  result = null;
607
607
  console.error(e_1);
608
- env.notify('error', e_1.message);
608
+ !addApi.silent && env.notify('error', e_1.message);
609
609
  return [3 /*break*/, 7];
610
610
  case 7:
611
611
  // 有 result 说明弹框点了确认。否则就是取消了。
@@ -700,7 +700,8 @@ function registerOptionsControl(config) {
700
700
  case 5:
701
701
  payload = _e.sent();
702
702
  if (!payload.ok) {
703
- 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')));
703
+ !editApi.silent &&
704
+ 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')));
704
705
  result = null;
705
706
  }
706
707
  else {
@@ -711,7 +712,7 @@ function registerOptionsControl(config) {
711
712
  e_2 = _e.sent();
712
713
  result = null;
713
714
  console.error(e_2);
714
- env.notify('error', e_2.message);
715
+ !editApi.silent && env.notify('error', e_2.message);
715
716
  return [3 /*break*/, 7];
716
717
  case 7:
717
718
  // 没有结果,说明取消了。
@@ -779,7 +780,8 @@ function registerOptionsControl(config) {
779
780
  case 6:
780
781
  result = _e.sent();
781
782
  if (!result.ok) {
782
- 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')));
783
+ !deleteApi.silent &&
784
+ 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')));
783
785
  return [2 /*return*/];
784
786
  }
785
787
  _e.label = 7;
@@ -802,7 +804,7 @@ function registerOptionsControl(config) {
802
804
  case 8:
803
805
  e_3 = _e.sent();
804
806
  console.error(e_3);
805
- env.notify('error', e_3.message);
807
+ !deleteApi.silent && env.notify('error', e_3.message);
806
808
  return [3 /*break*/, 9];
807
809
  case 9: return [2 /*return*/];
808
810
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.2
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.2
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.2
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.2
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -11,6 +11,7 @@ var tslib = require('tslib');
11
11
  var React = require('react');
12
12
  var debounce = require('lodash/debounce');
13
13
  var isEqual = require('lodash/isEqual');
14
+ var factory = require('../factory.js');
14
15
  var combo = require('../store/combo.js');
15
16
  var helper = require('../utils/helper.js');
16
17
  var formula = require('../utils/formula.js');
@@ -48,6 +49,9 @@ require('react-dom');
48
49
  require('../utils/SimpleMap.js');
49
50
  require('lodash/mapValues');
50
51
  require('lodash/camelCase');
52
+ require('lodash/isObject');
53
+ require('lodash/map');
54
+ require('lodash/isEmpty');
51
55
  require('uncontrollable');
52
56
  require('../utils/validations.js');
53
57
  require('../utils/resolveCondition.js');
@@ -71,29 +75,26 @@ function wrapControl(ComposedComponent) {
71
75
  tslib.__extends(class_1, _super);
72
76
  function class_1(props) {
73
77
  var _this = this;
74
- var _a;
78
+ var _a, _b;
75
79
  _this = _super.call(this, props) || this;
76
80
  _this.value = undefined;
77
81
  _this.lazyEmitChange = debounce__default["default"](_this.emitChange.bind(_this), 250, {
78
82
  trailing: true,
79
83
  leading: false
80
84
  });
81
- var _b = _this.props, form = _b.formStore, formItem$1 = _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;
85
+ var _c = _this.props, form = _c.formStore, formItem$1 = _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;
82
86
  _this.getValue = _this.getValue.bind(_this);
83
87
  _this.setValue = _this.setValue.bind(_this);
84
88
  _this.handleChange = _this.handleChange.bind(_this);
85
89
  _this.setPrinstineValue = _this.setPrinstineValue.bind(_this);
86
90
  _this.controlRef = _this.controlRef.bind(_this);
87
91
  _this.handleBlur = _this.handleBlur.bind(_this);
92
+ _this.validate = _this.validate.bind(_this);
93
+ _this.flushChange = _this.flushChange.bind(_this);
88
94
  if (!name) {
89
95
  // 一般情况下这些表单项都是需要 name 的,提示一下
90
96
  if (typeof type === 'string' &&
91
- (type.startsWith('input-') ||
92
- type.endsWith('select') ||
93
- type === 'switch' ||
94
- type === 'textarea' ||
95
- type === 'radios') &&
96
- type !== 'input-group') {
97
+ ((_a = factory.getRendererByName(type)) === null || _a === void 0 ? void 0 : _a.isFormItem)) {
97
98
  console.warn('name is required', _this.props.$schema);
98
99
  }
99
100
  return _this;
@@ -104,21 +105,24 @@ function wrapControl(ComposedComponent) {
104
105
  path: _this.props.$path,
105
106
  storeType: formItem.FormItemStore.name,
106
107
  parentId: store === null || store === void 0 ? void 0 : store.id,
107
- name: name
108
+ name: name,
109
+ colIndex: colIndex !== undefined ? colIndex : undefined,
110
+ rowIndex: rowIndex !== undefined ? rowIndex : undefined
108
111
  });
109
112
  _this.model = model;
110
113
  // @issue 打算干掉这个
111
114
  formItem$1 === null || formItem$1 === void 0 ? void 0 : formItem$1.addSubFormItem(model);
112
- model.config(tslib.__assign(tslib.__assign({}, pick__default["default"](tslib.__assign(tslib.__assign({}, ComposedComponent.defaultProps), _this.props.$schema), ['multiple'])), { id: id, type: type, required: required, unique: unique, value: value, isValueSchemaExp: formula.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 }));
115
+ model.config(tslib.__assign(tslib.__assign({}, pick__default["default"](tslib.__assign(tslib.__assign({}, ComposedComponent.defaultProps), _this.props.$schema), ['multiple'])), { id: id, type: type, required: props.required || required, unique: unique, value: value, isValueSchemaExp: formula.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 }));
113
116
  // issue 这个逻辑应该在 combo 里面自己实现。
114
117
  if (_this.model.unique &&
115
- ((_a = form === null || form === void 0 ? void 0 : form.parentStore) === null || _a === void 0 ? void 0 : _a.storeType) === combo.ComboStore.name) {
118
+ ((_b = form === null || form === void 0 ? void 0 : form.parentStore) === null || _b === void 0 ? void 0 : _b.storeType) === combo.ComboStore.name) {
116
119
  var combo$1 = form.parentStore;
117
120
  combo$1.bindUniuqueItem(model);
118
121
  }
119
122
  if (propValue !== undefined && propValue !== null) {
120
123
  // 同步 value: 优先使用 props 中的 value
121
124
  model.changeTmpValue(propValue, 'controlled');
125
+ model.setIsControlled(true);
122
126
  }
123
127
  else {
124
128
  var isExp = formula.isExpression(value);
@@ -184,7 +188,7 @@ function wrapControl(ComposedComponent) {
184
188
  addHook === null || addHook === void 0 ? void 0 : addHook(this.hook3, 'flush');
185
189
  var formItem = this.model;
186
190
  if (formItem && validate) {
187
- var finalValidate_1 = helper.promisify(validate.bind(formItem));
191
+ var finalValidate_1 = helper.promisify(validate.bind(this.control));
188
192
  this.hook2 = function () {
189
193
  formItem.clearError('control:valdiate');
190
194
  return finalValidate_1(_this.props.data, _this.getValue(), name).then(function (ret) {
@@ -199,59 +203,44 @@ function wrapControl(ComposedComponent) {
199
203
  class_1.prototype.componentDidUpdate = function (prevProps) {
200
204
  var _a, _b, _c;
201
205
  var props = this.props;
202
- props.formStore;
203
206
  var model = this.model;
204
- if (model &&
205
- helper.anyChanged([
206
- 'id',
207
- 'validations',
208
- 'validationErrors',
209
- 'value',
210
- 'defaultValue',
211
- 'required',
212
- 'unique',
213
- 'multiple',
214
- 'delimiter',
215
- 'valueField',
216
- 'labelField',
217
- 'joinValues',
218
- 'extractValue',
219
- 'selectFirst',
220
- 'autoFill',
221
- 'clearValueOnHidden',
222
- 'validateApi',
223
- 'minLength',
224
- 'maxLength',
225
- 'label',
226
- 'extraName'
227
- ], prevProps.$schema, props.$schema)) {
207
+ if (!model) {
208
+ return;
209
+ }
210
+ helper.changedEffect([
211
+ 'id',
212
+ 'validations',
213
+ 'validationErrors',
214
+ 'value',
215
+ 'defaultValue',
216
+ 'required',
217
+ 'unique',
218
+ 'multiple',
219
+ 'delimiter',
220
+ 'valueField',
221
+ 'labelField',
222
+ 'joinValues',
223
+ 'extractValue',
224
+ 'selectFirst',
225
+ 'autoFill',
226
+ 'clearValueOnHidden',
227
+ 'validateApi',
228
+ 'minLength',
229
+ 'maxLength',
230
+ 'label',
231
+ 'extraName'
232
+ ], prevProps.$schema, props.$schema, function (changes) {
233
+ model.config(tslib.__assign(tslib.__assign({}, changes), {
234
+ // todo 优化后面两个
235
+ isValueSchemaExp: formula.isExpression(props.$schema.value), inputGroupControl: props === null || props === void 0 ? void 0 : props.inputGroupControl }));
236
+ });
237
+ if (props.required !== prevProps.required) {
228
238
  model.config({
229
- required: props.$schema.required,
230
- id: props.$schema.id,
231
- unique: props.$schema.unique,
232
- value: props.$schema.value,
233
- isValueSchemaExp: formula.isExpression(props.$schema.value),
234
- rules: props.$schema.validations,
235
- multiple: props.$schema.multiple,
236
- delimiter: props.$schema.delimiter,
237
- valueField: props.$schema.valueField,
238
- labelField: props.$schema.labelField,
239
- joinValues: props.$schema.joinValues,
240
- extractValue: props.$schema.extractValue,
241
- messages: props.$schema.validationErrors,
242
- selectFirst: props.$schema.selectFirst,
243
- autoFill: props.$schema.autoFill,
244
- clearValueOnHidden: props.$schema.clearValueOnHidden,
245
- validateApi: props.$schema.validateApi,
246
- minLength: props.$schema.minLength,
247
- maxLength: props.$schema.maxLength,
248
- label: props.$schema.label,
249
- inputGroupControl: props === null || props === void 0 ? void 0 : props.inputGroupControl,
250
- extraName: props.$schema.extraName
239
+ required: props.required
251
240
  });
252
241
  }
253
242
  // 此处需要同时考虑 defaultValue 和 value
254
- if (model && typeof props.value !== 'undefined') {
243
+ if (typeof props.value !== 'undefined') {
255
244
  // 渲染器中的 value 优先
256
245
  if (!isEqual__default["default"](props.value, prevProps.value) &&
257
246
  !isEqual__default["default"](props.value, model.tmpValue)) {
@@ -259,8 +248,7 @@ function wrapControl(ComposedComponent) {
259
248
  model.changeTmpValue(props.value, 'controlled');
260
249
  }
261
250
  }
262
- else if (model &&
263
- typeof props.defaultValue !== 'undefined' &&
251
+ else if (typeof props.defaultValue !== 'undefined' &&
264
252
  formula.isExpression(props.defaultValue) &&
265
253
  (!isEqual__default["default"](props.defaultValue, prevProps.defaultValue) ||
266
254
  (props.data !== prevProps.data &&
@@ -281,7 +269,7 @@ function wrapControl(ComposedComponent) {
281
269
  }
282
270
  }
283
271
  }
284
- else if (model) {
272
+ else {
285
273
  // value 非公式表达式时,name 值优先,若 defaultValue 主动变动时,则使用 defaultValue
286
274
  if (
287
275
  // 然后才是查看关联的 name 属性值是否变化
@@ -396,7 +384,7 @@ function wrapControl(ComposedComponent) {
396
384
  };
397
385
  class_1.prototype.validate = function () {
398
386
  return tslib.__awaiter(this, void 0, void 0, function () {
399
- var _a, form, data, formItemDispatchEvent, result, combo$1, group, validPromises;
387
+ var _a, form, data, formItemDispatchEvent, result, combo$1, group, validPromises, valid;
400
388
  return tslib.__generator(this, function (_b) {
401
389
  switch (_b.label) {
402
390
  case 0:
@@ -420,19 +408,16 @@ function wrapControl(ComposedComponent) {
420
408
  result = [_b.sent()];
421
409
  _b.label = 4;
422
410
  case 4:
423
- if (result && result.length) {
424
- if (result.indexOf(false) > -1) {
425
- formItemDispatchEvent('formItemValidateError', data);
426
- }
427
- else {
428
- formItemDispatchEvent('formItemValidateSucc', data);
429
- }
430
- }
431
- return [2 /*return*/];
411
+ valid = !result.some(function (item) { return item === false; });
412
+ formItemDispatchEvent === null || formItemDispatchEvent === void 0 ? void 0 : formItemDispatchEvent(valid ? 'formItemValidateSucc' : 'formItemValidateError', data);
413
+ return [2 /*return*/, valid];
432
414
  }
433
415
  });
434
416
  });
435
417
  };
418
+ class_1.prototype.flushChange = function () {
419
+ this.lazyEmitChange.flush();
420
+ };
436
421
  class_1.prototype.handleChange = function (value, submitOnChange, changeImmediately) {
437
422
  if (submitOnChange === void 0) { submitOnChange = this.props.$schema.submitOnChange; }
438
423
  if (changeImmediately === void 0) { changeImmediately = false; }
@@ -452,7 +437,7 @@ function wrapControl(ComposedComponent) {
452
437
  }
453
438
  if (pipeOut) {
454
439
  var oldValue = this.model.value;
455
- value = api.callStrFunction(pipeOut, ['value', 'oldValue', 'data'], value, oldValue, data);
440
+ value = api.callStrFunction.call(this, pipeOut, ['value', 'oldValue', 'data'], value, oldValue, data);
456
441
  }
457
442
  this.model.changeTmpValue(value, 'input');
458
443
  if (changeImmediately || conrolChangeImmediately || !formInited) {
@@ -524,7 +509,7 @@ function wrapControl(ComposedComponent) {
524
509
  var model = this.model;
525
510
  var _a = this.props; _a.formStore; var name = _a.name, pipeOut = _a.$schema.pipeOut, onChange = _a.onChange, oldValue = _a.value, data = _a.data;
526
511
  if (pipeOut) {
527
- value = api.callStrFunction(pipeOut, ['value', 'oldValue', 'data'], value, oldValue, data);
512
+ value = api.callStrFunction.call(this, pipeOut, ['value', 'oldValue', 'data'], value, oldValue, data);
528
513
  }
529
514
  if (model.extraName) {
530
515
  var values = model.splitExtraValue(value);
@@ -539,7 +524,7 @@ function wrapControl(ComposedComponent) {
539
524
  var _a = this.props, data = _a.formStore, control = _a.$schema;
540
525
  var value = this.model ? this.model.tmpValue : control.value;
541
526
  if (control.pipeIn) {
542
- value = api.callStrFunction(control.pipeIn, ['value', 'data'], value, data);
527
+ value = api.callStrFunction.call(this, control.pipeIn, ['value', 'data'], value, data);
543
528
  }
544
529
  return value;
545
530
  };
@@ -568,7 +553,7 @@ function wrapControl(ComposedComponent) {
568
553
  var injectedProps = {
569
554
  defaultSize: controlWidth,
570
555
  disabled: disabled !== null && disabled !== void 0 ? disabled : control.disabled,
571
- static: (_a = control.static) !== null && _a !== void 0 ? _a : defaultStatic,
556
+ static: (_b = (_a = this.props.static) !== null && _a !== void 0 ? _a : control.static) !== null && _b !== void 0 ? _b : defaultStatic,
572
557
  formItem: this.model,
573
558
  formMode: control.mode || formMode,
574
559
  ref: this.controlRef,
@@ -583,13 +568,19 @@ function wrapControl(ComposedComponent) {
583
568
  getValue: this.getValue,
584
569
  prinstine: model ? model.prinstine : undefined,
585
570
  setPrinstineValue: this.setPrinstineValue,
571
+ onValidate: this.validate,
572
+ onFlushChange: this.flushChange
586
573
  // !没了这个, tree 里的 options 渲染会出问题
587
- _filteredOptions: (_b = this.model) === null || _b === void 0 ? void 0 : _b.filteredOptions
574
+ // todo 理论上不应该影响,待确认
575
+ // _filteredOptions: this.model?.filteredOptions
588
576
  };
589
577
  return (_J$X_(ComposedComponent, tslib.__assign({}, this.props, injectedProps)));
590
578
  };
591
579
  return class_1;
592
580
  }(React__default["default"].Component)),
581
+ _a.displayName = "WrapControl".concat(ComposedComponent.displayName || ComposedComponent.name
582
+ ? "(".concat(ComposedComponent.displayName || ComposedComponent.name, ")")
583
+ : ''),
593
584
  _a.contextType = Scoped.ScopedContext,
594
585
  _a.defaultProps = {},
595
586
  _a))), ComposedComponent);
package/lib/store/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.4.0
2
+ * amis-core v3.4.2
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -43,6 +43,8 @@ require('react-dom');
43
43
  require('../utils/SimpleMap.js');
44
44
  require('lodash/mapValues');
45
45
  require('lodash/camelCase');
46
+ require('lodash/map');
47
+ require('lodash/isEmpty');
46
48
  require('uncontrollable');
47
49
  require('hoist-non-react-statics');
48
50
  require('../utils/validations.js');