@zat-design/sisyphus-react 3.6.5 → 3.6.6
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.
- package/es/ProEditTable/components/RenderField/index.js +39 -27
- package/es/ProForm/components/base/InputNumber/index.js +20 -11
- package/es/ProForm/index.d.ts +3 -2
- package/es/ProForm/index.js +3 -17
- package/es/ProForm/utils/useShouldUpdate.js +9 -1
- package/es/ProForm/utils/useWatch.d.ts +7 -0
- package/es/ProForm/utils/useWatch.js +77 -0
- package/es/ProTable/utils.js +1 -1
- package/es/ProTree/components/ProTreeSelect/index.js +15 -4
- package/lib/ProEditTable/components/RenderField/index.js +39 -27
- package/lib/ProForm/components/base/InputNumber/index.js +20 -11
- package/lib/ProForm/index.d.ts +3 -2
- package/lib/ProForm/index.js +2 -16
- package/lib/ProForm/utils/useShouldUpdate.js +9 -1
- package/lib/ProForm/utils/useWatch.d.ts +7 -0
- package/lib/ProForm/utils/useWatch.js +87 -0
- package/lib/ProTable/utils.js +1 -1
- package/lib/ProTree/components/ProTreeSelect/index.js +15 -4
- package/package.json +2 -2
|
@@ -318,6 +318,12 @@ var RenderField = function RenderField(_ref) {
|
|
|
318
318
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
319
319
|
while (1) switch (_context.prev = _context.next) {
|
|
320
320
|
case 0:
|
|
321
|
+
if (!(!onFieldChange && !onChange)) {
|
|
322
|
+
_context.next = 2;
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
return _context.abrupt("return", null);
|
|
326
|
+
case 2:
|
|
321
327
|
for (_len2 = _args2.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
322
328
|
args[_key2] = _args2[_key2];
|
|
323
329
|
}
|
|
@@ -326,47 +332,47 @@ var RenderField = function RenderField(_ref) {
|
|
|
326
332
|
row = form.getFieldValue(rowPath, true); // if (type === 'InputNumber' && column.name) row[column.name] = args[0];
|
|
327
333
|
orgRow = cloneDeep(row);
|
|
328
334
|
if (!onFieldChange) {
|
|
329
|
-
_context.next =
|
|
335
|
+
_context.next = 20;
|
|
330
336
|
break;
|
|
331
337
|
}
|
|
332
338
|
_args = formatArgs(args);
|
|
333
339
|
_args[1] = row;
|
|
334
340
|
_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
341
|
if (!_context.t0) {
|
|
336
|
-
_context.next =
|
|
342
|
+
_context.next = 14;
|
|
337
343
|
break;
|
|
338
344
|
}
|
|
339
|
-
_context.next =
|
|
345
|
+
_context.next = 14;
|
|
340
346
|
return (_TargetComponent$prop2 = TargetComponent.props).onFieldChange.apply(_TargetComponent$prop2, _toConsumableArray(_args));
|
|
341
|
-
case
|
|
347
|
+
case 14:
|
|
342
348
|
_context.t1 = onFieldChange;
|
|
343
349
|
if (!_context.t1) {
|
|
344
|
-
_context.next =
|
|
350
|
+
_context.next = 18;
|
|
345
351
|
break;
|
|
346
352
|
}
|
|
347
|
-
_context.next =
|
|
353
|
+
_context.next = 18;
|
|
348
354
|
return onFieldChange.apply(void 0, _toConsumableArray(_args));
|
|
349
|
-
case 16:
|
|
350
|
-
_context.next = 27;
|
|
351
|
-
break;
|
|
352
355
|
case 18:
|
|
356
|
+
_context.next = 29;
|
|
357
|
+
break;
|
|
358
|
+
case 20:
|
|
353
359
|
_args = _args.concat([row, index, form]);
|
|
354
360
|
_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
361
|
if (!_context.t2) {
|
|
356
|
-
_context.next =
|
|
362
|
+
_context.next = 25;
|
|
357
363
|
break;
|
|
358
364
|
}
|
|
359
|
-
_context.next =
|
|
365
|
+
_context.next = 25;
|
|
360
366
|
return (_TargetComponent$prop3 = TargetComponent.props).onChange.apply(_TargetComponent$prop3, _toConsumableArray(_args));
|
|
361
|
-
case
|
|
367
|
+
case 25:
|
|
362
368
|
_context.t3 = onChange;
|
|
363
369
|
if (!_context.t3) {
|
|
364
|
-
_context.next =
|
|
370
|
+
_context.next = 29;
|
|
365
371
|
break;
|
|
366
372
|
}
|
|
367
|
-
_context.next =
|
|
373
|
+
_context.next = 29;
|
|
368
374
|
return onChange.apply(void 0, _toConsumableArray(_args));
|
|
369
|
-
case
|
|
375
|
+
case 29:
|
|
370
376
|
// 判断属性是否变动
|
|
371
377
|
form.setFieldValue(rowPath, row);
|
|
372
378
|
if (!isEqual(orgRow, row)) {
|
|
@@ -385,7 +391,7 @@ var RenderField = function RenderField(_ref) {
|
|
|
385
391
|
d: Date.now()
|
|
386
392
|
}
|
|
387
393
|
});
|
|
388
|
-
case
|
|
394
|
+
case 32:
|
|
389
395
|
case "end":
|
|
390
396
|
return _context.stop();
|
|
391
397
|
}
|
|
@@ -409,6 +415,12 @@ var RenderField = function RenderField(_ref) {
|
|
|
409
415
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
410
416
|
while (1) switch (_context2.prev = _context2.next) {
|
|
411
417
|
case 0:
|
|
418
|
+
if (onBlur) {
|
|
419
|
+
_context2.next = 2;
|
|
420
|
+
break;
|
|
421
|
+
}
|
|
422
|
+
return _context2.abrupt("return", null);
|
|
423
|
+
case 2:
|
|
412
424
|
for (_len3 = _args3.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
413
425
|
args[_key3] = _args3[_key3];
|
|
414
426
|
}
|
|
@@ -419,20 +431,20 @@ var RenderField = function RenderField(_ref) {
|
|
|
419
431
|
_args[1] = row;
|
|
420
432
|
_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
433
|
if (!_context2.t0) {
|
|
422
|
-
_context2.next =
|
|
434
|
+
_context2.next = 12;
|
|
423
435
|
break;
|
|
424
436
|
}
|
|
425
|
-
_context2.next =
|
|
437
|
+
_context2.next = 12;
|
|
426
438
|
return (_TargetComponent$prop4 = TargetComponent.props).onBlur.apply(_TargetComponent$prop4, _toConsumableArray(_args));
|
|
427
|
-
case
|
|
439
|
+
case 12:
|
|
428
440
|
_context2.t1 = onBlur;
|
|
429
441
|
if (!_context2.t1) {
|
|
430
|
-
_context2.next =
|
|
442
|
+
_context2.next = 16;
|
|
431
443
|
break;
|
|
432
444
|
}
|
|
433
|
-
_context2.next =
|
|
445
|
+
_context2.next = 16;
|
|
434
446
|
return onBlur.apply(void 0, _toConsumableArray(_args));
|
|
435
|
-
case
|
|
447
|
+
case 16:
|
|
436
448
|
// 判断属性是否变动
|
|
437
449
|
form.setFieldValue(rowPath, row);
|
|
438
450
|
if (!isEqual(orgRow, row)) {
|
|
@@ -445,23 +457,23 @@ var RenderField = function RenderField(_ref) {
|
|
|
445
457
|
}
|
|
446
458
|
}
|
|
447
459
|
if (!isCell) {
|
|
448
|
-
_context2.next =
|
|
460
|
+
_context2.next = 22;
|
|
449
461
|
break;
|
|
450
462
|
}
|
|
451
|
-
_context2.next =
|
|
463
|
+
_context2.next = 21;
|
|
452
464
|
return form.validateFields([cellName]);
|
|
453
|
-
case
|
|
465
|
+
case 21:
|
|
454
466
|
setState({
|
|
455
467
|
cellNamePath: []
|
|
456
468
|
});
|
|
457
|
-
case
|
|
469
|
+
case 22:
|
|
458
470
|
// 单行编辑时需要 强制更新视图
|
|
459
471
|
setState({
|
|
460
472
|
forceUpdate: {
|
|
461
473
|
d: Date.now()
|
|
462
474
|
}
|
|
463
475
|
});
|
|
464
|
-
case
|
|
476
|
+
case 23:
|
|
465
477
|
case "end":
|
|
466
478
|
return _context2.stop();
|
|
467
479
|
}
|
|
@@ -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)
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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)
|
package/es/ProForm/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
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
|
|
9
|
+
useWatch: typeof useWatch;
|
|
9
10
|
[key: string]: any;
|
|
10
11
|
}
|
|
11
12
|
declare const ProFormForward: IProForm;
|
package/es/ProForm/index.js
CHANGED
|
@@ -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,
|
|
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 =
|
|
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
|
-
|
|
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;
|
package/es/ProTable/utils.js
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
435
|
+
result = getLabelByValue(_selectList, newVal);
|
|
425
436
|
}
|
|
426
|
-
var options = findTreeNode(
|
|
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('');
|
|
@@ -321,6 +321,12 @@ var RenderField = function RenderField(_ref) {
|
|
|
321
321
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
322
322
|
while (1) switch (_context.prev = _context.next) {
|
|
323
323
|
case 0:
|
|
324
|
+
if (!(!onFieldChange && !onChange)) {
|
|
325
|
+
_context.next = 2;
|
|
326
|
+
break;
|
|
327
|
+
}
|
|
328
|
+
return _context.abrupt("return", null);
|
|
329
|
+
case 2:
|
|
324
330
|
for (_len2 = _args2.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
325
331
|
args[_key2] = _args2[_key2];
|
|
326
332
|
}
|
|
@@ -329,47 +335,47 @@ var RenderField = function RenderField(_ref) {
|
|
|
329
335
|
row = form.getFieldValue(rowPath, true); // if (type === 'InputNumber' && column.name) row[column.name] = args[0];
|
|
330
336
|
orgRow = (0, _lodash.cloneDeep)(row);
|
|
331
337
|
if (!onFieldChange) {
|
|
332
|
-
_context.next =
|
|
338
|
+
_context.next = 20;
|
|
333
339
|
break;
|
|
334
340
|
}
|
|
335
341
|
_args = formatArgs(args);
|
|
336
342
|
_args[1] = row;
|
|
337
343
|
_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
344
|
if (!_context.t0) {
|
|
339
|
-
_context.next =
|
|
345
|
+
_context.next = 14;
|
|
340
346
|
break;
|
|
341
347
|
}
|
|
342
|
-
_context.next =
|
|
348
|
+
_context.next = 14;
|
|
343
349
|
return (_TargetComponent$prop2 = TargetComponent.props).onFieldChange.apply(_TargetComponent$prop2, (0, _toConsumableArray2.default)(_args));
|
|
344
|
-
case
|
|
350
|
+
case 14:
|
|
345
351
|
_context.t1 = onFieldChange;
|
|
346
352
|
if (!_context.t1) {
|
|
347
|
-
_context.next =
|
|
353
|
+
_context.next = 18;
|
|
348
354
|
break;
|
|
349
355
|
}
|
|
350
|
-
_context.next =
|
|
356
|
+
_context.next = 18;
|
|
351
357
|
return onFieldChange.apply(void 0, (0, _toConsumableArray2.default)(_args));
|
|
352
|
-
case 16:
|
|
353
|
-
_context.next = 27;
|
|
354
|
-
break;
|
|
355
358
|
case 18:
|
|
359
|
+
_context.next = 29;
|
|
360
|
+
break;
|
|
361
|
+
case 20:
|
|
356
362
|
_args = _args.concat([row, index, form]);
|
|
357
363
|
_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
364
|
if (!_context.t2) {
|
|
359
|
-
_context.next =
|
|
365
|
+
_context.next = 25;
|
|
360
366
|
break;
|
|
361
367
|
}
|
|
362
|
-
_context.next =
|
|
368
|
+
_context.next = 25;
|
|
363
369
|
return (_TargetComponent$prop3 = TargetComponent.props).onChange.apply(_TargetComponent$prop3, (0, _toConsumableArray2.default)(_args));
|
|
364
|
-
case
|
|
370
|
+
case 25:
|
|
365
371
|
_context.t3 = onChange;
|
|
366
372
|
if (!_context.t3) {
|
|
367
|
-
_context.next =
|
|
373
|
+
_context.next = 29;
|
|
368
374
|
break;
|
|
369
375
|
}
|
|
370
|
-
_context.next =
|
|
376
|
+
_context.next = 29;
|
|
371
377
|
return onChange.apply(void 0, (0, _toConsumableArray2.default)(_args));
|
|
372
|
-
case
|
|
378
|
+
case 29:
|
|
373
379
|
// 判断属性是否变动
|
|
374
380
|
form.setFieldValue(rowPath, row);
|
|
375
381
|
if (!(0, _lodash.isEqual)(orgRow, row)) {
|
|
@@ -388,7 +394,7 @@ var RenderField = function RenderField(_ref) {
|
|
|
388
394
|
d: Date.now()
|
|
389
395
|
}
|
|
390
396
|
});
|
|
391
|
-
case
|
|
397
|
+
case 32:
|
|
392
398
|
case "end":
|
|
393
399
|
return _context.stop();
|
|
394
400
|
}
|
|
@@ -412,6 +418,12 @@ var RenderField = function RenderField(_ref) {
|
|
|
412
418
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
|
|
413
419
|
while (1) switch (_context2.prev = _context2.next) {
|
|
414
420
|
case 0:
|
|
421
|
+
if (onBlur) {
|
|
422
|
+
_context2.next = 2;
|
|
423
|
+
break;
|
|
424
|
+
}
|
|
425
|
+
return _context2.abrupt("return", null);
|
|
426
|
+
case 2:
|
|
415
427
|
for (_len3 = _args3.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
416
428
|
args[_key3] = _args3[_key3];
|
|
417
429
|
}
|
|
@@ -422,20 +434,20 @@ var RenderField = function RenderField(_ref) {
|
|
|
422
434
|
_args[1] = row;
|
|
423
435
|
_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
436
|
if (!_context2.t0) {
|
|
425
|
-
_context2.next =
|
|
437
|
+
_context2.next = 12;
|
|
426
438
|
break;
|
|
427
439
|
}
|
|
428
|
-
_context2.next =
|
|
440
|
+
_context2.next = 12;
|
|
429
441
|
return (_TargetComponent$prop4 = TargetComponent.props).onBlur.apply(_TargetComponent$prop4, (0, _toConsumableArray2.default)(_args));
|
|
430
|
-
case
|
|
442
|
+
case 12:
|
|
431
443
|
_context2.t1 = onBlur;
|
|
432
444
|
if (!_context2.t1) {
|
|
433
|
-
_context2.next =
|
|
445
|
+
_context2.next = 16;
|
|
434
446
|
break;
|
|
435
447
|
}
|
|
436
|
-
_context2.next =
|
|
448
|
+
_context2.next = 16;
|
|
437
449
|
return onBlur.apply(void 0, (0, _toConsumableArray2.default)(_args));
|
|
438
|
-
case
|
|
450
|
+
case 16:
|
|
439
451
|
// 判断属性是否变动
|
|
440
452
|
form.setFieldValue(rowPath, row);
|
|
441
453
|
if (!(0, _lodash.isEqual)(orgRow, row)) {
|
|
@@ -448,23 +460,23 @@ var RenderField = function RenderField(_ref) {
|
|
|
448
460
|
}
|
|
449
461
|
}
|
|
450
462
|
if (!isCell) {
|
|
451
|
-
_context2.next =
|
|
463
|
+
_context2.next = 22;
|
|
452
464
|
break;
|
|
453
465
|
}
|
|
454
|
-
_context2.next =
|
|
466
|
+
_context2.next = 21;
|
|
455
467
|
return form.validateFields([cellName]);
|
|
456
|
-
case
|
|
468
|
+
case 21:
|
|
457
469
|
setState({
|
|
458
470
|
cellNamePath: []
|
|
459
471
|
});
|
|
460
|
-
case
|
|
472
|
+
case 22:
|
|
461
473
|
// 单行编辑时需要 强制更新视图
|
|
462
474
|
setState({
|
|
463
475
|
forceUpdate: {
|
|
464
476
|
d: Date.now()
|
|
465
477
|
}
|
|
466
478
|
});
|
|
467
|
-
case
|
|
479
|
+
case 23:
|
|
468
480
|
case "end":
|
|
469
481
|
return _context2.stop();
|
|
470
482
|
}
|
|
@@ -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)
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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)
|
package/lib/ProForm/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
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
|
|
9
|
+
useWatch: typeof useWatch;
|
|
9
10
|
[key: string]: any;
|
|
10
11
|
}
|
|
11
12
|
declare const ProFormForward: IProForm;
|
package/lib/ProForm/index.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
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;
|
package/lib/ProTable/utils.js
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
435
|
+
result = getLabelByValue(_selectList, newVal);
|
|
425
436
|
}
|
|
426
|
-
var options = findTreeNode(
|
|
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.
|
|
3
|
+
"version": "3.6.6",
|
|
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.
|
|
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",
|