rez-table-listing-mui 1.2.18 → 1.3.0

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.
Files changed (34) hide show
  1. package/dist/index.d.ts +63 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +1 -1
  5. package/dist/index.mjs.map +1 -1
  6. package/package.json +2 -3
  7. package/src/kanban/index.tsx +24 -21
  8. package/src/listing/components/common/loader/loader.tsx +1 -0
  9. package/src/listing/components/filter/components/attributes-filter.tsx +3 -91
  10. package/src/listing/components/filter/components/forms/components/Date.tsx +2 -2
  11. package/src/listing/components/filter/components/forms/components/Dropdown.tsx +2 -2
  12. package/src/listing/components/filter/components/forms/components/Filter-criteria.tsx +31 -82
  13. package/src/listing/components/filter/components/forms/components/Multi-Select.tsx +2 -2
  14. package/src/listing/components/filter/components/forms/components/Select.tsx +2 -2
  15. package/src/listing/components/filter/components/forms/components/Textfield.tsx +2 -2
  16. package/src/listing/components/filter/components/forms/components/empty-list.tsx +17 -0
  17. package/src/listing/components/filter/components/forms/components/filter-criteria-entity-list.tsx +92 -0
  18. package/src/listing/components/filter/components/forms/components/filter-criteria-list.tsx +104 -0
  19. package/src/listing/components/filter/components/forms/components/styles.tsx +2 -1
  20. package/src/listing/components/filter/components/forms/index.tsx +238 -174
  21. package/src/listing/components/filter/components/main-filter.tsx +6 -14
  22. package/src/listing/components/filter/components/saved-edit-filter.tsx +0 -31
  23. package/src/listing/components/filter/components/saved-filter.tsx +0 -22
  24. package/src/listing/components/filter/index.tsx +162 -130
  25. package/src/listing/components/filter/style.ts +20 -3
  26. package/src/listing/libs/hooks/useCraftTable.tsx +9 -0
  27. package/src/listing/libs/hooks/useEntityTableAPI.tsx +25 -0
  28. package/src/listing/libs/utils/apiColumn.ts +27 -1
  29. package/src/listing/libs/utils/common.ts +1 -1
  30. package/src/listing/libs/utils/deep-merge-objects.ts +18 -0
  31. package/src/listing/types/common.ts +0 -2
  32. package/src/listing/types/filter.ts +54 -7
  33. package/src/listing/types/table-options.ts +8 -0
  34. package/src/view/FIlterWrapper.tsx +45 -6
