@acuteinfo/common-screens 1.0.25 → 1.0.26

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/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import 'regenerator-runtime/runtime';
2
2
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
3
- import { TextField, GradientButton, utilFunction, ClearCacheProvider, queryClient, Alert, GridWrapper } from '@acuteinfo/common-base';
3
+ import { TextField, GradientButton, utilFunction, ClearCacheProvider, queryClient, Alert, GridWrapper, SearchBar } from '@acuteinfo/common-base';
4
4
  import { useState, useRef, useEffect, Fragment, useMemo, useReducer, useCallback } from 'react';
5
5
  import { makeStyles } from '@mui/styles';
6
6
  import Visibility from '@mui/icons-material/Visibility';
7
7
  import VisibilityOff from '@mui/icons-material/VisibilityOff';
8
- import { Container, Grid, InputAdornment, IconButton, CircularProgress, FormHelperText, Typography, Tooltip, tooltipClasses, Stack, Box, Avatar, Button, alpha, AppBar, Toolbar } from '@mui/material';
8
+ import { Container, Grid, InputAdornment, IconButton, CircularProgress, FormHelperText, Typography, Tooltip, tooltipClasses, Stack, Box, Avatar, Button, alpha, AppBar, Toolbar, List, ListItemIcon, ListItem, ListItemText, Collapse, Drawer } from '@mui/material';
9
9
  import { useTranslation } from 'react-i18next';
10
10
  import OTPInput, { ResendOTP } from 'otp-input-react';
11
11
  import IconButton$1 from '@mui/material/IconButton';
@@ -21,8 +21,16 @@ import Waving_hand$1 from 'assets/images/Waving_Hand_header.png';
21
21
  import LogoutIcon from '@mui/icons-material/Logout';
22
22
  import MenuOutlinedIcon from '@mui/icons-material/MenuOutlined';
23
23
  import { format } from 'date-fns';
24
+ import { useNavigate } from 'react-router-dom';
25
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
26
+ import ScrollBar from 'react-perfect-scrollbar';
27
+ import { ExpandLess, ExpandMore } from '@mui/icons-material';
28
+ import ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';
29
+ import { library } from '@fortawesome/fontawesome-svg-core';
30
+ import { faHandsHelping, faUsers, faBars, faBalanceScale, faHandHoldingHeart, faTasks, faCog, faHome, faTh, faUsersCog, faCircle, faUserCircle, faHashtag, faThumbtack, faSquare, faLink, faQuestion, faPlus, faTable, faLocationArrow, faHeadset, faGears, faArrowDown, faArrowUp, faSpinner, faCircleExclamation, faRotateRight, faUserLock, faUserClock, faGripHorizontal, faFileLines, faGear, faHeadphones, faUsersGear, faMessage, faUnlock, faUserPlus, faUserCheck, faKey, faIdCard, faIdBadge, faCheck, faCheckDouble, faCircleCheck, faCircleXmark, faUserTag, faAddressCard, faChartColumn, faUserPen, faHandHolding, faHandHoldingMedical, faObjectGroup, faTowerCell, faTowerObservation, faBuilding, faMailBulk, faLandmarkFlag, faCreditCard, faHospitalSymbol, faPlugCircleBolt, faCodeBranch, faPersonCircleCheck, faBank, faServer, faNotesMedical, faA, faB, faC, faD, faE, faF, faG, faH, faI, faJ, faK, faL, faM, faN, faO, faP, faQ, faR, faS, faT, faU, faV, faW, faX, faY, faZ } from '@fortawesome/free-solid-svg-icons';
31
+ import 'lodash';
24
32
 
