amis-core 2.8.0 → 2.9.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 (297) hide show
  1. package/esm/Root.d.ts +1 -1
  2. package/esm/Root.js +1 -1
  3. package/esm/RootRenderer.d.ts +1 -1
  4. package/esm/RootRenderer.js +21 -4
  5. package/esm/SchemaRenderer.d.ts +2 -1
  6. package/esm/SchemaRenderer.js +1 -1
  7. package/esm/Scoped.js +30 -2
  8. package/esm/WithRootStore.d.ts +4 -8
  9. package/esm/WithRootStore.js +1 -1
  10. package/esm/WithStore.js +1 -1
  11. package/esm/actions/Action.d.ts +2 -1
  12. package/esm/actions/Action.js +33 -11
  13. package/esm/actions/AjaxAction.js +1 -1
  14. package/esm/actions/BreakAction.js +1 -1
  15. package/esm/actions/BroadcastAction.js +1 -1
  16. package/esm/actions/CmptAction.js +1 -1
  17. package/esm/actions/ContinueAction.js +1 -1
  18. package/esm/actions/CopyAction.js +1 -1
  19. package/esm/actions/CustomAction.js +2 -1
  20. package/esm/actions/DialogAction.d.ts +1 -1
  21. package/esm/actions/DialogAction.js +8 -3
  22. package/esm/actions/DrawerAction.js +1 -1
  23. package/esm/actions/EmailAction.js +1 -1
  24. package/esm/actions/LinkAction.js +1 -1
  25. package/esm/actions/LoopAction.js +1 -1
  26. package/esm/actions/PageAction.js +1 -1
  27. package/esm/actions/ParallelAction.js +1 -1
  28. package/esm/actions/SwitchAction.js +18 -15
  29. package/esm/actions/ToastAction.js +1 -1
  30. package/esm/components/LazyComponent.d.ts +3 -3
  31. package/esm/components/LazyComponent.js +1 -1
  32. package/esm/components/Overlay.d.ts +1 -1
  33. package/esm/components/Overlay.js +2 -1
  34. package/esm/components/PopOver.d.ts +2 -4
  35. package/esm/components/PopOver.js +2 -1
  36. package/esm/env.d.ts +3 -7
  37. package/esm/env.js +1 -1
  38. package/esm/envOverwrite.js +1 -1
  39. package/esm/factory.js +3 -1
  40. package/esm/index.d.ts +2 -3
  41. package/esm/index.js +7 -5
  42. package/esm/locale.d.ts +1 -3
  43. package/esm/locale.js +1 -1
  44. package/esm/renderers/Form.js +17 -15
  45. package/esm/renderers/Item.d.ts +9 -15
  46. package/esm/renderers/Item.js +2 -1
  47. package/esm/renderers/Options.js +2 -1
  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.d.ts +4 -8
  52. package/esm/renderers/wrapControl.js +21 -30
  53. package/esm/store/app.d.ts +4 -2
  54. package/esm/store/app.js +1 -1
  55. package/esm/store/combo.d.ts +12 -6
  56. package/esm/store/combo.js +1 -1
  57. package/esm/store/crud.d.ts +5 -2
  58. package/esm/store/crud.js +32 -12
  59. package/esm/store/form.d.ts +4 -2
  60. package/esm/store/form.js +1 -1
  61. package/esm/store/formItem.js +5 -4
  62. package/esm/store/iRenderer.d.ts +5 -2
  63. package/esm/store/iRenderer.js +15 -3
  64. package/esm/store/index.js +1 -1
  65. package/esm/store/list.d.ts +4 -2
  66. package/esm/store/list.js +5 -5
  67. package/esm/store/manager.js +1 -1
  68. package/esm/store/modal.d.ts +4 -2
  69. package/esm/store/modal.js +1 -1
  70. package/esm/store/node.js +1 -1
  71. package/esm/store/pagination.d.ts +4 -2
  72. package/esm/store/pagination.js +1 -1
  73. package/esm/store/root.d.ts +4 -2
  74. package/esm/store/root.js +1 -1
  75. package/esm/store/service.d.ts +4 -2
  76. package/esm/store/service.js +1 -1
  77. package/esm/store/table.d.ts +12 -6
  78. package/esm/store/table.js +12 -2
  79. package/esm/store/table2.d.ts +4 -2
  80. package/esm/store/table2.js +1 -1
  81. package/esm/theme.d.ts +2 -4
  82. package/esm/theme.js +1 -1
  83. package/esm/types.d.ts +39 -2
  84. package/esm/utils/Animation.js +1 -1
  85. package/esm/utils/ColorScale.js +1 -1
  86. package/esm/utils/DataSchema.js +1 -1
  87. package/esm/utils/DataScope.js +1 -1
  88. package/esm/utils/RootClose.js +1 -1
  89. package/esm/utils/SimpleMap.js +1 -1
  90. package/esm/utils/api.js +3 -4
  91. package/esm/utils/attachmentAdpator.js +1 -1
  92. package/esm/utils/autobind.js +1 -1
  93. package/esm/utils/columnsSplit.js +1 -1
  94. package/esm/utils/dataMapping.js +1 -1
  95. package/esm/utils/date.js +1 -1
  96. package/esm/utils/debug.d.ts +1 -0
  97. package/esm/utils/debug.js +1 -1
  98. package/esm/utils/decodeEntity.js +1 -1
  99. package/esm/utils/dom.js +1 -1
  100. package/esm/utils/errors.js +1 -1
  101. package/esm/utils/escapeHtml.js +1 -1
  102. package/esm/utils/filter-schema.js +1 -1
  103. package/esm/utils/filter.js +1 -1
  104. package/esm/utils/formatDuration.js +1 -1
  105. package/esm/utils/formula.d.ts +1 -0
  106. package/esm/utils/formula.js +6 -2
  107. package/esm/utils/getVariable.js +1 -1
  108. package/esm/utils/grammar.js +1 -1
  109. package/esm/utils/handleAction.js +1 -1
  110. package/esm/utils/helper.js +1 -1
  111. package/esm/utils/highlight.js +1 -1
  112. package/esm/utils/icon.js +1 -1
  113. package/esm/utils/image.js +1 -1
  114. package/esm/utils/index.d.ts +2 -0
  115. package/esm/utils/isPureVariable.js +1 -1
  116. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  117. package/esm/utils/keyToPath.js +1 -1
  118. package/esm/utils/makeSorter.js +1 -1
  119. package/esm/utils/normalizeLink.js +1 -1
  120. package/esm/utils/normalizeOptions.js +1 -1
  121. package/esm/utils/object.js +1 -1
  122. package/esm/utils/offset.js +1 -1
  123. package/esm/utils/offsetParent.js +1 -1
  124. package/esm/utils/optionValueCompare.js +7 -3
  125. package/esm/utils/position.js +1 -1
  126. package/esm/utils/prettyBytes.js +1 -1
  127. package/esm/utils/renderer-event.js +1 -1
  128. package/esm/utils/replaceText.js +1 -1
  129. package/esm/utils/resize-sensor.js +1 -1
  130. package/esm/utils/resolveCondition.d.ts +5 -0
  131. package/esm/utils/resolveCondition.js +306 -0
  132. package/esm/utils/resolveVariable.js +1 -1
  133. package/esm/utils/resolveVariableAndFilter.js +1 -1
  134. package/esm/utils/resolveVariableAndFilterForAsync.d.ts +1 -0
  135. package/esm/utils/resolveVariableAndFilterForAsync.js +46 -0
  136. package/esm/utils/scrollPosition.js +1 -1
  137. package/esm/utils/string2regExp.js +1 -1
  138. package/esm/utils/stripNumber.js +1 -1
  139. package/esm/utils/style-helper.js +1 -1
  140. package/esm/utils/style.js +1 -1
  141. package/esm/utils/toNumber.js +1 -1
  142. package/esm/utils/tokenize.js +1 -1
  143. package/esm/utils/tpl-builtin.js +1 -1
  144. package/esm/utils/tpl-lodash.js +1 -1
  145. package/esm/utils/tpl.d.ts +7 -0
  146. package/esm/utils/tpl.js +23 -3
  147. package/esm/utils/uncontrollable.js +1 -1
  148. package/esm/utils/validations.js +1 -1
  149. package/lib/Root.d.ts +1 -1
  150. package/lib/Root.js +1 -1
  151. package/lib/RootRenderer.d.ts +1 -1
  152. package/lib/RootRenderer.js +21 -4
  153. package/lib/SchemaRenderer.d.ts +2 -1
  154. package/lib/SchemaRenderer.js +1 -1
  155. package/lib/Scoped.js +30 -2
  156. package/lib/WithRootStore.d.ts +4 -8
  157. package/lib/WithRootStore.js +1 -1
  158. package/lib/WithStore.js +1 -1
  159. package/lib/actions/Action.d.ts +2 -1
  160. package/lib/actions/Action.js +32 -10
  161. package/lib/actions/AjaxAction.js +1 -1
  162. package/lib/actions/BreakAction.js +1 -1
  163. package/lib/actions/BroadcastAction.js +1 -1
  164. package/lib/actions/CmptAction.js +1 -1
  165. package/lib/actions/ContinueAction.js +1 -1
  166. package/lib/actions/CopyAction.js +1 -1
  167. package/lib/actions/CustomAction.js +2 -1
  168. package/lib/actions/DialogAction.d.ts +1 -1
  169. package/lib/actions/DialogAction.js +8 -3
  170. package/lib/actions/DrawerAction.js +1 -1
  171. package/lib/actions/EmailAction.js +1 -1
  172. package/lib/actions/LinkAction.js +1 -1
  173. package/lib/actions/LoopAction.js +1 -1
  174. package/lib/actions/PageAction.js +1 -1
  175. package/lib/actions/ParallelAction.js +1 -1
  176. package/lib/actions/SwitchAction.js +17 -14
  177. package/lib/actions/ToastAction.js +1 -1
  178. package/lib/components/LazyComponent.d.ts +3 -3
  179. package/lib/components/LazyComponent.js +1 -1
  180. package/lib/components/Overlay.d.ts +1 -1
  181. package/lib/components/Overlay.js +2 -1
  182. package/lib/components/PopOver.d.ts +2 -4
  183. package/lib/components/PopOver.js +2 -1
  184. package/lib/env.d.ts +3 -7
  185. package/lib/env.js +1 -1
  186. package/lib/envOverwrite.js +1 -1
  187. package/lib/factory.js +3 -1
  188. package/lib/index.d.ts +2 -3
  189. package/lib/index.js +18 -2
  190. package/lib/locale.d.ts +1 -3
  191. package/lib/locale.js +1 -1
  192. package/lib/renderers/Form.js +16 -14
  193. package/lib/renderers/Item.d.ts +9 -15
  194. package/lib/renderers/Item.js +2 -1
  195. package/lib/renderers/Options.js +2 -1
  196. package/lib/renderers/Placeholder.js +1 -1
  197. package/lib/renderers/builtin.js +1 -1
  198. package/lib/renderers/register.js +1 -1
  199. package/lib/renderers/wrapControl.d.ts +4 -8
  200. package/lib/renderers/wrapControl.js +20 -28
  201. package/lib/store/app.d.ts +4 -2
  202. package/lib/store/app.js +1 -1
  203. package/lib/store/combo.d.ts +12 -6
  204. package/lib/store/combo.js +1 -1
  205. package/lib/store/crud.d.ts +5 -2
  206. package/lib/store/crud.js +31 -11
  207. package/lib/store/form.d.ts +4 -2
  208. package/lib/store/form.js +1 -1
  209. package/lib/store/formItem.js +5 -4
  210. package/lib/store/iRenderer.d.ts +5 -2
  211. package/lib/store/iRenderer.js +15 -3
  212. package/lib/store/index.js +1 -1
  213. package/lib/store/list.d.ts +4 -2
  214. package/lib/store/list.js +5 -5
  215. package/lib/store/manager.js +1 -1
  216. package/lib/store/modal.d.ts +4 -2
  217. package/lib/store/modal.js +1 -1
  218. package/lib/store/node.js +1 -1
  219. package/lib/store/pagination.d.ts +4 -2
  220. package/lib/store/pagination.js +1 -1
  221. package/lib/store/root.d.ts +4 -2
  222. package/lib/store/root.js +1 -1
  223. package/lib/store/service.d.ts +4 -2
  224. package/lib/store/service.js +1 -1
  225. package/lib/store/table.d.ts +12 -6
  226. package/lib/store/table.js +12 -2
  227. package/lib/store/table2.d.ts +4 -2
  228. package/lib/store/table2.js +1 -1
  229. package/lib/theme.d.ts +2 -4
  230. package/lib/theme.js +1 -1
  231. package/lib/types.d.ts +39 -2
  232. package/lib/utils/Animation.js +1 -1
  233. package/lib/utils/ColorScale.js +1 -1
  234. package/lib/utils/DataSchema.js +1 -1
  235. package/lib/utils/DataScope.js +1 -1
  236. package/lib/utils/RootClose.js +1 -1
  237. package/lib/utils/SimpleMap.js +1 -1
  238. package/lib/utils/api.js +2 -3
  239. package/lib/utils/attachmentAdpator.js +1 -1
  240. package/lib/utils/autobind.js +1 -1
  241. package/lib/utils/columnsSplit.js +1 -1
  242. package/lib/utils/dataMapping.js +1 -1
  243. package/lib/utils/date.js +1 -1
  244. package/lib/utils/debug.d.ts +1 -0
  245. package/lib/utils/debug.js +1 -1
  246. package/lib/utils/decodeEntity.js +1 -1
  247. package/lib/utils/dom.js +1 -1
  248. package/lib/utils/errors.js +1 -1
  249. package/lib/utils/escapeHtml.js +1 -1
  250. package/lib/utils/filter-schema.js +1 -1
  251. package/lib/utils/filter.js +1 -1
  252. package/lib/utils/formatDuration.js +1 -1
  253. package/lib/utils/formula.d.ts +1 -0
  254. package/lib/utils/formula.js +6 -1
  255. package/lib/utils/getVariable.js +1 -1
  256. package/lib/utils/grammar.js +1 -1
  257. package/lib/utils/handleAction.js +1 -1
  258. package/lib/utils/helper.js +1 -1
  259. package/lib/utils/highlight.js +1 -1
  260. package/lib/utils/icon.js +1 -1
  261. package/lib/utils/image.js +1 -1
  262. package/lib/utils/index.d.ts +2 -0
  263. package/lib/utils/isPureVariable.js +1 -1
  264. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  265. package/lib/utils/keyToPath.js +1 -1
  266. package/lib/utils/makeSorter.js +1 -1
  267. package/lib/utils/normalizeLink.js +1 -1
  268. package/lib/utils/normalizeOptions.js +1 -1
  269. package/lib/utils/object.js +1 -1
  270. package/lib/utils/offset.js +1 -1
  271. package/lib/utils/offsetParent.js +1 -1
  272. package/lib/utils/optionValueCompare.js +7 -3
  273. package/lib/utils/position.js +1 -1
  274. package/lib/utils/prettyBytes.js +1 -1
  275. package/lib/utils/renderer-event.js +1 -1
  276. package/lib/utils/replaceText.js +1 -1
  277. package/lib/utils/resize-sensor.js +1 -1
  278. package/lib/utils/resolveCondition.d.ts +5 -0
  279. package/lib/utils/resolveCondition.js +322 -0
  280. package/lib/utils/resolveVariable.js +1 -1
  281. package/lib/utils/resolveVariableAndFilter.js +1 -1
  282. package/lib/utils/resolveVariableAndFilterForAsync.d.ts +1 -0
  283. package/lib/utils/resolveVariableAndFilterForAsync.js +50 -0
  284. package/lib/utils/scrollPosition.js +1 -1
  285. package/lib/utils/string2regExp.js +1 -1
  286. package/lib/utils/stripNumber.js +1 -1
  287. package/lib/utils/style-helper.js +1 -1
  288. package/lib/utils/style.js +1 -1
  289. package/lib/utils/toNumber.js +1 -1
  290. package/lib/utils/tokenize.js +1 -1
  291. package/lib/utils/tpl-builtin.js +1 -1
  292. package/lib/utils/tpl-lodash.js +1 -1
  293. package/lib/utils/tpl.d.ts +7 -0
  294. package/lib/utils/tpl.js +22 -1
  295. package/lib/utils/uncontrollable.js +1 -1
  296. package/lib/utils/validations.js +1 -1
  297. package/package.json +5 -5
