rez-table-listing-mui 1.3.32 → 1.3.33

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.32",
3
+ "version": "1.3.33",
4
4
  "type": "module",
5
5
  "description": "A rez table listing component built on TanStack Table",
6
6
  "main": "dist/index.js",
@@ -24,6 +24,7 @@ import {
24
24
  FilterMasterStateProps,
25
25
  } from "../../../types/filter";
26
26
  import CalendarTodayIcon from "@mui/icons-material/CalendarToday";
27
+ import { USER_ID } from "../../../libs/utils/common";
27
28
  // import { set } from "react-hook-form";
28
29
 
29
30
  const primary = "#7A5AF8";
@@ -52,6 +53,8 @@ const SavedFilterModalView = ({
52
53
  const [shareWithTeam, setShareWithTeam] = useState<boolean>(false);
53
54
  const [allowTeamEdit, setAllowTeamEdit] = useState<boolean>(false);
54
55
  const filterNameValue = filterMaster?.saved_filters?.selectedName ?? "";
56
+ const discriptionValue = filterMaster?.saved_filters?.description ?? "";
57
+
55
58
  const isSaveDisabled =
56
59
  !filterNameValue.trim() || (allowTeamEdit && !shareWithTeam);
57
60
 
@@ -62,9 +65,11 @@ const SavedFilterModalView = ({
62
65
  if (!open) return;
63
66
 
64
67
  const filterId = filterMaster?.saved_filters?.selectedId;
65
-
68
+ const filterObj1 = columnsData?.shared_filter?.find(
69
+ (f: any) => f.id === filterId
70
+ );
66
71
  // NEW FILTER → RESET everything
67
- if (!filterId) {
72
+ if (!filterId && !filterObj1) {
68
73
  setFilterMaster((prev: any) => {
69
74
  if (!prev) return prev;
70
75
  return {
@@ -189,13 +194,20 @@ const SavedFilterModalView = ({
189
194
  (f: any) => f.id === selectedFilterId
190
195
  );
191
196
 
197
+ const isOwner = String(selectedSavedFilter?.is_owner) === "true";
198
+
192
199
  // Check if we should show prefields
193
200
  const showPrefields =
194
- selectedSavedFilter && selectedSavedFilter.is_editable === "true";
201
+ (selectedSavedFilter && selectedSavedFilter.is_editable === "true") ||
202
+ selectedSavedFilter;
195
203
 
196
204
  // Disable checkboxes if prefields are shown
197
205
  const showCheckboxes = !showPrefields;
198
206
 
207
+ const isNewFilter = !selectedSavedFilter;
208
+
209
+ const isshow = !isOwner;
210
+
199
211
  return (
200
212
  <Dialog open={open} onClose={onClose} maxWidth="sm" fullWidth>
201
213
  <DialogTitle sx={{ display: "flex", justifyContent: "space-between" }}>
@@ -251,6 +263,7 @@ const SavedFilterModalView = ({
251
263
  <TextField
252
264
  fullWidth
253
265
  minRows={3}
266
+ value={discriptionValue}
254
267
  size="small"
255
268
  sx={{
256
269
  mb: 1,
@@ -277,7 +290,7 @@ const SavedFilterModalView = ({
277
290
  (Max. 300 Characters)
278
291
  </Typography>
279
292
  {/* Sharing Controls */}
280
- {showCheckboxes && shouldShowSharingControls && (
293
+ {shouldShowSharingControls && (showCheckboxes || isshow) && (
281
294
  <Box
282
295
  sx={{
283
296
  display: "flex",
@@ -320,7 +333,7 @@ const SavedFilterModalView = ({
320
333
  </Box>
321
334
  )}
322
335
  {/* prefields */}
323
- {showPrefields && (
336
+ {showPrefields && !isshow && (
324
337
  <Box
325
338
  sx={{
326
339
  display: "grid",
@@ -343,7 +356,6 @@ const SavedFilterModalView = ({
343
356
 
344
357
  <TextField
345
358
  fullWidth
346
- sx={{ bgcolor: "#0E0C0B0F" }}
347
359
  size="small"
348
360
  value={
349
361
  selectedFilter?.created_date
@@ -357,6 +369,10 @@ const SavedFilterModalView = ({
357
369
  <CalendarTodayIcon fontSize="small" />
358
370
  </IconButton>
359
371
  ),
372
+ sx: {
373
+ backgroundColor: "#0E0C0B0F",
374
+ borderRadius: "4px",
375
+ },
360
376
  }}
361
377
  />
362
378
  </Box>
@@ -374,10 +390,15 @@ const SavedFilterModalView = ({
374
390
  </Typography>
375
391
  <TextField
376
392
  fullWidth
377
- sx={{ bgcolor: "#0E0C0B0F" }}
378
393
  size="small"
379
- value={selectedFilter?.name || ""} // Use created_by (assuming it can be name or ID)
380
- InputProps={{ readOnly: true }}
394
+ value={selectedFilter?.created_by || ""}
395
+ InputProps={{
396
+ readOnly: true,
397
+ sx: {
398
+ backgroundColor: "#0E0C0B0F",
399
+ borderRadius: "4px",
400
+ },
401
+ }}
381
402
  />
382
403
  </Box>
383
404
 
@@ -395,7 +416,6 @@ const SavedFilterModalView = ({
395
416
 
396
417
  <TextField
397
418
  fullWidth
398
- sx={{ bgcolor: "#0E0C0B0F" }}
399
419
  size="small"
400
420
  value={
401
421
  selectedFilter?.modified_date
@@ -409,6 +429,11 @@ const SavedFilterModalView = ({
409
429
  <CalendarTodayIcon fontSize="small" />
410
430
  </IconButton>
411
431
  ),
432
+
433
+ sx: {
434
+ backgroundColor: "#0E0C0B0F",
435
+ borderRadius: "4px",
436
+ },
412
437
  }}
413
438
  />
414
439
  </Box>
@@ -426,11 +451,14 @@ const SavedFilterModalView = ({
426
451
  </Typography>
427
452
  <TextField
428
453
  fullWidth
429
- sx={{ bgcolor: "#0E0C0B0F" }}
430
454
  size="small"
431
455
  value={selectedFilter?.modified_by || ""}
432
456
  InputProps={{
433
457
  readOnly: true,
458
+ sx: {
459
+ backgroundColor: "#0E0C0B0F",
460
+ borderRadius: "4px",
461
+ },
434
462
  }}
435
463
  />
436
464
  </Box>
@@ -18,7 +18,7 @@ const FormDatePicker = ({
18
18
  filter,
19
19
  control,
20
20
  sx,
21
- views = ["day", "month", "year"],
21
+ views = ["day"],
22
22
  onValueChange,
23
23
  }: FormDatePickerProps) => {
24
24
  const isRange = filter.filter_operator === "between";
@@ -1,3 +1,5 @@
1
+ // !! DON'T DELETE THIS OLD CODE !! //
2
+
1
3
  import { FormControl, MenuItem, Select, SxProps, Theme } from "@mui/material";
2
4
  import { Controller, UseFormSetValue } from "react-hook-form";
3
5
  import { FilterStateProps } from "../../../../../types/filter";
@@ -16,24 +18,6 @@ interface FormDropdownProps {
16
18
  onValueChange?: () => void;
17
19
  }
18
20
 
19
- // Allowed date-based operators
20
- const DATE_ALLOWED_OPERATORS = [
21
- "equal",
22
- "before",
23
- "after",
24
- "between",
25
- "is",
26
- "today",
27
- "is_day_before",
28
- "is_day_after",
29
- "is_month_before",
30
- "is_month_after",
31
- "is_before",
32
- "is_after",
33
- "is_on_or_before",
34
- "is_on_or_after",
35
- ];
36
-
37
21
  const FormDropdown = ({
38
22
  filter,
39
23
  control,
@@ -74,19 +58,6 @@ const FormDropdown = ({
74
58
 
75
59
  field.onChange(e);
76
60
 
77
- // Reset value if operator switches date → non-date or non-date → date
78
- if (filter.filter_attribute_data_type === "date") {
79
- const wasDateOp = DATE_ALLOWED_OPERATORS.includes(oldOperator);
80
- const isDateOpNow =
81
- DATE_ALLOWED_OPERATORS.includes(newOperator);
82
-
83
- if (wasDateOp !== isDateOpNow) {
84
- setValue(`${filter?.filter_attribute_name}.value`, "", {
85
- shouldDirty: true,
86
- });
87
- }
88
- }
89
-
90
61
  if (
91
62
  (filter?.filter_attribute_data_type === "date" ||
92
63
  filter?.filter_attribute_data_type === "year") &&
@@ -130,107 +101,3 @@ const FormDropdown = ({
130
101
  };
131
102
 
132
103
  export default FormDropdown;
133
-
134
- // !! DON'T DELETE THIS OLD CODE !! //
135
-
136
- // import { FormControl, MenuItem, Select, SxProps, Theme } from "@mui/material";
137
- // import { Controller, UseFormSetValue } from "react-hook-form";
138
- // import { FilterStateProps } from "../../../../../types/filter";
139
- // import moment from "moment";
140
-
141
- // interface FormDropdownProps {
142
- // filter: FilterStateProps;
143
- // control: any;
144
- // setValue: UseFormSetValue<any>;
145
- // dropdownList: {
146
- // label?: string;
147
- // value?: string;
148
- // }[];
149
- // isLoading?: boolean;
150
- // sx?: SxProps<Theme>;
151
- // onValueChange?: () => void;
152
- // }
153
-
154
- // const FormDropdown = ({
155
- // filter,
156
- // control,
157
- // setValue,
158
- // dropdownList,
159
- // isLoading = false,
160
- // sx,
161
- // onValueChange,
162
- // }: FormDropdownProps) => {
163
- // return (
164
- // <Controller
165
- // name={`${filter?.filter_attribute_name}.operator`}
166
- // control={control}
167
- // defaultValue={filter?.filter_operator || dropdownList?.[0]?.value || ""}
168
- // render={({ field }) => (
169
- // <FormControl sx={sx} size="small">
170
- // <Select
171
- // {...field}
172
- // variant="standard"
173
- // sx={{
174
- // fontSize: "0.875rem",
175
- // minWidth: 50,
176
- // border: "none",
177
- // boxShadow: "none",
178
- // "& .MuiSelect-icon": {
179
- // top: "45%",
180
- // transform: "translateY(-50%)",
181
- // "& .MuiOutlinedInput-input": {
182
- // padding: "12px 20px",
183
- // },
184
- // },
185
- // }}
186
- // disabled={isLoading}
187
- // disableUnderline
188
- // onChange={(e) => {
189
- // const newOperator = e.target.value;
190
- // const oldOperator = field.value;
191
-
192
- // field.onChange(e);
193
-
194
- // if (
195
- // (filter?.filter_attribute_data_type === "date" ||
196
- // filter?.filter_attribute_data_type === "year") &&
197
- // newOperator !== oldOperator
198
- // ) {
199
- // if (newOperator === "today") {
200
- // setValue(
201
- // `${filter?.filter_attribute_name}.value`,
202
- // moment().format("YYYY-MM-DD"),
203
- // {
204
- // shouldDirty: true,
205
- // }
206
- // );
207
- // } else if (newOperator === "between") {
208
- // setValue(`${filter?.filter_attribute_name}.value`, ["", ""], {
209
- // shouldDirty: true,
210
- // });
211
- // } else if (
212
- // oldOperator === "between" ||
213
- // oldOperator === "today"
214
- // ) {
215
- // setValue(`${filter?.filter_attribute_name}.value`, "", {
216
- // shouldDirty: true,
217
- // });
218
- // }
219
- // }
220
-
221
- // onValueChange?.();
222
- // }}
223
- // >
224
- // {dropdownList?.map((item, idx) => (
225
- // <MenuItem key={idx} value={item.value}>
226
- // {item.label}
227
- // </MenuItem>
228
- // ))}
229
- // </Select>
230
- // </FormControl>
231
- // )}
232
- // />
233
- // );
234
- // };
235
-
236
- // export default FormDropdown;
@@ -33,7 +33,10 @@ const FormTextfield = ({
33
33
  padding: "12px 20px",
34
34
  },
35
35
  }}
36
- type={filter?.filter_attribute_data_type || "text"}
36
+ // type={filter?.filter_attribute_data_type || "text" || "number"}
37
+ type={
38
+ filter?.filter_attribute_data_type === "number" ? "number" : "text"
39
+ }
37
40
  placeholder={"Enter value"}
38
41
  disabled={isLoading}
39
42
  onChange={(e) => {
@@ -350,7 +350,7 @@ const FilterForm = ({
350
350
  `${filter?.filter_attribute_name}.operator`
351
351
  );
352
352
 
353
- // Toggle dummy field to force form dirty
353
+ // Toggle dummy field to force form dirty
354
354
  const dummy = watch("dummyChange");
355
355
  setValue(
356
356
  "dummyChange",
@@ -469,7 +469,7 @@ const FilterForm = ({
469
469
 
470
470
  export default FilterForm;
471
471
 
472
- // !! PLEASE DO NOT DELETE THIS COMMENT BLOCK !!
472
+ // !! PLEASE DO NOT DELETE THIS COMMENTED BLOCK !!
473
473
  // import {
474
474
  // Box,
475
475
  // Button,
@@ -831,7 +831,7 @@ export default FilterForm;
831
831
  // `${filter?.filter_attribute_name}.operator`
832
832
  // );
833
833
 
834
- // // Toggle dummy field to force form dirty
834
+ // // Toggle dummy field to force form dirty
835
835
  // const dummy = watch("dummyChange");
836
836
  // setValue(
837
837
  // "dummyChange",
@@ -850,60 +850,108 @@ export default FilterForm;
850
850
  // </Box>
851
851
 
852
852
  // <Box>
853
- // {filter?.filter_attribute_data_type === "text" ||
854
- // filter?.filter_attribute_data_type === "number" ? (
855
- // <FormTextfield
856
- // filter={filter}
857
- // control={control}
858
- // onValueChange={updateFiltersFromForm}
859
- // />
860
- // ) : filter?.filter_attribute_data_type === "year" ? (
861
- // <FormDatePicker
862
- // filter={filter}
863
- // control={control}
864
- // views={["year"]}
865
- // onValueChange={updateFiltersFromForm}
866
- // />
867
- // ) : filter?.filter_attribute_data_type === "date" ? (
868
- // <FormDatePicker
869
- // filter={filter}
870
- // control={control}
871
- // onValueChange={updateFiltersFromForm}
872
- // />
873
- // ) : filter?.filter_attribute_data_type ===
874
- // "select" ? (
875
- // <FormMultiSelect
876
- // filter={filter}
877
- // control={control}
878
- // dropdownData={dropdownData}
879
- // onValueChange={updateFiltersFromForm}
880
- // />
881
- // ) : filter?.filter_attribute_data_type ===
882
- // "multiselect" ? (
883
- // <FormMultiSelect
884
- // filter={filter}
885
- // control={control}
886
- // dropdownData={dropdownData}
887
- // onValueChange={updateFiltersFromForm}
888
- // />
889
- // ) : filter?.filter_attribute_data_type === "radio" ? (
890
- // <FormMultiSelect
891
- // filter={filter}
892
- // control={control}
893
- // dropdownData={dropdownData}
894
- // onValueChange={updateFiltersFromForm}
895
- // />
896
- // ) : filter?.filter_attribute_data_type ===
897
- // "checkbox" ? (
898
- // <FormMultiSelect
899
- // filter={filter}
900
- // control={control}
901
- // dropdownData={dropdownData}
902
- // onValueChange={updateFiltersFromForm}
903
- // />
904
- // ) : (
905
- // <FormControl fullWidth size="small" />
906
- // )}
853
+ // {(() => {
854
+ // const fieldValue = formValues[
855
+ // filter?.filter_attribute_name as string
856
+ // ] as
857
+ // | { value: string | string[]; operator: string }
858
+ // | undefined;
859
+
860
+ // const operator = fieldValue?.operator;
861
+
862
+ // // Operators that should show a Date Picker
863
+ // const dateAllowedOperators = [
864
+ // "equal",
865
+ // "before",
866
+ // "after",
867
+ // "between",
868
+ // "is",
869
+ // "today",
870
+ // "is_before",
871
+ // "is_after",
872
+ // "is_on_or_before",
873
+ // "is_on_or_after",
874
+ // "empty",
875
+ // "not_empty",
876
+ // ];
877
+
878
+ // const showDatePicker =
879
+ // filter?.filter_attribute_data_type === "date" &&
880
+ // operator &&
881
+ // dateAllowedOperators.includes(operator);
882
+
883
+ // if (
884
+ // filter?.filter_attribute_data_type === "text" ||
885
+ // filter?.filter_attribute_data_type === "number"
886
+ // ) {
887
+ // return (
888
+ // <FormTextfield
889
+ // filter={filter}
890
+ // control={control}
891
+ // onValueChange={updateFiltersFromForm}
892
+ // />
893
+ // );
894
+ // }
895
+
896
+ // if (
897
+ // filter?.filter_attribute_data_type === "select"
898
+ // ) {
899
+ // return (
900
+ // <FormMultiSelect
901
+ // filter={filter}
902
+ // control={control}
903
+ // dropdownData={dropdownData}
904
+ // onValueChange={updateFiltersFromForm}
905
+ // />
906
+ // );
907
+ // }
908
+
909
+ // if (
910
+ // filter?.filter_attribute_data_type ===
911
+ // "multiselect"
912
+ // ) {
913
+ // return (
914
+ // <FormMultiSelect
915
+ // filter={filter}
916
+ // control={control}
917
+ // dropdownData={dropdownData}
918
+ // onValueChange={updateFiltersFromForm}
919
+ // />
920
+ // );
921
+ // }
922
+
923
+ // if (filter?.filter_attribute_data_type === "year") {
924
+ // return (
925
+ // <FormDatePicker
926
+ // filter={filter}
927
+ // control={control}
928
+ // views={["year"]}
929
+ // onValueChange={updateFiltersFromForm}
930
+ // />
931
+ // );
932
+ // }
933
+
934
+ // // DATE LOGIC
935
+ // if (showDatePicker) {
936
+ // return (
937
+ // <FormDatePicker
938
+ // filter={filter}
939
+ // control={control}
940
+ // onValueChange={updateFiltersFromForm}
941
+ // />
942
+ // );
943
+ // } else {
944
+ // return (
945
+ // <FormTextfield
946
+ // filter={filter}
947
+ // control={control}
948
+ // onValueChange={updateFiltersFromForm}
949
+ // />
950
+ // );
951
+ // }
952
+
953
+ // return <FormControl fullWidth size="small" />;
954
+ // })()}
907
955
  // </Box>
908
956
  // </Box>
909
957
  // );
@@ -4,37 +4,20 @@ import FormTextfield from "../components/Textfield";
4
4
  import FormDatePicker from "../components/Date";
5
5
  import FormMultiSelect from "../components/Multi-Select";
6
6
 
7
- export type DateOperator =
8
- | "equal"
9
- | "before"
10
- | "after"
11
- | "between"
12
- | "is"
13
- | "today"
14
- | "is_day_before"
15
- | "is_day_after"
16
- | "is_month_before"
17
- | "is_month_after"
18
- | "is_before"
19
- | "is_after"
20
- | "is_on_or_before"
21
- | "is_on_or_after";
22
-
23
- export const DATE_ALLOWED_OPERATORS: DateOperator[] = [
7
+ // Operators that should show a Date Picker
8
+ const dateAllowedOperators = [
24
9
  "equal",
25
10
  "before",
26
11
  "after",
27
12
  "between",
28
13
  "is",
29
14
  "today",
30
- "is_day_before",
31
- "is_day_after",
32
- "is_month_before",
33
- "is_month_after",
34
15
  "is_before",
35
16
  "is_after",
36
17
  "is_on_or_before",
37
18
  "is_on_or_after",
19
+ "empty",
20
+ "not_empty",
38
21
  ];
39
22
 
40
23
  export const resolveFilterInput = ({
@@ -50,20 +33,10 @@ export const resolveFilterInput = ({
50
33
  dropdownData: any;
51
34
  updateFiltersFromForm: () => void;
52
35
  }) => {
53
- const isDateType = filter.filter_attribute_data_type === "date";
54
-
55
- const showDatePicker =
56
- isDateType && operator && DATE_ALLOWED_OPERATORS.includes(operator as any);
36
+ const dataType = filter?.filter_attribute_data_type;
57
37
 
58
- const showTextInsteadOfDate =
59
- isDateType &&
60
- (!operator || !DATE_ALLOWED_OPERATORS.includes(operator as any));
61
-
62
- // TEXT / NUMBER -> Always TextField
63
- if (
64
- filter?.filter_attribute_data_type === "text" ||
65
- filter?.filter_attribute_data_type === "number"
66
- ) {
38
+ // TEXT / NUMBER → always textfield
39
+ if (dataType === "text" || dataType === "number") {
67
40
  return (
68
41
  <FormTextfield
69
42
  filter={filter}
@@ -73,8 +46,8 @@ export const resolveFilterInput = ({
73
46
  );
74
47
  }
75
48
 
76
- // YEAR
77
- if (filter?.filter_attribute_data_type === "year") {
49
+ // YEAR → DatePicker (Year mode)
50
+ if (dataType === "year") {
78
51
  return (
79
52
  <FormDatePicker
80
53
  filter={filter}
@@ -85,18 +58,21 @@ export const resolveFilterInput = ({
85
58
  );
86
59
  }
87
60
 
88
- // DATE LOGIC
89
- if (showDatePicker) {
90
- return (
91
- <FormDatePicker
92
- filter={filter}
93
- control={control}
94
- onValueChange={updateFiltersFromForm}
95
- />
96
- );
97
- }
61
+ // DATE FIELD
62
+ if (dataType === "date") {
63
+ const showDatePicker = operator && dateAllowedOperators.includes(operator);
64
+
65
+ if (showDatePicker) {
66
+ // Date Picker
67
+ return (
68
+ <FormDatePicker
69
+ filter={filter}
70
+ control={control}
71
+ onValueChange={updateFiltersFromForm}
72
+ />
73
+ );
74
+ }
98
75
 
99
- if (showTextInsteadOfDate) {
100
76
  return (
101
77
  <FormTextfield
102
78
  filter={filter}
@@ -106,7 +82,7 @@ export const resolveFilterInput = ({
106
82
  );
107
83
  }
108
84
 
109
- // MULTISELECT / SELECT / RADIO / CHECKBOX
85
+ // SELECT / MULTISELECT / RADIO / CHECKBOX
110
86
  if (
111
87
  filter?.filter_attribute_data_type !== undefined &&
112
88
  ["select", "multiselect", "radio", "checkbox"].includes(