@zat-design/sisyphus-react 3.6.5 → 3.6.6-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.
@@ -11,7 +11,7 @@ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
11
11
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
12
12
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
13
13
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
14
- var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "equalWith", "className", "trim", "confirm"];
14
+ var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "equalWith", "className", "trim", "confirm", "validateTrigger"];
15
15
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
16
  /* eslint-disable prefer-destructuring */
17
17
  /* eslint-disable prefer-const */
@@ -60,6 +60,8 @@ var RenderField = function RenderField(_ref) {
60
60
  className = column.className,
61
61
  trim = column.trim,
62
62
  confirm = column.confirm,
63
+ _column$validateTrigg = column.validateTrigger,
64
+ validateTrigger = _column$validateTrigg === void 0 ? ['onChange', 'onBlur', 'onSumbit'] : _column$validateTrigg,
63
65
  resetProps = _objectWithoutProperties(column, _excluded);
64
66
  // editRender弃用使用component同ProForm
65
67
  var _editRender = component || editRender;
@@ -158,7 +160,9 @@ var RenderField = function RenderField(_ref) {
158
160
  // 分离form item参数,防止对于参数透传(如onChange,防止重复触发)并优先级高于 _fieldProps 内部参数
159
161
  var formItemChildProps = _objectSpread({}, _fieldProps);
160
162
  // 允许formItem的属性放在column最外层
161
- var _formItemProps = _objectSpread(_objectSpread({}, resetProps), internalRule);
163
+ var _formItemProps = _objectSpread(_objectSpread(_objectSpread({}, resetProps), internalRule), {}, {
164
+ validateTrigger: validateTrigger
165
+ });
162
166
  if (['Switch', 'SwitchCheckbox'].includes(type)) {
163
167
  _formItemProps.valuePropName = 'checked';
164
168
  valueType = 'switch';
@@ -318,6 +322,12 @@ var RenderField = function RenderField(_ref) {
318
322
  return _regeneratorRuntime().wrap(function _callee$(_context) {
319
323
  while (1) switch (_context.prev = _context.next) {
320
324
  case 0:
325
+ if (!(!onFieldChange && !onChange)) {
326
+ _context.next = 2;
327
+ break;
328
+ }
329
+ return _context.abrupt("return", null);
330
+ case 2:
321
331
  for (_len2 = _args2.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
322
332
  args[_key2] = _args2[_key2];
323
333
  }
@@ -326,58 +336,60 @@ var RenderField = function RenderField(_ref) {
326
336
  row = form.getFieldValue(rowPath, true); // if (type === 'InputNumber' && column.name) row[column.name] = args[0];
327
337
  orgRow = cloneDeep(row);
328
338
  if (!onFieldChange) {
329
- _context.next = 18;
339
+ _context.next = 20;
330
340
  break;
331
341
  }
332
342
  _args = formatArgs(args);
333
343
  _args[1] = row;
334
344
  _context.t0 = (_TargetComponent = TargetComponent) === null || _TargetComponent === void 0 ? void 0 : (_TargetComponent$prop = _TargetComponent.props) === null || _TargetComponent$prop === void 0 ? void 0 : _TargetComponent$prop.onFieldChange;
335
345
  if (!_context.t0) {
336
- _context.next = 12;
346
+ _context.next = 14;
337
347
  break;
338
348
  }
339
- _context.next = 12;
349
+ _context.next = 14;
340
350
  return (_TargetComponent$prop2 = TargetComponent.props).onFieldChange.apply(_TargetComponent$prop2, _toConsumableArray(_args));
341
- case 12:
351
+ case 14:
342
352
  _context.t1 = onFieldChange;
343
353
  if (!_context.t1) {
344
- _context.next = 16;
354
+ _context.next = 18;
345
355
  break;
346
356
  }
347
- _context.next = 16;
357
+ _context.next = 18;
348
358
  return onFieldChange.apply(void 0, _toConsumableArray(_args));
349
- case 16:
350
- _context.next = 27;
351
- break;
352
359
  case 18:
360
+ _context.next = 29;
361
+ break;
362
+ case 20:
353
363
  _args = _args.concat([row, index, form]);
354
364
  _context.t2 = (_TargetComponent2 = TargetComponent) === null || _TargetComponent2 === void 0 ? void 0 : (_TargetComponent2$pro = _TargetComponent2.props) === null || _TargetComponent2$pro === void 0 ? void 0 : _TargetComponent2$pro.onChange;
355
365
  if (!_context.t2) {
356
- _context.next = 23;
366
+ _context.next = 25;
357
367
  break;
358
368
  }
359
- _context.next = 23;
369
+ _context.next = 25;
360
370
  return (_TargetComponent$prop3 = TargetComponent.props).onChange.apply(_TargetComponent$prop3, _toConsumableArray(_args));
361
- case 23:
371
+ case 25:
362
372
  _context.t3 = onChange;
363
373
  if (!_context.t3) {
364
- _context.next = 27;
374
+ _context.next = 29;
365
375
  break;
366
376
  }
367
- _context.next = 27;
377
+ _context.next = 29;
368
378
  return onChange.apply(void 0, _toConsumableArray(_args));
369
- case 27:
379
+ case 29:
370
380
  // 判断属性是否变动
371
381
  form.setFieldValue(rowPath, row);
372
- if (!isEqual(orgRow, row)) {
373
- diff = difference(row, orgRow) || {};
374
- validateFieldKeys = (_Object$keys = Object.keys(diff)) === null || _Object$keys === void 0 ? void 0 : (_Object$keys$map = _Object$keys.map) === null || _Object$keys$map === void 0 ? void 0 : _Object$keys$map.call(_Object$keys, function (key) {
375
- return [].concat(_toConsumableArray(rowPath), [key]);
376
- });
377
- if (validateFieldKeys === null || validateFieldKeys === void 0 ? void 0 : validateFieldKeys.length) {
378
- setTimeout(function () {
379
- form.validateFields(validateFieldKeys);
380
- }, 100);
382
+ if (validateTrigger && validateTrigger.includes('onChange')) {
383
+ if (!isEqual(orgRow, row)) {
384
+ diff = difference(row, orgRow) || {};
385
+ validateFieldKeys = (_Object$keys = Object.keys(diff)) === null || _Object$keys === void 0 ? void 0 : (_Object$keys$map = _Object$keys.map) === null || _Object$keys$map === void 0 ? void 0 : _Object$keys$map.call(_Object$keys, function (key) {
386
+ return [].concat(_toConsumableArray(rowPath), [key]);
387
+ });
388
+ if (validateFieldKeys === null || validateFieldKeys === void 0 ? void 0 : validateFieldKeys.length) {
389
+ setTimeout(function () {
390
+ form.validateFields(validateFieldKeys);
391
+ }, 100);
392
+ }
381
393
  }
382
394
  }
383
395
  setState({
@@ -385,7 +397,7 @@ var RenderField = function RenderField(_ref) {
385
397
  d: Date.now()
386
398
  }
387
399
  });
388
- case 30:
400
+ case 32:
389
401
  case "end":
390
402
  return _context.stop();
391
403
  }
@@ -409,6 +421,12 @@ var RenderField = function RenderField(_ref) {
409
421
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
410
422
  while (1) switch (_context2.prev = _context2.next) {
411
423
  case 0:
424
+ if (onBlur) {
425
+ _context2.next = 2;
426
+ break;
427
+ }
428
+ return _context2.abrupt("return", null);
429
+ case 2:
412
430
  for (_len3 = _args3.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
413
431
  args[_key3] = _args3[_key3];
414
432
  }
@@ -419,49 +437,51 @@ var RenderField = function RenderField(_ref) {
419
437
  _args[1] = row;
420
438
  _context2.t0 = (_TargetComponent3 = TargetComponent) === null || _TargetComponent3 === void 0 ? void 0 : (_TargetComponent3$pro = _TargetComponent3.props) === null || _TargetComponent3$pro === void 0 ? void 0 : _TargetComponent3$pro.onBlur;
421
439
  if (!_context2.t0) {
422
- _context2.next = 10;
440
+ _context2.next = 12;
423
441
  break;
424
442
  }
425
- _context2.next = 10;
443
+ _context2.next = 12;
426
444
  return (_TargetComponent$prop4 = TargetComponent.props).onBlur.apply(_TargetComponent$prop4, _toConsumableArray(_args));
427
- case 10:
445
+ case 12:
428
446
  _context2.t1 = onBlur;
429
447
  if (!_context2.t1) {
430
- _context2.next = 14;
448
+ _context2.next = 16;
431
449
  break;
432
450
  }
433
- _context2.next = 14;
451
+ _context2.next = 16;
434
452
  return onBlur.apply(void 0, _toConsumableArray(_args));
435
- case 14:
453
+ case 16:
436
454
  // 判断属性是否变动
437
455
  form.setFieldValue(rowPath, row);
438
- if (!isEqual(orgRow, row)) {
439
- diff = difference(row, orgRow) || {};
440
- validateFieldKeys = (_Object$keys2 = Object.keys(diff)) === null || _Object$keys2 === void 0 ? void 0 : (_Object$keys2$map = _Object$keys2.map) === null || _Object$keys2$map === void 0 ? void 0 : _Object$keys2$map.call(_Object$keys2, function (key) {
441
- return [].concat(_toConsumableArray(rowPath), [key]);
442
- });
443
- if (validateFieldKeys === null || validateFieldKeys === void 0 ? void 0 : validateFieldKeys.length) {
444
- debounceValidate(validateFieldKeys);
456
+ if (validateTrigger && validateTrigger.includes('onBlur')) {
457
+ if (!isEqual(orgRow, row)) {
458
+ diff = difference(row, orgRow) || {};
459
+ validateFieldKeys = (_Object$keys2 = Object.keys(diff)) === null || _Object$keys2 === void 0 ? void 0 : (_Object$keys2$map = _Object$keys2.map) === null || _Object$keys2$map === void 0 ? void 0 : _Object$keys2$map.call(_Object$keys2, function (key) {
460
+ return [].concat(_toConsumableArray(rowPath), [key]);
461
+ });
462
+ if (validateFieldKeys === null || validateFieldKeys === void 0 ? void 0 : validateFieldKeys.length) {
463
+ debounceValidate(validateFieldKeys);
464
+ }
445
465
  }
446
466
  }
447
467
  if (!isCell) {
448
- _context2.next = 20;
468
+ _context2.next = 22;
449
469
  break;
450
470
  }
451
- _context2.next = 19;
471
+ _context2.next = 21;
452
472
  return form.validateFields([cellName]);
453
- case 19:
473
+ case 21:
454
474
  setState({
455
475
  cellNamePath: []
456
476
  });
457
- case 20:
477
+ case 22:
458
478
  // 单行编辑时需要 强制更新视图
459
479
  setState({
460
480
  forceUpdate: {
461
481
  d: Date.now()
462
482
  }
463
483
  });
464
- case 21:
484
+ case 23:
465
485
  case "end":
466
486
  return _context2.stop();
467
487
  }
@@ -100,6 +100,7 @@ export interface ProColumnsProps<Values = any, T = any> extends Omit<FormItemPro
100
100
  hiddenNames?: NamePath[] | NamePath[][];
101
101
  rules?: ProRule[] | RulesFn<T>;
102
102
  confirm?: boolean | ModalFuncProps | FunctionArgs<Values, boolean | ModalFuncProps | void>;
103
+ validateTrigger?: string | string[];
103
104
  [key: string]: any;
104
105
  }
105
106
  export type ProEditTableColumnsProps<K = any> = ProColumnsProps & ColumnPropsMap<K, 'ProEditTable'>;
@@ -35,6 +35,7 @@ var limitNumber = function limitNumber(num, _ref) {
35
35
  return num;
36
36
  };
37
37
  var InputNumber = function InputNumber(props) {
38
+ var _props$precision4;
38
39
  var placeholder = props.placeholder,
39
40
  className = props.className,
40
41
  otherProps = props.otherProps,
@@ -55,28 +56,33 @@ var InputNumber = function InputNumber(props) {
55
56
  var isView = typeof props.isView === 'boolean' ? props.isView : isViewCon; // 组件可直接接收isView参数, 优先级高
56
57
  var valueProps = {};
57
58
  var formatter = function formatter(value) {
59
+ var _props$precision;
58
60
  if (value === '') return '';
59
61
  var num = Number(value);
60
62
  if (Number.isNaN(num)) {
61
63
  return value;
62
64
  }
63
65
  var val = num.toLocaleString('en-US', {
64
- maximumFractionDigits: (props === null || props === void 0 ? void 0 : props.precision) || 2
66
+ maximumFractionDigits: (_props$precision = props === null || props === void 0 ? void 0 : props.precision) !== null && _props$precision !== void 0 ? _props$precision : 2
65
67
  });
66
68
  if (!activateRef.current) {
69
+ var _props$precision2;
67
70
  var _val$split = val.split('.'),
68
71
  _val$split2 = _slicedToArray(_val$split, 2),
69
72
  int = _val$split2[0],
70
73
  _val$split2$ = _val$split2[1],
71
74
  float = _val$split2$ === void 0 ? '' : _val$split2$;
72
- return "".concat(int, ".").concat(float.padEnd((props === null || props === void 0 ? void 0 : props.precision) || 2, '0'));
75
+ if ((props === null || props === void 0 ? void 0 : props.precision) === 0) {
76
+ return int;
77
+ }
78
+ return "".concat(int, ".").concat(float.padEnd((_props$precision2 = props === null || props === void 0 ? void 0 : props.precision) !== null && _props$precision2 !== void 0 ? _props$precision2 : 2, '0'));
73
79
  }
74
80
  return val;
75
81
  };
76
82
  var _parser = function parser(value, precision) {
77
- var num = Number(value.replace(/[\s,]+/g, ''));
78
83
  if (value === '') return value;
79
- return Number.isNaN(num) || !precision ? value : num.toFixed(precision);
84
+ var num = Number(value.replace(/[\s,]+/g, ''));
85
+ return Number.isNaN(num) || !precision && precision !== 0 ? Number.isNaN(Number(value)) ? null : value : num.toFixed(precision);
80
86
  };
81
87
  if (valueType) {
82
88
  switch (valueType) {
@@ -88,8 +94,10 @@ var InputNumber = function InputNumber(props) {
88
94
  valueProps = {
89
95
  formatter: formatter,
90
96
  parser: function parser(val) {
91
- return _parser(val, (props === null || props === void 0 ? void 0 : props.precision) || 2);
92
- }
97
+ var _props$precision3;
98
+ return _parser(val, (_props$precision3 = props === null || props === void 0 ? void 0 : props.precision) !== null && _props$precision3 !== void 0 ? _props$precision3 : 2);
99
+ },
100
+ precision: (_props$precision4 = props === null || props === void 0 ? void 0 : props.precision) !== null && _props$precision4 !== void 0 ? _props$precision4 : 2
93
101
  };
94
102
  break;
95
103
  // 百分比
@@ -177,7 +185,7 @@ var InputNumber = function InputNumber(props) {
177
185
  var originValue = calc(Number(value), '/', 100);
178
186
  // 获取真实数据的小数位数
179
187
  var decimalDigits = getDecimalDigits(originValue);
180
- if (decimalDigits > (precision || 4)) {
188
+ if (decimalDigits > (precision !== null && precision !== void 0 ? precision : 4)) {
181
189
  return _jsx(Container, {
182
190
  viewEmpty: viewEmpty,
183
191
  children: value
@@ -195,7 +203,7 @@ var InputNumber = function InputNumber(props) {
195
203
  var _originValue = calc(Number(value), '/', 1000);
196
204
  // 获取真实数据的小数位数
197
205
  var _decimalDigits = getDecimalDigits(_originValue);
198
- if (_decimalDigits > (precision || 5)) {
206
+ if (_decimalDigits > (precision !== null && precision !== void 0 ? precision : 5)) {
199
207
  return _jsx(Container, {
200
208
  viewEmpty: viewEmpty,
201
209
  children: value
@@ -212,7 +220,7 @@ var InputNumber = function InputNumber(props) {
212
220
  case 'thousandth':
213
221
  return _jsx(Container, {
214
222
  viewEmpty: viewEmpty,
215
- children: tools.formatAmount(value, precision || 2)
223
+ children: tools.formatAmount(value, precision !== null && precision !== void 0 ? precision : 2)
216
224
  });
217
225
  // CNY千分位
218
226
  case 'thousandthCNY':
@@ -232,7 +240,7 @@ var InputNumber = function InputNumber(props) {
232
240
  }
233
241
  // 失去焦点时处理数字,
234
242
  var handleBlur = function handleBlur(e) {
235
- var _e$target, _e$target2;
243
+ var _e$target, _props$precision5, _valueProps3, _e$target2;
236
244
  activateRef.current = false;
237
245
  var value = e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value;
238
246
  if (_max !== undefined && value > _max) {
@@ -241,7 +249,8 @@ var InputNumber = function InputNumber(props) {
241
249
  if (_min !== undefined && value < _min) {
242
250
  value = _min;
243
251
  }
244
- value = _parser(String(value), props.precision);
252
+ value = _parser(String(value), (_props$precision5 = props.precision) !== null && _props$precision5 !== void 0 ? _props$precision5 : (_valueProps3 = valueProps) === null || _valueProps3 === void 0 ? void 0 : _valueProps3.precision);
253
+ rest === null || rest === void 0 ? void 0 : rest.onChange(value);
245
254
  var limit = {
246
255
  min: Number(_min),
247
256
  max: Number(_max)
@@ -1,11 +1,12 @@
1
- import { Form, FormInstance } from 'antd';
1
+ import { FormInstance } from 'antd';
2
2
  import React, { ForwardRefRenderFunction } from 'react';
3
3
  import { FormProviderProps } from 'antd/es/form/context';
4
4
  import { ProFormProps } from './propsType';
5
5
  import { useForm } from './utils/useForm';
6
+ import useWatch from './utils/useWatch';
6
7
  interface IProForm<T = any> extends ForwardRefRenderFunction<FormInstance<T>, ProFormProps<T>> {
7
8
  useForm: typeof useForm;
8
- useWatch: typeof Form.useWatch;
9
+ useWatch: typeof useWatch;
9
10
  [key: string]: any;
10
11
  }
11
12
  declare const ProFormForward: IProForm;
@@ -16,7 +16,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
16
  import { DoubleLeftOutlined } from '@ant-design/icons';
17
17
  import classnames from 'classnames';
18
18
  import React, { forwardRef, useImperativeHandle, useMemo } from 'react';
19
- import { isObject, isString, merge } from 'lodash';
19
+ import { isObject, merge } from 'lodash';
20
20
  import { FormFooter, InputRange, ProAddress, ProCascader, ProCertNo, ProCertValidity, ProCombination, ProModalSelect, ProNumberRange, ProRangeBox, ProTimeLimit, transferAddressInfoToRegion, ProUpload, ProTreeModal, ProTree, EnumSelect } from './components';
21
21
  import RenderFields from './components/render/RenderFields';
22
22
  import { useProConfig, useContextForms } from '../ProConfigProvider';
@@ -24,6 +24,7 @@ import { getLayout, splitNameStr, useControlled, initialValuesToNames, filterInt
24
24
  import { useForm } from './utils/useForm';
25
25
  import { useFieldProps } from './utils/useFieldProps';
26
26
  import locale from '../locale';
27
+ import useWatch from './utils/useWatch';
27
28
  var ProForm = function ProForm(props, ref) {
28
29
  var _forms$formKey, _localStorage, _ref;
29
30
  var _props$mode = props.mode,
@@ -273,22 +274,7 @@ var ProForm = function ProForm(props, ref) {
273
274
  // @ts-ignore
274
275
  var ProFormForward = /*#__PURE__*/forwardRef(ProForm);
275
276
  ProFormForward.useForm = useForm;
276
- ProFormForward.useWatch = function (watchValue, form) {
277
- if (isString(watchValue)) {
278
- var watchValues = [watchValue];
279
- watchValues.forEach(function (item) {
280
- _Form.useWatch(item, form);
281
- });
282
- return form.getFieldsValue(watchValues);
283
- }
284
- if (watchValue.length) {
285
- watchValue.forEach(function (item) {
286
- _Form.useWatch(item, form);
287
- });
288
- return form.getFieldsValue(watchValue);
289
- }
290
- return _Form.useWatch([], form);
291
- };
277
+ ProFormForward.useWatch = useWatch;
292
278
  export var ProFormProvider = function ProFormProvider(props) {
293
279
  var onFormChange = props.onFormChange,
294
280
  onFormFinish = props.onFormFinish,
@@ -22,6 +22,7 @@ var useShouldUpdate = function useShouldUpdate(props) {
22
22
  names = formItemProps.names,
23
23
  dependencies = formItemProps.dependencies;
24
24
  var timerRef = useRef();
25
+ var needClear = useRef(); // 是否需要执行清值操作
25
26
  var showRef = useRef();
26
27
  var disabledRef = useRef();
27
28
  var requiredRef = useRef();
@@ -158,17 +159,24 @@ var useShouldUpdate = function useShouldUpdate(props) {
158
159
  }) : fieldProps;
159
160
  // 清值防抖 多次刷新时以最后一次为准
160
161
  if (clearNotShow !== false && (name || names)) {
162
+ // 当show为其他变为false的时候记录一次需要清值
163
+ if (_show !== showRef.current && _show === false) {
164
+ needClear.current = true;
165
+ }
161
166
  if (_show === false) {
162
167
  clearTimeout(timerRef.current);
163
168
  timerRef.current = setTimeout(function () {
169
+ if (needClear.current !== true) return;
164
170
  if (Array.isArray(names)) {
165
171
  form.resetFields(names);
166
172
  } else {
167
173
  var clearName = formItemProps.namePath ? formItemProps.namePath.slice(0, -1).concat(formItemProps.name) : formItemProps.name;
168
174
  form.resetFields([clearName]);
169
175
  }
170
- }, 200);
176
+ needClear.current = false;
177
+ }, 300);
171
178
  } else {
179
+ needClear.current = false;
172
180
  clearTimeout(timerRef.current);
173
181
  }
174
182
  }
@@ -0,0 +1,7 @@
1
+ import { InternalNamePath, FormInstance, NamePath } from 'rc-field-form/es/interface';
2
+ export declare function toArray<T>(value?: T | T[] | null): T[];
3
+ export declare function getNamePath(path: NamePath | null): InternalNamePath;
4
+ export declare function stringify(value: any): string | number;
5
+ declare function useWatch(dependencies: string, form?: FormInstance, wait?: number): any;
6
+ declare function useWatch(dependencies: NamePath[], form?: FormInstance, wait?: number): any[];
7
+ export default useWatch;
@@ -0,0 +1,77 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import { debounce } from 'lodash';
3
+ import { HOOK_MARK } from 'rc-field-form/es/FieldContext';
4
+ import warning from 'rc-util/lib/warning';
5
+ import { useState, useEffect, useRef, useMemo } from 'react';
6
+ export function toArray(value) {
7
+ if (value === undefined || value === null) {
8
+ return [];
9
+ }
10
+ return Array.isArray(value) ? value : [value];
11
+ }
12
+ export function getNamePath(path) {
13
+ return toArray(path);
14
+ }
15
+ export function stringify(value) {
16
+ try {
17
+ return JSON.stringify(value);
18
+ } catch (err) {
19
+ return Math.random();
20
+ }
21
+ }
22
+ // 创建之后namepath就不可变
23
+ var useWatchWarning = process.env.NODE_ENV !== 'production' ? function (namePath) {
24
+ var fullyStr = JSON.stringify(namePath);
25
+ var nameStrRef = useRef(fullyStr);
26
+ warning(nameStrRef.current === fullyStr, '`useWatch` is not support dynamic `namePath`. Please provide static instead.');
27
+ } : function () {};
28
+ function useWatch(dependencies, form, wait) {
29
+ var isSingle = typeof dependencies === 'string';
30
+ var _useState = useState({}),
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ value = _useState2[0],
33
+ setValue = _useState2[1];
34
+ var valueStr = useMemo(function () {
35
+ return stringify(value);
36
+ }, [value]);
37
+ var valueStrRef = useRef(valueStr);
38
+ valueStrRef.current = valueStr;
39
+ var formInstance = form;
40
+ var isValidForm = formInstance && formInstance._init;
41
+ var _dependencies = isSingle ? [dependencies] : dependencies;
42
+ var namePaths = _dependencies === null || _dependencies === void 0 ? void 0 : _dependencies.map(function (item) {
43
+ return getNamePath(item);
44
+ });
45
+ var namePathsRef = useRef(namePaths);
46
+ namePathsRef.current = namePaths;
47
+ useWatchWarning(namePaths);
48
+ useEffect(function () {
49
+ if (!isValidForm) return;
50
+ var getFieldsValue = formInstance.getFieldsValue,
51
+ getInternalHooks = formInstance.getInternalHooks;
52
+ var _getInternalHooks = getInternalHooks(HOOK_MARK),
53
+ registerWatch = _getInternalHooks.registerWatch;
54
+ var callback = function callback() {
55
+ var newValue = getFieldsValue(_dependencies);
56
+ var nextValueStr = stringify(newValue);
57
+ // Compare stringify in case it's nest object
58
+ if (valueStrRef.current !== nextValueStr) {
59
+ valueStrRef.current = nextValueStr;
60
+ setValue(getFieldsValue(_dependencies));
61
+ }
62
+ };
63
+ // 增加防抖
64
+ if (wait) {
65
+ callback = debounce(callback, wait);
66
+ }
67
+ var cancelRegister = registerWatch(callback);
68
+ var initialValue = getFieldsValue(_dependencies);
69
+ setValue(initialValue);
70
+ return cancelRegister;
71
+ },
72
+ // We do not need re-register since namePath content is the same
73
+ // eslint-disable-next-line react-hooks/exhaustive-deps
74
+ [isValidForm]);
75
+ return value;
76
+ }
77
+ export default useWatch;
@@ -105,7 +105,7 @@ export var formatColumn = function formatColumn(column, originalObj, dataSourceO
105
105
  if (['percentage', 'permillage'].includes(valueType)) {
106
106
  column.render = function (value, record, index) {
107
107
  var multiple = valueType === 'percentage' ? 100 : 1000;
108
- var realValue = tools.calc(Number(value), '*', multiple);
108
+ var realValue = tools.calc(Number(value !== null && value !== void 0 ? value : 0), '*', multiple);
109
109
  var renderValue = getDecimalDigits(value) > valueTypePrecision ? realValue : realValue.toFixed(valueTypePrecision);
110
110
  var originalValue = getOriginalValue(value, record, originalObj, rowKey, dataIndex);
111
111
  var originalRealValue = tools.calc(Number(originalValue || null), '*', multiple);
@@ -355,9 +355,9 @@ export var ProTreeSelect = function ProTreeSelect(props, ref) {
355
355
  }
356
356
  // 迭代完子节点向上回溯,如果有匹配到得子节点,那么加入当前节点得孩子对象上,否则加入得是空数组
357
357
  item.children = currentNodeChild;
358
- // let tag = false;
359
358
  // 判断节点title是否包含关键字 如果有,那么直接进行下一循环
360
- if (item[label].indexOf(keyWord) > -1) {
359
+ // @ts-ignore
360
+ if (item[label].indexOf(keyWord) > -1 && (selectProps === null || selectProps === void 0 ? void 0 : selectProps.mode) !== 'treeSelect') {
361
361
  var regExp = new RegExp(keyWord);
362
362
  item[label] = item[label].replace(regExp, "<span class=\"highlight-search-text\">".concat(keyWord, "</span>"));
363
363
  }
@@ -419,11 +419,22 @@ export var ProTreeSelect = function ProTreeSelect(props, ref) {
419
419
  }
420
420
  var handleChange = function handleChange(newVal, label, extra) {
421
421
  // newVal回来得一定是label、value
422
+ var _selectList = selectList.map(function (item) {
423
+ var label = item.label;
424
+ var _label = label;
425
+ if (label) {
426
+ var regex = /<span class="highlight-search-text">(.*?)<\/span>/g;
427
+ _label = item[label] = label === null || label === void 0 ? void 0 : label.replace(regex, '$1');
428
+ }
429
+ return _objectSpread(_objectSpread({}, item), {}, {
430
+ label: _label
431
+ });
432
+ });
422
433
  var result = newVal;
423
434
  if (props === null || props === void 0 ? void 0 : props.labelInValue) {
424
- result = getLabelByValue(selectList, newVal);
435
+ result = getLabelByValue(_selectList, newVal);
425
436
  }
426
- var options = findTreeNode(selectList, extra === null || extra === void 0 ? void 0 : extra.triggerValue);
437
+ var options = findTreeNode(_selectList, extra === null || extra === void 0 ? void 0 : extra.triggerValue);
427
438
  onChange && onChange(result, options, extra);
428
439
  // 重置搜索
429
440
  showSearch && searchTreeEvent('');
@@ -30,7 +30,7 @@ var _useListChanged3 = require("../../../ProForm/utils/useListChanged");
30
30
  var _useRules = _interopRequireDefault(require("../../../ProForm/utils/useRules"));
31
31
  var _utils = require("../../../ProForm/utils");
32
32
  var _ConfirmWrapper = _interopRequireDefault(require("../../../ProForm/components/render/ConfirmWrapper"));
33
- var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "equalWith", "className", "trim", "confirm"];
33
+ var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "equalWith", "className", "trim", "confirm", "validateTrigger"];
34
34
  /* eslint-disable prefer-destructuring */
35
35
  /* eslint-disable prefer-const */
36
36
  var RenderField = function RenderField(_ref) {
@@ -63,6 +63,8 @@ var RenderField = function RenderField(_ref) {
63
63
  className = column.className,
64
64
  trim = column.trim,
65
65
  confirm = column.confirm,
66
+ _column$validateTrigg = column.validateTrigger,
67
+ validateTrigger = _column$validateTrigg === void 0 ? ['onChange', 'onBlur', 'onSumbit'] : _column$validateTrigg,
66
68
  resetProps = (0, _objectWithoutProperties2.default)(column, _excluded);
67
69
  // editRender弃用使用component同ProForm
68
70
  var _editRender = component || editRender;
@@ -161,7 +163,9 @@ var RenderField = function RenderField(_ref) {
161
163
  // 分离form item参数,防止对于参数透传(如onChange,防止重复触发)并优先级高于 _fieldProps 内部参数
162
164
  var formItemChildProps = (0, _objectSpread2.default)({}, _fieldProps);
163
165
  // 允许formItem的属性放在column最外层
164
- var _formItemProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, resetProps), internalRule);
166
+ var _formItemProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, resetProps), internalRule), {}, {
167
+ validateTrigger: validateTrigger
168
+ });
165
169
  if (['Switch', 'SwitchCheckbox'].includes(type)) {
166
170
  _formItemProps.valuePropName = 'checked';
167
171
  valueType = 'switch';
@@ -321,6 +325,12 @@ var RenderField = function RenderField(_ref) {
321
325
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
322
326
  while (1) switch (_context.prev = _context.next) {
323
327
  case 0:
328
+ if (!(!onFieldChange && !onChange)) {
329
+ _context.next = 2;
330
+ break;
331
+ }
332
+ return _context.abrupt("return", null);
333
+ case 2:
324
334
  for (_len2 = _args2.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
325
335
  args[_key2] = _args2[_key2];
326
336
  }
@@ -329,58 +339,60 @@ var RenderField = function RenderField(_ref) {
329
339
  row = form.getFieldValue(rowPath, true); // if (type === 'InputNumber' && column.name) row[column.name] = args[0];
330
340
  orgRow = (0, _lodash.cloneDeep)(row);
331
341
  if (!onFieldChange) {
332
- _context.next = 18;
342
+ _context.next = 20;
333
343
  break;
334
344
  }
335
345
  _args = formatArgs(args);
336
346
  _args[1] = row;
337
347
  _context.t0 = (_TargetComponent = TargetComponent) === null || _TargetComponent === void 0 ? void 0 : (_TargetComponent$prop = _TargetComponent.props) === null || _TargetComponent$prop === void 0 ? void 0 : _TargetComponent$prop.onFieldChange;
338
348
  if (!_context.t0) {
339
- _context.next = 12;
349
+ _context.next = 14;
340
350
  break;
341
351
  }
342
- _context.next = 12;
352
+ _context.next = 14;
343
353
  return (_TargetComponent$prop2 = TargetComponent.props).onFieldChange.apply(_TargetComponent$prop2, (0, _toConsumableArray2.default)(_args));
344
- case 12:
354
+ case 14:
345
355
  _context.t1 = onFieldChange;
346
356
  if (!_context.t1) {
347
- _context.next = 16;
357
+ _context.next = 18;
348
358
  break;
349
359
  }
350
- _context.next = 16;
360
+ _context.next = 18;
351
361
  return onFieldChange.apply(void 0, (0, _toConsumableArray2.default)(_args));
352
- case 16:
353
- _context.next = 27;
354
- break;
355
362
  case 18:
363
+ _context.next = 29;
364
+ break;
365
+ case 20:
356
366
  _args = _args.concat([row, index, form]);
357
367
  _context.t2 = (_TargetComponent2 = TargetComponent) === null || _TargetComponent2 === void 0 ? void 0 : (_TargetComponent2$pro = _TargetComponent2.props) === null || _TargetComponent2$pro === void 0 ? void 0 : _TargetComponent2$pro.onChange;
358
368
  if (!_context.t2) {
359
- _context.next = 23;
369
+ _context.next = 25;
360
370
  break;
361
371
  }
362
- _context.next = 23;
372
+ _context.next = 25;
363
373
  return (_TargetComponent$prop3 = TargetComponent.props).onChange.apply(_TargetComponent$prop3, (0, _toConsumableArray2.default)(_args));
364
- case 23:
374
+ case 25:
365
375
  _context.t3 = onChange;
366
376
  if (!_context.t3) {
367
- _context.next = 27;
377
+ _context.next = 29;
368
378
  break;
369
379
  }
370
- _context.next = 27;
380
+ _context.next = 29;
371
381
  return onChange.apply(void 0, (0, _toConsumableArray2.default)(_args));
372
- case 27:
382
+ case 29:
373
383
  // 判断属性是否变动
374
384
  form.setFieldValue(rowPath, row);
375
- if (!(0, _lodash.isEqual)(orgRow, row)) {
376
- diff = (0, _tools.difference)(row, orgRow) || {};
377
- validateFieldKeys = (_Object$keys = Object.keys(diff)) === null || _Object$keys === void 0 ? void 0 : (_Object$keys$map = _Object$keys.map) === null || _Object$keys$map === void 0 ? void 0 : _Object$keys$map.call(_Object$keys, function (key) {
378
- return [].concat((0, _toConsumableArray2.default)(rowPath), [key]);
379
- });
380
- if (validateFieldKeys === null || validateFieldKeys === void 0 ? void 0 : validateFieldKeys.length) {
381
- setTimeout(function () {
382
- form.validateFields(validateFieldKeys);
383
- }, 100);
385
+ if (validateTrigger && validateTrigger.includes('onChange')) {
386
+ if (!(0, _lodash.isEqual)(orgRow, row)) {
387
+ diff = (0, _tools.difference)(row, orgRow) || {};
388
+ validateFieldKeys = (_Object$keys = Object.keys(diff)) === null || _Object$keys === void 0 ? void 0 : (_Object$keys$map = _Object$keys.map) === null || _Object$keys$map === void 0 ? void 0 : _Object$keys$map.call(_Object$keys, function (key) {
389
+ return [].concat((0, _toConsumableArray2.default)(rowPath), [key]);
390
+ });
391
+ if (validateFieldKeys === null || validateFieldKeys === void 0 ? void 0 : validateFieldKeys.length) {
392
+ setTimeout(function () {
393
+ form.validateFields(validateFieldKeys);
394
+ }, 100);
395
+ }
384
396
  }
385
397
  }
386
398
  setState({
@@ -388,7 +400,7 @@ var RenderField = function RenderField(_ref) {
388
400
  d: Date.now()
389
401
  }
390
402
  });
391
- case 30:
403
+ case 32:
392
404
  case "end":
393
405
  return _context.stop();
394
406
  }
@@ -412,6 +424,12 @@ var RenderField = function RenderField(_ref) {
412
424
  return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
413
425
  while (1) switch (_context2.prev = _context2.next) {
414
426
  case 0:
427
+ if (onBlur) {
428
+ _context2.next = 2;
429
+ break;
430
+ }
431
+ return _context2.abrupt("return", null);
432
+ case 2:
415
433
  for (_len3 = _args3.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
416
434
  args[_key3] = _args3[_key3];
417
435
  }
@@ -422,49 +440,51 @@ var RenderField = function RenderField(_ref) {
422
440
  _args[1] = row;
423
441
  _context2.t0 = (_TargetComponent3 = TargetComponent) === null || _TargetComponent3 === void 0 ? void 0 : (_TargetComponent3$pro = _TargetComponent3.props) === null || _TargetComponent3$pro === void 0 ? void 0 : _TargetComponent3$pro.onBlur;
424
442
  if (!_context2.t0) {
425
- _context2.next = 10;
443
+ _context2.next = 12;
426
444
  break;
427
445
  }
428
- _context2.next = 10;
446
+ _context2.next = 12;
429
447
  return (_TargetComponent$prop4 = TargetComponent.props).onBlur.apply(_TargetComponent$prop4, (0, _toConsumableArray2.default)(_args));
430
- case 10:
448
+ case 12:
431
449
  _context2.t1 = onBlur;
432
450
  if (!_context2.t1) {
433
- _context2.next = 14;
451
+ _context2.next = 16;
434
452
  break;
435
453
  }
436
- _context2.next = 14;
454
+ _context2.next = 16;
437
455
  return onBlur.apply(void 0, (0, _toConsumableArray2.default)(_args));
438
- case 14:
456
+ case 16:
439
457
  // 判断属性是否变动
440
458
  form.setFieldValue(rowPath, row);
441
- if (!(0, _lodash.isEqual)(orgRow, row)) {
442
- diff = (0, _tools.difference)(row, orgRow) || {};
443
- validateFieldKeys = (_Object$keys2 = Object.keys(diff)) === null || _Object$keys2 === void 0 ? void 0 : (_Object$keys2$map = _Object$keys2.map) === null || _Object$keys2$map === void 0 ? void 0 : _Object$keys2$map.call(_Object$keys2, function (key) {
444
- return [].concat((0, _toConsumableArray2.default)(rowPath), [key]);
445
- });
446
- if (validateFieldKeys === null || validateFieldKeys === void 0 ? void 0 : validateFieldKeys.length) {
447
- debounceValidate(validateFieldKeys);
459
+ if (validateTrigger && validateTrigger.includes('onBlur')) {
460
+ if (!(0, _lodash.isEqual)(orgRow, row)) {
461
+ diff = (0, _tools.difference)(row, orgRow) || {};
462
+ validateFieldKeys = (_Object$keys2 = Object.keys(diff)) === null || _Object$keys2 === void 0 ? void 0 : (_Object$keys2$map = _Object$keys2.map) === null || _Object$keys2$map === void 0 ? void 0 : _Object$keys2$map.call(_Object$keys2, function (key) {
463
+ return [].concat((0, _toConsumableArray2.default)(rowPath), [key]);
464
+ });
465
+ if (validateFieldKeys === null || validateFieldKeys === void 0 ? void 0 : validateFieldKeys.length) {
466
+ debounceValidate(validateFieldKeys);
467
+ }
448
468
  }
449
469
  }
450
470
  if (!isCell) {
451
- _context2.next = 20;
471
+ _context2.next = 22;
452
472
  break;
453
473
  }
454
- _context2.next = 19;
474
+ _context2.next = 21;
455
475
  return form.validateFields([cellName]);
456
- case 19:
476
+ case 21:
457
477
  setState({
458
478
  cellNamePath: []
459
479
  });
460
- case 20:
480
+ case 22:
461
481
  // 单行编辑时需要 强制更新视图
462
482
  setState({
463
483
  forceUpdate: {
464
484
  d: Date.now()
465
485
  }
466
486
  });
467
- case 21:
487
+ case 23:
468
488
  case "end":
469
489
  return _context2.stop();
470
490
  }
@@ -100,6 +100,7 @@ export interface ProColumnsProps<Values = any, T = any> extends Omit<FormItemPro
100
100
  hiddenNames?: NamePath[] | NamePath[][];
101
101
  rules?: ProRule[] | RulesFn<T>;
102
102
  confirm?: boolean | ModalFuncProps | FunctionArgs<Values, boolean | ModalFuncProps | void>;
103
+ validateTrigger?: string | string[];
103
104
  [key: string]: any;
104
105
  }
105
106
  export type ProEditTableColumnsProps<K = any> = ProColumnsProps & ColumnPropsMap<K, 'ProEditTable'>;
@@ -39,6 +39,7 @@ var limitNumber = function limitNumber(num, _ref) {
39
39
  return num;
40
40
  };
41
41
  var InputNumber = function InputNumber(props) {
42
+ var _props$precision4;
42
43
  var placeholder = props.placeholder,
43
44
  className = props.className,
44
45
  otherProps = props.otherProps,
@@ -59,28 +60,33 @@ var InputNumber = function InputNumber(props) {
59
60
  var isView = typeof props.isView === 'boolean' ? props.isView : isViewCon; // 组件可直接接收isView参数, 优先级高
60
61
  var valueProps = {};
61
62
  var formatter = function formatter(value) {
63
+ var _props$precision;
62
64
  if (value === '') return '';
63
65
  var num = Number(value);
64
66
  if (Number.isNaN(num)) {
65
67
  return value;
66
68
  }
67
69
  var val = num.toLocaleString('en-US', {
68
- maximumFractionDigits: (props === null || props === void 0 ? void 0 : props.precision) || 2
70
+ maximumFractionDigits: (_props$precision = props === null || props === void 0 ? void 0 : props.precision) !== null && _props$precision !== void 0 ? _props$precision : 2
69
71
  });
70
72
  if (!activateRef.current) {
73
+ var _props$precision2;
71
74
  var _val$split = val.split('.'),
72
75
  _val$split2 = (0, _slicedToArray2.default)(_val$split, 2),
73
76
  int = _val$split2[0],
74
77
  _val$split2$ = _val$split2[1],
75
78
  float = _val$split2$ === void 0 ? '' : _val$split2$;
76
- return "".concat(int, ".").concat(float.padEnd((props === null || props === void 0 ? void 0 : props.precision) || 2, '0'));
79
+ if ((props === null || props === void 0 ? void 0 : props.precision) === 0) {
80
+ return int;
81
+ }
82
+ return "".concat(int, ".").concat(float.padEnd((_props$precision2 = props === null || props === void 0 ? void 0 : props.precision) !== null && _props$precision2 !== void 0 ? _props$precision2 : 2, '0'));
77
83
  }
78
84
  return val;
79
85
  };
80
86
  var _parser = function parser(value, precision) {
81
- var num = Number(value.replace(/[\s,]+/g, ''));
82
87
  if (value === '') return value;
83
- return Number.isNaN(num) || !precision ? value : num.toFixed(precision);
88
+ var num = Number(value.replace(/[\s,]+/g, ''));
89
+ return Number.isNaN(num) || !precision && precision !== 0 ? Number.isNaN(Number(value)) ? null : value : num.toFixed(precision);
84
90
  };
85
91
  if (valueType) {
86
92
  switch (valueType) {
@@ -92,8 +98,10 @@ var InputNumber = function InputNumber(props) {
92
98
  valueProps = {
93
99
  formatter: formatter,
94
100
  parser: function parser(val) {
95
- return _parser(val, (props === null || props === void 0 ? void 0 : props.precision) || 2);
96
- }
101
+ var _props$precision3;
102
+ return _parser(val, (_props$precision3 = props === null || props === void 0 ? void 0 : props.precision) !== null && _props$precision3 !== void 0 ? _props$precision3 : 2);
103
+ },
104
+ precision: (_props$precision4 = props === null || props === void 0 ? void 0 : props.precision) !== null && _props$precision4 !== void 0 ? _props$precision4 : 2
97
105
  };
98
106
  break;
99
107
  // 百分比
@@ -181,7 +189,7 @@ var InputNumber = function InputNumber(props) {
181
189
  var originValue = calc(Number(value), '/', 100);
182
190
  // 获取真实数据的小数位数
183
191
  var decimalDigits = (0, _index.getDecimalDigits)(originValue);
184
- if (decimalDigits > (precision || 4)) {
192
+ if (decimalDigits > (precision !== null && precision !== void 0 ? precision : 4)) {
185
193
  return (0, _jsxRuntime.jsx)(_Container.default, {
186
194
  viewEmpty: viewEmpty,
187
195
  children: value
@@ -199,7 +207,7 @@ var InputNumber = function InputNumber(props) {
199
207
  var _originValue = calc(Number(value), '/', 1000);
200
208
  // 获取真实数据的小数位数
201
209
  var _decimalDigits = (0, _index.getDecimalDigits)(_originValue);
202
- if (_decimalDigits > (precision || 5)) {
210
+ if (_decimalDigits > (precision !== null && precision !== void 0 ? precision : 5)) {
203
211
  return (0, _jsxRuntime.jsx)(_Container.default, {
204
212
  viewEmpty: viewEmpty,
205
213
  children: value
@@ -216,7 +224,7 @@ var InputNumber = function InputNumber(props) {
216
224
  case 'thousandth':
217
225
  return (0, _jsxRuntime.jsx)(_Container.default, {
218
226
  viewEmpty: viewEmpty,
219
- children: _utils.tools.formatAmount(value, precision || 2)
227
+ children: _utils.tools.formatAmount(value, precision !== null && precision !== void 0 ? precision : 2)
220
228
  });
221
229
  // CNY千分位
222
230
  case 'thousandthCNY':
@@ -236,7 +244,7 @@ var InputNumber = function InputNumber(props) {
236
244
  }
237
245
  // 失去焦点时处理数字,
238
246
  var handleBlur = function handleBlur(e) {
239
- var _e$target, _e$target2;
247
+ var _e$target, _props$precision5, _valueProps3, _e$target2;
240
248
  activateRef.current = false;
241
249
  var value = e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value;
242
250
  if (_max !== undefined && value > _max) {
@@ -245,7 +253,8 @@ var InputNumber = function InputNumber(props) {
245
253
  if (_min !== undefined && value < _min) {
246
254
  value = _min;
247
255
  }
248
- value = _parser(String(value), props.precision);
256
+ value = _parser(String(value), (_props$precision5 = props.precision) !== null && _props$precision5 !== void 0 ? _props$precision5 : (_valueProps3 = valueProps) === null || _valueProps3 === void 0 ? void 0 : _valueProps3.precision);
257
+ rest === null || rest === void 0 ? void 0 : rest.onChange(value);
249
258
  var limit = {
250
259
  min: Number(_min),
251
260
  max: Number(_max)
@@ -1,11 +1,12 @@
1
- import { Form, FormInstance } from 'antd';
1
+ import { FormInstance } from 'antd';
2
2
  import React, { ForwardRefRenderFunction } from 'react';
3
3
  import { FormProviderProps } from 'antd/es/form/context';
4
4
  import { ProFormProps } from './propsType';
5
5
  import { useForm } from './utils/useForm';
6
+ import useWatch from './utils/useWatch';
6
7
  interface IProForm<T = any> extends ForwardRefRenderFunction<FormInstance<T>, ProFormProps<T>> {
7
8
  useForm: typeof useForm;
8
- useWatch: typeof Form.useWatch;
9
+ useWatch: typeof useWatch;
9
10
  [key: string]: any;
10
11
  }
11
12
  declare const ProFormForward: IProForm;
@@ -24,6 +24,7 @@ var _index = require("./utils/index");
24
24
  var _useForm3 = require("./utils/useForm");
25
25
  var _useFieldProps = require("./utils/useFieldProps");
26
26
  var _locale = _interopRequireDefault(require("../locale"));
27
+ var _useWatch = _interopRequireDefault(require("./utils/useWatch"));
27
28
  var _excluded = ["mode", "span", "disabled", "isView", "columns", "footer", "onOk", "okText", "onCancel", "confirmLoading", "cancelText", "form", "children", "rowProps", "className", "expand", "expandOpen", "expandOpenChange", "viewEmpty", "labelAlign", "labelWidth", "onValuesChange", "onFinish", "originalValues", "submitOnEnter", "clearNotShow", "initialValues", "requiredOnView", "formId", "required", "originalDiffTip", "formKey", "globalControl", "scrollToError", "optimize"];
28
29
  var ProForm = function ProForm(props, ref) {
29
30
  var _forms$formKey, _localStorage, _ref;
@@ -274,22 +275,7 @@ var ProForm = function ProForm(props, ref) {
274
275
  // @ts-ignore
275
276
  var ProFormForward = /*#__PURE__*/(0, _react.forwardRef)(ProForm);
276
277
  ProFormForward.useForm = _useForm3.useForm;
277
- ProFormForward.useWatch = function (watchValue, form) {
278
- if ((0, _lodash.isString)(watchValue)) {
279
- var watchValues = [watchValue];
280
- watchValues.forEach(function (item) {
281
- _antd.Form.useWatch(item, form);
282
- });
283
- return form.getFieldsValue(watchValues);
284
- }
285
- if (watchValue.length) {
286
- watchValue.forEach(function (item) {
287
- _antd.Form.useWatch(item, form);
288
- });
289
- return form.getFieldsValue(watchValue);
290
- }
291
- return _antd.Form.useWatch([], form);
292
- };
278
+ ProFormForward.useWatch = _useWatch.default;
293
279
  var ProFormProvider = exports.ProFormProvider = function ProFormProvider(props) {
294
280
  var onFormChange = props.onFormChange,
295
281
  onFormFinish = props.onFormFinish,
@@ -29,6 +29,7 @@ var useShouldUpdate = function useShouldUpdate(props) {
29
29
  names = formItemProps.names,
30
30
  dependencies = formItemProps.dependencies;
31
31
  var timerRef = (0, _react.useRef)();
32
+ var needClear = (0, _react.useRef)(); // 是否需要执行清值操作
32
33
  var showRef = (0, _react.useRef)();
33
34
  var disabledRef = (0, _react.useRef)();
34
35
  var requiredRef = (0, _react.useRef)();
@@ -165,17 +166,24 @@ var useShouldUpdate = function useShouldUpdate(props) {
165
166
  }) : fieldProps;
166
167
  // 清值防抖 多次刷新时以最后一次为准
167
168
  if (clearNotShow !== false && (name || names)) {
169
+ // 当show为其他变为false的时候记录一次需要清值
170
+ if (_show !== showRef.current && _show === false) {
171
+ needClear.current = true;
172
+ }
168
173
  if (_show === false) {
169
174
  clearTimeout(timerRef.current);
170
175
  timerRef.current = setTimeout(function () {
176
+ if (needClear.current !== true) return;
171
177
  if (Array.isArray(names)) {
172
178
  form.resetFields(names);
173
179
  } else {
174
180
  var clearName = formItemProps.namePath ? formItemProps.namePath.slice(0, -1).concat(formItemProps.name) : formItemProps.name;
175
181
  form.resetFields([clearName]);
176
182
  }
177
- }, 200);
183
+ needClear.current = false;
184
+ }, 300);
178
185
  } else {
186
+ needClear.current = false;
179
187
  clearTimeout(timerRef.current);
180
188
  }
181
189
  }
@@ -0,0 +1,7 @@
1
+ import { InternalNamePath, FormInstance, NamePath } from 'rc-field-form/es/interface';
2
+ export declare function toArray<T>(value?: T | T[] | null): T[];
3
+ export declare function getNamePath(path: NamePath | null): InternalNamePath;
4
+ export declare function stringify(value: any): string | number;
5
+ declare function useWatch(dependencies: string, form?: FormInstance, wait?: number): any;
6
+ declare function useWatch(dependencies: NamePath[], form?: FormInstance, wait?: number): any[];
7
+ export default useWatch;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ exports.getNamePath = getNamePath;
9
+ exports.stringify = stringify;
10
+ exports.toArray = toArray;
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _lodash = require("lodash");
13
+ var _FieldContext = require("rc-field-form/es/FieldContext");
14
+ var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
15
+ var _react = require("react");
16
+ function toArray(value) {
17
+ if (value === undefined || value === null) {
18
+ return [];
19
+ }
20
+ return Array.isArray(value) ? value : [value];
21
+ }
22
+ function getNamePath(path) {
23
+ return toArray(path);
24
+ }
25
+ function stringify(value) {
26
+ try {
27
+ return JSON.stringify(value);
28
+ } catch (err) {
29
+ return Math.random();
30
+ }
31
+ }
32
+ // 创建之后namepath就不可变
33
+ var useWatchWarning = process.env.NODE_ENV !== 'production' ? function (namePath) {
34
+ var fullyStr = JSON.stringify(namePath);
35
+ var nameStrRef = (0, _react.useRef)(fullyStr);
36
+ (0, _warning.default)(nameStrRef.current === fullyStr, '`useWatch` is not support dynamic `namePath`. Please provide static instead.');
37
+ } : function () {};
38
+ function useWatch(dependencies, form, wait) {
39
+ var isSingle = typeof dependencies === 'string';
40
+ var _useState = (0, _react.useState)({}),
41
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
42
+ value = _useState2[0],
43
+ setValue = _useState2[1];
44
+ var valueStr = (0, _react.useMemo)(function () {
45
+ return stringify(value);
46
+ }, [value]);
47
+ var valueStrRef = (0, _react.useRef)(valueStr);
48
+ valueStrRef.current = valueStr;
49
+ var formInstance = form;
50
+ var isValidForm = formInstance && formInstance._init;
51
+ var _dependencies = isSingle ? [dependencies] : dependencies;
52
+ var namePaths = _dependencies === null || _dependencies === void 0 ? void 0 : _dependencies.map(function (item) {
53
+ return getNamePath(item);
54
+ });
55
+ var namePathsRef = (0, _react.useRef)(namePaths);
56
+ namePathsRef.current = namePaths;
57
+ useWatchWarning(namePaths);
58
+ (0, _react.useEffect)(function () {
59
+ if (!isValidForm) return;
60
+ var getFieldsValue = formInstance.getFieldsValue,
61
+ getInternalHooks = formInstance.getInternalHooks;
62
+ var _getInternalHooks = getInternalHooks(_FieldContext.HOOK_MARK),
63
+ registerWatch = _getInternalHooks.registerWatch;
64
+ var callback = function callback() {
65
+ var newValue = getFieldsValue(_dependencies);
66
+ var nextValueStr = stringify(newValue);
67
+ // Compare stringify in case it's nest object
68
+ if (valueStrRef.current !== nextValueStr) {
69
+ valueStrRef.current = nextValueStr;
70
+ setValue(getFieldsValue(_dependencies));
71
+ }
72
+ };
73
+ // 增加防抖
74
+ if (wait) {
75
+ callback = (0, _lodash.debounce)(callback, wait);
76
+ }
77
+ var cancelRegister = registerWatch(callback);
78
+ var initialValue = getFieldsValue(_dependencies);
79
+ setValue(initialValue);
80
+ return cancelRegister;
81
+ },
82
+ // We do not need re-register since namePath content is the same
83
+ // eslint-disable-next-line react-hooks/exhaustive-deps
84
+ [isValidForm]);
85
+ return value;
86
+ }
87
+ var _default = exports.default = useWatch;
@@ -112,7 +112,7 @@ var formatColumn = exports.formatColumn = function formatColumn(column, original
112
112
  if (['percentage', 'permillage'].includes(valueType)) {
113
113
  column.render = function (value, record, index) {
114
114
  var multiple = valueType === 'percentage' ? 100 : 1000;
115
- var realValue = _utils.tools.calc(Number(value), '*', multiple);
115
+ var realValue = _utils.tools.calc(Number(value !== null && value !== void 0 ? value : 0), '*', multiple);
116
116
  var renderValue = getDecimalDigits(value) > valueTypePrecision ? realValue : realValue.toFixed(valueTypePrecision);
117
117
  var originalValue = getOriginalValue(value, record, originalObj, rowKey, dataIndex);
118
118
  var originalRealValue = _utils.tools.calc(Number(originalValue || null), '*', multiple);
@@ -355,9 +355,9 @@ var ProTreeSelect = exports.ProTreeSelect = function ProTreeSelect(props, ref) {
355
355
  }
356
356
  // 迭代完子节点向上回溯,如果有匹配到得子节点,那么加入当前节点得孩子对象上,否则加入得是空数组
357
357
  item.children = currentNodeChild;
358
- // let tag = false;
359
358
  // 判断节点title是否包含关键字 如果有,那么直接进行下一循环
360
- if (item[label].indexOf(keyWord) > -1) {
359
+ // @ts-ignore
360
+ if (item[label].indexOf(keyWord) > -1 && (selectProps === null || selectProps === void 0 ? void 0 : selectProps.mode) !== 'treeSelect') {
361
361
  var regExp = new RegExp(keyWord);
362
362
  item[label] = item[label].replace(regExp, "<span class=\"highlight-search-text\">".concat(keyWord, "</span>"));
363
363
  }
@@ -419,11 +419,22 @@ var ProTreeSelect = exports.ProTreeSelect = function ProTreeSelect(props, ref) {
419
419
  }
420
420
  var handleChange = function handleChange(newVal, label, extra) {
421
421
  // newVal回来得一定是label、value
422
+ var _selectList = selectList.map(function (item) {
423
+ var label = item.label;
424
+ var _label = label;
425
+ if (label) {
426
+ var regex = /<span class="highlight-search-text">(.*?)<\/span>/g;
427
+ _label = item[label] = label === null || label === void 0 ? void 0 : label.replace(regex, '$1');
428
+ }
429
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
430
+ label: _label
431
+ });
432
+ });
422
433
  var result = newVal;
423
434
  if (props === null || props === void 0 ? void 0 : props.labelInValue) {
424
- result = getLabelByValue(selectList, newVal);
435
+ result = getLabelByValue(_selectList, newVal);
425
436
  }
426
- var options = findTreeNode(selectList, extra === null || extra === void 0 ? void 0 : extra.triggerValue);
437
+ var options = findTreeNode(_selectList, extra === null || extra === void 0 ? void 0 : extra.triggerValue);
427
438
  onChange && onChange(result, options, extra);
428
439
  // 重置搜索
429
440
  showSearch && searchTreeEvent('');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zat-design/sisyphus-react",
3
- "version": "3.6.5",
3
+ "version": "3.6.6-beta.1",
4
4
  "license": "Apache-2.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -58,7 +58,7 @@
58
58
  "@dnd-kit/sortable": "^7.0.2",
59
59
  "@dnd-kit/utilities": "^3.2.1",
60
60
  "@pansy/react-watermark": "^3.1.13",
61
- "@zat-design/utils": "^1.1.28",
61
+ "@zat-design/utils": "^1.1.29",
62
62
  "ahooks": "3.7.4",
63
63
  "antd": "4.24.8",
64
64
  "big.js": "^6.2.1",