@@ -0,0 +1,306 @@
1
+ /**
2
+ * amis-core v2.9.0
3
+ * Copyright 2018-2023 fex
4
+ */
5
+
6
+ import { __awaiter, __generator, __read } from 'tslib';
7
+ import get from 'lodash/get';
8
+ import endsWith from 'lodash/endsWith';
9
+ import isEmpty from 'lodash/isEmpty';
10
+ import isEqual from 'lodash/isEqual';
11
+ import startsWith from 'lodash/startsWith';
12
+ import { resolveVariableAndFilterForAsync } from './resolveVariableAndFilterForAsync.js';
13
+ import moment from 'moment';
14
+ import capitalize from 'lodash/capitalize';
15
+
16
+ var conditionResolverMap = {};
17
+ var DEFAULT_RESULT = true;
18
+ function resolveCondition(conditions, data, defaultResult) {
19
+ if (defaultResult === void 0) { defaultResult = true; }
20
+ return __awaiter(this, void 0, void 0, function () {
21
+ return __generator(this, function (_a) {
22
+ switch (_a.label) {
23
+ case 0:
24
+ if (!conditions ||
25
+ !conditions.conjunction ||
26
+ !Array.isArray(conditions.children) ||
27
+ !conditions.children.length) {
28
+ return [2 /*return*/, defaultResult];
29
+ }
30
+ return [4 /*yield*/, computeConditions(conditions.children, conditions.conjunction, data)];
31
+ case 1: return [2 /*return*/, _a.sent()];
32
+ }
33
+ });
34
+ });
35
+ }
36
+ function computeConditions(conditions, conjunction, data) {
37
+ if (conjunction === void 0) { conjunction = 'and'; }
38
+ return __awaiter(this, void 0, void 0, function () {
39
+ var computeResult, index, len, item, result, _a;
40
+ return __generator(this, function (_b) {
41
+ switch (_b.label) {
42
+ case 0:
43
+ computeResult = true;
44
+ index = 0, len = conditions.length;
45
+ _b.label = 1;
46
+ case 1:
47
+ if (!(index < len)) return [3 /*break*/, 7];
48
+ item = conditions[index];
49
+ if (!(item.conjunction && Array.isArray(item.children) && item.children.length)) return [3 /*break*/, 3];
50
+ return [4 /*yield*/, computeConditions(item.children, item.conjunction, data)];
51
+ case 2:
52
+ _a = _b.sent();
53
+ return [3 /*break*/, 5];
54
+ case 3: return [4 /*yield*/, computeCondition(item, index, data)];
55
+ case 4:
56
+ _a = _b.sent();
57
+ _b.label = 5;
58
+ case 5:
59
+ result = _a;
60
+ computeResult = !!result;
61
+ if ((result && conjunction === 'or') ||
62
+ (!result && conjunction === 'and')) {
63
+ return [3 /*break*/, 7];
64
+ }
65
+ _b.label = 6;
66
+ case 6:
67
+ index++;
68
+ return [3 /*break*/, 1];
69
+ case 7: return [2 /*return*/, computeResult];
70
+ }
71
+ });
72
+ });
73
+ }
74
+ function computeCondition(rule, index, data) {
75
+ var _a;
76
+ return __awaiter(this, void 0, void 0, function () {
77
+ var leftValue, rightValue, func;
78
+ return __generator(this, function (_b) {
79
+ switch (_b.label) {
80
+ case 0:
81
+ leftValue = get(data, rule.left.field);
82
+ return [4 /*yield*/, resolveVariableAndFilterForAsync(rule.right, data)];
83
+ case 1:
84
+ rightValue = _b.sent();
85
+ func = (_a = conditionResolverMap["".concat(rule.op, "For").concat(capitalize(rule.left.type))]) !== null && _a !== void 0 ? _a : conditionResolverMap[rule.op];
86
+ return [2 /*return*/, func ? func(leftValue, rightValue, rule.left.type) : DEFAULT_RESULT];
87
+ }
88
+ });
89
+ });
90
+ }
91
+ function startsWithFunc(left, right) {
92
+ if (left === undefined || right === undefined) {
93
+ return DEFAULT_RESULT;
94
+ }
95
+ return startsWith(left, right);
96
+ }
97
+ function endsWithFunc(left, right) {
98
+ if (left === undefined || right === undefined) {
99
+ return DEFAULT_RESULT;
100
+ }
101
+ return endsWith(left, right);
102
+ }
103
+ function equalFunc(left, right) {
104
+ return isEqual(left, right);
105
+ }
106
+ function notEqualFunc(left, right) {
107
+ return !isEqual(left, right);
108
+ }
109
+ function isEmptyFunc(left) {
110
+ if (typeof left === 'string') {
111
+ return !left;
112
+ }
113
+ else if (typeof left === 'number') {
114
+ return left === undefined;
115
+ }
116
+ else if (Array.isArray(left)) {
117
+ return !left.length;
118
+ }
119
+ else if (typeof left === 'object') {
120
+ return isEmpty(left);
121
+ }
122
+ return DEFAULT_RESULT;
123
+ }
124
+ function isNotEmptyFunc(left) {
125
+ if (typeof left === 'string') {
126
+ return !left;
127
+ }
128
+ else if (typeof left === 'number') {
129
+ return left !== undefined;
130
+ }
131
+ else if (Array.isArray(left)) {
132
+ return !!left.length;
133
+ }
134
+ else if (typeof left === 'object') {
135
+ return !isEmpty(left);
136
+ }
137
+ return DEFAULT_RESULT;
138
+ }
139
+ function greaterFunc(left, right) {
140
+ if (left === undefined || right === undefined) {
141
+ return DEFAULT_RESULT;
142
+ }
143
+ return parseFloat(left) > parseFloat(right);
144
+ }
145
+ function normalizeDate(raw) {
146
+ if (typeof raw === 'string' || typeof raw === 'number') {
147
+ var formats = ['', 'YYYY-MM-DD HH:mm:ss', 'X'];
148
+ if (/^\d{10}((\.\d+)*)$/.test(raw.toString())) {
149
+ formats = ['X', 'x', 'YYYY-MM-DD HH:mm:ss', ''];
150
+ }
151
+ else if (/^\d{13}((\.\d+)*)$/.test(raw.toString())) {
152
+ formats = ['x', 'X', 'YYYY-MM-DD HH:mm:ss', ''];
153
+ }
154
+ while (formats.length) {
155
+ var format = formats.shift();
156
+ var date = moment(raw, format);
157
+ if (date.isValid()) {
158
+ return date.toDate();
159
+ }
160
+ }
161
+ }
162
+ return raw;
163
+ }
164
+ function normalizeDateRange(raw) {
165
+ return (Array.isArray(raw) ? raw : raw.split(',')).map(function (item) {
166
+ return normalizeDate(String(item).trim());
167
+ });
168
+ }
169
+ function greaterForDateFunc(left, right) {
170
+ left = normalizeDate(left);
171
+ right = normalizeDate(right);
172
+ return moment(left).isAfter(moment(right), 's');
173
+ }
174
+ function greaterOrEqualForDateFunc(left, right) {
175
+ left = normalizeDate(left);
176
+ right = normalizeDate(right);
177
+ return moment(left).isSameOrAfter(moment(right), 's');
178
+ }
179
+ function greaterOrEqualFunc(left, right) {
180
+ if (left === undefined || right === undefined) {
181
+ return DEFAULT_RESULT;
182
+ }
183
+ return parseFloat(left) >= parseFloat(right);
184
+ }
185
+ function lessFunc(left, right) {
186
+ if (left === undefined || right === undefined) {
187
+ return DEFAULT_RESULT;
188
+ }
189
+ return parseFloat(left) < parseFloat(right);
190
+ }
191
+ function lessForDateFunc(left, right) {
192
+ left = normalizeDate(left);
193
+ right = normalizeDate(right);
194
+ return moment(left).isBefore(moment(right), 's');
195
+ }
196
+ function lessOrEqualForDateFunc(left, right) {
197
+ left = normalizeDate(left);
198
+ right = normalizeDate(right);
199
+ return moment(left).isSameOrBefore(moment(right), 's');
200
+ }
201
+ function lessOrEqualFunc(left, right) {
202
+ if (left === undefined || right === undefined) {
203
+ return DEFAULT_RESULT;
204
+ }
205
+ return parseFloat(left) <= parseFloat(right);
206
+ }
207
+ function likeFunc(left, right) {
208
+ if (left === undefined || right === undefined) {
209
+ return DEFAULT_RESULT;
210
+ }
211
+ return !!~left.indexOf(right);
212
+ }
213
+ function notLikeFunc(left, right) {
214
+ if (left === undefined || right === undefined) {
215
+ return DEFAULT_RESULT;
216
+ }
217
+ return !~left.indexOf(right);
218
+ }
219
+ function betweenFunc(left, right) {
220
+ if (typeof left === 'number' && right !== undefined) {
221
+ var _a = __read(right.sort(), 2), min = _a[0], max = _a[1];
222
+ return left >= parseFloat(min) && left <= parseFloat(max);
223
+ }
224
+ return DEFAULT_RESULT;
225
+ }
226
+ function betweenForDateFunc(left, right) {
227
+ if (right !== undefined) {
228
+ var _a = __read(normalizeDateRange(right), 2), min = _a[0], max = _a[1];
229
+ return moment(normalizeDate(left)).isBetween(min, max, 's', '[]');
230
+ }
231
+ return DEFAULT_RESULT;
232
+ }
233
+ function notBetweenFunc(left, right) {
234
+ if (typeof left === 'number' && right !== undefined) {
235
+ var _a = __read(right.sort(), 2), min = _a[0], max = _a[1];
236
+ return left < parseFloat(min) && left > parseFloat(max);
237
+ }
238
+ return DEFAULT_RESULT;
239
+ }
240
+ function notBetweenForDateFunc(left, right) {
241
+ if (right !== undefined) {
242
+ var _a = __read(normalizeDateRange(right), 2), min = _a[0], max = _a[1];
243
+ return !moment(normalizeDate(left)).isBetween(min, max, 's', '[]');
244
+ }
245
+ return DEFAULT_RESULT;
246
+ }
247
+ function selectAnyInFunc(left, right) {
248
+ if (!Array.isArray(right)) {
249
+ return DEFAULT_RESULT;
250
+ }
251
+ if (Array.isArray(left)) {
252
+ return right.every(function (item) { return left.includes(item); });
253
+ }
254
+ return right.includes(left);
255
+ }
256
+ function selectNotAnyInFunc(left, right) {
257
+ if (!Array.isArray(right)) {
258
+ return DEFAULT_RESULT;
259
+ }
260
+ if (Array.isArray(left)) {
261
+ return !right.every(function (item) { return left.includes(item); });
262
+ }
263
+ return !right.includes(left);
264
+ }
265
+ function registerConditionComputer(op, func, fieldType) {
266
+ conditionResolverMap["".concat(op).concat(fieldType ? 'For' + capitalize(fieldType) : '')] = func;
267
+ }
268
+ function getConditionComputers() {
269
+ return conditionResolverMap;
270
+ }
271
+ registerConditionComputer('greater', greaterFunc);
272
+ registerConditionComputer('greater', greaterForDateFunc, 'date');
273
+ registerConditionComputer('greater', greaterForDateFunc, 'time');
274
+ registerConditionComputer('greater', greaterForDateFunc, 'datetime');
275
+ registerConditionComputer('greater_or_equal', greaterOrEqualFunc);
276
+ registerConditionComputer('greater_or_equal', greaterOrEqualForDateFunc, 'date');
277
+ registerConditionComputer('greater_or_equal', greaterOrEqualForDateFunc, 'time');
278
+ registerConditionComputer('greater_or_equal', greaterOrEqualForDateFunc, 'datetime');
279
+ registerConditionComputer('less', lessFunc);
280
+ registerConditionComputer('less', lessForDateFunc, 'date');
281
+ registerConditionComputer('less', lessForDateFunc, 'time');
282
+ registerConditionComputer('less', lessForDateFunc, 'datetime');
283
+ registerConditionComputer('less_or_equal', lessOrEqualFunc);
284
+ registerConditionComputer('less_or_equal', lessOrEqualForDateFunc, 'date');
285
+ registerConditionComputer('less_or_equal', lessOrEqualForDateFunc, 'time');
286
+ registerConditionComputer('less_or_equal', lessOrEqualForDateFunc, 'datetime');
287
+ registerConditionComputer('is_empty', isEmptyFunc);
288
+ registerConditionComputer('is_not_empty', isNotEmptyFunc);
289
+ registerConditionComputer('between', betweenFunc);
290
+ registerConditionComputer('between', betweenForDateFunc, 'date');
291
+ registerConditionComputer('between', betweenForDateFunc, 'time');
292
+ registerConditionComputer('between', betweenForDateFunc, 'datetime');
293
+ registerConditionComputer('not_between', notBetweenFunc);
294
+ registerConditionComputer('not_between', notBetweenForDateFunc, 'date');
295
+ registerConditionComputer('not_between', notBetweenForDateFunc, 'time');
296
+ registerConditionComputer('not_between', notBetweenForDateFunc, 'datetime');
297
+ registerConditionComputer('equal', equalFunc);
298
+ registerConditionComputer('not_equal', notEqualFunc);
299
+ registerConditionComputer('like', likeFunc);
300
+ registerConditionComputer('not_like', notLikeFunc);
301
+ registerConditionComputer('select_any_in', selectAnyInFunc);
302
+ registerConditionComputer('select_not_any_in', selectNotAnyInFunc);
303
+ registerConditionComputer('starts_with', startsWithFunc);
304
+ registerConditionComputer('ends_with', endsWithFunc);
305
+
306
+ export { getConditionComputers, registerConditionComputer, resolveCondition };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -0,0 +1 @@
1
+ export declare const resolveVariableAndFilterForAsync: (path?: string, data?: object, defaultFilter?: string, fallbackValue?: (value: any) => any) => Promise<any>;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * amis-core v2.9.0
3
+ * Copyright 2018-2023 fex
4
+ */
5
+
6
+ import { __awaiter, __generator } from 'tslib';
7
+ import { parse, AsyncEvaluator } from 'amis-formula';
8
+
9
+ var resolveVariableAndFilterForAsync = function (path, data, defaultFilter, fallbackValue) {
10
+ if (data === void 0) { data = {}; }
11
+ if (defaultFilter === void 0) { defaultFilter = '| html'; }
12
+ if (fallbackValue === void 0) { fallbackValue = function (value) { return value; }; }
13
+ return __awaiter(void 0, void 0, void 0, function () {
14
+ var ast, ret, e_1;
15
+ return __generator(this, function (_a) {
16
+ switch (_a.label) {
17
+ case 0:
18
+ if (!path || typeof path !== 'string') {
19
+ return [2 /*return*/, undefined];
20
+ }
21
+ _a.label = 1;
22
+ case 1:
23
+ _a.trys.push([1, 3, , 4]);
24
+ ast = parse(path, {
25
+ evalMode: false,
26
+ allowFilter: true
27
+ });
28
+ return [4 /*yield*/, new AsyncEvaluator(data, {
29
+ defaultFilter: defaultFilter
30
+ }).evalute(ast)];
31
+ case 2:
32
+ ret = _a.sent();
33
+ return [2 /*return*/, ret == null && !~path.indexOf('default') && !~path.indexOf('now')
34
+ ? fallbackValue(ret)
35
+ : ret];
36
+ case 3:
37
+ e_1 = _a.sent();
38
+ console.warn(e_1);
39
+ return [2 /*return*/, undefined];
40
+ case 4: return [2 /*return*/];
41
+ }
42
+ });
43
+ });
44
+ };
45
+
46
+ export { resolveVariableAndFilterForAsync };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -7,5 +7,12 @@ export declare function registerTplEnginer(name: string, enginer: Enginer): void
7
7
  export declare function filter(tpl?: any, data?: object, ...rest: Array<any>): string;
