next-helios-fe 1.4.36 → 1.4.38
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/package.json
CHANGED
@@ -55,12 +55,14 @@ interface TableProps {
|
|
55
55
|
id: number | string;
|
56
56
|
[key: string]: any;
|
57
57
|
}[];
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
58
|
+
onChange?: (e: {
|
59
|
+
target: {
|
60
|
+
checked: {
|
61
|
+
id: number | string;
|
62
|
+
[key: string]: any;
|
63
|
+
}[];
|
64
|
+
};
|
65
|
+
}) => void;
|
64
66
|
};
|
65
67
|
actionColumn?: (e: any) => React.ReactNode;
|
66
68
|
}
|
@@ -78,6 +80,7 @@ export const Table: TableComponentProps = ({
|
|
78
80
|
actionColumn,
|
79
81
|
}) => {
|
80
82
|
const paginationRef = useRef<HTMLDivElement>(null);
|
83
|
+
const [excludedColumn, setExcludedColumn] = useState<string[]>([]);
|
81
84
|
const [search, setSearch] = useState<string>("");
|
82
85
|
const [filter, setFilter] = useState<any[]>([]);
|
83
86
|
const [categoryFilter, setCategoryFilter] = useState<any[]>([]);
|
@@ -93,7 +96,6 @@ export const Table: TableComponentProps = ({
|
|
93
96
|
column: "",
|
94
97
|
order: "",
|
95
98
|
});
|
96
|
-
const [excluded, setExcluded] = useState<string[]>([]);
|
97
99
|
|
98
100
|
const height =
|
99
101
|
options?.height === "fit"
|
@@ -107,21 +109,20 @@ export const Table: TableComponentProps = ({
|
|
107
109
|
: "flex-1 h-full";
|
108
110
|
|
109
111
|
useEffect(() => {
|
110
|
-
if (checkbox?.checked) {
|
112
|
+
if (checkbox?.checked && checkbox?.checked?.length !== 0) {
|
111
113
|
setSelected(checkbox?.checked);
|
112
114
|
}
|
113
115
|
}, [checkbox]);
|
114
116
|
|
115
117
|
useEffect(() => {
|
116
|
-
|
117
|
-
checkbox
|
118
|
-
|
118
|
+
checkbox?.onChange &&
|
119
|
+
checkbox.onChange({
|
120
|
+
target: {
|
121
|
+
checked: selected,
|
122
|
+
},
|
123
|
+
});
|
119
124
|
}, [selected]);
|
120
125
|
|
121
|
-
useEffect(() => {
|
122
|
-
setPage(1);
|
123
|
-
}, [search, filter, categoryFilter]);
|
124
|
-
|
125
126
|
useEffect(() => {
|
126
127
|
setFilter(
|
127
128
|
header.map((item) => {
|
@@ -180,12 +181,14 @@ export const Table: TableComponentProps = ({
|
|
180
181
|
if (search === "") {
|
181
182
|
return item;
|
182
183
|
} else if (
|
183
|
-
header
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
184
|
+
header
|
185
|
+
.filter((item) => !excludedColumn.includes(item.key))
|
186
|
+
.some((headerItem) => {
|
187
|
+
return item[headerItem.key as keyof typeof item]
|
188
|
+
?.toString()
|
189
|
+
?.toLowerCase()
|
190
|
+
?.includes(search.toLowerCase());
|
191
|
+
})
|
189
192
|
) {
|
190
193
|
return item;
|
191
194
|
}
|
@@ -200,6 +203,7 @@ export const Table: TableComponentProps = ({
|
|
200
203
|
})
|
201
204
|
.filter((item) => {
|
202
205
|
return header
|
206
|
+
.filter((item) => !excludedColumn.includes(item.key))
|
203
207
|
.filter((headerItem) => headerItem.type === "category")
|
204
208
|
.every((headerItem) => {
|
205
209
|
return categoryFilter.includes(
|
@@ -229,8 +233,18 @@ export const Table: TableComponentProps = ({
|
|
229
233
|
}
|
230
234
|
}, [header, data, filter, categoryFilter, search, sortBy]);
|
231
235
|
|
236
|
+
useEffect(() => {
|
237
|
+
if (page > Math.ceil(filteredData.length / maxRow)) {
|
238
|
+
setPage(1);
|
239
|
+
paginationRef.current?.scrollTo({
|
240
|
+
left: 0,
|
241
|
+
behavior: "smooth",
|
242
|
+
});
|
243
|
+
}
|
244
|
+
}, [filteredData]);
|
245
|
+
|
232
246
|
const headerArr = header
|
233
|
-
?.filter((item) => !
|
247
|
+
?.filter((item) => !excludedColumn.includes(item.key))
|
234
248
|
?.map((item) => {
|
235
249
|
return (
|
236
250
|
<th
|
@@ -385,7 +399,7 @@ export const Table: TableComponentProps = ({
|
|
385
399
|
? true
|
386
400
|
: false
|
387
401
|
}
|
388
|
-
|
402
|
+
onClick={() => {
|
389
403
|
if (
|
390
404
|
selected.find((selectedItem) => selectedItem.id === item.id)
|
391
405
|
) {
|
@@ -403,7 +417,7 @@ export const Table: TableComponentProps = ({
|
|
403
417
|
</td>
|
404
418
|
)}
|
405
419
|
{header
|
406
|
-
?.filter((headerItem) => !
|
420
|
+
?.filter((headerItem) => !excludedColumn.includes(headerItem.key))
|
407
421
|
?.map((headerItem) => {
|
408
422
|
if (headerItem?.render) {
|
409
423
|
return (
|
@@ -504,12 +518,12 @@ export const Table: TableComponentProps = ({
|
|
504
518
|
<Dropdown.Item
|
505
519
|
key={item.key}
|
506
520
|
onClick={() => {
|
507
|
-
if (
|
508
|
-
|
509
|
-
|
521
|
+
if (excludedColumn.includes(item.key)) {
|
522
|
+
setExcludedColumn(
|
523
|
+
excludedColumn.filter((prev) => prev !== item.key)
|
510
524
|
);
|
511
525
|
} else {
|
512
|
-
|
526
|
+
setExcludedColumn([...excludedColumn, item.key]);
|
513
527
|
}
|
514
528
|
}}
|
515
529
|
>
|
@@ -517,7 +531,7 @@ export const Table: TableComponentProps = ({
|
|
517
531
|
<Form.Checkbox
|
518
532
|
options={{ disableHover: true }}
|
519
533
|
label={item.title}
|
520
|
-
checked={!
|
534
|
+
checked={!excludedColumn.includes(item.key)}
|
521
535
|
/>
|
522
536
|
</div>
|
523
537
|
</Dropdown.Item>
|