ztxkui 3.0.3 → 3.0.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/dist/DemoCom/BasicDemo.js +10 -4
- package/dist/DemoCom/TableDemo.js +19 -6
- package/dist/components/EnhanceSelect/index.js +4 -66
- package/dist/components/InputNumber/input-number.js +2 -2
- package/dist/components/Table/table-enhance-cell.js +9 -1
- package/dist/hooks/useFormatter.d.ts +5 -0
- package/dist/hooks/useFormatter.js +42 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import InputNumber from 'components/InputNumber';
|
|
|
2
2
|
import Tag from 'components/Tag';
|
|
3
3
|
import Input from 'components/Input';
|
|
4
4
|
import { FormList, RangePicker, Button } from '../index';
|
|
5
|
+
import { InputNumber as AntInputNumber } from 'antd';
|
|
5
6
|
import GridList from 'components/business/NewList';
|
|
6
7
|
import { useState } from 'react';
|
|
7
8
|
import './style.scss';
|
|
@@ -53,9 +54,15 @@ function BasicDemo() {
|
|
|
53
54
|
]), rangeValue = _b[0], setRangeValue = _b[1];
|
|
54
55
|
return (React.createElement(React.Fragment, null,
|
|
55
56
|
React.createElement(InputNumber, { value: value, onChange: function (value) {
|
|
56
|
-
console.log(value);
|
|
57
|
+
console.log(value, 1);
|
|
57
58
|
setValue(value);
|
|
58
|
-
},
|
|
59
|
+
}, precision: 4, formatterType: "currency", style: { width: '300px' } }),
|
|
60
|
+
React.createElement(AntInputNumber, { value: value, onChange: function (value) {
|
|
61
|
+
console.log(value, 1);
|
|
62
|
+
setValue(value);
|
|
63
|
+
}, formatter: function (value) {
|
|
64
|
+
return ("$ " + value).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
65
|
+
}, parser: function (value) { return value.replace(/\$\s?|(,*)/g, ''); }, style: { width: '300px' } }),
|
|
59
66
|
React.createElement("div", null,
|
|
60
67
|
React.createElement(Tag, null, "\u4F60\u597D"),
|
|
61
68
|
React.createElement(Tag, { type: "normal" }, "\u4F60\u597D"),
|
|
@@ -117,7 +124,6 @@ function BasicDemo() {
|
|
|
117
124
|
} }, "\u8DF3\u8F6C"),
|
|
118
125
|
React.createElement(Button, { type: "link", onClick: function () {
|
|
119
126
|
console.log(111);
|
|
120
|
-
}, showCopy: true
|
|
121
|
-
React.createElement("span", null, "\u6211\u662F\u4E00\u4E2A\u94FE\u63A51111111111111111111"))));
|
|
127
|
+
}, showCopy: true }, "\u6211\u662F\u4E00\u4E2A\u94FE\u63A51111111111111111111")));
|
|
122
128
|
}
|
|
123
129
|
export default BasicDemo;
|
|
@@ -435,14 +435,15 @@ var list1 = [
|
|
|
435
435
|
var TableDemo = function () {
|
|
436
436
|
var _a = useGetTableRecords(), records = _a.records, setRecords = _a.setRecords;
|
|
437
437
|
var _b = useGetSelectList(), list = _b.list, loading = _b.loading, setLoading = _b.setLoading;
|
|
438
|
+
var _c = useState(false), btnLoading = _c[0], setBtnLoading = _c[1];
|
|
438
439
|
// 表格数据引用
|
|
439
440
|
var recordsRef = useRef([]);
|
|
440
441
|
// 初始化渲染,针对配置了editable、editableConfig的列配置
|
|
441
|
-
var
|
|
442
|
+
var _d = useState(false), firstRender = _d[0], setFirstRender = _d[1];
|
|
442
443
|
// 新增删除行改变
|
|
443
|
-
var
|
|
444
|
+
var _e = useState(false), lengthChange = _e[0], setLengthChange = _e[1];
|
|
444
445
|
// 表格行拖拽改变
|
|
445
|
-
var
|
|
446
|
+
var _f = useState(false), moveChange = _f[0], setMoveChange = _f[1];
|
|
446
447
|
useEffect(function () {
|
|
447
448
|
setFirstRender(true);
|
|
448
449
|
}, []);
|
|
@@ -580,12 +581,21 @@ var TableDemo = function () {
|
|
|
580
581
|
return "\u7B2C" + (index + 1) + "\u884C\uFF0C\u8D85\u51FA\u6700\u5927\u503C\uFF0C\u5DF2\u4FEE\u6539\u6210\u6700\u5927\u503C";
|
|
581
582
|
},
|
|
582
583
|
maxHandle: function (record) {
|
|
583
|
-
return
|
|
584
|
+
return 10000;
|
|
584
585
|
},
|
|
585
586
|
lowMinTip: function (record, index) {
|
|
586
587
|
return "\u7B2C" + (index + 1) + "\u884C\uFF0C\u4F4E\u4E8E\u6700\u5C0F\u503C\uFF0C\u5DF2\u4FEE\u6539\u6210\u6700\u5C0F\u503C";
|
|
587
588
|
},
|
|
588
589
|
precision: 3,
|
|
590
|
+
formatterType: 'currency',
|
|
591
|
+
onBlur: function () {
|
|
592
|
+
setBtnLoading(false);
|
|
593
|
+
console.log('失去焦点了');
|
|
594
|
+
},
|
|
595
|
+
onFocus: function () {
|
|
596
|
+
setBtnLoading(true);
|
|
597
|
+
console.log('获得焦点了');
|
|
598
|
+
},
|
|
589
599
|
},
|
|
590
600
|
},
|
|
591
601
|
{
|
|
@@ -714,7 +724,7 @@ var TableDemo = function () {
|
|
|
714
724
|
},
|
|
715
725
|
];
|
|
716
726
|
// 本地偏好设置相关
|
|
717
|
-
var
|
|
727
|
+
var _g = useState(getStorage('test-table') || []), tableLayout = _g[0], setTableLayout = _g[1];
|
|
718
728
|
var onDynamicChange = useCallback(function (tableLayout) {
|
|
719
729
|
// 剔除调一些可能不可序列化的字段,只保留关键数据
|
|
720
730
|
var newTableLayout = tableLayout.map(function (item) { return ({
|
|
@@ -789,7 +799,10 @@ var TableDemo = function () {
|
|
|
789
799
|
// 表格行拖拽
|
|
790
800
|
onMoveRow: onMoveRowHandle }),
|
|
791
801
|
React.createElement("div", null,
|
|
792
|
-
React.createElement("button", { onClick: function () { return console.log(records); } }, "\u83B7\u53D6\u6570\u636E")
|
|
802
|
+
React.createElement("button", { onClick: function () { return console.log(records); } }, "\u83B7\u53D6\u6570\u636E"),
|
|
803
|
+
React.createElement(Button, { loading: btnLoading, onClick: function () {
|
|
804
|
+
console.log(111);
|
|
805
|
+
} }, "\u70B9\u51FB")),
|
|
793
806
|
React.createElement(Empty, null)));
|
|
794
807
|
};
|
|
795
808
|
function getStorage(key) {
|
|
@@ -28,7 +28,6 @@ import React, { useCallback, useEffect, memo, useRef, useState } from 'react';
|
|
|
28
28
|
import { Select } from 'antd';
|
|
29
29
|
import { useFetchState } from 'ztxkutils/dist/hooks';
|
|
30
30
|
import debounce from 'lodash/debounce';
|
|
31
|
-
import axios from 'axios';
|
|
32
31
|
/**
|
|
33
32
|
* 组件缓存的数据格式,在当前浏览器运行内,能保证是唯一的引用,用来缓存数据用
|
|
34
33
|
* {
|
|
@@ -262,7 +261,6 @@ function EnhanceSelect(_a) {
|
|
|
262
261
|
if (!url || remoteSearch) {
|
|
263
262
|
return;
|
|
264
263
|
}
|
|
265
|
-
var source = null;
|
|
266
264
|
// console.log('TEST: 异步获取');
|
|
267
265
|
if (isCatch) {
|
|
268
266
|
// 如果是走缓存的话,那么先往缓存数据中取,有没有当前数据,如果没有就发请求
|
|
@@ -278,45 +276,24 @@ function EnhanceSelect(_a) {
|
|
|
278
276
|
}
|
|
279
277
|
else {
|
|
280
278
|
// 发送接口请求,并设置缓存数据
|
|
281
|
-
|
|
282
|
-
getDataHandle(request, { url: url, params: params, method: method, timeout: timeout, cancelToken: source.token }, {
|
|
279
|
+
getDataHandle(request, { url: url, params: params, method: method, timeout: timeout }, {
|
|
283
280
|
appointObj: {
|
|
284
281
|
obj: catchData,
|
|
285
282
|
key: catchDataKey,
|
|
286
283
|
},
|
|
287
|
-
successCallback: function () {
|
|
288
|
-
source = null;
|
|
289
|
-
},
|
|
290
|
-
errorCallback: function () {
|
|
291
|
-
source = null;
|
|
292
|
-
},
|
|
293
284
|
});
|
|
294
285
|
}
|
|
295
286
|
}
|
|
296
287
|
}
|
|
297
288
|
else {
|
|
298
289
|
// 直接发送接口请求
|
|
299
|
-
source = axios.CancelToken.source();
|
|
300
290
|
getDataHandle(request, {
|
|
301
291
|
url: url,
|
|
302
292
|
params: params,
|
|
303
293
|
method: method,
|
|
304
294
|
timeout: timeout,
|
|
305
|
-
cancelToken: source.token,
|
|
306
|
-
}, {
|
|
307
|
-
successCallback: function () {
|
|
308
|
-
source = null;
|
|
309
|
-
},
|
|
310
|
-
errorCallback: function () {
|
|
311
|
-
source = null;
|
|
312
|
-
},
|
|
313
295
|
});
|
|
314
296
|
}
|
|
315
|
-
return function () {
|
|
316
|
-
if (source) {
|
|
317
|
-
source.cancel();
|
|
318
|
-
}
|
|
319
|
-
};
|
|
320
297
|
}, [
|
|
321
298
|
url,
|
|
322
299
|
params,
|
|
@@ -335,7 +312,6 @@ function EnhanceSelect(_a) {
|
|
|
335
312
|
if (!url || !remoteSearch) {
|
|
336
313
|
return;
|
|
337
314
|
}
|
|
338
|
-
var source = null;
|
|
339
315
|
// console.log('TEST: 远程搜索');
|
|
340
316
|
// 如果初始化请求已经做过了,那么这个副作用直接返回
|
|
341
317
|
if (firstLoading) {
|
|
@@ -350,39 +326,16 @@ function EnhanceSelect(_a) {
|
|
|
350
326
|
}
|
|
351
327
|
if (!restProps.value) {
|
|
352
328
|
// console.log('第一次请求数据');
|
|
353
|
-
|
|
354
|
-
getRemoteDataHandle('', '', {
|
|
355
|
-
options: { cancelToken: source.token },
|
|
356
|
-
successCallback: function () {
|
|
357
|
-
source = null;
|
|
358
|
-
},
|
|
359
|
-
errorCallback: function () {
|
|
360
|
-
source = null;
|
|
361
|
-
},
|
|
362
|
-
});
|
|
329
|
+
getRemoteDataHandle('', '');
|
|
363
330
|
}
|
|
364
331
|
else {
|
|
365
332
|
if (typeof restProps.value === 'string' ||
|
|
366
333
|
(Array.isArray(restProps.value) && restProps.value.length > 0)) {
|
|
367
334
|
// console.log('第二次请求数据,默认为需要根据主键去请求', restProps.value);
|
|
368
335
|
setFirstLoading(true);
|
|
369
|
-
|
|
370
|
-
getRemoteDataHandle('', restProps.value, {
|
|
371
|
-
options: { cancelToken: source.token },
|
|
372
|
-
successCallback: function () {
|
|
373
|
-
source = null;
|
|
374
|
-
},
|
|
375
|
-
errorCallback: function () {
|
|
376
|
-
source = null;
|
|
377
|
-
},
|
|
378
|
-
});
|
|
336
|
+
getRemoteDataHandle('', restProps.value);
|
|
379
337
|
}
|
|
380
338
|
}
|
|
381
|
-
return function () {
|
|
382
|
-
if (source) {
|
|
383
|
-
source.cancel();
|
|
384
|
-
}
|
|
385
|
-
};
|
|
386
339
|
}, [
|
|
387
340
|
url,
|
|
388
341
|
remoteSearch,
|
|
@@ -396,27 +349,12 @@ function EnhanceSelect(_a) {
|
|
|
396
349
|
if (!url || !remoteSearch) {
|
|
397
350
|
return;
|
|
398
351
|
}
|
|
399
|
-
var source = null;
|
|
400
352
|
// console.log('TEST: 远程搜索');
|
|
401
353
|
// 这种情况不需要启用远程搜索key值
|
|
402
354
|
if (!isRemoteSearchDataKey) {
|
|
403
|
-
|
|
404
|
-
getRemoteDataHandle('', '', {
|
|
405
|
-
options: { cancelToken: source.token },
|
|
406
|
-
successCallback: function () {
|
|
407
|
-
source = null;
|
|
408
|
-
},
|
|
409
|
-
errorCallback: function () {
|
|
410
|
-
source = null;
|
|
411
|
-
},
|
|
412
|
-
});
|
|
355
|
+
getRemoteDataHandle('', '');
|
|
413
356
|
setFirstLoading(true);
|
|
414
357
|
}
|
|
415
|
-
return function () {
|
|
416
|
-
if (source) {
|
|
417
|
-
source.cancel();
|
|
418
|
-
}
|
|
419
|
-
};
|
|
420
358
|
}, [
|
|
421
359
|
url,
|
|
422
360
|
remoteSearch,
|
|
@@ -23,11 +23,11 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
23
23
|
import React, { useRef } from 'react';
|
|
24
24
|
import { InputNumber as AntInputNumber } from 'antd';
|
|
25
25
|
import { message } from '../../index';
|
|
26
|
-
import
|
|
26
|
+
import { getFormatter, } from '../../hooks/useFormatter';
|
|
27
27
|
function InputNumber(props) {
|
|
28
28
|
var formatterType = props.formatterType, currencySymbol = props.currencySymbol, formatter = props.formatter, parser = props.parser, precision = props.precision, max = props.max, min = props.min, onChange = props.onChange, onBlur = props.onBlur, onPressEnter = props.onPressEnter, onOverRange = props.onOverRange, overMaxTip = props.overMaxTip, lowMinTip = props.lowMinTip, restProps = __rest(props, ["formatterType", "currencySymbol", "formatter", "parser", "precision", "max", "min", "onChange", "onBlur", "onPressEnter", "onOverRange", "overMaxTip", "lowMinTip"]);
|
|
29
29
|
var selfValue = useRef();
|
|
30
|
-
var _a =
|
|
30
|
+
var _a = getFormatter(formatterType, currencySymbol), _formatter = _a.formatter, _parser = _a.parser, _precision = _a.precision;
|
|
31
31
|
var onChangeHandle = function (value) {
|
|
32
32
|
selfValue.current = value;
|
|
33
33
|
onChange && onChange(value);
|
|
@@ -180,7 +180,15 @@ var TableEnhanceCell = memo(function (_a) {
|
|
|
180
180
|
}
|
|
181
181
|
else if (type === 'inputNumber') {
|
|
182
182
|
return (React.createElement(Form.Item, { className: "zt-table__enhance-cell", name: dataIndex },
|
|
183
|
-
React.createElement(InputNumber, __assign({ autoComplete: "new-password", maxLength: 50 }, inputNumMaxMin, editableProps, inputNumberRangeTip, { disabled: disabledResult, onPressEnter: function () {
|
|
183
|
+
React.createElement(InputNumber, __assign({ autoComplete: "new-password", maxLength: 50 }, inputNumMaxMin, editableProps, inputNumberRangeTip, { disabled: disabledResult, onPressEnter: function (e) {
|
|
184
|
+
editableProps.onPressEnter && editableProps.onPressEnter(e);
|
|
185
|
+
save({ maxResult: maxResult, minResult: minResult });
|
|
186
|
+
}, onBlur: function (e) {
|
|
187
|
+
editableProps.onBlur && editableProps.onBlur(e);
|
|
188
|
+
save({ maxResult: maxResult, minResult: minResult });
|
|
189
|
+
}, onFocus: function (e) {
|
|
190
|
+
editableProps.onFocus(e);
|
|
191
|
+
} }))));
|
|
184
192
|
}
|
|
185
193
|
else if (type === 'textArea') {
|
|
186
194
|
return (React.createElement(Form.Item, { className: "zt-table__enhance-cell", name: dataIndex },
|
|
@@ -16,4 +16,9 @@ declare function useFormatter(formatterType: IFormatterType | undefined, currenc
|
|
|
16
16
|
parser: IParserFuc;
|
|
17
17
|
precision: number;
|
|
18
18
|
};
|
|
19
|
+
export declare function getFormatter(formatterType: IFormatterType | undefined, currencySymbol?: ICurrencySymbol): {
|
|
20
|
+
formatter: IFormatterFuc;
|
|
21
|
+
parser: IParserFuc;
|
|
22
|
+
precision: number;
|
|
23
|
+
};
|
|
19
24
|
export default useFormatter;
|
|
@@ -20,7 +20,7 @@ function useFormatter(formatterType, currencySymbol) {
|
|
|
20
20
|
// /\$\s?|(,*)/g
|
|
21
21
|
return value
|
|
22
22
|
? // eslint-disable-next-line no-eval
|
|
23
|
-
value.replace(eval("
|
|
23
|
+
value.replace(eval("/${currencySymbol}\\s?|(,*)/g"), '')
|
|
24
24
|
: Number(value);
|
|
25
25
|
};
|
|
26
26
|
setFormatter(function () {
|
|
@@ -64,4 +64,45 @@ function useFormatter(formatterType, currencySymbol) {
|
|
|
64
64
|
precision: precision,
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
+
export function getFormatter(formatterType, currencySymbol) {
|
|
68
|
+
if (currencySymbol === void 0) { currencySymbol = '$'; }
|
|
69
|
+
if (formatterType === 'currency') {
|
|
70
|
+
var formatterFn = function (value) {
|
|
71
|
+
return ("" + value).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
72
|
+
};
|
|
73
|
+
var parserFn = function (value) { return value.replace(/(,*)/g, ''); };
|
|
74
|
+
return {
|
|
75
|
+
formatter: formatterFn,
|
|
76
|
+
parser: parserFn,
|
|
77
|
+
precision: MONEY_PRECISION,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (formatterType === 'percent') {
|
|
81
|
+
var formatterFn = function (value) { return value + "%"; };
|
|
82
|
+
var parserFn = function (value) {
|
|
83
|
+
return value ? value.replace('%', '') : Number(value);
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
formatter: formatterFn,
|
|
87
|
+
parser: parserFn,
|
|
88
|
+
precision: QUANTITY_PRECISION,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (formatterType === 'thousands') {
|
|
92
|
+
var formatterFn = function (value) { return value + "\u2030"; };
|
|
93
|
+
var parserFn = function (value) {
|
|
94
|
+
return value ? value.replace('‰', '') : Number(value);
|
|
95
|
+
};
|
|
96
|
+
return {
|
|
97
|
+
formatter: formatterFn,
|
|
98
|
+
parser: parserFn,
|
|
99
|
+
precision: QUANTITY_PRECISION,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
formatter: undefined,
|
|
104
|
+
parser: undefined,
|
|
105
|
+
precision: undefined,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
67
108
|
export default useFormatter;
|