@zat-design/sisyphus-react 3.6.5 → 3.6.6-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/es/ProEditTable/components/RcTable/BaseTable.d.ts +6 -0
  2. package/es/ProEditTable/components/RcTable/BaseTable.js +75 -0
  3. package/es/ProEditTable/components/RcTable/DraggableTable.d.ts +7 -0
  4. package/es/ProEditTable/components/RcTable/DraggableTable.js +90 -0
  5. package/es/ProEditTable/components/RcTable/VirtualTable.d.ts +6 -0
  6. package/es/ProEditTable/components/RcTable/VirtualTable.js +166 -0
  7. package/es/ProEditTable/components/RcTable/index.d.ts +6 -0
  8. package/es/ProEditTable/components/RcTable/index.js +6 -0
  9. package/es/ProEditTable/components/RenderField/index.js +65 -45
  10. package/es/ProEditTable/index.js +32 -55
  11. package/es/ProEditTable/propsType.d.ts +6 -0
  12. package/es/ProEditTable/utils/index.js +1 -1
  13. package/es/ProForm/components/base/InputNumber/index.js +20 -11
  14. package/es/ProForm/index.d.ts +3 -2
  15. package/es/ProForm/index.js +3 -17
  16. package/es/ProForm/utils/useShouldUpdate.js +9 -1
  17. package/es/ProForm/utils/useWatch.d.ts +7 -0
  18. package/es/ProForm/utils/useWatch.js +77 -0
  19. package/es/ProTable/utils.js +1 -1
  20. package/es/ProTree/components/ProTreeSelect/index.js +15 -4
  21. package/lib/ProEditTable/components/RcTable/BaseTable.d.ts +6 -0
  22. package/lib/ProEditTable/components/RcTable/BaseTable.js +81 -0
  23. package/lib/ProEditTable/components/RcTable/DraggableTable.d.ts +7 -0
  24. package/lib/ProEditTable/components/RcTable/DraggableTable.js +96 -0
  25. package/lib/ProEditTable/components/RcTable/VirtualTable.d.ts +6 -0
  26. package/lib/ProEditTable/components/RcTable/VirtualTable.js +172 -0
  27. package/lib/ProEditTable/components/RcTable/index.d.ts +6 -0
  28. package/lib/ProEditTable/components/RcTable/index.js +27 -0
  29. package/lib/ProEditTable/components/RenderField/index.js +65 -45
  30. package/lib/ProEditTable/index.js +31 -52
  31. package/lib/ProEditTable/propsType.d.ts +6 -0
  32. package/lib/ProEditTable/utils/index.js +1 -1
  33. package/lib/ProForm/components/base/InputNumber/index.js +20 -11
  34. package/lib/ProForm/index.d.ts +3 -2
  35. package/lib/ProForm/index.js +2 -16
  36. package/lib/ProForm/utils/useShouldUpdate.js +9 -1
  37. package/lib/ProForm/utils/useWatch.d.ts +7 -0
  38. package/lib/ProForm/utils/useWatch.js +87 -0
  39. package/lib/ProTable/utils.js +1 -1
  40. package/lib/ProTree/components/ProTreeSelect/index.js +15 -4
  41. package/package.json +5 -3
@@ -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'>;
@@ -191,6 +192,11 @@ export interface ProEditTableProps<T = any> extends Omit<TableProps<T>, 'onChang
191
192
  * @default -
192
193
  */
193
194
  draggable?: boolean;
195
+ /**
196
+ * @description 是否开启虚拟列表(scroll,x,y必须为固定值)
197
+ * @default -
198
+ */
199
+ virtual?: boolean;
194
200
  /**
195
201
  * @description 空列表状态时,自定义添加按钮
196
202
  * @default 点击添加
@@ -125,7 +125,7 @@ var getActionColumn = function getActionColumn(config) {
125
125
  case 20:
126
126
  result = _context.sent;
127
127
  case 21:
128
- if (result && type !== 'custom') {
128
+ if (result !== false && type !== 'custom') {
129
129
  _config.actions[type]((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
130
130
  rowName: [].concat((0, _toConsumableArray2.default)(name), [index]),
131
131
  virtualRowName: rowName,
@@ -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.3",
4
4
  "license": "Apache-2.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -58,15 +58,17 @@
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.31",
62
62
  "ahooks": "3.7.4",
63
63
  "antd": "4.24.8",
64
64
  "big.js": "^6.2.1",
65
65
  "classnames": "^2.3.1",
66
66
  "lodash": "^4.17.21",
67
67
  "moment": "^2.29.1",
68
+ "rc-resize-observer": "^1.4.0",
68
69
  "react-resizable": "^3.0.4",
69
- "react-svg": "^15.1.7"
70
+ "react-svg": "^15.1.7",
71
+ "react-window": "^1.8.10"
70
72
  },
71
73
  "peerDependencies": {
72
74
  "antd": "^4.24.8",