amis-core 6.6.0 → 6.8.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 (312) hide show
  1. package/esm/Root.js +4 -3
  2. package/esm/RootRenderer.d.ts +1 -1
  3. package/esm/RootRenderer.js +1 -1
  4. package/esm/SchemaRenderer.d.ts +0 -1
  5. package/esm/SchemaRenderer.js +19 -10
  6. package/esm/Scoped.js +2 -1
  7. package/esm/StatusScoped.js +1 -1
  8. package/esm/WithRootStore.js +1 -1
  9. package/esm/WithStore.js +8 -8
  10. package/esm/actions/Action.js +33 -31
  11. package/esm/actions/AjaxAction.js +1 -1
  12. package/esm/actions/BreakAction.js +1 -1
  13. package/esm/actions/BroadcastAction.js +1 -1
  14. package/esm/actions/CmptAction.js +55 -48
  15. package/esm/actions/ContinueAction.js +1 -1
  16. package/esm/actions/CopyAction.js +1 -1
  17. package/esm/actions/CustomAction.js +12 -3
  18. package/esm/actions/DialogAction.js +3 -1
  19. package/esm/actions/DrawerAction.js +2 -1
  20. package/esm/actions/EmailAction.js +1 -1
  21. package/esm/actions/EventAction.js +2 -1
  22. package/esm/actions/LinkAction.js +1 -1
  23. package/esm/actions/LoopAction.js +2 -1
  24. package/esm/actions/PageAction.js +1 -1
  25. package/esm/actions/ParallelAction.js +1 -1
  26. package/esm/actions/PrintAction.js +1 -1
  27. package/esm/actions/StatusAction.js +1 -1
  28. package/esm/actions/SwitchAction.js +1 -1
  29. package/esm/actions/ToastAction.js +1 -1
  30. package/esm/actions/WaitAction.js +1 -1
  31. package/esm/components/CustomStyle.js +1 -1
  32. package/esm/components/ErrorBoundary.js +1 -1
  33. package/esm/components/LazyComponent.js +1 -1
  34. package/esm/components/Overlay.js +2 -1
  35. package/esm/components/PopOver.d.ts +2 -0
  36. package/esm/components/PopOver.js +5 -4
  37. package/esm/env.d.ts +4 -0
  38. package/esm/env.js +1 -1
  39. package/esm/envOverwrite.js +1 -1
  40. package/esm/factory.js +1 -1
  41. package/esm/index.js +3 -3
  42. package/esm/locale.js +2 -1
  43. package/esm/polyfills.js +1 -1
  44. package/esm/renderers/Form.js +123 -25
  45. package/esm/renderers/Item.d.ts +97 -12
  46. package/esm/renderers/Item.js +180 -126
  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.js +2 -1
  52. package/esm/store/app.d.ts +1 -0
  53. package/esm/store/app.js +2 -1
  54. package/esm/store/combo.d.ts +411 -0
  55. package/esm/store/combo.js +1 -1
  56. package/esm/store/crud.d.ts +1 -0
  57. package/esm/store/crud.js +2 -1
  58. package/esm/store/form.d.ts +171 -0
  59. package/esm/store/form.js +2 -1
  60. package/esm/store/formItem.d.ts +5 -0
  61. package/esm/store/formItem.js +30 -8
  62. package/esm/store/iRenderer.d.ts +1 -0
  63. package/esm/store/iRenderer.js +8 -3
  64. package/esm/store/index.js +1 -1
  65. package/esm/store/list.d.ts +1 -0
  66. package/esm/store/list.js +1 -1
  67. package/esm/store/manager.js +1 -1
  68. package/esm/store/modal.d.ts +1 -0
  69. package/esm/store/modal.js +1 -1
  70. package/esm/store/node.js +1 -1
  71. package/esm/store/pagination.d.ts +1 -0
  72. package/esm/store/pagination.js +2 -1
  73. package/esm/store/root.d.ts +1 -0
  74. package/esm/store/root.js +2 -1
  75. package/esm/store/service.d.ts +1 -0
  76. package/esm/store/service.js +2 -1
  77. package/esm/store/status.js +1 -1
  78. package/esm/store/table.d.ts +382 -21
  79. package/esm/store/table.js +84 -54
  80. package/esm/store/table2.d.ts +1 -0
  81. package/esm/store/table2.js +1 -1
  82. package/esm/theme.js +1 -1
  83. package/esm/types.d.ts +1 -1
  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 +2 -2
  88. package/esm/utils/RootClose.js +1 -1
  89. package/esm/utils/SimpleMap.js +1 -1
  90. package/esm/utils/api.js +2 -2
  91. package/esm/utils/arraySlice.js +1 -1
  92. package/esm/utils/attachmentAdpator.js +1 -1
  93. package/esm/utils/autobind.js +1 -1
  94. package/esm/utils/browser.js +1 -1
  95. package/esm/utils/columnsSplit.js +1 -1
  96. package/esm/utils/concatData.js +1 -1
  97. package/esm/utils/dataMapping.js +1 -1
  98. package/esm/utils/date.js +1 -1
  99. package/esm/utils/debug.js +17 -3
  100. package/esm/utils/decodeEntity.js +1 -1
  101. package/esm/utils/dom.js +1 -1
  102. package/esm/utils/errors.js +1 -1
  103. package/esm/utils/escapeHtml.js +1 -1
  104. package/esm/utils/filter-schema.js +1 -1
  105. package/esm/utils/filter.js +1 -1
  106. package/esm/utils/formatDuration.js +1 -1
  107. package/esm/utils/formula.js +2 -1
  108. package/esm/utils/getVariable.js +1 -1
  109. package/esm/utils/grammar.js +1 -1
  110. package/esm/utils/handleAction.js +1 -1
  111. package/esm/utils/helper.d.ts +5 -1
  112. package/esm/utils/helper.js +37 -8
  113. package/esm/utils/highlight.js +1 -1
  114. package/esm/utils/icon.js +1 -1
  115. package/esm/utils/image.js +1 -1
  116. package/esm/utils/isPureVariable.js +2 -2
  117. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  118. package/esm/utils/keyToPath.js +1 -1
  119. package/esm/utils/labelToString.js +1 -1
  120. package/esm/utils/makeSorter.js +1 -1
  121. package/esm/utils/math.js +1 -1
  122. package/esm/utils/memoryParse.d.ts +2 -1
  123. package/esm/utils/memoryParse.js +10 -6
  124. package/esm/utils/normalizeLink.js +1 -1
  125. package/esm/utils/normalizeOptions.js +1 -1
  126. package/esm/utils/object.d.ts +2 -4
  127. package/esm/utils/object.js +1 -1
  128. package/esm/utils/offset.js +1 -1
  129. package/esm/utils/offsetParent.js +1 -1
  130. package/esm/utils/optionValueCompare.js +1 -1
  131. package/esm/utils/position.js +1 -1
  132. package/esm/utils/prettyBytes.js +1 -1
  133. package/esm/utils/printElement.js +1 -1
  134. package/esm/utils/renderer-event.js +5 -3
  135. package/esm/utils/replaceText.js +1 -1
  136. package/esm/utils/resize-sensor.js +30 -1
  137. package/esm/utils/resolveCondition.js +2 -1
  138. package/esm/utils/resolveVariable.js +1 -1
  139. package/esm/utils/resolveVariableAndFilter.js +1 -1
  140. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  141. package/esm/utils/scrollPosition.js +1 -1
  142. package/esm/utils/string2regExp.js +1 -1
  143. package/esm/utils/stripNumber.js +1 -1
  144. package/esm/utils/style-helper.d.ts +4 -2
  145. package/esm/utils/style-helper.js +27 -13
  146. package/esm/utils/style.js +2 -1
  147. package/esm/utils/toNumber.js +1 -1
  148. package/esm/utils/tokenize.js +1 -1
  149. package/esm/utils/tpl-builtin.js +2 -1
  150. package/esm/utils/tpl-lodash.js +2 -1
  151. package/esm/utils/tpl.js +1 -1
  152. package/esm/utils/uncontrollable.js +1 -1
  153. package/esm/utils/validateId.js +3 -3
  154. package/esm/utils/validations.js +2 -1
  155. package/esm/utils/visitedCache.d.ts +46 -0
  156. package/esm/utils/visitedCache.js +124 -0
  157. package/lib/Root.js +4 -3
  158. package/lib/RootRenderer.js +1 -1
  159. package/lib/SchemaRenderer.d.ts +0 -1
  160. package/lib/SchemaRenderer.js +19 -10
  161. package/lib/Scoped.js +2 -1
  162. package/lib/StatusScoped.js +1 -1
  163. package/lib/WithRootStore.js +1 -1
  164. package/lib/WithStore.js +8 -8
  165. package/lib/actions/Action.js +33 -31
  166. package/lib/actions/AjaxAction.js +1 -1
  167. package/lib/actions/BreakAction.js +1 -1
  168. package/lib/actions/BroadcastAction.js +1 -1
  169. package/lib/actions/CmptAction.js +55 -48
  170. package/lib/actions/ContinueAction.js +1 -1
  171. package/lib/actions/CopyAction.js +1 -1
  172. package/lib/actions/CustomAction.js +12 -3
  173. package/lib/actions/DialogAction.js +3 -1
  174. package/lib/actions/DrawerAction.js +2 -1
  175. package/lib/actions/EmailAction.js +1 -1
  176. package/lib/actions/EventAction.js +2 -1
  177. package/lib/actions/LinkAction.js +1 -1
  178. package/lib/actions/LoopAction.js +2 -1
  179. package/lib/actions/PageAction.js +1 -1
  180. package/lib/actions/ParallelAction.js +1 -1
  181. package/lib/actions/PrintAction.js +1 -1
  182. package/lib/actions/StatusAction.js +1 -1
  183. package/lib/actions/SwitchAction.js +1 -1
  184. package/lib/actions/ToastAction.js +1 -1
  185. package/lib/actions/WaitAction.js +1 -1
  186. package/lib/components/CustomStyle.js +1 -1
  187. package/lib/components/ErrorBoundary.js +1 -1
  188. package/lib/components/LazyComponent.js +1 -1
  189. package/lib/components/Overlay.js +2 -1
  190. package/lib/components/PopOver.d.ts +2 -0
  191. package/lib/components/PopOver.js +5 -4
  192. package/lib/env.d.ts +4 -0
  193. package/lib/env.js +1 -1
  194. package/lib/envOverwrite.js +1 -1
  195. package/lib/factory.js +1 -1
  196. package/lib/index.js +3 -2
  197. package/lib/locale.js +2 -1
  198. package/lib/polyfills.js +1 -1
  199. package/lib/renderers/Form.js +122 -24
  200. package/lib/renderers/Item.d.ts +97 -12
  201. package/lib/renderers/Item.js +179 -125
  202. package/lib/renderers/Options.js +2 -1
  203. package/lib/renderers/Placeholder.js +1 -1
  204. package/lib/renderers/builtin.js +1 -1
  205. package/lib/renderers/register.js +1 -1
  206. package/lib/renderers/wrapControl.js +2 -1
  207. package/lib/store/app.d.ts +1 -0
  208. package/lib/store/app.js +2 -1
  209. package/lib/store/combo.d.ts +435 -24
  210. package/lib/store/combo.js +1 -1
  211. package/lib/store/crud.d.ts +1 -0
  212. package/lib/store/crud.js +2 -1
  213. package/lib/store/form.d.ts +181 -10
  214. package/lib/store/form.js +2 -1
  215. package/lib/store/formItem.d.ts +5 -0
  216. package/lib/store/formItem.js +30 -8
  217. package/lib/store/iRenderer.d.ts +1 -0
  218. package/lib/store/iRenderer.js +8 -3
  219. package/lib/store/index.js +1 -1
  220. package/lib/store/list.d.ts +1 -0
  221. package/lib/store/list.js +1 -1
  222. package/lib/store/manager.js +1 -1
  223. package/lib/store/modal.d.ts +1 -0
  224. package/lib/store/modal.js +1 -1
  225. package/lib/store/node.js +1 -1
  226. package/lib/store/pagination.d.ts +1 -0
  227. package/lib/store/pagination.js +2 -1
  228. package/lib/store/root.d.ts +1 -0
  229. package/lib/store/root.js +2 -1
  230. package/lib/store/service.d.ts +1 -0
  231. package/lib/store/service.js +2 -1
  232. package/lib/store/status.js +1 -1
  233. package/lib/store/table.d.ts +402 -41
  234. package/lib/store/table.js +84 -54
  235. package/lib/store/table2.d.ts +1 -0
  236. package/lib/store/table2.js +1 -1
  237. package/lib/theme.js +1 -1
  238. package/lib/types.d.ts +1 -1
  239. package/lib/utils/Animation.js +1 -1
  240. package/lib/utils/ColorScale.js +1 -1
  241. package/lib/utils/DataSchema.js +1 -1
  242. package/lib/utils/DataScope.js +2 -2
  243. package/lib/utils/RootClose.js +1 -1
  244. package/lib/utils/SimpleMap.js +1 -1
  245. package/lib/utils/api.js +2 -2
  246. package/lib/utils/arraySlice.js +1 -1
  247. package/lib/utils/attachmentAdpator.js +1 -1
  248. package/lib/utils/autobind.js +1 -1
  249. package/lib/utils/browser.js +1 -1
  250. package/lib/utils/columnsSplit.js +1 -1
  251. package/lib/utils/concatData.js +1 -1
  252. package/lib/utils/dataMapping.js +1 -1
  253. package/lib/utils/date.js +1 -1
  254. package/lib/utils/debug.js +17 -3
  255. package/lib/utils/decodeEntity.js +1 -1
  256. package/lib/utils/dom.js +1 -1
  257. package/lib/utils/errors.js +1 -1
  258. package/lib/utils/escapeHtml.js +1 -1
  259. package/lib/utils/filter-schema.js +1 -1
  260. package/lib/utils/filter.js +1 -1
  261. package/lib/utils/formatDuration.js +1 -1
  262. package/lib/utils/formula.js +2 -1
  263. package/lib/utils/getVariable.js +1 -1
  264. package/lib/utils/grammar.js +1 -1
  265. package/lib/utils/handleAction.js +1 -1
  266. package/lib/utils/helper.d.ts +5 -1
  267. package/lib/utils/helper.js +36 -6
  268. package/lib/utils/highlight.js +1 -1
  269. package/lib/utils/icon.js +1 -1
  270. package/lib/utils/image.js +1 -1
  271. package/lib/utils/isPureVariable.js +2 -2
  272. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  273. package/lib/utils/keyToPath.js +1 -1
  274. package/lib/utils/labelToString.js +1 -1
  275. package/lib/utils/makeSorter.js +1 -1
  276. package/lib/utils/math.js +1 -1
  277. package/lib/utils/memoryParse.d.ts +2 -1
  278. package/lib/utils/memoryParse.js +10 -6
  279. package/lib/utils/normalizeLink.js +1 -1
  280. package/lib/utils/normalizeOptions.js +1 -1
  281. package/lib/utils/object.d.ts +2 -4
  282. package/lib/utils/object.js +1 -1
  283. package/lib/utils/offset.js +1 -1
  284. package/lib/utils/offsetParent.js +1 -1
  285. package/lib/utils/optionValueCompare.js +1 -1
  286. package/lib/utils/position.js +1 -1
  287. package/lib/utils/prettyBytes.js +1 -1
  288. package/lib/utils/printElement.js +1 -1
  289. package/lib/utils/renderer-event.js +5 -3
  290. package/lib/utils/replaceText.js +1 -1
  291. package/lib/utils/resize-sensor.js +30 -1
  292. package/lib/utils/resolveCondition.js +2 -1
  293. package/lib/utils/resolveVariable.js +1 -1
  294. package/lib/utils/resolveVariableAndFilter.js +1 -1
  295. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  296. package/lib/utils/scrollPosition.js +1 -1
  297. package/lib/utils/string2regExp.js +1 -1
  298. package/lib/utils/stripNumber.js +1 -1
  299. package/lib/utils/style-helper.d.ts +4 -2
  300. package/lib/utils/style-helper.js +27 -13
  301. package/lib/utils/style.js +2 -1
  302. package/lib/utils/toNumber.js +1 -1
  303. package/lib/utils/tokenize.js +1 -1
  304. package/lib/utils/tpl-builtin.js +2 -1
  305. package/lib/utils/tpl-lodash.js +2 -1
  306. package/lib/utils/tpl.js +1 -1
  307. package/lib/utils/uncontrollable.js +1 -1
  308. package/lib/utils/validateId.js +3 -3
  309. package/lib/utils/validations.js +2 -1
  310. package/lib/utils/visitedCache.d.ts +46 -0
  311. package/lib/utils/visitedCache.js +128 -0
  312. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.6.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -39,6 +39,7 @@ require('../utils/filter.js');
