next-helios-fe 1.8.139 → 1.8.141
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
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "next-helios-fe",
|
3
|
-
"version": "1.8.
|
3
|
+
"version": "1.8.141",
|
4
4
|
"description": "",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"types": "dist/index.d.ts",
|
@@ -33,6 +33,7 @@
|
|
33
33
|
"react-pin-field": "^3.1.5",
|
34
34
|
"react-syntax-highlighter": "^15.5.0",
|
35
35
|
"sass": "^1.77.8",
|
36
|
+
"use-debounce": "^10.0.5",
|
36
37
|
"xlsx": "^0.18.5"
|
37
38
|
},
|
38
39
|
"peerDependencies": {
|
@@ -74,13 +74,13 @@ export const Date: React.FC<DateProps> = ({
|
|
74
74
|
dayjs().subtract(7, "days").format("YYYY-MM-DD") &&
|
75
75
|
dayjs(data[1]).format("YYYY-MM-DD") === dayjs().format("YYYY-MM-DD")
|
76
76
|
) {
|
77
|
-
return "Last 7
|
77
|
+
return "Last 7 Days";
|
78
78
|
} else if (
|
79
79
|
dayjs(data[0]).format("YYYY-MM-DD") ===
|
80
80
|
dayjs().subtract(1, "months").format("YYYY-MM-DD") &&
|
81
81
|
dayjs(data[1]).format("YYYY-MM-DD") === dayjs().format("YYYY-MM-DD")
|
82
82
|
) {
|
83
|
-
return "Last 30
|
83
|
+
return "Last 30 Days";
|
84
84
|
} else {
|
85
85
|
return "Custom";
|
86
86
|
}
|
@@ -215,7 +215,7 @@ export const Date: React.FC<DateProps> = ({
|
|
215
215
|
<button
|
216
216
|
type="button"
|
217
217
|
className="w-40 my-0.5 px-4 py-2 rounded-md text-sm text-left hover:bg-secondary-light disabled:bg-primary-transparent disabled:text-primary"
|
218
|
-
disabled={dateRangeLabel(tempValue) === "Last 7
|
218
|
+
disabled={dateRangeLabel(tempValue) === "Last 7 Days"}
|
219
219
|
onClick={() => {
|
220
220
|
setTempValue([
|
221
221
|
dayjs().subtract(7, "days").startOf("day"),
|
@@ -233,12 +233,12 @@ export const Date: React.FC<DateProps> = ({
|
|
233
233
|
}
|
234
234
|
}}
|
235
235
|
>
|
236
|
-
Last 7
|
236
|
+
Last 7 Days
|
237
237
|
</button>
|
238
238
|
<button
|
239
239
|
type="button"
|
240
240
|
className="w-40 my-0.5 px-4 py-2 rounded-md text-sm text-left hover:bg-secondary-light disabled:bg-primary-transparent disabled:text-primary"
|
241
|
-
disabled={dateRangeLabel(tempValue) === "Last 30
|
241
|
+
disabled={dateRangeLabel(tempValue) === "Last 30 Days"}
|
242
242
|
onClick={() => {
|
243
243
|
setTempValue([
|
244
244
|
dayjs().subtract(1, "months").startOf("day"),
|
@@ -256,7 +256,7 @@ export const Date: React.FC<DateProps> = ({
|
|
256
256
|
}
|
257
257
|
}}
|
258
258
|
>
|
259
|
-
Last 30
|
259
|
+
Last 30 Days
|
260
260
|
</button>
|
261
261
|
<button
|
262
262
|
type="button"
|
@@ -6,6 +6,7 @@ import dayjs from "dayjs";
|
|
6
6
|
import utc from "dayjs/plugin/utc";
|
7
7
|
import { Form, Button, Dropdown, Tooltip, Calendar } from "../../components";
|
8
8
|
import { Action, type ActionProps } from "./action";
|
9
|
+
import { useDebouncedCallback } from "use-debounce";
|
9
10
|
|
10
11
|
dayjs.extend(utc);
|
11
12
|
|
@@ -111,6 +112,7 @@ export const Table: TableComponentProps = ({
|
|
111
112
|
const [excludedColumn, setExcludedColumn] = useState<string[]>([]);
|
112
113
|
const [search, setSearch] = useState<string>("");
|
113
114
|
const [filter, setFilter] = useState<any[]>([]);
|
115
|
+
const [delayedFilter, setDelayedFilter] = useState<any>([]);
|
114
116
|
const [categoryFilter, setCategoryFilter] = useState<any>({});
|
115
117
|
const [dateFilter, setDateFilter] = useState<any>({});
|
116
118
|
const [maxRow, setMaxRow] = useState<number>(options?.maxRow || 10);
|
@@ -152,14 +154,20 @@ export const Table: TableComponentProps = ({
|
|
152
154
|
setExcludedColumn(tempExcludedColumn.map((item) => item.key));
|
153
155
|
}, []);
|
154
156
|
|
155
|
-
useEffect(
|
156
|
-
()
|
157
|
+
useEffect(() => {
|
158
|
+
if (!isReadyForDynamicValue) {
|
157
159
|
setFilter(
|
158
160
|
header?.map((item) => {
|
159
161
|
return { key: item.key, value: "", type: item.type };
|
160
162
|
})
|
161
163
|
);
|
162
164
|
|
165
|
+
setDelayedFilter(
|
166
|
+
header?.map((item) => {
|
167
|
+
return { key: item.key, value: "", type: item.type };
|
168
|
+
})
|
169
|
+
);
|
170
|
+
|
163
171
|
const tempCategoryFilter: any = {};
|
164
172
|
const tempDateFilter: any = {};
|
165
173
|
|
@@ -214,19 +222,17 @@ export const Table: TableComponentProps = ({
|
|
214
222
|
|
215
223
|
setCategoryFilter(tempCategoryFilter);
|
216
224
|
setDateFilter(tempDateFilter);
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
]
|
229
|
-
);
|
225
|
+
|
226
|
+
if (dynamicTable?.getValue) {
|
227
|
+
setIsReadyForDynamicValue(true);
|
228
|
+
}
|
229
|
+
}
|
230
|
+
}, [
|
231
|
+
data,
|
232
|
+
isReadyForDynamicValue,
|
233
|
+
dynamicTable?.setValue?.categoryFilter,
|
234
|
+
dynamicTable?.setValue?.dateFilter,
|
235
|
+
]);
|
230
236
|
|
231
237
|
useEffect(() => {
|
232
238
|
if (page === 1) {
|
@@ -249,14 +255,6 @@ export const Table: TableComponentProps = ({
|
|
249
255
|
}
|
250
256
|
}, [page]);
|
251
257
|
|
252
|
-
const handleExportData = (dataTitle: string, data: any[]) => {
|
253
|
-
const fileName = `${dataTitle}_${dayjs().format("YYYY-MM-DD_HH-mm-ss")}`;
|
254
|
-
const worksheet = xlsx.utils.json_to_sheet(data);
|
255
|
-
const workbook = xlsx.utils.book_new();
|
256
|
-
xlsx.utils.book_append_sheet(workbook, worksheet, "Data");
|
257
|
-
xlsx.writeFile(workbook, fileName + ".xlsx");
|
258
|
-
};
|
259
|
-
|
260
258
|
const filteredData = useMemo(() => {
|
261
259
|
if (dynamicTable?.getValue) {
|
262
260
|
return data;
|
@@ -373,7 +371,7 @@ export const Table: TableComponentProps = ({
|
|
373
371
|
page,
|
374
372
|
dataOffset: (page - 1) * maxRow,
|
375
373
|
maxRow,
|
376
|
-
filter,
|
374
|
+
filter: delayedFilter,
|
377
375
|
categoryFilter,
|
378
376
|
dateFilter,
|
379
377
|
sortBy,
|
@@ -384,7 +382,7 @@ export const Table: TableComponentProps = ({
|
|
384
382
|
page,
|
385
383
|
dataOffset: (page - 1) * maxRow,
|
386
384
|
maxRow,
|
387
|
-
filter,
|
385
|
+
filter: delayedFilter,
|
388
386
|
categoryFilter,
|
389
387
|
dateFilter,
|
390
388
|
sortBy,
|
@@ -394,7 +392,7 @@ export const Table: TableComponentProps = ({
|
|
394
392
|
page,
|
395
393
|
dataOffset: (page - 1) * maxRow,
|
396
394
|
maxRow,
|
397
|
-
filter,
|
395
|
+
filter: delayedFilter,
|
398
396
|
categoryFilter,
|
399
397
|
dateFilter,
|
400
398
|
sortBy,
|
@@ -408,12 +406,28 @@ export const Table: TableComponentProps = ({
|
|
408
406
|
search,
|
409
407
|
page,
|
410
408
|
maxRow,
|
411
|
-
|
409
|
+
delayedFilter,
|
412
410
|
categoryFilter,
|
413
411
|
dateFilter,
|
414
412
|
sortBy,
|
415
413
|
]);
|
416
414
|
|
415
|
+
const debouncedUpdate = useDebouncedCallback((key: string, value: string) => {
|
416
|
+
setDelayedFilter(
|
417
|
+
filter?.map((filterItem) => {
|
418
|
+
return filterItem.key === key ? { ...filterItem, value } : filterItem;
|
419
|
+
})
|
420
|
+
);
|
421
|
+
}, 1250);
|
422
|
+
|
423
|
+
const handleExportData = (dataTitle: string, data: any[]) => {
|
424
|
+
const fileName = `${dataTitle}_${dayjs().format("YYYY-MM-DD_HH-mm-ss")}`;
|
425
|
+
const worksheet = xlsx.utils.json_to_sheet(data);
|
426
|
+
const workbook = xlsx.utils.book_new();
|
427
|
+
xlsx.utils.book_append_sheet(workbook, worksheet, "Data");
|
428
|
+
xlsx.writeFile(workbook, fileName + ".xlsx");
|
429
|
+
};
|
430
|
+
|
417
431
|
const headerArr = header
|
418
432
|
?.filter((item) => !excludedColumn?.includes(item.key))
|
419
433
|
?.map((item) => {
|
@@ -629,6 +643,8 @@ export const Table: TableComponentProps = ({
|
|
629
643
|
: filterItem;
|
630
644
|
})
|
631
645
|
);
|
646
|
+
|
647
|
+
debouncedUpdate(item.key, e.target.value);
|
632
648
|
}}
|
633
649
|
/>
|
634
650
|
{((item?.type === "date" &&
|
@@ -648,6 +664,13 @@ export const Table: TableComponentProps = ({
|
|
648
664
|
: filterItem;
|
649
665
|
})
|
650
666
|
);
|
667
|
+
setDelayedFilter(
|
668
|
+
filter?.map((filterItem) => {
|
669
|
+
return filterItem.key === item.key
|
670
|
+
? { ...filterItem, value: "" }
|
671
|
+
: filterItem;
|
672
|
+
})
|
673
|
+
);
|
651
674
|
} else if (
|
652
675
|
item?.type === "date" &&
|
653
676
|
dateFilter[item.key]?.[0] &&
|