@teamix/pro 1.3.11 → 1.3.14

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 (47) hide show
  1. package/dist/pro.css +1 -1
  2. package/dist/pro.js +1380 -1086
  3. package/dist/pro.min.css +1 -1
  4. package/dist/pro.min.js +1 -1
  5. package/es/actions/index.js +40 -4
  6. package/es/form/Filter/LightFilter.js +7 -5
  7. package/es/form/Filter/index.js +94 -174
  8. package/es/form/ProForm/index.d.ts +2 -3
  9. package/es/form/ProForm/index.js +78 -29
  10. package/es/form/ProForm/index.scss +7 -0
  11. package/es/form/ProForm/useFieldSchema.d.ts +7 -0
  12. package/es/form/ProForm/useFieldSchema.js +88 -0
  13. package/es/form/SchemaForm/index.js +2 -38
  14. package/es/form/SchemaForm/initializeSelectTable.js +80 -6
  15. package/es/form/typing.d.ts +5 -1
  16. package/es/index.d.ts +1 -1
  17. package/es/index.js +1 -1
  18. package/es/table/components/ToolBar/Fullscreen.d.ts +1 -1
  19. package/es/table/index.js +5 -3
  20. package/es/table/utils/pureColumnRender.d.ts +9 -0
  21. package/es/table/utils/pureColumnRender.js +201 -0
  22. package/es/table/utils/pureGenProColumnToColumn.d.ts +7 -0
  23. package/es/table/utils/pureGenProColumnToColumn.js +36 -0
  24. package/es/timeline/ProTimeLineItem/index.js +8 -5
  25. package/es/timeline/typing.d.ts +5 -0
  26. package/lib/actions/index.js +40 -4
  27. package/lib/form/Filter/LightFilter.js +7 -6
  28. package/lib/form/Filter/index.js +93 -173
  29. package/lib/form/ProForm/index.d.ts +2 -3
  30. package/lib/form/ProForm/index.js +82 -26
  31. package/lib/form/ProForm/index.scss +7 -0
  32. package/lib/form/ProForm/useFieldSchema.d.ts +7 -0
  33. package/lib/form/ProForm/useFieldSchema.js +97 -0
  34. package/lib/form/SchemaForm/index.js +2 -45
  35. package/lib/form/SchemaForm/initializeSelectTable.js +85 -6
  36. package/lib/form/typing.d.ts +5 -1
  37. package/lib/index.d.ts +1 -1
  38. package/lib/index.js +1 -1
  39. package/lib/table/components/ToolBar/Fullscreen.d.ts +1 -1
  40. package/lib/table/index.js +5 -3
  41. package/lib/table/utils/pureColumnRender.d.ts +9 -0
  42. package/lib/table/utils/pureColumnRender.js +215 -0
  43. package/lib/table/utils/pureGenProColumnToColumn.d.ts +7 -0
  44. package/lib/table/utils/pureGenProColumnToColumn.js +43 -0
  45. package/lib/timeline/ProTimeLineItem/index.js +8 -5
  46. package/lib/timeline/typing.d.ts +5 -0
  47. package/package.json +1 -1
@@ -193,8 +193,18 @@ export var ProActionButton = function ProActionButton(props) {
193
193
  }, tooltipProps);
194
194
 
195
195
  if (tooltip || disabledTooltip) {
196
- var showToolTip = disabled ? disabledTooltip : tooltip;
197
- content = /*#__PURE__*/React.createElement(Balloon.Tooltip, _objectSpread({}, baseToolTipProps), showToolTip);
196
+ if (tooltip && !disabledTooltip) {
197
+ if (!disabled) {
198
+ content = /*#__PURE__*/React.createElement(Balloon.Tooltip, _objectSpread({}, baseToolTipProps), tooltip);
199
+ }
200
+ } else if (!tooltip && disabledTooltip) {
201
+ if (disabled) {
202
+ content = /*#__PURE__*/React.createElement(Balloon.Tooltip, _objectSpread({}, baseToolTipProps), disabledTooltip);
203
+ }
204
+ } else if (tooltip && disabledTooltip) {
205
+ var showToolTip = disabled ? disabledTooltip : tooltip;
206
+ content = /*#__PURE__*/React.createElement(Balloon.Tooltip, _objectSpread({}, baseToolTipProps), showToolTip);
207
+ }
198
208
  }
