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.139",
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 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
 
@@ -215,18 +223,13 @@ export const Table: TableComponentProps = ({
215
223
  setCategoryFilter(tempCategoryFilter);
216
224
  setDateFilter(tempDateFilter);
217
225
  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
- );
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
- filter,
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] &&