@zat-design/sisyphus-react 3.7.1 → 3.7.2-beta.10

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/es/ProEditTable/components/RenderField/index.js +91 -69
  2. package/es/ProEditTable/propsType.d.ts +1 -1
  3. package/es/ProEditTable/utils/getDefaultProps.d.ts +1 -0
  4. package/es/ProEditTable/utils/getDefaultProps.js +32 -0
  5. package/es/ProForm/components/combination/Group/component/ComRender.js +3 -1
  6. package/es/ProForm/components/combination/Group/utils.js +24 -3
  7. package/es/ProForm/components/render/Render.js +12 -23
  8. package/es/ProForm/components/render/RenderFields.js +3 -1
  9. package/es/ProForm/components/render/propsType.d.ts +2 -2
  10. package/es/ProForm/utils/getDefaultProps.d.ts +1 -0
  11. package/es/ProForm/utils/getDefaultProps.js +31 -0
  12. package/es/ProForm/utils/rulesCreator.d.ts +1 -1
  13. package/es/ProForm/utils/rulesCreator.js +25 -22
  14. package/es/ProForm/utils/useRules.js +1 -1
  15. package/es/ProForm/utils/valueType.js +2 -2
  16. package/es/ProSelect/index.js +2 -1
  17. package/es/ProSelect/utils/index.d.ts +1 -7
  18. package/es/ProSelect/utils/index.js +13 -5
  19. package/es/ProTable/components/RenderColumn/index.js +58 -30
  20. package/es/ProTable/index.js +14 -2
  21. package/es/ProTable/propsType.d.ts +1 -0
  22. package/es/ProUpload/index.js +1 -1
  23. package/es/ProUpload/propsType.d.ts +5 -0
  24. package/lib/ProEditTable/components/RenderField/index.js +92 -70
  25. package/lib/ProEditTable/propsType.d.ts +1 -1
  26. package/lib/ProEditTable/utils/getDefaultProps.d.ts +1 -0
  27. package/lib/ProEditTable/utils/getDefaultProps.js +39 -0
  28. package/lib/ProForm/components/combination/Group/component/ComRender.js +3 -1
  29. package/lib/ProForm/components/combination/Group/utils.js +24 -3
  30. package/lib/ProForm/components/render/Render.js +12 -23
  31. package/lib/ProForm/components/render/RenderFields.js +3 -1
  32. package/lib/ProForm/components/render/propsType.d.ts +2 -2
  33. package/lib/ProForm/utils/getDefaultProps.d.ts +1 -0
  34. package/lib/ProForm/utils/getDefaultProps.js +37 -0
  35. package/lib/ProForm/utils/rulesCreator.d.ts +1 -1
  36. package/lib/ProForm/utils/rulesCreator.js +25 -22
  37. package/lib/ProForm/utils/useRules.js +1 -1
  38. package/lib/ProForm/utils/valueType.js +2 -2
  39. package/lib/ProSelect/index.js +2 -1
  40. package/lib/ProSelect/utils/index.d.ts +1 -7
  41. package/lib/ProSelect/utils/index.js +13 -5
  42. package/lib/ProTable/components/RenderColumn/index.js +58 -30
  43. package/lib/ProTable/index.js +13 -1
  44. package/lib/ProTable/propsType.d.ts +1 -0
  45. package/lib/ProUpload/index.js +1 -1
  46. package/lib/ProUpload/propsType.d.ts +5 -0
  47. package/package.json +1 -1
@@ -24,9 +24,10 @@ import { FieldProvider } from '../../../ProForm/utils/useFieldProps';
24
24
  import useRules from '../../../ProForm/utils/useRules';
25
25
  import { isSelect, isTrim } from '../../../ProForm/utils';
26
26
  import ConfirmWrapper from '../../../ProForm/components/render/ConfirmWrapper';
27
+ import { getDefaultProps } from '../../utils/getDefaultProps';
27
28
  import ListChanged from './ListChanged';