199
209
 
200
210
  return content;
@@ -208,7 +218,10 @@ var ProActionMenuButtonItem = function ProActionMenuButtonItem(props) {
208
218
  _onClick2 = action.onClick,
209
219
  children = action.children,
210
220
  icon = action.icon,
211
- disabled = action.disabled;
221
+ disabled = action.disabled,
222
+ tooltip = action.tooltip,
223
+ disabledTooltip = action.disabledTooltip,
224
+ tooltipProps = action.tooltipProps;
212
225
  var menuItemActionConfig = Object.assign({}, config, {
213
226
  trigger: 'onClick'
214
227
  });
@@ -222,9 +235,32 @@ var ProActionMenuButtonItem = function ProActionMenuButtonItem(props) {
222
235
  return _onClick2(e, context);
223
236
  }
224
237
  }) : _objectSpread({}, menuItemProps);
238
+ var content = buttonContent(children, icon, undefined, context);
239
+
240
+ var baseToolTipProps = _objectSpread({
241
+ triggerType: 'hover',
242
+ align: 't',
243
+ trigger: content
244
+ }, tooltipProps);
245
+
246
+ if (tooltip || disabledTooltip) {
247
+ if (tooltip && !disabledTooltip) {
248
+ if (!disabled) {
249
+ content = /*#__PURE__*/React.createElement(Balloon.Tooltip, _objectSpread({}, baseToolTipProps), tooltip);
250
+ }
251
+ } else if (!tooltip && disabledTooltip) {
252
+ if (disabled) {
253
+ content = /*#__PURE__*/React.createElement(Balloon.Tooltip, _objectSpread({}, baseToolTipProps), disabledTooltip);
254
+ }
255
+ } else if (tooltip && disabledTooltip) {
256
+ var showToolTip = disabled ? disabledTooltip : tooltip;
257
+ content = /*#__PURE__*/React.createElement(Balloon.Tooltip, _objectSpread({}, baseToolTipProps), showToolTip);
258
+ }
259
+ }
260
+
225
261
  return /*#__PURE__*/React.createElement("div", _objectSpread({
226
262
  className: cls('teamix-pro-action-menu-item', "".concat(usePrefixCls(), "menu-item"), _defineProperty({}, "".concat(usePrefixCls(), "disabled"), disabled))
227
- }, buttonProps), buttonContent(children, icon, undefined, context));
263
+ }, buttonProps), content);
228
264
  };
229
265
 
