@hw-component/table 1.9.39 → 1.9.41
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/HeaderTitle/index.js +9 -5
- package/es/HTableBody/index.d.ts +1 -1
- package/es/HTableHeader/hooks/config.d.ts +1 -1
- package/es/HTableHeader/hooks/useHeaderDefaultProps.d.ts +1 -1
- package/es/HTableHeader/hooks/useHideMoreTitle.d.ts +3 -3
- package/es/hooks/useCurrentTable.js +4 -1
- package/es/index.css +1 -0
- package/es/modal.d.ts +1 -1
- package/es/render/Text.d.ts +1 -0
- package/lib/HTableBody/HeaderTitle/index.js +9 -5
- package/lib/HTableBody/index.d.ts +1 -1
- package/lib/HTableHeader/hooks/config.d.ts +1 -1
- package/lib/HTableHeader/hooks/useHeaderDefaultProps.d.ts +1 -1
- package/lib/HTableHeader/hooks/useHideMoreTitle.d.ts +3 -3
- package/lib/hooks/useCurrentTable.js +4 -1
- package/lib/index.css +1 -0
- package/lib/modal.d.ts +1 -1
- package/lib/render/Text.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/DialogTable/hooks.ts +10 -10
- package/src/components/HTableBody/HeaderTitle/index.tsx +9 -5
- package/src/components/HTableBody/index.tsx +4 -3
- package/src/components/HTableHeader/hooks/config.tsx +35 -35
- package/src/components/HTableHeader/hooks/useHeaderDefaultProps.ts +33 -25
- package/src/components/HTableHeader/hooks/useHideMoreTitle.tsx +146 -152
- package/src/components/HTableHeader/index.tsx +21 -7
- package/src/components/hooks/useCurrentTable.ts +4 -1
- package/src/components/index.less +2 -0
- package/src/components/modal.ts +1 -1
- package/src/components/render/config.tsx +3 -3
- package/src/pages/DwTable/index.tsx +7 -5
- package/src/pages/Table/index.tsx +15 -10
|
@@ -1,174 +1,168 @@
|
|
|
1
|
-
import {FormConfigDataItemProviderModal, IHeaderProps} from "../modal";
|
|
2
|
-
import {useEffect, useState} from "react";
|
|
3
|
-
import {HItemProps} from "@hw-component/form/es/Form/modal";
|
|
4
|
-
import {defaultSubItem, sizeObj} from "./config";
|
|
5
|
-
import {useHTableContext} from "../../context";
|
|
6
|
-
import {useClassName} from "../../hooks";
|
|
7
|
-
import {HTableInstance} from "../../modal";
|
|
8
|
-
import {ColProps} from "antd";
|
|
9
|
-
import {renderData} from "../defaultFormRender";
|
|
1
|
+
import type { FormConfigDataItemProviderModal, IHeaderProps } from "../modal";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import type { HItemProps } from "@hw-component/form/es/Form/modal";
|
|
4
|
+
import { defaultSubItem, sizeObj } from "./config";
|
|
5
|
+
import { useHTableContext } from "../../context";
|
|
6
|
+
import { useClassName } from "../../hooks";
|
|
7
|
+
import type { HTableInstance } from "../../modal";
|
|
8
|
+
import type { ColProps } from "antd";
|
|
9
|
+
import { renderData } from "../defaultFormRender";
|
|
10
10
|
|
|
11
11
|
const formConfigDataItemProvider = (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
12
|
+
{
|
|
13
|
+
searchType,
|
|
14
|
+
title,
|
|
15
|
+
name,
|
|
16
|
+
dataIndex,
|
|
17
|
+
itemProps = {},
|
|
18
|
+
searchRender,
|
|
19
|
+
childrenDataIndex,
|
|
20
|
+
showSearch,
|
|
21
|
+
hideInTable,
|
|
22
|
+
align,
|
|
23
|
+
searchLabel,
|
|
24
|
+
titleStr,
|
|
25
|
+
...props
|
|
26
|
+
}: FormConfigDataItemProviderModal,
|
|
27
|
+
table: HTableInstance
|
|
28
28
|
): HItemProps => {
|
|
29
|
-
|
|
29
|
+
const { allowClear = true } = itemProps as any;
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
return {
|
|
32
|
+
...props,
|
|
33
|
+
itemProps: {
|
|
34
|
+
...itemProps,
|
|
35
|
+
allowClear,
|
|
36
|
+
},
|
|
37
|
+
label: searchLabel || titleStr || title,
|
|
38
|
+
type: searchType,
|
|
39
|
+
name: name || (dataIndex as string),
|
|
40
|
+
render: (item, node, form) => {
|
|
41
|
+
if (searchRender) {
|
|
42
|
+
return searchRender(item, node, form, table);
|
|
43
|
+
}
|
|
44
|
+
const defaultRender = renderData[searchType || ""];
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
return defaultRender ? defaultRender(item) : node;
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
const getCuSpanMaxNum = (searchSpan: ColProps = { span: 6 }) => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
const clientWidth = document.documentElement.clientWidth;
|
|
53
|
+
const keys = Object.keys(sizeObj);
|
|
54
|
+
const index = keys.findIndex((value) => {
|
|
55
|
+
const { min = 0, max = Number.MAX_VALUE } = sizeObj[value];
|
|
56
|
+
return clientWidth >= min && clientWidth < max;
|
|
57
|
+
});
|
|
58
|
+
const cuKey = keys[index];
|
|
59
|
+
const cuSpan = searchSpan[cuKey] || searchSpan.span;
|
|
60
|
+
return 24 / cuSpan;
|
|
61
61
|
};
|
|
62
62
|
|
|
63
|
-
|
|
64
63
|
const mkNewConfig = ({ configData = [], table }: IHeaderProps) => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
64
|
+
let subConfigData: HItemProps | undefined;
|
|
65
|
+
const realConfigData: HItemProps[] = [];
|
|
66
|
+
configData.forEach((value) => {
|
|
67
|
+
const { searchType, showSearch } = value;
|
|
68
|
+
if (!showSearch) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
if (searchType === "submit") {
|
|
72
|
+
subConfigData = formConfigDataItemProvider(
|
|
73
|
+
value,
|
|
74
|
+
table as HTableInstance
|
|
75
|
+
);
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
realConfigData.push(
|
|
79
|
+
formConfigDataItemProvider(value, table as HTableInstance)
|
|
80
|
+
);
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
realConfigData,
|
|
84
|
+
subConfigData,
|
|
85
|
+
};
|
|
87
86
|
};
|
|
88
87
|
|
|
89
88
|
const filterHideFormItem = (
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
configData: HItemProps[],
|
|
90
|
+
className: string,
|
|
91
|
+
searchSpan?: ColProps
|
|
93
92
|
) => {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return {
|
|
99
|
-
lessData: configData,
|
|
100
|
-
hideData: [],
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
const index = startIndex === 0 ? 1 : startIndex;
|
|
104
|
-
const lessData = configData.slice(0, index);
|
|
105
|
-
const bigData = configData.slice(index);
|
|
106
|
-
const hideData = bigData.map((value) => {
|
|
107
|
-
return {
|
|
108
|
-
...value,
|
|
109
|
-
className,
|
|
110
|
-
};
|
|
111
|
-
});
|
|
93
|
+
const maxNum = getCuSpanMaxNum(searchSpan);
|
|
94
|
+
const len = configData.length;
|
|
95
|
+
const startIndex = maxNum - 1;
|
|
96
|
+
if (len <= startIndex) {
|
|
112
97
|
return {
|
|
113
|
-
|
|
114
|
-
|
|
98
|
+
lessData: configData,
|
|
99
|
+
hideData: [],
|
|
115
100
|
};
|
|
101
|
+
}
|
|
102
|
+
const index = startIndex === 0 ? 1 : startIndex;
|
|
103
|
+
const lessData = configData.slice(0, index);
|
|
104
|
+
const bigData = configData.slice(index);
|
|
105
|
+
const hideData = bigData.map((value) => {
|
|
106
|
+
return {
|
|
107
|
+
...value,
|
|
108
|
+
className,
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
return {
|
|
112
|
+
lessData,
|
|
113
|
+
hideData,
|
|
114
|
+
};
|
|
116
115
|
};
|
|
117
116
|
|
|
118
|
-
const useDefaultOpen=()=>{
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return {
|
|
123
|
-
headerOpen,
|
|
124
|
-
setHeaderOpen
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
export default ({
|
|
128
|
-
searchSpan,
|
|
129
|
-
configData,
|
|
130
|
-
table,
|
|
131
|
-
}: IHeaderProps) => {
|
|
117
|
+
const useDefaultOpen = () => {
|
|
118
|
+
const [open, setOpen] = useState(false);
|
|
119
|
+
const { headerOpen = open, setHeaderOpen = setOpen } = useHTableContext();
|
|
132
120
|
|
|
133
|
-
|
|
134
|
-
|
|
121
|
+
return {
|
|
122
|
+
headerOpen,
|
|
123
|
+
setHeaderOpen,
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
export default ({ searchSpan, configData, table }: IHeaderProps) => {
|
|
127
|
+
const [formConfigData, setFormConfigData] = useState<HItemProps[]>([]);
|
|
128
|
+
const [subData, setSubData] = useState<HItemProps>(defaultSubItem as any);
|
|
135
129
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
130
|
+
const { headerOpen, setHeaderOpen } = useDefaultOpen();
|
|
131
|
+
const className = useClassName("hw-table-header-item-hide");
|
|
132
|
+
const mkNewFn = () => {
|
|
133
|
+
const { realConfigData, subConfigData } = mkNewConfig({
|
|
134
|
+
searchSpan,
|
|
135
|
+
configData,
|
|
136
|
+
table,
|
|
137
|
+
});
|
|
138
|
+
const changeClassName = headerOpen ? "" : className;
|
|
139
|
+
const { lessData, hideData } = filterHideFormItem(
|
|
140
|
+
realConfigData,
|
|
141
|
+
changeClassName,
|
|
142
|
+
searchSpan
|
|
143
|
+
);
|
|
144
|
+
if (subConfigData) {
|
|
145
|
+
setSubData(subConfigData);
|
|
146
|
+
}
|
|
147
|
+
setHeaderOpen((oldVal) => {
|
|
148
|
+
if (hideData.length === 0) {
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
if (typeof oldVal === "undefined") {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
return oldVal;
|
|
155
|
+
});
|
|
156
|
+
setFormConfigData([...lessData, ...hideData]);
|
|
157
|
+
};
|
|
158
|
+
useEffect(() => {
|
|
159
|
+
mkNewFn();
|
|
160
|
+
}, [configData, searchSpan, headerOpen]);
|
|
161
|
+
useEffect(() => {
|
|
162
|
+
window.addEventListener("resize", mkNewFn);
|
|
163
|
+
return () => {
|
|
164
|
+
window.removeEventListener("resize", mkNewFn);
|
|
163
165
|
};
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
useEffect(() => {
|
|
168
|
-
window.addEventListener("resize", mkNewFn);
|
|
169
|
-
return () => {
|
|
170
|
-
window.removeEventListener("resize", mkNewFn);
|
|
171
|
-
};
|
|
172
|
-
}, [configData, searchSpan, headerOpen]);
|
|
173
|
-
return [...formConfigData, subData];
|
|
174
|
-
};
|
|
166
|
+
}, [configData, searchSpan, headerOpen]);
|
|
167
|
+
return [...formConfigData, subData];
|
|
168
|
+
};
|
|
@@ -6,8 +6,7 @@ import type { IHeaderProps } from "./modal";
|
|
|
6
6
|
import useHeaderDefaultProps from "./hooks/useHeaderDefaultProps";
|
|
7
7
|
import { HeaderProvider } from "./Context";
|
|
8
8
|
import { useHTableConfigContext } from "../TableConfig";
|
|
9
|
-
import useHideMoreTitle from
|
|
10
|
-
|
|
9
|
+
import useHideMoreTitle from "./hooks/useHideMoreTitle";
|
|
11
10
|
|
|
12
11
|
const defaultSearchSpan = {
|
|
13
12
|
xxl: 4,
|
|
@@ -23,11 +22,24 @@ export default ({
|
|
|
23
22
|
onReset,
|
|
24
23
|
...props
|
|
25
24
|
}: IHeaderProps) => {
|
|
26
|
-
const {
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
const {
|
|
26
|
+
tableLabelWidth,
|
|
27
|
+
tableInstance,
|
|
28
|
+
subOnFinish,
|
|
29
|
+
submitLoading,
|
|
30
|
+
tableHideLabel,
|
|
31
|
+
headerConfigData,
|
|
32
|
+
} = useHeaderDefaultProps(props);
|
|
33
|
+
const { form } = tableInstance;
|
|
34
|
+
const nConfigData = useHideMoreTitle({
|
|
35
|
+
searchSpan,
|
|
36
|
+
configData: headerConfigData,
|
|
37
|
+
table: tableInstance,
|
|
38
|
+
});
|
|
29
39
|
const className = useClassName("hw-table-header");
|
|
30
|
-
const { headerStyle: defaultHeaderStyle } = useHTableConfigContext({
|
|
40
|
+
const { headerStyle: defaultHeaderStyle } = useHTableConfigContext({
|
|
41
|
+
headerStyle,
|
|
42
|
+
});
|
|
31
43
|
return (
|
|
32
44
|
<Card
|
|
33
45
|
style={defaultHeaderStyle}
|
|
@@ -43,7 +55,9 @@ export default ({
|
|
|
43
55
|
dismissOnPressEnter={false}
|
|
44
56
|
gutter={[20, 0]}
|
|
45
57
|
initialValues={initValues}
|
|
46
|
-
hideLabel={
|
|
58
|
+
hideLabel={
|
|
59
|
+
typeof tableHideLabel === "undefined" ? true : tableHideLabel
|
|
60
|
+
}
|
|
47
61
|
configData={nConfigData}
|
|
48
62
|
form={form}
|
|
49
63
|
colon
|
|
@@ -36,7 +36,10 @@ export default ({
|
|
|
36
36
|
resultTable.table.getSelectedRowData = () => {
|
|
37
37
|
return selectedRowData;
|
|
38
38
|
};
|
|
39
|
-
resultTable.table.getTableSourceData = () => {
|
|
39
|
+
resultTable.table.getTableSourceData = (full) => {
|
|
40
|
+
if (full){
|
|
41
|
+
return dataSource;
|
|
42
|
+
}
|
|
40
43
|
return dataSource?.records;
|
|
41
44
|
};
|
|
42
45
|
return resultTable as HTableInstance;
|
package/src/components/modal.ts
CHANGED
|
@@ -125,7 +125,7 @@ export interface TableInstance {
|
|
|
125
125
|
reloadWithParams: (params?: ParamsModal) => Promise<any>;
|
|
126
126
|
getParams: () => any;
|
|
127
127
|
getSelectedRowData: () => RowObj;
|
|
128
|
-
getTableSourceData: () => any;
|
|
128
|
+
getTableSourceData: (full?:boolean) => any;
|
|
129
129
|
getColSettingKeys: () => ColCheckResultKeys;
|
|
130
130
|
}
|
|
131
131
|
export interface HTableInstance {
|
|
@@ -69,9 +69,9 @@ const linkRender = (config: ConfigItemModal, itemData: any) => {
|
|
|
69
69
|
if (typeof href === "function") {
|
|
70
70
|
hrefUrl = href(itemData);
|
|
71
71
|
}
|
|
72
|
-
const relUrl=hrefUrl||tableVal;
|
|
73
|
-
if (!relUrl){
|
|
74
|
-
return
|
|
72
|
+
const relUrl = hrefUrl || tableVal;
|
|
73
|
+
if (!relUrl) {
|
|
74
|
+
return "-";
|
|
75
75
|
}
|
|
76
76
|
return (
|
|
77
77
|
<Link
|
|
@@ -112,12 +112,14 @@ const Test = () => {
|
|
|
112
112
|
<Button
|
|
113
113
|
onClick={() => {
|
|
114
114
|
dialogTable1.show({
|
|
115
|
-
request:()=>{
|
|
116
|
-
return Promise.resolve({})
|
|
115
|
+
request: () => {
|
|
116
|
+
return Promise.resolve({});
|
|
117
117
|
},
|
|
118
|
-
configData:[
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
configData: [
|
|
119
|
+
{
|
|
120
|
+
title: "测试",
|
|
121
|
+
},
|
|
122
|
+
],
|
|
121
123
|
});
|
|
122
124
|
}}
|
|
123
125
|
>
|
|
@@ -2,7 +2,8 @@ import {
|
|
|
2
2
|
HTable,
|
|
3
3
|
useHTable,
|
|
4
4
|
HTableConfig,
|
|
5
|
-
HTableHeaderSubBtn,
|
|
5
|
+
HTableHeaderSubBtn,
|
|
6
|
+
HTableHeader,
|
|
6
7
|
} from "@/components";
|
|
7
8
|
import { Button, Card, Tooltip, Typography, Tag, Row } from "antd";
|
|
8
9
|
import { HFormConfigProvider } from "@hw-component/form";
|
|
@@ -158,7 +159,7 @@ export default () => {
|
|
|
158
159
|
return (
|
|
159
160
|
<HFormConfigProvider>
|
|
160
161
|
<div>
|
|
161
|
-
|
|
162
|
+
<HTableHeader configData={[]} />
|
|
162
163
|
<div
|
|
163
164
|
onClick={() => {
|
|
164
165
|
console.log(hTable.table.getTableSourceData());
|
|
@@ -204,14 +205,18 @@ export default () => {
|
|
|
204
205
|
return <div>ffff</div>;
|
|
205
206
|
}}
|
|
206
207
|
headerTitle={
|
|
207
|
-
<
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
208
|
+
<div>
|
|
209
|
+
<div style={{width:"2000px",backgroundColor:'red'}}>
|
|
210
|
+
<Button
|
|
211
|
+
type={"primary"}
|
|
212
|
+
onClick={() => {
|
|
213
|
+
console.log(hTable.table.getColSettingKeys());
|
|
214
|
+
}}
|
|
215
|
+
>
|
|
216
|
+
操作
|
|
217
|
+
</Button>
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
215
220
|
}
|
|
216
221
|
reload={(params) => {
|
|
217
222
|
const { size, current } = params;
|