amis-core 6.7.0 → 6.9.0-rc.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 (304) hide show
  1. package/esm/Root.js +1 -1
  2. package/esm/RootRenderer.d.ts +1 -1
  3. package/esm/RootRenderer.js +24 -2
  4. package/esm/SchemaRenderer.d.ts +0 -1
  5. package/esm/SchemaRenderer.js +43 -20
  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 +2 -1
  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 +1 -1
  15. package/esm/actions/ContinueAction.js +1 -1
  16. package/esm/actions/CopyAction.js +1 -1
  17. package/esm/actions/CustomAction.js +2 -1
  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.d.ts +40 -2
  34. package/esm/components/LazyComponent.js +13 -7
  35. package/esm/components/Overlay.js +2 -1
  36. package/esm/components/PopOver.d.ts +1 -1
  37. package/esm/components/PopOver.js +2 -1
  38. package/esm/env.js +1 -1
  39. package/esm/envOverwrite.js +1 -1
  40. package/esm/factory.d.ts +13 -2
  41. package/esm/factory.js +157 -45
  42. package/esm/index.d.ts +4 -4
  43. package/esm/index.js +5 -5
  44. package/esm/locale.js +2 -1
  45. package/esm/polyfills.js +1 -1
  46. package/esm/renderers/Form.js +44 -18
  47. package/esm/renderers/Item.d.ts +97 -12
  48. package/esm/renderers/Item.js +164 -125
  49. package/esm/renderers/Options.d.ts +3 -3
  50. package/esm/renderers/Options.js +43 -19
  51. package/esm/renderers/Placeholder.js +1 -1
  52. package/esm/renderers/builtin.js +1 -1
  53. package/esm/renderers/register.js +1 -1
  54. package/esm/renderers/wrapControl.js +2 -1
  55. package/esm/store/app.js +2 -1
  56. package/esm/store/combo.d.ts +408 -0
  57. package/esm/store/combo.js +1 -1
  58. package/esm/store/crud.js +2 -1
  59. package/esm/store/form.d.ts +170 -0
  60. package/esm/store/form.js +2 -1
  61. package/esm/store/formItem.d.ts +5 -0
  62. package/esm/store/formItem.js +30 -8
  63. package/esm/store/iRenderer.js +2 -1
  64. package/esm/store/index.d.ts +1 -0
  65. package/esm/store/index.js +3 -2
  66. package/esm/store/list.js +1 -1
  67. package/esm/store/manager.js +1 -1
  68. package/esm/store/modal.js +1 -1
  69. package/esm/store/node.js +1 -1
  70. package/esm/store/pagination.js +2 -1
  71. package/esm/store/root.d.ts +2 -0
  72. package/esm/store/root.js +46 -21
  73. package/esm/store/service.js +2 -1
  74. package/esm/store/status.js +1 -1
  75. package/esm/store/table.d.ts +379 -21
  76. package/esm/store/table.js +84 -54
  77. package/esm/store/table2.js +1 -1
  78. package/esm/theme.js +1 -1
  79. package/esm/types.d.ts +4 -2
  80. package/esm/utils/Animation.js +1 -1
  81. package/esm/utils/ColorScale.js +1 -1
  82. package/esm/utils/DataSchema.js +1 -1
  83. package/esm/utils/DataScope.js +1 -1
  84. package/esm/utils/RootClose.js +1 -1
  85. package/esm/utils/SimpleMap.js +1 -1
  86. package/esm/utils/api.d.ts +21 -1
  87. package/esm/utils/api.js +133 -41
  88. package/esm/utils/arraySlice.js +1 -1
  89. package/esm/utils/attachmentAdpator.js +1 -1
  90. package/esm/utils/autobind.js +1 -1
  91. package/esm/utils/browser.js +1 -1
  92. package/esm/utils/columnsSplit.js +1 -1
  93. package/esm/utils/concatData.js +1 -1
  94. package/esm/utils/dataMapping.js +1 -1
  95. package/esm/utils/date.js +1 -1
  96. package/esm/utils/debug.js +17 -3
  97. package/esm/utils/decodeEntity.js +1 -1
  98. package/esm/utils/dom.js +1 -1
  99. package/esm/utils/errors.js +1 -1
  100. package/esm/utils/escapeHtml.js +1 -1
  101. package/esm/utils/filter-schema.js +1 -1
  102. package/esm/utils/filter.js +1 -1
  103. package/esm/utils/formatDuration.js +1 -1
  104. package/esm/utils/formula.js +2 -1
  105. package/esm/utils/getVariable.js +1 -1
  106. package/esm/utils/grammar.js +1 -1
  107. package/esm/utils/handleAction.js +1 -1
  108. package/esm/utils/helper.d.ts +4 -1
  109. package/esm/utils/helper.js +20 -4
  110. package/esm/utils/highlight.js +1 -1
  111. package/esm/utils/icon.js +1 -1
  112. package/esm/utils/image.js +1 -1
  113. package/esm/utils/isPureVariable.js +2 -2
  114. package/esm/utils/json-schema-2-amis-schema.js +1 -1
  115. package/esm/utils/keyToPath.js +1 -1
  116. package/esm/utils/labelToString.js +1 -1
  117. package/esm/utils/makeSorter.js +1 -1
  118. package/esm/utils/math.js +1 -1
  119. package/esm/utils/memoryParse.d.ts +2 -1
  120. package/esm/utils/memoryParse.js +10 -6
  121. package/esm/utils/normalizeLink.js +1 -1
  122. package/esm/utils/normalizeOptions.js +1 -1
  123. package/esm/utils/object.d.ts +2 -4
  124. package/esm/utils/object.js +1 -1
  125. package/esm/utils/offset.js +1 -1
  126. package/esm/utils/offsetParent.js +1 -1
  127. package/esm/utils/optionValueCompare.js +1 -1
  128. package/esm/utils/position.js +1 -1
  129. package/esm/utils/prettyBytes.js +1 -1
  130. package/esm/utils/printElement.js +1 -1
  131. package/esm/utils/renderer-event.js +1 -1
  132. package/esm/utils/replaceText.js +1 -1
  133. package/esm/utils/resize-sensor.js +30 -1
  134. package/esm/utils/resolveCondition.js +2 -1
  135. package/esm/utils/resolveVariable.js +1 -1
  136. package/esm/utils/resolveVariableAndFilter.js +1 -1
  137. package/esm/utils/resolveVariableAndFilterForAsync.js +1 -1
  138. package/esm/utils/scrollPosition.js +1 -1
  139. package/esm/utils/string2regExp.js +1 -1
  140. package/esm/utils/stripNumber.js +1 -1
  141. package/esm/utils/style-helper.js +1 -1
  142. package/esm/utils/style.js +2 -1
  143. package/esm/utils/toNumber.js +1 -1
  144. package/esm/utils/tokenize.js +1 -1
  145. package/esm/utils/tpl-builtin.js +2 -1
  146. package/esm/utils/tpl-lodash.js +2 -1
  147. package/esm/utils/tpl.js +1 -1
  148. package/esm/utils/uncontrollable.js +1 -1
  149. package/esm/utils/validateId.js +1 -1
  150. package/esm/utils/validations.js +2 -1
  151. package/esm/utils/visitedCache.d.ts +46 -0
  152. package/esm/utils/visitedCache.js +124 -0
  153. package/lib/Root.js +1 -1
  154. package/lib/RootRenderer.js +23 -1
  155. package/lib/SchemaRenderer.d.ts +0 -1
  156. package/lib/SchemaRenderer.js +41 -18
  157. package/lib/Scoped.js +2 -1
  158. package/lib/StatusScoped.js +1 -1
  159. package/lib/WithRootStore.js +1 -1
  160. package/lib/WithStore.js +8 -8
  161. package/lib/actions/Action.js +2 -1
  162. package/lib/actions/AjaxAction.js +1 -1
  163. package/lib/actions/BreakAction.js +1 -1
  164. package/lib/actions/BroadcastAction.js +1 -1
  165. package/lib/actions/CmptAction.js +1 -1
  166. package/lib/actions/ContinueAction.js +1 -1
  167. package/lib/actions/CopyAction.js +1 -1
  168. package/lib/actions/CustomAction.js +2 -1
  169. package/lib/actions/DialogAction.js +3 -1
  170. package/lib/actions/DrawerAction.js +2 -1
  171. package/lib/actions/EmailAction.js +1 -1
  172. package/lib/actions/EventAction.js +2 -1
  173. package/lib/actions/LinkAction.js +1 -1
  174. package/lib/actions/LoopAction.js +2 -1
  175. package/lib/actions/PageAction.js +1 -1
  176. package/lib/actions/ParallelAction.js +1 -1
  177. package/lib/actions/PrintAction.js +1 -1
  178. package/lib/actions/StatusAction.js +1 -1
  179. package/lib/actions/SwitchAction.js +1 -1
  180. package/lib/actions/ToastAction.js +1 -1
  181. package/lib/actions/WaitAction.js +1 -1
  182. package/lib/components/CustomStyle.js +1 -1
  183. package/lib/components/ErrorBoundary.js +1 -1
  184. package/lib/components/LazyComponent.d.ts +40 -2
  185. package/lib/components/LazyComponent.js +14 -7
  186. package/lib/components/Overlay.js +2 -1
  187. package/lib/components/PopOver.d.ts +1 -1
  188. package/lib/components/PopOver.js +2 -1
  189. package/lib/env.js +1 -1
  190. package/lib/envOverwrite.js +1 -1
  191. package/lib/factory.d.ts +13 -2
  192. package/lib/factory.js +161 -44
  193. package/lib/index.d.ts +4 -4
  194. package/lib/index.js +10 -2
  195. package/lib/locale.js +2 -1
  196. package/lib/polyfills.js +1 -1
  197. package/lib/renderers/Form.js +41 -15
  198. package/lib/renderers/Item.d.ts +98 -13
  199. package/lib/renderers/Item.js +163 -124
  200. package/lib/renderers/Options.d.ts +3 -3
  201. package/lib/renderers/Options.js +43 -19
  202. package/lib/renderers/Placeholder.js +1 -1
  203. package/lib/renderers/builtin.js +1 -1
  204. package/lib/renderers/register.js +1 -1
  205. package/lib/renderers/wrapControl.js +2 -1
  206. package/lib/store/app.js +2 -1
  207. package/lib/store/combo.d.ts +432 -25
  208. package/lib/store/combo.js +1 -1
  209. package/lib/store/crud.js +3 -2
  210. package/lib/store/form.d.ts +180 -11
  211. package/lib/store/form.js +2 -1
  212. package/lib/store/formItem.d.ts +5 -0
  213. package/lib/store/formItem.js +30 -8
  214. package/lib/store/iRenderer.js +2 -1
  215. package/lib/store/index.d.ts +1 -0
  216. package/lib/store/index.js +3 -1
  217. package/lib/store/list.js +1 -1
  218. package/lib/store/manager.js +1 -1
  219. package/lib/store/modal.js +1 -1
  220. package/lib/store/node.js +1 -1
  221. package/lib/store/pagination.js +2 -1
  222. package/lib/store/root.d.ts +2 -0
  223. package/lib/store/root.js +44 -19
  224. package/lib/store/service.js +2 -1
  225. package/lib/store/status.js +1 -1
  226. package/lib/store/table.d.ts +399 -42
  227. package/lib/store/table.js +84 -54
  228. package/lib/store/table2.js +1 -1
  229. package/lib/theme.js +1 -1
  230. package/lib/types.d.ts +4 -2
  231. package/lib/utils/Animation.js +1 -1
  232. package/lib/utils/ColorScale.js +1 -1
  233. package/lib/utils/DataSchema.js +1 -1
  234. package/lib/utils/DataScope.js +1 -1
  235. package/lib/utils/RootClose.js +1 -1
  236. package/lib/utils/SimpleMap.js +1 -1
  237. package/lib/utils/api.d.ts +21 -1
  238. package/lib/utils/api.js +136 -40
  239. package/lib/utils/arraySlice.js +1 -1
  240. package/lib/utils/attachmentAdpator.js +1 -1
  241. package/lib/utils/autobind.js +1 -1
  242. package/lib/utils/browser.js +1 -1
  243. package/lib/utils/columnsSplit.js +1 -1
  244. package/lib/utils/concatData.js +1 -1
  245. package/lib/utils/dataMapping.js +1 -1
  246. package/lib/utils/date.js +1 -1
  247. package/lib/utils/debug.js +18 -4
  248. package/lib/utils/decodeEntity.js +1 -1
  249. package/lib/utils/dom.js +1 -1
  250. package/lib/utils/errors.js +1 -1
  251. package/lib/utils/escapeHtml.js +1 -1
  252. package/lib/utils/filter-schema.js +1 -1
  253. package/lib/utils/filter.js +1 -1
  254. package/lib/utils/formatDuration.js +1 -1
  255. package/lib/utils/formula.js +2 -1
  256. package/lib/utils/getVariable.js +1 -1
  257. package/lib/utils/grammar.js +1 -1
  258. package/lib/utils/handleAction.js +1 -1
  259. package/lib/utils/helper.d.ts +4 -1
  260. package/lib/utils/helper.js +19 -3
  261. package/lib/utils/highlight.js +1 -1
  262. package/lib/utils/icon.js +1 -1
  263. package/lib/utils/image.js +1 -1
  264. package/lib/utils/isPureVariable.js +2 -2
  265. package/lib/utils/json-schema-2-amis-schema.js +1 -1
  266. package/lib/utils/keyToPath.js +1 -1
  267. package/lib/utils/labelToString.js +1 -1
  268. package/lib/utils/makeSorter.js +1 -1
  269. package/lib/utils/math.js +1 -1
  270. package/lib/utils/memoryParse.d.ts +2 -1
  271. package/lib/utils/memoryParse.js +10 -6
  272. package/lib/utils/normalizeLink.js +1 -1
  273. package/lib/utils/normalizeOptions.js +1 -1
  274. package/lib/utils/object.d.ts +2 -4
  275. package/lib/utils/object.js +1 -1
  276. package/lib/utils/offset.js +1 -1
  277. package/lib/utils/offsetParent.js +1 -1
  278. package/lib/utils/optionValueCompare.js +1 -1
  279. package/lib/utils/position.js +1 -1
  280. package/lib/utils/prettyBytes.js +1 -1
  281. package/lib/utils/printElement.js +1 -1
  282. package/lib/utils/renderer-event.js +1 -1
  283. package/lib/utils/replaceText.js +1 -1
  284. package/lib/utils/resize-sensor.js +30 -1
  285. package/lib/utils/resolveCondition.js +2 -1
  286. package/lib/utils/resolveVariable.js +1 -1
  287. package/lib/utils/resolveVariableAndFilter.js +1 -1
  288. package/lib/utils/resolveVariableAndFilterForAsync.js +1 -1
  289. package/lib/utils/scrollPosition.js +1 -1
  290. package/lib/utils/string2regExp.js +1 -1
  291. package/lib/utils/stripNumber.js +1 -1
  292. package/lib/utils/style-helper.js +1 -1
  293. package/lib/utils/style.js +2 -1
  294. package/lib/utils/toNumber.js +1 -1
  295. package/lib/utils/tokenize.js +1 -1
  296. package/lib/utils/tpl-builtin.js +2 -1
  297. package/lib/utils/tpl-lodash.js +2 -1
  298. package/lib/utils/tpl.js +1 -1
  299. package/lib/utils/uncontrollable.js +1 -1
  300. package/lib/utils/validateId.js +1 -1
  301. package/lib/utils/validations.js +2 -1
  302. package/lib/utils/visitedCache.d.ts +46 -0
  303. package/lib/utils/visitedCache.js +128 -0
  304. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * amis-core v6.7.0
