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.139",
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 days";
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 days";
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 days"}
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 days
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 days"}
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 days
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
- setIsReadyForDynamicValue(true);
218
- },
219
- dynamicTable?.setValue?.categoryFilter || dynamicTable?.setValue?.dateFilter
220
- ? [
221
- dynamicTable?.setValue?.categoryFilter,
222
- dynamicTable?.setValue?.dateFilter,
223
- ]
224
- : [
225
- data,
226
- dynamicTable?.setValue?.categoryFilter,
227
- dynamicTable?.setValue?.dateFilter,
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
- filter,
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] &&