rez-table-listing-mui 1.3.37 → 1.3.39

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.
@@ -36,7 +36,7 @@ const FilterForm = ({
36
36
  handleRemoveFilter,
37
37
  editMode = false,
38
38
  tableStates,
39
- onSaveFilterButtonClick,
39
+ setSavedFilterModalOpen,
40
40
  setDeleteFilterModalOpen,
41
41
  onChangeFunction,
42
42
  filterComponentOptions,
@@ -48,7 +48,7 @@ const FilterForm = ({
48
48
  handleRemoveFilter: (filter_attribute: string) => void;
49
49
  editMode?: boolean;
50
50
  tableStates: CraftTableOptionsProps;
51
- onSaveFilterButtonClick?: () => void;
51
+ setSavedFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>;
52
52
  setDeleteFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>;
53
53
  onChangeFunction: ({
54
54
  updatedFilters,
@@ -67,7 +67,6 @@ const FilterForm = ({
67
67
  filterComponentOptions?.tabOptions?.mainFilter?.customButtons;
68
68
 
69
69
  const filterName = filterMaster?.saved_filters?.selectedName || "";
70
- const isOwner = filterMaster?.saved_filters?.is_owner || false;
71
70
 
72
71
  const defaultValues = useMemo(() => {
73
72
  const filterValues = filters?.reduce((acc, curr) => {
@@ -253,28 +252,22 @@ const FilterForm = ({
253
252
  />
254
253
  )}
255
254
  />
256
- {isOwner && (
257
- <Box onClick={(e) => e.stopPropagation()}>
258
- <IconButton
259
- size="small"
260
- onClick={() =>
261
- setDeleteFilterModalOpen && setDeleteFilterModalOpen(true)
262
- }
263
- >
264
- <DeleteIcon />
265
- </IconButton>
266
- </Box>
267
- )}
255
+ <Box onClick={(e) => e.stopPropagation()}>
256
+ <IconButton
257
+ size="small"
258
+ onClick={() =>
259
+ setDeleteFilterModalOpen && setDeleteFilterModalOpen(true)
260
+ }
261
+ >
262
+ <DeleteIcon />
263
+ </IconButton>
264
+ </Box>
268
265
  </Box>
269
266
  )}
270
267
 
271
268
  <Box
272
269
  className="filter-criteria-form"
273
- sx={{
274
- ...filterFormStyles.formFlexContainer,
275
- maxHeight: "calc(100vh - 570px)",
276
- overflowY: "auto",
277
- }}
270
+ sx={filterFormStyles.formFlexContainer}
278
271
  >
279
272
  <FilterCriteria
280
273
  columnsData={columnsData}
@@ -449,7 +442,7 @@ const FilterForm = ({
449
442
  },
450
443
  }}
451
444
  onClick={() => {
452
- onSaveFilterButtonClick && onSaveFilterButtonClick();
445
+ setSavedFilterModalOpen && setSavedFilterModalOpen(true);
453
446
  }}
454
447
  >
455
448
  Save Filter
@@ -475,569 +468,3 @@ const FilterForm = ({
475
468
  };
476
469
 
477
470
  export default FilterForm;
478
-
479
- // !! PLEASE DO NOT DELETE THIS COMMENTED BLOCK !!
480
- // import {
481
- // Box,
482
- // Button,
483
- // FormControl,
484
- // IconButton,
485
- // TextField,
486
- // Typography,
487
- // } from "@mui/material";
488
- // import { CloseIcon, DeleteIcon } from "../../../../../assets/svg";
489
- // import {
490
- // FilterColumnsDataProps,
491
- // FilterComponentOptions,
492
- // FilterDropdownDataProps,
493
- // FilterMasterStateProps,
494
- // FilterStateProps,
495
- // } from "../../../../types/filter";
496
- // import { Controller, useForm } from "react-hook-form";
497
- // import FormTextfield from "./components/Textfield";
498
- // import React, { useEffect, useMemo, useCallback } from "react";
499
- // import FormDatePicker from "./components/Date";
500
- // import FormDropdown from "./components/Dropdown";
501
- // import FormMultiSelect from "./components/Multi-Select";
502
- // import { CraftTableOptionsProps } from "../../../../types/table-options";
503
- // import FilterCriteria from "./components/Filter-criteria";
504
- // import CustomSearch from "../search";
505
- // import { customDebounce } from "../../../../libs/utils/debounce";
506
- // import { filterFormStyles } from "../../style";
507
- // import { onFilterChangeFunctionProps } from "../../../../types/common";
508
-
509
- // interface FormValues {
510
- // filterName: string;
511
- // [key: string]:
512
- // | {
513
- // value: string | string[];
514
- // operator: string;
515
- // }
516
- // | string;
517
- // }
518
-
519
- // const FilterForm = ({
520
- // columnsData,
521
- // dropdownData,
522
- // searchTerm = "",
523
- // setSearchTerm,
524
- // handleRemoveFilter,
525
- // editMode = false,
526
- // tableStates,
527
- // setSavedFilterModalOpen,
528
- // setDeleteFilterModalOpen,
529
- // onChangeFunction,
530
- // filterComponentOptions,
531
- // }: {
532
- // columnsData: FilterColumnsDataProps;
533
- // dropdownData: FilterDropdownDataProps;
534
- // searchTerm?: string;
535
- // setSearchTerm: React.Dispatch<React.SetStateAction<string>>;
536
- // handleRemoveFilter: (filter_attribute: string) => void;
537
- // editMode?: boolean;
538
- // tableStates: CraftTableOptionsProps;
539
- // setSavedFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>;
540
- // setDeleteFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>;
541
- // onChangeFunction: ({
542
- // updatedFilters,
543
- // filterMaster,
544
- // }: onFilterChangeFunctionProps) => void;
545
- // filterComponentOptions?: FilterComponentOptions;
546
- // }) => {
547
- // const { filterMaster, filters, setFilters, setFilterMaster, setPagination } =
548
- // tableStates;
549
-
550
- // const showSaveButton =
551
- // filterComponentOptions?.tabOptions?.mainFilter?.showSaveButton;
552
- // const showClearAllButton =
553
- // filterComponentOptions?.tabOptions?.mainFilter?.showClearAllButton;
554
- // const customButtons =
555
- // filterComponentOptions?.tabOptions?.mainFilter?.customButtons;
556
-
557
- // const filterName = filterMaster?.saved_filters?.selectedName || "";
558
-
559
- // const defaultValues = useMemo(() => {
560
- // const filterValues = filters?.reduce((acc, curr) => {
561
- // if (curr?.filter_attribute_name) {
562
- // acc[curr?.filter_attribute_name] = {
563
- // value: curr?.filter_value ?? "",
564
- // operator:
565
- // curr?.filter_operator ?? curr?.dropdown_list?.[0]?.value ?? "",
566
- // };
567
- // }
568
- // return acc;
569
- // }, {} as Record<string, { value: string | string[]; operator: string }>);
570
-
571
- // return {
572
- // filterName: filterName ?? "",
573
- // dummyChange: "",
574
- // ...filterValues,
575
- // };
576
- // }, [filters, filterName]);
577
-
578
- // const { control, watch, reset, setValue, unregister } = useForm<
579
- // FormValues & { dummyChange: string }
580
- // >({
581
- // mode: "onChange",
582
- // defaultValues,
583
- // resetOptions: {
584
- // keepDirtyValues: false,
585
- // keepErrors: false,
586
- // },
587
- // });
588
-
589
- // const formValues = watch();
590
-
591
- // useEffect(() => {
592
- // reset(defaultValues);
593
- // }, [filters]);
594
-
595
- // const debouncedUpdateFilters = useCallback(
596
- // customDebounce((updatedFilters: FilterStateProps[]) => {
597
- // setFilters(updatedFilters);
598
-
599
- // const newState = {
600
- // filterMaster: filterMaster,
601
- // filters: updatedFilters,
602
- // };
603
-
604
- // onChangeFunction && onChangeFunction(newState);
605
- // }, 1000),
606
- // [setFilters]
607
- // );
608
-
609
- // const updateFiltersFromForm = useCallback(() => {
610
- // const updatedFilters = filters?.map((filter) => {
611
- // if (
612
- // filter?.filter_attribute_name &&
613
- // typeof formValues[filter?.filter_attribute_name] === "object"
614
- // ) {
615
- // const filterValue = formValues[filter?.filter_attribute_name] as {
616
- // value: string | string[];
617
- // operator: string;
618
- // };
619
-
620
- // return {
621
- // ...filter,
622
- // filter_value: filterValue.value,
623
- // filter_operator: filterValue.operator,
624
- // };
625
- // }
626
- // return filter;
627
- // });
628
-
629
- // setPagination((prev) => ({ ...prev, pageIndex: 0 }));
630
- // debouncedUpdateFilters(updatedFilters);
631
- // }, [formValues, filters, debouncedUpdateFilters]);
632
-
633
- // useEffect(() => {
634
- // return () => {
635
- // reset();
636
- // filters?.forEach((filter) => {
637
- // if (filter?.filter_attribute_name) {
638
- // unregister(filter?.filter_attribute_name);
639
- // }
640
- // });
641
- // };
642
- // }, []);
643
-
644
- // const groupedFilters = useMemo(() => {
645
- // return filters?.reduce((acc, filter) => {
646
- // const key = filter?.filter_entity_name || "";
647
- // if (!acc[key]) {
648
- // acc[key] = [];
649
- // }
650
- // acc[key].push(filter);
651
- // return acc;
652
- // }, {} as Record<string, FilterStateProps[]>);
653
- // }, [filters]);
654
-
655
- // const handleRemoveEntityType = (entityType: string) => {
656
- // const remainingFilters = filters?.filter(
657
- // (f) => f.filter_entity_name !== entityType
658
- // );
659
-
660
- // // unregister all fields belonging to this entity type
661
- // filters?.forEach((f) => {
662
- // if (f?.filter_entity_name === entityType && f?.filter_attribute_name) {
663
- // unregister(`${f?.filter_attribute_name}.value`);
664
- // unregister(`${f?.filter_attribute_name}.operator`);
665
- // }
666
- // });
667
-
668
- // setFilters(remainingFilters);
669
-
670
- // const newState = {
671
- // filterMaster,
672
- // filters: remainingFilters,
673
- // };
674
-
675
- // onChangeFunction && onChangeFunction(newState);
676
- // };
677
-
678
- // return (
679
- // <form
680
- // onSubmit={(e) => {
681
- // e.preventDefault(); // This prevents the page from reloading
682
- // }}
683
- // >
684
- // <Box sx={editMode ? filterFormStyles.formEditModeStyle : {}}>
685
- // {editMode && (
686
- // <Box
687
- // sx={{
688
- // "& .MuiOutlinedInput-root": {
689
- // borderRadius: "6px",
690
- // fontSize: "14px",
691
- // bgcolor: "#fafafa",
692
- // "& fieldset": { borderColor: "#c1c1c1" },
693
- // "&.Mui-focused fieldset": { borderColor: "#7A5AF8" },
694
- // },
695
- // display: "flex",
696
- // alignItems: "center",
697
- // justifyContent: "center",
698
- // padding: "0.5rem 0 1rem 0",
699
- // gap: 1,
700
- // }}
701
- // >
702
- // <Controller
703
- // name="filterName"
704
- // control={control}
705
- // render={({ field }) => (
706
- // <TextField
707
- // fullWidth
708
- // size="small"
709
- // placeholder="Filter Name"
710
- // value={filterName || field.value}
711
- // onChange={(e) => {
712
- // field.onChange(e);
713
- // if (editMode) {
714
- // setFilterMaster(
715
- // (prev) =>
716
- // ({
717
- // ...prev,
718
- // saved_filters: {
719
- // ...prev?.saved_filters,
720
- // selectedName: e.target.value,
721
- // },
722
- // } as FilterMasterStateProps)
723
- // );
724
- // }
725
- // }}
726
- // inputRef={field.ref}
727
- // sx={{
728
- // maxWidth: 400,
729
-
730
- // "& .MuiOutlinedInput-root": {
731
- // bgcolor: "white",
732
- // borderRadius: "0px",
733
- // fontSize: "14px",
734
- // color: "#272524",
735
- // fontWeight: "500",
736
- // "& fieldset": { borderColor: "#c5c5c5" },
737
- // "&.Mui-focused fieldset": { borderColor: "#7A5AF8" },
738
- // },
739
- // }}
740
- // />
741
- // )}
742
- // />
743
- // <Box onClick={(e) => e.stopPropagation()}>
744
- // <IconButton
745
- // size="small"
746
- // onClick={() =>
747
- // setDeleteFilterModalOpen && setDeleteFilterModalOpen(true)
748
- // }
749
- // >
750
- // <DeleteIcon />
751
- // </IconButton>
752
- // </Box>
753
- // </Box>
754
- // )}
755
-
756
- // <Box
757
- // className="filter-criteria-form"
758
- // sx={filterFormStyles.formFlexContainer}
759
- // >
760
- // <FilterCriteria
761
- // columnsData={columnsData}
762
- // tableStates={tableStates}
763
- // onChangeFunction={onChangeFunction}
764
- // filterComponentOptions={filterComponentOptions}
765
- // />
766
-
767
- // {!editMode && (
768
- // <CustomSearch value={searchTerm} onChange={setSearchTerm} />
769
- // )}
770
-
771
- // <Box
772
- // className="filter-form-inputs"
773
- // sx={filterFormStyles.formFlexContainer}
774
- // >
775
- // {Object.entries(groupedFilters).map(([entityType, filters]) => (
776
- // <Box
777
- // key={entityType}
778
- // sx={{
779
- // border: "1px solid #c5c5c5",
780
- // borderRadius: 2,
781
- // overflow: "hidden",
782
- // }}
783
- // >
784
- // {/* Group Header */}
785
- // <Box
786
- // className="group-header"
787
- // sx={filterFormStyles.formListSectionHeader}
788
- // >
789
- // <Typography fontSize={14}>{entityType}</Typography>
790
- // <IconButton
791
- // size="small"
792
- // onClick={() => handleRemoveEntityType(entityType)}
793
- // >
794
- // <CloseIcon />
795
- // </IconButton>
796
- // </Box>
797
-
798
- // {filters
799
- // .filter(
800
- // (filter) =>
801
- // filter?.filter_attribute_name
802
- // ?.toLowerCase()
803
- // .includes(searchTerm.toLowerCase()) ||
804
- // filter.filter_value
805
- // ?.toString()
806
- // .toLowerCase()
807
- // .includes(searchTerm.toLowerCase())
808
- // )
809
- // .reverse()
810
- // .map((filter) => {
811
- // const dropdown_list = filter.dropdown_list || [];
812
- // return (
813
- // <Box
814
- // key={filter.filter_attribute}
815
- // sx={filterFormStyles.formListItem}
816
- // >
817
- // <Box sx={filterFormStyles.formListItemHeader}>
818
- // <Typography
819
- // sx={filterFormStyles.formListItemHeaderName}
820
- // >
821
- // {filter?.filter_attribute_name}
822
- // </Typography>
823
- // <FormDropdown
824
- // filter={filter}
825
- // control={control}
826
- // setValue={setValue}
827
- // dropdownList={dropdown_list}
828
- // sx={filterFormStyles.formListItemHeaderDropdown}
829
- // onValueChange={updateFiltersFromForm}
830
- // />
831
- // <IconButton
832
- // sx={{ marginLeft: "auto" }}
833
- // onClick={() => {
834
- // unregister(
835
- // `${filter?.filter_attribute_name}.value`
836
- // );
837
- // unregister(
838
- // `${filter?.filter_attribute_name}.operator`
839
- // );
840
-
841
- // // Toggle dummy field to force form dirty
842
- // const dummy = watch("dummyChange");
843
- // setValue(
844
- // "dummyChange",
845
- // dummy === "changed" ? "reset" : "changed",
846
- // {
847
- // shouldDirty: true,
848
- // }
849
- // );
850
-
851
- // handleRemoveFilter(filter.filter_attribute);
852
- // }}
853
- // size="small"
854
- // >
855
- // <CloseIcon />
856
- // </IconButton>
857
- // </Box>
858
-
859
- // <Box>
860
- // {(() => {
861
- // const fieldValue = formValues[
862
- // filter?.filter_attribute_name as string
863
- // ] as
864
- // | { value: string | string[]; operator: string }
865
- // | undefined;
866
-
867
- // const operator = fieldValue?.operator;
868
-
869
- // // Operators that should show a Date Picker
870
- // const dateAllowedOperators = [
871
- // "equal",
872
- // "before",
873
- // "after",
874
- // "between",
875
- // "is",
876
- // "today",
877
- // "is_before",
878
- // "is_after",
879
- // "is_on_or_before",
880
- // "is_on_or_after",
881
- // "empty",
882
- // "not_empty",
883
- // ];
884
-
885
- // const showDatePicker =
886
- // filter?.filter_attribute_data_type === "date" &&
887
- // operator &&
888
- // dateAllowedOperators.includes(operator);
889
-
890
- // if (
891
- // filter?.filter_attribute_data_type === "text" ||
892
- // filter?.filter_attribute_data_type === "number"
893
- // ) {
894
- // return (
895
- // <FormTextfield
896
- // filter={filter}
897
- // control={control}
898
- // onValueChange={updateFiltersFromForm}
899
- // />
900
- // );
901
- // }
902
-
903
- // if (
904
- // filter?.filter_attribute_data_type === "select"
905
- // ) {
906
- // return (
907
- // <FormMultiSelect
908
- // filter={filter}
909
- // control={control}
910
- // dropdownData={dropdownData}
911
- // onValueChange={updateFiltersFromForm}
912
- // />
913
- // );
914
- // }
915
-
916
- // if (
917
- // filter?.filter_attribute_data_type ===
918
- // "multiselect"
919
- // ) {
920
- // return (
921
- // <FormMultiSelect
922
- // filter={filter}
923
- // control={control}
924
- // dropdownData={dropdownData}
925
- // onValueChange={updateFiltersFromForm}
926
- // />
927
- // );
928
- // }
929
-
930
- // if (filter?.filter_attribute_data_type === "year") {
931
- // return (
932
- // <FormDatePicker
933
- // filter={filter}
934
- // control={control}
935
- // views={["year"]}
936
- // onValueChange={updateFiltersFromForm}
937
- // />
938
- // );
939
- // }
940
-
941
- // // DATE LOGIC
942
- // if (showDatePicker) {
943
- // return (
944
- // <FormDatePicker
945
- // filter={filter}
946
- // control={control}
947
- // onValueChange={updateFiltersFromForm}
948
- // />
949
- // );
950
- // } else {
951
- // return (
952
- // <FormTextfield
953
- // filter={filter}
954
- // control={control}
955
- // onValueChange={updateFiltersFromForm}
956
- // />
957
- // );
958
- // }
959
-
960
- // return <FormControl fullWidth size="small" />;
961
- // })()}
962
- // </Box>
963
- // </Box>
964
- // );
965
- // })}
966
- // </Box>
967
- // ))}
968
- // </Box>
969
- // </Box>
970
- // </Box>
971
-
972
- // {filters?.length > 0 && (showClearAllButton || showSaveButton) && (
973
- // <Box sx={{ display: "flex", justifyContent: "center", gap: 1, mt: 3 }}>
974
- // {showClearAllButton && (
975
- // <Button
976
- // variant="outlined"
977
- // sx={{
978
- // color: "#7A5AF8",
979
- // border: `1px solid #7A5AF8`,
980
- // borderRadius: "6px",
981
- // textTransform: "none",
982
- // fontSize: "14px",
983
- // }}
984
- // fullWidth
985
- // onClick={() => {
986
- // setFilters([]);
987
-
988
- // const filterMaster = {
989
- // ...tableStates.filterMaster,
990
- // activeFilterTabIndex: -1,
991
- // };
992
-
993
- // const newState = {
994
- // filterMaster: filterMaster,
995
- // filters: [],
996
- // };
997
-
998
- // onChangeFunction && onChangeFunction(newState);
999
- // }}
1000
- // >
1001
- // Clear All
1002
- // </Button>
1003
- // )}
1004
-
1005
- // {showSaveButton && (
1006
- // <Button
1007
- // variant="contained"
1008
- // fullWidth
1009
- // sx={{
1010
- // color: "white",
1011
- // backgroundColor: "#7A5AF8",
1012
- // "&.Mui-disabled": {
1013
- // backgroundColor: "#d7cefd",
1014
- // color: "rgba(255, 255, 255, 0.7)",
1015
- // },
1016
- // }}
1017
- // onClick={() => {
1018
- // setSavedFilterModalOpen && setSavedFilterModalOpen(true);
1019
- // }}
1020
- // >
1021
- // Save Filter
1022
- // </Button>
1023
- // )}
1024
-
1025
- // {/* Custom buttons from props */}
1026
- // {customButtons?.map((btn, idx) => (
1027
- // <Button
1028
- // key={idx}
1029
- // fullWidth
1030
- // variant={btn?.variant ?? "outlined"}
1031
- // sx={btn?.sx}
1032
- // {...btn}
1033
- // >
1034
- // {btn?.label}
1035
- // </Button>
1036
- // ))}
1037
- // </Box>
1038
- // )}
1039
- // </form>
1040
- // );
1041
- // };
1042
-
1043
- // export default FilterForm;
@@ -11,7 +11,7 @@ const MainFilter = ({
11
11
  columnsData,
12
12
  dropdownData,
13
13
  tableStates,
14
- onSaveFilterButtonClick,
14
+ setSavedFilterModalOpen,
15
15
  onChangeFunction,
16
16
  filterComponentOptions,
17
17
  }: FilterFormComponentProps) => {
@@ -22,10 +22,10 @@ const MainFilter = ({
22
22
  useEffect(() => {
23
23
  setFilterMaster(
24
24
  (prev) =>
25
- ({
26
- ...prev,
27
- activeFilterTabIndex: 0,
28
- } as FilterMasterStateProps)
25
+ ({
26
+ ...prev,
27
+ activeFilterTabIndex: 0,
28
+ } as FilterMasterStateProps)
29
29
  );
30
30
  }, []);
31
31
 
@@ -61,7 +61,7 @@ const MainFilter = ({
61
61
  setSearchTerm={setSearchTerm}
62
62
  handleRemoveFilter={handleRemoveFilter}
63
63
  tableStates={tableStates}
64
- onSaveFilterButtonClick={onSaveFilterButtonClick}
64
+ setSavedFilterModalOpen={setSavedFilterModalOpen}
65
65
  dropdownData={dropdownData}
66
66
  onChangeFunction={onChangeFunction}
67
67
  filterComponentOptions={filterComponentOptions}