rez-table-listing-mui 1.3.30 → 1.3.31

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.
@@ -5,7 +5,11 @@ import {
5
5
  FilterOperationListProps,
6
6
  } from "../../../types/filter";
7
7
  import {
8
+ Accordion,
9
+ AccordionDetails,
10
+ AccordionSummary,
8
11
  Box,
12
+ Divider,
9
13
  IconButton,
10
14
  List,
11
15
  ListItem,
@@ -15,8 +19,9 @@ import {
15
19
  import CustomSearch from "./search";
16
20
  import { DeleteIcon, EditIcon } from "../../../../assets/svg";
17
21
  import SavedFilterEditComponent from "./saved-edit-filter";
18
- import { filterStyles } from "../style";
22
+ // import { filterStyles } from "../style";
19
23
  import { CheckBox } from "../../../../assets/svg";
24
+ import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
20
25
 
21
26
  const SavedFilter = ({
22
27
  columnsData,
@@ -25,31 +30,60 @@ const SavedFilter = ({
25
30
  editMode,
26
31
  setEditMode,
27
32
  setDeleteFilterModalOpen,
28
- setSavedFilterModalOpen,
33
+ onSaveFilterButtonClick,
29
34
  tabValue,
30
35
  onChangeFunction,
31
36
  filterComponentOptions,
32
37
  }: FilterFormComponentProps) => {
33
38
  const { filters, filterMaster, setFilterMaster, setFilterToDelete } =
34
39
  tableStates;
40
+
35
41
  const [searchTerm, setSearchTerm] = useState<string>("");
36
42
 
37
- // reset savedFilterEditValue when component unmounts
43
+ const normalizeFilter = (f: any): FilterOperationListProps => {
44
+ const prefs =
45
+ f.sharedPreferences || f.preferences || f.meta || f.shared_meta || {};
46
+
47
+ return {
48
+ label: f.name || f.label || "Unnamed Filter",
49
+ value: f.id || f.value,
50
+ code: f.code ?? "",
51
+ is_shared: f.is_shared ?? prefs.is_shared ?? false,
52
+
53
+ // 🔥 STRING ko BOOLEAN banaya
54
+ is_editable:
55
+ f.is_editable === true ||
56
+ f.is_editable === "true" ||
57
+ prefs.is_editable === true ||
58
+ prefs.is_editable === "true",
59
+ };
60
+ };
61
+
62
+ const mappedSavedFilter: FilterOperationListProps[] =
63
+ columnsData?.saved_filter?.map(normalizeFilter) ?? [];
64
+
65
+ const mappedSharedFilter: FilterOperationListProps[] =
66
+ columnsData?.shared_filter?.map(normalizeFilter) ?? [];
67
+
68
+ // Reset on unmount
38
69
  useEffect(() => {
39
70
  return () => {
40
- const editModeFromTabOptions =
71
+ const editModeFromTab =
41
72
  filterComponentOptions?.tabOptions?.savedFilter?.editMode;
42
- if (!editModeFromTabOptions) {
73
+
74
+ if (!editModeFromTab) {
43
75
  setEditMode && setEditMode(false);
44
76
  setFilterMaster(
45
77
  (prev) =>
46
78
  ({
47
79
  ...prev,
48
80
  saved_filters: {
49
- ...prev?.attributes,
81
+ ...(prev?.saved_filters ?? {}),
50
82
  selectedId: "",
51
83
  selectedName: "",
52
84
  selectedCode: "",
85
+ shareWithTeam: undefined,
86
+ allowTeamEdit: undefined,
53
87
  },
54
88
  } as FilterMasterStateProps)
55
89
  );
@@ -57,14 +91,16 @@ const SavedFilter = ({
57
91
  };
58
92
  }, []);
59
93
 
60
- const handleListItemClick = (filter: FilterOperationListProps) => {
61
- const newFilterMasterState = {
94
+ const applyFilterStates = (filter: FilterOperationListProps) => {
95
+ const newFilterMaster = {
62
96
  ...filterMaster,
63
97
  saved_filters: {
64
- ...filterMaster?.attributes,
65
- selectedId: filter?.value,
66
- selectedName: filter?.label,
67
- selectedCode: filter?.code,
98
+ ...(filterMaster?.saved_filters ?? {}),
99
+ selectedId: filter.value,
100
+ selectedName: filter.label,
101
+ selectedCode: filter.code,
102
+ shareWithTeam: filter.is_shared,
103
+ allowTeamEdit: filter.is_editable,
68
104
  },
69
105
  attributes: {
70
106
  ...filterMaster?.attributes,
@@ -73,125 +109,109 @@ const SavedFilter = ({
73
109
  activeFilterTabIndex: tabValue,
74
110
  } as FilterMasterStateProps;
75
111
 
76
- setFilterMaster(newFilterMasterState);
77
-
78
- const newState = {
79
- filterMaster: newFilterMasterState,
80
- filters: filters,
81
- };
112
+ setFilterMaster(newFilterMaster);
82
113
 
83
- onChangeFunction && onChangeFunction(newState);
114
+ onChangeFunction &&
115
+ onChangeFunction({
116
+ filterMaster: newFilterMaster,
117
+ filters,
118
+ });
119
+ };
84
120
 
85
- // setEditfilter state on edit icon click
121
+ const handleListItemClick = (filter: FilterOperationListProps) => {
122
+ applyFilterStates(filter);
86
123
  setEditMode && setEditMode(true);
87
124
  setFilterToDelete(filter);
88
125
  };
89
126
 
90
- const handleAppyFilter = (filter: FilterOperationListProps) => {
91
- const newFilterMasterState = {
92
- ...filterMaster,
93
- saved_filters: {
94
- ...filterMaster?.attributes,
95
- selectedId: filter?.value,
96
- selectedName: filter?.label,
97
- selectedCode: filter?.code,
98
- },
99
- attributes: {
100
- ...filterMaster?.attributes,
101
- radio: [],
102
- },
103
- activeFilterTabIndex: tabValue,
104
- } as FilterMasterStateProps;
105
-
106
- setFilterMaster(newFilterMasterState);
127
+ const handleApplyFilter = (filter: FilterOperationListProps) => {
128
+ applyFilterStates(filter);
129
+ };
107
130
 
108
- const newState = {
109
- filterMaster: newFilterMasterState,
110
- filters: filters,
111
- };
131
+ /**
132
+ * renderList
133
+ * @param source - list to render
134
+ * @param isSharedList - true when rendering Shared Filters (default false)
135
+ *
136
+ * Behavior:
137
+ * - If isSharedList === true -> show Edit icon ONLY when filter.is_editable === true
138
+ * - If isSharedList === false -> show Edit icon always (or as per filter.is_editable if you prefer)
139
+ */
140
+ const renderList = (
141
+ source: FilterOperationListProps[],
142
+ isSharedList: boolean = false,
143
+ { emptyMessage = "No saved filters yet." } = {}
144
+ ) =>
145
+ source.length === 0 ? (
146
+ <Typography>{emptyMessage}</Typography>
147
+ ) : (
148
+ <List
149
+ sx={{
150
+ display: "flex",
151
+ flexDirection: "column",
152
+ gap: 1,
153
+ }}
154
+ >
155
+ {source
156
+ .filter((f) =>
157
+ f.label?.toLowerCase().includes(searchTerm.toLowerCase())
158
+ )
159
+ .map((filter) => (
160
+ <ListItem
161
+ key={filter.value}
162
+ sx={{
163
+ cursor: "pointer",
164
+ // border:
165
+ // filter.value ===
166
+ // tableStates?.filterMaster?.saved_filters?.selectedId
167
+ // ? `3px solid #7a5af8`
168
+ // : "1px solid #C5C5C5",
169
+ borderRadius: "8px",
170
+ bgcolor: "#f2f6f8ff",
171
+ display: "flex",
172
+ justifyContent: "space-between",
173
+ gap: 1,
174
+ alignItems: "center",
175
+ "&:hover .action-icons": {
176
+ opacity: 1,
177
+ visibility: "visible",
178
+ },
179
+ }}
180
+ onClick={() => handleApplyFilter(filter)}
181
+ >
182
+ {filter.value ===
183
+ tableStates?.filterMaster?.saved_filters?.selectedId && (
184
+ <Box sx={{ display: "flex", alignItems: "center" }}>
185
+ <CheckBox />
186
+ </Box>
187
+ )}
112
188
 
113
- onChangeFunction && onChangeFunction(newState);
114
- };
189
+ <ListItemText primary={filter.label} />
115
190
 
116
- const renderList = () => (
117
- <>
118
- <CustomSearch
119
- value={searchTerm}
120
- onChange={setSearchTerm}
121
- className="search-input"
122
- />
123
-
124
- {columnsData?.saved_filter?.length === 0 ? (
125
- <Typography sx={{ mt: 2 }}>No saved filters yet.</Typography>
126
- ) : (
127
- <List
128
- sx={{
129
- display: "flex",
130
- flexDirection: "column",
131
- gap: 1,
132
- mt: 2,
133
- }}
134
- >
135
- {columnsData?.saved_filter
136
- ?.filter((filter) =>
137
- filter.label?.toLowerCase().includes(searchTerm.toLowerCase())
138
- )
139
- ?.map((filter) => (
140
- <ListItem
141
- key={filter?.value}
191
+ <Box
192
+ onClick={(e) => e.stopPropagation()}
193
+ className="action-icons"
142
194
  sx={{
143
- cursor: "pointer",
144
- border:
145
- filter?.value ===
146
- tableStates?.filterMaster?.saved_filters?.selectedId
147
- ? `3px solid #7a5af8`
148
- : "1px solid #C5C5C5",
149
- borderRadius: "8px",
150
195
  display: "flex",
151
- justifyContent: "space-between",
152
196
  gap: 1,
153
- alignItems: "center",
154
- "&:hover .action-icons": {
155
- opacity: 1,
156
- visibility: "visible",
157
- },
197
+ opacity: 0,
198
+ visibility: "hidden",
199
+ transition: "all 0.2s ease",
158
200
  }}
159
- onClick={() => handleAppyFilter(filter)}
160
201
  >
161
- {filter?.value ===
162
- tableStates?.filterMaster?.saved_filters?.selectedId && (
163
- <Box
164
- sx={{
165
- display: "flex",
166
- alignItems: "center",
167
- cursor: "pointer",
168
- color: "green",
169
- rounded: "full",
170
- }}
171
- >
172
- <CheckBox />
173
- </Box>
174
- )}
175
- <ListItemText primary={filter?.label} />
176
-
177
- <Box
178
- onClick={(e) => e.stopPropagation()}
179
- className="action-icons"
180
- sx={{
181
- display: "flex",
182
- gap: 1,
183
- opacity: 0,
184
- visibility: "hidden",
185
- transition: "opacity 0.2s ease, visibility 0.2s ease",
186
- }}
187
- >
202
+ {/** Show edit icon:
203
+ * - For shared lists: only if filter.is_editable === true
204
+ * - For non-shared lists: show (keeps previous behavior)
205
+ */}
206
+ {(!isSharedList || filter.is_editable === true) && (
188
207
  <IconButton
189
208
  size="large"
190
209
  onClick={() => handleListItemClick(filter)}
191
210
  >
192
211
  <EditIcon />
193
212
  </IconButton>
194
-
213
+ )}
214
+ {(!isSharedList || filter.is_editable === true) && (
195
215
  <IconButton
196
216
  size="small"
197
217
  onClick={() => {
@@ -201,24 +221,82 @@ const SavedFilter = ({
201
221
  >
202
222
  <DeleteIcon />
203
223
  </IconButton>
204
- </Box>
205
- </ListItem>
206
- ))}
207
- </List>
208
- )}
209
- </>
210
- );
211
-
212
- const mainBoxStyles = {
213
- ...filterStyles.filterMainComponentWrapper,
214
- ...filterStyles.scrollbarCustom,
215
- };
224
+ )}
225
+ </Box>
226
+ </ListItem>
227
+ ))}
228
+ </List>
229
+ );
216
230
 
217
231
  return (
218
- <Box sx={mainBoxStyles} className="saved-filter-component-wrapper">
219
- {/* Render search input and list */}
220
- {!editMode && renderList()}
232
+ <Box
233
+ // sx={{
234
+ // ...filterStyles.filterMainComponentWrapper,
235
+ // ...filterStyles.scrollbarCustom,
236
+ // }}
237
+ className="saved-filter-component-wrapper"
238
+ >
239
+ {!editMode && (
240
+ <>
241
+ {/* Search Box */}
242
+ <Box sx={{ mb: 2 }}>
243
+ <CustomSearch
244
+ value={searchTerm}
245
+ onChange={setSearchTerm}
246
+ className="search-input"
247
+ />
248
+ </Box>
249
+
250
+ {/* ---- My Filters Section ---- */}
251
+ <Box
252
+ sx={{
253
+ background: "#fff",
254
+ borderRadius: "12px",
255
+ border: "1px solid #eee",
256
+ mb: 2,
257
+ overflow: "hidden",
258
+ }}
259
+ >
260
+ <Accordion defaultExpanded disableGutters elevation={0}>
261
+ <AccordionSummary
262
+ expandIcon={<ExpandMoreIcon fontSize="small" />}
263
+ >
264
+ <Typography fontWeight={600}>My Filters</Typography>
265
+ </AccordionSummary>
266
+ <Divider sx={{ width: "100%" }} />
267
+ <AccordionDetails sx={{ p: "9px" }}>
268
+ {renderList(mappedSavedFilter, false)}
269
+ </AccordionDetails>
270
+ </Accordion>
271
+ </Box>
272
+
273
+ {/* ---- Shared Filters Section ---- */}
274
+ <Box
275
+ sx={{
276
+ background: "#fff",
277
+ borderRadius: "12px",
278
+ border: "1px solid #eee",
279
+ mb: 2,
280
+ overflow: "hidden",
281
+ }}
282
+ >
283
+ <Accordion disableGutters elevation={0}>
284
+ <AccordionSummary
285
+ expandIcon={<ExpandMoreIcon fontSize="small" />}
286
+ >
287
+ <Typography fontWeight={600}>Shared Filters</Typography>
288
+ </AccordionSummary>
289
+ <Divider sx={{ width: "100%" }} />
290
+
291
+ <AccordionDetails sx={{ p: "9px" }}>
292
+ {renderList(mappedSharedFilter, true)}
293
+ </AccordionDetails>
294
+ </Accordion>
295
+ </Box>
296
+ </>
297
+ )}
221
298
 
299
+ {/* Edit Component */}
222
300
  {editMode && (
223
301
  <SavedFilterEditComponent
224
302
  columnsData={columnsData}
@@ -228,7 +306,7 @@ const SavedFilter = ({
228
306
  setEditMode={setEditMode}
229
307
  searchTerm={searchTerm}
230
308
  setSearchTerm={setSearchTerm}
231
- setSavedFilterModalOpen={setSavedFilterModalOpen}
309
+ onSaveFilterButtonClick={onSaveFilterButtonClick}
232
310
  setDeleteFilterModalOpen={setDeleteFilterModalOpen}
233
311
  onChangeFunction={onChangeFunction}
234
312
  filterComponentOptions={filterComponentOptions}
@@ -13,7 +13,7 @@ const SingleFilterRendering = ({
13
13
  columnsData,
14
14
  dropdownData,
15
15
  tableStates,
16
- setSavedFilterModalOpen,
16
+ onSaveFilterButtonClick,
17
17
  onChangeFunction,
18
18
  filterComponentOptions,
19
19
  editMode,
@@ -50,7 +50,7 @@ const SingleFilterRendering = ({
50
50
  {showFilter === "main" && (
51
51
  <MainFilter
52
52
  {...commonProps}
53
- setSavedFilterModalOpen={setSavedFilterModalOpen}
53
+ onSaveFilterButtonClick={onSaveFilterButtonClick}
54
54
  filterComponentOptions={filterComponentOptions}
55
55
  />
56
56
  )}
@@ -59,7 +59,7 @@ const SingleFilterRendering = ({
59
59
  <SavedFilter
60
60
  {...commonProps}
61
61
  {...editProps}
62
- setSavedFilterModalOpen={setSavedFilterModalOpen}
62
+ onSaveFilterButtonClick={onSaveFilterButtonClick}
63
63
  filterComponentOptions={filterComponentOptions}
64
64
  />
65
65
  )}
@@ -15,6 +15,7 @@ import AttributesFilter from "./components/attributes-filter";
15
15
  import { filterStyles } from "./style";
16
16
  import { deepMergeObjects } from "../../libs/utils/deep-merge-objects";
17
17
  import SingleFilterRendering from "./components/single-filter-rendering";
18
+ import SavedFilterModalView from "../common/saved-filter-modal";
18
19
 
19
20
  export function TableFilter({
20
21
  onClose,
@@ -32,6 +33,8 @@ export function TableFilter({
32
33
 
33
34
  // remove this
34
35
  const [saveFilterModalOpen, setSaveFilterModalOpen] = useState(false);
36
+ const [savedFilterModalOpen, setSavedFilterModalOpen] = useState(false);
37
+
35
38
  const [deleteFilterModalOpen, setDeleteFilterModalOpen] = useState(false);
36
39
 
37
40
  const [searchTerm, setSearchTerm] = useState<string>("");
@@ -114,6 +117,93 @@ export function TableFilter({
114
117
  type: "text",
115
118
  };
116
119
 
120
+ const hasSavedFilterRecords = Boolean(columnsData?.saved_filter?.length);
121
+
122
+ // const handleSaveFilterButtonClick = () => {
123
+ // if (editMode) {
124
+ // setSavedFilterModalOpen(true);
125
+ // return;
126
+ // }
127
+
128
+ // setSavedFilterModalOpen(true);
129
+ // };
130
+
131
+ // const handleSaveFilterButtonClick = () => {
132
+ // // Reset filterMaster fields when creating a new filter
133
+ // if (!editMode) {
134
+ // setFilterMaster((prev) => ({
135
+ // ...prev,
136
+ // saved_filters: {
137
+ // selectedId: "",
138
+ // selectedName: "",
139
+ // selectedCode: "",
140
+ // description: "",
141
+ // shareWithTeam: false,
142
+ // allowTeamEdit: false,
143
+ // },
144
+ // }));
145
+ // }
146
+
147
+ // setSavedFilterModalOpen(true);
148
+ // };
149
+
150
+ const handleSaveFilterButtonClick = () => {
151
+ if (!editMode) {
152
+ setFilterMaster((prev) => {
153
+ if (!prev) return prev;
154
+
155
+ return {
156
+ ...prev,
157
+ saved_filters: {
158
+ ...prev.saved_filters,
159
+ shareWithTeam: false,
160
+ allowTeamEdit: false,
161
+ },
162
+ };
163
+ });
164
+ }
165
+
166
+ setSavedFilterModalOpen(true);
167
+ };
168
+
169
+ const handleSavedFilterModalSave = () => {
170
+ const selectedId = filterMaster?.saved_filters?.selectedId;
171
+ const selectedName = filterMaster?.saved_filters?.selectedName || "";
172
+ const selectedCode = filterMaster?.saved_filters?.selectedCode;
173
+
174
+ const newFilterMasterState = {
175
+ ...filterMaster,
176
+ saved_filters: {
177
+ ...(filterMaster?.saved_filters ?? {}),
178
+ selectedId,
179
+ selectedName,
180
+ selectedCode,
181
+ },
182
+ } as FilterMasterStateProps;
183
+
184
+ setFilterMaster(newFilterMasterState);
185
+
186
+ const newState = {
187
+ filterMaster: newFilterMasterState,
188
+ filters,
189
+ };
190
+
191
+ onChangeFunction && onChangeFunction(newState);
192
+
193
+ if (editMode) {
194
+ onUpdateFilter && onUpdateFilter(selectedName);
195
+ const isSingleSavedFilterEditMode =
196
+ filterComponentOptions?.tabOptions?.savedFilter?.editMode;
197
+ if (!isSingleSavedFilterEditMode) {
198
+ setEditMode(false);
199
+ }
200
+ } else {
201
+ onSaveFilter && onSaveFilter(selectedName);
202
+ }
203
+
204
+ setSavedFilterModalOpen(false);
205
+ };
206
+
117
207
  const handleTabChange = (_: React.SyntheticEvent, newValue: number) => {
118
208
  const tabType = tabMapping[newValue]?.label;
119
209
 
@@ -144,9 +234,12 @@ export function TableFilter({
144
234
 
145
235
  if (tabType?.label === "Saved Filter") {
146
236
  patches.saved_filters = {
237
+ ...(filterMaster?.saved_filters ?? {}),
147
238
  selectedId: "",
148
239
  selectedName: "",
149
240
  selectedCode: "",
241
+ is_shared: undefined,
242
+ is_editable: undefined,
150
243
  };
151
244
  } else if (tabType?.label === "Attributes") {
152
245
  patches.attributes = { radio: [], selected: "" };
@@ -218,7 +311,7 @@ export function TableFilter({
218
311
  {...commonProps}
219
312
  {...savedFilterProps}
220
313
  {...attributesProps}
221
- setSavedFilterModalOpen={setSaveFilterModalOpen}
314
+ onSaveFilterButtonClick={handleSaveFilterButtonClick}
222
315
  filterComponentOptions={finalComponentOptions}
223
316
  />
224
317
  )}
@@ -231,7 +324,7 @@ export function TableFilter({
231
324
  >
232
325
  <MainFilter
233
326
  {...commonProps}
234
- setSavedFilterModalOpen={setSaveFilterModalOpen}
327
+ onSaveFilterButtonClick={handleSaveFilterButtonClick}
235
328
  filterComponentOptions={finalComponentOptions}
236
329
  />
237
330
  </CustomTabPanel>
@@ -246,7 +339,7 @@ export function TableFilter({
246
339
  <SavedFilter
247
340
  {...commonProps}
248
341
  {...savedFilterProps}
249
- setSavedFilterModalOpen={setSaveFilterModalOpen}
342
+ onSaveFilterButtonClick={handleSaveFilterButtonClick}
250
343
  filterComponentOptions={finalComponentOptions}
251
344
  />
252
345
  </CustomTabPanel>
@@ -302,7 +395,7 @@ export function TableFilter({
302
395
  const newFilterMasterState = {
303
396
  ...filterMaster,
304
397
  saved_filters: {
305
- ...filterMaster?.attributes,
398
+ ...(filterMaster?.saved_filters ?? {}),
306
399
  selectedId,
307
400
  selectedName,
308
401
  selectedCode,
@@ -429,7 +522,7 @@ export function TableFilter({
429
522
  const newFilterMasterState = {
430
523
  ...filterMaster,
431
524
  saved_filters: {
432
- ...filterMaster?.attributes,
525
+ ...(filterMaster?.saved_filters ?? {}),
433
526
  selectedId,
434
527
  selectedName,
435
528
  selectedCode,
@@ -520,6 +613,15 @@ export function TableFilter({
520
613
  maxWidth="xs"
521
614
  />
522
615
  )}
616
+ <SavedFilterModalView
617
+ open={savedFilterModalOpen}
618
+ onClose={() => setSavedFilterModalOpen(false)}
619
+ onSave={handleSavedFilterModalSave}
620
+ filterMaster={tableStates.filterMaster}
621
+ setFilterMaster={tableStates.setFilterMaster}
622
+ hasSavedFilters={hasSavedFilterRecords}
623
+ columnsData={columnsData}
624
+ />
523
625
  </Box>
524
626
  );
525
627
  }
@@ -7,11 +7,11 @@ const LoginButton = () => {
7
7
 
8
8
  const handleLogin = async () => {
9
9
  setLoading(true);
10
- const api_url = "https://api.eth-qa.rezolut.in/api/admin/auth";
11
- // const api_url = "http://localhost:4011/api/admin/auth";
12
- const email_id = "kartik.shetty@rezolut.in";
10
+ const api_url = "https://api.eth-qa.rezolut.in/api/enrol/auth";
11
+ // const api_url = "http://localhost:6011/api/auth";
12
+ const email_id = "shraddha.nandurkar@rezolut.in";
13
13
  const email_otp = "123456";
14
- const sub_domain = "nair";
14
+ const sub_domain = "universal";
15
15
 
16
16
  setLoading(true);
17
17
 
@@ -21,8 +21,6 @@ const LoginButton = () => {
21
21
  subdomain: sub_domain,
22
22
  })
23
23
  .then(async (emailAPIResponse) => {
24
- console.log(emailAPIResponse.data);
25
-
26
24
  await axios
27
25
  .post(`${api_url}/sso/otp/generate`, {
28
26
  identifier: email_id,
@@ -37,10 +35,9 @@ const LoginButton = () => {
37
35
  otp_id: otpAPIResponse.data.otp_id,
38
36
  reset: true,
39
37
  service: "email",
40
- subdomain: "nair",
38
+ subdomain: "universal",
41
39
  })
42
40
  .then((otpVerifyResponse) => {
43
- console.log(otpVerifyResponse.data);
44
41
  const token = otpVerifyResponse.data.accessToken;
45
42
 
46
43
  if (token) {
@@ -163,9 +163,12 @@ export const useDeleteFilterAPI = (tableStates: CraftTableOptionsProps) => {
163
163
  const newFilterMasterState = {
164
164
  ...filterMaster,
165
165
  saved_filters: {
166
+ ...(filterMaster?.saved_filters ?? {}),
166
167
  selectedId: "",
167
168
  selectedName: "",
168
169
  selectedCode: "",
170
+ shareWithTeam: undefined,
171
+ allowTeamEdit: undefined,
169
172
  },
170
173
  activeFilterTabIndex: -1,
171
174
  };