next-helios-fe 1.6.0 → 1.6.1
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/index.js +1 -1
- package/package.json +1 -1
- package/src/components/table/index.tsx +60 -56
package/package.json
CHANGED
@@ -115,9 +115,9 @@ export const Table: TableComponentProps = ({
|
|
115
115
|
}, [checkbox?.checked]);
|
116
116
|
|
117
117
|
useEffect(() => {
|
118
|
-
if (selected && selected
|
118
|
+
if (selected && selected?.length !== 0) {
|
119
119
|
checkbox?.onChange &&
|
120
|
-
checkbox
|
120
|
+
checkbox?.onChange({
|
121
121
|
target: {
|
122
122
|
checked: selected,
|
123
123
|
},
|
@@ -127,14 +127,14 @@ export const Table: TableComponentProps = ({
|
|
127
127
|
|
128
128
|
useEffect(() => {
|
129
129
|
setFilter(
|
130
|
-
header
|
130
|
+
header?.map((item) => {
|
131
131
|
return { key: item.key, value: "", type: item.type };
|
132
132
|
})
|
133
133
|
);
|
134
134
|
|
135
135
|
header
|
136
|
-
|
137
|
-
|
136
|
+
?.filter((item) => item.type === "category")
|
137
|
+
?.map((item) => {
|
138
138
|
data
|
139
139
|
.map((dataItem) => dataItem[item.key as keyof typeof dataItem])
|
140
140
|
.sort((a, b) => (a || "").localeCompare(b || ""))
|
@@ -163,9 +163,9 @@ export const Table: TableComponentProps = ({
|
|
163
163
|
};
|
164
164
|
|
165
165
|
const handleOnNextClick = () => {
|
166
|
-
if (page + 1 === Math.ceil(data
|
166
|
+
if (page + 1 === Math.ceil(data?.length / maxRow)) {
|
167
167
|
paginationRef.current?.scrollTo({
|
168
|
-
left: paginationRef.current
|
168
|
+
left: paginationRef.current?.scrollWidth,
|
169
169
|
behavior: "smooth",
|
170
170
|
});
|
171
171
|
} else {
|
@@ -184,8 +184,8 @@ export const Table: TableComponentProps = ({
|
|
184
184
|
return item;
|
185
185
|
} else if (
|
186
186
|
header
|
187
|
-
|
188
|
-
|
187
|
+
?.filter((item) => !excludedColumn.includes(item.key))
|
188
|
+
?.some((headerItem) => {
|
189
189
|
return item[headerItem.key as keyof typeof item]
|
190
190
|
?.toString()
|
191
191
|
?.toLowerCase()
|
@@ -203,31 +203,31 @@ export const Table: TableComponentProps = ({
|
|
203
203
|
?.includes(filterItem.value.toLowerCase());
|
204
204
|
});
|
205
205
|
})
|
206
|
-
|
206
|
+
?.filter((item) => {
|
207
207
|
return header
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
return categoryFilter
|
208
|
+
?.filter((item) => !excludedColumn?.includes(item.key))
|
209
|
+
?.filter((headerItem) => headerItem.type === "category")
|
210
|
+
?.every((headerItem) => {
|
211
|
+
return categoryFilter?.includes(
|
212
212
|
item[headerItem.key as keyof typeof item]
|
213
213
|
);
|
214
214
|
});
|
215
215
|
});
|
216
216
|
|
217
|
-
if (sortBy
|
217
|
+
if (sortBy?.column === "") {
|
218
218
|
return tempData;
|
219
219
|
} else {
|
220
220
|
return tempData?.sort((a, b): any => {
|
221
|
-
if (sortBy
|
221
|
+
if (sortBy?.column === "") {
|
222
222
|
return a.id > b.id ? 1 : -1;
|
223
|
-
} else if (sortBy
|
224
|
-
return a[sortBy
|
225
|
-
b[sortBy
|
223
|
+
} else if (sortBy?.order === "asc") {
|
224
|
+
return a[sortBy?.column as keyof typeof a] >
|
225
|
+
b[sortBy?.column as keyof typeof b]
|
226
226
|
? 1
|
227
227
|
: -1;
|
228
|
-
} else if (sortBy
|
229
|
-
return a[sortBy
|
230
|
-
b[sortBy
|
228
|
+
} else if (sortBy?.order === "desc") {
|
229
|
+
return a[sortBy?.column as keyof typeof a] <
|
230
|
+
b[sortBy?.column as keyof typeof b]
|
231
231
|
? 1
|
232
232
|
: -1;
|
233
233
|
}
|
@@ -236,7 +236,7 @@ export const Table: TableComponentProps = ({
|
|
236
236
|
}, [header, data, filter, categoryFilter, search, sortBy]);
|
237
237
|
|
238
238
|
useEffect(() => {
|
239
|
-
if (page > Math.ceil(filteredData
|
239
|
+
if (page > Math.ceil(filteredData?.length / maxRow)) {
|
240
240
|
setPage(1);
|
241
241
|
paginationRef.current?.scrollTo({
|
242
242
|
left: 0,
|
@@ -246,7 +246,7 @@ export const Table: TableComponentProps = ({
|
|
246
246
|
}, [filteredData]);
|
247
247
|
|
248
248
|
const headerArr = header
|
249
|
-
?.filter((item) => !excludedColumn
|
249
|
+
?.filter((item) => !excludedColumn?.includes(item.key))
|
250
250
|
?.map((item) => {
|
251
251
|
return (
|
252
252
|
<th
|
@@ -301,15 +301,15 @@ export const Table: TableComponentProps = ({
|
|
301
301
|
}
|
302
302
|
>
|
303
303
|
{data
|
304
|
-
|
304
|
+
?.map(
|
305
305
|
(dataItem) =>
|
306
306
|
dataItem[item.key as keyof typeof dataItem]
|
307
307
|
)
|
308
|
-
|
309
|
-
|
308
|
+
?.sort((a, b) => (a || "").localeCompare(b || ""))
|
309
|
+
?.filter(
|
310
310
|
(value, index, self) => self.indexOf(value) === index
|
311
311
|
)
|
312
|
-
|
312
|
+
?.map((value) => {
|
313
313
|
return (
|
314
314
|
<Dropdown.Item
|
315
315
|
key={value}
|
@@ -350,12 +350,12 @@ export const Table: TableComponentProps = ({
|
|
350
350
|
className="w-full px-6 pt-0 pb-0.5 border-default border-t-0 border-b border-x-0 bg-secondary-bg text-sm font-normal placeholder:duration-300 placeholder:translate-x-0 [&::-webkit-search-cancel-button]:appearance-none focus:placeholder:translate-x-1 placeholder:text-slate-300 focus:outline-none focus:ring-0 focus:border-primary-dark disabled:bg-secondary-light disabled:text-slate-400"
|
351
351
|
placeholder="search.."
|
352
352
|
value={
|
353
|
-
filter
|
353
|
+
filter?.find((filterItem) => filterItem.key === item.key)
|
354
354
|
?.value
|
355
355
|
}
|
356
356
|
onChange={(e) => {
|
357
357
|
setFilter(
|
358
|
-
filter
|
358
|
+
filter?.map((filterItem) => {
|
359
359
|
return filterItem.key === item.key
|
360
360
|
? { ...filterItem, value: e.target.value }
|
361
361
|
: filterItem;
|
@@ -363,13 +363,13 @@ export const Table: TableComponentProps = ({
|
|
363
363
|
);
|
364
364
|
}}
|
365
365
|
/>
|
366
|
-
{filter
|
366
|
+
{filter?.find((filterItem) => filterItem.key === item.key)
|
367
367
|
?.value && (
|
368
368
|
<button
|
369
369
|
className="absolute right-0 rounded-full text-slate-400 hover:bg-secondary-light"
|
370
370
|
onClick={() => {
|
371
371
|
setFilter(
|
372
|
-
filter
|
372
|
+
filter?.map((filterItem) => {
|
373
373
|
return filterItem.key === item.key
|
374
374
|
? { ...filterItem, value: "" }
|
375
375
|
: filterItem;
|
@@ -397,15 +397,19 @@ export const Table: TableComponentProps = ({
|
|
397
397
|
<Form.Checkbox
|
398
398
|
options={{ disableHover: true }}
|
399
399
|
checked={
|
400
|
-
selected
|
400
|
+
selected?.find((selectedItem) => selectedItem.id === item.id)
|
401
401
|
? true
|
402
402
|
: false
|
403
403
|
}
|
404
404
|
onClick={(e) => {
|
405
405
|
if (
|
406
|
-
selected
|
406
|
+
selected?.find(
|
407
|
+
(selectedItem) => selectedItem.id === item.id
|
408
|
+
)
|
407
409
|
) {
|
408
|
-
setSelected(
|
410
|
+
setSelected(
|
411
|
+
selected?.filter((prev) => prev.id !== item.id)
|
412
|
+
);
|
409
413
|
} else {
|
410
414
|
setSelected((prev) => [...prev, item]);
|
411
415
|
}
|
@@ -419,7 +423,7 @@ export const Table: TableComponentProps = ({
|
|
419
423
|
</td>
|
420
424
|
)}
|
421
425
|
{header
|
422
|
-
?.filter((headerItem) => !excludedColumn
|
426
|
+
?.filter((headerItem) => !excludedColumn?.includes(headerItem.key))
|
423
427
|
?.map((headerItem) => {
|
424
428
|
if (headerItem?.render) {
|
425
429
|
return (
|
@@ -515,14 +519,14 @@ export const Table: TableComponentProps = ({
|
|
515
519
|
</button>
|
516
520
|
}
|
517
521
|
>
|
518
|
-
{header
|
522
|
+
{header?.map((item) => {
|
519
523
|
return (
|
520
524
|
<Dropdown.Item
|
521
525
|
key={item.key}
|
522
526
|
onClick={() => {
|
523
|
-
if (excludedColumn
|
527
|
+
if (excludedColumn?.includes(item.key)) {
|
524
528
|
setExcludedColumn(
|
525
|
-
excludedColumn
|
529
|
+
excludedColumn?.filter((prev) => prev !== item.key)
|
526
530
|
);
|
527
531
|
} else {
|
528
532
|
setExcludedColumn([...excludedColumn, item.key]);
|
@@ -533,7 +537,7 @@ export const Table: TableComponentProps = ({
|
|
533
537
|
<Form.Checkbox
|
534
538
|
options={{ disableHover: true }}
|
535
539
|
label={item.title}
|
536
|
-
checked={!excludedColumn
|
540
|
+
checked={!excludedColumn?.includes(item.key)}
|
537
541
|
/>
|
538
542
|
</div>
|
539
543
|
</Dropdown.Item>
|
@@ -582,24 +586,24 @@ export const Table: TableComponentProps = ({
|
|
582
586
|
<Form.Checkbox
|
583
587
|
options={{ disableHover: true }}
|
584
588
|
checked={
|
585
|
-
filteredData
|
586
|
-
filteredData
|
587
|
-
return selected
|
589
|
+
filteredData?.length !== 0 &&
|
590
|
+
filteredData?.filter((item) => {
|
591
|
+
return selected?.find((selectedItem) => {
|
588
592
|
return selectedItem.id === item.id;
|
589
593
|
});
|
590
|
-
})
|
594
|
+
})?.length === filteredData?.length
|
591
595
|
}
|
592
596
|
onChange={(e) => {
|
593
597
|
if (
|
594
|
-
filteredData
|
595
|
-
return selected
|
598
|
+
filteredData?.filter((item) => {
|
599
|
+
return selected?.find((selectedItem) => {
|
596
600
|
return selectedItem.id === item.id;
|
597
601
|
});
|
598
|
-
})
|
602
|
+
})?.length === filteredData?.length
|
599
603
|
) {
|
600
604
|
setSelected((prev) => {
|
601
605
|
return prev.filter((prevItem) => {
|
602
|
-
return !filteredData
|
606
|
+
return !filteredData?.find((filteredItem) => {
|
603
607
|
return filteredItem.id === prevItem.id;
|
604
608
|
});
|
605
609
|
});
|
@@ -698,10 +702,10 @@ export const Table: TableComponentProps = ({
|
|
698
702
|
<span className="hidden md:block text-sm text-slate-400">{`Showing ${
|
699
703
|
(page - 1) * maxRow + 1
|
700
704
|
} to ${
|
701
|
-
page * maxRow > filteredData
|
702
|
-
? filteredData
|
705
|
+
page * maxRow > filteredData?.length
|
706
|
+
? filteredData?.length
|
703
707
|
: page * maxRow
|
704
|
-
} of ${filteredData
|
708
|
+
} of ${filteredData?.length} entries`}</span>
|
705
709
|
<div className="flex items-center gap-2 text-xs">
|
706
710
|
<button
|
707
711
|
type="button"
|
@@ -733,7 +737,7 @@ export const Table: TableComponentProps = ({
|
|
733
737
|
className="flex gap-2 max-w-20 overflow-auto [&::-webkit-scrollbar]:hidden"
|
734
738
|
>
|
735
739
|
{Array.from({
|
736
|
-
length: Math.ceil(filteredData
|
740
|
+
length: Math.ceil(filteredData?.length / maxRow),
|
737
741
|
}).map((_, index) => {
|
738
742
|
return (
|
739
743
|
<button
|
@@ -754,7 +758,7 @@ export const Table: TableComponentProps = ({
|
|
754
758
|
<button
|
755
759
|
type="button"
|
756
760
|
className="hidden md:flex justify-center items-center min-w-9 h-9 border rounded-md bg-secondary-bg hover:bg-secondary-light disabled:bg-secondary-light disabled:text-slate-400 disabled:pointer-events-none"
|
757
|
-
disabled={filteredData
|
761
|
+
disabled={filteredData?.length <= page * maxRow}
|
758
762
|
onClick={() => {
|
759
763
|
setPage((prev) => prev + 1);
|
760
764
|
handleOnNextClick();
|
@@ -765,11 +769,11 @@ export const Table: TableComponentProps = ({
|
|
765
769
|
<button
|
766
770
|
type="button"
|
767
771
|
className="flex justify-center items-center min-w-9 h-9 border rounded-md bg-secondary-bg hover:bg-secondary-light disabled:bg-secondary-light disabled:text-slate-400 disabled:pointer-events-none"
|
768
|
-
disabled={filteredData
|
772
|
+
disabled={filteredData?.length <= page * maxRow}
|
769
773
|
onClick={() => {
|
770
|
-
setPage(Math.ceil(filteredData
|
774
|
+
setPage(Math.ceil(filteredData?.length / maxRow));
|
771
775
|
paginationRef.current?.scrollTo({
|
772
|
-
left: paginationRef.current
|
776
|
+
left: paginationRef.current?.scrollWidth,
|
773
777
|
behavior: "smooth",
|
774
778
|
});
|
775
779
|
}}
|