amis-core 3.5.2 → 3.6.0

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.d.ts +1 -1
  3. package/esm/RootRenderer.js +2 -2
  4. package/esm/SchemaRenderer.js +1 -1
  5. package/esm/Scoped.d.ts +2 -0
  6. package/esm/Scoped.js +49 -7
  7. package/esm/StatusScoped.js +1 -1
  8. package/esm/WithRootStore.js +1 -1
  9. package/esm/WithStore.js +27 -12
  10. package/esm/actions/Action.js +30 -22
  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 +31 -32
  15. package/esm/actions/ContinueAction.js +1 -1
  16. package/esm/actions/CopyAction.js +3 -3
  17. package/esm/actions/CustomAction.js +1 -1
  18. package/esm/actions/DialogAction.js +1 -1
  19. package/esm/actions/DrawerAction.js +1 -1
  20. package/esm/actions/EmailAction.js +1 -1
  21. package/esm/actions/LinkAction.js +5 -5
  22. package/esm/actions/LoopAction.js +1 -1
  23. package/esm/actions/PageAction.js +1 -1
  24. package/esm/actions/ParallelAction.js +1 -1
  25. package/esm/actions/StatusAction.js +1 -1
  26. package/esm/actions/SwitchAction.js +1 -1
  27. package/esm/actions/ToastAction.js +3 -3
  28. package/esm/components/CustomStyle.js +1 -1
  29. package/esm/components/ErrorBoundary.d.ts +20 -0
  30. package/esm/components/ErrorBoundary.js +41 -0
  31. package/esm/components/LazyComponent.js +1 -1
  32. package/esm/components/Overlay.js +1 -1
  33. package/esm/components/PopOver.d.ts +4 -0
  34. package/esm/components/PopOver.js +66 -3
  35. package/esm/env.d.ts +9 -0
  36. package/esm/env.js +1 -1
  37. package/esm/envOverwrite.d.ts +1 -1
  38. package/esm/envOverwrite.js +15 -35
  39. package/esm/factory.js +1 -1
  40. package/esm/index.d.ts +2 -1
  41. package/esm/index.js +5 -4
  42. package/esm/locale.js +1 -1
  43. package/esm/polyfills.js +1 -1
  44. package/esm/renderers/Form.d.ts +10 -4
  45. package/esm/renderers/Form.js +64 -32
  46. package/esm/renderers/Item.d.ts +54 -0
  47. package/esm/renderers/Item.js +1 -1
  48. package/esm/renderers/Options.d.ts +5 -1
  49. package/esm/renderers/Options.js +11 -9
  50. package/esm/renderers/Placeholder.js +1 -1
  51. package/esm/renderers/builtin.js +1 -1
  52. package/esm/renderers/register.js +1 -1
  53. package/esm/renderers/wrapControl.js +10 -17
  54. package/esm/store/app.js +1 -1
  55. package/esm/store/combo.d.ts +1154 -48
  56. package/esm/store/combo.js +10 -3
  57. package/esm/store/crud.d.ts +9 -1
  58. package/esm/store/crud.js +50 -15
  59. package/esm/store/form.d.ts +480 -20
  60. package/esm/store/form.js +1 -1
  61. package/esm/store/formItem.d.ts +23 -1
  62. package/esm/store/formItem.js +103 -15
  63. package/esm/store/iRenderer.js +1 -1
  64. package/esm/store/index.js +1 -1
  65. package/esm/store/list.js +1 -1
  66. package/esm/store/manager.js +1 -1
  67. package/esm/store/modal.js +1 -1
  68. package/esm/store/node.js +1 -1
  69. package/esm/store/pagination.js +1 -1
  70. package/esm/store/root.js +1 -1
  71. package/esm/store/service.js +1 -1
  72. package/esm/store/status.js +1 -1
  73. package/esm/store/table.d.ts +1078 -42
  74. package/esm/store/table.js +64 -6
  75. package/esm/store/table2.js +1 -4
  76. package/esm/theme.js +1 -1
  77. package/esm/types.d.ts +8 -2
  78. package/esm/utils/Animation.js +1 -1
  79. package/esm/utils/ColorScale.js +1 -1
  80. package/esm/utils/DataSchema.js +1 -1
  81. package/esm/utils/DataScope.js +1 -1
  82. package/esm/utils/RootClose.js +1 -1
  83. package/esm/utils/SimpleMap.js +1 -1
  84. package/esm/utils/api.js +1 -1
  85. package/esm/utils/arraySlice.js +1 -1
  86. package/esm/utils/attachmentAdpator.js +3 -1
  87. package/esm/utils/autobind.js +1 -1
  88. package/esm/utils/columnsSplit.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.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.d.ts +2 -1
  97. package/esm/utils/filter-schema.js +14 -5
  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 +2 -2
  105. package/esm/utils/helper.js +37 -29
  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/isPureVariable.js +1 -1
  110. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  111. package/esm/utils/keyToPath.js +1 -1
  112. package/esm/utils/makeSorter.js +1 -1
  113. package/esm/utils/math.js +8 -5
  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 +15 -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.d.ts +7 -0
  124. package/esm/utils/renderer-event.js +30 -18
  125. package/esm/utils/replaceText.js +1 -1
  126. package/esm/utils/resize-sensor.js +1 -1
  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.js +12 -15
  135. package/esm/utils/style.js +3 -2
  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.d.ts +1 -1
  145. package/lib/RootRenderer.js +2 -2
  146. package/lib/SchemaRenderer.js +1 -1
  147. package/lib/Scoped.d.ts +2 -0
  148. package/lib/Scoped.js +48 -6
  149. package/lib/StatusScoped.js +1 -1
  150. package/lib/WithRootStore.js +1 -1
  151. package/lib/WithStore.js +26 -11
  152. package/lib/actions/Action.js +29 -21
  153. package/lib/actions/AjaxAction.js +2 -2
  154. package/lib/actions/BreakAction.js +1 -1
  155. package/lib/actions/BroadcastAction.js +1 -1
  156. package/lib/actions/CmptAction.js +31 -32
  157. package/lib/actions/ContinueAction.js +1 -1
  158. package/lib/actions/CopyAction.js +3 -3
  159. package/lib/actions/CustomAction.js +1 -1
  160. package/lib/actions/DialogAction.js +1 -1
  161. package/lib/actions/DrawerAction.js +1 -1
  162. package/lib/actions/EmailAction.js +1 -1
  163. package/lib/actions/LinkAction.js +5 -5
  164. package/lib/actions/LoopAction.js +1 -1
  165. package/lib/actions/PageAction.js +1 -1
  166. package/lib/actions/ParallelAction.js +1 -1
  167. package/lib/actions/StatusAction.js +1 -1
  168. package/lib/actions/SwitchAction.js +1 -1
  169. package/lib/actions/ToastAction.js +3 -3
  170. package/lib/components/CustomStyle.js +1 -1
  171. package/lib/components/ErrorBoundary.d.ts +20 -0
  172. package/lib/components/ErrorBoundary.js +52 -0
  173. package/lib/components/LazyComponent.js +1 -1
  174. package/lib/components/Overlay.js +1 -1
  175. package/lib/components/PopOver.d.ts +4 -0
  176. package/lib/components/PopOver.js +64 -1
  177. package/lib/env.d.ts +9 -0
  178. package/lib/env.js +1 -1
  179. package/lib/envOverwrite.d.ts +1 -1
  180. package/lib/envOverwrite.js +18 -34
  181. package/lib/factory.js +1 -1
  182. package/lib/index.d.ts +2 -1
  183. package/lib/index.js +6 -3
  184. package/lib/locale.js +1 -1
  185. package/lib/polyfills.js +1 -1
  186. package/lib/renderers/Form.d.ts +10 -4
  187. package/lib/renderers/Form.js +64 -32
  188. package/lib/renderers/Item.d.ts +54 -0
  189. package/lib/renderers/Item.js +1 -1
  190. package/lib/renderers/Options.d.ts +5 -1
  191. package/lib/renderers/Options.js +11 -9
  192. package/lib/renderers/Placeholder.js +1 -1
  193. package/lib/renderers/builtin.js +1 -1
  194. package/lib/renderers/register.js +1 -1
  195. package/lib/renderers/wrapControl.js +10 -17
  196. package/lib/store/app.js +1 -1
  197. package/lib/store/combo.d.ts +1154 -49
  198. package/lib/store/combo.js +10 -3
  199. package/lib/store/crud.d.ts +9 -1
  200. package/lib/store/crud.js +50 -15
  201. package/lib/store/form.d.ts +480 -21
  202. package/lib/store/form.js +1 -1
  203. package/lib/store/formItem.d.ts +23 -1
  204. package/lib/store/formItem.js +104 -15
  205. package/lib/store/iRenderer.js +1 -1
  206. package/lib/store/index.js +1 -1
  207. package/lib/store/list.js +1 -1
  208. package/lib/store/manager.js +1 -1
  209. package/lib/store/modal.js +1 -1
  210. package/lib/store/node.js +1 -1
  211. package/lib/store/pagination.js +1 -1
  212. package/lib/store/root.js +1 -1
  213. package/lib/store/service.js +1 -1
  214. package/lib/store/status.js +1 -1
  215. package/lib/store/table.d.ts +1078 -43
  216. package/lib/store/table.js +63 -5
  217. package/lib/store/table2.js +1 -4
  218. package/lib/theme.js +1 -1
  219. package/lib/types.d.ts +8 -2
  220. package/lib/utils/Animation.js +1 -1
  221. package/lib/utils/ColorScale.js +1 -1
  222. package/lib/utils/DataSchema.js +1 -1
  223. package/lib/utils/DataScope.js +1 -1
  224. package/lib/utils/RootClose.js +1 -1
  225. package/lib/utils/SimpleMap.js +1 -1
  226. package/lib/utils/api.js +1 -1
  227. package/lib/utils/arraySlice.js +1 -1
  228. package/lib/utils/attachmentAdpator.js +3 -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.js +1 -1
  234. package/lib/utils/decodeEntity.js +1 -1
  235. package/lib/utils/dom.js +1 -1
  236. package/lib/utils/errors.js +1 -1
  237. package/lib/utils/escapeHtml.js +1 -1
  238. package/lib/utils/filter-schema.d.ts +2 -1
  239. package/lib/utils/filter-schema.js +14 -4
  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 +2 -2
  247. package/lib/utils/helper.js +36 -28
  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.js +1 -1
  254. package/lib/utils/makeSorter.js +1 -1
  255. package/lib/utils/math.js +8 -5
  256. package/lib/utils/memoryParse.js +1 -1
  257. package/lib/utils/normalizeLink.js +1 -1
  258. package/lib/utils/normalizeOptions.js +1 -1
  259. package/lib/utils/object.js +15 -1
  260. package/lib/utils/offset.js +1 -1
  261. package/lib/utils/offsetParent.js +1 -1
  262. package/lib/utils/optionValueCompare.js +1 -1
  263. package/lib/utils/position.js +1 -1
  264. package/lib/utils/prettyBytes.js +1 -1
  265. package/lib/utils/renderer-event.d.ts +7 -0
  266. package/lib/utils/renderer-event.js +30 -18
  267. package/lib/utils/replaceText.js +1 -1
  268. package/lib/utils/resize-sensor.js +1 -1
  269. package/lib/utils/resolveCondition.js +1 -1
  270. package/lib/utils/resolveVariable.js +1 -1
  271. package/lib/utils/resolveVariableAndFilter.js +1 -1
  272. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  273. package/lib/utils/scrollPosition.js +1 -1
  274. package/lib/utils/string2regExp.js +1 -1
  275. package/lib/utils/stripNumber.js +1 -1
  276. package/lib/utils/style-helper.js +12 -15
  277. package/lib/utils/style.js +3 -2
  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 +3 -3
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -16,10 +16,10 @@ var ToastAction = /** @class */ (function () {
16
16
  var _a, _b, _c, _d, _e;
17
17
  return __awaiter(this, void 0, void 0, function () {
18
18
  return __generator(this, function (_f) {
19
- if (!((_a = renderer.props.env) === null || _a === void 0 ? void 0 : _a.notify)) {
19
+ if (!((_a = event.context.env) === null || _a === void 0 ? void 0 : _a.notify)) {
20
20
  throw new Error('env.notify is required!');
21
21
  }
22
- (_c = (_b = event.context.env).notify) === null || _c === void 0 ? void 0 : _c.call(_b, ((_d = action.args) === null || _d === void 0 ? void 0 : _d.msgType) || 'info', String((_e = action.args) === null || _e === void 0 ? void 0 : _e.msg), action.args);
22
+ (_c = (_b = event.context.env) === null || _b === void 0 ? void 0 : _b.notify) === null || _c === void 0 ? void 0 : _c.call(_b, ((_d = action.args) === null || _d === void 0 ? void 0 : _d.msgType) || 'info', String((_e = action.args) === null || _e === void 0 ? void 0 : _e.msg), action.args);
23
23
  return [2 /*return*/];
24
24
  });
25
25
  });
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file ErrorBoundary
3
+ * @description 捕获发生在其子组件树任何位置的 JavaScript 错误,并打印这些错误
4
+ * @author wibetter
5
+ */
6
+ import React from 'react';
7
+ interface ErrorBoundaryProps {
8
+ customErrorMsg?: string;
9
+ fallback?: () => void;
10
+ children: any;
11
+ }
12
+ interface ErrorBoundaryStates {
13
+ hasError: boolean;
14
+ }
15
+ export default class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryStates> {
16
+ constructor(props: any);
17
+ componentDidCatch(error: any, errorInfo: any): void;
18
+ render(): any;
19
+ }
20
+ export {};
@@ -0,0 +1,41 @@
1
+ /**
2
+ * amis-core v3.6.0
3
+ * Copyright 2018-2023 fex
4
+ */
5
+
6
+ import { __extends } from 'tslib';
7
+ import React from 'react';
8
+
9
+ var ErrorBoundary = /** @class */ (function (_super) {
10
+ __extends(ErrorBoundary, _super);
11
+ function ErrorBoundary(props) {
12
+ var _this = _super.call(this, props) || this;
13
+ _this.state = { hasError: false };
14
+ return _this;
15
+ }
16
+ ErrorBoundary.prototype.componentDidCatch = function (error, errorInfo) {
17
+ var customErrorMsg = this.props.customErrorMsg;
18
+ if (customErrorMsg) {
19
+ console.warn(customErrorMsg);
20
+ }
21
+ console.warn('错误对象:', error);
22
+ console.warn('错误信息:', errorInfo);
23
+ this.setState({
24
+ hasError: true
25
+ });
26
+ };
27
+ ErrorBoundary.prototype.render = function () {
28
+ var fallback = this.props.fallback;
29
+ if (this.state.hasError) {
30
+ if (fallback) {
31
+ return fallback();
32
+ }
33
+ // 默认渲染错误信息
34
+ return (React.createElement("div", { className: "renderer-error-boundary" }, "\u6E32\u67D3\u53D1\u751F\u9519\u8BEF\uFF0C\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\u8F93\u51FA\u3002"));
35
+ }
36
+ return this.props.children;
37
+ };
38
+ return ErrorBoundary;
39
+ }(React.Component));
40
+
41
+ export { ErrorBoundary as default };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -46,9 +46,13 @@ export declare class PopOver extends React.PureComponent<PopOverProps, PopOverSt
46
46
  };
47
47
  parent: HTMLElement;
48
48
  wrapperRef: React.RefObject<HTMLDivElement>;
49
+ isRootClosed: boolean;
49
50
  componentDidMount(): void;
50
51
  componentDidUpdate(): void;
51
52
  componentWillUnmount(): void;
53
+ handleRootMouseDownCapture(e: MouseEvent): void;
54
+ handleRootMouseUpCapture(e: MouseEvent): void;
55
+ handleRootMouseUp(e: MouseEvent): void;
52
56
  mayUpdateOffset(): void;
53
57
  render(): React.JSX.Element;
54
58
  }
@@ -1,9 +1,9 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
6
- import { __extends, __rest, __assign } from 'tslib';
6
+ import { __extends, __rest, __assign, __decorate, __metadata } from 'tslib';
7
7
  import React from 'react';
8
8
  import { findDOMNode } from 'react-dom';
9
9
  import { themeable } from '../theme.js';
@@ -18,7 +18,7 @@ import 'moment';
18
18
  import '../utils/debug.js';
19
19
  import '../utils/errors.js';
20
20
  import '../utils/tpl.js';
21
- import { preventDefault, camel } from '../utils/helper.js';
21
+ import { preventDefault, camel, autobind } from '../utils/helper.js';
22
22
  import '../utils/filter.js';
23
23
  import 'lodash/isObject';
24
24
  import 'lodash/isString';
@@ -57,6 +57,7 @@ var PopOver = /** @class */ (function (_super) {
57
57
  yOffset: 0
58
58
  };
59
59
  _this.wrapperRef = React.createRef();
60
+ _this.isRootClosed = false;
60
61
  return _this;
61
62
  }
62
63
  PopOver.prototype.componentDidMount = function () {
@@ -71,6 +72,14 @@ var PopOver = /** @class */ (function (_super) {
71
72
  capture: false
72
73
  });
73
74
  }
75
+ // 从弹窗中处理复制过来的,如果要修改,请同步修改
76
+ // 因为 overlay 功能其实是用 postion: fixed 来实现的
77
+ // 目的是加一个蒙层监听蒙层点击然后关闭弹窗。意图就是 closeOnOutside
78
+ // 但是如果上层有个 translateZ 之类的样式就会影响 fixed 的定位,导致功能失效
79
+ // 所以这里兜底加了个 closeOnOutside 的功能
80
+ document.body.addEventListener('mousedown', this.handleRootMouseDownCapture, true);
81
+ document.body.addEventListener('mouseup', this.handleRootMouseUpCapture, true);
82
+ document.body.addEventListener('mouseup', this.handleRootMouseUp);
74
83
  };