8
8
  export declare function setCustomEvalExpression(fn: (expression: string, data?: any) => boolean): void;
9
9
  export declare function evalExpression(expression: string, data?: object): boolean;
10
+ /**
11
+ * 解析表达式(支持condition-builder)
12
+ * @param expression 表达式 or condition-builder对象
13
+ * @param data 上下文
14
+ * @returns
15
+ */
16
+ export declare function evalExpressionWithConditionBuilder(expression: any, data?: object, defaultResult?: boolean): Promise<boolean>;
10
17
  export declare function setCustomEvalJs(fn: (expression: string, data?: any) => any): void;
11
18
  export declare function evalJS(js: string, data: object): any;
package/esm/utils/tpl.js CHANGED
@@ -1,12 +1,13 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
6
- import { __spreadArray, __read } from 'tslib';
6
+ import { __spreadArray, __read, __awaiter, __generator } from 'tslib';
7
7
  import { register } from './tpl-builtin.js';
8
8
  import { register as register$1 } from './tpl-lodash.js';
9
9
  import { getFilters, parse, evaluate } from 'amis-formula';
10
+ import { resolveCondition } from './resolveCondition.js';
10
11
 
11
12
  var enginers = {};
12
13
  function registerTplEnginer(name, enginer) {
@@ -79,6 +80,25 @@ function evalExpression(expression, data) {
79
80
  return false;
80
81
  }
81
82
  }
