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

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 (29) 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 +31 -0
  5. package/es/ProForm/components/combination/Group/utils.js +8 -2
  6. package/es/ProForm/components/render/Render.js +12 -23
  7. package/es/ProForm/components/render/RenderFields.js +3 -1
  8. package/es/ProForm/components/render/propsType.d.ts +2 -2
  9. package/es/ProForm/utils/getDefaultProps.d.ts +1 -0
  10. package/es/ProForm/utils/getDefaultProps.js +31 -0
  11. package/es/ProForm/utils/useRules.js +1 -1
  12. package/es/ProTable/components/RenderColumn/index.js +58 -30
  13. package/es/ProTable/index.js +14 -2
  14. package/es/ProTable/propsType.d.ts +1 -0
  15. package/lib/ProEditTable/components/RenderField/index.js +92 -70
  16. package/lib/ProEditTable/propsType.d.ts +1 -1
  17. package/lib/ProEditTable/utils/getDefaultProps.d.ts +1 -0
  18. package/lib/ProEditTable/utils/getDefaultProps.js +37 -0
  19. package/lib/ProForm/components/combination/Group/utils.js +8 -2
  20. package/lib/ProForm/components/render/Render.js +12 -23
  21. package/lib/ProForm/components/render/RenderFields.js +3 -1
  22. package/lib/ProForm/components/render/propsType.d.ts +2 -2
  23. package/lib/ProForm/utils/getDefaultProps.d.ts +1 -0
  24. package/lib/ProForm/utils/getDefaultProps.js +37 -0
  25. package/lib/ProForm/utils/useRules.js +1 -1
  26. package/lib/ProTable/components/RenderColumn/index.js +58 -30
  27. package/lib/ProTable/index.js +13 -1
  28. package/lib/ProTable/propsType.d.ts +1 -0
  29. 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,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 _namePath = namePath.slice(2, namePath.length - 1);
