rez-table-listing-mui 1.3.60 → 1.3.62
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 -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 +1 -1
- package/src/listing/components/table-settings/components/quick-tab.tsx +21 -14
- package/src/listing/components/tabs/index.tsx +12 -8
- package/src/listing/libs/hooks/useEntityTableAPI.tsx +8 -0
- package/src/listing/libs/services/getLayoutAPI.tsx +1 -1
- package/src/listing/libs/utils/apiColumn.ts +11 -6
- package/src/listing/libs/utils/common.ts +1 -1
- package/src/listing/types/common.ts +1 -0
- package/src/view/ListingView.tsx +28 -12
package/package.json
CHANGED
|
@@ -84,22 +84,29 @@ const QuickTab = ({
|
|
|
84
84
|
|
|
85
85
|
// When user changes attribute
|
|
86
86
|
useEffect(() => {
|
|
87
|
-
|
|
87
|
+
if (currentQuickAttribute === settingsData?.quick_tab?.attribute) return;
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
setCurrentQuickAttribute(settingsData?.quick_tab?.attribute || "");
|
|
100
|
-
// }
|
|
89
|
+
if (tabsApiData?.length) {
|
|
90
|
+
setSettingsData((prev) => ({
|
|
91
|
+
...prev,
|
|
92
|
+
quick_tab: {
|
|
93
|
+
...prev?.quick_tab,
|
|
94
|
+
hide_list: tabsApiData,
|
|
95
|
+
show_list: [],
|
|
96
|
+
},
|
|
97
|
+
}));
|
|
101
98
|
|
|
102
|
-
|
|
99
|
+
setCurrentQuickAttribute(settingsData?.quick_tab?.attribute || "");
|
|
100
|
+
} else {
|
|
101
|
+
setSettingsData((prev) => ({
|
|
102
|
+
...prev,
|
|
103
|
+
quick_tab: {
|
|
104
|
+
...prev?.quick_tab,
|
|
105
|
+
hide_list: [],
|
|
106
|
+
show_list: [],
|
|
107
|
+
},
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
103
110
|
}, [tabsApiData]);
|
|
104
111
|
|
|
105
112
|
// Validation when user changes show list or hide list
|
|
@@ -15,7 +15,7 @@ interface TabDataProps {
|
|
|
15
15
|
interface TableTabsProps {
|
|
16
16
|
loading?: boolean;
|
|
17
17
|
tabsData?: TabDataProps[];
|
|
18
|
-
activeTab?:
|
|
18
|
+
activeTab?: any;
|
|
19
19
|
tableStates: CraftTableOptionsProps;
|
|
20
20
|
onClick: (state: string) => void;
|
|
21
21
|
columns?: any[];
|
|
@@ -72,22 +72,24 @@ export function TableTabs({
|
|
|
72
72
|
{/* Tabs */}
|
|
73
73
|
<Tabs
|
|
74
74
|
value={selectedTab}
|
|
75
|
-
onChange={(_, newValue) =>
|
|
75
|
+
onChange={(_, newValue) => {
|
|
76
|
+
handleTabClick(newValue);
|
|
77
|
+
}}
|
|
76
78
|
variant="scrollable"
|
|
77
79
|
scrollButtons="auto"
|
|
78
80
|
slotProps={{ indicator: { sx: { display: "none" } } }}
|
|
79
81
|
sx={tableTabsStyles.tabs}
|
|
80
82
|
>
|
|
81
|
-
{normalizedTabs.map((
|
|
82
|
-
const isSelected = activeTab === tab_name;
|
|
83
|
+
{normalizedTabs.map((tab) => {
|
|
84
|
+
const isSelected = activeTab?.tab_name === tab?.tab_name;
|
|
83
85
|
|
|
84
86
|
return (
|
|
85
87
|
<Tab
|
|
86
|
-
key={tab_name}
|
|
87
|
-
value={
|
|
88
|
+
key={tab?.tab_name}
|
|
89
|
+
value={tab}
|
|
88
90
|
label={
|
|
89
91
|
<Box display="flex" alignItems="center" gap={1}>
|
|
90
|
-
<Box>{tab_name}</Box>
|
|
92
|
+
<Box>{tab?.tab_name}</Box>
|
|
91
93
|
<Box
|
|
92
94
|
sx={{
|
|
93
95
|
...tableTabsStyles.tabCount,
|
|
@@ -100,7 +102,9 @@ export function TableTabs({
|
|
|
100
102
|
}),
|
|
101
103
|
}}
|
|
102
104
|
>
|
|
103
|
-
{count == 0
|
|
105
|
+
{tab?.count == 0
|
|
106
|
+
? "0"
|
|
107
|
+
: String(tab?.count).padStart(2, "0")}
|
|
104
108
|
</Box>
|
|
105
109
|
</Box>
|
|
106
110
|
}
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
getOperationList,
|
|
25
25
|
getLayoutAttributes,
|
|
26
26
|
getAttributes,
|
|
27
|
+
getTableTabs,
|
|
27
28
|
} from "../utils/apiColumn";
|
|
28
29
|
import {
|
|
29
30
|
FilterDataMainFilterEntityListProps,
|
|
@@ -401,6 +402,13 @@ export const useGetLayoutAttributes = ({
|
|
|
401
402
|
return { layoutAttributes };
|
|
402
403
|
};
|
|
403
404
|
|
|
405
|
+
export const useGetTableTabs = (payload: any) => {
|
|
406
|
+
const { data: tableTabs, isLoading } = useQuery({
|
|
407
|
+
queryKey: ["tableTabs", payload],
|
|
408
|
+
queryFn: () => getTableTabs(payload),
|
|
409
|
+
});
|
|
410
|
+
return { tableTabs, isLoading };
|
|
411
|
+
};
|
|
404
412
|
// export const useGetSettingsColumnAttributes = (entity_type: string) => {
|
|
405
413
|
// // First query to get meta data
|
|
406
414
|
// const settingsColumnAttributes = useQuery({
|
|
@@ -7,7 +7,7 @@ export const getLeadNavigationTabs = async (entity_type: string) => {
|
|
|
7
7
|
type: "layout",
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
const response = await api.get("/layout-preference", { params });
|
|
10
|
+
const response = await api.get("meta/layout-preference", { params });
|
|
11
11
|
|
|
12
12
|
return response.data.mapped_json;
|
|
13
13
|
} catch (error) {
|
|
@@ -141,7 +141,7 @@ export const saveSettingsData = async (payload: any) => {
|
|
|
141
141
|
export const getSettingsData = async (entity_type: any) => {
|
|
142
142
|
try {
|
|
143
143
|
const response = await api.get(
|
|
144
|
-
`layout-preference?entity_type=${entity_type}`
|
|
144
|
+
`meta/layout-preference?entity_type=${entity_type}`
|
|
145
145
|
);
|
|
146
146
|
return response.data;
|
|
147
147
|
} catch (error) {
|
|
@@ -156,7 +156,7 @@ export const viewSettingsDropDown = async ({
|
|
|
156
156
|
sort_by,
|
|
157
157
|
}: viewSettingsDropDownAPIProps): Promise<Array<string>> => {
|
|
158
158
|
const response = await api.get(
|
|
159
|
-
|
|
159
|
+
`meta/layout-preference/column?entity_type=${entity_type}&column=${column}&sort_by=${sort_by}`
|
|
160
160
|
);
|
|
161
161
|
|
|
162
162
|
return response.data;
|
|
@@ -164,7 +164,7 @@ export const viewSettingsDropDown = async ({
|
|
|
164
164
|
|
|
165
165
|
export const getFilterEntityList = async (entity_type: string) => {
|
|
166
166
|
const response = await api.get(
|
|
167
|
-
|
|
167
|
+
`meta/entity-relation/${entity_type}?include=true`
|
|
168
168
|
);
|
|
169
169
|
|
|
170
170
|
return response.data;
|
|
@@ -176,7 +176,7 @@ export const getFilterCriteriaByEntity = async (
|
|
|
176
176
|
const params = { entity_type: selectedFilterEntity?.value };
|
|
177
177
|
|
|
178
178
|
const response = await api.get(
|
|
179
|
-
|
|
179
|
+
`meta/attribute-master/getAttributes?direct=false&entity_type=${selectedFilterEntity?.value}`
|
|
180
180
|
);
|
|
181
181
|
|
|
182
182
|
return response.data;
|
|
@@ -198,7 +198,7 @@ export const getLayoutAttributes = async ({
|
|
|
198
198
|
element_type,
|
|
199
199
|
};
|
|
200
200
|
const response = await api.post(
|
|
201
|
-
|
|
201
|
+
`meta/layout-preference/attributes`,
|
|
202
202
|
{ entity_type },
|
|
203
203
|
{ params }
|
|
204
204
|
);
|
|
@@ -207,9 +207,14 @@ export const getLayoutAttributes = async ({
|
|
|
207
207
|
|
|
208
208
|
export const getAttributes = async (entity_type: string) => {
|
|
209
209
|
const response = await api.get(
|
|
210
|
-
|
|
210
|
+
`meta/attribute-master/getAttributes?direct=false&entity_type=${entity_type}`
|
|
211
211
|
);
|
|
212
212
|
console.log("resss", response);
|
|
213
213
|
|
|
214
214
|
return response.data;
|
|
215
215
|
};
|
|
216
|
+
|
|
217
|
+
export const getTableTabs = async (payload: any) => {
|
|
218
|
+
const response = await api.post(`filter/get-tabs-data`, payload);
|
|
219
|
+
return response.data;
|
|
220
|
+
};
|
|
@@ -78,7 +78,7 @@ export function customDebounce<T extends (...args: any[]) => any>(
|
|
|
78
78
|
|
|
79
79
|
//ENTITY TYPE
|
|
80
80
|
const ENVIRONMENT = "adm_dev";
|
|
81
|
-
export const ENTITY_TYPE = "
|
|
81
|
+
export const ENTITY_TYPE = "ROL";
|
|
82
82
|
export const MAPPED_ENTITY_TYPE = "LYPR"; // LAP OR LYPR
|
|
83
83
|
export const USER_ID = 226;
|
|
84
84
|
|
package/src/view/ListingView.tsx
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
useEntityTableAPI,
|
|
13
13
|
useGetAttributes,
|
|
14
14
|
useGetOperationList,
|
|
15
|
+
useGetTableTabs,
|
|
15
16
|
useSaveSettingsDataAPI,
|
|
16
17
|
useSettingsDropDownAPI,
|
|
17
18
|
} from "../listing/libs/hooks/useEntityTableAPI";
|
|
@@ -39,7 +40,10 @@ function ListingView() {
|
|
|
39
40
|
const [searchTerm, setSearchTerm] = useState("");
|
|
40
41
|
// const [data, setData] = useState<Person[]>(() => makeData(200, 3, 2));
|
|
41
42
|
|
|
42
|
-
const [selectedTab, setSelectedTab] = useState(
|
|
43
|
+
const [selectedTab, setSelectedTab] = useState({
|
|
44
|
+
tab_name: "All",
|
|
45
|
+
tab_value: "",
|
|
46
|
+
});
|
|
43
47
|
|
|
44
48
|
const tableStates = useCraftTable();
|
|
45
49
|
const filterSettingStates = useCraftTableFilterSettings();
|
|
@@ -66,9 +70,7 @@ function ListingView() {
|
|
|
66
70
|
const isColumnDefault =
|
|
67
71
|
filterSettingStates?.columnTabState?.isDefault || false;
|
|
68
72
|
const activeTabIndex = filterSettingStates?.columnTabState?.tabs?.findIndex(
|
|
69
|
-
(tab) =>
|
|
70
|
-
tab?.tab_name?.value == selectedTab ||
|
|
71
|
-
tab?.tab_name?.label?.toLowerCase() == selectedTab?.toLowerCase()
|
|
73
|
+
(tab) => tab?.tab_name?.value == selectedTab?.tab_name
|
|
72
74
|
);
|
|
73
75
|
const settingsColumnState = (filterSettingStates?.settingsData?.column ||
|
|
74
76
|
{}) as ColumnTabConfigProps;
|
|
@@ -84,6 +86,14 @@ function ListingView() {
|
|
|
84
86
|
column: filterSettingStates?.quickTabStates?.attribute,
|
|
85
87
|
sort_by: filterSettingStates?.quickTabStates?.sorting,
|
|
86
88
|
});
|
|
89
|
+
const tabsPaylod = {
|
|
90
|
+
entity_type: ENTITY_TYPE,
|
|
91
|
+
defaultTabsConfig: {
|
|
92
|
+
attribute: "status",
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const { tableTabs } = useGetTableTabs(tabsPaylod);
|
|
87
97
|
|
|
88
98
|
const queryClient = useQueryClient();
|
|
89
99
|
const { data: getSettingsAPIData } = useGetNavigationLayoutAPI(ENTITY_TYPE);
|
|
@@ -198,16 +208,22 @@ function ListingView() {
|
|
|
198
208
|
|
|
199
209
|
//For server side sorting
|
|
200
210
|
const enableServerSideSorting = true;
|
|
211
|
+
const tabsData = tableTabs?.data;
|
|
201
212
|
|
|
202
213
|
const { tableData, isTableDataPending } = useEntityTableAPI({
|
|
203
214
|
page: 0,
|
|
204
215
|
size: 20,
|
|
205
216
|
entity_type: ENTITY_TYPE,
|
|
206
217
|
tabs: {
|
|
207
|
-
columnName: getSettingsAPIData?.quick_tab?.attribute || "
|
|
218
|
+
columnName: getSettingsAPIData?.quick_tab?.attribute || "status",
|
|
208
219
|
sortBy: getSettingsAPIData?.quick_tab?.sorting || "ASC",
|
|
209
220
|
value:
|
|
210
|
-
selectedTab
|
|
221
|
+
selectedTab?.tab_name?.toLowerCase() === "all"
|
|
222
|
+
? tabsData?.find((tab) => tab?.tab_name?.toLowerCase() === "all")
|
|
223
|
+
.tab_value
|
|
224
|
+
: selectedTab?.tab_value,
|
|
225
|
+
|
|
226
|
+
name: selectedTab?.tab_name,
|
|
211
227
|
},
|
|
212
228
|
quickFilter: tableStates.filters,
|
|
213
229
|
sortby: [
|
|
@@ -223,7 +239,6 @@ function ListingView() {
|
|
|
223
239
|
() => tableData?.entity_list || [],
|
|
224
240
|
[tableData?.entity_list]
|
|
225
241
|
);
|
|
226
|
-
const tabsData = tableData?.entity_tabs;
|
|
227
242
|
|
|
228
243
|
// Auto-switch tab if the selected tab is removed
|
|
229
244
|
useEffect(() => {
|
|
@@ -231,7 +246,8 @@ function ListingView() {
|
|
|
231
246
|
tabsData &&
|
|
232
247
|
tabsData.length > 0 &&
|
|
233
248
|
!tabsData.some(
|
|
234
|
-
(tab) =>
|
|
249
|
+
(tab) =>
|
|
250
|
+
tab.tab_name?.toLowerCase() === selectedTab?.tab_name?.toLowerCase()
|
|
235
251
|
)
|
|
236
252
|
) {
|
|
237
253
|
// Try to select 'ALL' if it exists
|
|
@@ -239,17 +255,17 @@ function ListingView() {
|
|
|
239
255
|
(tab) => tab.tab_name?.toLowerCase() === "all"
|
|
240
256
|
);
|
|
241
257
|
if (allTab) {
|
|
242
|
-
setSelectedTab(allTab
|
|
258
|
+
setSelectedTab(allTab || "All");
|
|
243
259
|
} else {
|
|
244
|
-
setSelectedTab(tabsData[0]
|
|
260
|
+
setSelectedTab(tabsData[0] || "All");
|
|
245
261
|
}
|
|
246
262
|
}
|
|
247
263
|
}, [tabsData, selectedTab]);
|
|
248
264
|
|
|
249
265
|
const totalCount = useMemo(() => {
|
|
250
266
|
return Number(
|
|
251
|
-
|
|
252
|
-
const activeTab = selectedTab || "All";
|
|
267
|
+
tabsData?.find((tab) => {
|
|
268
|
+
const activeTab = selectedTab?.tab_name || "All";
|
|
253
269
|
return (
|
|
254
270
|
tab.tab_name?.toLocaleLowerCase() === activeTab.toLocaleLowerCase()
|
|
255
271
|
);
|