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.
- package/dist/index.d.ts +63 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -3
- package/src/kanban/index.tsx +24 -21
- package/src/listing/components/common/loader/loader.tsx +1 -0
- package/src/listing/components/filter/components/attributes-filter.tsx +3 -91
- package/src/listing/components/filter/components/forms/components/Date.tsx +2 -2
- package/src/listing/components/filter/components/forms/components/Dropdown.tsx +2 -2
- package/src/listing/components/filter/components/forms/components/Filter-criteria.tsx +31 -82
- package/src/listing/components/filter/components/forms/components/Multi-Select.tsx +2 -2
- package/src/listing/components/filter/components/forms/components/Select.tsx +2 -2
- package/src/listing/components/filter/components/forms/components/Textfield.tsx +2 -2
- package/src/listing/components/filter/components/forms/components/empty-list.tsx +17 -0
- package/src/listing/components/filter/components/forms/components/filter-criteria-entity-list.tsx +92 -0
- package/src/listing/components/filter/components/forms/components/filter-criteria-list.tsx +104 -0
- package/src/listing/components/filter/components/forms/components/styles.tsx +2 -1
- package/src/listing/components/filter/components/forms/index.tsx +238 -174
- package/src/listing/components/filter/components/main-filter.tsx +6 -14
- package/src/listing/components/filter/components/saved-edit-filter.tsx +0 -31
- package/src/listing/components/filter/components/saved-filter.tsx +0 -22
- package/src/listing/components/filter/index.tsx +162 -130
- package/src/listing/components/filter/style.ts +20 -3
- package/src/listing/libs/hooks/useCraftTable.tsx +9 -0
- package/src/listing/libs/hooks/useEntityTableAPI.tsx +25 -0
- package/src/listing/libs/utils/apiColumn.ts +27 -1
- package/src/listing/libs/utils/common.ts +1 -1
- package/src/listing/libs/utils/deep-merge-objects.ts +18 -0
- package/src/listing/types/common.ts +0 -2
- package/src/listing/types/filter.ts +54 -7
- package/src/listing/types/table-options.ts +8 -0
- 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
|
|
43
|
-
|
|
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:
|
|
45
|
+
filters: newFilters,
|
|
51
46
|
});
|
|
52
|
-
return
|
|
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, {
|
|
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:
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
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
|
-
|
|
117
|
+
|
|
118
|
+
if (tabType === "main") {
|
|
113
119
|
setEditMode(false);
|
|
114
|
-
|
|
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
|
-
|
|
129
|
+
const tabType = tabMapping[index];
|
|
130
|
+
|
|
127
131
|
setFilters([]);
|
|
128
|
-
setSelectedFilters([]);
|
|
129
132
|
|
|
130
|
-
|
|
131
|
-
if (index === 1) setEditMode(false);
|
|
133
|
+
if (tabType === "saved") setEditMode(false);
|
|
132
134
|
|
|
133
|
-
const patches:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
...
|
|
146
|
+
...patches,
|
|
143
147
|
} as FilterMasterStateProps;
|
|
144
148
|
|
|
145
149
|
setFilterMaster(newFilterMasterState);
|
|
146
150
|
|
|
147
|
-
|
|
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
|
-
|
|
158
|
-
<
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
e
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
<
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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
|
-
|
|
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: "
|
|
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
|
+
};
|