83
+ /**
84
+ * 解析表达式(支持condition-builder)
85
+ * @param expression 表达式 or condition-builder对象
86
+ * @param data 上下文
87
+ * @returns
88
+ */
89
+ function evalExpressionWithConditionBuilder(expression, data, defaultResult) {
90
+ return __awaiter(this, void 0, void 0, function () {
91
+ return __generator(this, function (_a) {
92
+ switch (_a.label) {
93
+ case 0:
94
+ if (!(Object.prototype.toString.call(expression) === '[object Object]')) return [3 /*break*/, 2];
95
+ return [4 /*yield*/, resolveCondition(expression, data, defaultResult)];
96
+ case 1: return [2 /*return*/, _a.sent()];
97
+ case 2: return [2 /*return*/, evalExpression(String(expression), data)];
98
+ }
99
+ });
100
+ });
101
+ }
82
102
  var AST_CACHE = {};
83
103
  function evalFormula(expression, data) {
84
104
  var ast = AST_CACHE[expression] ||
@@ -128,4 +148,4 @@ function evalJS(js, data) {
128
148
  });
129
149
  });
130
150
 
131
- export { evalExpression, evalJS, filter, registerTplEnginer, setCustomEvalExpression, setCustomEvalJs };
151
+ export { evalExpression, evalExpressionWithConditionBuilder, evalJS, filter, registerTplEnginer, setCustomEvalExpression, setCustomEvalJs };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
package/lib/Root.d.ts CHANGED
@@ -21,7 +21,7 @@ export interface RootProps {
21
21
  }
