@hw-component/table 1.9.37 → 1.9.39
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/HTableHeader/hooks/config.d.ts +37 -0
- package/es/HTableHeader/hooks/config.js +46 -0
- package/es/HTableHeader/hooks/useHeaderDefaultProps.d.ts +10 -0
- package/es/HTableHeader/hooks/useHeaderDefaultProps.js +37 -0
- package/es/HTableHeader/hooks/useHideMoreTitle.d.ts +4 -0
- package/es/HTableHeader/{hooks.js → hooks/useHideMoreTitle.js} +56 -81
- package/es/HTableHeader/index.d.ts +1 -1
- package/es/HTableHeader/index.js +14 -22
- package/es/render/Text.d.ts +0 -1
- package/lib/HTableHeader/hooks/config.d.ts +37 -0
- package/lib/HTableHeader/hooks/config.js +48 -0
- package/lib/HTableHeader/hooks/useHeaderDefaultProps.d.ts +10 -0
- package/lib/HTableHeader/hooks/useHeaderDefaultProps.js +40 -0
- package/lib/HTableHeader/hooks/useHideMoreTitle.d.ts +4 -0
- package/lib/HTableHeader/{hooks.js → hooks/useHideMoreTitle.js} +58 -81
- package/lib/HTableHeader/index.d.ts +1 -1
- package/lib/HTableHeader/index.js +15 -23
- package/lib/render/Text.d.ts +0 -1
- package/package.json +1 -1
- package/src/components/HTableHeader/hooks/config.tsx +42 -0
- package/src/components/HTableHeader/hooks/useHeaderDefaultProps.ts +29 -0
- package/src/components/HTableHeader/hooks/useHideMoreTitle.tsx +174 -0
- package/src/components/HTableHeader/index.tsx +11 -36
- package/src/components/modal.ts +0 -1
- package/src/pages/DwTable/index.tsx +8 -1
- package/src/pages/Table/index.tsx +2 -4
- package/es/HTableHeader/hooks.d.ts +0 -3
- package/lib/HTableHeader/hooks.d.ts +0 -3
- package/src/components/HTableHeader/hooks.tsx +0 -196
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import type { FormConfigDataItemProviderModal, IHeaderProps } from "./modal";
|
|
2
|
-
import React, { useEffect, useState } from "react";
|
|
3
|
-
import type { HItemProps } from "@hw-component/form/es/Form/modal";
|
|
4
|
-
import type { ColProps } from "antd";
|
|
5
|
-
import { useClassName } from "../hooks";
|
|
6
|
-
import type { HFormInstance } from "@hw-component/form/es/Form/modal";
|
|
7
|
-
import { DefaultSubComponent } from "../HTableHeader/defaultSubComponent";
|
|
8
|
-
import { useHTableContext } from "../context";
|
|
9
|
-
import type { HTableInstance } from "../modal";
|
|
10
|
-
import { renderData } from "./defaultFormRender";
|
|
11
|
-
const sizeObj = {
|
|
12
|
-
xl: {
|
|
13
|
-
min: 1200,
|
|
14
|
-
max: 1600,
|
|
15
|
-
},
|
|
16
|
-
xxl: {
|
|
17
|
-
min: 1600,
|
|
18
|
-
},
|
|
19
|
-
lg: {
|
|
20
|
-
min: 992,
|
|
21
|
-
max: 1200,
|
|
22
|
-
},
|
|
23
|
-
md: {
|
|
24
|
-
min: 768,
|
|
25
|
-
max: 992,
|
|
26
|
-
},
|
|
27
|
-
sm: {
|
|
28
|
-
min: 576,
|
|
29
|
-
max: 768,
|
|
30
|
-
},
|
|
31
|
-
xs: {
|
|
32
|
-
max: 576,
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
const defaultSubItem = {
|
|
36
|
-
type: "submit",
|
|
37
|
-
itemProps: {
|
|
38
|
-
position: "end",
|
|
39
|
-
},
|
|
40
|
-
style: {
|
|
41
|
-
padding: 0,
|
|
42
|
-
marginLeft: -20,
|
|
43
|
-
},
|
|
44
|
-
render: (item: HItemProps, node: React.ReactNode, form: HFormInstance) => {
|
|
45
|
-
return <DefaultSubComponent form={form} />;
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
const getCuSpanMaxNum = (searchSpan: ColProps = { span: 6 }) => {
|
|
50
|
-
const clientWidth = document.documentElement.clientWidth;
|
|
51
|
-
const keys = Object.keys(sizeObj);
|
|
52
|
-
const index = keys.findIndex((value) => {
|
|
53
|
-
const { min = 0, max = Number.MAX_VALUE } = sizeObj[value];
|
|
54
|
-
return clientWidth >= min && clientWidth < max;
|
|
55
|
-
});
|
|
56
|
-
const cuKey = keys[index];
|
|
57
|
-
const cuSpan = searchSpan[cuKey] || searchSpan.span;
|
|
58
|
-
return 24 / cuSpan;
|
|
59
|
-
};
|
|
60
|
-
const formConfigDataItemProvider = (
|
|
61
|
-
{
|
|
62
|
-
searchType,
|
|
63
|
-
title,
|
|
64
|
-
name,
|
|
65
|
-
dataIndex,
|
|
66
|
-
itemProps = {},
|
|
67
|
-
searchRender,
|
|
68
|
-
childrenDataIndex,
|
|
69
|
-
showSearch,
|
|
70
|
-
hideInTable,
|
|
71
|
-
align,
|
|
72
|
-
searchLabel,
|
|
73
|
-
titleStr,
|
|
74
|
-
...props
|
|
75
|
-
}: FormConfigDataItemProviderModal,
|
|
76
|
-
table: HTableInstance
|
|
77
|
-
): HItemProps => {
|
|
78
|
-
const { allowClear = true } = itemProps as any;
|
|
79
|
-
|
|
80
|
-
return {
|
|
81
|
-
...props,
|
|
82
|
-
itemProps: {
|
|
83
|
-
...itemProps,
|
|
84
|
-
allowClear,
|
|
85
|
-
},
|
|
86
|
-
label: searchLabel || titleStr || title,
|
|
87
|
-
type: searchType,
|
|
88
|
-
name: name || (dataIndex as string),
|
|
89
|
-
render: (item, node, form) => {
|
|
90
|
-
if (searchRender) {
|
|
91
|
-
return searchRender(item, node, form, table);
|
|
92
|
-
}
|
|
93
|
-
const defaultRender = renderData[searchType || ""];
|
|
94
|
-
|
|
95
|
-
return defaultRender ? defaultRender(item) : node;
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
const mkNewConfig = ({ configData = [], table }: IHeaderProps) => {
|
|
100
|
-
let subConfigData: HItemProps | undefined;
|
|
101
|
-
const realConfigData: HItemProps[] = [];
|
|
102
|
-
configData.forEach((value) => {
|
|
103
|
-
const { searchType, showSearch } = value;
|
|
104
|
-
if (!showSearch) {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
if (searchType === "submit") {
|
|
108
|
-
subConfigData = formConfigDataItemProvider(
|
|
109
|
-
value,
|
|
110
|
-
table as HTableInstance
|
|
111
|
-
);
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
realConfigData.push(
|
|
115
|
-
formConfigDataItemProvider(value, table as HTableInstance)
|
|
116
|
-
);
|
|
117
|
-
});
|
|
118
|
-
return {
|
|
119
|
-
realConfigData,
|
|
120
|
-
subConfigData,
|
|
121
|
-
};
|
|
122
|
-
};
|
|
123
|
-
const filterHideFormItem = (
|
|
124
|
-
configData: HItemProps[],
|
|
125
|
-
className: string,
|
|
126
|
-
searchSpan?: ColProps
|
|
127
|
-
) => {
|
|
128
|
-
const maxNum = getCuSpanMaxNum(searchSpan);
|
|
129
|
-
const len = configData.length;
|
|
130
|
-
const startIndex = maxNum - 1;
|
|
131
|
-
if (len <= startIndex) {
|
|
132
|
-
return {
|
|
133
|
-
lessData: configData,
|
|
134
|
-
hideData: [],
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
const index = startIndex === 0 ? 1 : startIndex;
|
|
138
|
-
const lessData = configData.slice(0, index);
|
|
139
|
-
const bigData = configData.slice(index);
|
|
140
|
-
const hideData = bigData.map((value) => {
|
|
141
|
-
return {
|
|
142
|
-
...value,
|
|
143
|
-
className,
|
|
144
|
-
};
|
|
145
|
-
});
|
|
146
|
-
return {
|
|
147
|
-
lessData,
|
|
148
|
-
hideData,
|
|
149
|
-
};
|
|
150
|
-
};
|
|
151
|
-
export const useHideMoreTitle = ({
|
|
152
|
-
searchSpan,
|
|
153
|
-
configData,
|
|
154
|
-
table,
|
|
155
|
-
}: IHeaderProps) => {
|
|
156
|
-
const [formConfigData, setFormConfigData] = useState<HItemProps[]>([]);
|
|
157
|
-
const [subData, setSubData] = useState<HItemProps>(defaultSubItem as any);
|
|
158
|
-
const { headerOpen, setHeaderOpen } = useHTableContext();
|
|
159
|
-
const className = useClassName("hw-table-header-item-hide");
|
|
160
|
-
const mkNewFn = () => {
|
|
161
|
-
const { realConfigData, subConfigData } = mkNewConfig({
|
|
162
|
-
searchSpan,
|
|
163
|
-
configData,
|
|
164
|
-
table,
|
|
165
|
-
});
|
|
166
|
-
const changeClassName = headerOpen ? "" : className;
|
|
167
|
-
const { lessData, hideData } = filterHideFormItem(
|
|
168
|
-
realConfigData,
|
|
169
|
-
changeClassName,
|
|
170
|
-
searchSpan
|
|
171
|
-
);
|
|
172
|
-
if (subConfigData) {
|
|
173
|
-
setSubData(subConfigData);
|
|
174
|
-
}
|
|
175
|
-
setHeaderOpen((oldVal) => {
|
|
176
|
-
if (hideData.length === 0) {
|
|
177
|
-
return undefined;
|
|
178
|
-
}
|
|
179
|
-
if (typeof oldVal === "undefined") {
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
182
|
-
return oldVal;
|
|
183
|
-
});
|
|
184
|
-
setFormConfigData([...lessData, ...hideData]);
|
|
185
|
-
};
|
|
186
|
-
useEffect(() => {
|
|
187
|
-
mkNewFn();
|
|
188
|
-
}, [configData, searchSpan, headerOpen]);
|
|
189
|
-
useEffect(() => {
|
|
190
|
-
window.addEventListener("resize", mkNewFn);
|
|
191
|
-
return () => {
|
|
192
|
-
window.removeEventListener("resize", mkNewFn);
|
|
193
|
-
};
|
|
194
|
-
}, [configData, searchSpan, headerOpen]);
|
|
195
|
-
return [...formConfigData, subData];
|
|
196
|
-
};
|