rez-table-listing-mui 0.0.26 → 0.0.27
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.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +22 -4
- package/src/assets/svg.tsx +32 -0
- package/src/components/filter/components/attributes-filter.tsx +2 -0
- package/src/components/filter/components/forms/components/Attributes-select.tsx +3 -1
- package/src/components/filter/components/forms/index.tsx +45 -25
- package/src/components/filter/components/main-filter.tsx +16 -3
- package/src/components/filter/components/saved-edit-filter.tsx +13 -7
- package/src/components/filter/components/saved-filter.tsx +4 -2
- package/src/components/filter/components/tabs/index.tsx +51 -18
- package/src/components/filter/index.tsx +4 -1
- package/src/libs/hooks/useEntityTableAPI.tsx +1 -1
- package/src/types/filter.ts +4 -0
package/src/assets/svg.tsx
CHANGED
|
@@ -862,3 +862,35 @@ export const ChevronDownIcon = () => {
|
|
|
862
862
|
</svg>
|
|
863
863
|
);
|
|
864
864
|
};
|
|
865
|
+
export const CheckBox = () => {
|
|
866
|
+
return (
|
|
867
|
+
<svg
|
|
868
|
+
width="13"
|
|
869
|
+
height="14"
|
|
870
|
+
viewBox="0 0 13 14"
|
|
871
|
+
fill="none"
|
|
872
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
873
|
+
>
|
|
874
|
+
<path
|
|
875
|
+
d="M5.72054 8.43116L4.17187 6.88233C4.07954 6.7901 3.96349 6.74288 3.82371 6.74066C3.68404 6.73855 3.56587 6.78577 3.46921 6.88233C3.37265 6.97899 3.32437 7.0961 3.32437 7.23366C3.32437 7.37121 3.37265 7.48833 3.46921 7.58499L5.29871 9.41449C5.41926 9.53494 5.55987 9.59516 5.72054 9.59516C5.88121 9.59516 6.02182 9.53494 6.14237 9.41449L9.85137 5.70549C9.9436 5.61316 9.99082 5.4971 9.99304 5.35733C9.99515 5.21766 9.94793 5.09949 9.85137 5.00283C9.75471 4.90627 9.6376 4.85799 9.50004 4.85799C9.36249 4.85799 9.24537 4.90627 9.14871 5.00283L5.72054 8.43116ZM6.66787 13.3337C5.79187 13.3337 4.96848 13.1674 4.19771 12.835C3.42693 12.5025 2.75648 12.0514 2.18637 11.4815C1.61626 10.9116 1.16487 10.2414 0.832207 9.47099C0.499652 8.70055 0.333374 7.87738 0.333374 7.00149C0.333374 6.12549 0.499596 5.3021 0.832041 4.53133C1.16449 3.76055 1.61565 3.0901 2.18554 2.51999C2.75543 1.94988 3.4256 1.49849 4.19604 1.16583C4.96649 0.83327 5.78965 0.666992 6.66554 0.666992C7.54154 0.666992 8.36493 0.833214 9.13571 1.16566C9.90649 1.4981 10.5769 1.94927 11.147 2.51916C11.7172 3.08905 12.1685 3.75921 12.5012 4.52966C12.8338 5.3001 13 6.12327 13 6.99916C13 7.87516 12.8338 8.69855 12.5014 9.46933C12.1689 10.2401 11.7178 10.9105 11.1479 11.4807C10.578 12.0508 9.90782 12.5022 9.13737 12.8348C8.36693 13.1674 7.54376 13.3337 6.66787 13.3337Z"
|
|
876
|
+
fill="#16B364"
|
|
877
|
+
/>
|
|
878
|
+
</svg>
|
|
879
|
+
);
|
|
880
|
+
};
|
|
881
|
+
export const CrossBox = () => {
|
|
882
|
+
return (
|
|
883
|
+
<svg
|
|
884
|
+
width="13"
|
|
885
|
+
height="14"
|
|
886
|
+
viewBox="0 0 13 14"
|
|
887
|
+
fill="none"
|
|
888
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
889
|
+
>
|
|
890
|
+
<path
|
|
891
|
+
d="M6.66659 7.70283L8.71525 9.75166C8.80759 9.84388 8.92364 9.8911 9.06342 9.89333C9.20309 9.89544 9.32125 9.84821 9.41792 9.75166C9.51447 9.65499 9.56275 9.53788 9.56275 9.40033C9.56275 9.26277 9.51447 9.14566 9.41792 9.04899L7.36909 7.00033L9.41792 4.95166C9.51014 4.85933 9.55736 4.74327 9.55959 4.60349C9.5617 4.46383 9.51447 4.34566 9.41792 4.24899C9.32125 4.15244 9.20414 4.10416 9.06659 4.10416C8.92903 4.10416 8.81192 4.15244 8.71525 4.24899L6.66659 6.29783L4.61792 4.24899C4.52559 4.15677 4.40953 4.10955 4.26975 4.10733C4.13009 4.10521 4.01192 4.15244 3.91525 4.24899C3.8187 4.34566 3.77042 4.46277 3.77042 4.60033C3.77042 4.73788 3.8187 4.85499 3.91525 4.95166L5.96409 7.00033L3.91525 9.04899C3.82303 9.14133 3.77581 9.25738 3.77359 9.39716C3.77147 9.53683 3.8187 9.65499 3.91525 9.75166C4.01192 9.84821 4.12903 9.89649 4.26659 9.89649C4.40414 9.89649 4.52125 9.84821 4.61792 9.75166L6.66659 7.70283ZM6.66775 13.3337C5.79175 13.3337 4.96836 13.1674 4.19759 12.835C3.42681 12.5025 2.75636 12.0514 2.18625 11.4815C1.61614 10.9116 1.16475 10.2414 0.832085 9.47099C0.49953 8.70055 0.333252 7.87738 0.333252 7.00149C0.333252 6.12549 0.499474 5.3021 0.831919 4.53133C1.16436 3.76055 1.61553 3.0901 2.18542 2.51999C2.75531 1.94988 3.42547 1.49849 4.19592 1.16583C4.96636 0.83327 5.78953 0.666992 6.66542 0.666992C7.54142 0.666992 8.36481 0.833214 9.13559 1.16566C9.90636 1.4981 10.5768 1.94927 11.1469 2.51916C11.717 3.08905 12.1684 3.75921 12.5011 4.52966C12.8336 5.3001 12.9999 6.12327 12.9999 6.99916C12.9999 7.87516 12.8337 8.69855 12.5013 9.46933C12.1688 10.2401 11.7176 10.9105 11.1478 11.4807C10.5779 12.0508 9.9077 12.5022 9.13725 12.8348C8.36681 13.1674 7.54364 13.3337 6.66775 13.3337Z"
|
|
892
|
+
fill="#F63D68"
|
|
893
|
+
/>
|
|
894
|
+
</svg>
|
|
895
|
+
);
|
|
896
|
+
};
|
|
@@ -8,6 +8,7 @@ const AttributesFilter = ({
|
|
|
8
8
|
dropdownData,
|
|
9
9
|
searchTerm,
|
|
10
10
|
setSearchTerm,
|
|
11
|
+
tabValue,
|
|
11
12
|
}: AttributesFilterProps) => {
|
|
12
13
|
return (
|
|
13
14
|
<Box>
|
|
@@ -18,6 +19,7 @@ const AttributesFilter = ({
|
|
|
18
19
|
dropdownData={dropdownData}
|
|
19
20
|
searchTerm={searchTerm}
|
|
20
21
|
setSearchTerm={setSearchTerm}
|
|
22
|
+
tabValue={tabValue}
|
|
21
23
|
/>
|
|
22
24
|
</Box>
|
|
23
25
|
);
|
|
@@ -21,6 +21,7 @@ const SelectAttribute = ({
|
|
|
21
21
|
dropdownData,
|
|
22
22
|
searchTerm = "",
|
|
23
23
|
setSearchTerm,
|
|
24
|
+
tabValue,
|
|
24
25
|
}: AttributesFilterSelectProps) => {
|
|
25
26
|
const { filterMaster, setFilterMaster, filters, setFilters } = tableStates;
|
|
26
27
|
|
|
@@ -43,7 +44,7 @@ const SelectAttribute = ({
|
|
|
43
44
|
|
|
44
45
|
const handleRadioChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
|
45
46
|
event.preventDefault();
|
|
46
|
-
|
|
47
|
+
console.log("tabValu", tabValue);
|
|
47
48
|
const selectedValue = event.target.value;
|
|
48
49
|
setFilterMaster(
|
|
49
50
|
(prev) =>
|
|
@@ -53,6 +54,7 @@ const SelectAttribute = ({
|
|
|
53
54
|
...prev?.attributes,
|
|
54
55
|
radio: selectedValue,
|
|
55
56
|
},
|
|
57
|
+
activeFilterTabIndex: tabValue,
|
|
56
58
|
} as FilterMasterStateProps)
|
|
57
59
|
);
|
|
58
60
|
|
|
@@ -90,14 +90,25 @@ const FilterForm = ({
|
|
|
90
90
|
watch,
|
|
91
91
|
reset,
|
|
92
92
|
formState: { isDirty },
|
|
93
|
+
unregister,
|
|
94
|
+
setValue,
|
|
93
95
|
} = useForm<FormValues>({
|
|
94
96
|
mode: "onChange",
|
|
95
97
|
defaultValues,
|
|
98
|
+
resetOptions: {
|
|
99
|
+
keepDirtyValues: false, // Keep modified values when resetting
|
|
100
|
+
keepErrors: false, // Keep form errors when resetting
|
|
101
|
+
},
|
|
96
102
|
});
|
|
97
103
|
|
|
98
104
|
// Watch for form changes
|
|
99
105
|
const formValues = watch();
|
|
100
106
|
|
|
107
|
+
// Reset form when filters change
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
reset(defaultValues);
|
|
110
|
+
}, [selectedFilters, filterName]);
|
|
111
|
+
|
|
101
112
|
// Effect to update filters when form values change
|
|
102
113
|
useEffect(() => {
|
|
103
114
|
if (isDirty) {
|
|
@@ -107,34 +118,33 @@ const FilterForm = ({
|
|
|
107
118
|
value: string | string[];
|
|
108
119
|
operator: string;
|
|
109
120
|
};
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
filterValue.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
...filter,
|
|
117
|
-
filter_value: filterValue.value,
|
|
118
|
-
filter_operator: filterValue.operator,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
...filter,
|
|
124
|
+
filter_value: filterValue.value,
|
|
125
|
+
filter_operator: filterValue.operator,
|
|
126
|
+
};
|
|
121
127
|
}
|
|
122
128
|
return filter;
|
|
123
129
|
});
|
|
124
130
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
(filter, index) =>
|
|
128
|
-
filter.filter_value !== selectedFilters[index].filter_value ||
|
|
129
|
-
filter.filter_operator !== selectedFilters[index].filter_operator
|
|
130
|
-
);
|
|
131
|
-
|
|
132
|
-
if (hasChanges) {
|
|
133
|
-
setSelectedFilters(updatedFilters);
|
|
134
|
-
setFilters(updatedFilters);
|
|
135
|
-
}
|
|
131
|
+
setSelectedFilters(updatedFilters);
|
|
132
|
+
setFilters(updatedFilters);
|
|
136
133
|
}
|
|
137
|
-
}, [formValues
|
|
134
|
+
}, [formValues]);
|
|
135
|
+
|
|
136
|
+
// Cleanup effect
|
|
137
|
+
useEffect(() => {
|
|
138
|
+
return () => {
|
|
139
|
+
// Reset form and clear any lingering state
|
|
140
|
+
reset(defaultValues);
|
|
141
|
+
selectedFilters.forEach((filter) => {
|
|
142
|
+
if (filter.name) {
|
|
143
|
+
unregister(filter.name);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
}, []);
|
|
138
148
|
|
|
139
149
|
const editModeStylingBorder = {
|
|
140
150
|
border: "1px solid #c5c5c5",
|
|
@@ -284,7 +294,17 @@ const FilterForm = ({
|
|
|
284
294
|
/>
|
|
285
295
|
<IconButton
|
|
286
296
|
sx={{ marginLeft: "auto" }}
|
|
287
|
-
onClick={() =>
|
|
297
|
+
onClick={() => {
|
|
298
|
+
const fieldName = `${filter.name}.value`;
|
|
299
|
+
unregister(fieldName); // ✅ Unregister field manually
|
|
300
|
+
|
|
301
|
+
// ✅ Trigger dirty manually (optional, but safe fallback)
|
|
302
|
+
setValue("filterName", formValues.filterName, {
|
|
303
|
+
shouldDirty: true,
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
handleRemoveFilter(filter.filter_attribute);
|
|
307
|
+
}}
|
|
288
308
|
size="small"
|
|
289
309
|
>
|
|
290
310
|
<CloseIcon />
|
|
@@ -408,7 +428,7 @@ const FilterForm = ({
|
|
|
408
428
|
},
|
|
409
429
|
}}
|
|
410
430
|
// onClick={() => setSaveFilterModalOpen(true)}
|
|
411
|
-
disabled={editMode && !isDirty}
|
|
431
|
+
// disabled={editMode && !isDirty}
|
|
412
432
|
onClick={() => {
|
|
413
433
|
setSavedFilterModalOpen && setSavedFilterModalOpen(true);
|
|
414
434
|
}}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { Box } from "@mui/material";
|
|
2
|
-
import { useState } from "react";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
3
|
import FilterForm from "./forms";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
FilterFormComponentProps,
|
|
6
|
+
FilterMasterStateProps,
|
|
7
|
+
} from "../../../types/filter";
|
|
5
8
|
|
|
6
9
|
const MainFilter = ({
|
|
7
10
|
columnsData,
|
|
@@ -13,7 +16,17 @@ const MainFilter = ({
|
|
|
13
16
|
}: FilterFormComponentProps) => {
|
|
14
17
|
const [searchTerm, setSearchTerm] = useState<string>("");
|
|
15
18
|
|
|
16
|
-
const { setFilters } = tableStates;
|
|
19
|
+
const { setFilters, setFilterMaster } = tableStates;
|
|
20
|
+
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
setFilterMaster(
|
|
23
|
+
(prev) =>
|
|
24
|
+
({
|
|
25
|
+
...prev,
|
|
26
|
+
activeFilterTabIndex: 0,
|
|
27
|
+
} as FilterMasterStateProps)
|
|
28
|
+
);
|
|
29
|
+
}, []);
|
|
17
30
|
|
|
18
31
|
const handleRemoveFilter = (filter_attribute: string) => {
|
|
19
32
|
setFilters((prev) =>
|
|
@@ -4,6 +4,7 @@ import BackArrow from "@mui/icons-material/ArrowBackIosNew";
|
|
|
4
4
|
import {
|
|
5
5
|
FilterColumnsDataProps,
|
|
6
6
|
FilterDropdownDataProps,
|
|
7
|
+
FilterMasterStateProps,
|
|
7
8
|
UpdatedFilterStateProps,
|
|
8
9
|
} from "../../../types/filter";
|
|
9
10
|
import { CraftTableOptionsProps } from "../../../types/table-options";
|
|
@@ -35,7 +36,7 @@ const SavedFilterEditComponent = ({
|
|
|
35
36
|
setSavedFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
36
37
|
setDeleteFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
37
38
|
}) => {
|
|
38
|
-
const { setFilters } = tableStates;
|
|
39
|
+
const { setFilters, setFilterMaster } = tableStates;
|
|
39
40
|
|
|
40
41
|
const handleRemoveFilter = (filter_attribute: string) => {
|
|
41
42
|
setFilters((prev) =>
|
|
@@ -64,6 +65,17 @@ const SavedFilterEditComponent = ({
|
|
|
64
65
|
}}
|
|
65
66
|
onClick={() => {
|
|
66
67
|
setEditMode && setEditMode(false);
|
|
68
|
+
setFilters([]);
|
|
69
|
+
setFilterMaster(
|
|
70
|
+
(prev) =>
|
|
71
|
+
({
|
|
72
|
+
...prev,
|
|
73
|
+
saved_filters: {
|
|
74
|
+
...prev?.saved_filters,
|
|
75
|
+
selectedId: "",
|
|
76
|
+
},
|
|
77
|
+
} as FilterMasterStateProps)
|
|
78
|
+
);
|
|
67
79
|
}}
|
|
68
80
|
>
|
|
69
81
|
<BackArrow sx={{ width: "13px", height: "13px" }} />
|
|
@@ -73,12 +85,6 @@ const SavedFilterEditComponent = ({
|
|
|
73
85
|
</Box>
|
|
74
86
|
</Box>
|
|
75
87
|
|
|
76
|
-
{/* <FilterCriteria
|
|
77
|
-
columnsData={columnsData}
|
|
78
|
-
tableStates={tableStates}
|
|
79
|
-
setSelectedFilters={setSelectedFilters}
|
|
80
|
-
/> */}
|
|
81
|
-
|
|
82
88
|
{/* Render selectedFilters state */}
|
|
83
89
|
<FilterForm
|
|
84
90
|
selectedFilters={selectedFilters}
|
|
@@ -26,6 +26,7 @@ const SavedFilter = ({
|
|
|
26
26
|
setEditMode,
|
|
27
27
|
setDeleteFilterModalOpen,
|
|
28
28
|
setSavedFilterModalOpen,
|
|
29
|
+
tabValue,
|
|
29
30
|
}: FilterFormComponentProps) => {
|
|
30
31
|
const { setFilterMaster, setFilterToDelete } = tableStates;
|
|
31
32
|
const [searchTerm, setSearchTerm] = useState<string>("");
|
|
@@ -60,6 +61,7 @@ const SavedFilter = ({
|
|
|
60
61
|
selectedId: filter.value,
|
|
61
62
|
selectedName: filter.label,
|
|
62
63
|
},
|
|
64
|
+
activeFilterTabIndex: tabValue,
|
|
63
65
|
} as FilterMasterStateProps)
|
|
64
66
|
);
|
|
65
67
|
|
|
@@ -126,7 +128,7 @@ const SavedFilter = ({
|
|
|
126
128
|
{/* Render search input and list */}
|
|
127
129
|
{!editMode && renderList()}
|
|
128
130
|
|
|
129
|
-
{editMode
|
|
131
|
+
{editMode ? (
|
|
130
132
|
<SavedFilterEditComponent
|
|
131
133
|
columnsData={columnsData}
|
|
132
134
|
dropdownData={dropdownData}
|
|
@@ -140,7 +142,7 @@ const SavedFilter = ({
|
|
|
140
142
|
setSavedFilterModalOpen={setSavedFilterModalOpen}
|
|
141
143
|
setDeleteFilterModalOpen={setDeleteFilterModalOpen}
|
|
142
144
|
/>
|
|
143
|
-
)}
|
|
145
|
+
) : null}
|
|
144
146
|
</Box>
|
|
145
147
|
);
|
|
146
148
|
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import { Tabs, Tab, TabsProps, Box } from "@mui/material";
|
|
3
|
+
import { CheckBox, CrossBox } from "../../../../assets/svg";
|
|
2
4
|
|
|
3
5
|
export interface TabItem {
|
|
4
6
|
label: string;
|
|
@@ -6,14 +8,22 @@ export interface TabItem {
|
|
|
6
8
|
|
|
7
9
|
interface StyledTabsProps extends TabsProps {
|
|
8
10
|
tabItems: TabItem[];
|
|
11
|
+
activeFilterIndex: number;
|
|
9
12
|
}
|
|
10
13
|
|
|
11
14
|
const CustomTabs = ({
|
|
12
15
|
value,
|
|
13
16
|
onChange,
|
|
14
17
|
tabItems,
|
|
18
|
+
activeFilterIndex = -1,
|
|
15
19
|
...tabsProps
|
|
16
20
|
}: StyledTabsProps) => {
|
|
21
|
+
const [hoveredTab, setHoveredTab] = useState<number | null>(null);
|
|
22
|
+
|
|
23
|
+
const handleCrossClick = (idx: number) => (e: React.MouseEvent) => {
|
|
24
|
+
e.stopPropagation();
|
|
25
|
+
};
|
|
26
|
+
|
|
17
27
|
return (
|
|
18
28
|
<Tabs
|
|
19
29
|
value={value}
|
|
@@ -28,23 +38,46 @@ const CustomTabs = ({
|
|
|
28
38
|
}}
|
|
29
39
|
{...tabsProps}
|
|
30
40
|
>
|
|
31
|
-
{tabItems.map((tab, idx) =>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
{tabItems.map((tab, idx) => {
|
|
42
|
+
const isActive = activeFilterIndex === idx;
|
|
43
|
+
const isHovered = hoveredTab === idx;
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<Tab
|
|
47
|
+
key={idx}
|
|
48
|
+
label={
|
|
49
|
+
<Box sx={{ display: "flex", alignItems: "center", gap: 0.5 }}>
|
|
50
|
+
<span>{tab.label}</span>
|
|
51
|
+
{isActive && (
|
|
52
|
+
<Box
|
|
53
|
+
onMouseEnter={() => setHoveredTab(idx)}
|
|
54
|
+
onMouseLeave={() => setHoveredTab(null)}
|
|
55
|
+
sx={{
|
|
56
|
+
display: "flex",
|
|
57
|
+
alignItems: "center",
|
|
58
|
+
cursor: isHovered ? "pointer" : "default",
|
|
59
|
+
}}
|
|
60
|
+
onClick={isHovered ? handleCrossClick(idx) : undefined}
|
|
61
|
+
>
|
|
62
|
+
{isHovered ? <CrossBox /> : <CheckBox />}
|
|
63
|
+
</Box>
|
|
64
|
+
)}
|
|
65
|
+
</Box>
|
|
66
|
+
}
|
|
67
|
+
sx={{
|
|
68
|
+
fontSize: "14px",
|
|
69
|
+
textTransform: "capitalize",
|
|
70
|
+
color: "#888888",
|
|
71
|
+
fontWeight: "normal",
|
|
72
|
+
whiteSpace: "nowrap",
|
|
73
|
+
"&.Mui-selected": {
|
|
74
|
+
color: "black",
|
|
75
|
+
fontWeight: "bold",
|
|
76
|
+
},
|
|
77
|
+
}}
|
|
78
|
+
/>
|
|
79
|
+
);
|
|
80
|
+
})}
|
|
48
81
|
</Tabs>
|
|
49
82
|
);
|
|
50
83
|
};
|
|
@@ -32,7 +32,7 @@ const FilterDrawer = ({
|
|
|
32
32
|
|
|
33
33
|
const [searchTerm, setSearchTerm] = useState<string>("");
|
|
34
34
|
|
|
35
|
-
const { filters, filterToDelete } = tableStates;
|
|
35
|
+
const { filters, filterToDelete, filterMaster } = tableStates;
|
|
36
36
|
|
|
37
37
|
const filterNameInput: InputField = {
|
|
38
38
|
label: "Filter Name",
|
|
@@ -126,6 +126,7 @@ const FilterDrawer = ({
|
|
|
126
126
|
value={tabValue}
|
|
127
127
|
onChange={handleTabChange}
|
|
128
128
|
tabItems={tabItems}
|
|
129
|
+
activeFilterIndex={filterMaster?.activeFilterTabIndex ?? 0}
|
|
129
130
|
/>
|
|
130
131
|
|
|
131
132
|
<Box>
|
|
@@ -154,6 +155,7 @@ const FilterDrawer = ({
|
|
|
154
155
|
setDeleteFilterModalOpen={setDeleteFilterModalOpen}
|
|
155
156
|
setSavedFilterModalOpen={setSaveFilterModalOpen}
|
|
156
157
|
dropdownData={dropdownData}
|
|
158
|
+
tabValue={tabValue}
|
|
157
159
|
/>
|
|
158
160
|
)}
|
|
159
161
|
</CustomTabPanel>
|
|
@@ -166,6 +168,7 @@ const FilterDrawer = ({
|
|
|
166
168
|
dropdownData={dropdownData}
|
|
167
169
|
searchTerm={searchTerm}
|
|
168
170
|
setSearchTerm={setSearchTerm}
|
|
171
|
+
tabValue={tabValue}
|
|
169
172
|
/>
|
|
170
173
|
)}
|
|
171
174
|
</CustomTabPanel>
|
|
@@ -66,7 +66,7 @@ const entityListingCall = async ({
|
|
|
66
66
|
export const useEntityTableAPI = ({
|
|
67
67
|
page = 0,
|
|
68
68
|
size = 50,
|
|
69
|
-
quickFilter,
|
|
69
|
+
quickFilter = [],
|
|
70
70
|
}: EntityTableAPIProps) => {
|
|
71
71
|
const { data, isPending: isTableDataPending } = useQuery({
|
|
72
72
|
queryKey: [page, size, quickFilter],
|
package/src/types/filter.ts
CHANGED
|
@@ -181,6 +181,7 @@ export interface FilterFormComponentProps {
|
|
|
181
181
|
setEditMode?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
182
182
|
setDeleteFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
183
183
|
setSavedFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
184
|
+
tabValue?: number;
|
|
184
185
|
}
|
|
185
186
|
|
|
186
187
|
export interface FilterMasterStateProps {
|
|
@@ -192,6 +193,7 @@ export interface FilterMasterStateProps {
|
|
|
192
193
|
selectedId: string;
|
|
193
194
|
selectedName: string;
|
|
194
195
|
};
|
|
196
|
+
activeFilterTabIndex: number;
|
|
195
197
|
}
|
|
196
198
|
|
|
197
199
|
export interface AttributesFilterProps {
|
|
@@ -200,6 +202,7 @@ export interface AttributesFilterProps {
|
|
|
200
202
|
dropdownData: FilterDropdownDataProps;
|
|
201
203
|
searchTerm: string;
|
|
202
204
|
setSearchTerm: React.Dispatch<React.SetStateAction<string>>;
|
|
205
|
+
tabValue?: number;
|
|
203
206
|
}
|
|
204
207
|
|
|
205
208
|
export interface AttributesFilterSelectProps {
|
|
@@ -208,4 +211,5 @@ export interface AttributesFilterSelectProps {
|
|
|
208
211
|
dropdownData: FilterDropdownDataProps;
|
|
209
212
|
searchTerm: string;
|
|
210
213
|
setSearchTerm: React.Dispatch<React.SetStateAction<string>>;
|
|
214
|
+
tabValue?: number;
|
|
211
215
|
}
|