rez-table-listing-mui 1.3.5 → 1.3.6

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.5",
3
+ "version": "1.3.6",
4
4
  "type": "module",
5
5
  "description": "A rez table listing component built on TanStack Table",
6
6
  "main": "dist/index.js",
@@ -71,7 +71,7 @@ const FormMultiSelect = ({
71
71
  .join(", ");
72
72
  }}
73
73
  >
74
- {options.map((item, idx) => (
74
+ {options?.map((item, idx) => (
75
75
  <MenuItem key={idx} value={item.value}>
76
76
  <Checkbox
77
77
  checked={cleanedValue.includes(item.value)}
@@ -23,12 +23,13 @@ import {
23
23
  viewSettingsDropDown,
24
24
  } from "../utils/apiColumn";
25
25
  import {
26
- FilterColumnsDataProps,
27
26
  FilterDataMainFilterEntityListProps,
28
27
  FilterMasterStateProps,
28
+ FilterStateProps,
29
29
  } from "../../types/filter";
30
30
  import { CraftTableOptionsProps } from "../../types/table-options";
31
31
  import { saveLayoutAPI } from "../services/saveLayoutAPI";
32
+ import { useMemo } from "react";
32
33
 
33
34
  const entityListingCall = async ({
34
35
  page,
@@ -214,8 +215,8 @@ export const useUpdateFilterAPI = () => {
214
215
  export const useCommonDropdownAPI = (column_list?: any, value?: string) => {
215
216
  // Step 1: Extract all keys and query types
216
217
  const dropdownConfigs = (column_list || [])
217
- .filter((col) => col?.datasource_list)
218
- .map((col) => ({
218
+ ?.filter((col) => col?.datasource_list)
219
+ ?.map((col) => ({
219
220
  key: col.attribute_key,
220
221
  dataSourceType: value ?? col.datasource_list ?? "STS",
221
222
  }));
@@ -233,13 +234,47 @@ export const useCommonDropdownAPI = (column_list?: any, value?: string) => {
233
234
 
234
235
  // Step 3: Map results to keys
235
236
  const dropdownData: Record<string, any> = {};
236
- dropdownConfigs.forEach((cfg, idx) => {
237
+ dropdownConfigs?.forEach((cfg, idx) => {
237
238
  dropdownData[cfg.key] = dropdownResults[idx].data;
238
239
  });
239
240
 
240
241
  return { dropdownData };
241
242
  };
242
243
 
244
+ export const useCommonFilterDropdownAPI = (
245
+ filters: FilterStateProps[],
246
+ value?: string
247
+ ) => {
248
+ // Step 1: Extract all keys and query types
249
+ const dropdownConfigs = useMemo(() => {
250
+ return filters
251
+ ?.filter((col) => col?.filter_attribute_data_type === "select")
252
+ ?.map((col) => ({
253
+ key: col?.filter_attribute,
254
+ dataSourceType: value ?? col?.datasource_list ?? "STS",
255
+ }));
256
+ }, [filters]);
257
+
258
+ // Step 2: Use useQueries to fetch them all in parallel
259
+ const dropdownResults = useQueries({
260
+ queries: dropdownConfigs.map((cfg) => {
261
+ return {
262
+ queryKey: ["commonDropdown", cfg?.dataSourceType],
263
+ queryFn: () => commonGetDropdownDataAPI(cfg?.dataSourceType, null),
264
+ enabled: !!cfg?.dataSourceType,
265
+ };
266
+ }),
267
+ });
268
+
269
+ // Step 3: Map results to keys
270
+ const dropdownFilterData: Record<string, any> = {};
271
+ dropdownConfigs?.forEach((cfg, idx) => {
272
+ dropdownFilterData[cfg.key] = dropdownResults[idx].data;
273
+ });
274
+
275
+ return { dropdownFilterData };
276
+ };
277
+
243
278
  //ALL VIEW SETTINGS API
244
279
 
245
280
  export const useSettingsDropDownAPI = ({
@@ -8,18 +8,14 @@ import {
8
8
  } from "../listing/libs/hooks/useEntityTableHooks";
9
9
  import { ENTITY_TYPE, MAPPED_ENTITY_TYPE } from "../listing/libs/utils/common";
10
10
  import {
11
- useCommonDropdownAPI,
12
- useDeleteFilterAPI,
11
+ useCommonFilterDropdownAPI,
13
12
  useEntityTableAPI,
14
13
  useGetSettingsDataAPI,
15
- useSavedFilterAPI,
16
14
  useSaveSettingsDataAPI,
17
15
  useSettingsDropDownAPI,
18
- useUpdateFilterAPI,
19
16
  } from "../listing/libs/hooks/useEntityTableAPI";
20
17
  import { entityTableMetaMaster } from "../listing/libs/utils/apiColumn";
21
18
  import { ColumnDef } from "@tanstack/react-table";
22
- import { FilterMasterStateProps } from "../listing/types/filter";
23
19
  import { SettingsDataProps } from "../listing/types/filter-settings";
24
20
  import TableWrapper from "../listing/components/index-table";
25
21
  import { TableTabs } from "../listing/components/tabs";
@@ -39,8 +35,7 @@ function ListingView() {
39
35
  const tableStates = useCraftTable();
40
36
  const filterSettingStates = useCraftTableFilterSettings();
41
37
 
42
- const { filters, setFilters, filterMaster, setFilterMaster, filterToDelete } =
43
- tableStates;
38
+ const { filters, setFilters, filterMaster } = tableStates;
44
39
 
45
40
  const { showListViewSettings, setShowListViewSettings, setSettingsData } =
46
41
  filterSettingStates;
@@ -53,17 +48,13 @@ function ListingView() {
53
48
  ? filterMaster?.saved_filters?.selectedId
54
49
  : metaQuery?.data?.default_filter?.value
55
50
  );
56
-
57
- const { savedMutation } = useSavedFilterAPI(); //API CALL FOR SAVED FILTER
58
- const { deleteMutation } = useDeleteFilterAPI(tableStates); //API FOR DELETING FILTER
59
- const { updateMutation } = useUpdateFilterAPI(); //API FOR UPDATE FILTER
60
51
  const { saveSettingsDataMutation } = useSaveSettingsDataAPI(ENTITY_TYPE);
61
- const memoizedFilters = useMemo(() => filters, [filters]);
62
52
 
63
53
  // const { dropdownData } = useCommonDropdownAPI(
64
54
  // dropdownColumnList || metaQuery.data.column_list
65
55
  // );
66
- const { dropdownData } = useCommonDropdownAPI(memoizedFilters);
56
+ // const { dropdownData } = useCommonDropdownAPI(filters);
57
+ const { dropdownFilterData } = useCommonFilterDropdownAPI(filters);
67
58
  const { settingsTabDropdownData, settingsTabDropdownPending } =
68
59
  useSettingsDropDownAPI({
69
60
  entity_type: ENTITY_TYPE,
@@ -253,47 +244,6 @@ function ListingView() {
253
244
  );
254
245
  }, [newData, searchTerm]);
255
246
 
256
- // API to handle saving a filter
257
- const handleSaveFilter = (name: string) => {
258
- const quickFilter = filters.map((f) => ({
259
- filter_attribute: f.filter_attribute,
260
- filter_operator: f.filter_operator,
261
- filter_value: f.filter_value,
262
- }));
263
-
264
- const payload = {
265
- name,
266
- is_default: false,
267
- mapped_entity_type: ENTITY_TYPE, // For that entity type
268
- status: "ACTIVE",
269
- entity_type: "SFM", // FIXED entity type
270
- filterDetails: quickFilter,
271
- };
272
- const entity_type = "SFM";
273
- savedMutation.mutate(
274
- { entity_type, payload },
275
- {
276
- onSuccess: (response) => {
277
- const newFilterId = response?.id;
278
- if (newFilterId) {
279
- setFilterMaster(
280
- (prev) =>
281
- ({
282
- ...prev,
283
- saved_filters: {
284
- ...prev?.saved_filters,
285
- selectedId: newFilterId.toString(),
286
- selectedName: name,
287
- },
288
- activeFilterTabIndex: 1,
289
- } as FilterMasterStateProps)
290
- );
291
- }
292
- },
293
- }
294
- );
295
- };
296
-
297
247
  const handleChangeFunction = async (data: any) => {
298
248
  const payload = {
299
249
  entity_type: MAPPED_ENTITY_TYPE,
@@ -305,43 +255,6 @@ function ListingView() {
305
255
  await saveLayoutAPI(payload);
306
256
  };
307
257
 
308
- // API to handle removing or deleting a filter
309
- const handleRemoveFilter = () => {
310
- const payload = {
311
- name: filterToDelete?.label,
312
- id: filterToDelete?.value,
313
- is_default: false,
314
- mapped_entity_type: ENTITY_TYPE,
315
- status: "INACTIVE",
316
- entity_type: "SFM",
317
- };
318
- const entity_type = "SFM";
319
- deleteMutation.mutate({ entity_type, payload });
320
- };
321
-
322
- //API to update the filter
323
- const handleUpdateFilter = () => {
324
- console.log("handleUpdateFilter");
325
-
326
- const quickFilter = filters.map((f) => ({
327
- filter_attribute: f.filter_attribute,
328
- filter_operator: f.filter_operator,
329
- filter_value: f.filter_value,
330
- }));
331
-
332
- const payload = {
333
- name: filterMaster?.saved_filters?.selectedName, // Name of the filter
334
- is_default: false,
335
- id: filterMaster?.saved_filters?.selectedId,
336
- mapped_entity_type: ENTITY_TYPE,
337
- status: "ACTIVE",
338
- entity_type: "SFM",
339
- filterDetails: quickFilter,
340
- };
341
- const entity_type = "SFM";
342
- updateMutation.mutate({ entity_type, payload });
343
- };
344
-
345
258
  const handleSaveSettingsData = (settingsData: SettingsDataProps) => {
346
259
  const payload = {
347
260
  entity_type: MAPPED_ENTITY_TYPE,
@@ -387,7 +300,7 @@ function ListingView() {
387
300
  <CraftTableFilterWrapper
388
301
  tableStates={tableStates}
389
302
  columnsData={metaQuery.data || {}}
390
- dropdownData={dropdownData || []}
303
+ dropdownData={dropdownFilterData || []}
391
304
  // onUpdateFilter={handleUpdateFilter}
392
305
  // onDeleteFilter={handleRemoveFilter}
393
306
  // onSaveFilter={handleSaveFilter}