39
39
  require('lodash/isObject');
40
40
  require('lodash/isString');
41
41
  require('lodash/isBoolean');
42
+ require('../utils/memoryParse.js');
42
43
  require('@rc-component/mini-decimal');
43
44
  require('../utils/highlight.js');
44
45
  require('../utils/icon.js');
@@ -96,8 +97,7 @@ var FormItemWrap = /** @class */ (function (_super) {
96
97
  if (skipIfExits === void 0) { skipIfExits = false; }
97
98
  return tslib.__awaiter(_this, void 0, void 0, function () {
98
99
  var _a, autoFill, onBulkChange, formItem, data_1, itemName, ctx, result, e_1;
99
- var _b;
100
- var _c, _d;
100
+ var _b, _c, _d;
101
101
  return tslib.__generator(this, function (_e) {
102
102
  switch (_e.label) {
103
103
  case 0:
@@ -121,29 +121,22 @@ var FormItemWrap = /** @class */ (function (_super) {
121
121
  return [3 /*break*/, 3];
122
122
  case 1:
123
123
  itemName = formItem.name;
124
- ctx = object.createObject(data_1, (_b = {},
125
- _b[itemName || ''] = term,
126
- _b.__term = term,
127
- _b));
124
+ ctx = object.createObject(data_1, {
125
+ __term: term
126
+ });
127
+ object.setVariable(ctx, itemName, term);
128
128
  if (!(forceLoad ||
129
129
  (api.isEffectiveApi(autoFill.api, ctx) && this.lastSearchTerm !== term))) return [3 /*break*/, 3];
130
- return [4 /*yield*/, formItem.loadAutoUpdateData(autoFill.api, ctx, !!((_c = autoFill.api) === null || _c === void 0 ? void 0 : _c.silent))];
130
+ return [4 /*yield*/, formItem.loadAutoUpdateData(autoFill.api, ctx, !!((_b = autoFill.api) === null || _b === void 0 ? void 0 : _b.silent))];
131
131
  case 2:
132
132
  result = _e.sent();
133
133
  this.lastSearchTerm =
134
- (_d = (result && getVariable.getVariable(result, itemName))) !== null && _d !== void 0 ? _d : term;
134
+ (_c = (result && getVariable.getVariable(result, itemName))) !== null && _c !== void 0 ? _c : term;
135
135
  // 如果没有返回不应该处理
136
136
  if (!result) {
137
137
  return [2 /*return*/];
138
138
  }
139
- if (autoFill === null || autoFill === void 0 ? void 0 : autoFill.fillMapping) {
140
- result = dataMapping.dataMapping(autoFill.fillMapping, result);
141
- }
142
- if (result) {
143
- // 不能把自己给清了吧
144
- object.setVariable(result, itemName, getVariable.getVariable(result, itemName) || formItem.tmpValue);
145
- onBulkChange === null || onBulkChange === void 0 ? void 0 : onBulkChange(result);
146
- }
139
+ this.applyMapping((_d = autoFill === null || autoFill === void 0 ? void 0 : autoFill.fillMapping) !== null && _d !== void 0 ? _d : { '&': '$$' }, result, false, true);
147
140
  _e.label = 3;
148
141
  case 3: return [3 /*break*/, 5];
149
142
  case 4:
@@ -158,15 +151,12 @@ var FormItemWrap = /** @class */ (function (_super) {
158
151
  trailing: true,
159
152
  leading: false
160
153
  });
161
- _this.state = {
162
- isOpened: false
163
- };
164
154
  var model = props.formItem, formInited = props.formInited, addHook = props.addHook, initAutoFill = props.initAutoFill;
165
155
  if (!model) {
166
156
  return _this;
167
157
  }
168
158
  _this.toDispose.push(mobx.reaction(function () {
169
- return "".concat(model.errors.join('')).concat(model.isFocused).concat(model.dialogOpen).concat(JSON.stringify(model.filteredOptions));
159
+ return "".concat(model.errors.join('')).concat(model.isFocused).concat(model.dialogOpen).concat(JSON.stringify(model.filteredOptions)).concat(model.popOverOpen);
170
160
  }, function () { return _this.forceUpdate(); }));
171
161
  var onInit = function () {
172
162
  var _a;
@@ -224,18 +214,26 @@ var FormItemWrap = /** @class */ (function (_super) {
224
214
  this.handleAutoFill('focus');
225
215
  };
226
216
  FormItemWrap.prototype.handleBlur = function (e) {
227
- var model = this.props.formItem;
217
+ var _a = this.props, model = _a.formItem, autoFill = _a.autoFill;
228
218
  model && model.blur();
229
219
  this.props.onBlur && this.props.onBlur(e);
220
+ if (!autoFill ||
221
+ (autoFill && !(autoFill === null || autoFill === void 0 ? void 0 : autoFill.hasOwnProperty('showSuggestion')))) {
222
+ return;
223
+ }
224
+ this.handleAutoFill('blur');
230
225
  };
231
226
  FormItemWrap.prototype.handleAutoFill = function (type) {
232
227
  var _this = this;
233
- var _a = this.props, autoFill = _a.autoFill; _a.onBulkChange; var formItem = _a.formItem, data = _a.data;
228
+ var _a = this.props, autoFill = _a.autoFill, formItem = _a.formItem, data = _a.data;
234
229
  var trigger = autoFill.trigger, mode = autoFill.mode;
235
230
  if (trigger === type && mode === 'popOver') {
236
231
  // 参照录入 popOver形式
237
- this.setState({
238
- isOpened: true
232
+ formItem === null || formItem === void 0 ? void 0 : formItem.openPopOver(this.buildAutoFillSchema(), data, function (confirmed, result) {
233
+ if (!confirmed || !(result === null || result === void 0 ? void 0 : result.selectedItems)) {
234
+ return;
235
+ }
236
+ _this.updateAutoFillData(result.selectedItems);
239
237
  });
240
238
  }
241
239
  else if (
@@ -243,7 +241,7 @@ var FormItemWrap = /** @class */ (function (_super) {
243
241
  trigger === type &&
244
242
  (mode === 'dialog' || mode === 'drawer')) {
245
243
  formItem === null || formItem === void 0 ? void 0 : formItem.openDialog(this.buildAutoFillSchema(), data, function (confirmed, result) {
246
- if (!(result === null || result === void 0 ? void 0 : result.selectedItems)) {
244
+ if (!confirmed || !(result === null || result === void 0 ? void 0 : result.selectedItems)) {
247
245
  return;
248
246
  }
249
247
  _this.updateAutoFillData(result.selectedItems);
@@ -251,17 +249,21 @@ var FormItemWrap = /** @class */ (function (_super) {
251
249
  }
252
250
  };
253
251
  FormItemWrap.prototype.updateAutoFillData = function (context) {
254
- var _a = this.props, formStore = _a.formStore, autoFill = _a.autoFill, onBulkChange = _a.onBulkChange;
255
- var fillMapping = autoFill.fillMapping, multiple = autoFill.multiple;
252
+ var _a = this.props, data = _a.data, autoFill = _a.autoFill; _a.onBulkChange;
253
+ var fillMapping = autoFill.fillMapping; autoFill.multiple;
256
254
  // form原始数据
257
- var data = formStore === null || formStore === void 0 ? void 0 : formStore.data;
258
- var contextData = object.createObject(tslib.__assign({ items: !multiple ? [context] : context }, data), tslib.__assign({}, context));
259
- var responseData = {};
260
- responseData = dataMapping.dataMapping(fillMapping, contextData);
261
- if (!multiple && !fillMapping) {
262
- responseData = context;
263
- }
264
- onBulkChange === null || onBulkChange === void 0 ? void 0 : onBulkChange(responseData);
255
+ var contextData = Array.isArray(context)
256
+ ? object.createObject(data, {
257
+ items: context
258
+ })
259
+ : object.createObjectFromChain([
260
+ data,
261
+ {
262
+ items: [context]
263
+ },
264
+ context
265
+ ]);
266
+ this.applyMapping(fillMapping !== null && fillMapping !== void 0 ? fillMapping : {}, contextData, false);
265
267
  };
266
268
  FormItemWrap.prototype.syncOptionAutoFill = function (selectedOptions, skipIfExits) {
267
269
  if (skipIfExits === void 0) { skipIfExits = false; }
@@ -275,83 +277,107 @@ var FormItemWrap = /** @class */ (function (_super) {
275
277
  autoFill &&
276
278
  !helper.isEmpty(autoFill) &&
277
279
  formItem.filteredOptions.length) {
278
- var toSync_1 = dataMapping.dataMapping(autoFill, multiple
280
+ this.applyMapping(autoFill, multiple
279
281
  ? {
280
282
  items: selectedOptions.map(function (item) {
281
283
  return object.createObject(tslib.__assign(tslib.__assign({}, data), { ancestors: helper.getTreeAncestors(formItem.filteredOptions, item, true) }), item);
282
284
  })
283
285
  }
284
- : object.createObject(tslib.__assign(tslib.__assign({}, data), { ancestors: helper.getTreeAncestors(formItem.filteredOptions, selectedOptions[0], true) }), selectedOptions[0]));
285
- var tmpData_1 = tslib.__assign({}, data);
286
- var result_1 = tslib.__assign({}, toSync_1);
287
- Object.keys(autoFill).forEach(function (key) {
288
- var keys = keyToPath.keyToPath(key);
289
- var value = getVariable.getVariable(toSync_1, key);
290
- if (skipIfExits) {
291
- var originValue = getVariable.getVariable(data, key);
292
- if (typeof originValue !== 'undefined') {
293
- value = originValue;
294
- }
295
- }
296
- object.setVariable(result_1, key, value);
297
- // 如果左边的 key 是一个路径
298
- // 这里不希望直接把原始对象都给覆盖没了
299
- // 而是保留原始的对象,只修改指定的属性
300
- if (keys.length > 1 && isPlainObject__default["default"](tmpData_1[keys[0]])) {
301
- // 存在情况:依次更新同一子路径的多个key,eg: a.b.c1 a.b.c2,所以需要同步更新data
302
- object.setVariable(tmpData_1, key, value);
303
- result_1[keys[0]] = tmpData_1[keys[0]];
286
+ : object.createObject(tslib.__assign(tslib.__assign({}, data), { ancestors: helper.getTreeAncestors(formItem.filteredOptions, selectedOptions[0], true) }), selectedOptions[0]), skipIfExits);
287
+ }
288
+ };
289
+ /**
290
+ * 应用映射函数,根据给定的映射关系,更新数据对象
291
+ *
292
+ * @param mapping 映射关系,类型为任意类型
293
+ * @param ctx 上下文对象,类型为任意类型
294
+ * @param skipIfExits 是否跳过已存在的属性,默认为 false
295
+ */
296
+ FormItemWrap.prototype.applyMapping = function (mapping, ctx, skipIfExits, ignoreSelf) {
297
+ if (skipIfExits === void 0) { skipIfExits = false; }
298
+ if (ignoreSelf === void 0) { ignoreSelf = false; }
299
+ var _a = this.props, onBulkChange = _a.onBulkChange, data = _a.data, formItem = _a.formItem;
300
+ var toSync = dataMapping.dataMapping(mapping, ctx);
301
+ var tmpData = tslib.__assign({}, data);
302
+ var result = tslib.__assign({}, toSync);
303
+ Object.keys(mapping).forEach(function (key) {
304
+ if (key === '&') {
305
+ return;
306
+ }
307
+ var keys = keyToPath.keyToPath(key);
308
+ var value = getVariable.getVariable(toSync, key);
309
+ if (skipIfExits) {
310
+ var originValue = getVariable.getVariable(data, key);
311
+ if (typeof originValue !== 'undefined') {
312
+ value = originValue;
304
313
  }
305
- });
306
- onBulkChange(result_1);
314
+ }
315
+ object.setVariable(result, key, value);
316
+ // 如果左边的 key 是一个路径
317
+ // 这里不希望直接把原始对象都给覆盖没了
318
+ // 而是保留原始的对象,只修改指定的属性
319
+ if (keys.length > 1 && isPlainObject__default["default"](tmpData[keys[0]])) {
320
+ // 存在情况:依次更新同一子路径的多个key,eg: a.b.c1 和 a.b.c2,所以需要同步更新data
321
+ object.setVariable(tmpData, key, value);
322
+ result[keys[0]] = tmpData[keys[0]];
323
+ }
324
+ });
325
+ // 是否忽略自己的设置
326
+ if (ignoreSelf && (formItem === null || formItem === void 0 ? void 0 : formItem.name)) {
327
+ object.deleteVariable(result, formItem.name);
307
328
  }
329
+ onBulkChange(result);
308
330
  };
309
331
  FormItemWrap.prototype.buildAutoFillSchema = function () {
310
- var _this = this;
311
- var _a = this.props, render = _a.render, autoFill = _a.autoFill, ns = _a.classPrefix, cx = _a.classnames, __ = _a.translate;
332
+ var _a = this.props; _a.formItem; var autoFill = _a.autoFill, __ = _a.translate;
312
333
  if (!autoFill || (autoFill && !(autoFill === null || autoFill === void 0 ? void 0 : autoFill.hasOwnProperty('api')))) {
313
334
  return;
314
335
  }
315
- var api = autoFill.api, mode = autoFill.mode, size = autoFill.size, offset = autoFill.offset, position = autoFill.position, multiple = autoFill.multiple, filter = autoFill.filter, columns = autoFill.columns, labelField = autoFill.labelField, popOverContainer = autoFill.popOverContainer, popOverClassName = autoFill.popOverClassName, valueField = autoFill.valueField;
336
+ var api = autoFill.api, mode = autoFill.mode, size = autoFill.size, offset = autoFill.offset, position = autoFill.position, placement = autoFill.placement, multiple = autoFill.multiple, filter = autoFill.filter, columns = autoFill.columns, labelField = autoFill.labelField, popOverContainer = autoFill.popOverContainer, popOverClassName = autoFill.popOverClassName, valueField = autoFill.valueField, defaultSelection = autoFill.defaultSelection;
316
337
  var form = {
317
338
  type: 'form',
318
339
  // debug: true,
319
340
  title: '',
320
341
  className: 'suggestion-form',
321
- body: {
322
- type: 'picker',
323
- embed: true,
324
- joinValues: false,
325
- label: false,
326
- labelField: labelField,
327
- valueField: valueField || 'value',
328
- multiple: multiple,
329
- name: 'selectedItems',
330
- options: [],
331
- required: true,
332
- source: api,
333
- pickerSchema: {
334
- type: 'crud',
335
- affixHeader: false,
336
- alwaysShowPagination: true,
337
- keepItemSelectionOnPageChange: true,
338
- headerToolbar: [],
339
- footerToolbar: [
340
- {
341
- type: 'pagination',
342
- align: 'left'
343
- },
344
- {
345
- type: 'bulkActions',
346
- align: 'right',
347
- className: 'ml-2'
348
- }
349
- ],
342
+ body: [
343
+ {
344
+ type: 'picker',
345
+ embed: true,
346
+ joinValues: false,
347
+ strictMode: false,
348
+ label: false,
349
+ labelField: labelField,
350
+ valueField: valueField || 'value',
350
351
  multiple: multiple,
351
- filter: filter,
352
- columns: columns || []
352
+ name: 'selectedItems',
353
+ value: defaultSelection || [],
354
+ options: [],
355
+ required: true,
356
+ source: api,
357
+ pickerSchema: {
358
+ type: 'crud',
359
+ bodyClassName: 'mb-0',
360
+ affixHeader: false,
361
+ alwaysShowPagination: true,
362
+ keepItemSelectionOnPageChange: true,
363
+ headerToolbar: [],
364
+ footerToolbar: [
365
+ {
366
+ type: 'pagination',
367
+ align: 'left'
368
+ },
369
+ {
370
+ type: 'bulkActions',
371
+ align: 'right',
372
+ className: 'ml-2'
373
+ }
374
+ ],
375
+ multiple: multiple,
376
+ filter: filter,
377
+ columns: columns || []
378
+ }
353
379
  }
354
- },
380
+ ],
355
381
  actions: [
356
382
  {
357
383
  type: 'button',
@@ -367,13 +393,13 @@ var FormItemWrap = /** @class */ (function (_super) {
367
393
  ]
368
394
  };
369
395
  if (mode === 'popOver') {
370
- return (_J$X_(Overlay["default"], { container: popOverContainer || this.target, target: function () { return _this.target; }, placement: position || 'left-bottom-left-top', show: true },
371
- _J$X_(PopOver["default"], { classPrefix: ns, className: cx("".concat(ns, "Autofill-popOver"), popOverClassName), style: {
372
- minWidth: this.target ? this.target.offsetWidth : undefined
373
- }, offset: offset, onHide: this.handleClose, overlay: true }, render('popOver-auto-fill-form', form, {
374
- onAction: this.handleAction,
375
- onSubmit: this.handleSubmit
376
- }))));
396
+ return {
397
+ popOverContainer: popOverContainer,
398
+ popOverClassName: popOverClassName,
399
+ placement: placement !== null && placement !== void 0 ? placement : position,
400
+ offset: offset,
401
+ body: form
402
+ };
377
403
  }
378
404
  else {
379
405
  return {
@@ -399,23 +425,28 @@ var FormItemWrap = /** @class */ (function (_super) {
399
425
  }
400
426
  };
401
427
  // 参照录入popOver提交
402
- FormItemWrap.prototype.handleSubmit = function (values) {
428
+ FormItemWrap.prototype.handlePopOverConfirm = function (values) {
403
429
  var _a = this.props; _a.onBulkChange; var autoFill = _a.autoFill;
404
430
  if (!autoFill || (autoFill && !(autoFill === null || autoFill === void 0 ? void 0 : autoFill.hasOwnProperty('api')))) {
405
431
  return;
406
432
  }
407
433
  this.updateAutoFillData(values.selectedItems);
408
- this.handleClose();
434
+ this.closePopOver();
409
435
  };
410
- FormItemWrap.prototype.handleAction = function (e, action, data) {
436
+ FormItemWrap.prototype.handlePopOverAction = function (e, action, data, throwErrors, delegate) {
437
+ if (throwErrors === void 0) { throwErrors = false; }
438
+ var onAction = this.props.onAction;
411
439
  if (action.actionType === 'cancel') {
412
- this.handleClose();
440
+ this.closePopOver();
441
+ }
442
+ else if (onAction) {
443
+ // 不识别的丢给上层去处理。
444
+ return onAction(e, action, data, throwErrors, delegate);
413
445
  }
414
446
  };
415
- FormItemWrap.prototype.handleClose = function () {
416
- this.setState({
417
- isOpened: false
418
- });
447
+ FormItemWrap.prototype.closePopOver = function () {
448
+ var _a;
449
+ (_a = this.props.formItem) === null || _a === void 0 ? void 0 : _a.closePopOver();
419
450
  };
420
451
  FormItemWrap.prototype.handleOpenDialog = function (schema, data) {
421
452
  return tslib.__awaiter(this, void 0, void 0, function () {
@@ -470,7 +501,9 @@ var FormItemWrap = /** @class */ (function (_super) {
470
501
  return null;
471
502
  };
472
503
  FormItemWrap.prototype.render = function () {
473
- 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;
504
+ var _this = this;
505
+ var _a, _b, _c, _d;
506
+ var _e = this.props, formMode = _e.formMode, inputOnly = _e.inputOnly, wrap = _e.wrap, render = _e.render, model = _e.formItem, css = _e.css, themeCss = _e.themeCss, id = _e.id, wrapperCustomStyle = _e.wrapperCustomStyle, env = _e.env, cx = _e.classnames, popOverContainer = _e.popOverContainer; _e.data;
474
507
  var mode = this.props.mode || formMode;
475
508
  if (wrap === false || inputOnly) {
476
509
  return this.renderControl();
@@ -488,11 +521,25 @@ var FormItemWrap = /** @class */ (function (_super) {
488
521
  formStore: undefined
489
522
  })
490
523
  : null,
524
+ model ? (_J$X_(Overlay["default"], { container: popOverContainer || this.target, target: function () { return _this.target; }, placement: ((_a = model.popOverSchema) === null || _a === void 0 ? void 0 : _a.placement) || 'left-bottom-left-top', show: model.popOverOpen },
525
+ _J$X_(PopOver["default"], { className: cx("Autofill-popOver", (_b = model.popOverSchema) === null || _b === void 0 ? void 0 : _b.popOverClassName), style: {
526
+ minWidth: this.target ? this.target.offsetWidth : undefined
527
+ }, offset: (_c = model.popOverSchema) === null || _c === void 0 ? void 0 : _c.offset, onHide: this.closePopOver }, render('popOver-auto-fill-form', (_d = model.popOverSchema) === null || _d === void 0 ? void 0 : _d.body, {
528
+ // data: model.popOverData,
529
+ onAction: this.handlePopOverAction,
530
+ onSubmit: this.handlePopOverConfirm
531
+ })))) : null,
491
532
  _J$X_(CustomStyle["default"], tslib.__assign({}, this.props, { config: {
492
533
  themeCss: themeCss || css,
493
534
  classNames: [
494
535
  {
495
- key: 'labelClassName'
536
+ key: 'labelClassName',
537
+ weights: {
538
+ default: {
539
+ suf: ".".concat(cx('Form-label')),
540
+ parent: ".".concat(cx('Form-item'))
541
+ }
542
+ }
496
543
  },
497
544
  {
498
545
  key: 'descriptionClassName'
@@ -517,7 +564,8 @@ var FormItemWrap = /** @class */ (function (_super) {
517
564
  var horizontal = props.horizontal || props.formHorizontal || {};
518
565
  var left = helper.getWidthRate(horizontal.left);
519
566
  var right = helper.getWidthRate(horizontal.right);
520
- var labelAlign = props.labelAlign || props.formLabelAlign;
567
+ var labelAlign = (props.labelAlign !== 'inherit' && props.labelAlign) ||
568
+ props.formLabelAlign;
521
569
  var labelWidth = props.labelWidth || props.formLabelWidth;
522
570
  return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--horizontal", isStatic && staticClassName ? staticClassName : className, (_a = {
523
571
  'Form-item--horizontal-justify': horizontal.justify
@@ -855,19 +903,19 @@ var FormItemWrap = /** @class */ (function (_super) {
855
903
  tslib.__metadata("design:type", Function),
856
904
  tslib.__metadata("design:paramtypes", [Object]),
857
905
  tslib.__metadata("design:returntype", void 0)
858
- ], FormItemWrap.prototype, "handleSubmit", null);
906
+ ], FormItemWrap.prototype, "handlePopOverConfirm", null);
859
907
  tslib.__decorate([
860
908
  helper.autobind,
861
909
  tslib.__metadata("design:type", Function),
862
- tslib.__metadata("design:paramtypes", [Object, Object, Object]),
910
+ tslib.__metadata("design:paramtypes", [Object, Object, Object, Boolean, Object]),
863
911
  tslib.__metadata("design:returntype", void 0)
864
- ], FormItemWrap.prototype, "handleAction", null);
912
+ ], FormItemWrap.prototype, "handlePopOverAction", null);
865
913
  tslib.__decorate([
866
914
  helper.autobind,
867
915
  tslib.__metadata("design:type", Function),
868
916
  tslib.__metadata("design:paramtypes", []),
869
917
  tslib.__metadata("design:returntype", void 0)
870
- ], FormItemWrap.prototype, "handleClose", null);
918
+ ], FormItemWrap.prototype, "closePopOver", null);
871
919
  tslib.__decorate([
872
920
  helper.autobind,
873
921
  tslib.__metadata("design:type", Function),
@@ -995,6 +1043,7 @@ function asFormItem(config) {
995
1043
  function class_1(props) {
996
1044
  var _this = _super.call(this, props) || this;
997
1045
  _this.refFn = _this.refFn.bind(_this);
1046
+ _this.getData = _this.getData.bind(_this);
998
1047
  var validations = props.validations, model = props.formItem;
999
1048
  // 组件注册的时候可能默认指定验证器类型
1000
1049
  if (model && !validations && config.validations) {
@@ -1023,28 +1072,33 @@ function asFormItem(config) {
1023
1072
  class_1.prototype.refFn = function (ref) {
1024
1073
  this.ref = ref;
1025
1074
  };
1075
+ class_1.prototype.getData = function () {
1076
+ return this.props.data;
1077
+ };
1026
1078
  class_1.prototype.renderControl = function () {
1027
1079
  var _a;
1028
1080
  var _b = this.props;
1029
1081
  // 这里解构,不可轻易删除,避免被rest传到子组件
1030
1082
  _b.inputClassName; var model = _b.formItem, cx = _b.classnames; _b.children; var type = _b.type, size = _b.size, defaultSize = _b.defaultSize, mobileUI = _b.mobileUI, rest = tslib.__rest(_b, ["inputClassName", "formItem", "classnames", "children", "type", "size", "defaultSize", "mobileUI"]);
1031
- var controlSize = size && ['xs', 'sm', 'md', 'lg', 'full'].includes(size)
1032
- ? size
1033
- : defaultSize;
1034
- //@ts-ignore
1035
- var isOpened = this.state.isOpened;
1083
+ var isRuleSize = size && ['xs', 'sm', 'md', 'lg', 'full'].includes(size);
1084
+ var controlSize = isRuleSize ? size : defaultSize;
1036
1085
  return (_J$X_(React__default["default"].Fragment, null,
1037
- _J$X_(Control, tslib.__assign({}, rest, { mobileUI: mobileUI, onOpenDialog: this.handleOpenDialog, size: config.sizeMutable !== false ? undefined : size, onFocus: this.handleFocus, onBlur: this.handleBlur, type: type, classnames: cx, ref: supportRef ? this.refFn : undefined, forwardedRef: supportRef ? undefined : this.refFn, formItem: model, className: cx("Form-control", (_a = {
1086
+ _J$X_(Control, tslib.__assign({}, rest, {
1087
+ // 因为 formItem 内部可能不会更新到最新的 data,所以暴露个方法可以获取到最新的
1088
+ // 获取不到最新的因为做了限制,只有表单项目 name 关联的数值变化才更新
1089
+ getData: this.getData, mobileUI: mobileUI, onOpenDialog: this.handleOpenDialog, size: config.sizeMutable !== false ? undefined : size, onFocus: this.handleFocus, onBlur: this.handleBlur, type: type, classnames: cx, ref: supportRef ? this.refFn : undefined, forwardedRef: supportRef ? undefined : this.refFn, formItem: model, style: {
1090
+ width: !isRuleSize && size ? size : undefined
1091
+ }, className: cx("Form-control", (_a = {
1038
1092
  'is-inline': !!rest.inline && !mobileUI,
1039
1093
  'is-error': model && !model.valid,
1040
- 'is-full': size === 'full'
1094
+ 'is-full': size === 'full',
1095
+ 'is-thin': config.thin
1041
1096
  },
1042
1097
  _a["Form-control--withSize Form-control--size".concat(helper.ucFirst(controlSize))] = config.sizeMutable !== false &&
1043
1098
  typeof controlSize === 'string' &&
1044
1099
  !!controlSize &&
1045
1100
  controlSize !== 'full',
1046
- _a), model === null || model === void 0 ? void 0 : model.errClassNames, getItemInputClassName(this.props)) })),
1047
- isOpened ? this.buildAutoFillSchema() : null));
1101
+ _a), model === null || model === void 0 ? void 0 : model.errClassNames, getItemInputClassName(this.props)) }))));
1048
1102
  };
1049
1103
  return class_1;
1050
1104
  }(FormItemWrap)),
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.6.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -19,6 +19,7 @@ require('moment');
19
19
  var object = require('../utils/object.js');
20
20
  var isPureVariable = require('../utils/isPureVariable.js');
21
21
  require('@rc-component/mini-decimal');
22
+ require('../utils/memoryParse.js');
22
23
  var resolveVariableAndFilter = require('../utils/resolveVariableAndFilter.js');
23
24
  require('lodash/isPlainObject');
24
25
  require('../utils/filter.js');
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.6.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.6.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.6.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.6.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -29,6 +29,7 @@ require('../utils/columnsSplit.js');
29
29
  var getVariable = require('../utils/getVariable.js');
30
30
  require('lodash/isPlainObject');
31
31
  require('amis-formula');
32
+ require('../utils/memoryParse.js');
32
33
  var tokenize = require('../utils/tokenize.js');
33
34
  require('../utils/DataSchema.js');
34
35
  require('../utils/DataScope.js');
@@ -14,6 +14,7 @@ export declare const AppStore: import("mobx-state-tree").IModelType<{
14
14
  initedAt: import("mobx-state-tree").IType<number | undefined, number, number>;
15
15
  updatedAt: import("mobx-state-tree").IType<number | undefined, number, number>;
16
16
  pristine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
17
+ pristineRaw: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
17
18
  upStreamData: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
18
19
  action: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<any, any, any>, [undefined]>;
19
20
  dialogOpen: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
package/lib/store/app.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.6.0
2
+ * amis-core v6.8.0
3
3
  * Copyright 2018-2024 fex
4
4
  */
5
5
 
@@ -16,6 +16,7 @@ require('../utils/browser.js');
16
16
  require('../utils/ColorScale.js');
17
17
  require('../utils/columnsSplit.js');
18
18
  var object = require('../utils/object.js');
19
+ require('../utils/memoryParse.js');
19
20
  require('amis-formula');
20
21
  require('lodash/isPlainObject');
21
22
  require('../utils/DataSchema.js');