2
+ * amis-core v6.9.0-rc.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, cx = _a.classnames;
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,6 +521,14 @@ 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: [
@@ -526,7 +567,7 @@ var FormItemWrap = /** @class */ (function (_super) {
526
567
  var labelAlign = (props.labelAlign !== 'inherit' && props.labelAlign) ||
527
568
  props.formLabelAlign;
528
569
  var labelWidth = props.labelWidth || props.formLabelWidth;
529
- return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--horizontal", isStatic && staticClassName ? staticClassName : className, (_a = {
570
+ return (_J$X_("div", { "data-role": "form-item", "data-amis-name": props.name, className: cx("Form-item Form-item--horizontal", isStatic && staticClassName ? staticClassName : className, (_a = {
530
571
  'Form-item--horizontal-justify': horizontal.justify
531
572
  },
532
573
  _a["is-error"] = model && !model.valid,
@@ -592,7 +633,7 @@ var FormItemWrap = /** @class */ (function (_super) {
592
633
  var _a;
593
634
  var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint; props.data; var showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, themeCss = props.themeCss, wrapperCustomStyle = props.wrapperCustomStyle, id = props.id;
594
635
  description = description || desc;
595
- return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--normal", isStatic && staticClassName ? staticClassName : className, (_a = {
636
+ return (_J$X_("div", { "data-role": "form-item", "data-amis-name": props.name, className: cx("Form-item Form-item--normal", isStatic && staticClassName ? staticClassName : className, (_a = {
596
637
  'is-error': model && !model.valid
597
638
  },
598
639
  _a["is-required"] = required,
@@ -678,7 +719,7 @@ var FormItemWrap = /** @class */ (function (_super) {
678
719
  var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, remark = props.remark, labelRemark = props.labelRemark, env = props.env, hint = props.hint, renderLabel = props.renderLabel, renderDescription = props.renderDescription; props.data; var showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, themeCss = props.themeCss, wrapperCustomStyle = props.wrapperCustomStyle, id = props.id;
679
720
  var labelWidth = props.labelWidth || props.formLabelWidth;
680
721
  description = description || desc;
681
- return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--inline", isStatic && staticClassName ? staticClassName : className, (_a = {
722
+ return (_J$X_("div", { "data-role": "form-item", "data-amis-name": props.name, className: cx("Form-item Form-item--inline", isStatic && staticClassName ? staticClassName : className, (_a = {
682
723
  'is-error': model && !model.valid
683
724
  },
684
725
  _a["is-required"] = required,
@@ -734,7 +775,7 @@ var FormItemWrap = /** @class */ (function (_super) {
734
775
  var className = props.className, style = props.style, cx = props.classnames, desc = props.desc, description = props.description, label = props.label, render = props.render, required = props.required, caption = props.caption, remark = props.remark, labelRemark = props.labelRemark, env = props.env, descriptionClassName = props.descriptionClassName, captionClassName = props.captionClassName, model = props.formItem, renderLabel = props.renderLabel, renderDescription = props.renderDescription, hint = props.hint; props.data; var showErrorMsg = props.showErrorMsg, mobileUI = props.mobileUI; props.translate; var isStatic = props.static, staticClassName = props.staticClassName, wrapperCustomStyle = props.wrapperCustomStyle, themeCss = props.themeCss, id = props.id;
735
776
  description = description || desc;
736
777
  var labelWidth = props.labelWidth || props.formLabelWidth;
737
- return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--row", isStatic && staticClassName ? staticClassName : className, (_a = {
778
+ return (_J$X_("div", { "data-role": "form-item", "data-amis-name": props.name, className: cx("Form-item Form-item--row", isStatic && staticClassName ? staticClassName : className, (_a = {
738
779
  'is-error': model && !model.valid
739
780
  },
740
781
  _a["is-required"] = required,
@@ -791,7 +832,7 @@ var FormItemWrap = /** @class */ (function (_super) {
791
832
  props.formLabelAlign;
792
833
  var labelWidth = props.labelWidth || props.formLabelWidth;
793
834
  description = description || desc;
794
- return (_J$X_("div", { "data-role": "form-item", className: cx("Form-item Form-item--flex", isStatic && staticClassName ? staticClassName : className, (_a = {
835
+ return (_J$X_("div", { "data-role": "form-item", "data-amis-name": props.name, className: cx("Form-item Form-item--flex", isStatic && staticClassName ? staticClassName : className, (_a = {
795
836
  'is-error': model && !model.valid
796
837
  },
797
838
  _a["is-required"] = required,
@@ -862,19 +903,19 @@ var FormItemWrap = /** @class */ (function (_super) {
862
903
  tslib.__metadata("design:type", Function),
863
904
  tslib.__metadata("design:paramtypes", [Object]),
864
905
  tslib.__metadata("design:returntype", void 0)
865
- ], FormItemWrap.prototype, "handleSubmit", null);
906
+ ], FormItemWrap.prototype, "handlePopOverConfirm", null);
866
907
  tslib.__decorate([
867
908
  helper.autobind,
868
909
  tslib.__metadata("design:type", Function),
869
- tslib.__metadata("design:paramtypes", [Object, Object, Object]),
910
+ tslib.__metadata("design:paramtypes", [Object, Object, Object, Boolean, Object]),
870
911
  tslib.__metadata("design:returntype", void 0)
871
- ], FormItemWrap.prototype, "handleAction", null);
912
+ ], FormItemWrap.prototype, "handlePopOverAction", null);
872
913
  tslib.__decorate([
873
914
  helper.autobind,
874
915
  tslib.__metadata("design:type", Function),
875
916
  tslib.__metadata("design:paramtypes", []),
876
917
  tslib.__metadata("design:returntype", void 0)
877
- ], FormItemWrap.prototype, "handleClose", null);
918
+ ], FormItemWrap.prototype, "closePopOver", null);
878
919
  tslib.__decorate([
879
920
  helper.autobind,
880
921
  tslib.__metadata("design:type", Function),
@@ -1041,8 +1082,6 @@ function asFormItem(config) {
1041
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"]);
1042
1083
  var isRuleSize = size && ['xs', 'sm', 'md', 'lg', 'full'].includes(size);
1043
1084
  var controlSize = isRuleSize ? size : defaultSize;
1044
- //@ts-ignore
1045
- var isOpened = this.state.isOpened;
1046
1085
  return (_J$X_(React__default["default"].Fragment, null,
1047
1086
  _J$X_(Control, tslib.__assign({}, rest, {
1048
1087
  // 因为 formItem 内部可能不会更新到最新的 data,所以暴露个方法可以获取到最新的
@@ -1052,14 +1091,14 @@ function asFormItem(config) {
1052
1091
  }, className: cx("Form-control", (_a = {
1053
1092
  'is-inline': !!rest.inline && !mobileUI,
1054
1093
  'is-error': model && !model.valid,
1055
- 'is-full': size === 'full'
1094
+ 'is-full': size === 'full',
1095
+ 'is-thin': config.thin
1056
1096
  },
1057
1097
  _a["Form-control--withSize Form-control--size".concat(helper.ucFirst(controlSize))] = config.sizeMutable !== false &&
1058
1098
  typeof controlSize === 'string' &&
1059
1099
  !!controlSize &&
1060
1100
  controlSize !== 'full',
1061
- _a), model === null || model === void 0 ? void 0 : model.errClassNames, getItemInputClassName(this.props)) })),
1062
- isOpened ? this.buildAutoFillSchema() : null));
1101
+ _a), model === null || model === void 0 ? void 0 : model.errClassNames, getItemInputClassName(this.props)) }))));
1063
1102
  };
1064
1103
  return class_1;
1065
1104
  }(FormItemWrap)),
@@ -138,9 +138,9 @@ export interface OptionsControlProps extends FormControlProps, Omit<FormOptionsC
138
138
  deferLoad: (option: Option) => void;
139
139
  leftDeferLoad: (option: Option, leftOptions: Option) => void;
140
140
  expandTreeOptions: (nodePathArr: any[]) => void;
141
- onAdd?: (idx?: number | Array<number>, value?: any, skipForm?: boolean) => void;
142
- onEdit?: (value: Option, origin?: Option, skipForm?: boolean) => void;
143
- onDelete?: (value: Option) => void;
141
+ onAdd?: (idx?: number | Array<number>, value?: any, skipForm?: boolean, callback?: (value: any) => any) => void;
142
+ onEdit?: (value: Option, origin?: Option, skipForm?: boolean, callback?: (value: any) => any) => void;
143
+ onDelete?: (value: Option, callback?: (value: any) => any) => void;
144
144
  }
145
145
  export interface OptionsProps extends FormControlProps, Omit<OptionProps, 'className'> {
146
146
  source?: Api;