75
84
  PopOver.prototype.componentDidUpdate = function () {
76
85
  this.mayUpdateOffset();
@@ -80,6 +89,42 @@ var PopOver = /** @class */ (function (_super) {
80
89
  if (this.wrapperRef && this.wrapperRef.current) {
81
90
  this.wrapperRef.current.removeEventListener('touchmove', preventDefault);
82
91
  }
92
+ document.body.removeEventListener('mouseup', this.handleRootMouseUp);
93
+ document.body.removeEventListener('mousedown', this.handleRootMouseDownCapture, true);
94
+ document.body.removeEventListener('mouseup', this.handleRootMouseUpCapture, true);
95
+ };
96
+ PopOver.prototype.handleRootMouseDownCapture = function (e) {
97
+ var target = e.target;
98
+ var _a = this.props, closeOnOutside = _a.overlay, ns = _a.classPrefix;
99
+ var isLeftButton = (e.button === 1 && window.event !== null) || e.button === 0;
100
+ this.isRootClosed = !!(isLeftButton &&
101
+ closeOnOutside &&
102
+ target &&
103
+ this.wrapperRef.current &&
104
+ ((!this.wrapperRef.current.contains(target) &&
105
+ !target.closest('[role=dialog]')) ||
106
+ (target.matches(".".concat(ns, "Modal")) && target === this.wrapperRef.current))); // 干脆过滤掉来自弹框里面的点击
107
+ };
108
+ PopOver.prototype.handleRootMouseUpCapture = function (e) {
109
+ // mousedown 的时候不在弹窗里面,则不需要判断了
110
+ if (!this.isRootClosed) {
111
+ return;
112
+ }
113
+ // 再判断 mouseup 的时候是不是在弹窗里面
114
+ this.handleRootMouseDownCapture(e);
115
+ };
116
+ PopOver.prototype.handleRootMouseUp = function (e) {
117
+ var onHide = this.props.onHide;
118
+ if (this.isRootClosed && !e.defaultPrevented) {
119
+ // 因为原来 overlay 是不会让别的部分还有点击事件的,所以这里要阻止默认事件
120
+ // 参考:https://stackoverflow.com/questions/8643739/cancel-click-event-in-the-mouseup-event-handler
121
+ var captureClick_1 = function (e) {
122
+ e.stopPropagation();
123
+ window.removeEventListener('click', captureClick_1, true);
124
+ };
125
+ window.addEventListener('click', captureClick_1, true);
126
+ onHide === null || onHide === void 0 ? void 0 : onHide();
127
+ }
83
128
  };
84
129
  PopOver.prototype.mayUpdateOffset = function () {
85
130
  var offset;
@@ -118,6 +163,24 @@ var PopOver = /** @class */ (function (_super) {
118
163
  overlay: false,
119
164
  placement: 'auto'
120
165
  };
166
+ __decorate([
167
+ autobind,
168
+ __metadata("design:type", Function),
169
+ __metadata("design:paramtypes", [MouseEvent]),
170
+ __metadata("design:returntype", void 0)
171
+ ], PopOver.prototype, "handleRootMouseDownCapture", null);
172
+ __decorate([
173
+ autobind,
174
+ __metadata("design:type", Function),
175
+ __metadata("design:paramtypes", [MouseEvent]),
176
+ __metadata("design:returntype", void 0)
177
+ ], PopOver.prototype, "handleRootMouseUpCapture", null);
178
+ __decorate([
179
+ autobind,
180
+ __metadata("design:type", Function),
181
+ __metadata("design:paramtypes", [MouseEvent]),
182
+ __metadata("design:returntype", void 0)
183
+ ], PopOver.prototype, "handleRootMouseUp", null);
121
184
  return PopOver;
122
185
  }(React.PureComponent));
123
186
  var PopOver$1 = themeable(PopOver);
package/esm/env.d.ts CHANGED
@@ -16,6 +16,7 @@ export interface WsObject {
16
16
  body?: any;
17
17
  }
18
18
  export interface RendererEnv {
19
+ forceSilenceInsideError?: boolean;
19
20
  session?: string;
20
21
  fetcher: (api: Api, data?: any, options?: object) => Promise<Payload>;
21
22
  isCancel: (val: any) => boolean;
@@ -63,6 +64,14 @@ export interface RendererEnv {
63
64
  */
64
65
  affixOffsetBottom?: number;
65
66
  richTextToken: string;
67
+ /**
68
+ * 默认的选址组件提供商,目前支持仅 baidu
69
+ */
70
+ locationPickerVendor?: string;
71
+ /**
72
+ * 选址组件的 ak
73
+ */
74
+ locationPickerAK?: string;
66
75
  loadRenderer: (schema: Schema, path: string, reRender: Function) => Promise<React.ElementType> | React.ElementType | JSX.Element | void;
67
76
  loadChartExtends?: () => void | Promise<void>;
68
77
  loadTinymcePlugin?: (tinymce: any) => void | Promise<void>;
package/esm/env.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * @file 用于在移动端或不同语言环境下使用不同配置
3
3
  */
4
- export declare const envOverwrite: (schema: any, locale?: string) => void;
4
+ export declare const envOverwrite: (schema: any, locale?: string) => any;
@@ -1,10 +1,10 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
6
- import { __values } from 'tslib';
7
- import { findObjectsWithKey } from './utils/helper.js';
6
+ import { JSONValueMap } from './utils/helper.js';
7
+ import isPlainObject from 'lodash/isPlainObject';
8
8
 
9
9
  /**
10
10
  * @file 用于在移动端或不同语言环境下使用不同配置
@@ -15,41 +15,21 @@ var isMobile = ((_b = (_a = window).matchMedia) === null || _b === void 0 ? void
15
15
  : false;
16
16
  // 这里不能用 addSchemaFilter 是因为还需要更深层的替换,比如 select 里的 options
17
17
  var envOverwrite = function (schema, locale) {
18
- var e_1, _a, e_2, _b;
19
- if (locale) {
20
- var schemaNodes = findObjectsWithKey(schema, locale);
21
- try {
22
- for (var schemaNodes_1 = __values(schemaNodes), schemaNodes_1_1 = schemaNodes_1.next(); !schemaNodes_1_1.done; schemaNodes_1_1 = schemaNodes_1.next()) {
23
- var schemaNode = schemaNodes_1_1.value;
24
- Object.assign(schemaNode, schemaNode[locale]);
25
- delete schemaNode[locale];
26
- }
18
+ return JSONValueMap(schema, function (value) {
19
+ if (!isPlainObject(value)) {
20
+ return value;
27
21
  }
28
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
29
- finally {
30
- try {
31
- if (schemaNodes_1_1 && !schemaNodes_1_1.done && (_a = schemaNodes_1.return)) _a.call(schemaNodes_1);
32
- }
33
- finally { if (e_1) throw e_1.error; }
22
+ if (locale && value[locale]) {
23
+ var newValue = Object.assign({}, value, value[locale]);
24
+ delete newValue[locale];
25
+ return newValue;
34
26
  }
35
- }
36
- if (isMobile) {
37
- var schemaNodes = findObjectsWithKey(schema, 'mobile');
38
- try {
39
- for (var schemaNodes_2 = __values(schemaNodes), schemaNodes_2_1 = schemaNodes_2.next(); !schemaNodes_2_1.done; schemaNodes_2_1 = schemaNodes_2.next()) {
40
- var schemaNode = schemaNodes_2_1.value;
41
- Object.assign(schemaNode, schemaNode['mobile']);
42
- delete schemaNode['mobile'];
43
- }
27
+ else if (isMobile && value.mobile) {
28
+ var newValue = Object.assign({}, value, value.mobile);
29
+ delete newValue.mobile;
30
+ return newValue;
44
31
  }
45
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
46
- finally {
47
- try {
48
- if (schemaNodes_2_1 && !schemaNodes_2_1.done && (_b = schemaNodes_2.return)) _b.call(schemaNodes_2);
49
- }
50
- finally { if (e_2) throw e_2.error; }
51
- }
52
- }
32
+ }, true);
53
33
  };
54
34
 
55
35
  export { envOverwrite };
package/esm/factory.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/index.d.ts CHANGED
@@ -39,6 +39,7 @@ import type { FilterContext } from 'amis-formula';
39
39
  import LazyComponent from './components/LazyComponent';
40
40
  import Overlay from './components/Overlay';
41
41
  import PopOver from './components/PopOver';
42
+ import ErrorBoundary from './components/ErrorBoundary';
42
43
  import { FormRenderer } from './renderers/Form';
43
44
  import type { FormHorizontal, FormSchemaBase } from './renderers/Form';
44
45
  import { enableDebug, disableDebug } from './utils/index';
@@ -49,5 +50,5 @@ import type { IItem } from './store/list';
49
50
  import CustomStyle from './components/CustomStyle';
50
51
  import { StatusScoped } from './StatusScoped';
51
52
  export declare const version = "__buildVersion";
52
- export { clearStoresCache, updateEnv, Renderer, RendererProps, RenderOptions, RendererEnv, EnvContext, RegisterStore, FormItem, FormItemWrap, FormItemProps, OptionsControl, FormRenderer, FormHorizontal, utils, getRendererByName, registerRenderer, unRegisterRenderer, getRenderers, registerFormItem, getFormItemByName, registerOptionsControl, resolveRenderer, filterSchema, Scoped, ScopedContext, IScopedContext, StatusScoped, setDefaultTheme, theme, themeable, ThemeProps, getTheme, classPrefix, getClassPrefix, classnames, makeClassnames, getDefaultLocale, setDefaultLocale, registerLocale, makeTranslator, extendLocale, removeLocaleData, localeable, LocaleProps, TranslateFn, ClassNamesFn, parse, lexer, Evaluator, AsyncEvaluator, FilterContext, filters, getFilters, registerFilter, extendsFilters, registerFunction, evaluate, evaluateForAsync, LazyComponent, Overlay, PopOver, addSchemaFilter, OptionsControlProps, FormOptionsControl, FormControlProps, FormBaseControl, extendDefaultEnv, addRootWrapper, RendererConfig, styleMap, RENDERER_TRANSMISSION_OMIT_PROPS, ScopedComponentType, IItem, IColumn, IRow, IColumn2, IRow2, OnEventProps, FormSchemaBase, filterTarget, CustomStyle, enableDebug, disableDebug };
53
+ export { clearStoresCache, updateEnv, Renderer, RendererProps, RenderOptions, RendererEnv, EnvContext, RegisterStore, FormItem, FormItemWrap, FormItemProps, OptionsControl, FormRenderer, FormHorizontal, utils, getRendererByName, registerRenderer, unRegisterRenderer, getRenderers, registerFormItem, getFormItemByName, registerOptionsControl, resolveRenderer, filterSchema, Scoped, ScopedContext, IScopedContext, StatusScoped, setDefaultTheme, theme, themeable, ThemeProps, getTheme, classPrefix, getClassPrefix, classnames, makeClassnames, getDefaultLocale, setDefaultLocale, registerLocale, makeTranslator, extendLocale, removeLocaleData, localeable, LocaleProps, TranslateFn, ClassNamesFn, parse, lexer, Evaluator, AsyncEvaluator, FilterContext, filters, getFilters, registerFilter, extendsFilters, registerFunction, evaluate, evaluateForAsync, LazyComponent, Overlay, PopOver, ErrorBoundary, addSchemaFilter, OptionsControlProps, FormOptionsControl, FormControlProps, FormBaseControl, extendDefaultEnv, addRootWrapper, RendererConfig, styleMap, RENDERER_TRANSMISSION_OMIT_PROPS, ScopedComponentType, IItem, IColumn, IRow, IColumn2, IRow2, OnEventProps, FormSchemaBase, filterTarget, CustomStyle, enableDebug, disableDebug };
53
54
  export declare function render(schema: Schema, props?: RootRenderProps, options?: RenderOptions, pathPrefix?: string): JSX.Element;
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -24,7 +24,7 @@ export { DebugWrapper, JsonView, debug, disableDebug, enableDebug, traceProps, w
24
24
  export { calculatePosition, getContainer, getStyleNumber, ownerDocument, renderTextByKeyword } from './utils/dom.js';
25
25
  export { ServerError } from './utils/errors.js';
26
26
  export { escapeHtml } from './utils/escapeHtml.js';
27
- export { filterClassNameObject, getExprProperties } from './utils/filter-schema.js';
27
+ export { filterClassNameObject, getExprProperties, hasExprPropertiesChanged } from './utils/filter-schema.js';
28
28
  import './utils/filter.js';
29
29
  export { formatDuration } from './utils/formatDuration.js';
30
30
  export { FormulaExec, formulaExec, isExpression, isNeedFormula, registerFormulaExec, replaceExpression } from './utils/formula.js';
@@ -112,6 +112,7 @@ export { AsyncEvaluator, Evaluator, evaluate, evaluateForAsync, extendsFilters,
112
112
  export { default as LazyComponent } from './components/LazyComponent.js';
113
113
  export { default as Overlay } from './components/Overlay.js';
114
114
  export { default as PopOver } from './components/PopOver.js';
115
+ export { default as ErrorBoundary } from './components/ErrorBoundary.js';
115
116
  export { FormRenderer } from './renderers/Form.js';
116
117
  export { RENDERER_TRANSMISSION_OMIT_PROPS } from './SchemaRenderer.js';
117
118
  export { default as CustomStyle } from './components/CustomStyle.js';
@@ -140,7 +141,7 @@ export { StoreNode } from './store/node.js';
140
141
  */
141
142
  var classPrefix = getClassPrefix();
142
143
  // @ts-ignore
143
- var version = '3.5.2';
144
+ var version = '3.6.0';
144
145
  function render(schema, props, options, pathPrefix) {
145
146
  if (props === void 0) { props = {}; }
146
147
  if (options === void 0) { options = {}; }
@@ -199,7 +200,7 @@ function AMISRenderer(_a) {
199
200
  props.mobileUI = env.isMobile();
200
201
  }
201
202
  // 根据环境覆盖 schema,这个要在最前面做,不然就无法覆盖 validations
202
- envOverwrite(schema, locale);
203
+ schema = envOverwrite(schema, locale);
203
204
  schema = replaceText(schema, options.replaceText, env.replaceTextIgnoreKeys);
204
205
  return (React.createElement(EnvContext.Provider, { value: env },
205
206
  React.createElement(ScopedRootRenderer, __assign({}, props, { schema: schema, pathPrefix: pathPrefix, rootStore: store, env: env, theme: theme, locale: locale, translate: translate }))));
package/esm/locale.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/esm/polyfills.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v3.5.2
2
+ * amis-core v3.6.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -265,6 +265,7 @@ export interface FormProps extends RendererProps, Omit<FormSchemaBase, 'mode' |
265
265
  onFailed?: (reason: string, errors: any) => any;
266
266
  onFinished: (values: object, action: any) => any;
267
267
  onValidate: (values: object, form: any) => any;
268
+ onValidChange?: (valid: boolean, props: any) => void;
268
269
  messages: {
269
270
  fetchSuccess?: string;
270
271
  fetchFailed?: string;
@@ -315,8 +316,7 @@ export default class Form extends React.Component<FormProps, object> {
315
316
  [propName: string]: Array<() => Promise<any>>;
316
317
  };
317
318
  asyncCancel: () => void;
318
- disposeOnValidate: () => void;
319
- disposeRulesValidate: () => void;
319
+ toDispose: Array<() => void>;
320
320
  shouldLoadInitApi: boolean;
321
321
  timer: ReturnType<typeof setTimeout>;
322
322
  mounted: boolean;
@@ -326,6 +326,12 @@ export default class Form extends React.Component<FormProps, object> {
326
326
  componentDidMount(): void;
327
327
  componentDidUpdate(prevProps: FormProps): void;
328
328
  componentWillUnmount(): void;
329
+ /** 获取表单联合校验的规则 */
330
+ getNormalizedRules(): {
331
+ message: any;
332
+ rule: string;
333
+ name?: string | string[] | undefined;
334
+ }[];
329
335
  dispatchInited(value: any): Promise<any>;
330
336
  blockRouting(): any;
331
337
  beforePageUnload(e: any): any;
@@ -335,7 +341,7 @@ export default class Form extends React.Component<FormProps, object> {
335
341
  silentReload(target?: string, query?: any): void;
336
342
  initInterval(value: any): any;
337
343
  isValidated(): boolean;
338
- validate(forceValidate?: boolean, throwErrors?: boolean): Promise<boolean>;
344
+ validate(forceValidate?: boolean, throwErrors?: boolean, toastErrors?: boolean): Promise<boolean>;
339
345
  setErrors(errors: {
340
346
  [propName: string]: string;
341
347
  }, tag?: string): void;
@@ -349,7 +355,7 @@ export default class Form extends React.Component<FormProps, object> {
349
355
  removeHook(fn: () => any, type?: string): void;
350
356
  handleChange(value: any, name: string, submit: boolean, changePristine?: boolean): void;
351
357
  formItemDispatchEvent(type: string, data: any): any;
352
- emitChange(submit: boolean): Promise<void>;
358
+ emitChange(submit: boolean, skipIfNothingChanges?: boolean): Promise<void>;
353
359
  handleBulkChange(values: Object, submit: boolean): void;
354
360
  handleFormSubmit(e: React.UIEvent<any>): any;
355
361
  handleReset(action: any): (data: any) => void;