230
266
  function renderCommonActionButtonMenuItem(action, key, context) {
@@ -15,9 +15,6 @@ import cls from 'classnames';
15
15
  import { observable } from '@formily/reactive';
16
16
  import { usePrefixCls } from '@teamix/utils';
17
17
  import ProForm from '../ProForm';
18
- var lightFilterObs = observable({
19
- onFilter: function onFilter() {}
20
- });
21
18
  /**
22
19
  * 轻量筛选
23
20
  */
@@ -34,10 +31,15 @@ var LightFilter = /*#__PURE__*/memo(function (props) {
34
31
  activeFilterValueRef = props.activeFilterValueRef,
35
32
  otherProps = _objectWithoutProperties(props, _excluded);
36
33
 
37
- var filterValue = useRef(defaultFilterValue || ((_schema$ = schema[0]) === null || _schema$ === void 0 ? void 0 : _schema$.name));
34
+ var filterValue = useRef(defaultFilterValue || (schema === null || schema === void 0 ? void 0 : (_schema$ = schema[0]) === null || _schema$ === void 0 ? void 0 : _schema$.name));
38
35
  var prefixCls = usePrefixCls('', {
39
36
  prefix: 'teamix-pro-form-query-filter-light'
40
37
  });
38
+ var lightFilterObs = useMemo(function () {
39
+ return observable({
40
+ onFilter: function onFilter() {}
41
+ });
42
+ }, []);
41
43
  useEffect(function () {
42
44
  if (activeFilterValueRef) {
43
45
  activeFilterValueRef.current = filterValue.current;
@@ -88,7 +90,7 @@ var LightFilter = /*#__PURE__*/memo(function (props) {
88
90
  }, [schema, onFilterChange, defaultFilterValue]);
89
91
  useEffect(function () {
90
92
  lightFilterObs.onFilter = onFilter;
91
- }, [onChange]);
93
+ }, [onFilter]);
92
94
  return /*#__PURE__*/React.createElement(ProForm, _objectSpread(_objectSpread({}, otherProps), {}, {
93
95
  scope: _objectSpread(_objectSpread({}, otherProps === null || otherProps === void 0 ? void 0 : otherProps.scope), {}, {
94
96
  lightFilterObs: lightFilterObs
@@ -40,7 +40,7 @@ import debounce from 'lodash.debounce';
40
40
  import { Tag } from '@alicloudfe/components';
41
41
  import { createForm, onFormReact, onFormInputChange } from '@formily/core';
42
42
  import { toJS } from '@formily/reactive';
43
- import { usePrefixCls, isUsable, isNum, getValidValues } from '@teamix/utils';
43
+ import { usePrefixCls, isUsable, isNum } from '@teamix/utils';
44
44
  import ProField from '../../field/index';
45
45
  import fieldTypeMap from '../fieldTypeMap';
46
46
  import { getFormDisplayValues } from '../ProForm/useFormDisplayValues';
@@ -72,7 +72,6 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
72
72
  otherProps = _objectWithoutProperties(props, _excluded);
73
73
 
74
74
  var _useSpecialProps = useSpecialProps(props),
75
- hasChangeDefault = _useSpecialProps.hasChangeDefault,
76
75
  hasRequired = _useSpecialProps.hasRequired;
77
76
 
78
77
  var _useState = useState(!!expand),
@@ -92,56 +91,66 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
92
91
  var prefixCls = usePrefixCls('', {
93
92
  prefix: 'teamix-pro-form-query-filter'
94
93
  });
95
- /**
96
- * 处理onInit与onFilter事件的触发问题
97
- */
94
+ var debounceFun = debounce(function (fun, props) {
95
+ return fun(props);
96
+ }, filterDebounce); // onInit
98
97
 
98
+ var initialRequestRef = useRef(!!(props === null || props === void 0 ? void 0 : props.initialRequest));
99
99
  var filterEnable = useRef('waiting');
100
100
 
101
- var _onFormInit = function onFormInit(form, _ref) {
102
- var initialRequest = _ref.initialRequest,
103
- initialValues = _ref.initialValues;
101
+ var onFormInit = /*#__PURE__*/function () {
102
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(form) {
103
+ var loadingField;
104
+ return regeneratorRuntime.wrap(function _callee$(_context) {
105
+ while (1) {
106
+ switch (_context.prev = _context.next) {
107
+ case 0:
108
+ form.setState({
109
+ loading: initialRequestRef.current
110
+ }); // 借用 form.loading 触发 onFormReact
104
111
 
105
- if (!form.mounted) {
106
- // 借用form的loading属性来判断initialValues和initialRequest是否完成
107
- form.setState({
108
- loading: !!initialRequest || !!initialValues
109
- });
110
- }
112
+ loadingField = Object.values(form.fields).filter(function (field) {
113
+ return !!field.loading;
114
+ }); // 等待mounted + 字段loading结束 + initialRequest结束 => 表单默认值初始化完成
111
115
 
112
- var loadingField = Object.values(form.fields).filter(function (field) {
113
- return !!field.loading;
114
- }); // 等待表单mounted + 字段loading结束 + form默认值初始化 => 表单初始化完成
116
+ if (!(form.mounted && !loadingField.length && !form.loading)) {
117
+ _context.next = 10;
118
+ break;
119
+ }
120
+
121
+ onFormInit = function onFormInit() {}; // init后销毁 isFormInit 方法
115
122
 
116
- if (form.mounted && !loadingField.length && !form.loading) {
117
- _onFormInit = function onFormInit() {}; // init后销毁 isFormInit 方法
118
123
 
124
+ filterEnable.current = 'filter';
125
+
126
+ if (!onInit) {
127
+ _context.next = 10;
128
+ break;
129
+ }
119
130
 
120
- var values = getValidValues(form.values);
131
+ _context.next = 8;
132
+ return form.validate();
121
133
 
122
- if (!isUsable(values) || !hasChangeDefault) {
123
- // 表单无默认值 无触发onChange的默认值配置,不会触发onFilter内的onInit,所以主动触发onInit
124
- filterEnable.current = 'filter';
125
- setTimeout(function () {
126
- onInit === null || onInit === void 0 ? void 0 : onInit(toJS(form.values));
127
- }, 0);
134
+ case 8:
135
+ onInit === null || onInit === void 0 ? void 0 : onInit(toJS(form.values)); // 设置Tag
128
136
 
129
- if (mode === 'panel') {
130
- // 移除lightForm的默认值
131
- // 设置Tag
132
- configFilterItem(advancedForm);
137
+ if (mode === 'panel') {
138
+ configFilterItem(advancedForm);
139
+ !panelVisible && configTag();
140
+ }
133
141
 
134
- if (!panelVisible) {
135
- setTimeout(function () {
136
- configTag();
137
- }, 0);
142
+ case 10:
143
+ case "end":
144
+ return _context.stop();
138
145
  }
139
146
  }
140
- } else {
141
- filterEnable.current = 'initialized';
142
- }
143
- }
144
- }; // 配置当前激活的form实例
147
+ }, _callee);
148
+ }));
149
+
150
+ return function onFormInit(_x) {
151
+ return _ref.apply(this, arguments);
152
+ };
153
+ }(); // 配置当前激活的form实例
145
154
 
146
155
 
147
156
  var setCurrentForm = function setCurrentForm(formName) {
@@ -167,7 +176,7 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
167
176
  effects: function effects() {
168
177
  onFormReact(function (form) {
169
178
  if (mode === 'inline') {
170
- _onFormInit(form, props);
179
+ onFormInit(form);
171
180
  }
172
181
  });
173
182
  }
@@ -191,7 +200,7 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
191
200
  effects: function effects() {
192
201
  onFormReact(function (form) {
193
202
  if (mode === 'panel') {
194
- _onFormInit(form, props);
203
+ onFormInit(form);
195
204
  }
196
205
  });
197
206
  onFormInputChange(function (form) {
@@ -272,95 +281,64 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
272
281
  }, [panelVisible, configTag]); // 简单搜索Filter
273
282
 
274
283
  var onSimpleFilter = useCallback( /*#__PURE__*/function () {
275
- var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
276
- return regeneratorRuntime.wrap(function _callee$(_context) {
284
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(values) {
285
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
277
286
  while (1) {
278
- switch (_context.prev = _context.next) {
287
+ switch (_context2.prev = _context2.next) {
279
288
  case 0:
280
- if (!(currentForm.current === 'simple')) {
281
- _context.next = 14;
282
- break;
283
- }
284
-
285
- if (!(filterEnable.current === 'initialized')) {
286
- _context.next = 9;
287
- break;
288
- }
289
-
290
- filterEnable.current = 'filter';
291
-
292
- if (!hasRequired) {
293
- _context.next = 6;
294
- break;
295
- }
296
-
297
- _context.next = 6;
298
- return simpleForm.validate();
299
-
300
- case 6:
301
- onInit === null || onInit === void 0 ? void 0 : onInit(values);
302
- _context.next = 14;
303
- break;
304
-
305
- case 9:
306
- if (!(filterEnable.current === 'filter')) {
307
- _context.next = 14;
308
- break;
309
- }
310
-
311
- if (!hasRequired) {
312
- _context.next = 13;
313
- break;
314
- }
315
-
316
- _context.next = 13;
289
+ _context2.next = 2;
317
290
  return simpleForm.validate();
318
291
 
319
- case 13:
292
+ case 2:
320
293
  onFilter === null || onFilter === void 0 ? void 0 : onFilter(values);
321
294
 
322
- case 14:
295
+ case 3:
323
296
  case "end":
324
- return _context.stop();
297
+ return _context2.stop();
325
298
  }
326
299
  }
327
- }, _callee);
300
+ }, _callee2);
328
301
  }));
329
302
 
330
- return function (_x) {
303
+ return function (_x2) {
331
304
  return _ref4.apply(this, arguments);
332
305
  };
333
- }(), [onFilter, hasRequired, onInit]); // 简单搜索Change
306
+ }(), [onFilter]); // 简单搜索Change
334
307
 
335
308
  var onSimpleChange = useCallback(function (values, fieldValue, fieldName) {
336
309
  if (currentForm.current === 'simple') {
337
310
  onChange === null || onChange === void 0 ? void 0 : onChange(values, fieldValue, fieldName);
311
+
312
+ if (filterEnable.current === 'filter') {
313
+ debounceFun(onSimpleFilter, values);
314
+ }
338
315
  }
339
- }, [onChange]); // 轻量搜索Filter
316
+ }, [onChange, onSimpleFilter]); // 轻量搜索Filter
340
317
 
341
318
  var onLightFilter = useCallback(function (values) {
342
- if (currentForm.current === 'light') {
343
- if (filterEnable.current === 'filter') {
344
- var _Object$keys;
319
+ var _Object$keys;
345
320
 
346
- onFilter === null || onFilter === void 0 ? void 0 : onFilter(values); // 清空advancedForm的值,配置Tag
321
+ onFilter === null || onFilter === void 0 ? void 0 : onFilter(values); // 清空advancedForm的值
347
322
 
348
- var clearKeys = {};
349
- (_Object$keys = Object.keys(advancedForm.values)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.forEach(function (key) {
350
- clearKeys[key] = undefined;
351
- });
352
- advancedForm.setValues(clearKeys);
353
- configFilterItem(advancedForm);
354
- configTag();
355
- }
356
- }
323
+ var clearKeys = {};
324
+ (_Object$keys = Object.keys(advancedForm.values)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.forEach(function (key) {
325
+ clearKeys[key] = undefined;
326
+ });
327
+ advancedForm.setValues(clearKeys); // 配置Tag
328
+
329
+ configFilterItem(advancedForm);
330
+ configTag();
357
331
  }, [onFilter]); // 轻量搜索Change
358
332
 
359
333
  var onLightChange = useCallback(function (values, fieldValue, fieldName) {
360
334
  if (currentForm.current === 'light') {
361
335
  onChange === null || onChange === void 0 ? void 0 : onChange(values, fieldValue, fieldName);
336
+
337
+ if (filterEnable.current === 'filter') {
338
+ debounceFun(onLightFilter, values);
339
+ }
362
340
  }
363
- }, [onChange]); // 高级搜索Filter
341
+ }, [onChange, onLightFilter]); // 高级搜索Filter
364
342
 
365
343
  var onAdvancedFilter = useCallback(function (values) {
366
344
  setCurrentForm('advanced');
@@ -380,54 +358,7 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
380
358
  lightForm.reset('*', {
381
359
  forceClear: true
382
360
  });
383
- }, [onReset]); // 高级搜索Init
384
-
385
- var onAdvancedInit = useCallback( /*#__PURE__*/function () {
386
- var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(values) {
387
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
388
- while (1) {
389
- switch (_context2.prev = _context2.next) {
390
- case 0:
391
- if (!(currentForm.current === 'advanced')) {
392
- _context2.next = 9;
393
- break;
394
- }
395
-
396
- if (!(filterEnable.current === 'initialized')) {
397
- _context2.next = 9;
398
- break;
399
- }
400
-
401
- filterEnable.current = 'filter';
402
-
403
- if (!hasRequired) {
404
- _context2.next = 6;
405
- break;
406
- }
407
-
408
- _context2.next = 6;
409
- return advancedForm.validate();
410
-
411
- case 6:
412
- onInit === null || onInit === void 0 ? void 0 : onInit(values);
413
- configFilterItem(advancedForm);
414
-
415
- if (!panelVisible) {
416
- configTag();
417
- }
418
-
419
- case 9:
420
- case "end":
421
- return _context2.stop();
422
- }
423
- }
424
- }, _callee2);
425
- }));
426
-
427
- return function (_x2) {
428
- return _ref5.apply(this, arguments);
429
- };
430
- }(), [hasRequired, onInit]); // 高级搜索Change
361
+ }, [onReset]); // 高级搜索Change
431
362
 