28
29
  var RenderField = function RenderField(_ref) {
29
- var _type, _type$replace, _fieldProps2, _names, _TargetComponent4, _componentProps, _componentProps2;
30
+ var _type, _type$replace, _fieldProps2, _names, _TargetComponent4, _componentProps2;
30
31
  var value = _ref.text,
31
32
  record = _ref.record,
32
33
  index = _ref.index,
@@ -78,6 +79,7 @@ var RenderField = function RenderField(_ref) {
78
79
  var _fieldProps = fieldProps || formItemProps || {};
79
80
  var _rules = rules || [];
80
81
  var _required = required;
82
+ var _valueType = valueType;
81
83
  var _disabled = false;
82
84
  var isCell = mode === 'cell';
83
85
  if (isCell) {
@@ -102,11 +104,18 @@ var RenderField = function RenderField(_ref) {
102
104
  };
103
105
  // 行参数
104
106
  var rowParams = [currentValue, rowData, options];
105
- if (typeof isEditable === 'function') {
106
- isEditable = isEditable.apply(void 0, rowParams);
107
- setTimeout(function () {
108
- !isEditable && form.validateFields([cellName]);
109
- }, 100);
107
+ // required & rules & fieldProps & disabled & valueType 函数化处理
108
+ if (isFunction(required)) {
109
+ _required = required.apply(void 0, rowParams);
110
+ }
111
+ if (isFunction(fieldProps)) {
112
+ _fieldProps = fieldProps.apply(void 0, rowParams);
113
+ }
114
+ if (isFunction(rules)) {
115
+ _rules = rules.apply(void 0, rowParams);
116
+ }
117
+ if (isFunction(valueType)) {
118
+ _valueType = valueType.apply(void 0, rowParams);
110
119
  }
111
120
  // 获取最终的disabled
112
121
  _disabled = getDisabled({
@@ -117,6 +126,12 @@ var RenderField = function RenderField(_ref) {
117
126
  columnFieldProps: _fieldProps,
118
127
  params: rowParams
119
128
  });
129
+ if (typeof isEditable === 'function') {
130
+ isEditable = isEditable.apply(void 0, rowParams);
131
+ setTimeout(function () {
132
+ !isEditable && form.validateFields([cellName]);
133
+ }, 100);
134
+ }
120
135
  // 是否只读文本
121
136
  var isView = !isEditable || (record === null || record === void 0 ? void 0 : record['is-view']) || config.isView || virtualKey && !isEditing || getDisabled({
122
137
  globalControl: otherProps === null || otherProps === void 0 ? void 0 : otherProps.globalControl,
@@ -130,15 +145,6 @@ var RenderField = function RenderField(_ref) {
130
145
  // 只读文本时,采用当前formItem的name,单行编辑时,使用生成的虚拟的name
131
146
  var baseName = isView ? name : namePath;
132
147
  var TargetComponent;
133
- if (isFunction(required)) {
134
- _required = required.apply(void 0, rowParams);
135
- }
136
- if (isFunction(fieldProps)) {
137
- _fieldProps = fieldProps.apply(void 0, rowParams);
138
- }
139
- if (isFunction(rules)) {
140
- _rules = rules.apply(void 0, rowParams);
141
- }
142
148
  // 设置校验规则
143
149
  var internalRule = useRules({
144
150
  names: names,
@@ -154,11 +160,17 @@ var RenderField = function RenderField(_ref) {
154
160
  });
155
161
  // 分离form item参数,防止对于参数透传(如onChange,防止重复触发)并优先级高于 _fieldProps 内部参数
156
162
  var formItemChildProps = _objectSpread({}, _fieldProps);
163
+ var defaultProps = getDefaultProps({
164
+ name: name,
165
+ namePath: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName,
166
+ type: column === null || column === void 0 ? void 0 : column.type,
167
+ fieldProps: column === null || column === void 0 ? void 0 : column.fieldProps
168
+ });
157
169
  // 允许formItem的属性放在column最外层
158
- var _formItemProps = _objectSpread(_objectSpread({}, resetProps), internalRule);
170
+ var _formItemProps = _objectSpread(_objectSpread(_objectSpread({}, defaultProps), resetProps), internalRule);
159
171
  if (['Switch', 'SwitchCheckbox'].includes(type)) {
160
172
  _formItemProps.valuePropName = 'checked';
161
- valueType = 'switch';
173
+ _valueType = 'switch';
162
174
  }
163
175
  /**
164
176
  * 针对一些特殊类型,基于formItem的normalize与getValueProps进行默认值类型转换
@@ -166,7 +178,7 @@ var RenderField = function RenderField(_ref) {
166
178
  */
167
179
  var defaultTransform = function defaultTransform() {
168
180
  var types = ['DatePicker', 'RangePicker'];
169
- if (!valueType && types.includes(type)) {
181
+ if (!_valueType && types.includes(type)) {
170
182
  var _transformMap$type;
171
183
  return transformMap === null || transformMap === void 0 ? void 0 : (_transformMap$type = transformMap[type]) === null || _transformMap$type === void 0 ? void 0 : _transformMap$type.call(transformMap, _fieldProps || {});
172
184
  }
@@ -179,18 +191,18 @@ var RenderField = function RenderField(_ref) {
179
191
  var valueTypeTransform = useCallback(function () {
180
192
  var _fieldProps3;
181
193
  // 不存在valueType返回空
182
- if (!valueType) {
194
+ if (!_valueType) {
183
195
  return {};
184
196
  }
185
197
  // SwitchCheckbox默认YN, 兼容已有组件
186
198
  if (type === 'SwitchCheckbox') {
187
- valueType = 'switch';
199
+ _valueType = 'switch';
188
200
  }
189
201
  var params = _objectSpread(_objectSpread({}, column), {}, {
190
202
  mode: (_fieldProps3 = _fieldProps) === null || _fieldProps3 === void 0 ? void 0 : _fieldProps3.mode
191
203
  });
192
- return isFunction(valueTypeMap[valueType]) ? valueTypeMap[valueType](params) : {};
193
- }, [valueType]);
204
+ return isFunction(valueTypeMap[_valueType]) ? valueTypeMap[_valueType](params) : {};
205
+ }, [_valueType]);
194
206
  if ((_names = names) === null || _names === void 0 ? void 0 : _names.length) {
195
207
  // 支持names配置,临时生成对应的formItem,用来存储单个对应的值
196
208
  names = names.map(function (key) {
@@ -221,7 +233,7 @@ var RenderField = function RenderField(_ref) {
221
233
  }
222
234
  var namesStr = [].concat(_toConsumableArray(baseName), [index, dataIndex]);
223
235
  var transform = {};
224
- if (valueType) {
236
+ if (_valueType) {
225
237
  transform = valueTypeTransform();
226
238
  }
227
239
  return transformNames(_objectSpread(_objectSpread({}, _formItemProps), transform), form, names, namesStr, type);
@@ -501,7 +513,7 @@ var RenderField = function RenderField(_ref) {
501
513
  name: cellName,
502
514
  listName: cellName,
503
515
  viewEmpty: viewEmpty,
504
- valueType: valueType,
516
+ valueType: _valueType,
505
517
  isView: isView
506
518
  }
507
519
  });
@@ -530,55 +542,65 @@ var RenderField = function RenderField(_ref) {
530
542
  delete _formItemProps.rules;
531
543
  }
532
544
  var _className = classNames(_defineProperty({}, className, className));
533
- var FormItem = null;
534
- var FieldComponent = /*#__PURE__*/React.isValidElement(TargetComponent) ? ( /*#__PURE__*/React.cloneElement(TargetComponent, componentProps)) : _jsx(TargetComponent, _objectSpread({}, componentProps));
535
- if (originalValues) {
536
- FieldComponent = _jsx(ListChanged, {
537
- name: cellName,
538
- names: names,
539
- namesStr: [].concat(_toConsumableArray(baseName), [index, dataIndex]),
540
- rowKeyPath: [].concat(_toConsumableArray(baseName), [index, 'rowKey']),
541
- originalName: originalName,
542
- originalNames: originalNames,
543
- originalValues: originalValues,
544
- form: form,
545
- equalWith: equalWith,
546
- type: type,
547
- onChange: _onChange,
545
+ var getFieldItem = function getFieldItem() {
546
+ var _componentProps;
547
+ var FormItem = null;
548
+ var FieldComponent = /*#__PURE__*/React.isValidElement(TargetComponent) ? ( /*#__PURE__*/React.cloneElement(TargetComponent, componentProps)) : _jsx(TargetComponent, _objectSpread({}, componentProps));
549
+ if (originalValues) {
550
+ FieldComponent = _jsx(ListChanged, {
551
+ name: cellName,
552
+ names: names,
553
+ namesStr: [].concat(_toConsumableArray(baseName), [index, dataIndex]),
554
+ rowKeyPath: [].concat(_toConsumableArray(baseName), [index, 'rowKey']),
555
+ originalName: originalName,
556
+ originalNames: originalNames,
557
+ originalValues: originalValues,
558
+ form: form,
559
+ equalWith: equalWith,
560
+ type: type,
561
+ onChange: _onChange,
562
+ children: FieldComponent
563
+ });
564
+ }
565
+ if ((_componentProps = componentProps) === null || _componentProps === void 0 ? void 0 : _componentProps.confirm) {
566
+ FieldComponent = _jsx(ConfirmWrapper, _objectSpread(_objectSpread({}, componentProps), {}, {
567
+ children: FieldComponent
568
+ }));
569
+ }
570
+ FormItem = TargetComponent ? _jsx(_Form.Item, _objectSpread(_objectSpread({
571
+ validateFirst: true
572
+ }, omit(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name', 'onCell', _fieldProps.shouldUpdate ? 'shouldUpdate' : null])), {}, {
573
+ className: _className,
574
+ name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName,
548
575
  children: FieldComponent
576
+ })) : _jsx(Container, {
577
+ viewEmpty: viewEmpty
549
578
  });
550
- }
551
- if ((_componentProps = componentProps) === null || _componentProps === void 0 ? void 0 : _componentProps.confirm) {
552
- FieldComponent = _jsx(ConfirmWrapper, _objectSpread(_objectSpread({}, componentProps), {}, {
553
- children: FieldComponent
554
- }));
555
- }
556
- FormItem = TargetComponent ? _jsx(_Form.Item, _objectSpread(_objectSpread({
557
- validateFirst: true
558
- }, omit(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name', 'onCell'])), {}, {
559
- className: _className,
560
- name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName,
561
- children: FieldComponent
562
- })) : _jsx(Container, {
563
- viewEmpty: viewEmpty
564
- });
565
- if (type === 'FormList') {
566
- FormItem = _jsx(_Form.List, _objectSpread(_objectSpread({
567
- name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName
568
- }, omit(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name'])), {}, {
569
- children: function children(fields, operation, meta) {
570
- return _jsx(TargetComponent, _objectSpread(_objectSpread({}, componentProps), {}, {
571
- otherProps: otherProps,
572
- fields: fields,
573
- operation: operation,
574
- meta: meta
575
- }));
576
- }
577
- }));
578
- }
579
+ if (type === 'FormList') {
580
+ FormItem = _jsx(_Form.List, _objectSpread(_objectSpread({
581
+ name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName
582
+ }, omit(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name'])), {}, {
583
+ children: function children(fields, operation, meta) {
584
+ return _jsx(TargetComponent, _objectSpread(_objectSpread({}, componentProps), {}, {
585
+ otherProps: otherProps,
586
+ fields: fields,
587
+ operation: operation,
588
+ meta: meta
589
+ }));
590
+ }
591
+ }));
592
+ }
593
+ return FormItem;
594
+ };
579
595
  return _jsx(FieldProvider, {
580
596
  value: (_componentProps2 = componentProps) === null || _componentProps2 === void 0 ? void 0 : _componentProps2.otherProps,
581
- children: FormItem
597
+ children: _formItemProps.shouldUpdate ? _jsx(_Form.Item, {
598
+ noStyle: true,
599
+ shouldUpdate: _formItemProps.shouldUpdate,
600
+ children: function children() {
601
+ return getFieldItem();
602
+ }
603
+ }) : getFieldItem()
582
604
  });
583
605
  };
584
606
  export default RenderField;
@@ -96,7 +96,7 @@ export interface ProColumnsProps<Values = any, T = any> extends Omit<FormItemPro
96
96
  names?: NamePath[];
97
97
  cache?: boolean;
98
98
  isEditable?: boolean | RequiredFn<T>;
99
- valueType?: ProFormValueType;
99
+ valueType?: ProFormValueType | ((text?: any, record?: any, options?: OptionsProps) => ProFormValueType);
100
100
  tooltip?: string | ({
101
101
  icon?: string | ReactNode;
102
102
  } & TooltipProps);
@@ -0,0 +1 @@
1
+ export declare const getDefaultProps: (props: any) => any;
@@ -0,0 +1,32 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import { get, isEqual } from 'lodash';
3
+ var defaultPropsMap = {
4
+ ProSelect: function ProSelect(props) {
5
+ var fieldProps = props.fieldProps,
6
+ name = props.name,
7
+ namePath = props.namePath;
8
+ var _ref = fieldProps || {},
9
+ filterInList = _ref.filterInList;
10
+ var defaultProps = {};
11
+ // formList场景传入列表过滤时
12
+ if (filterInList && namePath && name) {
13
+ var _namePath = _toConsumableArray(namePath).splice(2, namePath.length - 1);
14
+ defaultProps.shouldUpdate = function (preValues, curValues) {
15
+ var _get, _get$map, _get2, _get2$map;
16
+ var preListValue = (_get = get(preValues, name)) === null || _get === void 0 ? void 0 : (_get$map = _get.map) === null || _get$map === void 0 ? void 0 : _get$map.call(_get, function (item) {
17
+ return get(item, _namePath);
18
+ });
19
+ var curListValue = (_get2 = get(curValues, name)) === null || _get2 === void 0 ? void 0 : (_get2$map = _get2.map) === null || _get2$map === void 0 ? void 0 : _get2$map.call(_get2, function (item) {
20
+ return get(item, _namePath);
21
+ });
22
+ return !isEqual(preListValue, curListValue);
23
+ };
24
+ }
25
+ return defaultProps;
26
+ }
27
+ };
28
+ export var getDefaultProps = function getDefaultProps(props) {
29
+ var _defaultPropsMap$type;
30
+ var type = props.type;
31
+ return (_defaultPropsMap$type = defaultPropsMap[type]) === null || _defaultPropsMap$type === void 0 ? void 0 : _defaultPropsMap$type.call(defaultPropsMap, props);
32
+ };
@@ -1,7 +1,7 @@
1
1
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
3
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
4
- var _excluded = ["type", "confirm", "component", "fieldProps", "contextProps", "before", "after", "getValueProps", "valuePropName"];
4
+ var _excluded = ["type", "confirm", "component", "fieldProps", "contextProps", "before", "after", "getValueProps", "valuePropName", "valueType"];
5
5
  import { jsx as _jsx } from "react/jsx-runtime";
6
6
  import React from 'react';
7
7
  import ConfirmWrapper from '../../../../components/render/ConfirmWrapper';
@@ -40,6 +40,7 @@ var ComRender = function ComRender(props) {
40
40
  getValueProps = props.getValueProps,
41
41
  _props$valuePropName = props.valuePropName,
42
42
  valuePropName = _props$valuePropName === void 0 ? 'value' : _props$valuePropName,
43
+ valueType = props.valueType,
43
44
  rest = _objectWithoutProperties(props, _excluded);
44
45
  var TypeComponent = componentMap[type];
45
46
  var mergedGetValueProps = getValueProps || function (val) {
@@ -51,6 +52,7 @@ var ComRender = function ComRender(props) {
51
52
  var Com = getComRender(Component, props, componentProps);
52
53
  return _jsx(FieldProvider, {
53
54
  value: _objectSpread(_objectSpread({}, contextProps), {}, {
55
+ valueType: valueType,
54
56
  type: type
55
57
  }),
56
58
  children: Com
@@ -87,7 +87,7 @@ export var getReactiveProps = function getReactiveProps(params) {
87
87
  component = params.component,
88
88
  fieldProps = params.fieldProps,
89
89
  name = params.name;
90
- var values = form.getFieldsValue(namePath || undefined);
90
+ var values = namePath ? form.getFieldValue(namePath) : form.getFieldsValue();
91
91
  var _disabled = isFunction(disabled) ? disabled(values, {
92
92
  form: form,
93
93
  index: index,
@@ -182,7 +182,8 @@ export var useTransformColumns = function useTransformColumns(params) {
182
182
  mode = _ref.mode,
183
183
  onChange = _ref.onChange,
184
184
  onFieldChange = _ref.onFieldChange,
185
- comDisabled = _ref.disabled;
185
+ comDisabled = _ref.disabled,
186
+ onBlur = _ref.onBlur;
186
187
  var _disabled = disabled || comDisabled;
187
188
  var columnName = names ? names[index] : [].concat(name, index);
188
189
  // 响应式字段改变后的回调
@@ -192,7 +193,13 @@ export var useTransformColumns = function useTransformColumns(params) {
192
193
  if ((current === null || current === void 0 ? void 0 : current.show) === false) {
193
194
  clearInterval(timerRef.current[index]);
194
195
  timerRef.current[index] = setTimeout(function () {
195
- form.resetFields([columnName]);
196
+ if (names) {
197
+ form.resetFields([columnName]);
198
+ }
199
+ if (!names && (value === null || value === void 0 ? void 0 : value.length)) {
200
+ value[index] = null;
201
+ form.setFieldValue(columnName, _toConsumableArray(value));
202
+ }
196
203
  }, 200);
197
204
  } else {
198
205
  clearInterval(timerRef.current[index]);
@@ -261,6 +268,19 @@ export var useTransformColumns = function useTransformColumns(params) {
261
268
  }
262
269
  }
263
270
  };
271
+ var handleBlur = function handleBlur() {
272
+ if (!onBlur) return;
273
+ var values = form.getFieldValue(namePath);
274
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
275
+ args[_key2] = arguments[_key2];
276
+ }
277
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(args[0], values, {
278
+ index: outerIndex,
279
+ namePath: namePath,
280
+ form: form,
281
+ option: args === null || args === void 0 ? void 0 : args[1]
282
+ });
283
+ };
264
284
  return _objectSpread(_objectSpread(_objectSpread({}, column), {}, {
265
285
  name: columnName
266
286
  }, reactiveProps), {}, {
@@ -268,6 +288,7 @@ export var useTransformColumns = function useTransformColumns(params) {
268
288
  getValueProps: transform === null || transform === void 0 ? void 0 : transform.getValueProps,
269
289
  fieldProps: _objectSpread(_objectSpread({}, column === null || column === void 0 ? void 0 : column.fieldProps), {}, {
270
290
  onChange: handleChange,
291
+ onBlur: handleBlur,
271
292
  value: value === null || value === void 0 ? void 0 : value[index]
272
293
  })
273
294
  });
@@ -441,36 +441,25 @@ var Render = function Render(props) {
441
441
  children: child
442
442
  });
443
443
  }
444
- var orgFormItem = _jsx(_Form.Item, _objectSpread(_objectSpread({}, omit(_otherFormItemProps, filterFormItemKey)), {}, {
444
+ return _jsx(_Form.Item, _objectSpread(_objectSpread({}, omit(_otherFormItemProps, filterFormItemKey)), {}, {
445
445
  // @ts-ignore
446
446
  _internalItemRender: internalItemRender,
447
447
  className: _className,
448
448
  children: child
449
449
  }));
450
- var formItem = orgFormItem;
451
- // 当存在shouldUpdate时捕获所有form变更(防止表单onchange设置form值时无法更新的问题)
452
- if (_otherFormItemProps.shouldUpdate) {
453
- formItem =
454
- // 空标签防止气泡不显示
455
- _jsx(_Fragment, {
456
- children: _jsx(_Form.Item, {
457
- shouldUpdate: _otherFormItemProps.shouldUpdate,
458
- noStyle: true,
459
- children: function children() {
460
- return _jsx(_Form.Item, _objectSpread(_objectSpread({}, omit(_otherFormItemProps, filterFormItemKey)), {}, {
461
- // @ts-ignore
462
- _internalItemRender: internalItemRender,
463
- className: _className,
464
- children: child
465
- }));
466
- }
467
- })
468
- });
469
- }
470
- return formItem;
471
450
  };
472
451
  var FormItem = _jsxs(_Fragment, {
473
- children: [renderItem(), (otherProps === null || otherProps === void 0 ? void 0 : (_otherProps$names2 = otherProps.names) === null || _otherProps$names2 === void 0 ? void 0 : _otherProps$names2.length) ? otherProps.names.map(function (name) {
452
+ children: [_otherFormItemProps.shouldUpdate ?
453
+ // 空标签防止气泡不显示
454
+ _jsx(_Fragment, {
455
+ children: _jsx(_Form.Item, {
456
+ shouldUpdate: _otherFormItemProps.shouldUpdate,
457
+ noStyle: true,
458
+ children: function children() {
459
+ return renderItem();
460
+ }
461
+ })
462
+ }) : renderItem(), (otherProps === null || otherProps === void 0 ? void 0 : (_otherProps$names2 = otherProps.names) === null || _otherProps$names2 === void 0 ? void 0 : _otherProps$names2.length) ? otherProps.names.map(function (name) {
474
463
  return _jsx(_Form.Item, {
475
464
  hidden: true,
476
465
  name: name,
@@ -5,6 +5,7 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
5
5
  import React from 'react';
6
6
  import { isBoolean, isFunction, union, isString } from 'lodash';
7
7
  import Render from './Render';
8
+ import { getDefaultProps } from '../../utils/getDefaultProps';
8
9
  import * as componentMap from '../index';
9
10
  import { isSelect } from '../../utils';
10
11
  import { FieldProvider } from '../../utils/useFieldProps';
@@ -76,8 +77,9 @@ var RenderFields = function RenderFields(props) {
76
77
  otherFormItemProps = _objectWithoutProperties(column, _excluded);
77
78
  var component = column.component;
78
79
  var _isView = typeof column.isView === 'boolean' ? column.isView : isView;
80
+ var defaultProps = getDefaultProps(column);
79
81
  // 允许formItem的属性放在column最外层 并优先级高于 formItemProps 内部参数
80
- var _formItemProps = _objectSpread(_objectSpread(_objectSpread({}, formItemProps), otherFormItemProps), {}, {
82
+ var _formItemProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultProps), formItemProps), otherFormItemProps), {}, {
81
83
  required: columnRequired !== null && columnRequired !== void 0 ? columnRequired : required,
82
84
  clearNotShow: clearNotShow
83
85
  });
@@ -34,11 +34,11 @@ import { DistributiveOmit } from '../../propsType';
34
34
  export type ComponentMap = keyof typeof componentMap;
35
35
  type ValidateKey = keyof typeof validate;
36
36
  type RegExpKey = keyof typeof regExp;
37
- interface ExtendType {
37
+ interface ExtendType extends Omit<RuleObject, 'type'> {
38
38
  type?: ValidateKey | RegExpKey;
39
39
  message?: string;
40
40
  }
41
- export type ProRule = RuleObject | ExtendType;
41
+ export type ProRule = ExtendType;
42
42
  /**
43
43
  * percent 百分比 permillage 千分比 amount 金额
44
44
  */
@@ -0,0 +1 @@
1
+ export declare const getDefaultProps: (props: any) => any;
@@ -0,0 +1,31 @@
1
+ import { get, isEqual } from 'lodash';
2
+ var defaultPropsMap = {
3
+ ProSelect: function ProSelect(props) {
4
+ var fieldProps = props.fieldProps,
5
+ name = props.name,
6
+ namePath = props.namePath;
7
+ var _ref = fieldProps || {},
8
+ filterInList = _ref.filterInList;
9
+ var defaultProps = {};
10
+ // formList场景传入列表过滤时
11
+ if (filterInList && namePath && name) {
12
+ var _listName = namePath.slice(0, -1);
13
+ var _namePath = name.slice(1);
14
+ defaultProps.shouldUpdate = function (preValues, curValues) {
15
+ var preListValue = get(preValues, _listName).map(function (item) {
16
+ return get(item, _namePath);
17
+ });
18
+ var curListValue = get(curValues, _listName).map(function (item) {
19
+ return get(item, _namePath);
20
+ });
21
+ return !isEqual(preListValue, curListValue);
22
+ };
23
+ }
24
+ return defaultProps;
25
+ }
26
+ };
27
+ export var getDefaultProps = function getDefaultProps(props) {
28
+ var _defaultPropsMap$type;
29
+ var type = props.type;
30
+ return (_defaultPropsMap$type = defaultPropsMap[type]) === null || _defaultPropsMap$type === void 0 ? void 0 : _defaultPropsMap$type.call(defaultPropsMap, props);
31
+ };
@@ -1,5 +1,5 @@
1
1
  export declare const rulesCreator: ({ rules, label, isSelect, names, required }: {
2
- rules: any;
2
+ rules?: any[];
3
3
  label: any;
4
4
  isSelect: any;
5
5
  names: any;
@@ -14,35 +14,38 @@ var getNonEmptyValuesByIndex = function getNonEmptyValuesByIndex(required, value
14
14
  };
15
15
  export var rulesCreator = function rulesCreator(_ref) {
16
16
  var _result;
17
- var rules = _ref.rules,
17
+ var _ref$rules = _ref.rules,
18
+ rules = _ref$rules === void 0 ? [] : _ref$rules,
18
19
  label = _ref.label,
19
20
  isSelect = _ref.isSelect,
20
21
  names = _ref.names,
21
22
  required = _ref.required;
22
23
  var message = "".concat(isSelect ? "".concat(locale.ProForm.selectPlaceHolder) : "".concat(locale.ProForm.inputPlaceholder)).concat(locale.ProForm.ruleText).concat(isString(label) ? label : '');
23
24
  var result = [];
24
- result = rules.map(function (ruleItem) {
25
- var rule = _objectSpread({}, ruleItem);
26
- if (rule instanceof Object && 'type' in rule) {
27
- if (Object.keys(regExp).includes(rule.type)) {
28
- rule.validator = function (rule, value) {
29
- if (!isNullValue(value) && !regExp[rule.type].test(value)) {
30
- return Promise.reject(new Error(rule.message || message));
31
- }
32
- return Promise.resolve();
33
- };
34
- }
35
- if (Object.keys(validate).includes(rule.type)) {
36
- rule.validator = function (rule, value) {
37
- if (!isNullValue(value) && !validate[rule.type](value)) {
38
- return Promise.reject(new Error(rule.message || message));
39
- }
40
- return Promise.resolve();
41
- };
25
+ if (Array.isArray(rules)) {
26
+ result = rules.map(function (ruleItem) {
27
+ var rule = _objectSpread({}, ruleItem);
28
+ if (rule instanceof Object && 'type' in rule) {
29
+ if (Object.keys(regExp).includes(rule.type)) {
30
+ rule.validator = function (rule, value) {
31
+ if (!isNullValue(value) && !regExp[rule.type].test(value)) {
32
+ return Promise.reject(new Error(rule.message || message));
33
+ }
34
+ return Promise.resolve();
35
+ };
36
+ }
37
+ if (Object.keys(validate).includes(rule.type)) {
38
+ rule.validator = function (rule, value) {
39
+ if (!isNullValue(value) && !validate[rule.type](value)) {
40
+ return Promise.reject(new Error(rule.message || message));
41
+ }
42
+ return Promise.resolve();
43
+ };
44
+ }
42
45
  }
43
- }
44
- return rule;
45
- });
46
+ return rule;
47
+ });
48
+ }
46
49
  if ((names === null || names === void 0 ? void 0 : names.length) && (required === null || required === void 0 ? void 0 : required.length)) {
47
50
  var customRequired = {
48
51
  validator: function validator(rules, value) {
@@ -14,7 +14,7 @@ var useRules = function useRules(props) {
14
14
  type = props.type;
15
15
  var _label = isString(label) ? label : '';
16
16
  var requiredRule = Array.isArray(rules) && (rules === null || rules === void 0 ? void 0 : rules.find(function (rule) {
17
- return 'required' in rule;
17
+ return rule.required === true;
18
18
  }));
19
19
  var allRequired = required === true || Array.isArray(required) && required.every(function (item) {
20
20
  return item === true;
@@ -18,7 +18,7 @@ var transformRatio = function transformRatio(_ref) {
18
18
  return {
19
19
  normalize: function normalize(value) {
20
20
  if (!value || !value.some(function (item) {
21
- return item;
21
+ return item || item === 0;
22
22
  })) {
23
23
  return {};
24
24
  }
@@ -26,7 +26,7 @@ var transformRatio = function transformRatio(_ref) {
26
26
  },
27
27
  getValueProps: function getValueProps(value) {
28
28
  if (!value || !value.some(function (item) {
29
- return item;
29
+ return item || item === 0;
30
30
  })) {
31
31
  return {
32
32
  value: []
@@ -281,7 +281,8 @@ export var ProSelect = function ProSelect(props, ref) {
281
281
  value: props.value,
282
282
  dataSource: selectList,
283
283
  labelInValue: labelInValue,
284
- fieldNames: fieldNames
284
+ fieldNames: fieldNames,
285
+ mode: selectProps.mode
285
286
  });
286
287
  }
287
288
  return _jsx("div", {
@@ -1,10 +1,4 @@
1
1
  /**
2
2
  * 返回当前组件可以显示的数据源
3
3
  */
4
- export declare const getSelectList: ({ otherProps, value, dataSource, labelInValue, fieldNames, }: {
5
- otherProps: any;
6
- value: any;
7
- dataSource: any;
8
- labelInValue: any;
9
- fieldNames: any;
10
- }) => any;
4
+ export declare const getSelectList: ({ otherProps, value, dataSource, labelInValue, fieldNames, mode, }: any) => any;