next-helios-fe 1.8.139 → 1.8.140
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.140",
|
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
|
|
@@ -215,18 +223,13 @@ export const Table: TableComponentProps = ({
|
|
215
223
|
setCategoryFilter(tempCategoryFilter);
|
216
224
|
setDateFilter(tempDateFilter);
|
217
225
|
setIsReadyForDynamicValue(true);
|
218
|
-
}
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
data,
|
226
|
-
dynamicTable?.setValue?.categoryFilter,
|
227
|
-
dynamicTable?.setValue?.dateFilter,
|
228
|
-
]
|
229
|
-
);
|
226
|
+
}
|
227
|
+
}, [
|
228
|
+
data,
|
229
|
+
isReadyForDynamicValue,
|
230
|
+
dynamicTable?.setValue?.categoryFilter,
|
231
|
+
dynamicTable?.setValue?.dateFilter,
|
232
|
+
]);
|
230
233
|
|
231
234
|
useEffect(() => {
|
232
235
|
if (page === 1) {
|
@@ -249,14 +252,6 @@ export const Table: TableComponentProps = ({
|
|
249
252
|
}
|
250
253
|
}, [page]);
|
251
254
|
|
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
255
|
const filteredData = useMemo(() => {
|
261
256
|
if (dynamicTable?.getValue) {
|
262
257
|
return data;
|
@@ -373,7 +368,7 @@ export const Table: TableComponentProps = ({
|
|
373
368
|
page,
|
374
369
|
dataOffset: (page - 1) * maxRow,
|
375
370
|
maxRow,
|
376
|
-
filter,
|
371
|
+
filter: delayedFilter,
|
377
372
|
categoryFilter,
|
378
373
|
dateFilter,
|
379
374
|
sortBy,
|
@@ -384,7 +379,7 @@ export const Table: TableComponentProps = ({
|
|
384
379
|
page,
|
385
380
|
dataOffset: (page - 1) * maxRow,
|
386
381
|
maxRow,
|
387
|
-
filter,
|
382
|
+
filter: delayedFilter,
|
388
383
|
categoryFilter,
|
389
384
|
dateFilter,
|
390
385
|
sortBy,
|
@@ -394,7 +389,7 @@ export const Table: TableComponentProps = ({
|
|
394
389
|
page,
|
395
390
|
dataOffset: (page - 1) * maxRow,
|
396
391
|
maxRow,
|
397
|
-
filter,
|
392
|
+
filter: delayedFilter,
|
398
393
|
categoryFilter,
|
399
394
|
dateFilter,
|
400
395
|
sortBy,
|
@@ -408,12 +403,28 @@ export const Table: TableComponentProps = ({
|
|
408
403
|
search,
|
409
404
|
page,
|
410
405
|
maxRow,
|
411
|
-
|
406
|
+
delayedFilter,
|
412
407
|
categoryFilter,
|
413
408
|
dateFilter,
|
414
409
|
sortBy,
|
415
410
|
]);
|
416
411
|
|
412
|
+
const debouncedUpdate = useDebouncedCallback((key: string, value: string) => {
|
413
|
+
setDelayedFilter(
|
414
|
+
filter?.map((filterItem) => {
|
415
|
+
return filterItem.key === key ? { ...filterItem, value } : filterItem;
|
416
|
+
})
|
417
|
+
);
|
418
|
+
}, 1250);
|
419
|
+
|
420
|
+
const handleExportData = (dataTitle: string, data: any[]) => {
|
421
|
+
const fileName = `${dataTitle}_${dayjs().format("YYYY-MM-DD_HH-mm-ss")}`;
|
422
|
+
const worksheet = xlsx.utils.json_to_sheet(data);
|
423
|
+
const workbook = xlsx.utils.book_new();
|
424
|
+
xlsx.utils.book_append_sheet(workbook, worksheet, "Data");
|
425
|
+
xlsx.writeFile(workbook, fileName + ".xlsx");
|
426
|
+
};
|
427
|
+
|
417
428
|
const headerArr = header
|
418
429
|
?.filter((item) => !excludedColumn?.includes(item.key))
|
419
430
|
?.map((item) => {
|
@@ -629,6 +640,8 @@ export const Table: TableComponentProps = ({
|
|
629
640
|
: filterItem;
|
630
641
|
})
|
631
642
|
);
|
643
|
+
|
644
|
+
debouncedUpdate(item.key, e.target.value);
|
632
645
|
}}
|
633
646
|
/>
|
634
647
|
{((item?.type === "date" &&
|
@@ -648,6 +661,13 @@ export const Table: TableComponentProps = ({
|
|
648
661
|
: filterItem;
|
649
662
|
})
|
650
663
|
);
|
664
|
+
setDelayedFilter(
|
665
|
+
filter?.map((filterItem) => {
|
666
|
+
return filterItem.key === item.key
|
667
|
+
? { ...filterItem, value: "" }
|
668
|
+
: filterItem;
|
669
|
+
})
|
670
|
+
);
|
651
671
|
} else if (
|
652
672
|
item?.type === "date" &&
|
653
673
|
dateFilter[item.key]?.[0] &&
|