432
363
  var onAdvancedChange = useCallback(function (values, fieldValue, fieldName) {
433
364
  if (currentForm.current === 'advanced') {
@@ -447,16 +378,14 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
447
378
  configFilterItem(advancedForm);
448
379
  configTag();
449
380
  onFilter === null || onFilter === void 0 ? void 0 : onFilter(toJS(advancedForm.values));
450
- }, [onFilter]); // initialValues和initialRequest的回调
381
+ }, [onFilter]); // initialRequest 的回调
451
382
 
452
383
  var onInitialComplete = useCallback(function (form) {
384
+ initialRequestRef.current = false;
453
385
  form.setState({
454
- loading: false
386
+ loading: initialRequestRef.current
455
387
  });
456
- }, []);
457
- var debounceFun = debounce(function (fun, props) {
458
- return fun(props);
459
- }, filterDebounce); // 组件挂载
388
+ }, []); // 组件挂载
460
389
 
461
390
  useEffect(function () {
462
391
  setCurrentForm(currentForm.current);
@@ -475,37 +404,28 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
475
404
  filterValues: filterValues,
476
405
  activeFilterValueRef: activeFilterValueRef,
477
406
  form: lightForm,
478
- onChange: function onChange(values, fieldValue, fieldName) {
479
- debounceFun(onLightFilter, values);
480
- onLightChange(values, fieldValue, fieldName);
481
- }
407
+ onChange: onLightChange
482
408
  }))) : /*#__PURE__*/React.createElement("div", {
483
409
  className: "".concat(prefixCls, "-inline")
484
410
  }, /*#__PURE__*/React.createElement(SimpleFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
485
411
  form: simpleForm,
486
- onChange: function onChange(values, fieldValue, fieldName) {
487
- debounceFun(onSimpleFilter, values);
488
- onSimpleChange(values, fieldValue, fieldName);
489
- },
412
+ onChange: onSimpleChange,
490
413
  onSubmit: onSimpleFilter,
491
414
  onInitialComplete: onInitialComplete
492
415
  }))),
