@hw-component/table 1.2.6 → 1.2.7
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/.eslintcache +1 -1
- package/es/HTableBody/Options/utils.d.ts +1 -0
- package/es/HTableBody/hooks.js +5 -7
- package/es/TableConfig.d.ts +3 -1
- package/es/TableConfig.js +5 -2
- package/es/modal.d.ts +4 -3
- package/es/render/TagsComponent.d.ts +20 -0
- package/es/render/TagsComponent.js +123 -0
- package/es/render/config.d.ts +9 -0
- package/es/render/config.js +117 -0
- package/es/render/index.d.ts +5 -0
- package/es/render/index.js +24 -0
- package/lib/HTableBody/Options/utils.d.ts +1 -0
- package/lib/HTableBody/hooks.js +5 -7
- package/lib/TableConfig.d.ts +3 -1
- package/lib/TableConfig.js +5 -2
- package/lib/modal.d.ts +4 -3
- package/lib/render/TagsComponent.d.ts +20 -0
- package/lib/render/TagsComponent.js +126 -0
- package/lib/render/config.d.ts +9 -0
- package/lib/render/config.js +120 -0
- package/lib/render/index.d.ts +5 -0
- package/lib/render/index.js +27 -0
- package/package.json +2 -1
- package/src/components/HTableBody/hooks.tsx +4 -7
- package/src/components/Table.tsx +1 -1
- package/src/components/TableConfig.tsx +6 -4
- package/src/components/modal.ts +6 -3
- package/src/components/render/TagsComponent.tsx +91 -0
- package/src/components/render/config.tsx +75 -0
- package/src/components/render/index.tsx +20 -0
- package/src/pages/Table/index.tsx +72 -2
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _Object$keys = require('@babel/runtime-corejs3/core-js/object/keys');
|
|
6
|
+
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js/object/get-own-property-symbols');
|
|
7
|
+
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/filter');
|
|
8
|
+
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js/object/get-own-property-descriptor');
|
|
9
|
+
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/for-each');
|
|
10
|
+
var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js/object/get-own-property-descriptors');
|
|
11
|
+
var _Object$defineProperties = require('@babel/runtime-corejs3/core-js/object/define-properties');
|
|
12
|
+
var _Object$defineProperty = require('@babel/runtime-corejs3/core-js/object/define-property');
|
|
13
|
+
var _Symbol$toPrimitive = require('@babel/runtime-corejs3/core-js/symbol/to-primitive');
|
|
14
|
+
var _typeof = require('@babel/runtime-corejs3/helpers/typeof');
|
|
15
|
+
var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
|
|
16
|
+
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
17
|
+
require('core-js/modules/es.number.constructor.js');
|
|
18
|
+
require('core-js/modules/es.object.to-string.js');
|
|
19
|
+
require('core-js/modules/es.regexp.to-string.js');
|
|
20
|
+
var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/slice');
|
|
21
|
+
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/map');
|
|
22
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
23
|
+
var antd = require('antd');
|
|
24
|
+
var React = require('react');
|
|
25
|
+
|
|
26
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
27
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[_Symbol$toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
28
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
29
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context3 = ownKeys(Object(t))).call(_context3, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
30
|
+
var getTooltipProps = function getTooltipProps(title, tooltip) {
|
|
31
|
+
if (!tooltip) {
|
|
32
|
+
return {
|
|
33
|
+
title: null
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (tooltip === true) {
|
|
37
|
+
return {
|
|
38
|
+
title: title
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return _objectSpread(_objectSpread({}, tooltip), {}, {
|
|
42
|
+
title: title
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var TagsComponent = function TagsComponent(props) {
|
|
46
|
+
var data = props.data,
|
|
47
|
+
closable = props.closable,
|
|
48
|
+
_onClose = props.onClose,
|
|
49
|
+
color = props.color,
|
|
50
|
+
icon = props.icon,
|
|
51
|
+
_props$fieldNames = props.fieldNames,
|
|
52
|
+
fieldNames = _props$fieldNames === void 0 ? {} : _props$fieldNames,
|
|
53
|
+
tooltip = props.tooltip,
|
|
54
|
+
tableInstance = props.tableInstance,
|
|
55
|
+
maxLen = props.maxLen;
|
|
56
|
+
var _fieldNames$label = fieldNames.label,
|
|
57
|
+
label = _fieldNames$label === void 0 ? "label" : _fieldNames$label,
|
|
58
|
+
_fieldNames$value = fieldNames.value,
|
|
59
|
+
value = _fieldNames$value === void 0 ? "value" : _fieldNames$value;
|
|
60
|
+
var _useMemo = React.useMemo(function () {
|
|
61
|
+
if (!maxLen || !data) {
|
|
62
|
+
return {
|
|
63
|
+
tagData: data
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
var tagData = _sliceInstanceProperty(data).call(data, 0, maxLen);
|
|
67
|
+
var moreTag = _sliceInstanceProperty(data).call(data, maxLen);
|
|
68
|
+
return {
|
|
69
|
+
tagData: tagData,
|
|
70
|
+
moreTag: moreTag
|
|
71
|
+
};
|
|
72
|
+
}, [data, maxLen]),
|
|
73
|
+
tagData = _useMemo.tagData,
|
|
74
|
+
moreTag = _useMemo.moreTag;
|
|
75
|
+
var moreLen = moreTag === null || moreTag === void 0 ? void 0 : moreTag.length;
|
|
76
|
+
return jsxRuntime.jsxs(antd.Row, {
|
|
77
|
+
gutter: [8, 8],
|
|
78
|
+
children: [tagData === null || tagData === void 0 ? void 0 : _mapInstanceProperty(tagData).call(tagData, function (tagItem, index) {
|
|
79
|
+
var _context;
|
|
80
|
+
var tagProps = {
|
|
81
|
+
closable: closable,
|
|
82
|
+
onClose: _onClose,
|
|
83
|
+
color: color,
|
|
84
|
+
icon: icon
|
|
85
|
+
};
|
|
86
|
+
var indexKey = index.toString();
|
|
87
|
+
if (typeof tagItem === "string") {
|
|
88
|
+
var _tooltipProps = getTooltipProps(tagItem, tooltip);
|
|
89
|
+
return jsxRuntime.jsx(antd.Tooltip, _objectSpread(_objectSpread({}, _tooltipProps), {}, {
|
|
90
|
+
children: jsxRuntime.jsx(antd.Tag, _objectSpread(_objectSpread({}, tagProps), {}, {
|
|
91
|
+
onClose: function onClose(e) {
|
|
92
|
+
e.preventDefault();
|
|
93
|
+
_onClose === null || _onClose === void 0 || _onClose(indexKey, tableInstance);
|
|
94
|
+
},
|
|
95
|
+
children: tagItem
|
|
96
|
+
}), indexKey)
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
var tagLabel = tagItem[label],
|
|
100
|
+
tagValue = tagItem[value],
|
|
101
|
+
props = _objectWithoutProperties(tagItem, _mapInstanceProperty(_context = [label, value]).call(_context, _toPropertyKey));
|
|
102
|
+
var tooltipProps = getTooltipProps(tagLabel, tooltip);
|
|
103
|
+
var cuTagProps = _objectSpread(_objectSpread({}, tagProps), props);
|
|
104
|
+
var cuKey = tagValue || indexKey;
|
|
105
|
+
return jsxRuntime.jsx(antd.Tooltip, _objectSpread(_objectSpread({}, tooltipProps), {}, {
|
|
106
|
+
children: jsxRuntime.jsx(antd.Tag, _objectSpread(_objectSpread({}, cuTagProps), {}, {
|
|
107
|
+
onClose: function onClose(e) {
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
cuTagProps === null || cuTagProps === void 0 || cuTagProps.onClose(cuKey, tableInstance);
|
|
110
|
+
},
|
|
111
|
+
children: tagLabel
|
|
112
|
+
}), cuKey)
|
|
113
|
+
}));
|
|
114
|
+
}), !moreLen ? null : jsxRuntime.jsx(antd.Popover, {
|
|
115
|
+
content: jsxRuntime.jsx(TagsComponent, _objectSpread(_objectSpread({}, props), {}, {
|
|
116
|
+
maxLen: null
|
|
117
|
+
})),
|
|
118
|
+
children: jsxRuntime.jsxs(antd.Tag, {
|
|
119
|
+
children: ["...\u7B49", data.length, "\u4E2A"]
|
|
120
|
+
})
|
|
121
|
+
})]
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
exports.default = TagsComponent;
|
|
126
|
+
// powered by h
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ConfigItemModal, HTableInstance } from "@/components/modal";
|
|
2
|
+
declare const _default: {
|
|
3
|
+
date: (config: ConfigItemModal, itemData: any) => string;
|
|
4
|
+
tags: (config: ConfigItemModal, itemData: any, index: number, tableInstance: HTableInstance) => "-" | JSX.Element;
|
|
5
|
+
copy: (config: ConfigItemModal, itemData: any) => "-" | JSX.Element;
|
|
6
|
+
link: (config: ConfigItemModal, itemData: any) => JSX.Element;
|
|
7
|
+
text: (config: ConfigItemModal, itemData: any) => JSX.Element;
|
|
8
|
+
};
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _Object$keys = require('@babel/runtime-corejs3/core-js/object/keys');
|
|
6
|
+
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js/object/get-own-property-symbols');
|
|
7
|
+
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/filter');
|
|
8
|
+
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js/object/get-own-property-descriptor');
|
|
9
|
+
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/for-each');
|
|
10
|
+
var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js/object/get-own-property-descriptors');
|
|
11
|
+
var _Object$defineProperties = require('@babel/runtime-corejs3/core-js/object/define-properties');
|
|
12
|
+
var _Object$defineProperty = require('@babel/runtime-corejs3/core-js/object/define-property');
|
|
13
|
+
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
14
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
15
|
+
var moment = require('moment');
|
|
16
|
+
var TagsComponent = require('./TagsComponent.js');
|
|
17
|
+
var copy = require('copy-to-clipboard');
|
|
18
|
+
var antd = require('antd');
|
|
19
|
+
|
|
20
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
21
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
22
|
+
var Link = antd.Typography.Link,
|
|
23
|
+
Paragraph = antd.Typography.Paragraph;
|
|
24
|
+
var getTableVal = function getTableVal(config, itemData) {
|
|
25
|
+
var dataIndex = config.dataIndex;
|
|
26
|
+
var tableDataIndex = dataIndex;
|
|
27
|
+
return itemData[tableDataIndex];
|
|
28
|
+
};
|
|
29
|
+
var dateRender = function dateRender(config, itemData) {
|
|
30
|
+
var _config$valueTypeProp = config.valueTypeProps,
|
|
31
|
+
valueTypeProps = _config$valueTypeProp === void 0 ? {} : _config$valueTypeProp;
|
|
32
|
+
var tableVal = getTableVal(config, itemData);
|
|
33
|
+
var _valueTypeProps$forma = valueTypeProps.format,
|
|
34
|
+
format = _valueTypeProps$forma === void 0 ? "YYYY-MM-DD HH:mm:ss" : _valueTypeProps$forma,
|
|
35
|
+
_valueTypeProps$timeS = valueTypeProps.timeStampType,
|
|
36
|
+
timeStampType = _valueTypeProps$timeS === void 0 ? "X" : _valueTypeProps$timeS;
|
|
37
|
+
if (!tableVal) {
|
|
38
|
+
return "-";
|
|
39
|
+
}
|
|
40
|
+
var time = moment(tableVal, timeStampType);
|
|
41
|
+
return time.format(format);
|
|
42
|
+
};
|
|
43
|
+
var tagsRender = function tagsRender(config, itemData, index, tableInstance) {
|
|
44
|
+
var _config$valueTypeProp2 = config.valueTypeProps,
|
|
45
|
+
valueTypeProps = _config$valueTypeProp2 === void 0 ? {} : _config$valueTypeProp2;
|
|
46
|
+
var tableVal = getTableVal(config, itemData);
|
|
47
|
+
if (!tableVal) {
|
|
48
|
+
return "-";
|
|
49
|
+
}
|
|
50
|
+
return jsxRuntime.jsx(TagsComponent.default, _objectSpread(_objectSpread({
|
|
51
|
+
data: tableVal
|
|
52
|
+
}, valueTypeProps), {}, {
|
|
53
|
+
tableInstance: tableInstance
|
|
54
|
+
}));
|
|
55
|
+
};
|
|
56
|
+
var copyRender = function copyRender(config, itemData) {
|
|
57
|
+
var _config$valueTypeProp3 = config.valueTypeProps,
|
|
58
|
+
valueTypeProps = _config$valueTypeProp3 === void 0 ? {} : _config$valueTypeProp3,
|
|
59
|
+
title = config.title,
|
|
60
|
+
titleStr = config.titleStr;
|
|
61
|
+
var successMsg = valueTypeProps.successMsg,
|
|
62
|
+
text = valueTypeProps.text;
|
|
63
|
+
var msg = successMsg || "\u590D\u5236".concat(title || titleStr, "\u6210\u529F!");
|
|
64
|
+
var tableVal = getTableVal(config, itemData);
|
|
65
|
+
if (!tableVal) {
|
|
66
|
+
return "-";
|
|
67
|
+
}
|
|
68
|
+
var cpText = text;
|
|
69
|
+
if (typeof text === "function") {
|
|
70
|
+
cpText = text(itemData);
|
|
71
|
+
}
|
|
72
|
+
return jsxRuntime.jsx(Link, {
|
|
73
|
+
onClick: function onClick() {
|
|
74
|
+
copy(cpText || tableVal);
|
|
75
|
+
antd.message.success(msg);
|
|
76
|
+
},
|
|
77
|
+
children: tableVal
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
var linkRender = function linkRender(config, itemData) {
|
|
81
|
+
var _config$valueTypeProp4 = config.valueTypeProps,
|
|
82
|
+
valueTypeProps = _config$valueTypeProp4 === void 0 ? {} : _config$valueTypeProp4;
|
|
83
|
+
var href = valueTypeProps.href,
|
|
84
|
+
_valueTypeProps$targe = valueTypeProps.target,
|
|
85
|
+
target = _valueTypeProps$targe === void 0 ? "_blank" : _valueTypeProps$targe;
|
|
86
|
+
var tableVal = getTableVal(config, itemData);
|
|
87
|
+
var hrefUrl = href;
|
|
88
|
+
if (typeof href === "function") {
|
|
89
|
+
hrefUrl = href(itemData);
|
|
90
|
+
}
|
|
91
|
+
return jsxRuntime.jsx(Link, {
|
|
92
|
+
href: hrefUrl || tableVal,
|
|
93
|
+
target: target,
|
|
94
|
+
children: tableVal
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
var textRender = function textRender(config, itemData) {
|
|
98
|
+
var _config$valueTypeProp5 = config.valueTypeProps,
|
|
99
|
+
valueTypeProps = _config$valueTypeProp5 === void 0 ? {} : _config$valueTypeProp5;
|
|
100
|
+
var addonBefore = valueTypeProps.addonBefore,
|
|
101
|
+
addonAfter = valueTypeProps.addonAfter,
|
|
102
|
+
type = valueTypeProps.type,
|
|
103
|
+
ellipsis = valueTypeProps.ellipsis;
|
|
104
|
+
var tableVal = getTableVal(config, itemData);
|
|
105
|
+
return jsxRuntime.jsxs(Paragraph, {
|
|
106
|
+
type: type,
|
|
107
|
+
ellipsis: ellipsis,
|
|
108
|
+
children: [addonBefore, tableVal, addonAfter]
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
var config = {
|
|
112
|
+
date: dateRender,
|
|
113
|
+
tags: tagsRender,
|
|
114
|
+
copy: copyRender,
|
|
115
|
+
link: linkRender,
|
|
116
|
+
text: textRender
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
exports.default = config;
|
|
120
|
+
// powered by h
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ConfigItemModal, HTableInstance } from "@/components/modal";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { ValueTypeConfigModal } from '../modal';
|
|
4
|
+
declare const _default: (item: ConfigItemModal, tableInstance: HTableInstance, valueTypeConfig: ValueTypeConfigModal) => (dom: React.ReactNode, itemData: any, index: number) => any;
|
|
5
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var config = require('./config.js');
|
|
6
|
+
|
|
7
|
+
var configRender = (function (item, tableInstance, valueTypeConfig) {
|
|
8
|
+
var render = item.render,
|
|
9
|
+
_item$valueType = item.valueType,
|
|
10
|
+
valueType = _item$valueType === void 0 ? "" : _item$valueType;
|
|
11
|
+
return function (dom, itemData, index) {
|
|
12
|
+
var valType = valueType;
|
|
13
|
+
if (render) {
|
|
14
|
+
return render(dom, itemData, index, tableInstance);
|
|
15
|
+
}
|
|
16
|
+
if (valueTypeConfig[valType]) {
|
|
17
|
+
return valueTypeConfig[valType](item, itemData, index, tableInstance);
|
|
18
|
+
}
|
|
19
|
+
if (config.default[valType]) {
|
|
20
|
+
return config.default[valType](item, itemData, index, tableInstance);
|
|
21
|
+
}
|
|
22
|
+
return dom;
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
exports.default = configRender;
|
|
27
|
+
// powered by h
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hw-component/table",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.7",
|
|
4
4
|
"description": "基于antd二次开发table组件",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"table"
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"@hw-component/form": "1.5.2",
|
|
35
35
|
"ahooks": "2.10.9",
|
|
36
36
|
"antd": "4.20.7",
|
|
37
|
+
"copy-to-clipboard": "3.3.1",
|
|
37
38
|
"core-js": "3",
|
|
38
39
|
"react": "17.0.0",
|
|
39
40
|
"react-dom": "17.0.2",
|
|
@@ -12,6 +12,8 @@ import type { SizeType } from "antd/lib/config-provider/SizeContext";
|
|
|
12
12
|
import type { ColumnsStateType } from "@ant-design/pro-table/es/typing";
|
|
13
13
|
import type { ColumnsState } from "@ant-design/pro-table/es/container";
|
|
14
14
|
import { mkChangeValue, outColSetting } from "./utils";
|
|
15
|
+
import configRender from "../render";
|
|
16
|
+
import {useHTableConfigContext} from "@/components/TableConfig";
|
|
15
17
|
const rowSelectionCol = (rowSelection?: HRowSelection) => {
|
|
16
18
|
const { allPageCheck, onChange, getCheckboxProps } = rowSelection || {};
|
|
17
19
|
return {
|
|
@@ -39,6 +41,7 @@ const rowSelectionCol = (rowSelection?: HRowSelection) => {
|
|
|
39
41
|
};
|
|
40
42
|
export const useCols = ({ configData, rowSelection, table }: HTableProps) => {
|
|
41
43
|
const [cols, setCols] = useState<ConfigDataModal>([]);
|
|
44
|
+
const {valueTypeConfig}=useHTableConfigContext({});
|
|
42
45
|
const changeConfigData = (data: ConfigDataModal) => {
|
|
43
46
|
const colsArray = data.filter((item) => {
|
|
44
47
|
return !item.hideInTable;
|
|
@@ -47,15 +50,9 @@ export const useCols = ({ configData, rowSelection, table }: HTableProps) => {
|
|
|
47
50
|
colsArray.splice(0, 0, rowSelectionCol(rowSelection) as any);
|
|
48
51
|
}
|
|
49
52
|
return colsArray.map((item) => {
|
|
50
|
-
const { render } = item;
|
|
51
53
|
return {
|
|
52
54
|
...item,
|
|
53
|
-
render:
|
|
54
|
-
if (!render) {
|
|
55
|
-
return dom;
|
|
56
|
-
}
|
|
57
|
-
return render(dom, itemData, index, table as HTableInstance);
|
|
58
|
-
},
|
|
55
|
+
render:configRender(item,(table as HTableInstance),valueTypeConfig)
|
|
59
56
|
};
|
|
60
57
|
});
|
|
61
58
|
};
|
package/src/components/Table.tsx
CHANGED
|
@@ -8,7 +8,7 @@ import type { HTableProps } from "./modal";
|
|
|
8
8
|
import useReq from "./hooks/useReq";
|
|
9
9
|
import useDispatch from "./hooks/useDispatch";
|
|
10
10
|
import { useState } from "react";
|
|
11
|
-
import {useClassName} from "
|
|
11
|
+
import {useClassName} from "./hooks";
|
|
12
12
|
export default ({
|
|
13
13
|
request,
|
|
14
14
|
configData,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useContext } from "react";
|
|
2
|
-
import type { HTableInstance } from "
|
|
2
|
+
import type { HTableInstance ,ValueTypeConfigModal} from "./modal";
|
|
3
3
|
|
|
4
4
|
interface HTableConfigContextModal {
|
|
5
5
|
emptyRender?: (table: HTableInstance) => React.ReactNode;
|
|
@@ -7,6 +7,7 @@ interface HTableConfigContextModal {
|
|
|
7
7
|
headerStyle?:React.CSSProperties;
|
|
8
8
|
tableStyle?:React.CSSProperties;
|
|
9
9
|
paginationStyle?:React.CSSProperties;
|
|
10
|
+
valueTypeConfig?:ValueTypeConfigModal;
|
|
10
11
|
}
|
|
11
12
|
export const HTableConfigContext =
|
|
12
13
|
React.createContext<HTableConfigContextModal | null>(null);
|
|
@@ -16,10 +17,10 @@ export const useHTableConfigContext = ({
|
|
|
16
17
|
emptyRender,
|
|
17
18
|
errorRender,
|
|
18
19
|
headerStyle,
|
|
19
|
-
|
|
20
|
+
tableStyle,
|
|
20
21
|
paginationStyle
|
|
21
22
|
}: HTableConfigContextModal) => {
|
|
22
|
-
const { errorRender: configErrorRender, emptyRender: configEmptyRender,headerStyle:configHeaderStyle,tableStyle:configTableStyle,paginationStyle:configPaginationStyle } =
|
|
23
|
+
const { errorRender: configErrorRender, emptyRender: configEmptyRender,headerStyle:configHeaderStyle,tableStyle:configTableStyle,paginationStyle:configPaginationStyle,valueTypeConfig={} } =
|
|
23
24
|
useContext(HTableConfigContext) || {};
|
|
24
25
|
|
|
25
26
|
return {
|
|
@@ -27,7 +28,8 @@ export const useHTableConfigContext = ({
|
|
|
27
28
|
emptyRender: emptyRender || configEmptyRender,
|
|
28
29
|
headerStyle:headerStyle||configHeaderStyle,
|
|
29
30
|
tableStyle:tableStyle||configTableStyle,
|
|
30
|
-
paginationStyle:paginationStyle||configPaginationStyle
|
|
31
|
+
paginationStyle:paginationStyle||configPaginationStyle,
|
|
32
|
+
valueTypeConfig
|
|
31
33
|
};
|
|
32
34
|
};
|
|
33
35
|
const Index: React.FC<HTableConfigContextModal> = ({ children, ...props }) => {
|
package/src/components/modal.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { ModalProps } from "antd";
|
|
|
10
10
|
import type { TableProps } from "antd/lib/table";
|
|
11
11
|
import type { AffixProps } from "antd/lib/affix";
|
|
12
12
|
import type { OptionModal } from "./HTableBody";
|
|
13
|
+
import {GetRowKey} from "rc-table/lib/interface";
|
|
13
14
|
|
|
14
15
|
export interface RowObj {
|
|
15
16
|
keys?: React.Key[];
|
|
@@ -43,6 +44,7 @@ interface HColumns extends Omit<ProColumns, "render" | "title"> {
|
|
|
43
44
|
) => React.ReactNode;
|
|
44
45
|
rowSelectionTitle?: boolean;
|
|
45
46
|
title?: string | React.ReactNode;
|
|
47
|
+
valueTypeProps?:Record<string, any>
|
|
46
48
|
}
|
|
47
49
|
interface BcItemModal {
|
|
48
50
|
childrenDataIndex?: ConfigItemModal[] | string[];
|
|
@@ -66,7 +68,6 @@ export type actionFn = (...arg) => void;
|
|
|
66
68
|
export interface RowSelectionOuter {
|
|
67
69
|
allPageCheck?: boolean;
|
|
68
70
|
}
|
|
69
|
-
type RowKeyFn=(data:any,index:number)=>string;
|
|
70
71
|
export type HRowSelection = RowSelectionOuter &
|
|
71
72
|
(TableProps<any>["rowSelection"] & {
|
|
72
73
|
alwaysShowAlert?: boolean;
|
|
@@ -74,7 +75,7 @@ export type HRowSelection = RowSelectionOuter &
|
|
|
74
75
|
export interface HTableProps
|
|
75
76
|
extends Omit<
|
|
76
77
|
ProTableProps<any, any>,
|
|
77
|
-
"request" | "dataSource"
|
|
78
|
+
"request" | "dataSource"| "rowSelection"
|
|
78
79
|
> {
|
|
79
80
|
request?: (params: ParamsModal) => Promise<ResultModal>;
|
|
80
81
|
configData: ConfigDataModal;
|
|
@@ -97,7 +98,6 @@ export interface HTableProps
|
|
|
97
98
|
manual?: boolean;
|
|
98
99
|
dataSource?: ResultModal;
|
|
99
100
|
paginationStyle?: React.CSSProperties;
|
|
100
|
-
rowKey?: string|RowKeyFn;
|
|
101
101
|
allPageCheck?: boolean;
|
|
102
102
|
rowSelection?: HRowSelection | false;
|
|
103
103
|
affixProps?: AffixProps | false;
|
|
@@ -153,3 +153,6 @@ export interface ModalTableProps extends ModalProps {
|
|
|
153
153
|
configData?: HTableProps["configData"];
|
|
154
154
|
request?: HTableProps["request"];
|
|
155
155
|
}
|
|
156
|
+
|
|
157
|
+
export type ValueTypeConfigRenderFn=(config:ConfigItemModal,itemData:any,index:number,tableInstance:HTableInstance)=>React.ReactNode;
|
|
158
|
+
export type ValueTypeConfigModal=Record<string, ValueTypeConfigRenderFn>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import {Row, Tag,Tooltip,Popover} from "antd";
|
|
2
|
+
import React, {useMemo} from "react";
|
|
3
|
+
import {TooltipProps} from "antd/lib/tooltip";
|
|
4
|
+
import {HTableInstance} from "@/components/modal";
|
|
5
|
+
type CloseFn=(key:string,tableInstance?:HTableInstance)=>void;
|
|
6
|
+
interface IProps {
|
|
7
|
+
data:any[];
|
|
8
|
+
closable?:boolean;
|
|
9
|
+
onClose?:CloseFn;
|
|
10
|
+
color?:string;
|
|
11
|
+
icon?:React.ReactNode;
|
|
12
|
+
tooltip?:boolean|TooltipProps;
|
|
13
|
+
fieldNames?:{label?:string,value?:string};
|
|
14
|
+
tableInstance?:HTableInstance;
|
|
15
|
+
maxLen?:number|null;
|
|
16
|
+
}
|
|
17
|
+
const getTooltipProps=(title:string,tooltip?:boolean|TooltipProps):TooltipProps=>{
|
|
18
|
+
if (!tooltip){
|
|
19
|
+
return {
|
|
20
|
+
title:null
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
if (tooltip===true){
|
|
24
|
+
return {
|
|
25
|
+
title
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
...tooltip,
|
|
30
|
+
title,
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const TagsComponent=(props:IProps)=>{
|
|
34
|
+
const {data,closable,onClose,color,icon,fieldNames={},tooltip,tableInstance,maxLen}=props;
|
|
35
|
+
const {label="label",value="value"}=fieldNames;
|
|
36
|
+
const {tagData,moreTag}=useMemo(()=>{
|
|
37
|
+
if (!maxLen||!data){
|
|
38
|
+
return {
|
|
39
|
+
tagData:data
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const tagData=data.slice(0,maxLen);
|
|
43
|
+
const moreTag=data.slice(maxLen);
|
|
44
|
+
return {
|
|
45
|
+
tagData,
|
|
46
|
+
moreTag
|
|
47
|
+
}
|
|
48
|
+
},[data,maxLen]);
|
|
49
|
+
const moreLen=moreTag?.length;
|
|
50
|
+
|
|
51
|
+
return <Row gutter={[8,8]}>
|
|
52
|
+
{tagData?.map((tagItem, index)=>{
|
|
53
|
+
const tagProps={
|
|
54
|
+
closable,
|
|
55
|
+
onClose,
|
|
56
|
+
color,
|
|
57
|
+
icon
|
|
58
|
+
}
|
|
59
|
+
const indexKey=index.toString();
|
|
60
|
+
if (typeof tagItem==="string"){
|
|
61
|
+
const tooltipProps=getTooltipProps(tagItem,tooltip);
|
|
62
|
+
return <Tooltip {...tooltipProps}>
|
|
63
|
+
<Tag key={indexKey} {...tagProps} onClose={(e)=>{
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
onClose?.(indexKey,tableInstance);
|
|
66
|
+
}}>{tagItem}</Tag>
|
|
67
|
+
</Tooltip>
|
|
68
|
+
}
|
|
69
|
+
const {[label]:tagLabel,[value]:tagValue,...props}=tagItem;
|
|
70
|
+
const tooltipProps=getTooltipProps(tagLabel,tooltip);
|
|
71
|
+
const cuTagProps={
|
|
72
|
+
...tagProps,
|
|
73
|
+
...props
|
|
74
|
+
}
|
|
75
|
+
const cuKey=tagValue||indexKey;
|
|
76
|
+
return <Tooltip {...tooltipProps}>
|
|
77
|
+
<Tag key={cuKey} {...cuTagProps} onClose={(e)=>{
|
|
78
|
+
e.preventDefault();
|
|
79
|
+
cuTagProps?.onClose(cuKey,tableInstance);
|
|
80
|
+
}}>{tagLabel}</Tag>
|
|
81
|
+
</Tooltip>
|
|
82
|
+
})}
|
|
83
|
+
{!moreLen?null:
|
|
84
|
+
<Popover content={<TagsComponent {...props} maxLen={null} />}>
|
|
85
|
+
<Tag>...等{data.length}个</Tag>
|
|
86
|
+
</Popover>
|
|
87
|
+
}
|
|
88
|
+
</Row>
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export default TagsComponent;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import moment from 'moment'
|
|
2
|
+
import {ConfigItemModal, HTableInstance} from "@/components/modal";
|
|
3
|
+
import TagsComponent from "./TagsComponent";
|
|
4
|
+
import copy from 'copy-to-clipboard';
|
|
5
|
+
import {message, Space, Typography} from 'antd';
|
|
6
|
+
const {Link,Paragraph}=Typography;
|
|
7
|
+
const getTableVal=(config:ConfigItemModal,itemData:any)=>{
|
|
8
|
+
const {dataIndex} = config;
|
|
9
|
+
const tableDataIndex=(dataIndex as string);
|
|
10
|
+
return itemData[tableDataIndex];
|
|
11
|
+
}
|
|
12
|
+
const dateRender=(config:ConfigItemModal,itemData:any)=>{
|
|
13
|
+
const {valueTypeProps={}}=config;
|
|
14
|
+
const tableVal=getTableVal(config,itemData);
|
|
15
|
+
const {format="YYYY-MM-DD HH:mm:ss",timeStampType="X"}=valueTypeProps;
|
|
16
|
+
if (!tableVal){
|
|
17
|
+
return "-"
|
|
18
|
+
}
|
|
19
|
+
const time=moment(tableVal,timeStampType);
|
|
20
|
+
return time.format(format);
|
|
21
|
+
}
|
|
22
|
+
const tagsRender=(config:ConfigItemModal,itemData:any,index:number,tableInstance:HTableInstance)=>{
|
|
23
|
+
const {valueTypeProps={}}=config;
|
|
24
|
+
const tableVal=getTableVal(config,itemData);
|
|
25
|
+
if (!tableVal){
|
|
26
|
+
return "-"
|
|
27
|
+
}
|
|
28
|
+
return <TagsComponent data={tableVal} {...valueTypeProps} tableInstance={tableInstance}/>
|
|
29
|
+
}
|
|
30
|
+
const copyRender=(config:ConfigItemModal,itemData:any)=>{
|
|
31
|
+
const {valueTypeProps={},title,titleStr}=config;
|
|
32
|
+
const {successMsg,text}=valueTypeProps;
|
|
33
|
+
const msg=successMsg||`复制${title||titleStr}成功!`;
|
|
34
|
+
const tableVal=getTableVal(config,itemData);
|
|
35
|
+
if (!tableVal){
|
|
36
|
+
return "-"
|
|
37
|
+
}
|
|
38
|
+
let cpText=text;
|
|
39
|
+
if (typeof text==="function"){
|
|
40
|
+
cpText=text(itemData);
|
|
41
|
+
}
|
|
42
|
+
return <Link onClick={()=>{
|
|
43
|
+
copy(cpText||tableVal);
|
|
44
|
+
message.success(msg);
|
|
45
|
+
}}>
|
|
46
|
+
{tableVal}
|
|
47
|
+
</Link>
|
|
48
|
+
}
|
|
49
|
+
const linkRender=(config:ConfigItemModal,itemData:any)=>{
|
|
50
|
+
const {valueTypeProps={},}=config;
|
|
51
|
+
const {href,target="_blank"}=valueTypeProps;
|
|
52
|
+
const tableVal=getTableVal(config,itemData);
|
|
53
|
+
let hrefUrl=href;
|
|
54
|
+
if (typeof href==="function"){
|
|
55
|
+
hrefUrl=href(itemData);
|
|
56
|
+
}
|
|
57
|
+
return <Link href={hrefUrl||tableVal} target={target}>
|
|
58
|
+
{tableVal}
|
|
59
|
+
</Link>
|
|
60
|
+
}
|
|
61
|
+
const textRender=(config:ConfigItemModal,itemData:any)=>{
|
|
62
|
+
const {valueTypeProps={},}=config;
|
|
63
|
+
const {addonBefore,addonAfter,type,ellipsis}=valueTypeProps;
|
|
64
|
+
const tableVal=getTableVal(config,itemData);
|
|
65
|
+
return <Paragraph type={type} ellipsis={ellipsis}>
|
|
66
|
+
{addonBefore}{tableVal}{addonAfter}
|
|
67
|
+
</Paragraph>
|
|
68
|
+
}
|
|
69
|
+
export default {
|
|
70
|
+
date:dateRender,
|
|
71
|
+
tags:tagsRender,
|
|
72
|
+
copy:copyRender,
|
|
73
|
+
link:linkRender,
|
|
74
|
+
text:textRender
|
|
75
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ConfigItemModal, HTableInstance} from "@/components/modal";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import config from './config';
|
|
4
|
+
import {ValueTypeConfigModal} from '../modal'
|
|
5
|
+
export default (item:ConfigItemModal,tableInstance:HTableInstance,valueTypeConfig:ValueTypeConfigModal)=>{
|
|
6
|
+
const { render ,valueType=""} = item;
|
|
7
|
+
return (dom: React.ReactNode, itemData: any, index: number)=>{
|
|
8
|
+
const valType=(valueType as string);
|
|
9
|
+
if (render){
|
|
10
|
+
return render(dom, itemData, index, tableInstance);
|
|
11
|
+
}
|
|
12
|
+
if (valueTypeConfig[valType]){
|
|
13
|
+
return valueTypeConfig[valType](item,itemData,index,tableInstance);
|
|
14
|
+
}
|
|
15
|
+
if (config[valType]){
|
|
16
|
+
return config[valType](item,itemData,index,tableInstance);
|
|
17
|
+
}
|
|
18
|
+
return dom;
|
|
19
|
+
}
|
|
20
|
+
}
|