@acuteinfo/common-screens 1.0.25 → 1.0.27

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