@@ -11,10 +11,9 @@ const MainFilter = ({
11
11
  columnsData,
12
12
  dropdownData,
13
13
  tableStates,
14
- selectedFilters,
15
- setSelectedFilters,
16
14
  setSavedFilterModalOpen,
17
15
  onChangeFunction,
16
+ filterComponentOptions,
18
17
  }: FilterFormComponentProps) => {
19
18
  const [searchTerm, setSearchTerm] = useState<string>("");
20
19
  const [criteriaSearchTerm, setCriteriaSearchTerm] = useState<string>("");
@@ -35,21 +34,17 @@ const MainFilter = ({
35
34
  setFilters((prev) =>
36
35
  prev.filter((filter) => filter.filter_attribute !== filter_attribute)
37
36
  );
38
- setSelectedFilters((prev) =>
39
- prev.filter((filter) => filter.filter_attribute !== filter_attribute)
40
- );
41
37
  setFilters((prev) => {
42
- const next = prev.filter((f) => f.filter_attribute !== filter_attribute);
43
- setSelectedFilters((prevSel) =>
44
- prevSel.filter((f) => f.filter_attribute !== filter_attribute)
38
+ const newFilters = prev.filter(
39
+ (f) => f.filter_attribute !== filter_attribute
45
40
  );
46
41
 
47
42
  onChangeFunction &&
48
43
  onChangeFunction({
49
44
  filterMaster: filterMaster,
50
- filters: next,
45
+ filters: newFilters,
51
46
  });
52
- return next;
47
+ return newFilters;
53
48
  });
54
49
  };
55
50
 
@@ -60,8 +55,6 @@ const MainFilter = ({
60
55
 
61
56
  return (
62
57
  <Box sx={mainBoxStyles} className="main-filter-component-wrapper">
63
- {/* Set selectedFilters state */}
64
-
65
58
  {/* Render selectedFilters state */}
66
59
  <FilterForm
67
60
  columnsData={columnsData}
@@ -69,13 +62,12 @@ const MainFilter = ({
69
62
  setSearchTerm={setSearchTerm}
70
63
  criteriaSearchTerm={criteriaSearchTerm}
71
64
  setCriteriaSearchTerm={setCriteriaSearchTerm}
72
- selectedFilters={selectedFilters}
73
- setSelectedFilters={setSelectedFilters}
74
65
  handleRemoveFilter={handleRemoveFilter}
75
66
  tableStates={tableStates}
76
67
  setSavedFilterModalOpen={setSavedFilterModalOpen}
77
68
  dropdownData={dropdownData}
78
69
  onChangeFunction={onChangeFunction}
70
+ filterComponentOptions={filterComponentOptions}
79
71
  />
80
72
  </Box>
81
73
  );
@@ -5,7 +5,6 @@ import {
5
5
  FilterColumnsDataProps,
6
6
  FilterDropdownDataProps,
7
7
  FilterMasterStateProps,
8
- UpdatedFilterStateProps,
9
8
  } from "../../../types/filter";
10
9
  import { CraftTableOptionsProps } from "../../../types/table-options";
11
10
  import { onFilterChangeFunctionProps } from "../../../types/common";
@@ -14,8 +13,6 @@ const SavedFilterEditComponent = ({
14
13
  columnsData,
15
14
  dropdownData,
16
15
  tableStates,
17
- selectedFilters,
18
- setSelectedFilters,
19
16
  editMode,
20
17
  setEditMode,
21
18
  searchTerm,
@@ -29,10 +26,6 @@ const SavedFilterEditComponent = ({
29
26
  columnsData: FilterColumnsDataProps;
30
27
  dropdownData: FilterDropdownDataProps;
31
28
  tableStates: CraftTableOptionsProps;
32
- selectedFilters: UpdatedFilterStateProps[];
33
- setSelectedFilters: React.Dispatch<
34
- React.SetStateAction<UpdatedFilterStateProps[]>
35
- >;
36
29
  editMode?: boolean;
37
30
  setEditMode?: React.Dispatch<React.SetStateAction<boolean>>;
38
31
  searchTerm?: string;
@@ -52,34 +45,12 @@ const SavedFilterEditComponent = ({
52
45
  setFilters((prev) =>
53
46
  prev.filter((filter) => filter?.filter_attribute !== filter_attribute)
54
47
  );
55
- setSelectedFilters((prev) =>
56
- prev.filter((filter) => filter?.filter_attribute !== filter_attribute)
57
- );
58
48
  };
59
49
 
60
50
  const handleBackButtonClick = () => {
61
51
  setEditMode && setEditMode(false);
62
52
  setFilters([]);
63
53
 
64
- // const newFilterMasterState = {
65
- // ...filterMaster,
66
- // saved_filters: {
67
- // ...filterMaster?.saved_filters,
68
- // selectedId: "",
69
- // selectedName: "",
70
- // },
71
- // activeFilterTabIndex: -1,
72
- // } as FilterMasterStateProps;
73
-
74
- // setFilterMaster(newFilterMasterState);
75
-
76
- // const newState = {
77
- // filterMaster: newFilterMasterState,
78
- // filters: filters,
79
- // };
80
-
81
- // onChangeFunction && onChangeFunction(newState);
82
-
83
54
  setFilterMaster(
84
55
  (prev) =>
85
56
  ({
@@ -116,8 +87,6 @@ const SavedFilterEditComponent = ({
116
87
 
117
88
  {/* Render selectedFilters state */}
118
89
  <FilterForm
119
- selectedFilters={selectedFilters}
120
- setSelectedFilters={setSelectedFilters}
121
90
  handleRemoveFilter={handleRemoveFilter}
122
91
  editMode={editMode}
123
92
  tableStates={tableStates}
@@ -22,8 +22,6 @@ const SavedFilter = ({
22
22
  columnsData,
23
23
  dropdownData,
24
24
  tableStates,
25
- selectedFilters,
26
- setSelectedFilters,
27
25
  editMode,
28
26
  setEditMode,
29
27
  setDeleteFilterModalOpen,
@@ -51,29 +49,11 @@ const SavedFilter = ({
51
49
  } as FilterMasterStateProps)
52
50
  );
53
51
 
54
- setSelectedFilters([]);
55
52
  setEditMode && setEditMode(false);
56
53
  };
57
54
  }, []);
58
55
 
59
56
  const handleListItemClick = (filter: FilterOperationListProps) => {
60
- // setFilterMaster(
61
- // (prev) =>
62
- // ({
63
- // ...prev,
64
- // saved_filters: {
65
- // ...prev?.attributes,
66
- // selectedId: filter?.value,
67
- // selectedName: filter?.label,
68
- // },
69
- // attributes: {
70
- // ...filterMaster?.attributes,
71
- // radio: [],
72
- // },
73
- // activeFilterTabIndex: tabValue,
74
- // } as FilterMasterStateProps)
75
- // );
76
-
77
57
  const newFilterMasterState = {
78
58
  ...filterMaster,
79
59
  saved_filters: {
@@ -238,8 +218,6 @@ const SavedFilter = ({
238
218
  columnsData={columnsData}
239
219
  dropdownData={dropdownData}
240
220
  tableStates={tableStates}
241
- selectedFilters={selectedFilters}
242
- setSelectedFilters={setSelectedFilters}
243
221
  editMode={editMode}
244
222
  setEditMode={setEditMode}
245
223
  searchTerm={searchTerm}
@@ -1,10 +1,10 @@
1
- import React, { useEffect, useState } from "react";
1
+ import React, { useState } from "react";
2
2
  import { Box, IconButton, Typography } from "@mui/material";
3
3
  import CloseIcon from "@mui/icons-material/Close";
4
4
  import {
5
+ FilterComponentOptions,
5
6
  FilterDrawerProps,
6
7
  FilterMasterStateProps,
7
- UpdatedFilterStateProps,
8
8
  } from "../../types/filter";
9
9
 
10
10
  import ConfirmModal, { InputField } from "../common/confirm-modal";
@@ -14,6 +14,7 @@ import MainFilter from "./components/main-filter";
14
14
  import SavedFilter from "./components/saved-filter";
15
15
  import AttributesFilter from "./components/attributes-filter";
16
16
  import { filterStyles } from "./style";
17
+ import { deepMergeObjects } from "../../libs/utils/deep-merge-objects";
17
18
 
18
19
  export function TableFilter({
19
20
  onClose,
@@ -24,17 +25,10 @@ export function TableFilter({
24
25
  onUpdateFilter,
25
26
  dropdownData,
26
27
  onChangeFunction,
28
+ filterComponentOptions,
27
29
  }: FilterDrawerProps) {
28
30
  const [tabValue, setTabValue] = useState(0);
29
31
  const [editMode, setEditMode] = useState(false);
30
- const [selectedFilters, setSelectedFilters] = useState<
31
- UpdatedFilterStateProps[]
32
- >([]);
33
-
34
- // tabs
35
- const FILTER_TAB = 0;
36
- const SAVED_TAB = 1;
37
- const ATTR_TAB = 2;
38
32
 
39
33
  // remove this
40
34
  const [saveFilterModalOpen, setSaveFilterModalOpen] = useState(false);
@@ -51,6 +45,40 @@ export function TableFilter({
51
45
  setShowFilterOption,
52
46
  } = tableStates;
53
47
 
48
+ const defaultOptions: FilterComponentOptions = {
49
+ showMainHeader: true,
50
+ showTabs: true,
51
+ tabOptions: {
52
+ mainFilter: {
53
+ showSaveButton: true,
54
+ showClearAllButton: true,
55
+ },
56
+ },
57
+ showMainFilter: true,
58
+ showSavedFilter: true,
59
+ showAttributesFilter: true,
60
+ };
61
+
62
+ const finalComponentOptions = deepMergeObjects<FilterComponentOptions>(
63
+ defaultOptions,
64
+ filterComponentOptions ?? {}
65
+ );
66
+
67
+ const showMainHeader = finalComponentOptions?.showMainHeader;
68
+ const showTabs = finalComponentOptions?.showTabs;
69
+ const showMainFilter = showTabs && finalComponentOptions?.showMainFilter;
70
+ const showSavedFilter = showTabs && finalComponentOptions?.showSavedFilter;
71
+ const showAttributesFilter =
72
+ showTabs && finalComponentOptions?.showAttributesFilter;
73
+
74
+ type TabType = "main" | "saved" | "attributes";
75
+
76
+ // Map tabs to type
77
+ const tabMapping: TabType[] = [];
78
+ if (showMainFilter) tabMapping.push("main");
79
+ if (showSavedFilter) tabMapping.push("saved");
80
+ if (showAttributesFilter) tabMapping.push("attributes");
81
+
54
82
  const clearAttributeRadio = () => {
55
83
  const newFilterMaster = {
56
84
  ...filterMaster,
@@ -58,17 +86,10 @@ export function TableFilter({
58
86
  ...filterMaster?.attributes,
59
87
  radio: [],
60
88
  },
61
- activeFilterTabIndex: FILTER_TAB,
89
+ activeFilterTabIndex: 0,
62
90
  };
63
91
 
64
92
  setFilterMaster(newFilterMaster as FilterMasterStateProps);
65
-
66
- // const newState = {
67
- // filterMaster: newFilterMaster,
68
- // filters: filters,
69
- // };
70
-
71
- // onChangeFunction && onChangeFunction(newState);
72
93
  };
73
94
 
74
95
  const filterNameInput: InputField = {
@@ -78,145 +99,156 @@ export function TableFilter({
78
99
  type: "text",
79
100
  };
80
101
 
81
- useEffect(() => {
82
- if (!columnsData || !columnsData?.column_list) {
83
- setSelectedFilters([]);
84
- return;
85
- }
86
-
87
- const updated = filters?.map((filter) => {
88
- const matchingColumn = columnsData?.column_list.find(
89
- (column) => column.attribute_key === filter.filter_attribute
90
- );
91
- const matchingDropdownList =
92
- columnsData.operation_list[matchingColumn?.data_type || "text"];
93
-
94
- return {
95
- ...filter,
96
- id: matchingColumn?.id ?? "",
97
- name: matchingColumn?.name,
98
- data_type: matchingColumn?.data_type,
99
- dropdown_list: matchingDropdownList,
100
- };
101
- });
102
-
103
- setSelectedFilters(updated || []);
104
- }, [filters, columnsData, tabValue]);
102
+ //FOR TABS
103
+ const tabItems: TabItem[] = [
104
+ { label: "Filter" },
105
+ { label: "Saved Filter" },
106
+ { label: "Attributes" },
107
+ ];
105
108
 
106
109
  const handleTabChange = (_: React.SyntheticEvent, newValue: number) => {
107
- if (tabValue === ATTR_TAB && newValue === FILTER_TAB) {
110
+ const tabType = tabMapping[newValue];
111
+
112
+ if (tabType === "attributes" && tabMapping[tabValue] === "main") {
108
113
  clearAttributeRadio();
109
114
  }
110
115
 
111
116
  setTabValue(newValue);
112
- if (newValue === 0) {
117
+
118
+ if (tabType === "main") {
113
119
  setEditMode(false);
114
- setSelectedFilters([]);
120
+
121
+ setFilterMaster(
122
+ (prev) =>
123
+ ({ ...prev, activeFilterTabIndex: 0 } as FilterMasterStateProps)
124
+ );
115
125
  }
116
126
  };
117
127
 
118
- //FOR TABS
119
- const tabItems: TabItem[] = [
120
- { label: "Filter" },
121
- { label: "Saved Filter" },
122
- { label: "Attributes" },
123
- ];
124
-
125
128
  const handleTabCrossClick = (index: number) => {
126
- // always-clear bits
129
+ const tabType = tabMapping[index];
130
+
127
131
  setFilters([]);
128
- setSelectedFilters([]);
129
132
 
130
- // only tab 1 needs this
131
- if (index === 1) setEditMode(false);
133
+ if (tabType === "saved") setEditMode(false);
132
134
 
133
- const patches: Record<number, Partial<FilterMasterStateProps>> = {
134
- 0: {}, // no extra fields
135
- 1: { saved_filters: { selectedId: "", selectedName: "" } },
136
- 2: { attributes: { radio: [], selected: "" } },
137
- };
135
+ const patches: Partial<FilterMasterStateProps> = {};
136
+
137
+ if (tabType === "saved") {
138
+ patches.saved_filters = { selectedId: "", selectedName: "" };
139
+ } else if (tabType === "attributes") {
140
+ patches.attributes = { radio: [], selected: "" };
141
+ }
138
142
 
139
143
  const newFilterMasterState = {
140
144
  ...filterMaster,
141
145
  activeFilterTabIndex: -1,
142
- ...(patches[index] ?? {}),
146
+ ...patches,
143
147
  } as FilterMasterStateProps;
144
148
 
145
149
  setFilterMaster(newFilterMasterState);
146
150
 
147
- const newState = {
148
- filterMaster: newFilterMasterState,
149
- filters: filters,
150
- };
151
-
152
- onChangeFunction && onChangeFunction(newState);
151
+ onChangeFunction &&
152
+ onChangeFunction({ filterMaster: newFilterMasterState, filters });
153
153
  };
154
154
 
155
155
  return (
156
156
  <Box sx={filterStyles.filterContainer}>
157
- <Box sx={filterStyles.filterMainHeader}>
158
- <Typography variant="h6" fontWeight="bold" fontSize="18px">
159
- Filter
160
- </Typography>
161
- <IconButton
162
- onClick={(e) => {
163
- e.stopPropagation();
164
- onClose && onClose();
165
- setShowFilterOption(false);
166
- }}
167
- aria-label="close"
168
- >
169
- <CloseIcon fontSize="small" />
170
- </IconButton>
171
- </Box>
172
-
173
- <CustomTabs
174
- value={tabValue}
175
- onChange={handleTabChange}
176
- tabItems={tabItems}
177
- activeFilterIndex={filterMaster?.activeFilterTabIndex ?? 0}
178
- handleCrossClick={handleTabCrossClick}
179
- />
180
-
181
- <CustomTabPanel value={tabValue} index={0} sx={{ p: "1.5rem 0.75rem" }}>
182
- <MainFilter
183
- columnsData={columnsData}
184
- tableStates={tableStates}
185
- selectedFilters={selectedFilters}
186
- setSelectedFilters={setSelectedFilters}
187
- setSavedFilterModalOpen={setSaveFilterModalOpen}
188
- dropdownData={dropdownData}
189
- onChangeFunction={onChangeFunction}
157
+ {showMainHeader && (
158
+ <Box sx={filterStyles.filterMainHeader}>
159
+ <Typography variant="h6" fontWeight="bold" fontSize="18px">
160
+ Filter
161
+ </Typography>
162
+ <IconButton
163
+ onClick={(e) => {
164
+ e.stopPropagation();
165
+ onClose && onClose();
166
+ setShowFilterOption(false);
167
+ }}
168
+ aria-label="close"
169
+ >
170
+ <CloseIcon fontSize="small" />
171
+ </IconButton>
172
+ </Box>
173
+ )}
174
+
175
+ {showTabs && (
176
+ <CustomTabs
177
+ value={tabValue}
178
+ onChange={handleTabChange}
179
+ tabItems={tabItems}
180
+ activeFilterIndex={filterMaster?.activeFilterTabIndex ?? 0}
181
+ handleCrossClick={handleTabCrossClick}
190
182
  />
191
- </CustomTabPanel>
192
-
193
- <CustomTabPanel value={tabValue} index={1} sx={{ p: "1.5rem 0.75rem" }}>
194
- <SavedFilter
195
- columnsData={columnsData}
196
- tableStates={tableStates}
197
- selectedFilters={selectedFilters}
198
- setSelectedFilters={setSelectedFilters}
199
- editMode={editMode}
200
- setEditMode={setEditMode}
201
- setDeleteFilterModalOpen={setDeleteFilterModalOpen}
202
- setSavedFilterModalOpen={setSaveFilterModalOpen}
203
- dropdownData={dropdownData}
204
- tabValue={tabValue}
205
- onChangeFunction={onChangeFunction}
206
- />
207
- </CustomTabPanel>
208
-
209
- <CustomTabPanel value={tabValue} index={2} sx={{ p: "1.5rem 0.75rem" }}>
210
- <AttributesFilter
211
- columnsData={columnsData}
212
- tableStates={tableStates}
213
- dropdownData={dropdownData}
214
- searchTerm={searchTerm}
215
- setSearchTerm={setSearchTerm}
216
- tabValue={tabValue}
217
- onChangeFunction={onChangeFunction}
218
- />
219
- </CustomTabPanel>
183
+ )}
184
+
185
+ {!showTabs && (
186
+ <Box sx={{ padding: "1.5rem 0.75rem", height: "100%" }}>
187
+ <MainFilter
188
+ columnsData={columnsData}
189
+ tableStates={tableStates}
190
+ setSavedFilterModalOpen={setSaveFilterModalOpen}
191
+ dropdownData={dropdownData}
192
+ onChangeFunction={onChangeFunction}
193
+ filterComponentOptions={finalComponentOptions}
194
+ />
195
+ </Box>
196
+ )}
197
+
198
+ {showMainFilter && (
199
+ <CustomTabPanel
200
+ value={tabValue}
201
+ index={tabMapping.indexOf("main")}
202
+ sx={{ p: "1.5rem 0.75rem" }}
203
+ >
204
+ <MainFilter
205
+ columnsData={columnsData}
206
+ tableStates={tableStates}
207
+ setSavedFilterModalOpen={setSaveFilterModalOpen}
208
+ dropdownData={dropdownData}
209
+ onChangeFunction={onChangeFunction}
210
+ filterComponentOptions={finalComponentOptions}
211
+ />
212
+ </CustomTabPanel>
213
+ )}
214
+
215
+ {showSavedFilter && (
216
+ <CustomTabPanel
217
+ value={tabValue}
218
+ index={tabMapping.indexOf("saved")}
219
+ sx={{ p: "1.5rem 0.75rem" }}
220
+ >
221
+ <SavedFilter
222
+ columnsData={columnsData}
223
+ tableStates={tableStates}
224
+ editMode={editMode}
225
+ setEditMode={setEditMode}
226
+ setDeleteFilterModalOpen={setDeleteFilterModalOpen}
227
+ setSavedFilterModalOpen={setSaveFilterModalOpen}
228
+ dropdownData={dropdownData}
229
+ tabValue={tabValue}
230
+ onChangeFunction={onChangeFunction}
231
+ />
232
+ </CustomTabPanel>
233
+ )}
234
+
235
+ {showAttributesFilter && (
236
+ <CustomTabPanel
237
+ value={tabValue}
238
+ index={tabMapping.indexOf("attributes")}
239
+ sx={{ p: "1.5rem 0.75rem" }}
240
+ >
241
+ <AttributesFilter
242
+ columnsData={columnsData}
243
+ tableStates={tableStates}
244
+ dropdownData={dropdownData}
245
+ searchTerm={searchTerm}
246
+ setSearchTerm={setSearchTerm}
247
+ tabValue={tabValue}
248
+ onChangeFunction={onChangeFunction}
249
+ />
250
+ </CustomTabPanel>
251
+ )}
220
252
 
221
253
  <ConfirmModal
222
254
  open={saveFilterModalOpen}
@@ -12,6 +12,7 @@ interface filterFormStyleType {
12
12
  formEditModeStyle: SxProps<Theme>;
13
13
  formFlexContainer: SxProps<Theme>;
14
14
  formListItem: SxProps<Theme>;
15
+ formListSectionHeader: SxProps<Theme>;
15
16
  formListItemHeader: SxProps<Theme>;
16
17
  formListItemHeaderName: SxProps<Theme>;
17
18
  formListItemHeaderDropdown: SxProps<Theme>;
@@ -95,13 +96,21 @@ export const filterFormStyles: filterFormStyleType = {
95
96
 
96
97
  formListItem: {
97
98
  p: 1,
98
- borderRadius: 2,
99
- backgroundColor: "#FAFAFA",
99
+ backgroundColor: "#FFFFFF",
100
100
  display: "flex",
101
101
  flexDirection: "column",
102
102
  gap: 0.5,
103
103
  },
104
104
 
105
+ formListSectionHeader: {
106
+ display: "flex",
107
+ alignItems: "center",
108
+ justifyContent: "space-between",
109
+ gap: 1,
110
+ p: 1,
111
+ backgroundColor: "#FAFAF9",
112
+ },
113
+
105
114
  formListItemHeader: {
106
115
  display: "flex",
107
116
  justifyContent: "flex-start",
@@ -116,9 +125,17 @@ export const filterFormStyles: filterFormStyleType = {
116
125
  },
117
126
 
118
127
  formListItemHeaderDropdown: {
119
- fontSize: "13px",
128
+ fontSize: "12px",
120
129
  minWidth: 50,
121
130
  border: "none",
122
131
  boxShadow: "none",
132
+
133
+ "& .MuiSelect-root": {
134
+ fontSize: "0.75rem",
135
+
136
+ "& .MuiSelect-select": {
137
+ paddingBottom: "0rem",
138
+ },
139
+ },
123
140
  },
124
141
  };
@@ -8,6 +8,8 @@ import {
8
8
  import { useState } from "react";
9
9
  import { CraftTableOptionsProps } from "../../types/table-options";
10
10
  import {
11
+ FilterDataMainFilterEntityListProps,
12
+ FilterDataProps,
11
13
  FilterMasterStateProps,
12
14
  FilterOperationListProps,
13
15
  FilterStateProps,
@@ -43,6 +45,9 @@ export function useCraftTable(paginationPageSize: number = 25) {
43
45
 
44
46
  //For filter criteria paper
45
47
  const [showFilterOptions, setShowFilterOption] = useState<boolean>(false);
48
+ const [filterData, setFilterData] = useState<FilterDataProps | null>(null);
49
+ const [selectedFilterEntity, setSelectedFilterEntity] =
50
+ useState<FilterDataMainFilterEntityListProps>();
46
51
 
47
52
  if (pagination.pageIndex < 0 || pagination.pageSize <= 0) {
48
53
  throw new Error(
@@ -83,6 +88,10 @@ export function useCraftTable(paginationPageSize: number = 25) {
83
88
  setShowFilterOption: setShowFilterOption,
84
89
  columnPinning: columnPinning,
85
90
  setColumnPinning: setColumnPinning,
91
+ filterData: filterData,
92
+ setFilterData: setFilterData,
93
+ selectedFilterEntity: selectedFilterEntity,
94
+ setSelectedFilterEntity: setSelectedFilterEntity,
86
95
  };
87
96
 
88
97
  return craftTableOptions;
@@ -15,6 +15,8 @@ import {
15
15
  commonGetDropdownDataAPI,
16
16
  createSavedFilter,
17
17
  deleteSavedFilter,
18
+ getFilteEntityList,
19
+ getFilterCriteriaByEntity,
18
20
  getSettingsData,
19
21
  saveSettingsData,
20
22
  updateSavedFilter,
@@ -22,6 +24,7 @@ import {
22
24
  } from "../utils/apiColumn";
23
25
  import {
24
26
  FilterColumnsDataProps,
27
+ FilterDataMainFilterEntityListProps,
25
28
  FilterMasterStateProps,
26
29
  } from "../../types/filter";
27
30
  import { CraftTableOptionsProps } from "../../types/table-options";
@@ -297,3 +300,25 @@ export const useGetSettingsDataAPI = (entity_type: string) => {
297
300
 
298
301
  return { getSettingsAPIData };
299
302
  };
303
+
304
+ export const useGetFilterEntityListAndCriteria = ({
305
+ entity_type,
306
+ selectedFilterEntity,
307
+ }: {
308
+ entity_type: string;
309
+ selectedFilterEntity: FilterDataMainFilterEntityListProps | undefined;
310
+ }) => {
311
+ const filterEntityList = useQuery({
312
+ queryKey: ["filterEntityList", entity_type],
313
+ queryFn: () => getFilteEntityList(entity_type),
314
+ enabled: !!entity_type,
315
+ });
316
+
317
+ const filterEntityWiseCriteria = useQuery({
318
+ queryKey: ["filterEntityWiseCriteria", selectedFilterEntity],
319
+ queryFn: () => getFilterCriteriaByEntity(selectedFilterEntity),
320
+ enabled: !!selectedFilterEntity,
321
+ });
322
+
323
+ return { filterEntityList, filterEntityWiseCriteria };
324
+ };