13
+ defaultProps.shouldUpdate = function (preValues, curValues) {
14
+ var _get, _get$map, _get2, _get2$map;
15
+ 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) {
16
+ return get(item, _namePath);
17
+ });
18
+ 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) {
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
+ };
@@ -188,11 +188,17 @@ export var useTransformColumns = function useTransformColumns(params) {
188
188
  // 响应式字段改变后的回调
189
189
  var changedCallback = function changedCallback(lastDependency, current) {
190
190
  // 清值防抖 多次刷新时以最后一次为准
191
- if (clearNotShow !== false && names) {
191
+ if (clearNotShow !== false) {
192
192
  if ((current === null || current === void 0 ? void 0 : current.show) === false) {
193
193
  clearInterval(timerRef.current[index]);
194
194
  timerRef.current[index] = setTimeout(function () {
195
- form.resetFields([columnName]);
195
+ if (names) {
196
+ form.resetFields([columnName]);
197
+ }
198
+ if (!names && (value === null || value === void 0 ? void 0 : value.length)) {
199
+ value[index] = null;
200
+ form.setFieldValue(columnName, _toConsumableArray(value));
201
+ }
196
202
  }, 200);
197
203
  } else {
198
204
  clearInterval(timerRef.current[index]);
@@ -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
+ };
@@ -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;
@@ -90,42 +90,70 @@ var RenderColumn = function RenderColumn(props) {
90
90
  });
91
91
  }
92
92
  if (ellipsis) {
93
- var handleMouseOver = function handleMouseOver(e) {
94
- var _e$target, _e$target2;
95
- if ((e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.scrollWidth) > (e === null || e === void 0 ? void 0 : (_e$target2 = e.target) === null || _e$target2 === void 0 ? void 0 : _e$target2.offsetWidth)) {
96
- setState({
97
- tooltip: _objectSpread({
98
- getPopupContainer: function getPopupContainer(triggerNode) {
99
- return triggerNode.parentNode;
100
- },
101
- open: true
102
- }, toolTipProps)
103
- });
104
- } else {
105
- setState({
106
- tooltip: false
107
- });
93
+ var getPadding = function getPadding(el) {
94
+ var style = window.getComputedStyle(el, null);
95
+ var paddingLeft = Number.parseInt(style.paddingLeft, 10) || 0;
96
+ var paddingRight = Number.parseInt(style.paddingRight, 10) || 0;
97
+ var paddingTop = Number.parseInt(style.paddingTop, 10) || 0;
98
+ var paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0;
99
+ return {
100
+ pLeft: paddingLeft,
101
+ pRight: paddingRight,
102
+ pTop: paddingTop,
103
+ pBottom: paddingBottom
104
+ };
105
+ };
106
+ var checkEllipsis = function checkEllipsis(box) {
107
+ var range = document.createRange();
108
+ range.setStart(box, 0);
109
+ range.setEnd(box, box.childNodes.length);
110
+ var rangeWidth = range.getBoundingClientRect().width;
111
+ var rangeHeight = range.getBoundingClientRect().height;
112
+ var contentWidth = rangeWidth - Math.floor(rangeWidth);
113
+ var _getPadding = getPadding(box),
114
+ pLeft = _getPadding.pLeft,
115
+ pRight = _getPadding.pRight,
116
+ pTop = _getPadding.pTop,
117
+ pBottom = _getPadding.pBottom;
118
+ var horizontalPadding = pLeft + pRight;
119
+ var verticalPadding = pTop + pBottom;
120
+ if (rangeWidth + horizontalPadding > box.clientWidth) {
121
+ return true;
108
122
  }
123
+ return false;
109
124
  };
110
- var handleMouseOut = function handleMouseOut() {
125
+ var handleMouseOver = function handleMouseOver(e) {
111
126
  setState({
112
- tooltip: false
127
+ tooltip: checkEllipsis(e.target)
113
128
  });
114
129
  };
115
- var _ellipsis = {
116
- tooltip: tooltip
117
- };
118
- return value ? _jsx(Text, {
119
- style: {
120
- width: width
130
+ var tooltipProps = _objectSpread({
131
+ getPopupContainer: function getPopupContainer(triggerNode) {
132
+ return triggerNode.parentNode;
133
+ }
134
+ }, toolTipProps);
135
+ if (!value) {
136
+ return '-';
137
+ }
138
+ return _jsx(_Tooltip, _objectSpread(_objectSpread({
139
+ title: value,
140
+ onOpenChange: function onOpenChange(open) {
141
+ setState({
142
+ tooltip: false
143
+ });
121
144
  },
122
- ellipsis: _ellipsis,
123
- onMouseOver: handleMouseOver,
124
- onFocus: handleMouseOver,
125
- onMouseOut: handleMouseOut,
126
- onBlur: handleMouseOut,
127
- children: node
128
- }) : '-';
145
+ open: tooltip
146
+ }, tooltipProps), {}, {
147
+ children: _jsx(Text, {
148
+ style: {
149
+ width: width
150
+ },
151
+ ellipsis: true,
152
+ onMouseOver: handleMouseOver,
153
+ onFocus: handleMouseOver,
154
+ children: node
155
+ })
156
+ }));
129
157
  }
130
158
  return value || value === 0 ? node : '-';
131
159
  };
@@ -9,7 +9,7 @@ var _excluded = ["tableId", "headerRender", "footerRender", "quickConfig", "stri
9
9
  _excluded2 = ["resizeColumn", "columnConfig", "cacheTime", "storage"];
10
10
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { useEffect, useMemo, useState, createContext } from 'react';
12
- import { get, keyBy, assign, isObject } from 'lodash';
12
+ import { get, keyBy, assign, isObject, isFunction, isBoolean } from 'lodash';
13
13
  import { useDebounceEffect, useDeepCompareEffect, useSetState } from 'ahooks';
14
14
  import classnames from 'classnames';
15
15
  import { useProConfig } from '../index';
@@ -192,6 +192,18 @@ function ProTable(props) {
192
192
  });
193
193
  return newColumns;
194
194
  }, [curColumns, handleResize]);
195
+ var _columns = useMemo(function () {
196
+ return columns === null || columns === void 0 ? void 0 : columns.filter(function (item, index) {
197
+ var show = item.show;
198
+ if (isBoolean(show)) {
199
+ return show;
200
+ }
201
+ if (isFunction(show)) {
202
+ return show();
203
+ }
204
+ return true;
205
+ });
206
+ }, [columns]);
195
207
  var handleColumnConfig = /*#__PURE__*/function () {
196
208
  var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(checkList) {
197
209
  var newColumns, _columnConfig$onColum, catchColumns;
@@ -361,7 +373,7 @@ function ProTable(props) {
361
373
  tableProps: {
362
374
  value: _dataSource,
363
375
  headerRender: headerRender,
364
- columns: columns,
376
+ columns: _columns,
365
377
  renderRowSelection: renderRowSelection,
366
378
  rowClassName: _rowClassName,
367
379
  disabled: disabled,
@@ -40,6 +40,7 @@ export interface ProTableColumn extends Omit<ColumnType<any>, 'dataIndex'> {
40
40
  };
41
41
  toolTipProps?: TooltipProps & React.RefAttributes<unknown>;
42
42
  transform?: (value: any, record?: any) => string[];
43
+ show?: boolean | (() => boolean);
43
44
  }
44
45
  export interface CreateTreeFromArrayOptions {
45
46
  itemKey?: string;
@@ -17,7 +17,7 @@ var _react = _interopRequireWildcard(require("react"));
17
17
  var _antd = require("antd");
18
18
  var _classnames = _interopRequireDefault(require("classnames"));
19
19
  var _lodash = require("lodash");
20
- var _valueType = _interopRequireDefault(require("../../../ProForm/utils/valueType"));
20
+ var _valueType2 = _interopRequireDefault(require("../../../ProForm/utils/valueType"));
21
21
  var _transform = _interopRequireDefault(require("../../utils/transform"));
22
22
  var _tools = require("../../utils/tools");
23
23
  var componentMap = _interopRequireWildcard(require("../../../ProForm/components"));
@@ -28,12 +28,13 @@ var _useFieldProps = require("../../../ProForm/utils/useFieldProps");
28
28
  var _useRules = _interopRequireDefault(require("../../../ProForm/utils/useRules"));
29
29
  var _utils = require("../../../ProForm/utils");
30
30
  var _ConfirmWrapper = _interopRequireDefault(require("../../../ProForm/components/render/ConfirmWrapper"));
31
+ var _getDefaultProps = require("../../utils/getDefaultProps");
31
32
  var _ListChanged = _interopRequireDefault(require("./ListChanged"));
32
33
  var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "equalWith", "className", "trim", "confirm"];
33
34
  /* eslint-disable prefer-destructuring */
34
35
  /* eslint-disable prefer-const */
35
36
  var RenderField = function RenderField(_ref) {
36
- var _type, _type$replace, _fieldProps2, _names, _TargetComponent4, _componentProps, _componentProps2;
37
+ var _type, _type$replace, _fieldProps2, _names, _TargetComponent4, _componentProps2;
37
38
  var value = _ref.text,
38
39
  record = _ref.record,
39
40
  index = _ref.index,
@@ -85,6 +86,7 @@ var RenderField = function RenderField(_ref) {
85
86
  var _fieldProps = fieldProps || formItemProps || {};
86
87
  var _rules = rules || [];
87
88
  var _required = required;
89
+ var _valueType = valueType;
88
90
  var _disabled = false;
89
91
  var isCell = mode === 'cell';
90
92
  if (isCell) {
@@ -109,11 +111,18 @@ var RenderField = function RenderField(_ref) {
109
111
  };
110
112
  // 行参数
111
113
  var rowParams = [currentValue, rowData, options];
112
- if (typeof isEditable === 'function') {
113
- isEditable = isEditable.apply(void 0, rowParams);
114
- setTimeout(function () {
115
- !isEditable && form.validateFields([cellName]);
116
- }, 100);
114
+ // required & rules & fieldProps & disabled & valueType 函数化处理
115
+ if ((0, _lodash.isFunction)(required)) {
116
+ _required = required.apply(void 0, rowParams);
117
+ }
118
+ if ((0, _lodash.isFunction)(fieldProps)) {
119
+ _fieldProps = fieldProps.apply(void 0, rowParams);
120
+ }
121
+ if ((0, _lodash.isFunction)(rules)) {
122
+ _rules = rules.apply(void 0, rowParams);
123
+ }
124
+ if ((0, _lodash.isFunction)(valueType)) {
125
+ _valueType = valueType.apply(void 0, rowParams);
117
126
  }
118
127
  // 获取最终的disabled
119
128
  _disabled = (0, _tools.getDisabled)({
@@ -124,6 +133,12 @@ var RenderField = function RenderField(_ref) {
124
133
  columnFieldProps: _fieldProps,
125
134
  params: rowParams
126
135
  });
136
+ if (typeof isEditable === 'function') {
137
+ isEditable = isEditable.apply(void 0, rowParams);
138
+ setTimeout(function () {
139
+ !isEditable && form.validateFields([cellName]);
140
+ }, 100);
141
+ }
127
142
  // 是否只读文本
128
143
  var isView = !isEditable || (record === null || record === void 0 ? void 0 : record['is-view']) || config.isView || virtualKey && !isEditing || (0, _tools.getDisabled)({
129
144
  globalControl: otherProps === null || otherProps === void 0 ? void 0 : otherProps.globalControl,
@@ -137,15 +152,6 @@ var RenderField = function RenderField(_ref) {
137
152
  // 只读文本时,采用当前formItem的name,单行编辑时,使用生成的虚拟的name
138
153
  var baseName = isView ? name : namePath;
139
154
  var TargetComponent;
140
- if ((0, _lodash.isFunction)(required)) {
141
- _required = required.apply(void 0, rowParams);
142
- }
143
- if ((0, _lodash.isFunction)(fieldProps)) {
144
- _fieldProps = fieldProps.apply(void 0, rowParams);
145
- }
146
- if ((0, _lodash.isFunction)(rules)) {
147
- _rules = rules.apply(void 0, rowParams);
148
- }
149
155
  // 设置校验规则
150
156
  var internalRule = (0, _useRules.default)({
151
157
  names: names,
@@ -161,11 +167,17 @@ var RenderField = function RenderField(_ref) {
161
167
  });
162
168
  // 分离form item参数,防止对于参数透传(如onChange,防止重复触发)并优先级高于 _fieldProps 内部参数
163
169
  var formItemChildProps = (0, _objectSpread2.default)({}, _fieldProps);
170
+ var defaultProps = (0, _getDefaultProps.getDefaultProps)({
171
+ name: name,
172
+ namePath: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName,
173
+ type: column === null || column === void 0 ? void 0 : column.type,
174
+ fieldProps: column === null || column === void 0 ? void 0 : column.fieldProps
175
+ });
164
176
  // 允许formItem的属性放在column最外层
165
- var _formItemProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, resetProps), internalRule);
177
+ var _formItemProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultProps), resetProps), internalRule);
166
178
  if (['Switch', 'SwitchCheckbox'].includes(type)) {
167
179
  _formItemProps.valuePropName = 'checked';
168
- valueType = 'switch';
180
+ _valueType = 'switch';
169
181
  }
170
182
  /**
171
183
  * 针对一些特殊类型,基于formItem的normalize与getValueProps进行默认值类型转换
@@ -173,7 +185,7 @@ var RenderField = function RenderField(_ref) {
173
185
  */
174
186
  var defaultTransform = function defaultTransform() {
175
187
  var types = ['DatePicker', 'RangePicker'];
176
- if (!valueType && types.includes(type)) {
188
+ if (!_valueType && types.includes(type)) {
177
189
  var _transformMap$type;
178
190
  return _transform.default === null || _transform.default === void 0 ? void 0 : (_transformMap$type = _transform.default[type]) === null || _transformMap$type === void 0 ? void 0 : _transformMap$type.call(_transform.default, _fieldProps || {});
179
191
  }
@@ -186,18 +198,18 @@ var RenderField = function RenderField(_ref) {
186
198
  var valueTypeTransform = (0, _react.useCallback)(function () {
187
199
  var _fieldProps3;
188
200
  // 不存在valueType返回空
189
- if (!valueType) {
201
+ if (!_valueType) {
190
202
  return {};
191
203
  }
192
204
  // SwitchCheckbox默认YN, 兼容已有组件
193
205
  if (type === 'SwitchCheckbox') {
194
- valueType = 'switch';
206
+ _valueType = 'switch';
195
207
  }
196
208
  var params = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, column), {}, {
197
209
  mode: (_fieldProps3 = _fieldProps) === null || _fieldProps3 === void 0 ? void 0 : _fieldProps3.mode
198
210
  });
199
- return (0, _lodash.isFunction)(_valueType.default[valueType]) ? _valueType.default[valueType](params) : {};
200
- }, [valueType]);
211
+ return (0, _lodash.isFunction)(_valueType2.default[_valueType]) ? _valueType2.default[_valueType](params) : {};
212
+ }, [_valueType]);
201
213
  if ((_names = names) === null || _names === void 0 ? void 0 : _names.length) {
202
214
  // 支持names配置,临时生成对应的formItem,用来存储单个对应的值
203
215
  names = names.map(function (key) {
@@ -228,7 +240,7 @@ var RenderField = function RenderField(_ref) {
228
240
  }
229
241
  var namesStr = [].concat((0, _toConsumableArray2.default)(baseName), [index, dataIndex]);
230
242
  var transform = {};
231
- if (valueType) {
243
+ if (_valueType) {
232
244
  transform = valueTypeTransform();
233
245
  }
234
246
  return (0, _transformNames.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, _formItemProps), transform), form, names, namesStr, type);
@@ -508,7 +520,7 @@ var RenderField = function RenderField(_ref) {
508
520
  name: cellName,
509
521
  listName: cellName,
510
522
  viewEmpty: viewEmpty,
511
- valueType: valueType,
523
+ valueType: _valueType,
512
524
  isView: isView
513
525
  }
514
526
  });
@@ -537,55 +549,65 @@ var RenderField = function RenderField(_ref) {
537
549
  delete _formItemProps.rules;
538
550
  }
539
551
  var _className = (0, _classnames.default)((0, _defineProperty2.default)({}, className, className));
540
- var FormItem = null;
541
- var FieldComponent = /*#__PURE__*/_react.default.isValidElement(TargetComponent) ? ( /*#__PURE__*/_react.default.cloneElement(TargetComponent, componentProps)) : (0, _jsxRuntime.jsx)(TargetComponent, (0, _objectSpread2.default)({}, componentProps));
542
- if (originalValues) {
543
- FieldComponent = (0, _jsxRuntime.jsx)(_ListChanged.default, {
544
- name: cellName,
545
- names: names,
546
- namesStr: [].concat((0, _toConsumableArray2.default)(baseName), [index, dataIndex]),
547
- rowKeyPath: [].concat((0, _toConsumableArray2.default)(baseName), [index, 'rowKey']),
548
- originalName: originalName,
549
- originalNames: originalNames,
550
- originalValues: originalValues,
551
- form: form,
552
- equalWith: equalWith,
553
- type: type,
554
- onChange: _onChange,
552
+ var getFieldItem = function getFieldItem() {
553
+ var _componentProps;
554
+ var FormItem = null;
555
+ var FieldComponent = /*#__PURE__*/_react.default.isValidElement(TargetComponent) ? ( /*#__PURE__*/_react.default.cloneElement(TargetComponent, componentProps)) : (0, _jsxRuntime.jsx)(TargetComponent, (0, _objectSpread2.default)({}, componentProps));
556
+ if (originalValues) {
557
+ FieldComponent = (0, _jsxRuntime.jsx)(_ListChanged.default, {
558
+ name: cellName,
559
+ names: names,
560
+ namesStr: [].concat((0, _toConsumableArray2.default)(baseName), [index, dataIndex]),
561
+ rowKeyPath: [].concat((0, _toConsumableArray2.default)(baseName), [index, 'rowKey']),
562
+ originalName: originalName,
563
+ originalNames: originalNames,
564
+ originalValues: originalValues,
565
+ form: form,
566
+ equalWith: equalWith,
567
+ type: type,
568
+ onChange: _onChange,
569
+ children: FieldComponent
570
+ });
571
+ }
572
+ if ((_componentProps = componentProps) === null || _componentProps === void 0 ? void 0 : _componentProps.confirm) {
573
+ FieldComponent = (0, _jsxRuntime.jsx)(_ConfirmWrapper.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), {}, {
574
+ children: FieldComponent
575
+ }));
576
+ }
577
+ FormItem = TargetComponent ? (0, _jsxRuntime.jsx)(_antd.Form.Item, (0, _objectSpread2.default)((0, _objectSpread2.default)({
578
+ validateFirst: true
579
+ }, (0, _lodash.omit)(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name', 'onCell', _fieldProps.shouldUpdate ? 'shouldUpdate' : null])), {}, {
580
+ className: _className,
581
+ name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName,
555
582
  children: FieldComponent
583
+ })) : (0, _jsxRuntime.jsx)(_Container.default, {
584
+ viewEmpty: viewEmpty
556
585
  });
557
- }
558
- if ((_componentProps = componentProps) === null || _componentProps === void 0 ? void 0 : _componentProps.confirm) {
559
- FieldComponent = (0, _jsxRuntime.jsx)(_ConfirmWrapper.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), {}, {
560
- children: FieldComponent
561
- }));
562
- }
563
- FormItem = TargetComponent ? (0, _jsxRuntime.jsx)(_antd.Form.Item, (0, _objectSpread2.default)((0, _objectSpread2.default)({
564
- validateFirst: true
565
- }, (0, _lodash.omit)(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name', 'onCell'])), {}, {
566
- className: _className,
567
- name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName,
568
- children: FieldComponent
569
- })) : (0, _jsxRuntime.jsx)(_Container.default, {
570
- viewEmpty: viewEmpty
571
- });
572
- if (type === 'FormList') {
573
- FormItem = (0, _jsxRuntime.jsx)(_antd.Form.List, (0, _objectSpread2.default)((0, _objectSpread2.default)({
574
- name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName
575
- }, (0, _lodash.omit)(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name'])), {}, {
576
- children: function children(fields, operation, meta) {
577
- return (0, _jsxRuntime.jsx)(TargetComponent, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), {}, {
578
- otherProps: otherProps,
579
- fields: fields,
580
- operation: operation,
581
- meta: meta
582
- }));
583
- }
584
- }));
585
- }
586
+ if (type === 'FormList') {
587
+ FormItem = (0, _jsxRuntime.jsx)(_antd.Form.List, (0, _objectSpread2.default)((0, _objectSpread2.default)({
588
+ name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName
589
+ }, (0, _lodash.omit)(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name'])), {}, {
590
+ children: function children(fields, operation, meta) {
591
+ return (0, _jsxRuntime.jsx)(TargetComponent, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), {}, {
592
+ otherProps: otherProps,
593
+ fields: fields,
594
+ operation: operation,
595
+ meta: meta
596
+ }));
597
+ }
598
+ }));
599
+ }
600
+ return FormItem;
601
+ };
586
602
  return (0, _jsxRuntime.jsx)(_useFieldProps.FieldProvider, {
587
603
  value: (_componentProps2 = componentProps) === null || _componentProps2 === void 0 ? void 0 : _componentProps2.otherProps,
588
- children: FormItem
604
+ children: _formItemProps.shouldUpdate ? (0, _jsxRuntime.jsx)(_antd.Form.Item, {
605
+ noStyle: true,
606
+ shouldUpdate: _formItemProps.shouldUpdate,
607
+ children: function children() {
608
+ return getFieldItem();
609
+ }
610
+ }) : getFieldItem()
589
611
  });
590
612
  };
591
613
  var _default = exports.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,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getDefaultProps = void 0;
7
+ var _lodash = require("lodash");
8
+ var defaultPropsMap = {
9
+ ProSelect: function ProSelect(props) {
10
+ var fieldProps = props.fieldProps,
11
+ name = props.name,
12
+ namePath = props.namePath;
13
+ var _ref = fieldProps || {},
14
+ filterInList = _ref.filterInList;
15
+ var defaultProps = {};
16
+ // formList场景传入列表过滤时
17
+ if (filterInList && namePath && name) {
18
+ var _namePath = namePath.slice(2, namePath.length - 1);
19
+ defaultProps.shouldUpdate = function (preValues, curValues) {
20
+ var _get, _get$map, _get2, _get2$map;
21
+ var preListValue = (_get = (0, _lodash.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) {
22
+ return (0, _lodash.get)(item, _namePath);
23
+ });
24
+ var curListValue = (_get2 = (0, _lodash.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) {
25
+ return (0, _lodash.get)(item, _namePath);
26
+ });
27
+ return !(0, _lodash.isEqual)(preListValue, curListValue);
28
+ };
29
+ }
30
+ return defaultProps;
31
+ }
32
+ };
33
+ var getDefaultProps = exports.getDefaultProps = function getDefaultProps(props) {
34
+ var _defaultPropsMap$type;
35
+ var type = props.type;
36
+ return (_defaultPropsMap$type = defaultPropsMap[type]) === null || _defaultPropsMap$type === void 0 ? void 0 : _defaultPropsMap$type.call(defaultPropsMap, props);
37
+ };
@@ -195,11 +195,17 @@ var useTransformColumns = exports.useTransformColumns = function useTransformCol
195
195
  // 响应式字段改变后的回调
196
196
  var changedCallback = function changedCallback(lastDependency, current) {
197
197
  // 清值防抖 多次刷新时以最后一次为准
198
- if (clearNotShow !== false && names) {
198
+ if (clearNotShow !== false) {
199
199
  if ((current === null || current === void 0 ? void 0 : current.show) === false) {
200
200
  clearInterval(timerRef.current[index]);
201
201
  timerRef.current[index] = setTimeout(function () {
202
- form.resetFields([columnName]);
202
+ if (names) {
203
+ form.resetFields([columnName]);
204
+ }
205
+ if (!names && (value === null || value === void 0 ? void 0 : value.length)) {
206
+ value[index] = null;
207
+ form.setFieldValue(columnName, (0, _toConsumableArray2.default)(value));
208
+ }
203
209
  }, 200);
204
210
  } else {
205
211
  clearInterval(timerRef.current[index]);
@@ -441,36 +441,25 @@ var Render = function Render(props) {
441
441
  children: child
442
442
  });
443
443
  }
444
- var orgFormItem = (0, _jsxRuntime.jsx)(_antd.Form.Item, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _lodash.omit)(_otherFormItemProps, filterFormItemKey)), {}, {
444
+ return (0, _jsxRuntime.jsx)(_antd.Form.Item, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _lodash.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
- (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
456
- children: (0, _jsxRuntime.jsx)(_antd.Form.Item, {
457
- shouldUpdate: _otherFormItemProps.shouldUpdate,
458
- noStyle: true,
459
- children: function children() {
460
- return (0, _jsxRuntime.jsx)(_antd.Form.Item, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _lodash.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 = (0, _jsxRuntime.jsxs)(_jsxRuntime.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
+ (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
455
+ children: (0, _jsxRuntime.jsx)(_antd.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 (0, _jsxRuntime.jsx)(_antd.Form.Item, {
475
464
  hidden: true,
476
465
  name: name,
@@ -12,6 +12,7 @@ var _jsxRuntime = require("react/jsx-runtime");
12
12
  var _react = _interopRequireDefault(require("react"));
13
13
  var _lodash = require("lodash");
14
14
  var _Render = _interopRequireDefault(require("./Render"));
15
+ var _getDefaultProps = require("../../utils/getDefaultProps");
15
16
  var componentMap = _interopRequireWildcard(require("../index"));
16
17
  var _utils = require("../../utils");
17
18
  var _useFieldProps = require("../../utils/useFieldProps");
@@ -84,8 +85,9 @@ var RenderFields = function RenderFields(props) {
84
85
  otherFormItemProps = (0, _objectWithoutProperties2.default)(column, _excluded);
85
86
  var component = column.component;
86
87
  var _isView = typeof column.isView === 'boolean' ? column.isView : isView;
88
+ var defaultProps = (0, _getDefaultProps.getDefaultProps)(column);
87
89
  // 允许formItem的属性放在column最外层 并优先级高于 formItemProps 内部参数
88
- var _formItemProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, formItemProps), otherFormItemProps), {}, {
90
+ var _formItemProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, defaultProps), formItemProps), otherFormItemProps), {}, {
89
91
  required: columnRequired !== null && columnRequired !== void 0 ? columnRequired : required,
90
92
  clearNotShow: clearNotShow
91
93
  });
@@ -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,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getDefaultProps = void 0;
7
+ var _lodash = require("lodash");
8
+ var defaultPropsMap = {
9
+ ProSelect: function ProSelect(props) {
10
+ var fieldProps = props.fieldProps,
11
+ name = props.name,
12
+ namePath = props.namePath;
13
+ var _ref = fieldProps || {},
14
+ filterInList = _ref.filterInList;
15
+ var defaultProps = {};
16
+ // formList场景传入列表过滤时
17
+ if (filterInList && namePath && name) {
18
+ var _listName = namePath.slice(0, -1);
19
+ var _namePath = name.slice(1);
20
+ defaultProps.shouldUpdate = function (preValues, curValues) {
21
+ var preListValue = (0, _lodash.get)(preValues, _listName).map(function (item) {
22
+ return (0, _lodash.get)(item, _namePath);
23
+ });
24
+ var curListValue = (0, _lodash.get)(curValues, _listName).map(function (item) {
25
+ return (0, _lodash.get)(item, _namePath);
26
+ });
27
+ return !(0, _lodash.isEqual)(preListValue, curListValue);
28
+ };
29
+ }
30
+ return defaultProps;
31
+ }
32
+ };
33
+ var getDefaultProps = exports.getDefaultProps = function getDefaultProps(props) {
34
+ var _defaultPropsMap$type;
35
+ var type = props.type;
36
+ return (_defaultPropsMap$type = defaultPropsMap[type]) === null || _defaultPropsMap$type === void 0 ? void 0 : _defaultPropsMap$type.call(defaultPropsMap, props);
37
+ };
@@ -21,7 +21,7 @@ var useRules = function useRules(props) {
21
21
  type = props.type;
22
22
  var _label = (0, _lodash.isString)(label) ? label : '';
23
23
  var requiredRule = Array.isArray(rules) && (rules === null || rules === void 0 ? void 0 : rules.find(function (rule) {
24
- return 'required' in rule;
24
+ return rule.required === true;
25
25
  }));
26
26
  var allRequired = required === true || Array.isArray(required) && required.every(function (item) {
27
27
  return item === true;
@@ -94,42 +94,70 @@ var RenderColumn = function RenderColumn(props) {
94
94
  });
95
95
  }
96
96
  if (ellipsis) {
97
- var handleMouseOver = function handleMouseOver(e) {
98
- var _e$target, _e$target2;
99
- if ((e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.scrollWidth) > (e === null || e === void 0 ? void 0 : (_e$target2 = e.target) === null || _e$target2 === void 0 ? void 0 : _e$target2.offsetWidth)) {
100
- setState({
101
- tooltip: (0, _objectSpread2.default)({
102
- getPopupContainer: function getPopupContainer(triggerNode) {
103
- return triggerNode.parentNode;
104
- },
105
- open: true
106
- }, toolTipProps)
107
- });
108
- } else {
109
- setState({
110
- tooltip: false
111
- });
97
+ var getPadding = function getPadding(el) {
98
+ var style = window.getComputedStyle(el, null);
99
+ var paddingLeft = Number.parseInt(style.paddingLeft, 10) || 0;
100
+ var paddingRight = Number.parseInt(style.paddingRight, 10) || 0;
101
+ var paddingTop = Number.parseInt(style.paddingTop, 10) || 0;
102
+ var paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0;
103
+ return {
104
+ pLeft: paddingLeft,
105
+ pRight: paddingRight,
106
+ pTop: paddingTop,
107
+ pBottom: paddingBottom
108
+ };
109
+ };
110
+ var checkEllipsis = function checkEllipsis(box) {
111
+ var range = document.createRange();
112
+ range.setStart(box, 0);
113
+ range.setEnd(box, box.childNodes.length);
114
+ var rangeWidth = range.getBoundingClientRect().width;
115
+ var rangeHeight = range.getBoundingClientRect().height;
116
+ var contentWidth = rangeWidth - Math.floor(rangeWidth);
117
+ var _getPadding = getPadding(box),
118
+ pLeft = _getPadding.pLeft,
119
+ pRight = _getPadding.pRight,
120
+ pTop = _getPadding.pTop,
121
+ pBottom = _getPadding.pBottom;
122
+ var horizontalPadding = pLeft + pRight;
123
+ var verticalPadding = pTop + pBottom;
124
+ if (rangeWidth + horizontalPadding > box.clientWidth) {
125
+ return true;
112
126
  }
127
+ return false;
113
128
  };
114
- var handleMouseOut = function handleMouseOut() {
129
+ var handleMouseOver = function handleMouseOver(e) {
115
130
  setState({
116
- tooltip: false
131
+ tooltip: checkEllipsis(e.target)
117
132
  });
118
133
  };
119
- var _ellipsis = {
120
- tooltip: tooltip
121
- };
122
- return value ? (0, _jsxRuntime.jsx)(Text, {
123
- style: {
124
- width: width
134
+ var tooltipProps = (0, _objectSpread2.default)({
135
+ getPopupContainer: function getPopupContainer(triggerNode) {
136
+ return triggerNode.parentNode;
137
+ }
138
+ }, toolTipProps);
139
+ if (!value) {
140
+ return '-';
141
+ }
142
+ return (0, _jsxRuntime.jsx)(_antd.Tooltip, (0, _objectSpread2.default)((0, _objectSpread2.default)({
143
+ title: value,
144
+ onOpenChange: function onOpenChange(open) {
145
+ setState({
146
+ tooltip: false
147
+ });
125
148
  },
126
- ellipsis: _ellipsis,
127
- onMouseOver: handleMouseOver,
128
- onFocus: handleMouseOver,
129
- onMouseOut: handleMouseOut,
130
- onBlur: handleMouseOut,
131
- children: node
132
- }) : '-';
149
+ open: tooltip
150
+ }, tooltipProps), {}, {
151
+ children: (0, _jsxRuntime.jsx)(Text, {
152
+ style: {
153
+ width: width
154
+ },
155
+ ellipsis: true,
156
+ onMouseOver: handleMouseOver,
157
+ onFocus: handleMouseOver,
158
+ children: node
159
+ })
160
+ }));
133
161
  }
134
162
  return value || value === 0 ? node : '-';
135
163
  };
@@ -199,6 +199,18 @@ function ProTable(props) {
199
199
  });
200
200
  return newColumns;
201
201
  }, [curColumns, handleResize]);
202
+ var _columns = (0, _react.useMemo)(function () {
203
+ return columns === null || columns === void 0 ? void 0 : columns.filter(function (item, index) {
204
+ var show = item.show;
205
+ if ((0, _lodash.isBoolean)(show)) {
206
+ return show;
207
+ }
208
+ if ((0, _lodash.isFunction)(show)) {
209
+ return show();
210
+ }
211
+ return true;
212
+ });
213
+ }, [columns]);
202
214
  var handleColumnConfig = /*#__PURE__*/function () {
203
215
  var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(checkList) {
204
216
  var newColumns, _columnConfig$onColum, catchColumns;
@@ -368,7 +380,7 @@ function ProTable(props) {
368
380
  tableProps: {
369
381
  value: _dataSource,
370
382
  headerRender: headerRender,
371
- columns: columns,
383
+ columns: _columns,
372
384
  renderRowSelection: renderRowSelection,
373
385
  rowClassName: _rowClassName,
374
386
  disabled: disabled,
@@ -40,6 +40,7 @@ export interface ProTableColumn extends Omit<ColumnType<any>, 'dataIndex'> {
40
40
  };
41
41
  toolTipProps?: TooltipProps & React.RefAttributes<unknown>;
42
42
  transform?: (value: any, record?: any) => string[];
43
+ show?: boolean | (() => boolean);
43
44
  }
44
45
  export interface CreateTreeFromArrayOptions {
45
46
  itemKey?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zat-design/sisyphus-react",
3
- "version": "3.7.1",
3
+ "version": "3.7.2-beta.1",
4
4
  "license": "Apache-2.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",