25
- const useStyles$2 = makeStyles((theme) => ({
33
+ const useStyles$3 = makeStyles((theme) => ({
26
34
  wrapper: {
27
35
  minHeight: "100vh",
28
36
  boxShadow: "0 3px 6px rgba(0,0,0,0.03)",
@@ -820,7 +828,7 @@ const isBase64 = (str = "") => {
820
828
  const BankDetails = ({ bannerDetails }) => {
821
829
  const [loginImageURL, setLoginImageURL] = useState(null);
822
830
  const urlObj = useRef(null);
823
- const classes = useStyles$2();
831
+ const classes = useStyles$3();
824
832
  const banner = useMemo(() => bannerDetails, []);
825
833
  useEffect(() => {
826
834
  if (Boolean(banner?.bannerImg)) {
@@ -1212,7 +1220,7 @@ const reducer$1 = (state, action) => {
1212
1220
  }
1213
1221
  };
1214
1222
  const AuthControllerWrapper = ({ bannerDetails, logoUrl, logoTitle, loginFn, veirfyUsernameandPassword, verifyOTP, OTPResendRequest, ResetPassword, LanguageComponent, forgotPasswordEndpoint, }) => {
1215
- const classes = useStyles$2();
1223
+ const classes = useStyles$3();
1216
1224
  const [loginState, dispath] = useReducer(reducer$1, inititalState$1);
1217
1225
  const [openpwdreset, setOpenPwdReset] = useState(false);
1218
1226
  const failureCount = useRef(0);
@@ -1728,7 +1736,7 @@ const reducer = (state, action) => {
1728
1736
  }
1729
1737
  };
1730
1738
  const ForgotPasswordControllerWrapper = ({ screenFlag, updatenewPassword, veirfyUsernameandMobileNo, verifyOTPForPWDReset, logoUrl, logoTitle, LanguageComponent, bannerDetails, navigate, loginPageEndpoint, }) => {
1731
- const classes = useStyles$2();
1739
+ const classes = useStyles$3();
1732
1740
  const [loginState, dispath] = useReducer(reducer, inititalState);
1733
1741
  const [open, setOpen] = useState(false);
1734
1742
  const { enqueueSnackbar } = useSnackbar();
@@ -2052,7 +2060,7 @@ styleInject(css_248z);
2052
2060
 
2053
2061
  var Waving_hand = "waving-hand.png";
2054
2062
 
2055
- const useStyles$1 = makeStyles((theme) => ({
2063
+ const useStyles$2 = makeStyles((theme) => ({
2056
2064
  heading_user_img: {
2057
2065
  width: "40px",
2058
2066
  height: "40px",
@@ -2093,7 +2101,7 @@ const actions = [
2093
2101
  },
2094
2102
  ];
2095
2103
  const BranchSelectionGrid = ({ selectionMode, authState, isBranchSelectedFn, isLoggedInFn, logoutFn, logos, logo, navigate, BranchSelectionGridDataApiFn, GetMenuDataApiFn, sideImage, branchSelectFn, dashboardUrl, loginUrl, appTranCd, }) => {
2096
- const classes = useStyles$1();
2104
+ const classes = useStyles$2();
2097
2105
  const { enqueueSnackbar } = useSnackbar();
2098
2106
  const { data, isLoading, isFetching, refetch, error, isError } = useQuery(["BranchSelectionGridData"], () => BranchSelectionGridDataApiFn());
2099
2107
  useEffect(() => {
@@ -2268,7 +2276,7 @@ const BranchSelectionGridWrapper = (props) => {
2268
2276
  return (jsx(ClearCacheProvider, { children: jsx(BranchSelectionGrid, { ...props }) }));
2269
2277
  };
2270
2278
 
2271
- const useStyles = makeStyles((theme) => ({
2279
+ const useStyles$1 = makeStyles((theme) => ({
2272
2280
  appBar: {
2273
2281
  // zIndex: theme.zIndex.drawer + 1,
2274
2282
  transition: theme.transitions.create(["width", "margin"], {
@@ -2470,7 +2478,7 @@ const useStyles = makeStyles((theme) => ({
2470
2478
  }));
2471
2479
 
2472
2480
  const AppbarWrapper = ({ handleDrawerOpen, handleDrawerClose, open, authState, LanguageComponent, SearchComponent, dashboardUrl, logos, bankLogo, profilePic, handleLogout, handleProfile, navigate, hideGreetings, menuIconPosition = "left", }) => {
2473
- const classes = useStyles();
2481
+ const classes = useStyles$1();
2474
2482
  const { t } = useTranslation();
2475
2483
  const LightTooltip = styled(({ className, ...props }) => (jsx(Tooltip, { ...props, classes: { popper: className } })))(({ theme }) => ({
2476
2484
  [`& .${tooltipClasses.tooltip}`]: {
@@ -2497,7 +2505,7 @@ const AppbarWrapper = ({ handleDrawerOpen, handleDrawerClose, open, authState, L
2497
2505
  alignItems: "center",
2498
2506
  height: "80px",
2499
2507
  width: "227px",
2500
- flexDirection: menuIconPosition === "right" ? "row-reverse" : "row"
2508
+ flexDirection: menuIconPosition === "right" ? "row-reverse" : "row",
2501
2509
  }, children: [open ? (jsx(IconButton$1, { disableRipple: true, onClick: () => handleDrawerClose(), className: classes.DrawerClose_icon, children: jsx(MenuOutlinedIcon, { fontSize: "large" }) })) : (jsx(IconButton$1, { disableRipple: true, "aria-label": "open drawer", onClick: () => handleDrawerOpen(), className: classes.DrawerClose_icon, children: jsx(MenuOutlinedIcon, { fontSize: "large" }) })), jsxs("div", { children: [jsx("img", { src: Boolean(logos?.logo) ? logos?.logo : bankLogo, alt: "CbsEnfinity", className: classes.logo, onClick: (e) => {
2502
2510
  e.preventDefault();
2503
2511
  navigate(dashboardUrl ?? "./dashboard");
@@ -2541,5 +2549,652 @@ const checkDateAndDisplay = (dateStr) => {
2541
2549
  return "N/A";
2542
2550
  };
2543
2551
 
2544
- export { AppbarWrapper, AuthControllerWrapper, BranchSelectionGridWrapper, ForgotPasswordControllerWrapper, ValidatePassword };
2552
+ const drawerWidth = 227;
2553
+ const useStyles = makeStyles((theme) => ({
2554
+ drawerPaper: {
2555
+ position: "relative",
2556
+ whiteSpace: "nowrap",
2557
+ width: drawerWidth,
2558
+ transition: theme.transitions.create("width", {
2559
+ easing: theme.transitions.easing.sharp,
2560
+ duration: theme.transitions.duration.enteringScreen,
2561
+ }),
2562
+ border: "none",
2563
+ overflow: "hidden",
2564
+ zIndex: 120,
2565
+ },
2566
+ drawerPaperClose: {
2567
+ overflowX: "hidden",
2568
+ transition: theme.transitions.create("width", {
2569
+ easing: theme.transitions.easing.sharp,
2570
+ duration: theme.transitions.duration.leavingScreen,
2571
+ }),
2572
+ width: theme.spacing(8),
2573
+ [theme.breakpoints.up("sm")]: {
2574
+ width: theme.spacing(8),
2575
+ },
2576
+ },
2577
+ toolbarIcon: {
2578
+ display: "flex",
2579
+ alignItems: "center",
2580
+ zIndex: 9999,
2581
+ ...theme.mixins.toolbar,
2582
+ background: "var(--theme-color2)",
2583
+ justifyContent: "center",
2584
+ height: "80px",
2585
+ // borderBottom: "1px dashed #949597",
2586
+ },
2587
+ hrCSS: {
2588
+ zIndex: 9999,
2589
+ },
2590
+ buttonLink: {
2591
+ backgroundColor: "transparent",
2592
+ border: "none",
2593
+ cursor: "pointer",
2594
+ textDecoration: "underline",
2595
+ display: "inline",
2596
+ margin: 0,
2597
+ padding: 0,
2598
+ "&:focus": {
2599
+ textDecoration: "none",
2600
+ },
2601
+ "$:hover": {
2602
+ textDecoration: "none",
2603
+ },
2604
+ },
2605
+ }));
2606
+ /*
2607
+
2608
+ */
2609
+
2610
+ const reportMetaData = [];
2611
+
2612
+ // import { createTheme } from "@mui/material";
2613
+ // const theme = createTheme();
2614
+ makeStyles((theme) => ({
2615
+ navBarCSS: {
2616
+ padding: "4px 1rem ",
2617
+ backgroundColor: "#fff !important",
2618
+ minHeight: "64px",
2619
+ boxShadow: "0 3px 6px rgba(0,0,0,0.03)",
2620
+ margin: "10px",
2621
+ },
2622
+ headerDropdown: {
2623
+ backgroundColor: "#fff",
2624
+ minWidth: "205px",
2625
+ boxShadow: "0 3px 6px rgba(0,0,0,0.16)",
2626
+ textDecoration: "none",
2627
+ borderBottom: "3px solid #26A456",
2628
+ },
2629
+ navLinkHeader: {
2630
+ color: "#555",
2631
+ fontSize: "14px",
2632
+ lineHeight: "1.2",
2633
+ paddingTop: "4px",
2634
+ paddingBottom: "4px",
2635
+ paddingRight: ".5rem",
2636
+ paddingLeft: ".5rem",
2637
+ fontWeight: 600,
2638
+ textTransform: "capitalize",
2639
+ display: "flex",
2640
+ alignItems: "center",
2641
+ cursor: "pointer",
2642
+ "& hover": {
2643
+ color: "#0b6fb8",
2644
+ },
2645
+ },
2646
+ productLink: {
2647
+ color: "#555",
2648
+ padding: "0 1rem 8px 1rem",
2649
+ display: "inline-block",
2650
+ verticalAlign: "middle",
2651
+ cursor: "pointer",
2652
+ textTransform: "capitalize",
2653
+ },
2654
+ font13: {
2655
+ fontSize: "13px",
2656
+ },
2657
+ loginDropdown: {
2658
+ width: "160px",
2659
+ },
2660
+ }));
2661
+ const useStylesSideBar = makeStyles((theme) => ({
2662
+ root: {
2663
+ justifyContent: "center",
2664
+ },
2665
+ drawer: {
2666
+ margin: "5px",
2667
+ },
2668
+ item: {
2669
+ display: "flex",
2670
+ //borderBottom: "2px solid #93242433",
2671
+ borderRadius: "8px",
2672
+ marginLeft: "7px",
2673
+ marginTop: "6.5px",
2674
+ width: "90%",
2675
+ height: "50px",
2676
+ paddingLeft: theme.spacing(2),
2677
+ paddingRight: theme.spacing(2),
2678
+ background: "var(--theme-color2)",
2679
+ boxShadow: "3px 6px 9px rgba(93, 95, 121, 0.26)",
2680
+ "& svg": {
2681
+ // color: theme.palette.primary.main,
2682
+ color: "var(--theme-color1)",
2683
+ },
2684
+ "&:hover": {
2685
+ boxShadow: "6px 6px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 0px 0px rgba(0,0,5,0.12)",
2686
+ background: "var(--theme-color4)",
2687
+ transition: "0.6s ease",
2688
+ },
2689
+ },
2690
+ drawerIconSize: {
2691
+ width: "50px",
2692
+ height: "50px",
2693
+ padding: "18px",
2694
+ justifyItems: "cenetr",
2695
+ },
2696
+ button: {
2697
+ color: "#0063A3",
2698
+ padding: "10px 8px",
2699
+ //justifyContent: "flex-start",
2700
+ textTransform: "none",
2701
+ letterSpacing: 0,
2702
+ width: "100%",
2703
+ textAlign: "left",
2704
+ "&:hover": {
2705
+ backgroundColor: "var(--theme-color1)",
2706
+ // boxShadow: "0px 15px 20px rgb(221 176 176 / 37%)",
2707
+ },
2708
+ },
2709
+ btnRoot: {
2710
+ paddingLeft: "24px",
2711
+ justifyContent: "left ",
2712
+ },
2713
+ navLinks: {
2714
+ // height: "calc(100vh - 78px)",
2715
+ overflowY: "auto",
2716
+ overflowX: "hidden",
2717
+ // height:"100px",
2718
+ backgroundColor: "rgba(250, 251, 255, 0.9);",
2719
+ // height: "calc(100vh - 230px)",
2720
+ //background: "var(--theme-color1)",
2721
+ // marginTop: "25px",
2722
+ // boxShadow: "0 3px 6px rgba(255, 99, 71, 0.3)",
2723
+ borderRadius: "10px",
2724
+ paddingTop: "5px",
2725
+ //margin: "5px",
2726
+ },
2727
+ navLinksforseparateView: {
2728
+ overflowY: "auto",
2729
+ overflowX: "hidden",
2730
+ height: "calc(100vh - 180px)",
2731
+ // height:"auto",
2732
+ paddingTop: "10px",
2733
+ },
2734
+ nestedMenuLevel1: {
2735
+ paddingLeft: "20px",
2736
+ marginTop: "11px",
2737
+ paddingRight: theme.spacing(3),
2738
+ height: "auto",
2739
+ fontSize: "13px",
2740
+ "& div > svg": {
2741
+ fontSize: "14px",
2742
+ },
2743
+ },
2744
+ nestedMenuLevel2: {
2745
+ paddingLeft: "20px",
2746
+ marginTop: "11px",
2747
+ fontSize: "12px",
2748
+ "& div > svg": {
2749
+ fontSize: "9px",
2750
+ },
2751
+ },
2752
+ listIcon: {
2753
+ minWidth: "30px !important",
2754
+ justifyItems: "center",
2755
+ color: "var(--theme-color6)",
2756
+ fontWeight: 700,
2757
+ fontSize: "18px",
2758
+ },
2759
+ link: {
2760
+ fontSize: "1rem ",
2761
+ marginTop: "2px",
2762
+ marginBottom: "2px",
2763
+ textOverflow: "ellipsis",
2764
+ color: "var(--theme-color1)",
2765
+ marginLeft: "15px",
2766
+ whiteSpace: "break-spaces",
2767
+ "& span": {
2768
+ fontWeight: 400,
2769
+ whiteSpace: "break-spaces",
2770
+ },
2771
+ "& p": {
2772
+ color: "var(--theme-color3)",
2773
+ fontweight: 400,
2774
+ },
2775
+ },
2776
+ linktext: {
2777
+ backgroundColor: "var(--theme-color2)",
2778
+ "&:hover": {
2779
+ background: "var(--theme-color1)",
2780
+ "& div": {
2781
+ color: "var(--theme-color2) !important",
2782
+ },
2783
+ "& div > svg": {
2784
+ color: "var(--theme-color2) !important",
2785
+ },
2786
+ },
2787
+ },
2788
+ faSmall: {
2789
+ fontSize: "13px ",
2790
+ },
2791
+ openList: {
2792
+ ":not(activeMenuItem)": {
2793
+ "& > div": {
2794
+ backgroundColor: "rgba(0, 0, 0, 0.04)",
2795
+ },
2796
+ "& *": {
2797
+ color: "var(--theme-color2)",
2798
+ },
2799
+ },
2800
+ },
2801
+ openCurrent: {
2802
+ backgroundColor: "var(--theme-color1)",
2803
+ "& *": {
2804
+ color: "var(--theme-color2)",
2805
+ },
2806
+ "&:hover": {
2807
+ backgroundColor: "var(--theme-color1)",
2808
+ },
2809
+ },
2810
+ slimList: {
2811
+ paddingTop: "15px",
2812
+ paddingBottom: "13px",
2813
+ height: "auto",
2814
+ paddingLeft: "15px",
2815
+ justifyItems: "center",
2816
+ },
2817
+ activeMenuItem: {
2818
+ backgroundColor: "var(--theme-color1)!important ",
2819
+ "& > div": {
2820
+ color: "var(--theme-color2)!important",
2821
+ },
2822
+ "& svg": {
2823
+ color: "var(--theme-color4)",
2824
+ },
2825
+ "& hover": {
2826
+ "& > div": {
2827
+ color: "var(--theme-color3)",
2828
+ },
2829
+ },
2830
+ "& p": {
2831
+ color: "var(--theme-color6)",
2832
+ },
2833
+ },
2834
+ }));
2835
+
2836
+ let localdrawerOpen = true;
2837
+ const SideBarNav = ({ metaData, handleDrawerOpen, drawerOpen, setView, slimSize, setNewFilterData, setNewFilterView, isFromSeparetView = false, rootUrl, dashboardUrl, }) => {
2838
+ const classes = useStylesSideBar();
2839
+ let result = null;
2840
+ localdrawerOpen = drawerOpen;
2841
+ if (Array.isArray(metaData.navItems)) {
2842
+ result = metaData.navItems.map((one) => {
2843
+ if (one?.seperateView === true) {
2844
+ return (jsx(SeperateListView, { item: one, setView: setView, classes: classes, level: 0, slimSize: slimSize, setNewFilterData: setNewFilterData, setNewFilterView: setNewFilterView }, one.label));
2845
+ }
2846
+ else if (Array.isArray(one.children)) {
2847
+ return (jsx(NestedListItem, { item: one, classes: classes, level: 0, handleDrawerOpen: handleDrawerOpen, drawerOpen: drawerOpen, slimSize: slimSize, rootUrl: rootUrl, dashboardUrl: dashboardUrl }, one.label));
2848
+ }
2849
+ else {
2850
+ return (jsx(SingleListItem, { item: one, classes: classes, level: 0, slimSize: slimSize, drawerOpen: drawerOpen, rootUrl: rootUrl, dashboardUrl: dashboardUrl }, one.label));
2851
+ }
2852
+ });
2853
+ }
2854
+ return (jsx(List, { component: "nav", disablePadding: true, className: isFromSeparetView ? classes.navLinksforseparateView : classes.navLinks, children: jsx(ScrollBar, { children: result }) }));
2855
+ };
2856
+ const SeperateListView = ({ item, setView, level, classes, slimSize, setNewFilterData, setNewFilterView, }) => {
2857
+ let labelStart = (item.label || "").toLowerCase().substring(0, 1) || "circle";
2858
+ const icon = item.icon ? (jsx(ListItemIcon, { className: classes.listIcon, children: jsx(FontAwesomeIcon, { icon: ["fas", labelStart] }) })) : null;
2859
+ const levelClassName = level === 1
2860
+ ? classes.nestedMenuLevel1
2861
+ : level === 2
2862
+ ? classes.nestedMenuLevel2
2863
+ : "";
2864
+ return (jsxs(ListItem, { button: true, disableGutters: true, className: clsx({
2865
+ [classes.item]: true,
2866
+ [levelClassName]: Boolean(levelClassName),
2867
+ [classes.slimList]: Boolean(slimSize),
2868
+ [classes.drawerIconSize]: !localdrawerOpen,
2869
+ }), onClick: () => {
2870
+ if (item.viewName === "newfilterview" && Array.isArray(item.children)) {
2871
+ setNewFilterView({
2872
+ label: item.label,
2873
+ placeholder: "Search " + item.label + " Screen...",
2874
+ });
2875
+ let newChield = item.children.map((item1) => {
2876
+ return { ...item1, secondaryLabel: item1.user_code };
2877
+ });
2878
+ setNewFilterData(newChield);
2879
+ }
2880
+ setView(item.viewName);
2881
+ }, children: [jsx(Tooltip, { title: item.label, arrow: true, placement: localdrawerOpen ? "bottom-start" : "right", children: jsx("span", { children: icon }) }), (localdrawerOpen && item.label.length > 27) || !Boolean(icon) ? (jsx(Tooltip, { title: item.label, arrow: true, placement: localdrawerOpen ? "bottom-start" : "right", children: jsx(ListItemText, { primary: item.label, className: classes.link, secondary: item.secondaryLabel ?? null }) })) : localdrawerOpen ? (jsx(ListItemText, { primary: item.label, className: classes.link, secondary: item.secondaryLabel ?? null })) : null] }));
2882
+ };
2883
+ const SingleListItem = ({ item, classes, level, slimSize, drawerOpen, rootUrl, dashboardUrl, }) => {
2884
+ const navigate = useNavigate();
2885
+ const isActiveMenu = isActiveMenuFromhref(window.location?.pathname ?? "", item?.href ?? "", item?.navigationProps, rootUrl, dashboardUrl);
2886
+ if (isActiveMenu) {
2887
+ // GeneralAPI.setDocumentName(item.label);
2888
+ let titleText = document.title;
2889
+ document.title = titleText.split(" - ")[0] + " - " + item.label;
2890
+ }
2891
+ let labelStart = (item.label || "").toLowerCase().substring(0, 1) || "circle";
2892
+ const icon = item.icon.toLowerCase() === "process.gif" ? (jsx(ListItemIcon, { className: classes.listIcon, children: jsx(FontAwesomeIcon, { icon: ["fas", labelStart] }) })) : (jsx(ListItemIcon, { className: classes.listIcon, children: jsx(FontAwesomeIcon, { icon: ["fas", item.icon] }) }));
2893
+ const levelClassName = level === 1
2894
+ ? classes.nestedMenuLevel1
2895
+ : level === 2
2896
+ ? classes.nestedMenuLevel2
2897
+ : "";
2898
+ return (jsxs(ListItem, { button: true, disableGutters: true, className: clsx({
2899
+ [classes.item]: true,
2900
+ [levelClassName]: Boolean(levelClassName),
2901
+ [classes.slimList]: Boolean(slimSize),
2902
+ [classes.activeMenuItem]: isActiveMenu,
2903
+ [classes.drawerIconSize]: !localdrawerOpen,
2904
+ }), onClick: (e) => {
2905
+ e.preventDefault();
2906
+ if (item.isRouterLink) {
2907
+ let path = item.href;
2908
+ path =
2909
+ item.href?.substring(0, 1) === "/"
2910
+ ? item.href.substring(1)
2911
+ : item.href;
2912
+ if (item.passNavigationPropsAsURLParmas) {
2913
+ let urlParms = new URLSearchParams(item?.navigationProps);
2914
+ navigate(`${path}?${urlParms.toString()}`);
2915
+ }
2916
+ else {
2917
+ navigate(`${path}`, {
2918
+ state: { ...item?.navigationProps },
2919
+ });
2920
+ }
2921
+ }
2922
+ else if (Boolean(item.href)) {
2923
+ window.open(item.href, item.rel ?? "_newtab");
2924
+ }
2925
+ }, children: [jsx(Tooltip, { title: item.label, arrow: true, placement: localdrawerOpen ? "bottom-start" : "right", children: jsx("span", { children: icon }) }), (localdrawerOpen && item.label.length > 27) || !Boolean(icon) ? (jsx(Tooltip, { title: item.label, arrow: true, placement: localdrawerOpen ? "bottom-start" : "right", children: jsx(ListItemText, { primary: item.label, className: classes.link, secondary: item.secondaryLabel ?? null }) })) : localdrawerOpen ? (jsx(ListItemText, { primary: item.label, className: classes.link, secondary: item.secondaryLabel ?? null })) : null] }));
2926
+ };
2927
+ const NestedListItem = ({ item, classes, level, handleDrawerOpen, drawerOpen, slimSize, rootUrl, dashboardUrl, }) => {
2928
+ const [open, setOpen] = useState(false);
2929
+ const handleClick = () => {
2930
+ setOpen(!open);
2931
+ };
2932
+ const childrens = item.children?.map((one) => {
2933
+ if (Array.isArray(one.children)) {
2934
+ return (jsx(NestedListItem, { item: one, classes: classes, level: level + 1, handleDrawerOpen: handleDrawerOpen, drawerOpen: drawerOpen, slimSize: slimSize, rootUrl: rootUrl }, one.label));
2935
+ }
2936
+ else {
2937
+ return (jsx(SingleListItem, { item: one, classes: classes, level: level + 1, slimSize: slimSize, rootUrl: rootUrl }, one.label));
2938
+ }
2939
+ });
2940
+ let labelStart = (item.label || "").toLowerCase().substring(0, 1) || "circle";
2941
+ const icon = item.icon === "Process.gif" ? (jsx(ListItemIcon, { className: classes.listIcon, children: jsx(FontAwesomeIcon, { icon: ["fas", labelStart] }) })) : (jsx(ListItemIcon, { className: classes.listIcon, children: jsx(FontAwesomeIcon, { icon: ["fas", item.icon] }) }));
2942
+ const levelClassName = level === 1
2943
+ ? classes.nestedMenuLevel1
2944
+ : level === 2
2945
+ ? classes.nestedMenuLevel2
2946
+ : "";
2947
+ return (jsxs(Fragment$1, { children: [jsxs(ListItem, { button: true, onClick: handleClick, disableGutters: true, className: open
2948
+ ? clsx({
2949
+ [classes.item]: true,
2950
+ [levelClassName]: Boolean(levelClassName),
2951
+ [classes.slimList]: Boolean(slimSize),
2952
+ [classes.openCurrent]: true,
2953
+ [classes.drawerIconSize]: !localdrawerOpen,
2954
+ })
2955
+ : clsx({
2956
+ [classes.item]: true,
2957
+ [levelClassName]: Boolean(levelClassName),
2958
+ [classes.slimList]: Boolean(slimSize),
2959
+ [classes.drawerIconSize]: !localdrawerOpen,
2960
+ }), children: [jsx(Tooltip, { title: item.label, arrow: true, placement: localdrawerOpen ? "bottom-start" : "right", children: jsx("span", { children: icon }) }), drawerOpen || !Boolean(icon) ? (jsxs(Fragment$1, { children: [jsx(ListItemText, { primary: item.label, secondary: item.secondaryLabel ?? null, color: "primary", className: classes.link }), open ? jsx(ExpandLess, {}) : jsx(ExpandMore, {})] })) : null] }), jsx(Collapse, { in: open, timeout: "auto", unmountOnExit: true, children: jsx(List, { component: "div", disablePadding: true, className: open ? classes.openList : "", children: childrens }) })] }));
2961
+ };
2962
+ const isActiveMenuFromhref = (location, menuhref, navigationProps, rootUrl, dashboardUrl) => {
2963
+ if ((location === `/${rootUrl}` || location === `/${rootUrl}/`) &&
2964
+ menuhref === dashboardUrl) {
2965
+ return true;
2966
+ }
2967
+ else if (menuhref === "report") {
2968
+ try {
2969
+ let urlParms = new URLSearchParams(navigationProps);
2970
+ if ("?" + urlParms.toString() === window.location.search) {
2971
+ return true;
2972
+ }
2973
+ }
2974
+ catch (error) {
2975
+ console.log(error);
2976
+ }
2977
+ return false;
2978
+ }
2979
+ else if (location !== `/${rootUrl}` &&
2980
+ location !== "/" &&
2981
+ Boolean(menuhref) &&
2982
+ location.includes(menuhref)) {
2983
+ return true;
2984
+ }
2985
+ return false;
2986
+ };
2987
+
2988
+ const matchByValue = (search, tags, navItem) => {
2989
+ if (!Array.isArray(tags)) {
2990
+ tags = [tags];
2991
+ }
2992
+ return tags.some((one) => navItem[one]
2993
+ ?.toLocaleLowerCase?.()
2994
+ ?.includes(search?.toLocaleLowerCase?.()));
2995
+ };
2996
+ const filterMetaDataByValue = (searchString, navItems, tagsToSearch) => {
2997
+ let newNavItems = [];
2998
+ for (let i = 0; i < navItems.length; i++) {
2999
+ if (matchByValue(searchString, tagsToSearch, navItems[i])) {
3000
+ let { children, ...newItem } = navItems[i];
3001
+ if (Array.isArray(children) && children.length > 0) {
3002
+ let newChildren = filterMetaDataByValue(searchString, children, tagsToSearch);
3003
+ if (newChildren.length > 0) {
3004
+ newNavItems.push({ ...newItem, children: newChildren });
3005
+ }
3006
+ }
3007
+ else {
3008
+ newNavItems.push({ ...newItem });
3009
+ }
3010
+ }
3011
+ }
3012
+ return newNavItems;
3013
+ };
3014
+
3015
+ const SearchViewNavigation = ({ metaData, handleDrawerOpen, drawerOpen, setView, label, icon, placeholder = "Search Reports...", rootUrl, dashboardUrl, }) => {
3016
+ const [search, setSearch] = useState("");
3017
+ const filteredMetaData = useMemo(() => {
3018
+ return filterMetaDataByValue(search, metaData.navItems, [
3019
+ "label",
3020
+ "secondaryLabel",
3021
+ ]);
3022
+ }, [search, metaData.navItems]);
3023
+ const classes = useStylesSideBar();
3024
+ const myIcon = icon ? (jsx(ListItemIcon, { className: classes.listIcon, children: jsx(ArrowBackIosNewIcon, {}) })) : null;
3025
+ const handleClick = () => {
3026
+ if (!drawerOpen) {
3027
+ handleDrawerOpen();
3028
+ }
3029
+ };
3030
+ return (jsxs("div", { style: { display: "flex", flexDirection: "column" }, children: [jsxs(ListItem, { button: true, className: clsx({
3031
+ [classes.item]: true,
3032
+ [classes.nestedMenuLevel1]: true,
3033
+ [classes.linktext]: true,
3034
+ }), onClick: () => setView("/"), children: [myIcon, jsx(ListItemText, { primary: label, className: classes.link })] }), jsx(SearchBar, { sx: { overflow: "hidden" }, value: search, onChange: (e) => setSearch(e.target.value), onClick: handleClick, placeholder: Boolean(placeholder) ? placeholder : "Search Reports...", autoFocus: drawerOpen }), jsx(SideBarNav, { handleDrawerOpen: handleDrawerOpen, drawerOpen: drawerOpen, setView: setView, metaData: {
3035
+ navItems: filteredMetaData,
3036
+ config: { rel: "", target: "_blank" },
3037
+ }, slimSize: true, isFromSeparetView: true, rootUrl: rootUrl, dashboardUrl: dashboardUrl })] }));
3038
+ };
3039
+
3040
+ library.add(faHandsHelping, faUsers, faBars, faBalanceScale, faHandHoldingHeart, faTasks, faCog, faHome, faTh, faUsersCog, faCircle, faUserCircle, faHashtag, faThumbtack, faSquare, faLink, faQuestion, faPlus, faTable, faLocationArrow, faHeadset, faGears, faArrowDown, faArrowUp, faSpinner, faCircleExclamation, faRotateRight, faUserLock, faUserClock, faGripHorizontal, faFileLines, faGear, faHeadphones, faUsersGear, faMessage, faUnlock, faUserPlus, faUserCheck, faKey, faIdCard, faIdBadge, faCheck, faCheckDouble, faCircleCheck, faCircleXmark, faUserTag, faAddressCard, faChartColumn, faUserPen, faHandHolding, faHandHoldingMedical, faObjectGroup, faTowerCell, faTowerObservation, faBuilding, faMailBulk, faLandmarkFlag, faCreditCard, faHospitalSymbol, faPlugCircleBolt, faCodeBranch, faPersonCircleCheck, faBank, faServer, faNotesMedical, faA, faB, faC, faD, faE, faF, faG, faH, faI, faJ, faK, faL, faM, faN, faO, faP, faQ, faR, faS, faT, faU, faV, faW, faX, faY, faZ);
3041
+
3042
+ const transformMetaDataAsPerRole = (metaData, role, branches, company, access, products) => {
3043
+ let navItems = filterMetaData(metaData.navItems, role, branches, company, access, products);
3044
+ //console.log(navItems);
3045
+ let newnavItem = navItems.map((item) => {
3046
+ let { children, ...newItem } = item;
3047
+ if (Array.isArray(children) && children.length > 5) {
3048
+ if (!Boolean(newItem.seperateView)) {
3049
+ newItem.seperateView = true;
3050
+ newItem.viewName = "newfilterview";
3051
+ //console.log(newItem);
3052
+ }
3053
+ }
3054
+ return { ...newItem, children: children };
3055
+ });
3056
+ return {
3057
+ config: metaData.config,
3058
+ navItems: newnavItem,
3059
+ };
3060
+ };
3061
+ const matchBranches = (userBranches, accessBranches) => {
3062
+ if (!Array.isArray(accessBranches) || !Array.isArray(userBranches)) {
3063
+ return true;
3064
+ }
3065
+ if (accessBranches.length <= 0 || userBranches.length <= 0) {
3066
+ return true;
3067
+ }
3068
+ for (const one of accessBranches) {
3069
+ if (userBranches.indexOf(one) >= 0) {
3070
+ return true;
3071
+ }
3072
+ }
3073
+ return false;
3074
+ };
3075
+ const matchComany = (userCompany, accessCompany) => {
3076
+ if (!Array.isArray(accessCompany) || !Boolean(userCompany)) {
3077
+ return true;
3078
+ }
3079
+ if (accessCompany.length <= 0) {
3080
+ return true;
3081
+ }
3082
+ if (accessCompany.indexOf(userCompany) >= 0) {
3083
+ return true;
3084
+ }
3085
+ return false;
3086
+ };
3087
+ const matchRoles = (userRole, accessRoles) => {
3088
+ if (!Array.isArray(accessRoles) || typeof userRole !== "number") {
3089
+ return true;
3090
+ }
3091
+ if (accessRoles.length <= 0) {
3092
+ return true;
3093
+ }
3094
+ if (accessRoles.indexOf(userRole) >= 0) {
3095
+ return true;
3096
+ }
3097
+ return false;
3098
+ };
3099
+ const matchInvisibleRoles = (userRole, accessRoles) => {
3100
+ if (!Array.isArray(accessRoles) || typeof userRole !== "number") {
3101
+ return true;
3102
+ }
3103
+ if (accessRoles.length <= 0) {
3104
+ return true;
3105
+ }
3106
+ if (accessRoles.indexOf(userRole) >= 0) {
3107
+ return false;
3108
+ }
3109
+ return true;
3110
+ };
3111
+ const matchProducts = (userProducts, accessProducts) => {
3112
+ if (!Array.isArray(accessProducts) || !Array.isArray(userProducts)) {
3113
+ return true;
3114
+ }
3115
+ if (accessProducts.length <= 0 || userProducts.length <= 0) {
3116
+ return true;
3117
+ }
3118
+ for (const one of accessProducts) {
3119
+ if (userProducts.indexOf(one) >= 0) {
3120
+ return true;
3121
+ }
3122
+ }
3123
+ return false;
3124
+ };
3125
+ const ishrefisNotNull = (item) => {
3126
+ if (!(Array.isArray(item.children) && item.children.length > 0) &&
3127
+ !Boolean(item.href)) {
3128
+ //console.log(item);
3129
+ return false;
3130
+ }
3131
+ return true;
3132
+ };
3133
+ const filterMetaData = (navItems, role, branches, company, access, products) => {
3134
+ let newNavItems = [];
3135
+ for (let i = 0; i < navItems.length; i++) {
3136
+ if (matchRoles(Number(role), navItems[i].visibleToRoles) &&
3137
+ matchComany(company, navItems[i].visibleToCompanies) &&
3138
+ matchBranches(branches, navItems[i].visibleToBranches) &&
3139
+ matchInvisibleRoles(Number(role), navItems[i].invisibleToRoles) &&
3140
+ matchProducts(products, navItems[i].visibleToProducts) &&
3141
+ ishrefisNotNull(navItems[i])) {
3142
+ let { children, ...newItem } = navItems[i];
3143
+ if (Array.isArray(children) && children.length > 0) {
3144
+ let newChildren = filterMetaData(children, role, branches, company, access, products);
3145
+ if (newChildren.length > 0) {
3146
+ newNavItems.push({ ...newItem, children: newChildren });
3147
+ }
3148
+ }
3149
+ else {
3150
+ newNavItems.push({ ...newItem, secondaryLabel: newItem.system_code });
3151
+ }
3152
+ }
3153
+ }
3154
+ return newNavItems;
3155
+ };
3156
+
3157
+ /* eslint-disable react-hooks/exhaustive-deps */
3158
+ const SideBar = ({ authState, handleDrawerOpen, open, rootUrl, dashboardUrl = "dashboard", }) => {
3159
+ const [view, setView] = useState("/");
3160
+ const [NewFilterView, setNewFilterView] = useState({});
3161
+ const [NewFilterData, setNewFilterData] = useState([]);
3162
+ const branches = useMemo(() => {
3163
+ let myBranches = authState?.access?.entities?.Branch ?? [];
3164
+ if (Array.isArray(myBranches) && myBranches.length >= 0) {
3165
+ return myBranches.map((one) => one.branchCode);
3166
+ }
3167
+ else {
3168
+ return [];
3169
+ }
3170
+ }, []);
3171
+ const products = useMemo(() => {
3172
+ let myProducts = authState?.access?.products ?? [];
3173
+ if (Array.isArray(myProducts) && myProducts.length >= 0) {
3174
+ return myProducts.map((one) => one.categoryCode);
3175
+ }
3176
+ else {
3177
+ return [];
3178
+ }
3179
+ }, []);
3180
+ let newMetaData = { navItems: authState.menulistdata };
3181
+ let filteredMetaDataSideBar = transformMetaDataAsPerRole(newMetaData, Number(authState.role), branches, authState.companyID, authState.access, products);
3182
+ let filteredReportsMetaData = transformMetaDataAsPerRole({
3183
+ config: { rel: "", target: "_blank" },
3184
+ navItems: reportMetaData,
3185
+ }, Number(authState.role), branches, authState.companyID, authState.access, products);
3186
+ return view === "report" ? (jsx(SearchViewNavigation, { metaData: filteredReportsMetaData, handleDrawerOpen: handleDrawerOpen, drawerOpen: open, setView: setView, label: "Reports", icon: "table", rootUrl: rootUrl, dashboardUrl: dashboardUrl })) : view === "newfilterview" ? (jsx(SearchViewNavigation, { metaData: {
3187
+ config: { rel: "", target: "_blank" },
3188
+ navItems: NewFilterData,
3189
+ }, handleDrawerOpen: handleDrawerOpen, drawerOpen: open, setView: setView, label: NewFilterView?.label ?? "Reports", icon: "table", placeholder: NewFilterView?.placeholder, rootUrl: rootUrl, dashboardUrl: dashboardUrl })) : (jsx(Fragment$1, { children: jsx(SideBarNav, { metaData: filteredMetaDataSideBar, handleDrawerOpen: handleDrawerOpen, drawerOpen: open, setView: setView, slimSize: true, setNewFilterData: setNewFilterData, setNewFilterView: setNewFilterView, rootUrl: rootUrl, dashboardUrl: dashboardUrl }) }));
3190
+ };
3191
+
3192
+ const SidebarWrapper = (props) => {
3193
+ const classes = useStyles();
3194
+ return (jsxs(Drawer, { variant: "permanent", classes: {
3195
+ paper: clsx(classes.drawerPaper, !open && classes.drawerPaperClose),
3196
+ }, open: props.open, children: [jsx("div", { className: classes.toolbarIcon }), jsx(SideBar, { ...props })] }));
3197
+ };
3198
+
3199
+ export { AppbarWrapper, AuthControllerWrapper, BranchSelectionGridWrapper, ForgotPasswordControllerWrapper, SidebarWrapper, ValidatePassword };
2545
3200
  //# sourceMappingURL=index.js.map