rez-table-listing-mui 1.3.61 → 1.3.64
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 +2 -2
- 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/filter/components/forms/components/filter-criteria-entity-list.tsx +1 -1
- package/src/listing/components/table-settings/components/column.tsx +14 -1
- package/src/listing/components/table-settings/components/quick-tab.tsx +9 -1
- package/src/listing/components/tabs/index.tsx +12 -8
- package/src/listing/libs/hooks/useEntityTableAPI.tsx +62 -4
- package/src/listing/libs/hooks/useEntityTableHooks.ts +3 -3
- package/src/listing/libs/services/getLayoutAPI.tsx +1 -1
- package/src/listing/libs/utils/apiColumn.ts +62 -12
- package/src/listing/libs/utils/common.ts +45 -1
- package/src/listing/types/common.ts +1 -0
- package/src/listing/types/table.ts +1 -1
- package/src/view/ListingView.tsx +64 -97
package/src/view/ListingView.tsx
CHANGED
|
@@ -6,12 +6,18 @@ import {
|
|
|
6
6
|
useDetailsQueryAPI,
|
|
7
7
|
useFetchData,
|
|
8
8
|
} from "../listing/libs/hooks/useEntityTableHooks";
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
ENTITY_TYPE,
|
|
11
|
+
formatTableHeaders,
|
|
12
|
+
MAPPED_ENTITY_TYPE,
|
|
13
|
+
} from "../listing/libs/utils/common";
|
|
10
14
|
import {
|
|
11
15
|
useCommonFilterDropdownAPI,
|
|
16
|
+
useDropdownAPI,
|
|
12
17
|
useEntityTableAPI,
|
|
13
18
|
useGetAttributes,
|
|
14
19
|
useGetOperationList,
|
|
20
|
+
useGetTableTabs,
|
|
15
21
|
useSaveSettingsDataAPI,
|
|
16
22
|
useSettingsDropDownAPI,
|
|
17
23
|
} from "../listing/libs/hooks/useEntityTableAPI";
|
|
@@ -39,7 +45,10 @@ function ListingView() {
|
|
|
39
45
|
const [searchTerm, setSearchTerm] = useState("");
|
|
40
46
|
// const [data, setData] = useState<Person[]>(() => makeData(200, 3, 2));
|
|
41
47
|
|
|
42
|
-
const [selectedTab, setSelectedTab] = useState(
|
|
48
|
+
const [selectedTab, setSelectedTab] = useState({
|
|
49
|
+
tab_name: "All",
|
|
50
|
+
tab_value: "",
|
|
51
|
+
});
|
|
43
52
|
|
|
44
53
|
const tableStates = useCraftTable();
|
|
45
54
|
const filterSettingStates = useCraftTableFilterSettings();
|
|
@@ -50,8 +59,30 @@ function ListingView() {
|
|
|
50
59
|
filterSettingStates;
|
|
51
60
|
|
|
52
61
|
const { defaultColumns } = useDefaultColumns();
|
|
62
|
+
const { data: getSettingsAPIData } = useGetNavigationLayoutAPI(ENTITY_TYPE);
|
|
63
|
+
const tabsPaylod = {
|
|
64
|
+
entity_type: ENTITY_TYPE,
|
|
65
|
+
defaultTabsConfig: {
|
|
66
|
+
attribute: "status",
|
|
67
|
+
},
|
|
68
|
+
};
|
|
53
69
|
|
|
54
|
-
const {
|
|
70
|
+
const { tableTabs } = useGetTableTabs(tabsPaylod);
|
|
71
|
+
const tabsData = tableTabs;
|
|
72
|
+
|
|
73
|
+
const { metaQuery } = useFetchData(ENTITY_TYPE, {
|
|
74
|
+
tabs: {
|
|
75
|
+
columnName:
|
|
76
|
+
getSettingsAPIData?.mapped_json?.quick_tab?.attribute || "status",
|
|
77
|
+
sortBy: getSettingsAPIData?.mapped_json?.quick_tab?.sorting || "ASC",
|
|
78
|
+
value:
|
|
79
|
+
selectedTab?.tab_name?.toLowerCase() === "all"
|
|
80
|
+
? tabsData?.find((tab: any) => tab?.tab_name?.toLowerCase() === "all")
|
|
81
|
+
?.tab_value
|
|
82
|
+
: selectedTab?.tab_value,
|
|
83
|
+
name: selectedTab?.tab_name,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
55
86
|
|
|
56
87
|
const { detailsQuery } = useDetailsQueryAPI(
|
|
57
88
|
filterMaster?.saved_filters?.selectedId
|
|
@@ -62,13 +93,15 @@ function ListingView() {
|
|
|
62
93
|
const { operationList } = useGetOperationList();
|
|
63
94
|
|
|
64
95
|
const { attributes } = useGetAttributes(ENTITY_TYPE);
|
|
96
|
+
const { attributes: quickTabAttributes } = useGetAttributes(
|
|
97
|
+
ENTITY_TYPE,
|
|
98
|
+
"select"
|
|
99
|
+
);
|
|
65
100
|
|
|
66
101
|
const isColumnDefault =
|
|
67
102
|
filterSettingStates?.columnTabState?.isDefault || false;
|
|
68
103
|
const activeTabIndex = filterSettingStates?.columnTabState?.tabs?.findIndex(
|
|
69
|
-
(tab) =>
|
|
70
|
-
tab?.tab_name?.value == selectedTab ||
|
|
71
|
-
tab?.tab_name?.label?.toLowerCase() == selectedTab?.toLowerCase()
|
|
104
|
+
(tab) => tab?.tab_name?.value == selectedTab?.tab_name
|
|
72
105
|
);
|
|
73
106
|
const settingsColumnState = (filterSettingStates?.settingsData?.column ||
|
|
74
107
|
{}) as ColumnTabConfigProps;
|
|
@@ -78,91 +111,20 @@ function ListingView() {
|
|
|
78
111
|
// );
|
|
79
112
|
// const { dropdownData } = useCommonDropdownAPI(filters);
|
|
80
113
|
const { dropdownFilterData } = useCommonFilterDropdownAPI(filters);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
114
|
+
|
|
115
|
+
const {
|
|
116
|
+
data: settingsTabDropdownData,
|
|
117
|
+
isLoading: settingsTabDropdownPending,
|
|
118
|
+
} = useDropdownAPI({
|
|
119
|
+
entity_type: ENTITY_TYPE,
|
|
120
|
+
attribute_key: filterSettingStates?.quickTabStates?.attribute,
|
|
121
|
+
});
|
|
87
122
|
|
|
88
123
|
const queryClient = useQueryClient();
|
|
89
|
-
const { data: getSettingsAPIData } = useGetNavigationLayoutAPI(ENTITY_TYPE);
|
|
90
124
|
|
|
91
125
|
const fetchMeta = async () => {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const savedColumnSettings = filterSettingStates.settingsData?.column;
|
|
96
|
-
|
|
97
|
-
const getOrderedColumns = (
|
|
98
|
-
showList: { value: string }[],
|
|
99
|
-
filteredColumns: any[]
|
|
100
|
-
) => {
|
|
101
|
-
// Build ordered columns using showList and filteredColumns
|
|
102
|
-
// const orderedColumns = showList
|
|
103
|
-
// ?.map((showItem) => {
|
|
104
|
-
// return filteredColumns.find(
|
|
105
|
-
// (col) => col?.accessorKey === showItem?.value
|
|
106
|
-
// );
|
|
107
|
-
// })
|
|
108
|
-
// ?.filter((col): col is ColumnDef<any> => col !== undefined); // Ensure non-undefined columns are returned
|
|
109
|
-
|
|
110
|
-
// didnt know what above code was doing so rewrote it as below
|
|
111
|
-
// const res = showList.map((item: any) => ({
|
|
112
|
-
// id: item.value,
|
|
113
|
-
// accessorKey: item.value,
|
|
114
|
-
// header: item.label,
|
|
115
|
-
// }));
|
|
116
|
-
|
|
117
|
-
// return res;
|
|
118
|
-
return allColumns;
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
setColumns(allColumns);
|
|
122
|
-
|
|
123
|
-
// if (
|
|
124
|
-
// savedColumnSettings &&
|
|
125
|
-
// !savedColumnSettings.isDefault &&
|
|
126
|
-
// savedColumnSettings.tabs
|
|
127
|
-
// ) {
|
|
128
|
-
// // Tab-wise view: find the active tab and use its show_list
|
|
129
|
-
// const activeTabSettings = savedColumnSettings.tabs.find(
|
|
130
|
-
// (tab) => tab.tab_name?.value == selectedTab.toLowerCase()
|
|
131
|
-
// );
|
|
132
|
-
|
|
133
|
-
// if (activeTabSettings?.show_list) {
|
|
134
|
-
// const visibleColumns = new Set(
|
|
135
|
-
// activeTabSettings.show_list.map((c) => c.value)
|
|
136
|
-
// );
|
|
137
|
-
|
|
138
|
-
// // First, filter columns based on visibleColumns
|
|
139
|
-
// const filteredColumns = allColumns.filter((col: any) =>
|
|
140
|
-
// visibleColumns.has(col?.accessorKey)
|
|
141
|
-
// );
|
|
142
|
-
// setColumns(
|
|
143
|
-
// getOrderedColumns(activeTabSettings.show_list, filteredColumns)
|
|
144
|
-
// );
|
|
145
|
-
// } else {
|
|
146
|
-
// // Fallback if no specific settings for the active tab are found
|
|
147
|
-
// setColumns(allColumns);
|
|
148
|
-
// }
|
|
149
|
-
// } else if (savedColumnSettings && savedColumnSettings.show_list) {
|
|
150
|
-
// // Default view: use the main show_list
|
|
151
|
-
// const visibleColumns = new Set(
|
|
152
|
-
// savedColumnSettings.show_list.map((c) => c.value)
|
|
153
|
-
// );
|
|
154
|
-
// const filtered = allColumns.filter((col: any) =>
|
|
155
|
-
// visibleColumns.has(col?.accessorKey)
|
|
156
|
-
// );
|
|
157
|
-
|
|
158
|
-
// setColumns(getOrderedColumns(savedColumnSettings.show_list, filtered));
|
|
159
|
-
// } else {
|
|
160
|
-
// // No settings found, use all columns
|
|
161
|
-
// setColumns(allColumns);
|
|
162
|
-
// }
|
|
163
|
-
} catch (error) {
|
|
164
|
-
console.error("Failed to fetch metadata:", error);
|
|
165
|
-
}
|
|
126
|
+
const res = formatTableHeaders(metaQuery?.data?.column_list || []);
|
|
127
|
+
setColumns(res);
|
|
166
128
|
};
|
|
167
129
|
|
|
168
130
|
useEffect(() => {
|
|
@@ -204,10 +166,15 @@ function ListingView() {
|
|
|
204
166
|
size: 20,
|
|
205
167
|
entity_type: ENTITY_TYPE,
|
|
206
168
|
tabs: {
|
|
207
|
-
columnName: getSettingsAPIData?.quick_tab?.attribute || "
|
|
169
|
+
columnName: getSettingsAPIData?.quick_tab?.attribute || "status",
|
|
208
170
|
sortBy: getSettingsAPIData?.quick_tab?.sorting || "ASC",
|
|
209
171
|
value:
|
|
210
|
-
selectedTab
|
|
172
|
+
selectedTab?.tab_name?.toLowerCase() === "all"
|
|
173
|
+
? tabsData?.find((tab) => tab?.tab_name?.toLowerCase() === "all")
|
|
174
|
+
.tab_value
|
|
175
|
+
: selectedTab?.tab_value,
|
|
176
|
+
|
|
177
|
+
name: selectedTab?.tab_name,
|
|
211
178
|
},
|
|
212
179
|
quickFilter: tableStates.filters,
|
|
213
180
|
sortby: [
|
|
@@ -223,7 +190,6 @@ function ListingView() {
|
|
|
223
190
|
() => tableData?.entity_list || [],
|
|
224
191
|
[tableData?.entity_list]
|
|
225
192
|
);
|
|
226
|
-
const tabsData = tableData?.entity_tabs;
|
|
227
193
|
|
|
228
194
|
// Auto-switch tab if the selected tab is removed
|
|
229
195
|
useEffect(() => {
|
|
@@ -231,7 +197,8 @@ function ListingView() {
|
|
|
231
197
|
tabsData &&
|
|
232
198
|
tabsData.length > 0 &&
|
|
233
199
|
!tabsData.some(
|
|
234
|
-
(tab) =>
|
|
200
|
+
(tab) =>
|
|
201
|
+
tab.tab_name?.toLowerCase() === selectedTab?.tab_name?.toLowerCase()
|
|
235
202
|
)
|
|
236
203
|
) {
|
|
237
204
|
// Try to select 'ALL' if it exists
|
|
@@ -239,17 +206,17 @@ function ListingView() {
|
|
|
239
206
|
(tab) => tab.tab_name?.toLowerCase() === "all"
|
|
240
207
|
);
|
|
241
208
|
if (allTab) {
|
|
242
|
-
setSelectedTab(allTab
|
|
209
|
+
setSelectedTab(allTab || "All");
|
|
243
210
|
} else {
|
|
244
|
-
setSelectedTab(tabsData[0]
|
|
211
|
+
setSelectedTab(tabsData[0] || "All");
|
|
245
212
|
}
|
|
246
213
|
}
|
|
247
214
|
}, [tabsData, selectedTab]);
|
|
248
215
|
|
|
249
216
|
const totalCount = useMemo(() => {
|
|
250
217
|
return Number(
|
|
251
|
-
|
|
252
|
-
const activeTab = selectedTab || "All";
|
|
218
|
+
tabsData?.find((tab) => {
|
|
219
|
+
const activeTab = selectedTab?.tab_name || "All";
|
|
253
220
|
return (
|
|
254
221
|
tab.tab_name?.toLocaleLowerCase() === activeTab.toLocaleLowerCase()
|
|
255
222
|
);
|
|
@@ -384,8 +351,8 @@ function ListingView() {
|
|
|
384
351
|
mapped_json: data,
|
|
385
352
|
type: "filter",
|
|
386
353
|
};
|
|
387
|
-
|
|
388
354
|
await saveLayoutAPI(payload);
|
|
355
|
+
queryClient.invalidateQueries({ queryKey: ["tableTabs"] });
|
|
389
356
|
};
|
|
390
357
|
|
|
391
358
|
const handleSaveSettingsData = (settingsData: SettingsDataProps) => {
|
|
@@ -537,7 +504,7 @@ function ListingView() {
|
|
|
537
504
|
onClose={() => setShowListViewSettings(false)}
|
|
538
505
|
columnsData={metaQuery.data || {}}
|
|
539
506
|
columnsDataLoading={metaQuery.isPending}
|
|
540
|
-
quickTabAttributes={
|
|
507
|
+
quickTabAttributes={quickTabAttributes?.data?.map((item) => ({
|
|
541
508
|
label: item.name,
|
|
542
509
|
value: item.attribute_key,
|
|
543
510
|
}))}
|