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.
@@ -6,12 +6,18 @@ import {
6
6
  useDetailsQueryAPI,
7
7
  useFetchData,
8
8
  } from "../listing/libs/hooks/useEntityTableHooks";
9
- import { ENTITY_TYPE, MAPPED_ENTITY_TYPE } from "../listing/libs/utils/common";
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("All");
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 { metaQuery } = useFetchData(ENTITY_TYPE);
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
- const { settingsTabDropdownData, settingsTabDropdownPending } =
82
- useSettingsDropDownAPI({
83
- entity_type: ENTITY_TYPE,
84
- column: filterSettingStates?.quickTabStates?.attribute,
85
- sort_by: filterSettingStates?.quickTabStates?.sorting,
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
- try {
93
- const { res: allColumns } = await entityTableMetaMaster(ENTITY_TYPE);
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 || "lead_status",
169
+ columnName: getSettingsAPIData?.quick_tab?.attribute || "status",
208
170
  sortBy: getSettingsAPIData?.quick_tab?.sorting || "ASC",
209
171
  value:
210
- selectedTab.toLowerCase() === "all" ? "" : selectedTab.toLowerCase(),
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) => tab.tab_name?.toLowerCase() === selectedTab.toLowerCase()
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.tab_name || "All");
209
+ setSelectedTab(allTab || "All");
243
210
  } else {
244
- setSelectedTab(tabsData[0].tab_name || "All");
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
- tableData?.entity_tabs?.find((tab) => {
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={attributes?.data?.map((item) => ({
507
+ quickTabAttributes={quickTabAttributes?.data?.map((item) => ({
541
508
  label: item.name,
542
509
  value: item.attribute_key,
543
510
  }))}