493
416
  panelContent: mode === 'panel' ? /*#__PURE__*/React.createElement(AdvancedFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
494
417
  form: advancedForm,
495
- onChange: function onChange(values, fieldValue, fieldName) {
496
- debounceFun(onAdvancedInit, values);
497
- onAdvancedChange(values, fieldValue, fieldName);
498
- },
418
+ onChange: onAdvancedChange,
499
419
  onSubmit: onAdvancedFilter,
500
420
  onReset: onAdvancedReset,
501
421
  onInitialComplete: onInitialComplete
502
422
  })) : null
503
- }, mode === 'panel' && !panelVisible ? /*#__PURE__*/React.createElement(Tag.Group, null, tagDataSource.map(function (_ref6) {
504
- var key = _ref6.key,
505
- label = _ref6.label,
506
- value = _ref6.value,
507
- type = _ref6.type,
508
- index = _ref6.index;
423
+ }, mode === 'panel' && !panelVisible ? /*#__PURE__*/React.createElement(Tag.Group, null, tagDataSource.map(function (_ref5) {
424
+ var key = _ref5.key,
425
+ label = _ref5.label,
426
+ value = _ref5.value,
427
+ type = _ref5.type,
428
+ index = _ref5.index;
509
429
  return /*#__PURE__*/React.createElement(Tag.Closeable, {
510
430
  key: isNum(index) ? key + label : key,
511
431
  afterClose: function afterClose() {
@@ -1,5 +1,4 @@
1
- import React from 'react';
2
- import type { ProFormProps } from '../typing';
1
+ import type { ComposedProForm } from '../typing';
3
2
  import './index.scss';
4
- declare const ProForm: React.FC<ProFormProps>;
3
+ declare const ProForm: ComposedProForm;
5
4
  export default ProForm;
@@ -1,4 +1,4 @@
1
- var _excluded = ["form", "initialValues", "initialRequest", "schema", "scope", "context", "components", "children", "layout", "labelAlign", "wrapperAlign", "labelCol", "wrapperCol", "breakpoints", "onChange", "onSubmit", "onSubmitFailed", "onInitialComplete", "className", "validateFirst"];
1
+ var _excluded = ["form", "initialValues", "initialRequest", "scope", "context", "components", "layout", "labelAlign", "wrapperAlign", "labelCol", "wrapperCol", "breakpoints", "onChange", "onChangeType", "onSubmit", "onSubmitFailed", "onInitialComplete", "className", "validateFirst"];
2
2
 
3
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
4
 
@@ -10,28 +10,61 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
10
10
 
11
11
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
12
12
 
13
- import React, { memo, useEffect, useMemo } from 'react';
13
+ import React, { memo, useMemo } from 'react';
14
14
  import cls from 'classnames';
15
- import { createForm, onFieldValueChange, registerValidateLocale, setValidateLanguage } from '@formily/core';
16
- import { toJS } from '@formily/reactive';
17
- import { Form } from '@teamix/formily';
18
15
  import { usePrefixCls, getLanguage, getGlobalConfig } from '@teamix/utils';
16
+ import { createForm, onFieldValueChange, onFormValuesChange, registerValidateLocale, setValidateLanguage } from '@formily/core';
17
+ import { toJS } from '@formily/reactive';
18
+ import { Form, Upload, SelectTable, FormLayout, FormItem, ArrayCollapse, ArrayCards, ArrayItems, ArrayTable, Space, FormGrid, FormTab, FormCollapse, FormStep, Editable, FormDialog, FormDrawer, FormButtonGroup, Submit, Reset } from '@teamix/formily';
19
+ import { Affix } from '@alicloudfe/components';
20
+ import ProFieldComponents from '../Components/ProField';
21
+ import { EditableDialog, EditableDrawer, EditablePopover } from '../Components/Editable';
22
+ import FormGroup from '../Components/FormGroup';
23
+ import LightFilter from '../Components/LightFilter';
24
+ import Text from '../Components/Text/index';
19
25
  import SchemaForm from '../SchemaForm';
20
26
  import { mergeArrayValue } from '../utils';
21
27
  import useAutoSubmit from './useAutoSubmit';
22
28
  import useInitialRequest from './useInitialRequest';
29
+ import useFieldSchema from './useFieldSchema';
23
30
  import validateLocale from '../locales/validate';
24
31
  import './index.scss';
25
32
  registerValidateLocale(validateLocale);
33
+ var formilyComponents = {
34
+ FormLayout: FormLayout,
35
+ FormItem: FormItem,
36
+ ArrayCollapse: ArrayCollapse,
37
+ ArrayCards: ArrayCards,
38
+ ArrayItems: ArrayItems,
39
+ ArrayTable: ArrayTable,
40
+ Space: Space,
41
+ FormGrid: FormGrid,
42
+ FormTab: FormTab,
43
+ FormCollapse: FormCollapse,
44
+ FormStep: FormStep,
45
+ Editable: Editable,
46
+ FormDialogFooter: FormDialog.Footer,
47
+ FormDrawerFooter: FormDrawer.Footer,
48
+ FormButtonGroup: FormButtonGroup,
49
+ Submit: Submit,
50
+ Reset: Reset,
51
+ EditableDialog: EditableDialog,
52
+ EditableDrawer: EditableDrawer,
53
+ EditablePopover: EditablePopover,
54
+ FormGroup: FormGroup,
55
+ Upload: Upload,
56
+ SelectTable: SelectTable,
57
+ Affix: Affix,
58
+ LightFilter: LightFilter,
59
+ Text: Text
60
+ };
26
61
  var ProForm = /*#__PURE__*/memo(function (_ref) {
27
62
  var outerForm = _ref.form,
28
63
  initialValues = _ref.initialValues,
29
64
  initialRequest = _ref.initialRequest,
30
- schema = _ref.schema,
31
65
  scope = _ref.scope,
32
66
  context = _ref.context,
33
67
  components = _ref.components,
34
- children = _ref.children,
35
68
  layout = _ref.layout,
36
69
  labelAlign = _ref.labelAlign,
37
70
  wrapperAlign = _ref.wrapperAlign,
@@ -39,6 +72,7 @@ var ProForm = /*#__PURE__*/memo(function (_ref) {
39
72
  wrapperCol = _ref.wrapperCol,
40
73
  breakpoints = _ref.breakpoints,
41
74
  onChange = _ref.onChange,
75
+ onChangeType = _ref.onChangeType,
42
76
  onSubmit = _ref.onSubmit,
43
77
  onSubmitFailed = _ref.onSubmitFailed,
44
78
  onInitialComplete = _ref.onInitialComplete,
@@ -65,7 +99,7 @@ var ProForm = /*#__PURE__*/memo(function (_ref) {
65
99
  }); // context需要实名不能解构
66
100
 
67
101
 
68
- var mergedComponents = _objectSpread(_objectSpread({}, globalComponents), components);
102
+ var mergedComponents = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, globalComponents), components), formilyComponents), ProFieldComponents);
69
103
 
70
104
  var onAutoSubmit = useAutoSubmit(onSubmit); // todo 需要formily支持断点下的属性更新
71
105
 
@@ -85,47 +119,62 @@ var ProForm = /*#__PURE__*/memo(function (_ref) {
85
119
  labelCol: mergeArrayValue([24], labelCol),
86
120
  wrapperCol: mergeArrayValue([24], wrapperCol)
87
121
  };
88
- }, [breakpoints, layout, labelAlign, wrapperAlign, labelCol, wrapperCol]); // 添加onChange
89
-
90
- useEffect(function () {
91
- form.removeEffects('onFieldValueChange');
92
- form.addEffects('onFieldValueChange', function () {
93
- onFieldValueChange('*', function (field, form) {
94
- var _field$props;
95
-
96
- onChange && onChange(toJS(form.values), toJS(field.value), (_field$props = field.props) === null || _field$props === void 0 ? void 0 : _field$props.name);
97
- });
98
- });
99
- }, [form, onChange]); // 配置表单默认值
100
-
101
- useEffect(function () {
122
+ }, [breakpoints, layout, labelAlign, wrapperAlign, labelCol, wrapperCol]);
123
+ var schema = useFieldSchema(otherProps);
124
+ useMemo(function () {
125
+ // 配置表单默认值
102
126
  if (initialValues) {
103
127
  form.setInitialValues(initialValues);
104
- onInitialComplete === null || onInitialComplete === void 0 ? void 0 : onInitialComplete(form);
105
128
  } else if (initialRequest) {
106
129
  useInitialRequest(initialRequest).then(function (values) {
107
130
  form.setInitialValues(values);
108
131
  }).finally(function () {
109
132
  onInitialComplete === null || onInitialComplete === void 0 ? void 0 : onInitialComplete(form);
110
133
  });
111
- }
112
- }, []); // 配置国际化
134
+ } // 配置国际化
135
+
113
136
 
114
- useEffect(function () {
115
137
  setValidateLanguage(getLanguage() || 'zh-cn');
116
- }, []);
138
+ }, []); // 添加 onChange 事件
139
+
140
+ useMemo(function () {
141
+ if (onChangeType === 'form') {
142
+ // 使用 onFormValuesChange 无法监听具体变化字段
143
+ form.removeEffects('onChangeByFormValuesChange');
144
+ form.addEffects('onChangeByFormValuesChange', function () {
145
+ onFormValuesChange(function (form) {
146
+ onChange === null || onChange === void 0 ? void 0 : onChange(toJS(form.values));
147
+ });
148
+ });
149
+ } else {
150
+ // 使用 onFieldValueChange 无法监听数组类型值的增删
151
+ form.removeEffects('onChangeByFieldValueChange');
152
+ form.addEffects('onChangeByFieldValueChange', function () {
153
+ onFieldValueChange('*', function (field, form) {
154
+ var _field$props;
155
+
156
+ onChange === null || onChange === void 0 ? void 0 : onChange(toJS(form.values), toJS(field.value), (_field$props = field.props) === null || _field$props === void 0 ? void 0 : _field$props.name);
157
+ });
158
+ });
159
+ }
160
+ }, [onChange]);
117
161
  return /*#__PURE__*/React.createElement(Form, _objectSpread(_objectSpread(_objectSpread({
118
162
  className: cls(prefixCls, className)
119
163
  }, otherProps), getTeamixLayout), {}, {
120
164
  form: form,
121
165
  onAutoSubmit: onAutoSubmit,
122
166
  onAutoSubmitFailed: onSubmitFailed
123
- }), /*#__PURE__*/React.createElement(SchemaForm, {
167
+ }), schema ? /*#__PURE__*/React.createElement(SchemaForm, {
124
168
  schema: schema,
125
169
  scope: mergedScope,
126
170
  components: mergedComponents
127
- }), children);
171
+ }) : null, otherProps === null || otherProps === void 0 ? void 0 : otherProps.children);
128
172
  });
173
+
174
+ ProForm.Field = function () {
175
+ return /*#__PURE__*/React.createElement(React.Fragment, null);
176
+ };
177
+
129
178
  ProForm.defaultProps = {
130
179
  colon: false,
131
180
  labelAlign: 'left',