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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rez-table-listing-mui",
3
- "version": "1.3.60",
3
+ "version": "1.3.62",
4
4
  "type": "module",
5
5
  "description": "A rez table listing component built on TanStack Table",
6
6
  "main": "dist/index.js",
@@ -84,22 +84,29 @@ const QuickTab = ({
84
84
 
85
85
  // When user changes attribute
86
86
  useEffect(() => {
87
- // if (currentQuickAttribute === settingsData?.quick_tab?.attribute) return;
87
+ if (currentQuickAttribute === settingsData?.quick_tab?.attribute) return;
88
88
 
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
- }));
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
- // setCurrentQuickAttribute(settingsData?.quick_tab?.attribute || "");
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?: string;
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) => handleTabClick(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(({ tab_name, count }) => {
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={tab_name}
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 ? "0" : String(count).padStart(2, "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
- `/layout-preference/column?entity_type=${entity_type}&column=${column}&sort_by=${sort_by}`
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
- `/entity-relation/${entity_type}?include=true`
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
- `/attribute-master/getAttributes?direct=false&entity_type=${selectedFilterEntity?.value}`
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
- `/layout-preference/attributes`,
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
- `/attribute-master/getAttributes?direct=false&entity_type=${entity_type}`
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 = "SCH";
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
 
@@ -48,6 +48,7 @@ export interface EntityTableAPIProps {
48
48
  columnName: string;
49
49
  sortBy: "ASC" | "DSC";
50
50
  value?: string;
51
+ name?: string;
51
52
  };
52
53
  sortby?: {
53
54
  sortColum: string;
@@ -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("All");
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 || "lead_status",
218
+ columnName: getSettingsAPIData?.quick_tab?.attribute || "status",
208
219
  sortBy: getSettingsAPIData?.quick_tab?.sorting || "ASC",
209
220
  value:
210
- selectedTab.toLowerCase() === "all" ? "" : selectedTab.toLowerCase(),
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) => tab.tab_name?.toLowerCase() === selectedTab.toLowerCase()
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.tab_name || "All");
258
+ setSelectedTab(allTab || "All");
243
259
  } else {
244
- setSelectedTab(tabsData[0].tab_name || "All");
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
- tableData?.entity_tabs?.find((tab) => {
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
  );