22
22
  export interface RootWrapperProps {
23
23
  env: RendererEnv;
24
- children: React.ReactNode;
24
+ children: React.ReactNode | Array<React.ReactNode>;
25
25
  schema: SchemaNode;
26
26
  rootStore: IRendererStore;
27
27
  theme: string;
package/lib/Root.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -23,5 +23,5 @@ export declare class RootRenderer extends React.Component<RootRendererProps> {
23
23
  handleDrawerClose(): void;
24
24
  openFeedback(dialog: any, ctx: any): Promise<unknown>;
25
25
  reloadTarget(scoped: IScopedContext, target: string, data?: any): void;
26
- render(): React.ReactNode;
26
+ render(): string | number | boolean | JSX.Element | React.ReactFragment | null | undefined;
27
27
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5
 
@@ -122,11 +122,11 @@ var RootRenderer = /** @class */ (function (_super) {
122
122
  }
123
123
  else if (action.actionType === 'dialog') {
124
124
  store.setCurrentAction(action);
125
- store.openDialog(ctx);
125
+ store.openDialog(ctx, undefined, undefined, delegate);
126
126
  }
127
127
  else if (action.actionType === 'drawer') {
128
128
  store.setCurrentAction(action);
129
- store.openDrawer(ctx);
129
+ store.openDrawer(ctx, undefined, undefined, delegate);
130
130
  }
131
131
  else if (action.actionType === 'toast') {
132
132
  (_b = (_a = action.toast) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b.forEach(function (item) {
@@ -160,7 +160,7 @@ var RootRenderer = /** @class */ (function (_super) {
160
160
  redirect = action.redirect && tpl.filter(action.redirect, store.data);
161
161
  redirect && env.jumpTo(redirect, action);
162
162
  action.reload &&
163
- this.reloadTarget(delegate || this.context, action.reload, store.data);
163
+ this.reloadTarget(delegate || this.context, tpl.filter(action.reload, ctx), store.data);
164
164
  return [2 /*return*/];
165
165
  }
166
166
  });
@@ -192,6 +192,7 @@ var RootRenderer = /** @class */ (function (_super) {
192
192
  }
193
193
  };
194
194
  RootRenderer.prototype.handleDialogConfirm = function (values, action) {
195
+ var _a;
195
196
  var args = [];
196
197
  for (var _i = 2; _i < arguments.length; _i++) {
197
198
  args[_i - 2] = arguments[_i];
@@ -206,7 +207,13 @@ var RootRenderer = /** @class */ (function (_super) {
206
207
  dialog.onConfirm.apply(dialog, tslib.__spreadArray([values, action], tslib.__read(args), false)) === false) {
207
208
  return;
208
209
  }
210
+ var dialogAction = store.action;
211
+ var reload = (_a = action.reload) !== null && _a !== void 0 ? _a : dialogAction.reload;
212
+ var scoped = store.getDialogScoped() || this.context;
209
213
  store.closeDialog(true);
214
+ if (reload) {
215
+ scoped.reload(reload, store.data);
216
+ }
210
217
  };
211
218
  RootRenderer.prototype.handleDialogClose = function (confirmed) {
212
219
  if (confirmed === void 0) { confirmed = false; }
@@ -214,6 +221,7 @@ var RootRenderer = /** @class */ (function (_super) {
214
221
  store.closeDialog(confirmed);
215
222
  };
216
223
  RootRenderer.prototype.handleDrawerConfirm = function (values, action) {
224
+ var _a;
217
225
  var args = [];
218
226
  for (var _i = 2; _i < arguments.length; _i++) {
219
227
  args[_i - 2] = arguments[_i];
@@ -228,7 +236,16 @@ var RootRenderer = /** @class */ (function (_super) {
228
236
  drawer.onConfirm.apply(drawer, tslib.__spreadArray([values, action], tslib.__read(args), false)) === false) {
229
237
  return;
230
238
  }
239
+ var drawerAction = store.action;
240
+ var reload = (_a = action.reload) !== null && _a !== void 0 ? _a : drawerAction.reload;
241
+ var scoped = store.getDrawerScoped() || this.context;
231
242
  store.closeDrawer();
243
+ // 稍等会,等动画结束。
244
+ setTimeout(function () {
245
+ if (reload) {
246
+ scoped.reload(reload, store.data);
247
+ }
248
+ }, 300);
232
249
  };
233
250
  RootRenderer.prototype.handleDrawerClose = function () {
234
251
  var store = this.store;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { RendererConfig, RendererEnv, RendererProps } from './factory';
3
+ import { IScopedContext } from './Scoped';
3
4
  import { Schema, SchemaNode } from './types';
4
5
  import { RendererEvent } from './utils/renderer-event';
5
6
  interface SchemaRendererProps extends Partial<RendererProps> {
@@ -9,7 +10,7 @@ interface SchemaRendererProps extends Partial<RendererProps> {
9
10
  }
10
11
  export declare class SchemaRenderer extends React.Component<SchemaRendererProps, any> {
11
12
  static displayName: string;
12
- static contextType: React.Context<import("./Scoped").IScopedContext>;
13
+ static contextType: React.Context<IScopedContext>;
13
14
  rendererKey: string;
14
15
  renderer: RendererConfig | null;
15
16
  ref: any;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v2.8.0
2
+ * amis-core v2.9.0
3
3
  * Copyright 2018-2023 fex
4
4
  */
5
5