@acuteinfo/common-screens 1.0.98 → 1.0.99
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.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/pages/auth/style.ts","../src/pages/auth/usernamePassword.tsx","../src/pages/auth/otpPopup.tsx","../src/pages/auth/verifyFinger.tsx","../src/pages/auth/biometric.ts","../src/pages/auth/utils.ts","../src/pages/auth/bankDetails.tsx","../src/pages/auth/passwordRotation.tsx","../src/pages/auth/authController.tsx","../src/pages/auth/api.ts","../src/pages/auth/forgotPasswordField.tsx","../src/pages/auth/forgotPassword.tsx","../src/pages/branchSelection/gridMetadata.ts","../src/pages/branchSelection/style.ts","../src/pages/branchSelection/branchSelectionGrid.tsx","../src/pages/appbar/style.ts","../src/pages/appbar/appBar.tsx","../src/pages/sidebar/style.ts","../src/pages/sidebar/reportMetaData.ts","../src/pages/sidebar/navigation/style.ts","../src/pages/sidebar/navigation/sideBarNavigation.tsx","../src/pages/sidebar/navigation/filterMetaData.ts","../src/pages/sidebar/navigation/searchViewNavigation.tsx","../src/pages/sidebar/icons.ts","../src/pages/sidebar/transformer.ts","../src/pages/sidebar/sideBar.tsx","../src/pages/sidebar/drawer.tsx"],"sourcesContent":["import { makeStyles } from \"@mui/styles\";\r\n\r\nexport const useStyles = makeStyles((theme: any) => ({\r\n wrapper: {\r\n minHeight: \"100vh\",\r\n boxShadow: \"0 3px 6px rgba(0,0,0,0.03)\",\r\n // background: \"#fff\",\r\n background: \"var(--white)\",\r\n },\r\n loginEmp: {\r\n background: \"#fff\",\r\n padding: theme.spacing(2, 4),\r\n display: \"flex\",\r\n maxWidth: \"400px\",\r\n margin: \"auto\",\r\n boxShadow: \"0 0 20px rgba(0,0,0,0.06)\",\r\n borderRadius: \"8px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n formWrap: {\r\n marginTop: theme.spacing(2),\r\n },\r\n loginBtn: {\r\n minWidth: \"100% !important\",\r\n margin: theme.spacing(2, 0),\r\n fontSize: \"1rem\",\r\n padding: \"10px .75rem\",\r\n background: \"rgb(128,0,0)\",\r\n border: 0,\r\n color: \"#fff !important\",\r\n fontWeight: 600,\r\n letterSpacing: \"0.02857em\",\r\n boxShadow: \"none\",\r\n textTransform: \"capitalize\",\r\n alignSelf: \"flex-end\",\r\n \"&:hover\": {\r\n background: \"#fedad8\",\r\n boxShadow: \"none\",\r\n },\r\n },\r\n OTPTimer: {\r\n marginTop: \"10px\",\r\n color: theme.palette.primary.main,\r\n fontWeight: 600,\r\n },\r\n resendLink: {\r\n marginTop: \"10px\",\r\n cursor: \"pointer\",\r\n color: theme.palette.secondary.main,\r\n fontWeight: 600,\r\n fontSize: \"0.875 rem\",\r\n },\r\n logo: {\r\n marginBottom: theme.spacing(1),\r\n },\r\n\r\n loginLeft: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n loginRight: {\r\n background: \"#fff\",\r\n padding: theme.spacing(2, 4),\r\n display: \"flex\",\r\n maxWidth: \"400px\",\r\n margin: \"auto\",\r\n boxShadow: \"0 0 20px rgba(0,0,0,0.06)\",\r\n borderRadius: \"8px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n \"& img\": {\r\n alignSelf: \"center\",\r\n },\r\n },\r\n\r\n loginImg: {},\r\n\r\n verifybutton: {\r\n alignSelf: \"center\",\r\n // marginBottom: \"10px\",\r\n // marginTop: \"10px\",\r\n padding: \"5px\",\r\n },\r\n otpButtons: {\r\n // padding: \"10px\",\r\n },\r\n\r\n divflex: {\r\n display: \"flex\",\r\n },\r\n otpinputpadding: {\r\n \"& input\": {\r\n marginRight: \"25px !important\",\r\n border: \"1.42444px solid var(--theme-color3)\",\r\n borderRadius: \"10px\",\r\n width: \"45px !important\",\r\n height: \"45px !important\",\r\n marginBottom: \"15px\",\r\n boxShadow: \"0px 5.69775px 11.3955px rgba(66, 99, 199, 0.16)\",\r\n },\r\n },\r\n ibtnvisible: {\r\n // padding: \"7px !important\",\r\n // alignItems: \"baseline\",\r\n marginBottom: \"15px\",\r\n },\r\n btnvisibleoff: {\r\n display: \"none\",\r\n },\r\n OTPalignName: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n marginBottom: \"12px\",\r\n color: \"#1C1C1C\",\r\n fonWeight: \"400\",\r\n fontSize: \"17px\",\r\n lineHeight: \"33px\",\r\n },\r\n resendOTPalign: {\r\n color: \"var(--theme-color3)\",\r\n fonWeight: \"400\",\r\n fontSize: \"17px\",\r\n lineHeight: \"33px\",\r\n // margin: \"0 auto\",\r\n // marginTop: \"15px\",\r\n // display: \"block !important\",\r\n },\r\n resendbtnLink: {\r\n textDecoration: \"underline\",\r\n color: \"var(--theme-color3)\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n color: \"var(--theme-color3)\",\r\n },\r\n },\r\n dialogTitleClass: {\r\n background: \"var(--primary-bg)\",\r\n padding: \"6px 15px !important\",\r\n margin: \"10px\",\r\n color: \"var(--white)\",\r\n borderRadius: \"4px\",\r\n \"& h2\": {\r\n fontWeight: \"500 !important\",\r\n },\r\n },\r\n lang_svg: {\r\n marginRight: \"10px\",\r\n width: \"22px\",\r\n height: \"22px\",\r\n },\r\n dialogContent: {\r\n padding: \"0px 15px\",\r\n \"& p\": {\r\n whiteSpace: \"pre-wrap\",\r\n color: \"black\",\r\n marginTop: \"8px\",\r\n marginBottom: \"6px\",\r\n },\r\n },\r\n button: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flexDirection: \"column\",\r\n margin: \"6px\",\r\n background: \"var(--theme-color1)\",\r\n \"&:hover\": {\r\n background: \"var(--theme-color1) !important\",\r\n },\r\n },\r\n}));\r\n","import { GradientButton, TextField } from \"@acuteinfo/common-base\";\r\nimport { Fragment, useState, useEffect, useRef } from \"react\";\r\nimport Visibility from \"@mui/icons-material/Visibility\";\r\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\r\nimport { CircularProgress, IconButton, InputAdornment } from \"@mui/material\";\r\nimport { Container } from \"@mui/material\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\nexport const UsernamePasswordField = ({\r\n classes,\r\n loginState,\r\n verifyUsernamePassword,\r\n forgotPasswordEndpoint,\r\n preventSpecialChars,\r\n}) => {\r\n const [input, setInput] = useState({ userName: \"\", password: \"\" });\r\n const [showPasswordTime, setShowPasswordTime] = useState(0);\r\n const [blurred, setBlurred] = useState(false);\r\n const showPassword = Date.now() < showPasswordTime;\r\n const [, forceUpdate] = useState<any | null>();\r\n const timerRef = useRef<any>(null);\r\n const { t } = useTranslation();\r\n useEffect(() => {\r\n return () => clearTimeout(timerRef.current);\r\n }, []);\r\n const handleChange = (event) => {\r\n const name = event.target.name;\r\n const value = event.target.value;\r\n if (\r\n name === \"userName\" &&\r\n preventSpecialChars &&\r\n value &&\r\n preventSpecialChars.split(\"\").some((char) => value.includes(char))\r\n ) {\r\n return;\r\n }\r\n if (name === \"userName\" && value) {\r\n loginState.isUsernameError = false;\r\n }\r\n if (name === \"password\" && value) {\r\n loginState.isPasswordError = false;\r\n }\r\n\r\n setInput((values) => ({ ...values, [name]: value }));\r\n };\r\n const inputRef = useRef<any>(null);\r\n const inputPassRef = useRef<any>(null);\r\n const inputButtonRef = useRef<any>(null);\r\n\r\n useEffect(() => {\r\n let timeoutCd;\r\n if (loginState.isUsernameError) {\r\n timeoutCd = setTimeout(() => {\r\n inputRef?.current?.focus?.();\r\n }, 100);\r\n } else if (loginState.isPasswordError) {\r\n setInput((old) => ({ ...old, password: \"\" }));\r\n timeoutCd = setTimeout(() => {\r\n inputPassRef?.current?.focus?.();\r\n }, 100);\r\n }\r\n return () => {\r\n if (timeoutCd) {\r\n clearTimeout(timeoutCd);\r\n }\r\n };\r\n }, [loginState.isUsernameError, loginState.isPasswordError]);\r\n useEffect(() => {\r\n let timeoutCd;\r\n if (loginState?.otpmodelClose ?? false) {\r\n setInput((values) => ({ ...values, password: \"\" }));\r\n timeoutCd = setTimeout(() => {\r\n inputPassRef?.current?.focus?.();\r\n }, 1500);\r\n }\r\n return () => {\r\n if (timeoutCd) {\r\n clearTimeout(timeoutCd);\r\n }\r\n };\r\n }, [loginState.otpmodelClose]);\r\n\r\n return (\r\n <Fragment>\r\n <Container maxWidth=\"xs\">\r\n <Grid alignItems=\"center\" style={{ paddingTop: \"20px\" }}>\r\n <div\r\n style={{\r\n color: \"#000000 !important\",\r\n fontSize: \"30px\",\r\n fontWeight: \"600\",\r\n // fontFamily: \"Poppins\",\r\n alignItems: \"center\",\r\n fontStyle: \"normal\",\r\n lineHeight: \"150%\",\r\n }}\r\n >\r\n <h3>{t(\"SignIn\")}</h3>\r\n </div>\r\n <div\r\n className=\"\"\r\n style={{\r\n color: \"#949597\",\r\n fontSize: \"16px\",\r\n fontWeight: \"400\",\r\n // fontFamily: \"Poppins\",\r\n alignItems: \"center\",\r\n fontStyle: \"normal\",\r\n\r\n width: \"360px\",\r\n }}\r\n >\r\n {t(\"SignInWithUserIDandPassword\")}\r\n </div>\r\n <div className={classes.formWrap}>\r\n <TextField\r\n // variant=\"filled\"\r\n // color=\"secondary\"\r\n autoFocus={true}\r\n label={t(\"UserID\")}\r\n // placeholder=\"User ID\"\r\n placeholder={String(t(\"UserID\"))}\r\n style={{\r\n marginTop: \"10px\",\r\n marginBottom: \"17px\",\r\n }}\r\n fullWidth\r\n type={\"text\"}\r\n name=\"userName\"\r\n value={input.userName.trimStart() || \"\"}\r\n onChange={handleChange}\r\n error={loginState.isUsernameError}\r\n helperText={\r\n loginState.isUsernameError\r\n ? t(loginState.userMessageforusername)\r\n : \"\"\r\n }\r\n InputLabelProps={{ shrink: true }}\r\n disabled={loginState.loading}\r\n autoComplete=\"off\"\r\n inputRef={inputRef}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\") {\r\n inputButtonRef?.current?.click?.();\r\n }\r\n }}\r\n inputProps={{\r\n maxLength: \"16\",\r\n }}\r\n />\r\n\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row-reverse\",\r\n marginTop: \"8px\",\r\n }}\r\n >\r\n <TextField\r\n key=\"employee\"\r\n label={t(\"Password\")}\r\n // variant=\"filled\"\r\n // color=\"secondary\"\r\n\r\n placeholder={String(t(\"EnterPassword\"))}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n fullWidth\r\n type={showPassword ? \"text\" : \"password\"}\r\n name=\"password\"\r\n value={\r\n blurred && !showPassword\r\n ? \"•\".repeat(16)\r\n : input.password.trimStart() || \"\"\r\n }\r\n onChange={(e) => {\r\n setBlurred(false); // reset blur effect on change\r\n handleChange(e);\r\n }}\r\n onBlur={() => {\r\n if (!showPassword && input.password.trimStart())\r\n setBlurred(true);\r\n }}\r\n onFocus={() => setBlurred(false)}\r\n error={loginState.isPasswordError}\r\n helperText={\r\n loginState.isPasswordError\r\n ? t(loginState.userMessageforpassword)\r\n : \"\"\r\n }\r\n disabled={loginState.loading}\r\n inputRef={inputPassRef}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\") {\r\n if (!showPassword && input.password.trimStart())\r\n setBlurred(true);\r\n inputButtonRef?.current?.click?.();\r\n }\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <IconButton\r\n aria-label=\"toggle password visibility\"\r\n onClick={() => {\r\n if (!showPassword) {\r\n setShowPasswordTime(Date.now() + 5000);\r\n timerRef.current = setTimeout(\r\n () => forceUpdate(Date.now()),\r\n 5000,\r\n );\r\n } else if (showPassword) setShowPasswordTime(0);\r\n }}\r\n onMouseDown={(e) => e.preventDefault()}\r\n disabled={loginState.loading}\r\n >\r\n {showPassword ? <Visibility /> : <VisibilityOff />}\r\n </IconButton>\r\n </InputAdornment>\r\n ),\r\n }}\r\n inputProps={{ maxLength: \"16\" }}\r\n />\r\n </div>\r\n <div style={{ marginTop: \"20px\", display: \"flex\" }}>\r\n <div style={{ flex: \"auto\", textAlign: \"end\" }}>\r\n <a\r\n href={forgotPasswordEndpoint ?? \"\"}\r\n style={{ color: \"var(--theme-color3)\" }}\r\n >\r\n {t(\"ForgotPassword\")}\r\n </a>\r\n </div>\r\n </div>\r\n <div style={{ marginTop: \"20px\", display: \"flex\" }}>\r\n <div\r\n style={{\r\n flex: \"auto\",\r\n textAlign: \"center\",\r\n marginTop: \"5px\",\r\n marginBottom: \"17px\",\r\n }}\r\n >\r\n <GradientButton\r\n style={{\r\n borderRadius: loginState.loading ? \"50%\" : \"10px\",\r\n height: loginState.loading ? \"40px\" : \"100%\",\r\n width: loginState.loading ? \"0px\" : \"100%\",\r\n minWidth: loginState.loading ? \"40px\" : \"80px\",\r\n }}\r\n fullWidth\r\n disabled={loginState.loading}\r\n onClick={() =>\r\n verifyUsernamePassword(\r\n (input.userName || \"\").toLowerCase(),\r\n input.password,\r\n )\r\n }\r\n ref={inputButtonRef}\r\n endicon={loginState.loading ? undefined : \"East\"}\r\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\r\n >\r\n {loginState.loading ? (\r\n <CircularProgress size={25} thickness={4.6} />\r\n ) : (\r\n t(\"Next\")\r\n )}\r\n </GradientButton>\r\n </div>\r\n </div>\r\n </div>\r\n </Grid>\r\n </Container>\r\n </Fragment>\r\n );\r\n};\r\n","import { FormHelperText } from \"@mui/material\";\nimport { GradientButton } from \"@acuteinfo/common-base\";\nimport { Fragment, useState, useRef, useEffect } from \"react\";\nimport OTPInput, { ResendOTP } from \"otp-input-react\";\nimport Visibility from \"@mui/icons-material/Visibility\";\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\nimport { CircularProgress } from \"@mui/material\";\nimport { Container } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { Grid } from \"@mui/material\";\nimport clsx from \"clsx\";\nimport { useSnackbar } from \"notistack\";\nimport { useTranslation } from \"react-i18next\";\nexport const OTPModel = ({\n classes,\n OTPResendRequest,\n open,\n handleClose,\n loginState,\n VerifyOTP,\n OTPError,\n setOTPError,\n previousStep,\n setNewRequestID = (id) => {},\n otpresendCount = 0,\n resendFlag,\n}) => {\n const [OTP, setOTP] = useState(\"\");\n const [showPasswordTime, setShowPasswordTime] = useState(0);\n const showPassword = Date.now() < showPasswordTime;\n const [, forceUpdate] = useState<any | null>();\n const timerRef = useRef<any>(null);\n useEffect(() => {\n return () => clearTimeout(timerRef.current);\n }, []);\n const [btnshow, setbtnshow] = useState(false);\n const inputButtonRef = useRef<any>(null);\n const [resendotpLoading, setResendotpLoading] = useState(false);\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation();\n // const renderButton = (buttonProps) => {\n // let { remainingTime, ...other } = buttonProps;\n // return resendotpLoading ? (\n // <a\n // remainingtime={remainingTime}\n // {...other}\n // className={clsx(\n // classes.resendbtnLink,\n // !btnshow && classes.btnvisibleoff\n // )}\n // >\n // {t(\"ResendOTP\")}\n // </a>\n // ) : null;\n // };\n const renderButton = (buttonProps) => {\n let { remainingTime, ...other } = buttonProps;\n return resendotpLoading ? (\n <a\n className={clsx(\n classes.resendbtnLink,\n !btnshow && classes.btnvisibleoff,\n )}\n style={{ cursor: \"wait\" }}\n >\n {/* {t(\"ResendOTP\")} {<CircularProgress size={20} color=\"secondary\" />} */}\n {t(\"GetNewOTP\")} {<CircularProgress size={20} color=\"secondary\" />}\n </a>\n ) : (\n <a\n remainingtime={remainingTime}\n {...other}\n className={clsx(\n classes.resendbtnLink,\n !btnshow && classes.btnvisibleoff,\n )}\n >\n {/* {t(\"ResendOTP\")} */}\n {t(\"GetNewOTP\")}\n </a>\n );\n };\n\n const ClickEventHandler = () => {\n if (!Boolean(OTP) || OTP.length < 6) {\n setOTPError(\"EnterOTPDigit\");\n } else {\n setOTPError(\"\");\n VerifyOTP(OTP);\n }\n };\n const handleResendClick = async () => {\n setResendotpLoading(true);\n setOTPError(\"\");\n const { status, data, message } = await OTPResendRequest(\n // resendFlag === \"FORGET_PW\" || resendFlag === \"FORGT_TOTP\"\n // ? loginState?.requestCd\n // : loginState?.transactionID,\n loginState?.comapanyCD,\n loginState?.branchCD,\n loginState?.contactUser,\n resendFlag,\n loginState?.otpValidFor,\n loginState?.username,\n // resendFlag,\n // loginState.auth_data?.[0]?.company_ID,\n // loginState.auth_data?.[0]?.branch_cd,\n );\n setResendotpLoading(false);\n if (status === \"0\") {\n setNewRequestID(data?.TRAN_CD);\n setbtnshow(false);\n enqueueSnackbar(message, { variant: \"success\" });\n } else {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n };\n const handleCloseEvent = () => {\n setOTPError(\"\");\n setOTP(\"\");\n handleClose(\"\");\n };\n const renderTime = (remainingtime) => {\n if (parseInt(remainingtime) === 0) {\n setTimeout(() => {\n setbtnshow(true);\n }, 700);\n }\n return (\n <span className={clsx(btnshow && classes.btnvisibleoff)}>\n {t(\"OtpExpired\")} {remainingtime} {t(\"second\")}\n {/* {t(\"ValidFor\")} {remainingtime} */}\n </span>\n );\n };\n\n useEffect(() => {\n if (loginState?.otpmodelClose ?? false) {\n handleCloseEvent();\n } else if (Boolean(OTPError)) {\n setOTP(\"\");\n }\n }, [loginState.otpmodelClose, OTPError]);\n return (\n <Fragment>\n <Container maxWidth=\"sm\">\n <Grid alignItems=\"center\" marginTop={\"4em\"}>\n <div\n // className={classes.formWrap}\n style={\n {\n // marginRight: \"25px\",\n // width: \"100%\",\n // position: \"relative\",\n // right: \"42px\",\n // bottom: \"13px\",\n }\n }\n >\n <div\n style={{\n color: \"#000000\",\n fontSize: \"30px\",\n fontWeight: \"600\",\n // fontFamily: \"Poppins\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"150%\",\n marginBottom: \"10px\",\n }}\n >\n {loginState?.authType === \"OTP\"\n ? t(\"OTPAuthentication\")\n : loginState?.authType === \"TOTP\"\n ? t(\"TOTPAuthentication\")\n : null}\n </div>\n <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"33px\",\n }}\n >\n {loginState?.authType === \"OTP\" || loginState?.authType === \"TOTP\"\n ? t(\"OTPSentMobileNo\", {\n defaultValue: loginState?.otpSentText ?? \"\",\n })\n : null}\n </div>\n {/* <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"33px\",\n }}\n >\n {t(\"GenerateNewOTP\")}\n </div> */}\n\n <div className={classes.OTPalignName}>\n {t(\"Hello\")}{\" \"}\n {loginState?.username\n ? loginState.username.charAt(0).toUpperCase() +\n loginState.username.slice(1)\n : null}\n {loginState?.description ? `(${loginState.description})` : null}\n {loginState?.authType === \"OTP\" && (\n <ResendOTP\n // onResendClick={() => setbtnshow(false)}\n onResendClick={handleResendClick}\n // onTimerComplete={() => setbtnshow(true)}\n renderButton={renderButton}\n renderTime={renderTime}\n maxTime={loginState?.otpValidFor ?? 60}\n className={classes.resendOTPalign}\n />\n )}\n </div>\n <div\n className={classes.divflex}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n >\n <OTPInput\n value={OTP}\n onChange={setOTP}\n autoFocus\n OTPLength={6}\n otpType=\"number\"\n disabled={loginState.otploading || loginState.loading}\n secure={!showPassword}\n className={classes.otpinputpadding}\n />\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => {\n if (!showPassword) {\n setShowPasswordTime(Date.now() + 5000);\n timerRef.current = setTimeout(\n () => forceUpdate(Date.now()),\n 5000,\n );\n } else if (showPassword) setShowPasswordTime(0);\n }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.otploading}\n className={classes.ibtnvisible}\n >\n {showPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </div>\n {Boolean(OTPError) ? (\n <FormHelperText style={{ color: \"red\" }}>\n {OTPError}\n </FormHelperText>\n ) : null}\n {loginState?.authType === \"TOTP\" ? (\n <div>\n <a href=\"forgot-totp\" style={{ color: \"var(--theme-color3)\" }}>\n {t(\"ResetTOTP\")}\n </a>\n </div>\n ) : (\n <></>\n )}\n <div\n style={{\n display: \"flex\",\n gap: \"10px\",\n margin: \"42px 0 0 42px\",\n width: \"60%\",\n }}\n >\n <GradientButton\n // fullWidth\n disabled={loginState.otploading || loginState.loading}\n onClick={() => {\n previousStep(false, \"\");\n }}\n className={classes.otpButtons}\n textColor={\"var(--theme-color3)\"}\n sx={{\n border: \"var(--theme-color3) 1px solid\",\n minWidth: \"50%\",\n background: \"var(--white)\",\n borderRadius: \"10px\",\n \"&:disabled\": {\n color: \"var(--theme-color3) !important\",\n opacity: 0.7,\n },\n \"&:hover\": {\n background: \"var(--white) !important\",\n \"& .MuiSvgIcon-root\": {\n transform: \"scale(1.4) rotateX(360deg)\",\n transition: \"transform 2s ease-in-out\",\n },\n },\n }}\n // customstyle = {{color : \"var(--theme-color3) !important\"}}\n starticon={\"West\"}\n >\n {t(\"Back\")}\n </GradientButton>\n <GradientButton\n style={{\n borderRadius: loginState.loading ? \"50%\" : \"10px\",\n height: loginState.loading ? \"40px\" : \"100%\",\n width: loginState.loading ? \"0px\" : \"100%\",\n minWidth: loginState.loading ? \"40px\" : \"80px\",\n }}\n fullWidth\n disabled={loginState.loading}\n onClick={ClickEventHandler}\n ref={inputButtonRef}\n className={classes.otpButtons}\n endicon={loginState.loading ? undefined : \"TaskAlt\"}\n rotateIcon=\"scale(1.4)\"\n >\n {loginState.loading ? (\n <CircularProgress size={25} thickness={4.6} />\n ) : (\n t(\"VerifyOTP\")\n )}\n </GradientButton>\n </div>\n </div>\n </Grid>\n </Container>\n </Fragment>\n );\n};\n\nexport const OTPModelForm = ({\n classes,\n OTPResendRequest,\n handleClose,\n loginState,\n VerifyOTP,\n OTPError,\n setOTPError,\n resendFlag,\n setNewRequestID = (id) => {},\n otpresendCount = 0,\n}) => {\n const [OTP, setOTP] = useState(\"\");\n const [showPasswordTime, setShowPasswordTime] = useState(0);\n const showPassword = Date.now() < showPasswordTime;\n const [, forceUpdate] = useState<any | null>();\n const timerRef = useRef<any>(null);\n useEffect(() => {\n return () => clearTimeout(timerRef.current);\n }, []);\n const [btnshow, setbtnshow] = useState(false);\n const [resendotpLoading, setResendotpLoading] = useState(false);\n const inputButtonRef = useRef<any>(null);\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation();\n const renderButton = (buttonProps) => {\n let { remainingTime, ...other } = buttonProps;\n return resendotpLoading ? (\n <a\n className={clsx(\n classes.resendbtnLink,\n !btnshow && classes.btnvisibleoff,\n )}\n style={{ cursor: \"wait\" }}\n >\n {/* {t(\"ResendOTP\")} {<CircularProgress size={20} color=\"secondary\" />} */}\n {t(\"GetNewOTP\")} {<CircularProgress size={20} color=\"secondary\" />}\n </a>\n ) : (\n <a\n remainingtime={remainingTime}\n {...other}\n className={clsx(\n classes.resendbtnLink,\n !btnshow && classes.btnvisibleoff,\n )}\n >\n {/* {t(\"ResendOTP\")} */}\n {t(\"GetNewOTP\")}\n </a>\n );\n };\n const ClickEventHandler = () => {\n if (!Boolean(OTP) || OTP.length < 6) {\n setOTPError(\"EnterOTPDigit\");\n } else {\n setOTPError(\"\");\n VerifyOTP(OTP);\n }\n };\n const handleResendClick = async () => {\n setResendotpLoading(true);\n setOTPError(\"\");\n const { status, data, message } = await OTPResendRequest(\n // resendFlag === \"FORGET_PW\"\n // ? loginState?.requestCd\n // : loginState?.transactionID,\n // resendFlag,\n loginState?.company_ID,\n loginState?.branch_cd,\n loginState?.contactUser,\n resendFlag,\n loginState?.otpValidFor,\n loginState?.username,\n );\n setResendotpLoading(false);\n if (status === \"0\") {\n setNewRequestID(data?.TRAN_CD);\n setbtnshow(false);\n enqueueSnackbar(message, { variant: \"success\" });\n } else {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n };\n const handleCloseEvent = () => {\n setOTPError(\"\");\n setOTP(\"\");\n handleClose();\n };\n const renderTime = (remainingtime) => {\n if (parseInt(remainingtime) === 0) {\n setTimeout(() => {\n setbtnshow(true);\n }, 700);\n }\n return (\n <span className={clsx(btnshow && classes.btnvisibleoff)}>\n {t(\"OtpExpired\")} {remainingtime}\n </span>\n );\n };\n useEffect(() => {\n if (loginState?.otpmodelClose ?? false) {\n handleCloseEvent();\n } else if (Boolean(OTPError)) {\n setOTP(\"\");\n }\n }, [loginState.otpmodelClose, OTPError]);\n\n return (\n <Fragment>\n <Grid alignItems=\"center\">\n <div>\n <div\n style={{\n color: \"#000000\",\n fontSize: \"30px\",\n fontWeight: \"600\",\n // fontFamily: \"Poppins\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"150%\",\n marginBottom: \"10px\",\n }}\n >\n {t(\"OTPAuthentication\")}\n </div>\n {/* <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n lineHeight: \"33px\",\n }}\n >\n {t(\"GenerateNewOTP\")}\n </div> */}\n <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"33px\",\n }}\n >\n {t(\"OTPSentMobileNo\", {\n defaultValue: loginState?.forgotOtpSentText ?? \"\",\n })}\n </div>\n <div className={classes.OTPalignName}>\n {t(\"Hello\")}{\" \"}\n {loginState?.username\n ? loginState.username.charAt(0).toUpperCase() +\n loginState.username.slice(1)\n : null}\n {loginState?.description ? `(${loginState.description})` : null}\n {loginState.otploading ||\n otpresendCount >= 3 ||\n loginState?.auth_type === \"TOTP\" ? null : (\n <ResendOTP\n onResendClick={handleResendClick}\n // onTimerComplete={() => setbtnshow(true)}\n renderButton={renderButton}\n renderTime={renderTime}\n maxTime={loginState?.otpValidFor ?? 60}\n className={classes.resendOTPalign}\n />\n )}\n </div>\n <div\n className={classes.divflex}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n >\n <OTPInput\n value={OTP}\n onChange={setOTP}\n autoFocus\n OTPLength={6}\n otpType=\"number\"\n disabled={loginState.otploading || loginState.loading}\n secure={!showPassword}\n className={classes.otpinputpadding}\n />\n\n {/* <IconButton\n aria-label=\"toggle password visibility\"\n // onClick={() => {\n // if (!showPassword) {\n // setShowPasswordTime(Date.now() + 5000);\n // timerRef.current = setTimeout(\n // () => forceUpdate(Date.now()),\n // 5000\n // );\n // } else if (showPassword) setShowPasswordTime(0);\n // }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.otploading}\n className={classes.ibtnvisible}\n >\n {showPassword ? <VisibilityOffIcon /> : <VisibilityIcon />}\n </IconButton> */}\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => {\n if (!showPassword) {\n setShowPasswordTime(Date.now() + 5000);\n timerRef.current = setTimeout(\n () => forceUpdate(Date.now()),\n 5000,\n );\n } else if (showPassword) setShowPasswordTime(0);\n }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.otploading}\n className={classes.ibtnvisible}\n >\n {showPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </div>\n {Boolean(OTPError) ? (\n <FormHelperText style={{ color: \"red\" }}>{OTPError}</FormHelperText>\n ) : null}\n\n <div\n style={{\n display: \"flex\",\n gap: \"10px\",\n margin: \"42px 0 0 42px\",\n width: \"60%\",\n }}\n >\n <GradientButton\n fullWidth\n disabled={loginState.otploading || loginState.loading}\n onClick={handleCloseEvent}\n className={classes.otpButtons}\n starticon={\"West\"}\n textColor={\"var(--white) !important\"}\n sx={{\n \"&:disabled\": {\n color: \"var(-theme-color3) !important\",\n },\n }}\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\n style={{\n // border: \"var(--theme-color3) 1px solid\",\n // color: \"var(--white)\",\n // background: \"var(--white)\",\n borderRadius: \"10px\",\n minWidth: \"48%\",\n }}\n >\n {t(\"Back\")}\n </GradientButton>\n <GradientButton\n style={{\n borderRadius: loginState.otploading ? \"50%\" : \"10px\",\n height: loginState.otploading ? \"40px\" : \"100%\",\n width: loginState.otploading ? \"0px\" : \"100%\",\n minWidth: loginState.otploading ? \"40px\" : \"80px\",\n }}\n // fullWidth\n disabled={loginState.loading}\n onClick={ClickEventHandler}\n ref={inputButtonRef}\n className={classes.otpButtons}\n >\n {loginState.otploading ? (\n <CircularProgress size={25} thickness={4.6} />\n ) : (\n t(\"VerifyOTP\")\n )}\n </GradientButton>\n </div>\n </div>\n </Grid>\n </Fragment>\n );\n};\n","import { Fragment } from \"react\";\nimport { GradientButton } from \"@acuteinfo/common-base\";\nimport FingerprintSharpIcon from \"@mui/icons-material/FingerprintSharp\";\nimport { CircularProgress, Container, Typography } from \"@mui/material\";\nimport { Grid } from \"@mui/material\";\nimport \"./verify.css\";\nimport { useTranslation } from \"react-i18next\";\nexport const VerifyFinger = ({\n classes,\n loginState,\n verifyFinger,\n previousStep,\n}) => {\n const { t } = useTranslation();\n return (\n <Fragment>\n <Container maxWidth=\"xs\">\n <Grid alignItems=\"center\">\n <div\n style={{\n marginRight: \"25px\",\n width: \"102%\",\n // marginBottom: \"55px\",\n }}\n >\n <br />\n <div\n style={{\n color: \"#000000\",\n fontSize: \"34px\",\n fontWeight: \"600\",\n // fontFamily: \"Poppins\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"150%\",\n marginBottom: \"10px\",\n }}\n >\n {t(\"BiometrixAuthentication\")}\n </div>\n <div\n style={{\n color: \"#949597\",\n fontSize: \"18px\",\n fontWeight: \"400\",\n // fontFamily: \"Poppins\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"33px\",\n // marginBottom: \"10px\",\n }}\n >\n {t(\"Kindlyplaceyoufinger\")}\n </div>\n <br />\n <Typography variant=\"h5\" style={{ color: \"#000000\" }}>\n {t(\"Hello\")} {\"\"}\n {` ${\n loginState?.username\n ? loginState.username.charAt(0).toUpperCase() +\n loginState.username.slice(1)\n : null\n }`}\n </Typography>\n <br />\n <div\n className={\n loginState?.isBiometricError\n ? classes.eFingerUi\n : classes.fingerUi\n }\n >\n <div className=\"spinner-wrap\">\n <FingerprintSharpIcon\n sx={{\n fontSize: \"80px\",\n opacity: \"0.4\",\n borderRadius: \"50%\",\n display: \"flex\",\n margin: \"0 auto\",\n \"&:after\": {\n borderBottom: \"2px solid #26A456\",\n },\n }}\n className={\n loginState?.isBiometricError ? classes.FingerIcon : null\n }\n color={loginState?.isBiometricError ? \"error\" : \"inherit\"}\n />\n {loginState?.isScanning ? (\n <>\n <div\n className=\"spinner-item\"\n style={{\n border: loginState?.isScanning\n ? \"1px solid #949597\"\n : \" 1px solid red\",\n }}\n ></div>\n <div\n className=\"spinner-item spinner-item--2\"\n style={{\n border: loginState?.isScanning\n ? \"1px solid #949597\"\n : \"1px solid red\",\n }}\n ></div>\n <div\n className=\"spinner-item spinner-item--3\"\n style={{\n border: loginState?.isScanning\n ? \"1px solid #949597\"\n : \"1px solid red\",\n }}\n ></div>\n </>\n ) : null}\n </div>\n </div>\n\n <div className={classes.biometric}>\n <div style={{ marginTop: \"50px\" }}>\n <div className={loginState.isScanning ? \"progress\" : \"hide\"}>\n <div\n className=\"bar\"\n style={{ width: loginState.isScanning ? \"30%\" : \"0%\" }}\n ></div>\n </div>\n <h3\n style={{\n display: \"flex\",\n marginTop: \"20px\",\n justifyContent: \"space-around\",\n color: loginState?.isBiometricError\n ? \"rgb(255 0 0 / 65%)\"\n : \"inherit\",\n }}\n >\n {loginState?.isBiometricError\n ? loginState?.userMessage\n : loginState?.loading\n ? t(\"Loading\")\n : loginState?.isScanning\n ? t(\"Scanning\")\n : null}\n </h3>\n </div>\n </div>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n margin: \"42px 0 0 42px\",\n // margin: \"38px 0 0 0\",\n gap: \"10px\",\n }}\n >\n <GradientButton\n fullWidth\n disabled={loginState.loading}\n onClick={() => {\n previousStep(false, \"\");\n }}\n className={classes.otpButtons}\n starticon={\"West\"}\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\n textColor={\"var(--theme-color3) !important\"}\n style={{\n border: \"var(--theme-color3)1px solid\",\n color: \"var(--theme-color3)\",\n background: \"var(--white)\",\n borderRadius: \"10px\",\n minWidth: \"48%\",\n }}\n >\n {t(\"Back\")}\n </GradientButton>\n <GradientButton\n style={{\n borderRadius: loginState.loading ? \"50%\" : \"10px\",\n height: loginState.loading ? \"40px\" : \"100%\",\n width: loginState.loading ? \"0px\" : \"100%\",\n minWidth: loginState.loading ? \"40px\" : \"80px\",\n // width: loginState.loading ? \"0px\" : \"90%\",\n // minWidth: loginState.loading ? \"40px\" : \"80px\",\n }}\n disabled={loginState.loading}\n onKeyDown={(e) => e.keyCode === 13 && verifyFinger}\n onClick={verifyFinger}\n className={classes.otpButtons}\n >\n {loginState.loading ? (\n <CircularProgress\n size={25}\n thickness={4.6}\n style={{ color: \"#fff\" }}\n />\n ) : (\n t(\"Verify\")\n )}\n </GradientButton>\n </div>\n </Grid>\n </Container>\n </Fragment>\n );\n};\n","import CryptoJS from \"crypto-js\";\r\n\r\nconst decryptString = (encryptString: string) => {\r\n var secretKey = \"SUPERACUTE@MKS\";\r\n var keyBytes = CryptoJS.PBKDF2(secretKey, \"Ivan Medvedev\", {\r\n keySize: 48 / 4,\r\n iterations: 1000,\r\n });\r\n console.log(keyBytes.toString());\r\n\r\n // take first 32 bytes as key (like in C# code)\r\n var key = new CryptoJS.lib.WordArray.init(keyBytes.words, 32);\r\n\r\n // // skip first 32 bytes and take next 16 bytes as IV\r\n var iv = new CryptoJS.lib.WordArray.init(keyBytes.words.splice(32 / 4), 16);\r\n\r\n // console.log(key.toString());\r\n //console.log(encryptString, CryptoJS.enc.Base64.parse(encryptString));\r\n\r\n var dec = CryptoJS.AES.decrypt(\r\n {\r\n ciphertext: CryptoJS.enc.Base64.parse(\r\n CryptoJS.enc.Base64.parse(encryptString).toString(CryptoJS.enc.Utf8),\r\n ),\r\n },\r\n key,\r\n {\r\n iv: iv,\r\n },\r\n );\r\n console.log(\"CryptoJS.AES.decrypt\", dec);\r\n return dec.toString(CryptoJS.enc.Utf8).split(String.fromCharCode(0)).join(\"\");\r\n return dec.toString();\r\n};\r\n\r\nexport const matchFinger = async (rows: any, captureFinger: string) => {\r\n var promise = new Promise((resolve, reject) => {\r\n //console.log(\"matchFinger\", rows, typeof rows);\r\n if (typeof rows === \"string\") {\r\n rows = JSON.parse(rows);\r\n }\r\n rows.forEach(async (element: any, i: number) => {\r\n try {\r\n var galleryTemplate = decryptString(element.IMG_DATA);\r\n var MFS100Request = {\r\n GalleryTemplate: galleryTemplate,\r\n ProbTemplate: captureFinger,\r\n BioType: \"Iso\",\r\n };\r\n var jsondata = JSON.stringify(MFS100Request);\r\n await fetch(\"http://localhost:8004/mfs100/verify\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: jsondata,\r\n })\r\n .then((response: any) => response.json())\r\n .then((response: any) => {\r\n if (response?.ErrorCode === \"0\" && response[\"Status\"]) {\r\n resolve({\r\n status: true,\r\n errorCode: \"0\",\r\n errorMessage: \"\",\r\n isError: false,\r\n sr_cd: element.SR_CD,\r\n });\r\n return;\r\n }\r\n\r\n if (rows.length === i + 1) {\r\n resolve({\r\n status: false,\r\n errorCode: response.ErrorCode,\r\n errorMessage: response.ErrorMessage,\r\n isError: false,\r\n });\r\n return;\r\n }\r\n })\r\n .catch((reason) => {\r\n resolve({\r\n status: false,\r\n errorCode: \"999\",\r\n errorMessage: reason,\r\n isError: true,\r\n });\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n resolve({\r\n status: false,\r\n errorCode: \"999\",\r\n errorMessage: \"Something went wrong!\",\r\n isError: true,\r\n });\r\n }\r\n });\r\n });\r\n return promise;\r\n};\r\n","export const isBase64 = (str = \"\"): boolean => {\r\n if (typeof str !== \"string\") {\r\n return false;\r\n }\r\n const base64Regex =\r\n /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\r\n\r\n return base64Regex.test(str);\r\n};\r\n","import { useEffect, useState, useRef, useMemo } from \"react\";\nimport { useStyles } from \"./style\";\nimport { Grid } from \"@mui/material\";\nimport { Container } from \"@mui/material\";\nimport { utilFunction } from \"@acuteinfo/common-base\";\nimport { isBase64 } from \"./utils\";\nimport { t } from \"i18next\";\n\nexport const BankDetails = ({ bannerDetails }: any) => {\n const [loginImageURL, setLoginImageURL] = useState<any | null>(null);\n const urlObj = useRef<any>(null);\n const classes = useStyles();\n\n const banner = useMemo(() => bannerDetails, []);\n\n useEffect(() => {\n if (Boolean(banner?.bannerImg)) {\n if (isBase64(banner?.bannerImg)) {\n let blob = utilFunction.base64toBlob(banner?.bannerImg);\n urlObj.current =\n typeof blob === \"object\" && Boolean(blob)\n ? URL.createObjectURL(blob)\n : \"\";\n setLoginImageURL(urlObj.current);\n } else {\n setLoginImageURL(banner?.bannerImg);\n }\n }\n }, [banner]);\n return (\n <>\n {/* <Grid container style={{ height: \"100vh\", overflow: \"hidden\" }}> */}\n <Grid item xs={6} md={6} lg={6} className={classes.loginLeft}>\n <Grid item xs={12} md={12} lg={12} style={{ height: \"70vh\" }}>\n <img\n alt=\"\"\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n objectPosition: \"center\",\n }}\n src={Boolean(loginImageURL) ? loginImageURL : \"\"}\n />\n </Grid>\n <Grid\n item\n xs={12}\n md={12}\n lg={12}\n style={{\n height: \"30vh\",\n background: \"var(--primary-bg)\",\n }}\n >\n <Container maxWidth=\"sm\">\n <div\n className=\"text\"\n style={{\n color: \"white\",\n fontStyle: \"normal\",\n fontSize: \"31px\",\n paddingTop: \"30px\",\n }}\n >\n {t(\"WelcometoEnfinityCore\", {\n defaultValue: banner?.bannerTitle ?? \"\",\n })}\n <span style={{ marginLeft: \"8px\", fontWeight: \"900\" }}>\n {/* EasyBank */}\n </span>\n </div>\n <div\n style={{\n lineHeight: \"27px\",\n fontSize: \"15px\",\n fontWeight: \"500px\",\n letterSpacing: \"0.02em\",\n color: \"#ebedee\",\n maxWidth: \"464px\",\n }}\n >\n {t(\"WelcomeNote\", { defaultValue: banner?.bannerNote ?? \"\" })}\n </div>\n </Container>\n </Grid>\n </Grid>\n {/* </Grid> */}\n </>\n );\n};\n","import {\n TextField,\n GradientButton,\n usePopupContext,\n} from \"@acuteinfo/common-base\";\n\nimport {\n CircularProgress,\n Container,\n FormHelperText,\n Grid,\n InputAdornment,\n} from \"@mui/material\";\nimport { Fragment, useRef, useState } from \"react\";\n// import { ResetPassword } from \"./api\";\nimport { useSnackbar } from \"notistack\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const PasswordRotation = ({\n classes,\n ResetPassword,\n open,\n username,\n accessToken,\n tokenType,\n handleClose,\n validatePasswordFn,\n}) => {\n const inputButtonRef = useRef<any>(null);\n const { MessageBox } = usePopupContext();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation();\n const [input, setInput] = useState({\n userName: username,\n oldpassword: \"\",\n password: \"\",\n confirmpassword: \"\",\n });\n const [pwdReset, setPasswordReset] = useState({\n isLoading: false,\n isNewpwdLoading: false,\n isoldPwdError: false,\n oldpassworderror: \"\",\n isnewpwdError: false,\n newpassworderror: \"\",\n isconfirmnewpwdError: false,\n confirmnewpassworderror: \"\",\n });\n\n const handleCloseEvent = () => {\n handleClose(\"\");\n };\n const ClickEventHandler = async () => {\n if (!Boolean(input.oldpassword)) {\n setPasswordReset((values) => ({\n ...values,\n isoldPwdError: true,\n oldpassworderror: \"CurrentPasswordisrequired\",\n }));\n } else if (!Boolean(input.confirmpassword)) {\n setPasswordReset((values) => ({\n ...values,\n isconfirmnewpwdError: true,\n confirmnewpassworderror: \"Confirmnewpasswordisrequired\",\n }));\n } else if (\n !pwdReset?.isoldPwdError &&\n !pwdReset?.isnewpwdError &&\n !pwdReset?.isconfirmnewpwdError &&\n input.oldpassword &&\n input.password &&\n input?.confirmpassword\n ) {\n setPasswordReset((values) => ({ ...values, isLoading: true }));\n let response = await ResetPassword(\n input.userName,\n input.oldpassword,\n input.password,\n accessToken,\n tokenType,\n );\n\n if (response.status === \"0\") {\n setPasswordReset((values) => ({ ...values, isLoading: false }));\n enqueueSnackbar(\"Passwordsuccessfullychanged\", {\n variant: \"success\",\n });\n handleClose(\"0\");\n } else {\n setPasswordReset((values) => ({ ...values, isLoading: false }));\n MessageBox({\n messageTitle: \"ValidationFailed\",\n message: response.message ?? \"ValidationFailed\",\n icon: \"ERROR\",\n });\n }\n }\n };\n\n const handleChange = (event) => {\n const name = event.target.name;\n let value = event.target.value;\n if (name === \"oldpassword\" && Boolean(value)) {\n setPasswordReset((values) => ({ ...values, isoldPwdError: false }));\n } else if (name === \"password\" && Boolean(value)) {\n setPasswordReset((values) => ({ ...values, isnewpwdError: false }));\n } else if (name === \"confirmpassword\" && Boolean(value)) {\n setPasswordReset((values) => ({\n ...values,\n isconfirmnewpwdError: false,\n }));\n }\n setInput((values) => ({ ...values, [name]: value }));\n };\n\n const handleBlur = async (event) => {\n const name = event.target.name;\n\n if (name === \"oldpassword\") {\n if (!Boolean(input.oldpassword)) {\n setPasswordReset((values) => ({\n ...values,\n isoldPwdError: true,\n oldpassworderror: \"CurrentPasswordisrequired\",\n }));\n } else if (\n Boolean(input.oldpassword) &&\n Boolean(input.password) &&\n input.oldpassword === input.password\n ) {\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: true,\n newpassworderror: \"newPasswordCantbeSameasOldPassword\",\n }));\n }\n } else if (name === \"password\") {\n if (!Boolean(input.password)) {\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: true,\n newpassworderror: \"Newpasswordisrequired\",\n }));\n } else if (\n Boolean(input.oldpassword) &&\n Boolean(input.password) &&\n input.oldpassword === input.password\n ) {\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: true,\n newpassworderror: \"newPasswordCantbeSameasOldPassword\",\n }));\n } else if (Boolean(input.password)) {\n setPasswordReset((values) => ({ ...values, isNewpwdLoading: true }));\n const { validateStatus, validateData } = await validatePasswordFn({\n USER_ID: input.userName,\n PASSWORD: input.password,\n SCREEN_REF: \"LOGIN\",\n });\n\n if (validateData?.O_STATUS !== \"0\") {\n setPasswordReset((values) => ({ ...values, isNewpwdLoading: false }));\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: true,\n newpassworderror: validateData?.O_MESSAGE,\n }));\n } else {\n setPasswordReset((values) => ({ ...values, isNewpwdLoading: false }));\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: false,\n newpassworderror: \"\",\n }));\n }\n }\n } else if (name === \"confirmpassword\") {\n if (!Boolean(input.confirmpassword)) {\n setPasswordReset((values) => ({\n ...values,\n isconfirmnewpwdError: true,\n confirmnewpassworderror: \"Confirmnewpasswordisrequired\",\n }));\n } else if (\n Boolean(input.password) &&\n input.password !== input.confirmpassword\n ) {\n setPasswordReset((values) => ({\n ...values,\n isconfirmnewpwdError: true,\n confirmnewpassworderror: \"NewPasswordandConfirmPassworddidnotmatched\",\n }));\n }\n }\n };\n\n return (\n <Fragment>\n <Container maxWidth=\"xs\">\n <Grid alignItems=\"center\">\n <div\n style={{\n color: \"#000000 !important\",\n fontSize: \"30px\",\n fontWeight: \"600\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n }}\n >\n <h3>{t(\"PasswordRotation\")}</h3>\n </div>\n <div\n className=\"\"\n style={{\n color: \"#949597\",\n fontSize: \"18px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n width: \"360px\",\n }}\n >\n {t(\"PleaseVerifyOTP\")}\n </div>\n <div className={classes.formWrap}>\n <TextField\n label={t(\"UserId\")}\n placeholder={t(\"EnterUserId\")}\n fullWidth\n type={\"text\"}\n name=\"userName\"\n value={input.userName || \"\"}\n onChange={handleChange}\n InputLabelProps={{ shrink: true }}\n disabled={true}\n autoComplete=\"off\"\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n <TextField\n autoFocus={true}\n label={t(\"CurrentPassword\")}\n placeholder={t(\"EnterCurrentPassword\")}\n fullWidth\n type={\"password\"}\n name=\"oldpassword\"\n value={input.oldpassword || \"\"}\n onChange={handleChange}\n onBlur={handleBlur}\n error={pwdReset.isoldPwdError}\n helperText={\n pwdReset.isoldPwdError ? t(pwdReset.oldpassworderror) : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={pwdReset.isLoading}\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n <TextField\n label={t(\"NewPassword\")}\n placeholder={t(\"EnterNewPassword\")}\n fullWidth\n type={\"password\"}\n name=\"password\"\n value={input.password || \"\"}\n onChange={handleChange}\n onBlur={handleBlur}\n error={pwdReset.isnewpwdError}\n helperText={\n pwdReset.isnewpwdError ? t(pwdReset.newpassworderror) : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={pwdReset.isLoading || pwdReset.isNewpwdLoading}\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n inputProps={{ maxLength: 16 }}\n InputProps={{\n endAdornment: pwdReset.isNewpwdLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress\n sx={{ color: \"var(--theme-color3)\" }}\n size={25}\n thickness={4.6}\n />\n </InputAdornment>\n ) : null,\n }}\n style={{ paddingBottom: \"8px\" }}\n />\n <TextField\n label={t(\"ConfirmNewPassword\")}\n placeholder={t(\"Enterconfirmnewpassword\")}\n fullWidth\n type={\"password\"}\n name=\"confirmpassword\"\n value={input.confirmpassword || \"\"}\n onChange={handleChange}\n onBlur={handleBlur}\n error={pwdReset.isconfirmnewpwdError}\n helperText={\n pwdReset.isconfirmnewpwdError\n ? t(pwdReset.confirmnewpassworderror)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={pwdReset.isLoading}\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n </div>\n <div\n style={{\n display: \"flex\",\n gap: \"10px\",\n margin: \"20px 0 0 10px\",\n width: \"94%\",\n }}\n >\n <GradientButton\n fullWidth\n disabled={pwdReset.isLoading}\n onClick={handleCloseEvent}\n className={classes.otpButtons}\n style={{\n border: \"var(--theme-color3)1px solid\",\n color: \"var(--theme-color3)\",\n // pebbackground: \"var(--white)\",\n borderRadius: \"10px\",\n }}\n >\n {t(\"Back\")}\n </GradientButton>\n <GradientButton\n style={{\n borderRadius: pwdReset.isLoading ? \"50%\" : \"10px\",\n height: pwdReset.isLoading ? \"40px\" : \"100%\",\n width: pwdReset.isLoading ? \"0px\" : \"100%\",\n minWidth: pwdReset.isLoading ? \"40px\" : \"80px\",\n }}\n fullWidth\n disabled={pwdReset.isLoading}\n onClick={ClickEventHandler}\n ref={inputButtonRef}\n className={classes.otpButtons}\n >\n {pwdReset.isLoading ? (\n <CircularProgress size={25} thickness={4.6} />\n ) : (\n t(\"Update\")\n )}\n </GradientButton>\n </div>\n </Grid>\n </Container>\n </Fragment>\n );\n};\n","import { usePopupContext, utilFunction } from \"@acuteinfo/common-base\";\n\nimport { useReducer, useEffect, useState, useRef } from \"react\";\nimport { useStyles } from \"./style\";\nimport { UsernamePasswordField } from \"./usernamePassword\";\nimport { OTPModel, OTPModelForm } from \"./otpPopup\";\nimport { VerifyFinger } from \"./verifyFinger\";\nimport * as API from \"./api\";\nimport { matchFinger } from \"./biometric\";\nimport { Grid, Tooltip } from \"@mui/material\";\nimport { BankDetails } from \"./bankDetails\";\nimport { useTranslation } from \"react-i18next\";\nimport { PasswordRotation } from \"./passwordRotation\";\nimport { isBase64 } from \"./utils\";\nimport {\n OTPResendRequestFnType,\n ResetPasswordFnType,\n ValidatePasswordFnType,\n VerifyOtpFnType,\n VerifyUsernamePassFnType,\n} from \"pages/types\";\n\nconst inititalState = {\n username: \"\",\n firstName: \"\",\n lastName: \"\",\n loading: false,\n otploading: false,\n isError: false,\n isUsernameError: false,\n isPasswordError: false,\n userMessage: \"\",\n OtpuserMessage: \"\",\n userMessageforpassword: \"\",\n userMessageforusername: \"\",\n currentFlow: \"username\",\n transactionID: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n contactUser: \"\",\n access_token: \"\",\n token_type: \"\",\n otpmodelClose: false,\n authType: \"\",\n isScanning: false,\n auth_type: \"O\",\n otpValidFor: 60,\n otpSentText: \"\",\n description: \"\",\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case \"inititateUserFingerVerification\":\n case \"inititateOTPVerification\": {\n return {\n ...state,\n loading: true,\n isError: false,\n isUsernameError: false,\n isPasswordError: false,\n isOTPError: false,\n isBiometricError: false,\n userMessage: \"\",\n };\n }\n case \"inititateUserFingerScanner\": {\n return { ...state, isScanning: true, isBiometricError: false };\n }\n case \"usernameandpasswordrequired\": {\n return {\n ...state,\n loading: false,\n isError: true,\n isUsernameError: true,\n isPasswordError: true,\n otploading: false,\n userMessage: action?.payload?.error,\n userMessageforpassword: action?.payload?.errorPassword,\n userMessageforusername: action?.payload?.errorUsername,\n username: \"\",\n description: \"\",\n transactionID: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n contactUser: \"\",\n };\n }\n case \"passwordVerificationFailure\":\n return {\n ...state,\n loading: false,\n isError: true,\n isUsernameError: false,\n isPasswordError: true,\n otploading: false,\n userMessage: action?.payload?.error,\n userMessageforpassword: action?.payload?.errorPassword,\n username: \"\",\n description: \"\",\n transactionID: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n };\n case \"usernameVerificationFailure\": {\n return {\n ...state,\n loading: false,\n isError: true,\n isUsernameError: true,\n isPasswordError: false,\n otploading: false,\n userMessage: action?.payload?.error,\n userMessageforusername: action?.payload?.errorUsername,\n username: \"\",\n description: \"\",\n transactionID: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n contactUser: \"\",\n };\n }\n case \"inititatePasswordVerification\": {\n return {\n ...state,\n loading: true,\n isError: false,\n isUsernameError: false,\n isPasswordError: false,\n otploading: false,\n userMessage: \"\",\n userMessageforusername: \"\",\n userMessageforpassword: \"\",\n username: \"\",\n description: \"\",\n transactionID: \"\",\n access_token: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n contactUser: \"\",\n };\n }\n case \"passwordRotation\": {\n return {\n ...state,\n loading: false,\n username: action?.payload?.username,\n description: action?.payload?.description ?? \"\",\n access_token: action?.payload?.access_token,\n token_type: action?.payload?.token_type,\n };\n }\n case \"passwordRotationsuccess\": {\n return {\n ...state,\n loading: false,\n otpmodelClose: Boolean(action?.payload?.otpmodelclose),\n };\n }\n case \"passwordVerificationSuccessful\": {\n return {\n ...state,\n loading: false,\n otploading: false,\n transactionID: action?.payload?.transactionID,\n comapanyCD: action?.payload?.comapanyCD,\n branchCD: action?.payload?.branchCD,\n contactUser: action?.payload?.contactUser,\n username: action?.payload?.username,\n description: action?.payload?.description,\n auth_type: action?.payload?.auth_type,\n OtpuserMessage: \"\",\n access_token: action?.payload?.access_token,\n token_type: action?.payload?.token_type,\n otpmodelClose: false,\n currentFlow: \"OTP\",\n authType: action?.payload?.authType,\n auth_data: action?.payload?.auth_data,\n otpValidFor: action?.payload?.otpValidFor,\n otpSentText: action?.payload?.otpSentText,\n totpReg: action?.payload?.totpReg,\n secretTocken: action?.payload?.secretTocken,\n secretTockenQR: action?.payload?.secretTockenQR,\n };\n }\n case \"inititatebiometricVerification\": {\n return {\n ...state,\n loading: true,\n otploading: true,\n OtpuserMessage: \"\",\n otpmodelClose: false,\n };\n }\n case \"biometricVerificationFailure\":\n return {\n ...state,\n loading: false,\n isError: true,\n isBiometricError: true,\n userMessage: action?.payload?.error,\n isScanning: false,\n };\n case \"biometricVerificationSuccessful\":\n return {\n ...state,\n loading: false,\n isError: false,\n isBiometricError: false,\n state: action.payload,\n isScanning: false,\n };\n case \"OTPVerificationComplate\": {\n return {\n ...state,\n loading: false,\n otploading: false,\n OtpuserMessage: \"\",\n };\n }\n case \"OTPVerificationFailed\": {\n return {\n ...state,\n loading: false,\n otploading: false,\n OtpuserMessage: action?.payload?.error,\n otpmodelClose: Boolean(action?.payload?.otpmodelclose),\n };\n }\n case \"OTPResendSuccess\": {\n return {\n ...state,\n transactionID: action?.payload?.transactionID,\n };\n }\n case \"backToUsernameVerification\": {\n return {\n ...inititalState,\n isPasswordError: action?.payload?.isError,\n userMessageforpassword: action?.payload?.errorMessage,\n };\n }\n\n default: {\n return state;\n }\n }\n};\n\ninterface AuthControllerProps {\n bannerDetails: {\n bannerImg: string;\n bannerTitle: string;\n bannerNote: string;\n };\n logoUrl?: string;\n logoTitle?: string;\n loginFn: Function;\n veirfyUsernameandPassword: VerifyUsernamePassFnType;\n validatePasswordFn: ValidatePasswordFnType;\n verifyOTP: VerifyOtpFnType;\n OTPResendRequest: OTPResendRequestFnType;\n ResetPassword: ResetPasswordFnType;\n LanguageComponent?: React.ComponentType<any>;\n forgotPasswordEndpoint: string;\n /**\n * Prevents characters input from specified string in username field\n *\n * e.g. \"!@#\". Characters `!`, `@`, `#` will be prevented in username field\n */\n preventSpecialChars?: string | null;\n /**\n * Callback to run on otp verify fail\n * @param e Error Object\n * @returns void\n */\n onOtpVerifyFailFn?: (e: any) => void;\n}\n\nexport const AuthControllerWrapper: React.FC<AuthControllerProps> = ({\n bannerDetails,\n logoUrl,\n logoTitle,\n loginFn,\n veirfyUsernameandPassword,\n validatePasswordFn,\n verifyOTP,\n OTPResendRequest,\n ResetPassword,\n LanguageComponent,\n forgotPasswordEndpoint,\n preventSpecialChars,\n onOtpVerifyFailFn,\n}) => {\n const classes = useStyles();\n const [loginState, dispath] = useReducer(reducer, inititalState);\n const [openpwdreset, setOpenPwdReset] = useState(false);\n const failureCount = useRef(0);\n const [dashboardLogoURL, setDashboardLogoURL] = useState<any | null>(null);\n const urlObj = useRef<any>(null);\n const { t } = useTranslation();\n const otpResendRef = useRef(1);\n const { MessageBox } = usePopupContext();\n\n useEffect(() => {\n if (Boolean(logoUrl)) {\n if (isBase64(logoUrl)) {\n let blob = utilFunction.base64toBlob(logoUrl);\n urlObj.current =\n typeof blob === \"object\" && Boolean(blob)\n ? URL.createObjectURL(blob)\n : \"\";\n setDashboardLogoURL(urlObj.current);\n } else {\n setDashboardLogoURL(logoUrl);\n }\n }\n }, [logoUrl]);\n\n const verifyUsernamePassword = async (username, password) => {\n if (Boolean(username) && Boolean(password)) {\n dispath({ type: \"inititatePasswordVerification\" });\n try {\n const {\n status = \"\",\n data = null,\n message = \"\",\n responseType = \"\",\n access_token = null,\n } = await veirfyUsernameandPassword(username, password);\n\n if (status === \"0\" && responseType === \"S\") {\n dispath({\n type: \"passwordRotation\",\n payload: {\n username: username,\n access_token: access_token?.access_token || \"\",\n token_type: access_token?.token_type || \"\",\n },\n });\n setOpenPwdReset(true);\n } else if (status === \"0\") {\n dispath({\n type: \"passwordVerificationSuccessful\",\n payload: {\n comapanyCD: data?.BASE_COMP_CD,\n branchCD: data?.BASE_BRANCH_CD,\n contactUser: data?.CONTACT2,\n transactionID: data?.REQUEST_CD,\n username: username,\n description: data?.DESCRIPTION,\n access_token: access_token?.access_token,\n token_type: access_token?.token_type,\n authType: data?.AUTH_TYPE,\n auth_data: data?.AUTH_DATA,\n otpValidFor: data?.OTP_VALID,\n otpSentText: data?.OTP_SENT_TEXT,\n totpReg: data?.TOTP_REG,\n secretTocken: data?.SECRET_TOCKEN,\n secretTockenQR: data?.SECRET_TOCKEN_QR,\n },\n });\n if (data?.STATUS === \"0\") {\n for (let i = 0; i < data?.ALERT_MSG_LIST.length; i++) {\n await MessageBox({\n messageTitle: \"Password Alert\",\n message: data?.ALERT_MSG_LIST[i],\n });\n }\n }\n } else {\n dispath({\n type: \"passwordVerificationFailure\",\n payload: {\n error: message,\n errorPassword: t(\"UserIDPasswordisincorrect\", {\n defaultValue: message,\n }),\n },\n });\n }\n } catch (err) {\n throw new Error(\n \"Error occurred while verifying username and password: \" + err,\n );\n }\n } else if (!Boolean(username) && !Boolean(password)) {\n dispath({\n type: \"usernameandpasswordrequired\",\n payload: {\n error: \"UsernamenandPasswordisRequired\",\n errorUsername: \"UsernameisRequired\",\n errorPassword: \"PasswordisRequired\",\n },\n });\n } else if (!Boolean(username)) {\n dispath({\n type: \"usernameVerificationFailure\",\n payload: {\n error: \"UsernameisRequired\",\n errorUsername: \"UsernameisRequired\",\n },\n });\n } else {\n dispath({\n type: \"passwordVerificationFailure\",\n payload: {\n error: \"PasswordisRequired\",\n errorPassword: \"PasswordisRequired\",\n },\n });\n }\n };\n\n const VerifyOTP = async (OTPNumber) => {\n try {\n if (Boolean(OTPNumber) && OTPNumber.toString().length === 6) {\n dispath({ type: \"inititateOTPVerification\" });\n const { status, data, message } = await verifyOTP(\n loginState.transactionID,\n // loginState.app_transactionId,\n loginState.username,\n OTPNumber,\n loginState.access_token,\n loginState.token_type,\n loginState.authType,\n );\n if (status === \"0\") {\n // try {\n // audio.play();\n // } catch (error) {\n // console.log(error);\n // }\n dispath({ type: \"OTPVerificationComplate\" });\n loginFn({\n ...data,\n totpReg: loginState?.totpReg,\n secretTocken: loginState?.secretTocken,\n secretTockenQR: loginState?.secretTockenQR,\n });\n } else if (status === \"999\") {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: message, otpmodelclose: true },\n });\n // enqueueSnackbar(message, { variant: \"error\" });\n } else {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: message, otpmodelclose: false },\n });\n }\n } else {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: \"Please enter a 6 digit OTP number\" },\n });\n }\n } catch (e: any) {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: e?.message ?? \"Otp verification Failed!\" },\n });\n if (typeof onOtpVerifyFailFn === \"function\") {\n onOtpVerifyFailFn(e);\n }\n }\n };\n\n const handlePasswordRotationClose = (flag) => {\n if (flag === \"0\") {\n dispath({\n type: \"passwordRotationsuccess\",\n payload: { otpmodelclose: true },\n });\n }\n setOpenPwdReset(false);\n };\n const changeUserName = (isError = false, errorMessage = \"\") => {\n dispath({\n type: \"backToUsernameVerification\",\n payload: {\n isError: isError,\n errorMessage: errorMessage,\n },\n });\n };\n const verifyFinger = async () => {\n try {\n dispath({ type: \"inititateUserFingerScanner\" });\n const fingerResponse = await API.capture();\n if (fingerResponse?.ErrorCode === \"0\") {\n dispath({ type: \"inititateUserFingerVerification\" });\n const promise: any = await matchFinger(\n loginState.auth_data,\n fingerResponse.IsoTemplate,\n );\n if (promise.isError) {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: promise?.errorMessage ?? \"Something went wrong.\",\n },\n });\n } else {\n const { status, data, message } = await verifyOTP(\n loginState.transactionID,\n loginState.username,\n String(promise?.sr_cd ?? \"0\"),\n loginState.access_token,\n loginState.token_type,\n loginState.authType,\n promise.status ? \"Y\" : \"N\",\n );\n if (status === \"0\" && promise.status) {\n dispath({ type: \"biometricVerificationSuccessful\" });\n loginFn(data);\n } else if (status === \"0\" && !promise.status) {\n failureCount.current = failureCount.current + 1;\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: \"Finger Not Match.Please Try Again\",\n },\n });\n if (failureCount.current >= 3)\n changeUserName(true, \"Finger Not Match.Please Try Again\");\n } else if (status === \"99\") {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: message ?? \"Finger Not Match.Please Try Again\",\n },\n });\n } else if (status === \"999\") {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: message ?? \"Finger Not Match.Please Try Again\",\n },\n });\n changeUserName(\n true,\n message ?? \"Finger Not Match.Please Try Again\",\n );\n } else {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: message ?? \"Finger Not Match.Please Try Again\",\n },\n });\n }\n }\n } else {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: fingerResponse?.ErrorMessage ?? t(\"MFS100NotFound\"),\n },\n });\n }\n } catch (e: any) {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: e?.message ?? t(\"Unknownerroroccured\"),\n },\n });\n }\n };\n return (\n <>\n <Grid container style={{ height: \"100vh\", overflow: \"hidden\" }}>\n <BankDetails bannerDetails={bannerDetails} />\n <Grid item xs={11} md={6} lg={6} sm={6}>\n {logoUrl ? (\n <Grid\n container\n direction=\"row\"\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n padding={\"25px\"}\n maxWidth={\"210px\"}\n ml={\"auto\"}\n >\n <Tooltip describeChild title={logoTitle ?? \"\"}>\n <img\n src={Boolean(dashboardLogoURL) ? dashboardLogoURL : \"\"}\n alt=\"Logo\"\n width={\"100%\"}\n />\n </Tooltip>\n </Grid>\n ) : null}\n\n {LanguageComponent ? (\n <Grid\n container\n direction=\"row\"\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n padding={\"0 35px 0 0\"}\n maxWidth={\"180px\"}\n ml={\"auto\"}\n >\n <LanguageComponent />\n </Grid>\n ) : null}\n\n {openpwdreset ? (\n <PasswordRotation\n classes={classes}\n ResetPassword={ResetPassword}\n open={openpwdreset}\n username={loginState.username}\n accessToken={loginState.access_token}\n tokenType={loginState.token_type}\n handleClose={handlePasswordRotationClose}\n validatePasswordFn={validatePasswordFn}\n />\n ) : (\n <>\n {loginState.currentFlow === \"username\" ? (\n <UsernamePasswordField\n key=\"username\"\n classes={classes}\n loginState={loginState}\n verifyUsernamePassword={verifyUsernamePassword}\n forgotPasswordEndpoint={forgotPasswordEndpoint}\n preventSpecialChars={preventSpecialChars}\n />\n ) : (\n <>\n {loginState.authType === \"OTP\" ||\n loginState.authType === \"TOTP\" ? (\n <OTPModel\n key=\"otp\"\n OTPResendRequest={OTPResendRequest}\n classes={classes}\n loginState={loginState}\n VerifyOTP={VerifyOTP}\n previousStep={changeUserName}\n OTPError={t(loginState?.OtpuserMessage ?? \"\")}\n setOTPError={(error) => {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: error },\n });\n }}\n open={true}\n handleClose={changeUserName}\n resendFlag={\"LOGIN\"}\n setNewRequestID={(newRequestID) => {\n dispath({\n type: \"OTPResendSuccess\",\n payload: { transactionID: newRequestID },\n });\n otpResendRef.current = otpResendRef.current + 1;\n }}\n otpresendCount={otpResendRef.current}\n />\n ) : (\n <VerifyFinger\n key=\"biometric\"\n classes={classes}\n loginState={loginState}\n verifyFinger={verifyFinger}\n previousStep={changeUserName}\n />\n )}\n </>\n )}\n </>\n )}\n </Grid>\n </Grid>\n </>\n );\n};\n","export const capture = async () => {\r\n var MFS100Request = {\r\n Quality: 60,\r\n TimeOut: 10,\r\n };\r\n var jsondata = JSON.stringify(MFS100Request);\r\n const rawResponse = await fetch(\"http://localhost:8004/mfs100/capture\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: jsondata,\r\n });\r\n const content = await rawResponse.json();\r\n return content;\r\n};\r\n","import { TextField, GradientButton } from \"@acuteinfo/common-base\";\n\nimport { Fragment, useState, useEffect, useRef } from \"react\";\nimport {\n CircularProgress,\n FormHelperText,\n IconButton,\n InputAdornment,\n} from \"@mui/material\";\nimport Visibility from \"@mui/icons-material/Visibility\";\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const ForgotPasswordFields = ({\n classes,\n loginState,\n onSubmit,\n navigate,\n loginPageEndpoint,\n preventSpecialChars,\n validatePassword,\n}) => {\n const [input, setInput] = useState({\n userName: loginState.workingState === 1 ? loginState?.username : \"\",\n mobileno: \"\",\n password: \"\",\n confirmpassword: \"\",\n });\n const inputRef = useRef<any>(null);\n const inputPassRef = useRef<any>(null);\n const inputButtonRef = useRef<any>(null);\n const [showPasswordTime, setShowPasswordTime] = useState(0);\n const [showConfirmPasswordTime, setShowConfirmPasswordTime] = useState(0);\n const showPassword = Date.now() < showPasswordTime;\n const showConfirmPassword = Date.now() < showConfirmPasswordTime;\n const [, forceUpdate] = useState<any | null>();\n const timerRef = useRef<any>(null);\n\n useEffect(() => {\n return () => clearTimeout(timerRef.current);\n }, []);\n // const navigate = useNavigate();\n const { t } = useTranslation();\n const handleChange = (event) => {\n const name = event.target.name;\n let value = event.target.value;\n if (\n name === \"userName\" &&\n preventSpecialChars &&\n value &&\n preventSpecialChars.split(\"\").some((char) => value.includes(char))\n ) {\n return;\n }\n if (name === \"userName\" && value) {\n loginState.isUsernameError = false;\n }\n if (name === \"mobileno\" && value) {\n value = value.replace(/\\D/g, \"\");\n if (Boolean(value)) {\n loginState.isMobileError = false;\n }\n }\n setInput((values) => ({ ...values, [name]: value }));\n };\n useEffect(() => {\n if (loginState.workingState === 1) {\n setTimeout(() => {\n inputPassRef?.current?.focus?.();\n }, 2000);\n }\n }, [loginState.workingState]);\n return (\n <Fragment>\n <div className={classes.formWrap}>\n <TextField\n autoFocus={true}\n label={t(\"UserID\")}\n placeholder={String(t(\"UserID\"))}\n fullWidth\n type={\"text\"}\n name=\"userName\"\n value={input.userName.trimStart() || \"\"}\n onChange={handleChange}\n error={loginState.isUsernameError}\n helperText={\n loginState.isUsernameError\n ? t(loginState.userMessageforusername)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={\n loginState.loading\n ? true\n : loginState.workingState === 0\n ? false\n : true\n }\n autoComplete=\"off\"\n ref={inputRef}\n inputProps={{ maxLength: 16 }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n style={{ paddingBottom: \"8px\" }}\n />\n {loginState.workingState === 0 ? (\n <TextField\n label={t(\"MobileNo\")}\n placeholder={t(\"EnterMobileNo\")}\n // placeholder={String(t(\"EnterMobileNo\"))}\n fullWidth\n type={\"text\"}\n name=\"mobileno\"\n value={input.mobileno.trimStart() || \"\"}\n onChange={handleChange}\n error={loginState.isMobileError}\n helperText={\n loginState.isMobileError\n ? t(loginState.userMessageforMobileno)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={\n loginState.loading\n ? true\n : loginState.workingState === 0\n ? false\n : true\n }\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n inputProps={{ maxLength: 13 }}\n style={{ paddingBottom: \"8px\" }}\n />\n ) : null}\n {loginState.workingState === 1 ? (\n <>\n <TextField\n autoFocus={true}\n label={t(\"Password\")}\n placeholder={t(\"EnterPassword\")}\n fullWidth\n type={showPassword ? \"text\" : \"password\"}\n name=\"password\"\n value={input.password.trimStart() || \"\"}\n onChange={handleChange}\n onBlur={async () => await validatePassword(input, \"P\")}\n error={loginState.isPasswordError}\n helperText={\n loginState.isPasswordError\n ? t(loginState.userMessageforPassword)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={loginState.loading}\n autoComplete=\"off\"\n ref={inputPassRef}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n {loginState.passwordValidateloading ? (\n <CircularProgress\n color=\"secondary\"\n variant=\"indeterminate\"\n size={24}\n thickness={4.6}\n />\n ) : null}\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => {\n if (!showPassword) {\n setShowPasswordTime(Date.now() + 5000);\n timerRef.current = setTimeout(\n () => forceUpdate(Date.now()),\n 5000,\n );\n } else if (showPassword) setShowPasswordTime(0);\n }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.loading}\n >\n {showPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n ),\n }}\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n <TextField\n label={t(\"ConfirmPassword\")}\n placeholder={String(t(\"EnterConfirmPassword\"))}\n fullWidth\n type={showConfirmPassword ? \"text\" : \"password\"}\n name=\"confirmpassword\"\n value={input.confirmpassword.trimStart() || \"\"}\n onChange={handleChange}\n onBlur={async () => await validatePassword(input, \"C\")}\n error={loginState.isConfirmPasswordError}\n helperText={\n loginState.isConfirmPasswordError\n ? t(loginState.userMessageforconfirmPassword)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={loginState.loading}\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => {\n if (!showConfirmPassword) {\n setShowConfirmPasswordTime(Date.now() + 5000);\n timerRef.current = setTimeout(\n () => forceUpdate(Date.now()),\n 5000,\n );\n } else if (showConfirmPassword)\n setShowConfirmPasswordTime(0);\n }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.loading}\n >\n {showConfirmPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n ),\n }}\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n </>\n ) : null}\n {loginState.isApiError ? (\n <FormHelperText style={{ color: \"red\" }}>\n {loginState.apierrorMessage}\n </FormHelperText>\n ) : null}\n <div\n style={{\n marginTop: \"20px\",\n display: \"flex\",\n flexDirection: \"row-reverse\",\n }}\n >\n <div\n style={{\n flex: \"auto\",\n textAlign: \"center\",\n marginTop: \"5px\",\n marginBottom: \"17px\",\n }}\n >\n <div>\n <GradientButton\n style={{ borderRadius: \"10px\", marginRight: \"5px\" }}\n // fullWidth\n\n disabled={loginState.loading}\n onClick={() => {\n navigate(loginPageEndpoint);\n }}\n starticon={\"West\"}\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\n >\n {t(\"backtologin\")}\n </GradientButton>\n\n <GradientButton\n style={{ borderRadius: \"10px\" }}\n disabled={loginState.loading}\n onClick={() => {\n onSubmit(input, loginState.workingState);\n }}\n ref={inputButtonRef}\n endicon={loginState.loading ? undefined : \"East\"}\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\n >\n {loginState.loading ? (\n <CircularProgress size={25} thickness={4.6} />\n ) : (\n t(\"Next\")\n )}\n </GradientButton>\n </div>\n </div>\n </div>\n </div>\n </Fragment>\n );\n};\n","import { useReducer, useState, useRef, useEffect } from \"react\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport { useStyles } from \"./style\";\nimport { ForgotPasswordFields } from \"./forgotPasswordField\";\nimport { OTPModelForm } from \"./otpPopup\";\nimport { utilFunction } from \"@acuteinfo/common-base\";\nimport { useSnackbar } from \"notistack\";\nimport { Container, Grid, Tooltip } from \"@mui/material\";\nimport { BankDetails } from \"./bankDetails\";\nimport { useTranslation } from \"react-i18next\";\nimport { isBase64 } from \"./utils\";\nimport {\n OTPResendRequestFnType,\n UpdateNewPasswordFnType,\n ValidatePasswordFnType,\n VerifyOtpForPWDResetFnType,\n VerifyUsernameMobileFnType,\n} from \"pages/types\";\n\nconst inititalState = {\n isUsernameError: false,\n userMessageforusername: \"\",\n loading: false,\n isMobileError: false,\n userMessageforMobileno: \"\",\n isPasswordError: false,\n userMessageforPassword: \"\",\n isConfirmPasswordError: false,\n userMessageforconfirmPassword: \"\",\n workingState: 0,\n isApiError: false,\n apierrorMessage: \"\",\n otploading: false,\n OtpuserMessage: \"\",\n otpmodelClose: false,\n requestCd: \"\",\n username: \"\",\n description: \"\",\n auth_type: \"O\",\n transactionID: \"\",\n contactUser: \"\",\n forgotOtpSentText: \"\",\n newPasswordMessage: \"\",\n passwordValidateloading: false,\n confirmPasswordValidateloading: false,\n};\nconst reducer = (state, action) => {\n switch (action.type) {\n case \"verifyUserNameandMobileNoFailed\": {\n return {\n ...state,\n loading: false,\n isUsernameError: action?.payload?.isUsernameError ?? false,\n isMobileError: action?.payload?.isMobileError ?? false,\n userMessageforusername: action?.payload?.userMessageforusername ?? \"\",\n userMessageforMobileno: action?.payload?.userMessageforMobileno ?? \"\",\n isApiError: action?.payload?.isApiError ?? false,\n apierrorMessage: action?.payload?.apierrorMessage ?? \"\",\n requestCd: \"\",\n username: \"\",\n description: \"\",\n contactUser: \"\",\n };\n }\n case \"initverifyUserNameandMobileNo\": {\n return {\n ...state,\n loading: true,\n isUsernameError: false,\n isMobileError: false,\n requestCd: \"\",\n username: \"\",\n description: \"\",\n };\n }\n case \"verifyUserNameandMobileNoSuccess\": {\n return {\n ...state,\n loading: false,\n isUsernameError: false,\n isMobileError: false,\n workingState: 0,\n isApiError: false,\n apierrorMessage: \"\",\n requestCd: action?.payload?.requestCd ?? \"\",\n username: action?.payload?.username ?? \"\",\n description: action?.payload?.description ?? \"\",\n auth_type: action?.payload?.auth_type,\n company_ID: action?.payload?.company_ID,\n branch_cd: action?.payload?.branch_cd,\n otpValidFor: action?.payload?.otpValidFor,\n contactUser: action?.payload?.contactUser,\n forgotOtpSentText: action?.payload?.forgotOtpSentText,\n };\n }\n case \"inititateOTPVerification\": {\n return {\n ...state,\n loading: false,\n otploading: true,\n OtpuserMessage: \"\",\n otpmodelClose: false,\n };\n }\n case \"OTPVerificationComplate\": {\n return {\n ...state,\n loading: false,\n otploading: false,\n OtpuserMessage: \"\",\n workingState: 1,\n otpmodelClose: Boolean(action?.payload?.otpmodelclose),\n newPasswordMessage: action?.payload?.newPasswordMessage,\n };\n }\n case \"OTPVerificationFailed\": {\n return {\n ...state,\n otploading: false,\n OtpuserMessage: action?.payload?.error,\n otpmodelClose: Boolean(action?.payload?.otpmodelclose),\n };\n }\n case \"verifyPasswordFailed\": {\n return {\n ...state,\n loading: false,\n isPasswordError: action?.payload?.isPasswordError ?? false,\n isConfirmPasswordError:\n action?.payload?.isConfirmPasswordError ?? false,\n userMessageforPassword: action?.payload?.userMessageforPassword ?? \"\",\n userMessageforconfirmPassword:\n action?.payload?.userMessageforconfirmPassword ?? \"\",\n isApiError: false,\n apierrorMessage: \"\",\n passwordValidateloading: false,\n confirmPasswordValidateloading: false,\n };\n }\n case \"initverifyPasswordSetReq\": {\n return {\n ...state,\n loading: true,\n isPasswordError: false,\n isConfirmPasswordError: false,\n };\n }\n case \"passwordRegistaredSuccess\": {\n return {\n ...state,\n loading: false,\n isPasswordError: false,\n isConfirmPasswordError: false,\n };\n }\n case \"OTPResendSuccess\": {\n return {\n ...state,\n requestCd: action?.payload?.requestCd,\n };\n }\n case \"initPasswordValidate\": {\n return {\n ...state,\n passwordValidateloading: action?.payload?.passwordValidateloading,\n confirmPasswordValidateloading:\n action?.payload?.confirmPasswordValidateloading,\n isPasswordError: false,\n isConfirmPasswordError: false,\n };\n }\n case \"passwordValidateSuccess\": {\n return {\n ...state,\n passwordValidateloading: false,\n confirmPasswordValidateloading: false,\n isPasswordError: false,\n isConfirmPasswordError: false,\n };\n }\n default: {\n return state;\n }\n }\n};\n\ninterface ForgotPasswordControllerProps {\n bannerDetails: {\n bannerImg: string;\n bannerTitle: string;\n bannerNote: string;\n };\n logoUrl?: string;\n logoTitle?: string;\n updatenewPassword: UpdateNewPasswordFnType;\n OTPResendRequest: OTPResendRequestFnType;\n veirfyUsernameandMobileNo: VerifyUsernameMobileFnType;\n validatePasswordFn: ValidatePasswordFnType;\n verifyOTPForPWDReset: VerifyOtpForPWDResetFnType;\n LanguageComponent?: React.ComponentType<any>;\n screenFlag: \"password\" | \"totp\";\n navigate: NavigateFunction;\n loginPageEndpoint: string;\n TotpEnbaledDisabled?: React.ComponentType<any>;\n /**\n * Prevents characters input from specified string in username field\n *\n * e.g. \"!@#\". Characters `!`, `@`, `#` will be prevented in username field\n */\n preventSpecialChars?: string | null;\n}\n\nexport const ForgotPasswordControllerWrapper: React.FC<\n ForgotPasswordControllerProps\n> = ({\n screenFlag,\n updatenewPassword,\n validatePasswordFn,\n veirfyUsernameandMobileNo,\n verifyOTPForPWDReset,\n OTPResendRequest,\n logoUrl,\n logoTitle,\n LanguageComponent,\n bannerDetails,\n navigate,\n loginPageEndpoint,\n preventSpecialChars,\n TotpEnbaledDisabled,\n}) => {\n const classes = useStyles();\n const [loginState, dispath] = useReducer(reducer, inititalState);\n const [open, setOpen] = useState(false);\n const [totp, setTotp] = useState<any>({\n Enable: false,\n totpdata: \"\",\n });\n const { enqueueSnackbar } = useSnackbar();\n const otpResendRef = useRef(1);\n const { t } = useTranslation();\n const [dashboardLogoURL, setDashboardLogoURL] = useState<any | null>(null);\n const urlObj = useRef<any>(null);\n useEffect(() => {\n if (Boolean(logoUrl)) {\n if (isBase64(logoUrl)) {\n let blob = utilFunction.base64toBlob(logoUrl);\n urlObj.current =\n typeof blob === \"object\" && Boolean(blob)\n ? URL.createObjectURL(blob)\n : \"\";\n setDashboardLogoURL(urlObj.current);\n } else {\n setDashboardLogoURL(logoUrl);\n }\n }\n }, [logoUrl]);\n\n const validatePassword = async (data, flag) => {\n if (flag === \"P\" && data?.password.trim()?.length > 0) {\n dispath({\n type: \"initPasswordValidate\",\n payload: {\n passwordValidateloading: flag === \"P\" ? true : false,\n },\n });\n const { validateStatus, validateData } = await validatePasswordFn({\n USER_ID: data.userName,\n PASSWORD: flag === \"P\" ? data?.password : data?.confirmpassword,\n SCREEN_REF: \"FORGET_PW\",\n });\n if (validateStatus === \"0\") {\n switch (validateData?.O_STATUS) {\n case \"999\":\n dispath({\n type: \"verifyPasswordFailed\",\n payload: {\n isPasswordError: flag === \"P\" ? true : false,\n isConfirmPasswordError: flag === \"P\" ? false : true,\n userMessageforPassword:\n flag === \"P\" ? validateData?.O_MESSAGE : \"\",\n userMessageforconfirmPassword:\n flag === \"P\" ? \"\" : (validateData?.O_MESSAGE ?? \"\"),\n apierrorMessage: validateData?.O_MESSAGE,\n },\n });\n break;\n case \"0\":\n dispath({ type: \"passwordValidateSuccess\" });\n break;\n }\n }\n } else if (flag === \"C\" && data?.confirmpassword.trim()?.length > 0) {\n let validationData = {\n isPasswordError: false,\n userMessageforPassword: \"\",\n isConfirmPasswordError: false,\n userMessageforconfirmPassword: \"\",\n };\n if (!Boolean(data.confirmpassword)) {\n validationData.isConfirmPasswordError = true;\n validationData.userMessageforconfirmPassword =\n \"Confirmpasswordisrequired\";\n } else if (\n Boolean(data.password) &&\n data.password !== data.confirmpassword\n ) {\n validationData.isConfirmPasswordError = true;\n validationData.userMessageforconfirmPassword =\n \"New Password and Confirm Password did not matched\";\n }\n dispath({\n type: \"verifyPasswordFailed\",\n payload: validationData,\n });\n }\n };\n\n const onSubmitHandel = async (data, flag) => {\n if (verifyRequestData(data, flag)) {\n if (flag === 0) {\n dispath({ type: \"initverifyUserNameandMobileNo\" });\n const {\n status,\n data: resdata,\n message,\n } = await veirfyUsernameandMobileNo(\n data?.userName.toLowerCase(),\n data?.mobileno,\n screenFlag,\n );\n\n if (status === \"0\") {\n dispath({\n type: \"verifyUserNameandMobileNoSuccess\",\n payload: {\n requestCd: String(resdata?.TRAN_CD ?? \"\"),\n username: data?.userName,\n description: resdata?.DESCRIPTION,\n auth_type: resdata?.AUTH_TYPE,\n company_ID: resdata?.COMP_CD,\n branch_cd: resdata?.BRANCH_CD,\n otpValidFor: resdata?.OTP_VALID,\n contactUser: resdata?.CONTACT2,\n forgotOtpSentText: resdata?.OTP_SENT_TEXT,\n },\n });\n setOpen(true);\n } else {\n dispath({\n type: \"verifyUserNameandMobileNoFailed\",\n payload: {\n isApiError: true,\n apierrorMessage: message,\n },\n });\n }\n } else if (flag === 1) {\n dispath({ type: \"initverifyPasswordSetReq\" });\n const { validateStatus, validateData } = await validatePasswordFn({\n USER_ID: data?.userName,\n PASSWORD: data?.password,\n SCREEN_REF: \"FORGET_PW\",\n });\n // console.log(\"validateData\", validateData?.O_MESSAGE, validateStatus)\n if (validateStatus === \"0\") {\n switch (validateData?.O_STATUS) {\n case \"999\":\n dispath({\n type: \"verifyPasswordFailed\",\n payload: {\n isPasswordError: true,\n userMessageforPassword: validateData?.O_MESSAGE,\n apierrorMessage: validateData?.O_MESSAGE,\n },\n });\n break;\n case \"0\":\n const {\n status,\n data: resdata,\n message,\n } = await updatenewPassword(\n loginState?.requestCd,\n loginState?.username,\n data?.password,\n );\n if (status === \"0\") {\n dispath({ type: \"passwordRegistaredSuccess\" });\n enqueueSnackbar(\"Password successfully reset\", {\n variant: \"success\",\n });\n navigate(loginPageEndpoint);\n } else if (status === \"99\") {\n dispath({\n type: \"verifyPasswordFailed\",\n payload: {\n isApiError: true,\n apierrorMessage: message,\n },\n });\n } else {\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n navigate(loginPageEndpoint);\n }\n }\n } else {\n dispath({\n type: \"verifyPasswordFailed\",\n payload: {\n isApiError: true,\n apierrorMessage: validateData?.O_MESSAGE,\n },\n });\n }\n }\n }\n };\n const verifyRequestData = (data, flag) => {\n if (flag === 0) {\n let validationData = {\n isUsernameError: false,\n isMobileError: false,\n userMessageforusername: \"\",\n userMessageforMobileno: \"\",\n };\n if (!Boolean(data.userName)) {\n validationData.isUsernameError = true;\n validationData.userMessageforusername = \"UsernameisRequired\";\n }\n if (!Boolean(data.mobileno)) {\n validationData.isMobileError = true;\n validationData.userMessageforMobileno = \"MobileNoisRequired\";\n } else if (\n isNaN(data.mobileno) ||\n (data.mobileno.length !== 10 && data.mobileno.length !== 13)\n ) {\n validationData.isMobileError = true;\n validationData.userMessageforMobileno = \"Please enter valid Mobile No.\";\n }\n dispath({\n type: \"verifyUserNameandMobileNoFailed\",\n payload: validationData,\n });\n return !(validationData.isMobileError || validationData.isUsernameError);\n } else if (flag === 1) {\n let validationData = {\n isPasswordError: false,\n userMessageforPassword: \"\",\n isConfirmPasswordError: false,\n userMessageforconfirmPassword: \"\",\n };\n let pwdverify = utilFunction.ValidatePassword(data.password);\n if (Boolean(pwdverify)) {\n validationData.isPasswordError = true;\n validationData.userMessageforPassword = pwdverify;\n }\n if (!Boolean(data.confirmpassword)) {\n validationData.isConfirmPasswordError = true;\n validationData.userMessageforconfirmPassword =\n \"Confirmpasswordisrequired\";\n } else if (\n Boolean(data.password) &&\n data.password !== data.confirmpassword\n ) {\n validationData.isConfirmPasswordError = true;\n validationData.userMessageforconfirmPassword =\n \"New Password and Confirm Password did not matched\";\n }\n dispath({\n type: \"verifyPasswordFailed\",\n payload: validationData,\n });\n return !(\n validationData.isConfirmPasswordError || validationData.isPasswordError\n );\n }\n return true;\n };\n const handleClose = () => {\n setOpen(false);\n };\n const changeUserName = () => {\n dispath({\n type: \"backToUsernameVerification\",\n });\n };\n\n const VerifyOTP = async (OTPNumber) => {\n if (Boolean(OTPNumber) && OTPNumber.toString().length === 6) {\n dispath({ type: \"inititateOTPVerification\" });\n const {\n status,\n data: resdata,\n message,\n } = await verifyOTPForPWDReset(\n loginState?.requestCd,\n loginState?.username,\n OTPNumber,\n loginState?.auth_type,\n screenFlag,\n );\n if (status === \"0\") {\n if (screenFlag === \"totp\") {\n setTotp({\n totpdata: {\n secretTockenQR: resdata?.SECRET_TOCKEN_QR,\n secretTocken: resdata?.SECRET_TOCKEN,\n userName: resdata?.USER_NAME,\n },\n Enable: true,\n });\n } else {\n dispath({\n type: \"OTPVerificationComplate\",\n payload: {\n otpmodelclose: true,\n newPasswordMessage: resdata?.MESSAGE,\n },\n });\n }\n } else if (status === \"99\") {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: message },\n });\n } else {\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n navigate(loginPageEndpoint);\n }\n } else {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: \"Please enter a 6 digit OTP number\" },\n });\n }\n };\n return (\n <>\n <Grid container style={{ height: \"100vh\", overflow: \"hidden\" }}>\n <BankDetails bannerDetails={bannerDetails} />\n <Grid item xs={6} md={6} lg={6} sm={6}>\n {logoUrl ? (\n <Grid\n container\n direction=\"row\"\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n padding={\"31px\"}\n maxWidth={\"210px\"}\n ml={\"auto\"}\n >\n <Tooltip describeChild title={logoTitle ?? \"\"}>\n <img\n src={Boolean(dashboardLogoURL) ? dashboardLogoURL : \"\"}\n alt=\"Logo\"\n width={\"100%\"}\n />\n </Tooltip>\n </Grid>\n ) : null}\n {LanguageComponent ? (\n <Grid\n container\n direction=\"row\"\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n padding={\"0 35px 0 0\"}\n maxWidth={\"180px\"}\n ml={\"auto\"}\n >\n <LanguageComponent />\n </Grid>\n ) : null}\n <Container maxWidth=\"xs\">\n <Grid alignItems=\"center\" style={{ paddingTop: \"20px\" }}>\n <h2 style={{ margin: \"10px 0\" }}>\n {loginState.workingState === 1\n ? t(\"Setnewpassword\")\n : screenFlag === \"totp\"\n ? t(\"ResetTOTP\")\n : t(\"ForgotPassword\")}\n </h2>\n {loginState.workingState === 1 ? (\n <>\n <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"27px\",\n }}\n >\n <span\n style={{\n marginRight: \"12px\",\n color: \"#1C1C1C\",\n }}\n >\n {\" \"}\n {t(\"Hello\")}{\" \"}\n {loginState?.username\n ? loginState.username.charAt(0).toUpperCase() +\n loginState.username.slice(1)\n : null}\n </span>\n {t(\"OTSuccessfullynewpassword\", {\n defaultValue: loginState?.newPasswordMessage ?? \"\",\n })}\n </div>\n </>\n ) : null}\n {open ? (\n <OTPModelForm\n classes={classes}\n handleClose={handleClose}\n loginState={loginState}\n VerifyOTP={VerifyOTP}\n OTPError={t(loginState?.OtpuserMessage ?? \"\")}\n setOTPError={(error) => {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: error },\n });\n }}\n resendFlag={\"FORGET_PW\"}\n setNewRequestID={(newRequestID) => {\n dispath({\n type: \"OTPResendSuccess\",\n payload: { requestCd: newRequestID },\n });\n otpResendRef.current = otpResendRef.current + 1;\n }}\n otpresendCount={otpResendRef.current}\n OTPResendRequest={OTPResendRequest}\n />\n ) : (\n <ForgotPasswordFields\n classes={classes}\n loginState={loginState}\n onSubmit={onSubmitHandel}\n navigate={navigate}\n loginPageEndpoint={loginPageEndpoint}\n preventSpecialChars={preventSpecialChars}\n validatePassword={validatePassword}\n />\n )}\n </Grid>\n </Container>\n {totp?.Enable && TotpEnbaledDisabled ? (\n <TotpEnbaledDisabled totpdata={totp?.totpdata} flag=\"reset\" />\n ) : null}\n </Grid>\n </Grid>\n </>\n );\n};\n","import { GridMetaDataType } from \"@acuteinfo/common-base\";\nexport const BranchSelectionGridMetaData: GridMetaDataType = {\n gridConfig: {\n dense: true,\n gridLabel: \"AccessBranchList\",\n rowIdColumn: \"BRANCH_CD\",\n // searchPlaceholder: \"Branches\",\n defaultColumnConfig: {\n width: 400,\n maxWidth: 450,\n minWidth: 300,\n },\n\n allowColumnReordering: false,\n disableSorting: false,\n hideHeader: false,\n disableGroupBy: true,\n enablePagination: false,\n containerHeight: {\n min: \"68vh\",\n max: \"68vh \",\n },\n allowFilter: false,\n allowColumnHiding: false,\n allowRowSelection: false,\n isCusrsorFocused: true,\n hideFooter: true,\n },\n columns: [\n {\n accessor: \"BRANCH_CD\",\n columnName: \"BranchCode\",\n sequence: 1,\n alignment: \"left\",\n componentType: \"default\",\n width: 200,\n minWidth: 140,\n maxWidth: 220,\n },\n {\n accessor: \"BRANCH_NM\",\n columnName: \"BranchName\",\n sequence: 2,\n alignment: \"left\",\n componentType: \"default\",\n width: 280,\n minWidth: 280,\n maxWidth: 420,\n },\n {\n accessor: \"DISP_STATUS\",\n columnName: \"Status\",\n sequence: 3,\n alignment: \"left\",\n componentType: \"default\",\n width: 200,\n minWidth: 140,\n maxWidth: 220,\n },\n {\n accessor: \"BEGIN_DATETIME\",\n columnName: \"BeginTime\",\n sequence: 4,\n alignment: \"left\",\n componentType: \"date\",\n dateFormat: \"dd/MM/yyyy hh:mm a\",\n width: 222,\n minWidth: 140,\n maxWidth: 240,\n },\n {\n accessor: \"END_DATETIME\",\n columnName: \"EndTime\",\n sequence: 5,\n alignment: \"left\",\n componentType: \"date\",\n dateFormat: \"dd/MM/yyyy hh:mm a\",\n width: 222,\n minWidth: 140,\n maxWidth: 240,\n },\n // {\n // accessor: \"DAYEND_STATUS\",\n // columnName: \"Dayend Status\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"EOD_RUNNING_STATUS\",\n // columnName: \"EOD Running Status\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"BASE_COMP_CD\",\n // columnName: \"Base Comp Cd\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"BASE_BRANCH_CD\",\n // columnName: \"Base Branch Cd\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"COMP_CD\",\n // columnName: \"Comp Cd\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"COMP_NM\",\n // columnName: \"Comp Name\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n ],\n};\n","import { makeStyles } from \"@mui/styles\";\r\n\r\nexport const useStyles = makeStyles((theme: any) => ({\r\n heading_user_img: {\r\n width: \"40px\",\r\n height: \"40px\",\r\n // cursor: \"pointer\",\r\n },\r\n heading_user_img_border: {\r\n border: \"2px dashed var(--theme-color3)\",\r\n borderRadius: \"50%\",\r\n padding: \"4px\",\r\n },\r\n logo: {\r\n height: \"38px\",\r\n },\r\n}));\r\n","import {\n GridWrapper,\n ActionTypes,\n GridMetaDataType,\n ClearCacheProvider,\n Alert,\n queryClient,\n usePopupContext,\n} from \"@acuteinfo/common-base\";\n\nimport { Fragment, useCallback, useEffect } from \"react\";\nimport { BranchSelectionGridMetaData } from \"./gridMetadata\";\nimport \"./styles.css\";\nimport {\n Avatar,\n Box,\n Button,\n Grid,\n Stack,\n Tooltip,\n tooltipClasses,\n} from \"@mui/material\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport { useSnackbar } from \"notistack\";\n\nimport { useStyles } from \"./style\";\nimport { styled } from \"@mui/material/styles\";\nimport { BranchSelectionGridDataFnType, GetMenuDataFnType } from \"pages/types\";\nimport { t } from \"i18next\";\nconst actions: ActionTypes[] = [\n {\n actionName: \"back\",\n actionLabel: \"Back\",\n multiple: false,\n rowDoubleClick: false,\n actionTextColor: \"var(--theme-color3)\",\n actionBackground: \"var(--white)\",\n startsIcon: \"West\",\n rotateIcon: \"scale(1.4) rotateX(-360deg)\",\n },\n {\n actionName: \"proceed\",\n actionLabel: \"Proceed\",\n multiple: false,\n rowDoubleClick: true,\n actionTextColor: \"var(--white)\",\n actionBackground: \"var(--theme-color3)\",\n onEnterSubmit: true,\n endsIcon: \"East\",\n rotateIcon: \"scale(1.4) rotateX(-360deg)\",\n },\n];\n\ninterface BranchSelectionWrapperProps {\n selectionMode: \"S\" | \"C\";\n authState: any;\n isBranchSelectedFn: () => boolean;\n isLoggedInFn: () => boolean;\n logoutFn: () => void;\n branchSelectFn: Function;\n BranchSelectionGridDataApiFn: BranchSelectionGridDataFnType;\n GetMenuDataApiFn: GetMenuDataFnType;\n sideImage?: string;\n logos: any;\n logo?: string;\n navigate: NavigateFunction;\n dashboardUrl: string;\n loginUrl: string;\n appTranCd: string;\n}\n\nconst BranchSelectionGrid: React.FC<BranchSelectionWrapperProps> = ({\n selectionMode,\n authState,\n isBranchSelectedFn,\n isLoggedInFn,\n logoutFn,\n logos,\n logo,\n navigate,\n BranchSelectionGridDataApiFn,\n GetMenuDataApiFn,\n sideImage,\n branchSelectFn,\n dashboardUrl,\n loginUrl,\n appTranCd,\n}) => {\n const classes = useStyles();\n const { MessageBox } = usePopupContext();\n\n const { enqueueSnackbar } = useSnackbar();\n const { data, isLoading, isFetching, error, isError, refetch } = useQuery<\n any,\n any\n >([\"BranchSelectionGridData\"], () => BranchSelectionGridDataApiFn());\n\n useEffect(() => {\n refetch();\n return () => {\n queryClient.removeQueries([\"BranchSelectionGridData\", {}]);\n };\n }, []);\n\n useEffect(() => {\n if (!isLoggedInFn()) {\n navigate(loginUrl);\n } else if (isBranchSelectedFn() && selectionMode !== \"C\") {\n navigate(dashboardUrl);\n }\n }, [isBranchSelectedFn, isLoggedInFn]);\n\n type MutationErrorType = {\n severity: string;\n error_msg: string;\n error_detail: string;\n };\n\n const mutation: any = useMutation(GetMenuDataApiFn, {\n onSuccess: (data, extreData: any) => {\n branchSelectFn({\n menulistdata: data,\n branchCode: extreData?.BRANCH_CD,\n branch: extreData?.BRANCH_NM,\n baseBranchCode: extreData?.BASE_BRANCH_CD,\n });\n },\n });\n const getError: any = mutation.error as MutationErrorType;\n const setCurrentAction = useCallback(\n async (data) => {\n if (data.name === \"proceed\") {\n if (data.rows?.length === 0) {\n enqueueSnackbar(\"Please Select Branch\", {\n variant: \"error\",\n });\n } else if (data.rows?.[0]?.data?.STATUS === \"C\") {\n await MessageBox({\n message: \"BranchDayEndMessage\",\n messageTitle: \"BranchDayEndTitle\",\n icon: \"ERROR\",\n defFocusBtnName: \"Ok\",\n });\n } else {\n mutation.mutate({\n BASE_COMP_CD: data.rows?.[0]?.data?.BASE_COMP_CD ?? \"\",\n BASE_BRANCH_CD: data.rows?.[0]?.data?.BASE_BRANCH_CD ?? \"\",\n COMP_CD: data.rows?.[0]?.data?.COMP_CD ?? \"\",\n BRANCH_CD: data.rows?.[0]?.data?.BRANCH_CD ?? \"\",\n GROUP_NAME: authState?.groupName ?? \"\",\n APP_TRAN_CD: appTranCd,\n COMP_NM: data.rows?.[0]?.data?.COMP_NM ?? \"\",\n BRANCH_NM: data.rows?.[0]?.data?.BRANCH_NM ?? \"\",\n DAYEND_STATUS: data.rows?.[0]?.data?.DAYEND_STATUS ?? \"\",\n EOD_RUNNING_STATUS: data.rows?.[0]?.data?.EOD_RUNNING_STATUS ?? \"\",\n IS_UPD_DEF_BRANCH: authState?.user?.isUpdDefBranch ?? \"\",\n COMP_BASE_BRANCH_CD:\n data.rows?.[0]?.data?.COMP_BASE_BRANCH_CD ?? \"\",\n selectionMode: selectionMode,\n authState,\n });\n }\n } else if (data.name === \"back\") {\n const res = await MessageBox({\n messageTitle: \"confirmation\",\n message: \"AreYouSureToExit\",\n icon: \"CONFIRM\",\n buttonNames: [\"Yes\", \"No\"],\n defFocusBtnName: \"Yes\",\n });\n\n if (res === \"Yes\") {\n if (selectionMode === \"C\") {\n navigate(dashboardUrl, {\n replace: true,\n });\n } else {\n logoutFn();\n }\n }\n }\n },\n [navigate, data, mutation]\n );\n\n useEffect(() => {\n var oneBranchOpen = data?.some((branch) => branch.STATUS === \"O\");\n if (oneBranchOpen === false) {\n enqueueSnackbar(\n \"Branch is in Day End Status.~rPlease contact system Vendor.\",\n {\n variant: \"error\",\n }\n );\n logoutFn();\n }\n if (data?.length === 1) {\n if (data?.[0]?.STATUS === \"O\") {\n setCurrentAction({ name: \"proceed\", rows: [{ data: { ...data[0] } }] });\n }\n }\n }, [JSON.stringify(data)]);\n\n const Greetings = (userId) => {\n let hours = new Date().getHours();\n let greet;\n\n if (hours < 12) greet = \"morning\";\n else if (hours >= 12 && hours <= 16) greet = \"afternoon\";\n else if (hours >= 16 && hours <= 24) greet = \"evening\";\n\n return (\n <span>\n Good {greet} {userId},\n </span>\n );\n };\n\n const LightTooltip = styled(({ className, ...props }: any) => (\n <Tooltip {...props} classes={{ popper: className }} />\n ))(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.palette.common.white,\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: theme.shadows[1],\n fontSize: 13,\n },\n }));\n\n // const greet = Greetings();\n\n return (\n <>\n <Grid\n container\n style={{\n margin: \"0\",\n padding: \"0\",\n height: \"100vh\",\n // overflowY: \"hidden\",\n }}\n >\n {sideImage ? (\n <Grid item lg={1} md={1} xl={1} xs={1} sm={1}>\n <img className=\"sideImage\" src={sideImage} alt=\"side-Image\" />\n </Grid>\n ) : null}\n\n <Grid\n item\n lg={11}\n md={11}\n xl={11}\n xs={11}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n <Grid\n container\n style={{\n minHeight: \"100vh\",\n padding: \"10px 0px 0px 0px\",\n }}\n lg={11}\n md={11}\n xl={11}\n xs={11}\n >\n <Grid\n container\n style={{\n margin: \"0\",\n padding: \"0\",\n // height: \"12vh\",\n }}\n lg={12}\n md={12}\n xl={12}\n xs={12}\n >\n <Grid\n xs={12}\n sm={1}\n md={1}\n lg={1}\n xl={1}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n visibility: Boolean(logos?.profile) ? \"visible\" : \"hidden\",\n // justifyContent: \"center\",\n }}\n >\n <Stack direction=\"row\" spacing={4} ml={1}>\n <Box\n className={classes.heading_user_img_border}\n sx={{ cursor: \"pointer\" }}\n >\n <LightTooltip\n title={\n <>\n <div>\n {t(\"UserID\")} : {authState?.user?.id ?? \"\"}\n </div>\n <div>\n {t(\"Role\")} : {authState?.roleName ?? \"\"}\n </div>\n <div>{t(\"LastUnsuccessfulLogin\")} : \"\"</div>\n </>\n }\n placement=\"bottom-start\"\n >\n <Avatar\n className={classes.heading_user_img}\n // onClick={handleNavigate}\n alt=\"Remy Sharp\"\n src={logos?.profile ?? \"\"}\n />\n </LightTooltip>\n </Box>\n </Stack>\n </Grid>\n <Grid\n xs={12}\n sm={5}\n md={5}\n lg={5}\n xl={5}\n sx={{\n justifyContent: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <h1\n className=\"name-heading\"\n style={{ fontSize: \"24px\", margin: \"4px 0px\" }}\n >\n {t(\"Welcome\")}\n <span>{`${authState?.user?.name ?? \"\"},`}</span>\n </h1>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <h3 style={{ margin: \"4px 0px\" }}>\n {Greetings(authState?.user?.id ?? \"\")}\n </h3>\n 👋\n </div>\n </Grid>\n <Grid\n xs={12}\n sm={1}\n md={1}\n lg={1}\n xl={1}\n sx={{\n display: \"flex\",\n // flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n visibility: Boolean(logos?.bank) ? \"visible\" : \"hidden\",\n }}\n >\n <Stack direction=\"row\" justifyContent=\"flex-start\" spacing={2}>\n <Box className={classes.heading_user_img_border}>\n <Avatar\n className={classes.heading_user_img}\n alt=\"Remy Sharp\"\n src={logos?.bank ?? \"\"}\n />\n </Box>\n </Stack>\n </Grid>\n <Grid\n xs={12}\n sm={3}\n md={3}\n lg={3}\n xl={3}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n }}\n >\n <div\n className=\"bank-name-container\"\n style={{ fontSize: \"14px\" }}\n >\n <p className=\"bank-name\">\n {`${t(\"BankName\")}: ${authState?.companyName ?? \"\"}`}\n </p>\n </div>\n\n <p className=\"emp-id\">\n {`${t(\"EmpId\")}: ${authState?.user?.employeeID ?? \"\"}`}\n </p>\n </Grid>\n <Grid\n xs={12}\n sm={3}\n md={3}\n lg={2}\n xl={2}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"right\",\n visibility: Boolean(logo) ? \"visible\" : \"hidden\",\n }}\n >\n {\" \"}\n <div>\n <img\n src={logo ?? \"\"}\n alt=\"bank_logo\"\n className={classes.logo}\n />\n </div>\n </Grid>\n </Grid>\n\n {isError ? (\n <Fragment>\n <div style={{ width: \"100%\", paddingTop: \"10px\" }}>\n <Alert\n severity={error?.severity ?? \"error\"}\n errorMsg={error?.error_msg ?? \"Error\"}\n errorDetail={error?.error_detail ?? \"\"}\n />\n </div>\n </Fragment>\n ) : mutation.isError && mutation.error ? (\n <Fragment>\n <div style={{ width: \"100%\", paddingTop: \"10px\" }}>\n <Alert\n severity={getError.severity ?? \"error\"}\n errorMsg={getError.error_msg ?? \"Error\"}\n errorDetail={getError.error_detail ?? \"\"}\n />\n </div>\n </Fragment>\n ) : null}\n <GridWrapper\n key={`branchSelection`}\n finalMetaData={BranchSelectionGridMetaData as GridMetaDataType}\n data={data ?? []}\n setData={() => null}\n actions={actions}\n setAction={setCurrentAction}\n controlsAtBottom={true}\n actionContextAtBottom={true}\n headerToolbarStyle={{\n background: \"#fff !important\",\n padding: \"0\",\n \"& .MuiTypography-root\": {\n color: \"black\",\n },\n }}\n disableMultipleRowSelect={true}\n variant=\"outlined\"\n loading={isLoading || isFetching || mutation.isLoading}\n defaultSelectedRowId={\n authState?.user?.defaultSelectBranch ?? null\n }\n />\n {isError || data?.length === 0 ? (\n <Button\n sx={{\n backgroundColor: \"var(--theme-color3)\",\n position: \"absolute\",\n right: \"113px\",\n bottom: \"20px\",\n width: \"7rem\",\n \"&:hover\": {\n backgroundColor: \"var(--theme-color3)\",\n },\n }}\n onClick={async () => {\n const res = await MessageBox({\n messageTitle: \"confirmation\",\n message: \"AreYouSureToExit\",\n icon: \"CONFIRM\",\n buttonNames: [\"Yes\", \"No\"],\n defFocusBtnName: \"Yes\",\n });\n if (res === \"Yes\") {\n if (selectionMode === \"C\") {\n navigate(dashboardUrl, {\n replace: true,\n });\n } else {\n logoutFn();\n }\n }\n }}\n >\n Back\n </Button>\n ) : null}\n </Grid>\n </Grid>\n </Grid>\n </>\n );\n};\n\nexport const BranchSelectionGridWrapper: React.FC<\n BranchSelectionWrapperProps\n> = (props) => {\n return (\n <ClearCacheProvider>\n <BranchSelectionGrid {...props} />\n </ClearCacheProvider>\n );\n};\n","import { alpha } from \"@mui/material\";\r\nimport { makeStyles } from \"@mui/styles\";\r\n\r\nexport const useStyles = makeStyles((theme: any) => ({\r\n appBar: {\r\n // zIndex: theme.zIndex.drawer + 1,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n color: \"#0063A3\",\r\n height: \"unset\",\r\n background: \"var(--white)\",\r\n boxShadow: \"0px 1px 0px -0.5px #DEE0E2\",\r\n },\r\n searchBar: {\r\n width: 290,\r\n border: \"none\",\r\n color: \"rgba(0, 0, 0, 0.87) !important\",\r\n backgroundColor: \"rgb(235 237 238 / 26%)!important\",\r\n\r\n \"& input\": {\r\n width: \"100% !important\",\r\n },\r\n },\r\n searchList: {\r\n position: \"absolute\",\r\n background: \"#fff\",\r\n width: \"100%\",\r\n borderRadius: \"6px\",\r\n boxShadow: \"0 12px 25px rgba(0,0,0,.3)\",\r\n top: \"120%\",\r\n height: \"auto\",\r\n maxHeight: \"325px\",\r\n overflowY: \"auto\",\r\n\r\n \"& .list-links\": {\r\n background: \"none\",\r\n border: \"none\",\r\n outline: \"none\",\r\n cursor: \"pointer\",\r\n textDecoration: \"none\",\r\n padding: \"0.7rem 1rem\",\r\n fontSize: \"0.90rem\",\r\n textAlign: \"left\",\r\n borderBottom: \"1px solid #ddd\",\r\n color: \"#222 !important\",\r\n fontWeight: 500,\r\n \"&:hover, &.active\": {\r\n backgroundColor: \"#f4f4f4\",\r\n },\r\n },\r\n },\r\n appBarShift: {\r\n paddingLeft: \"0px\",\r\n // width: `calc(100% - ${drawerWidth}px)`,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n background: \"rgba(250, 251, 255, 0.9)\",\r\n }),\r\n },\r\n heading_user_dtl: {\r\n width: \"458px\",\r\n height: \"73px\",\r\n left: \"37px\",\r\n top: \"calc(50% - 73px/2)\",\r\n },\r\n heading_user_img: {\r\n width: \"40px\",\r\n height: \"40px\",\r\n // cursor: \"pointer\",\r\n },\r\n heading_user_img_border: {\r\n border: \"2px dashed var(--theme-color3)\",\r\n borderRadius: \"50%\",\r\n padding: \"4px\",\r\n },\r\n toolbar: {\r\n paddingLeft: \"0px\",\r\n },\r\n title: {\r\n flexGrow: 1,\r\n padding: theme.spacing(0.5, 0),\r\n color: \"var(--theme-color1)\",\r\n },\r\n searchRoot: {\r\n fontFamily: theme.typography.fontFamily,\r\n position: \"relative\",\r\n boxShadow:\r\n \"0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)\",\r\n marginRight: theme.spacing(2),\r\n marginLeft: theme.spacing(1),\r\n marginBottom: theme.spacing(0.25),\r\n marginTop: theme.spacing(0.25),\r\n borderRadius: 40,\r\n backgroundColor: alpha(theme.palette.common.white, 0.15),\r\n \"&:hover\": {\r\n backgroundColor: alpha(theme.palette.common.white, 0.25),\r\n },\r\n \"& $inputInput\": {\r\n transition: theme.transitions.create(\"width\"),\r\n width: 120,\r\n \"&:focus\": {\r\n width: 170,\r\n },\r\n },\r\n },\r\n search: {\r\n width: theme.spacing(6),\r\n height: \"100%\",\r\n position: \"absolute\",\r\n pointerEvents: \"none\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n inputRoot: {\r\n color: \"inherit\",\r\n marginTop: 0,\r\n borderRadius: \"40px\",\r\n },\r\n inputInput: {\r\n padding: theme.spacing(1, 1, 1, 6),\r\n },\r\n\r\n loggedInUser: {\r\n marginLeft: theme.spacing(2),\r\n },\r\n nameClass: {\r\n color: \"#0063A3\",\r\n fontWeight: 600,\r\n textTransform: \"capitalize\",\r\n lineHeight: \"1.4\",\r\n textAlign: \"left\",\r\n },\r\n dropDown: {\r\n fontSize: \"2rem\",\r\n },\r\n vTop: {\r\n verticalAlign: \"top\",\r\n paddingLeft: \"4px\",\r\n color: \"var(--theme-color1)\",\r\n },\r\n userDesignation: {\r\n margin: \"0px\",\r\n fontWeight: 500,\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.57,\r\n color: \"var(--theme-color1)\",\r\n },\r\n userName: {\r\n margin: \"0px\",\r\n fontWeight: 500,\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.57,\r\n color: \"var(--theme-color3)\",\r\n },\r\n userprofilehover: {\r\n \"&:hover\": {\r\n backgroundColor: \"var(--white)\",\r\n },\r\n },\r\n lang_svg: {\r\n marginRight: \"10px\",\r\n width: \"22px\",\r\n height: \"22px\",\r\n },\r\n logo: {\r\n height: \"38px\",\r\n },\r\n version01: {\r\n margin: \"0\",\r\n textAlign: \"center\",\r\n color: \"var(--theme-color3)\",\r\n fontSize: \"9px\",\r\n },\r\n DrawerClose_icon: {\r\n color: \"var(--theme-color3)\",\r\n position: \"static\",\r\n background: \"transperant\",\r\n \"&:hover\": {\r\n background: \"var(--theme-color4)\",\r\n },\r\n width: \"46px\",\r\n height: \"46px\",\r\n },\r\n marquee: {\r\n animation: \"$marquee 10s linear infinite\",\r\n animationDelay: \"3s\",\r\n },\r\n \"@keyframes marquee\": {\r\n \"0%\": { transform: \"translateX(100%)\" },\r\n \"100%\": { transform: \"translateX(-100%)\" },\r\n },\r\n popover: {\r\n popover: {\r\n maxWidth: \"100%\",\r\n width: \"fit-content\",\r\n \"& .MuiPopover-paper\": {\r\n maxWidth: \"100%\",\r\n },\r\n },\r\n },\r\n blinkHard: {\r\n animation: \"$blinker 1s step-end infinite\",\r\n },\r\n \"@keyframes blinker\": {\r\n \"50%\": {\r\n opacity: 0,\r\n },\r\n },\r\n}));\r\n","import React, { useEffect, useState } from \"react\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport { useStyles } from \"./style\";\nimport BecomePartnerImg from \"../../assets/images/BecomePartnerImg.svg\";\nimport LogoutIcon from \"@mui/icons-material/Logout\";\nimport MenuOutlinedIcon from \"@mui/icons-material/MenuOutlined\";\nimport { styled, alpha } from \"@mui/material/styles\";\nimport {\n AppBar,\n Avatar,\n Box,\n IconButton,\n Stack,\n Toolbar,\n Tooltip,\n Typography,\n tooltipClasses,\n useMediaQuery,\n} from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\nimport { format } from \"date-fns\";\n\ninterface AppbarWrapperProps {\n handleDrawerOpen: Function;\n handleDrawerClose: Function;\n open: boolean;\n authState: any;\n LanguageComponent?: React.ComponentType<any>;\n SearchComponent?: React.ComponentType<any>;\n dashboardUrl?: string;\n logos?: any;\n bankLogo?: any;\n profilePic?: string;\n handleLogout?: Function;\n handleProfile?: Function;\n navigate: NavigateFunction;\n hideGreetings?: boolean;\n menuIconConfig?: {\n menuIconPosition?: \"left\" | \"right\";\n OpenIconComponent?: React.ReactNode;\n CloseIconComponent?: React.ReactNode;\n };\n optionalComponents?: {\n Component: React.ComponentType<any>;\n props?: { [key: string]: any };\n }[];\n /**\n * Accepts useIdleTimer instance\n */\n idleTimer?: any;\n}\n\nconst StyledAppBar = styled(AppBar)(({ theme }) => ({\n boxShadow: \"0 2px 4px rgba(0,0,0,0.1)\",\n padding: \"6px 0\",\n}));\n\nconst LogoContainer = styled(Box)(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(1),\n minWidth: \"fit-content\",\n}));\n\nconst CompanyLogo = styled(Avatar)(({ theme }) => ({\n backgroundColor: \"white\",\n width: 35,\n height: 35,\n}));\n\nconst BankInfoContainer = styled(Box)(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(2),\n marginLeft: theme.spacing(3),\n [theme.breakpoints.down(\"md\")]: {\n marginLeft: theme.spacing(1),\n gap: theme.spacing(1),\n },\n}));\n\nconst BankInfoText = styled(Box)(({ theme }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n color: \"white\",\n}));\n\nconst Search = styled(\"div\")(({ theme }) => ({\n position: \"relative\",\n borderRadius: theme.shape.borderRadius,\n backgroundColor: alpha(theme.palette.common.white, 0.15),\n \"&:hover\": {\n backgroundColor: alpha(theme.palette.common.white, 0.25),\n },\n marginLeft: 0,\n width: \"100%\",\n [theme.breakpoints.up(\"sm\")]: {\n width: \"auto\",\n },\n}));\n\nconst RightSection = styled(Box)(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(1),\n marginLeft: \"auto\",\n}));\n\nconst GreetingText = styled(Typography)(({ theme }) => ({\n color: \"var(--theme-color3)\",\n fontSize: \"14px\",\n marginRight: theme.spacing(1),\n [theme.breakpoints.down(\"md\")]: {\n display: \"none\",\n },\n}));\n\nexport const AppbarWrapper: React.FC<AppbarWrapperProps> = ({\n handleDrawerOpen,\n handleDrawerClose,\n open,\n authState,\n LanguageComponent,\n SearchComponent,\n dashboardUrl,\n logos,\n bankLogo,\n profilePic,\n handleLogout,\n handleProfile,\n navigate,\n hideGreetings,\n menuIconConfig = {},\n optionalComponents = [],\n idleTimer,\n // menuIconPosition = \"left\",\n}) => {\n const above1300 = useMediaQuery(\"(min-width:1300px)\");\n const classes = useStyles();\n const { t } = useTranslation();\n const [countdownMessage, setCountdownMessage] = useState(\"\");\n const [blinker, setBlinker] = useState(0);\n const {\n CloseIconComponent,\n OpenIconComponent,\n menuIconPosition = \"right\",\n } = menuIconConfig;\n\n const LightTooltip = styled(({ className, ...props }: any) => (\n <Tooltip {...props} classes={{ popper: className }} />\n ))(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.palette.common.white,\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: theme.shadows[1],\n fontSize: 13,\n },\n }));\n const Greetings = () => {\n let hours = new Date().getHours();\n let greet;\n\n if (hours < 12) greet = \"morning\";\n else if (hours >= 12 && hours <= 16) greet = \"afternoon\";\n else if (hours >= 16 && hours <= 24) greet = \"evening\";\n\n return <span>Good {greet},</span>;\n };\n\n useEffect(() => {\n if (!idleTimer) return;\n const updateCountdown = () => {\n const remainingTime = idleTimer.getRemainingTime();\n const remainingSeconds = Math.floor(remainingTime / 1000); // Convert to seconds\n if (remainingSeconds <= 30 && remainingSeconds > 0) {\n setCountdownMessage(\n t(\"sessionTimeoutInSec\", {\n remainingSeconds,\n })\n );\n setBlinker((prev) => prev + 1);\n } else {\n setCountdownMessage(\"\"); // Clear the message if more than 30 seconds\n setBlinker(0);\n }\n };\n const interval = setInterval(updateCountdown, 1000);\n return () => clearInterval(interval);\n }, []);\n\n return (\n <>\n <StyledAppBar position=\"fixed\">\n <Toolbar\n sx={{\n minHeight: \"64px !important\",\n }}\n >\n {/* Left Section - Logo and Menu */}\n <LogoContainer\n sx={{\n flexDirection:\n menuIconPosition === \"left\" ? \"row\" : \"row-reverse\",\n }}\n >\n {open ? (\n <IconButton\n disableRipple\n onClick={() => handleDrawerClose()}\n className={classes.DrawerClose_icon}\n >\n {OpenIconComponent ? (\n OpenIconComponent\n ) : (\n <MenuOutlinedIcon fontSize=\"large\" />\n )}\n </IconButton>\n ) : (\n <IconButton\n disableRipple\n aria-label=\"open drawer\"\n onClick={() => handleDrawerOpen()}\n className={classes.DrawerClose_icon}\n >\n {CloseIconComponent ? (\n CloseIconComponent\n ) : (\n <MenuOutlinedIcon fontSize=\"large\" />\n )}\n </IconButton>\n )}\n <CompanyLogo>\n {Boolean(bankLogo) && (\n <div>\n <img\n src={bankLogo ?? \"\"}\n alt=\"bank_logo\"\n className={classes.logo}\n onClick={(e) => {\n e.preventDefault();\n navigate(dashboardUrl ?? \"./dashboard\");\n }}\n />\n <p className={classes.version01}>{logos?.version}</p>\n </div>\n )}\n </CompanyLogo>\n </LogoContainer>\n\n {/* Bank Information - Hidden on mobile */}\n <BankInfoContainer>\n <Stack direction=\"row\" spacing={4}>\n <Box className={classes.heading_user_img_border}>\n <Avatar\n className={classes.heading_user_img}\n alt=\"Remy Sharp\"\n src={Boolean(logos?.bank) ? logos?.bank : BecomePartnerImg}\n />\n </Box>\n </Stack>\n <BankInfoText>\n <Typography\n variant=\"body2\"\n sx={{\n fontWeight: \"bold\",\n fontSize: {\n xs: \"10px\",\n sm: \"11px\",\n md: \"12px\",\n lg: \"15px\",\n xl: \"15px\",\n },\n lineHeight: 1.2,\n overflow: \"hidden\",\n textOverflow: \"unset\",\n whiteSpace: \"unset\",\n color: \"var(--theme-color1)\",\n marginBottom: \"6px\",\n }}\n >\n {authState?.companyName || \"\"}\n </Typography>\n <Typography\n variant=\"caption\"\n sx={{\n fontSize: { xs: \"8px\", sm: \"9px\", md: \"10px\" },\n opacity: 0.9,\n color: \"var(--theme-color3)\",\n lineHeight: 1.2,\n }}\n >\n {t(\"Branch\")}:{authState?.user?.branchCode ?? \"001 \"}-\n {authState?.user?.branch ?? \"\"}\n </Typography>\n <Typography\n variant=\"caption\"\n sx={{\n fontSize: { xs: \"8px\", sm: \"9px\", md: \"10px\" },\n opacity: 0.9,\n color: \"var(--theme-color3)\",\n lineHeight: 1.2,\n }}\n >\n {t(\"WorkingDate\")}:{\" \"}\n {Boolean(authState?.workingDate)\n ? checkDateAndDisplay(\n format(new Date(authState?.workingDate), \"dd/MM/yyyy\")\n // authState?.workingDate ?? \"\"\n )\n : \"not found\"}{\" \"}\n {t(\"LastLoginDate\")} :{\" \"}\n {checkDateAndDisplay(authState?.user?.lastLogin ?? \"\")}\n </Typography>\n </BankInfoText>\n </BankInfoContainer>\n\n {/* Right Section */}\n <RightSection>\n <Stack alignItems={\"flex-end\"}>\n <Stack direction={\"row\"} gap={\"1rem\"}>\n <Typography\n key={blinker}\n className={classes.blinkHard}\n fontSize={\"15px\"}\n color={\"#1C1C1C\"}\n >\n {countdownMessage}\n </Typography>\n {!hideGreetings ? (\n <GreetingText>\n {Greetings()} {authState?.user?.id ?? \"\"} 👋\n </GreetingText>\n ) : null}\n </Stack>\n <Stack direction=\"row\" alignItems={\"center\"}>\n {/* Search - Responsive */}\n {SearchComponent ? (\n <Search>\n <SearchComponent />\n </Search>\n ) : null}\n\n {/* Language Selector - Hidden on small screens */}\n {LanguageComponent ? <LanguageComponent /> : null}\n\n {/* User Actions */}\n <Box\n display={\"flex\"}\n justifyContent={\"space-between\"}\n gap={\"0.8rem\"}\n padding={\"0 0.5rem\"}\n alignItems={\"center\"}\n >\n {optionalComponents.map((component) => {\n let componentProps = { ...component.props };\n if (Array.isArray(componentProps)) componentProps = {};\n return <component.Component {...component.props} />;\n })}\n\n {above1300 && (\n <Tooltip title=\"Logout\" placement=\"bottom\" arrow>\n <IconButton\n onClick={() =>\n typeof handleLogout === \"function\"\n ? handleLogout()\n : null\n }\n color=\"error\"\n sx={{\n backgroundColor: \"rgba(235, 237, 238, 0.45)\",\n borderRadius: \"10px\",\n height: \"36px\",\n width: !above1300 ? \"100%\" : \"auto\",\n padding: \"0 8px\",\n \"&:hover\": {\n background: \"var(--theme-color2)\",\n boxShadow:\n \"rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px\",\n transition: \"all 0.2s ease\",\n },\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n }}\n aria-label=\"logout\"\n >\n <LogoutIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Stack>\n </Stack>\n\n {/* User Avatar */}\n <Stack direction=\"row\" spacing={4}>\n <Box\n className={classes.heading_user_img_border}\n sx={{ cursor: \"pointer\" }}\n >\n <LightTooltip\n title={\n <>\n <div>\n {\" \"}\n {t(\"UserID\")}: {authState?.user?.id}\n </div>\n <div>\n {t(\"Role\")} : {authState?.roleName}\n </div>\n <div>{t(\"LastUnsuccessfulLogin\")} : \"\"</div>\n </>\n }\n placement=\"bottom-start\"\n >\n <Avatar\n className={classes.heading_user_img}\n onClick={() =>\n typeof handleProfile === \"function\"\n ? handleProfile()\n : null\n }\n alt=\"Remy Sharp\"\n src={profilePic ?? \"\"}\n />\n </LightTooltip>\n </Box>\n </Stack>\n </RightSection>\n </Toolbar>\n </StyledAppBar>\n </>\n );\n};\n\nexport const checkDateAndDisplay = (dateStr: string) => {\n // const dt = new Date(dateStr);\n // //@ts-ignore\n // if (dt instanceof Date && !isNaN(dt)) {\n // return dt.toDateString();\n // }\n if (Boolean(dateStr)) {\n return dateStr;\n }\n return \"N/A\";\n};\n","import { Theme } from \"@mui/material\";\r\nimport { makeStyles } from \"@mui/styles\";\r\n\r\nconst drawerWidth = 227;\r\n\r\nexport const useStyles = makeStyles((theme: Theme) => {\r\n return {\r\n drawerPaper: {\r\n boxShadow: \"0 0 10px rgba(0, 0, 0, 0.1)\",\r\n position: \"relative\",\r\n whiteSpace: \"nowrap\",\r\n width: drawerWidth,\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n border: \"none\",\r\n overflow: \"hidden\",\r\n zIndex: 120,\r\n },\r\n drawerPaperClose: {\r\n overflowX: \"hidden\",\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n width: theme.spacing(8),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: theme.spacing(8),\r\n },\r\n },\r\n toolbarIcon: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n zIndex: 9999,\r\n ...theme.mixins.toolbar,\r\n background: \"var(--white)\",\r\n justifyContent: \"center\",\r\n height: \"80px\",\r\n // borderBottom: \"1px dashed #949597\",\r\n },\r\n hrCSS: {\r\n zIndex: 9999,\r\n },\r\n buttonLink: {\r\n backgroundColor: \"transparent\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n textDecoration: \"underline\",\r\n display: \"inline\",\r\n margin: 0,\r\n padding: 0,\r\n \"&:focus\": {\r\n textDecoration: \"none\",\r\n },\r\n \"$:hover\": {\r\n textDecoration: \"none\",\r\n },\r\n },\r\n };\r\n});\r\n\r\n/*\r\n \r\n*/\r\n","import { NavItemType } from \"./navigation\";\r\n\r\nexport const reportMetaData: NavItemType[] = [];\r\n","// import { createTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n// const theme = createTheme();\n\nexport const useStylesBootstrapNav = makeStyles((theme: any) => ({\n navBarCSS: {\n padding: \"4px 1rem \",\n backgroundColor: \"#fff !important\",\n minHeight: \"64px\",\n boxShadow: \"0 3px 6px rgba(0,0,0,0.03)\",\n margin: \"10px\",\n },\n headerDropdown: {\n backgroundColor: \"#fff\",\n minWidth: \"205px\",\n boxShadow: \"0 3px 6px rgba(0,0,0,0.16)\",\n textDecoration: \"none\",\n borderBottom: \"3px solid #26A456\",\n },\n navLinkHeader: {\n color: \"#555\",\n fontSize: \"14px\",\n lineHeight: \"1.2\",\n paddingTop: \"4px\",\n paddingBottom: \"4px\",\n paddingRight: \".5rem\",\n paddingLeft: \".5rem\",\n fontWeight: 600,\n textTransform: \"capitalize\",\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n\n \"& hover\": {\n color: \"#0b6fb8\",\n },\n },\n productLink: {\n color: \"#555\",\n padding: \"0 1rem 8px 1rem\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n cursor: \"pointer\",\n textTransform: \"capitalize\",\n },\n font13: {\n fontSize: \"13px\",\n },\n loginDropdown: {\n width: \"160px\",\n },\n}));\n\nexport const useStylesSideBar = makeStyles((theme: any) => ({\n root: {\n justifyContent: \"center\",\n },\n drawer: {\n margin: \"5px\",\n },\n item: {\n display: \"flex\",\n //borderBottom: \"2px solid #93242433\",\n borderRadius: \"8px\",\n marginLeft: \"7px\",\n marginTop: \"6.5px\",\n width: \"93%\",\n height: \"50px\",\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n background: \"var(--white)\",\n boxShadow: \"3px 6px 6px rgba(93, 95, 121, 0.2)\",\n \"& svg\": {\n // color: theme.palette.primary.main,\n color: \"var(--theme-color1)\",\n },\n \"&:hover\": {\n boxShadow:\n \"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)\",\n background: \"var(--theme-color4)\",\n transition: \"0.3s ease\",\n \"& .__more-btn__\": {\n opacity: 1,\n pointerEvents: \"auto\",\n background: \"#ddd\",\n \"& svg\": {\n fill: \"var(--theme-color1) !important\",\n },\n },\n },\n },\n drawerIconSize: {\n width: \"50px\",\n height: \"50px\",\n padding: \"18px\",\n justifyItems: \"cenetr\",\n },\n button: {\n color: \"#0063A3\",\n padding: \"10px 8px\",\n //justifyContent: \"flex-start\",\n textTransform: \"none\",\n letterSpacing: 0,\n width: \"100%\",\n textAlign: \"left\",\n \"&:hover\": {\n backgroundColor: \"var(--theme-color1)\",\n // boxShadow: \"0px 15px 20px rgb(221 176 176 / 37%)\",\n },\n },\n btnRoot: {\n paddingLeft: \"24px\",\n justifyContent: \"left \",\n },\n navLinks: {\n // height: \"calc(100vh - 78px)\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n // height:\"100px\",\n // backgroundColor: \"rgba(250, 251, 255, 0.9);\",\n // height: \"calc(100vh - 230px)\",\n //background: \"var(--theme-color1)\",\n // marginTop: \"25px\",\n // boxShadow: \"0 3px 6px rgba(255, 99, 71, 0.3)\",\n borderRadius: \"10px\",\n paddingTop: \"5px\",\n \"&>.scrollbar-container\": {\n paddingBottom: \"10px\",\n },\n //margin: \"5px\",\n },\n navLinksforseparateView: {\n overflowY: \"auto\",\n overflowX: \"hidden\",\n height: \"calc(100vh - 180px)\",\n // height:\"auto\",\n paddingTop: \"10px\",\n },\n nestedMenuLevel1: {\n paddingLeft: \"20px\",\n marginTop: \"11px\",\n paddingRight: theme.spacing(3),\n height: \"auto\",\n fontSize: \"13px\",\n \"& div > svg\": {\n fontSize: \"14px\",\n },\n },\n nestedMenuLevel2: {\n paddingLeft: \"20px\",\n marginTop: \"11px\",\n fontSize: \"12px\",\n \"& div > svg\": {\n fontSize: \"9px\",\n },\n },\n listIcon: {\n minWidth: \"30px !important\",\n justifyItems: \"center\",\n color: \"var(--theme-color6)\",\n fontWeight: 700,\n fontSize: \"18px\",\n },\n link: {\n fontSize: \"1rem \",\n marginTop: \"2px\",\n marginBottom: \"2px\",\n textOverflow: \"ellipsis\",\n color: \"var(--theme-color1)\",\n marginLeft: \"15px\",\n whiteSpace: \"break-spaces\",\n \"& span\": {\n fontWeight: 400,\n whiteSpace: \"break-spaces\",\n },\n \"& p\": {\n color: \"var(--theme-color3)\",\n fontweight: 400,\n },\n },\n linktext: {\n backgroundColor: \"var(--white)\",\n \"&:hover\": {\n background: \"var(--theme-color1)\",\n \"& div\": {\n color: \"var(--white) !important\",\n },\n \"& div > svg\": {\n color: \"var(--white) !important\",\n },\n },\n },\n faSmall: {\n fontSize: \"13px \",\n },\n openList: {\n \":not(activeMenuItem)\": {\n \"& > div\": {\n backgroundColor: \"rgba(0, 0, 0, 0.04)\",\n },\n \"& *\": {\n color: \"var(--white)\",\n },\n },\n },\n openCurrent: {\n backgroundColor: \"var(--theme-color1)\",\n \"& *\": {\n color: \"var(--white)\",\n },\n \"&:hover\": {\n backgroundColor: \"var(--theme-color1)\",\n },\n },\n slimList: {\n paddingTop: \"15px\",\n paddingBottom: \"13px\",\n height: \"auto\",\n paddingLeft: \"15px\",\n justifyItems: \"center\",\n },\n activeMenuItem: {\n backgroundColor: \"var(--theme-color1)!important \", //\"var(--white)!important\",\n\n \"& > div\": {\n color: \"var(--white)!important\",\n },\n \"& svg\": {\n color: \"var(--theme-color4)\",\n },\n \"& hover\": {\n \"& > div\": {\n color: \"var(--theme-color3)\",\n },\n },\n \"& p\": {\n color: \"var(--theme-color4)\",\n },\n },\n}));\n","import { FC, useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport clsx from \"clsx\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { NavItemType, SideBarRendererType } from \"./types\";\nimport { useStylesSideBar } from \"./style\";\nimport ScrollBar from \"react-perfect-scrollbar\";\nimport {\n Button,\n Collapse,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Tooltip,\n} from \"@mui/material\";\nimport { ExpandLess, ExpandMore } from \"@mui/icons-material\";\nimport { usePopupContext } from \"@acuteinfo/common-base\";\nimport { useTranslation } from \"react-i18next\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nlet localdrawerOpen = true;\n\ninterface SideBarNavProps extends SideBarRendererType {\n rootUrl: string;\n dashboardUrl?: string;\n navigate: NavigateFunction;\n authState?: any;\n handleListItemClick?: (flag: string) => void;\n}\n\nexport const SideBarNav: FC<SideBarNavProps> = ({\n metaData,\n handleDrawerOpen,\n drawerOpen,\n setView,\n slimSize,\n setNewFilterData,\n setNewFilterView,\n isFromSeparetView = false,\n rootUrl,\n dashboardUrl,\n navigate,\n handleListItemClick,\n authState,\n}) => {\n const classes = useStylesSideBar();\n let result: JSX.Element[] | null = null;\n localdrawerOpen = drawerOpen;\n if (Array.isArray(metaData.navItems)) {\n result = metaData.navItems.map((one) => {\n if (one?.seperateView === true) {\n return (\n <SeperateListView\n key={one.label}\n item={one}\n setView={setView}\n classes={classes}\n level={0}\n slimSize={slimSize}\n setNewFilterData={setNewFilterData}\n setNewFilterView={setNewFilterView}\n handleListItemClick={handleListItemClick}\n />\n );\n } else if (Array.isArray(one.children)) {\n return (\n <NestedListItem\n key={one.label}\n item={one}\n classes={classes}\n level={0}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={drawerOpen}\n slimSize={slimSize}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n handleListItemClick={handleListItemClick}\n />\n );\n } else {\n return (\n <SingleListItem\n key={one.label}\n item={one}\n classes={classes}\n level={0}\n slimSize={slimSize}\n drawerOpen={drawerOpen}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n />\n );\n }\n });\n }\n return (\n <List\n component=\"nav\"\n disablePadding\n className={\n isFromSeparetView ? classes.navLinksforseparateView : classes.navLinks\n }\n >\n <ScrollBar>{result}</ScrollBar>\n </List>\n );\n};\n\nconst SeperateListView: FC<{\n item: NavItemType;\n setView: any;\n classes: ReturnType<typeof useStylesSideBar>;\n level: number;\n slimSize?: boolean;\n setNewFilterData?: any;\n setNewFilterView?: any;\n handleListItemClick?: (flag: string) => void;\n}> = ({\n item,\n setView,\n level,\n classes,\n slimSize,\n setNewFilterData,\n setNewFilterView,\n handleListItemClick,\n}) => {\n const [code, setCode] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n setCode(i18n.language);\n }, [t]);\n let labelStart: any =\n (item.label || \"\").toLowerCase().substring(0, 1) || \"circle\";\n // const icon = item.icon ? (\n // <ListItemIcon className={classes.listIcon}>\n // <FontAwesomeIcon icon={[\"fas\", labelStart]} />\n // </ListItemIcon>\n // ) : null;\n\n const icon =\n item.icon?.toLowerCase() !== \"process.gif\" && item.icon ? (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", item.icon]} />\n </ListItemIcon>\n ) : (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", labelStart]} />\n </ListItemIcon>\n );\n\n const levelClassName =\n level === 1\n ? classes.nestedMenuLevel1\n : level === 2\n ? classes.nestedMenuLevel2\n : \"\";\n\n return (\n <ListItem\n button\n disableGutters\n sx={{ position: \"relative\", overflow: \"hidden\" }}\n className={clsx({\n [classes.item]: true,\n [levelClassName]: Boolean(levelClassName),\n [classes.slimList]: Boolean(slimSize),\n [classes.drawerIconSize]: !localdrawerOpen,\n })}\n onClick={() => {\n if (item.viewName === \"newfilterview\" && Array.isArray(item.children)) {\n setNewFilterView({\n label: item.label,\n placeholder: \"Search \" + item.label + \" Screen...\",\n });\n let newChield = item.children.map((item1) => {\n return { ...item1, secondaryLabel: item1.user_code };\n });\n setNewFilterData(newChield);\n }\n setView(item.viewName);\n }}\n >\n {typeof handleListItemClick === \"function\" ? (\n <Button\n className=\"__more-btn__\"\n title={t(\"OpenScreensList\")}\n sx={{\n background: \"#ddd\",\n outline: \"none\",\n border: \"none\",\n padding: 0,\n position: \"absolute\",\n top: 0,\n right: 0,\n minWidth: \"38px\",\n height: \"20px\",\n lineHeight: \"10px\",\n cursor: \"pointer\",\n zIndex: 2,\n transition: \"all 0.3s ease-in-out\",\n borderRadius: \"0 0 0 8px\",\n boxShadow: \"0 1px 2px rgba(0,0,0,.2)\",\n opacity: 0,\n pointerEvents: \"none\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n handleListItemClick(item.label);\n }}\n >\n <MoreHorizIcon fontSize=\"large\" color=\"secondary\" />\n </Button>\n ) : null}\n <Tooltip\n title={t(item.label)}\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <span>{icon}</span>\n </Tooltip>\n {(localdrawerOpen && item.label.length > 27) || !Boolean(icon) ? (\n <Tooltip\n title={item.label}\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <ListItemText\n key={code}\n primary={t(item.label)}\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText>\n </Tooltip>\n ) : localdrawerOpen ? (\n <ListItemText\n key={code}\n primary={t(item.label)}\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText>\n ) : null}\n </ListItem>\n );\n};\n\nconst SingleListItem: FC<{\n item: NavItemType;\n classes: ReturnType<typeof useStylesSideBar>;\n level: number;\n slimSize?: boolean;\n drawerOpen?: any;\n rootUrl: string;\n dashboardUrl?: string;\n navigate: NavigateFunction;\n}> = ({\n item,\n classes,\n level,\n slimSize,\n drawerOpen,\n rootUrl,\n dashboardUrl,\n navigate,\n}) => {\n const [code, setCode] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n setCode(i18n.language);\n }, [t]);\n const isActiveMenu = isActiveMenuFromhref(\n window.location?.pathname ?? \"\",\n item?.href ?? \"\",\n item?.navigationProps,\n rootUrl,\n dashboardUrl,\n );\n if (isActiveMenu) {\n // GeneralAPI.setDocumentName(item.label);\n let titleText = document.title;\n document.title = titleText.split(\" - \")[0] + \" - \" + item.label;\n }\n let labelStart: any =\n (item.label || \"\").toLowerCase().substring(0, 1) || \"circle\";\n\n const icon =\n item.icon.toLowerCase() === \"process.gif\" || !Boolean(item.icon) ? (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", labelStart]} />\n </ListItemIcon>\n ) : (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", item.icon]} />\n </ListItemIcon>\n );\n const levelClassName =\n level === 1\n ? classes.nestedMenuLevel1\n : level === 2\n ? classes.nestedMenuLevel2\n : \"\";\n return (\n <ListItem\n button\n // disabled ={item?.allow_open !== \"Y\"}\n disableGutters\n className={clsx({\n [classes.item]: true,\n [levelClassName]: Boolean(levelClassName),\n [classes.slimList]: Boolean(slimSize),\n [classes.activeMenuItem]: isActiveMenu,\n [classes.drawerIconSize]: !localdrawerOpen,\n })}\n onClick={async (e) => {\n e.preventDefault();\n if (item.isRouterLink) {\n let path = item.href;\n path =\n item.href?.substring(0, 1) === \"/\"\n ? item.href.substring(1)\n : item.href;\n if (item.passNavigationPropsAsURLParmas) {\n let urlParms = new URLSearchParams(item?.navigationProps);\n navigate(`${path}?${urlParms.toString()}`);\n } else {\n navigate(`${path}` as string, {\n state: { ...item?.navigationProps },\n });\n }\n } else if (Boolean(item.href)) {\n window.open(item.href, item.rel ?? \"_newtab\");\n }\n }}\n >\n <Tooltip\n title={item.label}\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <span>{icon}</span>\n </Tooltip>\n {/* {console.log(localdrawerOpen, item.label.length)} */}\n {(localdrawerOpen && item.label.length > 27) || !Boolean(icon) ? (\n <Tooltip\n title={\n item.system_code\n ? t(item.system_code, { defaultValue: item.label })\n : t(item.label)\n }\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <ListItemText\n key={code}\n primary={\n item.system_code\n ? t(item.system_code, { defaultValue: item.label })\n : t(item.label)\n }\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText>\n </Tooltip>\n ) : localdrawerOpen ? (\n <ListItemText\n key={code}\n primary={t(\n item?.navigationProps\n ? `reportID${item?.system_code ?? \"\"}`\n : item?.system_code || item?.label || \"\",\n { defaultValue: item?.label ?? \"\" },\n )}\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText>\n ) : null}\n {/* <ListItemText\n primary={item.label}\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText> */}\n </ListItem>\n );\n};\n\nconst NestedListItem: FC<{\n item: NavItemType;\n classes: ReturnType<typeof useStylesSideBar>;\n level: number;\n handleDrawerOpen: Function;\n drawerOpen: boolean;\n slimSize?: boolean;\n rootUrl: string;\n dashboardUrl?: string;\n navigate: NavigateFunction;\n handleListItemClick?: (flag: string) => void;\n}> = ({\n item,\n classes,\n level,\n handleDrawerOpen,\n drawerOpen,\n slimSize,\n rootUrl,\n navigate,\n handleListItemClick,\n}) => {\n const [code, setCode] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n setCode(i18n.language);\n }, [t]);\n const [open, setOpen] = useState(false);\n const handleClick = () => {\n if (!drawerOpen) {\n // handleDrawerOpen();\n }\n setOpen(!open);\n };\n const childrens = item.children?.map((one) => {\n if (Array.isArray(one.children)) {\n return (\n <NestedListItem\n key={one.label}\n item={one}\n classes={classes}\n level={level + 1}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={drawerOpen}\n slimSize={slimSize}\n rootUrl={rootUrl}\n navigate={navigate}\n handleListItemClick={handleListItemClick}\n />\n );\n } else {\n return (\n <SingleListItem\n key={one.label}\n item={one}\n classes={classes}\n level={level + 1}\n slimSize={slimSize}\n rootUrl={rootUrl}\n navigate={navigate}\n />\n );\n }\n });\n let labelStart: any =\n (item.label || \"\").toLowerCase().substring(0, 1) || \"circle\";\n\n const icon =\n item.icon?.toLowerCase() === \"process.gif\" || !Boolean(item.icon) ? (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", labelStart]} />\n </ListItemIcon>\n ) : (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", item.icon]} />\n </ListItemIcon>\n );\n\n const levelClassName =\n level === 1\n ? classes.nestedMenuLevel1\n : level === 2\n ? classes.nestedMenuLevel2\n : \"\";\n return (\n <>\n <ListItem\n button\n onClick={handleClick}\n disableGutters\n sx={{ position: \"relative\", overflow: \"hidden\" }}\n className={\n open\n ? clsx({\n [classes.item]: true,\n [levelClassName]: Boolean(levelClassName),\n [classes.slimList]: Boolean(slimSize),\n [classes.openCurrent]: true,\n [classes.drawerIconSize]: !localdrawerOpen,\n })\n : clsx({\n [classes.item]: true,\n [levelClassName]: Boolean(levelClassName),\n [classes.slimList]: Boolean(slimSize),\n [classes.drawerIconSize]: !localdrawerOpen,\n })\n }\n >\n {typeof handleListItemClick === \"function\" ? (\n <Button\n className=\"__more-btn__\"\n title={t(\"OpenScreensList\")}\n sx={{\n background: \"#ddd\",\n outline: \"none\",\n border: \"none\",\n padding: 0,\n position: \"absolute\",\n top: 0,\n right: 0,\n minWidth: \"38px\",\n height: \"20px\",\n lineHeight: \"10px\",\n cursor: \"pointer\",\n zIndex: 2,\n transition: \"all 0.3s ease-in-out\",\n borderRadius: \"0 0 0 8px\",\n boxShadow: \"0 1px 2px rgba(0,0,0,.2)\",\n opacity: 0,\n pointerEvents: \"none\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n handleListItemClick(item.label);\n }}\n >\n <MoreHorizIcon fontSize=\"large\" color=\"secondary\" />\n </Button>\n ) : null}\n\n <Tooltip\n title={t(item.label)}\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <span>{icon}</span>\n </Tooltip>\n {/* {icon} */}\n {drawerOpen || !Boolean(icon) ? (\n <>\n <ListItemText\n key={code}\n primary={t(item.label)}\n secondary={item.secondaryLabel ?? null}\n color=\"primary\"\n className={classes.link}\n ></ListItemText>\n {open ? <ExpandLess /> : <ExpandMore />}\n </>\n ) : null}\n </ListItem>\n\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <List\n component=\"div\"\n disablePadding\n className={open ? classes.openList : \"\"}\n >\n {childrens}\n </List>\n </Collapse>\n </>\n );\n};\nconst isActiveMenuFromhref = (\n location,\n menuhref,\n navigationProps,\n rootUrl,\n dashboardUrl,\n) => {\n if (\n (location === `/${rootUrl}` || location === `/${rootUrl}/`) &&\n menuhref === dashboardUrl\n ) {\n return true;\n } else if (menuhref === \"report\") {\n try {\n let urlParms = new URLSearchParams(navigationProps);\n if (\"?\" + urlParms.toString() === window.location.search) {\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n } else if (\n location !== `/${rootUrl}` &&\n location !== \"/\" &&\n Boolean(menuhref) &&\n location.includes(menuhref)\n ) {\n return true;\n }\n return false;\n};\n","import { NavItemType } from \"./types\";\r\n\r\nconst matchByValue = (search, tags, navItem) => {\r\n if (!Array.isArray(tags)) {\r\n tags = [tags];\r\n }\r\n return tags.some((one) =>\r\n navItem[one]\r\n ?.toLocaleLowerCase?.()\r\n ?.includes(search?.toLocaleLowerCase?.()),\r\n );\r\n};\r\n\r\nexport const filterMetaDataByValue = (\r\n searchString: string,\r\n navItems: NavItemType[],\r\n tagsToSearch?: string[],\r\n): NavItemType[] => {\r\n let newNavItems: NavItemType[] = [];\r\n for (let i = 0; i < navItems.length; i++) {\r\n if (matchByValue(searchString, tagsToSearch, navItems[i])) {\r\n let { children, ...newItem } = navItems[i];\r\n if (Array.isArray(children) && children.length > 0) {\r\n let newChildren = filterMetaDataByValue(\r\n searchString,\r\n children,\r\n tagsToSearch,\r\n );\r\n if (newChildren.length > 0) {\r\n newNavItems.push({ ...newItem, children: newChildren });\r\n }\r\n } else {\r\n newNavItems.push({ ...newItem });\r\n }\r\n }\r\n }\r\n return newNavItems;\r\n};\r\n","import { FC, useEffect, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { SearchBar } from \"@acuteinfo/common-base\";\nimport ArrowBackIosNewIcon from \"@mui/icons-material/ArrowBackIosNew\";\nimport { useStylesSideBar } from \"./style\";\nimport { filterMetaDataByValue } from \"./filterMetaData\";\nimport { SideBarNav } from \"./sideBarNavigation\";\nimport { SideBarRendererType } from \"./types\";\nimport { ListItem, ListItemIcon, ListItemText } from \"@mui/material\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface NewSideBarNav extends SideBarRendererType {\n label: string;\n icon?: any;\n placeholder?: any;\n rootUrl: string;\n dashboardUrl?: string;\n navigate: NavigateFunction;\n MessageBox?: any;\n}\n\nexport const SearchViewNavigation: FC<NewSideBarNav> = ({\n metaData,\n handleDrawerOpen,\n drawerOpen,\n setView,\n label,\n icon,\n placeholder = \"Search Reports...\",\n rootUrl,\n dashboardUrl,\n navigate,\n MessageBox,\n}) => {\n const [code, setCode] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n setCode(i18n.language);\n }, [t]);\n\n const [search, setSearch] = useState(\"\");\n const translatedMetaData = useMemo(() => {\n return metaData.navItems.map((item) => ({\n ...item,\n label: item.system_code\n ? t(item.system_code, { defaultValue: item.label })\n : item.label,\n }));\n }, [metaData.navItems, t]);\n\n const filteredMetaData = useMemo(() => {\n return filterMetaDataByValue(search, translatedMetaData, [\n \"label\",\n \"secondaryLabel\",\n ]);\n }, [search, translatedMetaData]);\n\n const classes = useStylesSideBar();\n\n const myIcon = icon ? (\n <ListItemIcon className={classes.listIcon}>\n <ArrowBackIosNewIcon />\n </ListItemIcon>\n ) : null;\n const handleClick = () => {\n if (!drawerOpen) {\n handleDrawerOpen();\n }\n };\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n <ListItem\n button\n className={clsx({\n [classes.item]: true,\n [classes.nestedMenuLevel1]: true,\n [classes.linktext]: true,\n })}\n onClick={() => setView(\"/\")}\n sx={{ width: !drawerOpen ? \"80% !important\" : \"auto\" }}\n >\n {myIcon}\n <ListItemText key={code} primary={t(label)} className={classes.link} />\n </ListItem>\n {/* <div onClick={handleDrawerOpen}> */}\n <SearchBar\n sx={{ overflow: \"hidden\" }}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n onClick={handleClick}\n placeholder={\n Boolean(placeholder)\n ? t(\"SidebarPlaceholder\", {\n defaultValue: placeholder,\n searchLabel: t(placeholder?.split(\" \")?.[1]) ?? \"\",\n })\n : \"Search Reports...\"\n }\n autoFocus={drawerOpen}\n />\n {/* </div> */}\n <SideBarNav\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={drawerOpen}\n setView={setView}\n metaData={{\n navItems: filteredMetaData,\n config: { rel: \"\", target: \"_blank\" },\n }}\n slimSize={true}\n isFromSeparetView={true}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n MessageBox={MessageBox}\n />\n </div>\n );\n};\n","import { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n faHandsHelping,\r\n faUsers,\r\n faBars,\r\n faBalanceScale,\r\n faHandHoldingHeart,\r\n faTasks,\r\n faCog,\r\n faHome,\r\n faTh,\r\n faUsersCog,\r\n faCircle,\r\n faUserCircle,\r\n faHashtag,\r\n faThumbtack,\r\n faSquare,\r\n faLink,\r\n faQuestion,\r\n faPlus,\r\n faTable,\r\n faLocationArrow,\r\n faHeadset,\r\n faGears,\r\n faArrowDown,\r\n faArrowUp,\r\n faSpinner,\r\n faCircleExclamation,\r\n faRotateRight,\r\n faUserLock,\r\n faUserClock,\r\n faGripHorizontal,\r\n faBarsProgress,\r\n faFileExport,\r\n faFileLines,\r\n faGear,\r\n faHeadphones,\r\n faUsersGear,\r\n faMessage,\r\n faUnlock,\r\n faUserPlus,\r\n faUserCheck,\r\n faKey,\r\n faIdCard,\r\n faIdBadge,\r\n faCheck,\r\n faCheckDouble,\r\n faCircleCheck,\r\n faPenToSquare,\r\n faCircleXmark,\r\n faUserTag,\r\n faAddressCard,\r\n faChartColumn,\r\n faUserPen,\r\n faHandHolding,\r\n faHandHoldingMedical,\r\n faObjectGroup,\r\n faTowerCell,\r\n faTowerObservation,\r\n faBuilding,\r\n faMailBulk,\r\n faLandmarkFlag,\r\n faCreditCard,\r\n faHospitalSymbol,\r\n faPlugCircleBolt,\r\n faCodeBranch,\r\n faPersonCircleCheck,\r\n faBank,\r\n faServer,\r\n faNotesMedical,\r\n faA,\r\n faB,\r\n faC,\r\n faD,\r\n faE,\r\n faF,\r\n faG,\r\n faH,\r\n faI,\r\n faJ,\r\n faK,\r\n faL,\r\n faM,\r\n faN,\r\n faO,\r\n faP,\r\n faQ,\r\n faR,\r\n faS,\r\n faT,\r\n faU,\r\n faV,\r\n faW,\r\n faX,\r\n faY,\r\n faZ,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nlibrary.add(\r\n faHandsHelping,\r\n faUsers,\r\n faBars,\r\n faBalanceScale,\r\n faHandHoldingHeart,\r\n faTasks,\r\n faCog,\r\n faHome,\r\n faTh,\r\n faUsersCog,\r\n faCircle,\r\n faUserCircle,\r\n faHashtag,\r\n faThumbtack,\r\n faSquare,\r\n faLink,\r\n faQuestion,\r\n faPlus,\r\n faTable,\r\n faLocationArrow,\r\n faHeadset,\r\n faGears,\r\n faArrowDown,\r\n faArrowUp,\r\n faSpinner,\r\n faCircleExclamation,\r\n faRotateRight,\r\n faUserLock,\r\n faUserClock,\r\n faGripHorizontal,\r\n faFileLines,\r\n faGear,\r\n faHeadphones,\r\n faUsersGear,\r\n faMessage,\r\n faUnlock,\r\n faUserPlus,\r\n faUserCheck,\r\n faKey,\r\n faIdCard,\r\n faIdBadge,\r\n faCheck,\r\n faCheckDouble,\r\n faCircleCheck,\r\n faCircleXmark,\r\n faUserTag,\r\n faAddressCard,\r\n faChartColumn,\r\n faUserPen,\r\n faHandHolding,\r\n faHandHoldingMedical,\r\n faObjectGroup,\r\n faTowerCell,\r\n faTowerObservation,\r\n faBuilding,\r\n faMailBulk,\r\n faLandmarkFlag,\r\n faCreditCard,\r\n faHospitalSymbol,\r\n faPlugCircleBolt,\r\n faCodeBranch,\r\n faPersonCircleCheck,\r\n faBank,\r\n faServer,\r\n faNotesMedical,\r\n faPenToSquare,\r\n faBarsProgress,\r\n faFileExport,\r\n faA,\r\n faB,\r\n faC,\r\n faD,\r\n faE,\r\n faF,\r\n faG,\r\n faH,\r\n faI,\r\n faJ,\r\n faK,\r\n faL,\r\n faM,\r\n faN,\r\n faO,\r\n faP,\r\n faQ,\r\n faR,\r\n faS,\r\n faT,\r\n faU,\r\n faV,\r\n faW,\r\n faX,\r\n faY,\r\n faZ,\r\n);\r\n","import { NavBarMetaDataType, NavItemType } from \"./navigation\";\r\nimport { cloneDeep } from \"lodash\";\r\n\r\nexport const transformMetaDataAsPerRole = (\r\n metaData: NavBarMetaDataType,\r\n role: number,\r\n branches: string[],\r\n company: string,\r\n access: any,\r\n products: string[],\r\n) => {\r\n let navItems = filterMetaData(\r\n metaData.navItems,\r\n role,\r\n branches,\r\n company,\r\n access,\r\n products,\r\n );\r\n //console.log(navItems);\r\n let newnavItem = navItems.map((item) => {\r\n let { children, ...newItem } = item;\r\n if (Array.isArray(children) && children.length > 5) {\r\n if (!Boolean(newItem.seperateView)) {\r\n newItem.seperateView = true;\r\n newItem.viewName = \"newfilterview\";\r\n //console.log(newItem);\r\n }\r\n }\r\n return { ...newItem, children: children };\r\n });\r\n return {\r\n config: metaData.config,\r\n navItems: newnavItem,\r\n };\r\n};\r\nexport const transformMetaDataAsPerMenuRights = (\r\n metaData: NavBarMetaDataType,\r\n authState: any,\r\n) => {\r\n let newMetadata = cloneDeep(metaData) as NavBarMetaDataType;\r\n let NavItem = filterMetaDataAsperRights(newMetadata.navItems, authState);\r\n newMetadata.navItems = NavItem;\r\n return newMetadata;\r\n};\r\nconst filterMetaDataAsperRights = (navItems, accessgroup) => {\r\n let newNavItems: NavItemType[] = [];\r\n for (let i = 0; i < navItems.length; i++) {\r\n let { children, ...newItem } = navItems[i];\r\n if (Array.isArray(children) && children.length > 0) {\r\n let newChildren = filterMetaDataAsperRights(children, accessgroup);\r\n if (newChildren.length > 0) {\r\n newNavItems.push({ ...newItem, children: newChildren });\r\n }\r\n } else {\r\n //if(newItem?.doccd) ///condition\r\n ///newNavItems.push({ ...newItem });\r\n }\r\n }\r\n return newNavItems;\r\n};\r\nconst matchBranches = (userBranches, accessBranches) => {\r\n if (!Array.isArray(accessBranches) || !Array.isArray(userBranches)) {\r\n return true;\r\n }\r\n if (accessBranches.length <= 0 || userBranches.length <= 0) {\r\n return true;\r\n }\r\n for (const one of accessBranches) {\r\n if (userBranches.indexOf(one) >= 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nconst matchComany = (userCompany, accessCompany) => {\r\n if (!Array.isArray(accessCompany) || !Boolean(userCompany)) {\r\n return true;\r\n }\r\n if (accessCompany.length <= 0) {\r\n return true;\r\n }\r\n if (accessCompany.indexOf(userCompany) >= 0) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst matchRoles = (userRole, accessRoles) => {\r\n if (!Array.isArray(accessRoles) || typeof userRole !== \"number\") {\r\n return true;\r\n }\r\n if (accessRoles.length <= 0) {\r\n return true;\r\n }\r\n if (accessRoles.indexOf(userRole) >= 0) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst matchInvisibleRoles = (userRole, accessRoles) => {\r\n if (!Array.isArray(accessRoles) || typeof userRole !== \"number\") {\r\n return true;\r\n }\r\n if (accessRoles.length <= 0) {\r\n return true;\r\n }\r\n if (accessRoles.indexOf(userRole) >= 0) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nconst matchProducts = (userProducts, accessProducts) => {\r\n if (!Array.isArray(accessProducts) || !Array.isArray(userProducts)) {\r\n return true;\r\n }\r\n if (accessProducts.length <= 0 || userProducts.length <= 0) {\r\n return true;\r\n }\r\n\r\n for (const one of accessProducts) {\r\n if (userProducts.indexOf(one) >= 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\nconst ishrefisNotNull = (item) => {\r\n if (\r\n !(Array.isArray(item.children) && item.children.length > 0) &&\r\n !Boolean(item.href)\r\n ) {\r\n //console.log(item);\r\n return false;\r\n }\r\n return true;\r\n};\r\nconst filterMetaData = (\r\n navItems: NavItemType[],\r\n role: number,\r\n branches: string[],\r\n company: string,\r\n access: any,\r\n products: string[],\r\n): NavItemType[] => {\r\n let newNavItems: NavItemType[] = [];\r\n for (let i = 0; i < navItems.length; i++) {\r\n if (\r\n matchRoles(Number(role), navItems[i].visibleToRoles) &&\r\n matchComany(company, navItems[i].visibleToCompanies) &&\r\n matchBranches(branches, navItems[i].visibleToBranches) &&\r\n matchInvisibleRoles(Number(role), navItems[i].invisibleToRoles) &&\r\n matchProducts(products, navItems[i].visibleToProducts) &&\r\n ishrefisNotNull(navItems[i])\r\n ) {\r\n let { children, ...newItem } = navItems[i];\r\n if (Array.isArray(children) && children.length > 0) {\r\n let newChildren = filterMetaData(\r\n children,\r\n role,\r\n branches,\r\n company,\r\n access,\r\n products,\r\n );\r\n if (newChildren.length > 0) {\r\n newNavItems.push({ ...newItem, children: newChildren });\r\n }\r\n } else {\r\n newNavItems.push({ ...newItem, secondaryLabel: newItem.system_code });\r\n }\r\n }\r\n }\r\n return newNavItems;\r\n};\r\n","import { FC, useMemo, useState } from \"react\";\nimport { reportMetaData } from \"./reportMetaData\";\nimport { SideBarNav } from \"./navigation\";\nimport { SearchViewNavigation } from \"./navigation/searchViewNavigation\";\nimport \"./icons\";\nimport { transformMetaDataAsPerRole } from \"./transformer\";\n\n/* eslint-disable react-hooks/exhaustive-deps */\nexport const SideBar = ({\n authState,\n handleDrawerOpen,\n open,\n rootUrl,\n dashboardUrl = \"dashboard\",\n navigate,\n handleListItemClick,\n}: any) => {\n const [view, setView] = useState(\"/\");\n const [NewFilterView, setNewFilterView] = useState<any>({});\n const [NewFilterData, setNewFilterData] = useState([]);\n\n const branches = useMemo(() => {\n let myBranches = authState?.access?.entities?.Branch ?? [];\n if (Array.isArray(myBranches) && myBranches.length >= 0) {\n return myBranches.map((one) => one.branchCode);\n } else {\n return [];\n }\n }, []);\n\n const products = useMemo(() => {\n let myProducts = authState?.access?.products ?? [];\n if (Array.isArray(myProducts) && myProducts.length >= 0) {\n return myProducts.map((one) => one.categoryCode);\n } else {\n return [];\n }\n }, []);\n let newMetaData = { navItems: authState.menulistdata };\n let filteredMetaDataSideBar = transformMetaDataAsPerRole(\n newMetaData,\n Number(authState.role),\n branches,\n authState.companyID,\n authState.access,\n products,\n );\n\n let filteredReportsMetaData = transformMetaDataAsPerRole(\n {\n config: { rel: \"\", target: \"_blank\" },\n navItems: reportMetaData,\n },\n Number(authState.role),\n branches,\n authState.companyID,\n authState.access,\n products,\n );\n return view === \"report\" ? (\n <SearchViewNavigation\n metaData={filteredReportsMetaData}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={open}\n setView={setView}\n label=\"Reports\"\n icon=\"table\"\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n />\n ) : view === \"newfilterview\" ? (\n <SearchViewNavigation\n metaData={{\n config: { rel: \"\", target: \"_blank\" },\n navItems: NewFilterData,\n }}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={open}\n setView={setView}\n label={NewFilterView?.label ?? \"Reports\"}\n icon=\"table\"\n placeholder={NewFilterView?.placeholder}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n />\n ) : (\n <>\n <SideBarNav\n metaData={filteredMetaDataSideBar}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={open}\n setView={setView}\n slimSize={true}\n setNewFilterData={setNewFilterData}\n setNewFilterView={setNewFilterView}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n authState={authState}\n handleListItemClick={handleListItemClick}\n />\n </>\n );\n};\n","import React from \"react\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport clsx from \"clsx\";\nimport { useStyles } from \"./style\";\nimport { Drawer } from \"@mui/material\";\nimport { SideBar } from \"./sideBar\";\n\ninterface SidebarWrapperProps {\n authState: any;\n navigate: NavigateFunction;\n handleDrawerOpen: Function;\n handleDrawerClose?: Function;\n open: boolean;\n rootUrl: string;\n dashboardUrl?: string;\n handleListItemClick?: (flag: string) => void;\n}\n\nexport const SidebarWrapper: React.FC<SidebarWrapperProps> = (props) => {\n const classes = useStyles();\n return (\n <Drawer\n variant=\"permanent\"\n sx={{\n height: \"100dvh\",\n }}\n classes={{\n paper: clsx(\n classes.drawerPaper,\n !props.open && classes.drawerPaperClose,\n ),\n }}\n open={props.open}\n >\n <div className={classes.toolbarIcon}></div>\n <SideBar {...props} />\n </Drawer>\n );\n};\n"],"names":["useStyles","makeStyles","theme","wrapper","minHeight","boxShadow","background","loginEmp","padding","spacing","display","maxWidth","margin","borderRadius","breakpoints","down","width","formWrap","marginTop","loginBtn","minWidth","fontSize","border","color","fontWeight","letterSpacing","textTransform","alignSelf","OTPTimer","palette","primary","main","resendLink","cursor","secondary","logo","marginBottom","loginLeft","loginRight","loginImg","verifybutton","otpButtons","divflex","otpinputpadding","marginRight","height","ibtnvisible","btnvisibleoff","OTPalignName","alignItems","justifyContent","fonWeight","lineHeight","resendOTPalign","resendbtnLink","textDecoration","dialogTitleClass","lang_svg","dialogContent","whiteSpace","button","flexDirection","UsernamePasswordField","classes","loginState","verifyUsernamePassword","forgotPasswordEndpoint","preventSpecialChars","input","setInput","useState","userName","password","showPasswordTime","setShowPasswordTime","blurred","setBlurred","showPassword","Date","now","forceUpdate","timerRef","useRef","t","useTranslation","useEffect","clearTimeout","current","handleChange","event","name","target","value","split","some","char","includes","isUsernameError","isPasswordError","values","inputRef","inputPassRef","inputButtonRef","timeoutCd","setTimeout","focus","old","otpmodelClose","_jsx","Fragment","children","Container","_jsxs","Grid","style","paddingTop","fontStyle","className","TextField","autoFocus","label","placeholder","String","fullWidth","type","trimStart","onChange","error","helperText","userMessageforusername","InputLabelProps","shrink","disabled","loading","autoComplete","onKeyDown","e","key","click","inputProps","maxLength","repeat","onBlur","onFocus","userMessageforpassword","InputProps","endAdornment","InputAdornment","position","IconButton","onClick","onMouseDown","preventDefault","Visibility","VisibilityOff","flex","textAlign","href","GradientButton","toLowerCase","ref","endicon","undefined","rotateIcon","CircularProgress","size","thickness","OTPModel","OTPResendRequest","open","handleClose","VerifyOTP","OTPError","setOTPError","previousStep","setNewRequestID","id","otpresendCount","resendFlag","OTP","setOTP","btnshow","setbtnshow","resendotpLoading","setResendotpLoading","enqueueSnackbar","useSnackbar","Boolean","authType","defaultValue","otpSentText","username","charAt","toUpperCase","slice","description","ResendOTP","onResendClick","async","status","data","message","comapanyCD","branchCD","contactUser","otpValidFor","TRAN_CD","variant","renderButton","buttonProps","remainingTime","other","clsx","remainingtime","renderTime","parseInt","maxTime","OTPInput","OTPLength","otpType","otploading","secure","FormHelperText","gap","textColor","sx","opacity","transform","transition","starticon","length","OTPModelForm","handleCloseEvent","forgotOtpSentText","auth_type","company_ID","branch_cd","VerifyFinger","verifyFinger","Typography","isBiometricError","eFingerUi","fingerUi","FingerprintSharpIcon","borderBottom","FingerIcon","isScanning","_Fragment","biometric","userMessage","keyCode","matchFinger","rows","captureFinger","Promise","resolve","reject","JSON","parse","forEach","element","i","MFS100Request","GalleryTemplate","encryptString","keyBytes","CryptoJS","PBKDF2","keySize","iterations","console","log","toString","lib","WordArray","init","words","iv","splice","dec","AES","decrypt","ciphertext","enc","Base64","Utf8","fromCharCode","join","decryptString","IMG_DATA","ProbTemplate","BioType","jsondata","stringify","fetch","method","headers","Accept","body","then","response","json","ErrorCode","errorCode","errorMessage","isError","sr_cd","SR_CD","ErrorMessage","catch","reason","err","isBase64","str","test","BankDetails","bannerDetails","loginImageURL","setLoginImageURL","urlObj","banner","useMemo","bannerImg","blob","utilFunction","base64toBlob","URL","createObjectURL","item","xs","md","lg","alt","objectFit","objectPosition","src","bannerTitle","marginLeft","bannerNote","PasswordRotation","ResetPassword","accessToken","tokenType","validatePasswordFn","MessageBox","usePopupContext","oldpassword","confirmpassword","pwdReset","setPasswordReset","isLoading","isNewpwdLoading","isoldPwdError","oldpassworderror","isnewpwdError","newpassworderror","isconfirmnewpwdError","confirmnewpassworderror","handleBlur","validateStatus","validateData","USER_ID","PASSWORD","SCREEN_REF","O_STATUS","O_MESSAGE","paddingBottom","messageTitle","icon","inititalState","firstName","lastName","OtpuserMessage","currentFlow","transactionID","access_token","token_type","reducer","state","action","isOTPError","payload","errorPassword","errorUsername","otpmodelclose","auth_data","totpReg","secretTocken","secretTockenQR","AuthControllerWrapper","logoUrl","logoTitle","loginFn","veirfyUsernameandPassword","verifyOTP","LanguageComponent","onOtpVerifyFailFn","dispath","useReducer","openpwdreset","setOpenPwdReset","failureCount","dashboardLogoURL","setDashboardLogoURL","otpResendRef","changeUserName","container","overflow","sm","direction","ml","Tooltip","describeChild","title","flag","responseType","BASE_COMP_CD","BASE_BRANCH_CD","CONTACT2","REQUEST_CD","DESCRIPTION","AUTH_TYPE","AUTH_DATA","OTP_VALID","OTP_SENT_TEXT","TOTP_REG","SECRET_TOCKEN","SECRET_TOCKEN_QR","STATUS","ALERT_MSG_LIST","Error","OTPNumber","newRequestID","fingerResponse","Quality","TimeOut","rawResponse","API.capture","promise","IsoTemplate","ForgotPasswordFields","onSubmit","navigate","loginPageEndpoint","validatePassword","workingState","mobileno","showConfirmPasswordTime","setShowConfirmPasswordTime","showConfirmPassword","replace","isMobileError","userMessageforMobileno","userMessageforPassword","passwordValidateloading","isConfirmPasswordError","userMessageforconfirmPassword","isApiError","apierrorMessage","requestCd","newPasswordMessage","confirmPasswordValidateloading","ForgotPasswordControllerWrapper","screenFlag","updatenewPassword","veirfyUsernameandMobileNo","verifyOTPForPWDReset","TotpEnbaledDisabled","setOpen","totp","setTotp","Enable","totpdata","verifyRequestData","validationData","isNaN","pwdverify","ValidatePassword","resdata","USER_NAME","MESSAGE","COMP_CD","BRANCH_CD","trim","BranchSelectionGridMetaData","gridConfig","dense","gridLabel","rowIdColumn","defaultColumnConfig","allowColumnReordering","disableSorting","hideHeader","disableGroupBy","enablePagination","containerHeight","min","max","allowFilter","allowColumnHiding","allowRowSelection","isCusrsorFocused","hideFooter","columns","accessor","columnName","sequence","alignment","componentType","dateFormat","heading_user_img","heading_user_img_border","actions","actionName","actionLabel","multiple","rowDoubleClick","actionTextColor","actionBackground","startsIcon","onEnterSubmit","endsIcon","BranchSelectionGrid","selectionMode","authState","isBranchSelectedFn","isLoggedInFn","logoutFn","logos","BranchSelectionGridDataApiFn","GetMenuDataApiFn","sideImage","branchSelectFn","dashboardUrl","loginUrl","appTranCd","isFetching","refetch","useQuery","queryClient","removeQueries","mutation","useMutation","onSuccess","extreData","menulistdata","branchCode","branch","BRANCH_NM","baseBranchCode","getError","setCurrentAction","useCallback","defFocusBtnName","mutate","GROUP_NAME","groupName","APP_TRAN_CD","COMP_NM","DAYEND_STATUS","EOD_RUNNING_STATUS","IS_UPD_DEF_BRANCH","user","isUpdDefBranch","COMP_BASE_BRANCH_CD","buttonNames","oneBranchOpen","LightTooltip","styled","props","popper","tooltipClasses","tooltip","backgroundColor","common","white","shadows","xl","visibility","profile","Stack","Box","roleName","placement","Avatar","userId","greet","hours","getHours","Greetings","bank","companyName","employeeID","Alert","severity","errorMsg","error_msg","errorDetail","error_detail","GridWrapper","finalMetaData","setData","setAction","controlsAtBottom","actionContextAtBottom","headerToolbarStyle","disableMultipleRowSelect","defaultSelectedRowId","defaultSelectBranch","Button","right","bottom","BranchSelectionGridWrapper","ClearCacheProvider","appBar","transitions","create","easing","sharp","duration","leavingScreen","searchBar","searchList","top","maxHeight","overflowY","outline","appBarShift","paddingLeft","enteringScreen","heading_user_dtl","left","toolbar","flexGrow","searchRoot","fontFamily","typography","alpha","search","pointerEvents","inputRoot","inputInput","loggedInUser","nameClass","dropDown","vTop","verticalAlign","userDesignation","userprofilehover","version01","DrawerClose_icon","marquee","animation","animationDelay","popover","blinkHard","StyledAppBar","AppBar","LogoContainer","CompanyLogo","BankInfoContainer","BankInfoText","Search","shape","up","RightSection","GreetingText","AppbarWrapper","handleDrawerOpen","handleDrawerClose","SearchComponent","bankLogo","profilePic","handleLogout","handleProfile","hideGreetings","menuIconConfig","optionalComponents","idleTimer","above1300","useMediaQuery","countdownMessage","setCountdownMessage","blinker","setBlinker","CloseIconComponent","OpenIconComponent","menuIconPosition","interval","setInterval","getRemainingTime","remainingSeconds","Math","floor","prev","clearInterval","Toolbar","disableRipple","MenuOutlinedIcon","version","BecomePartnerImg","textOverflow","workingDate","checkDateAndDisplay","format","lastLogin","map","component","Component","arrow","LogoutIcon","dateStr","drawerPaper","zIndex","drawerPaperClose","overflowX","toolbarIcon","mixins","hrCSS","buttonLink","reportMetaData","navBarCSS","headerDropdown","navLinkHeader","paddingRight","productLink","font13","loginDropdown","useStylesSideBar","root","drawer","fill","drawerIconSize","justifyItems","btnRoot","navLinks","navLinksforseparateView","nestedMenuLevel1","nestedMenuLevel2","listIcon","link","fontweight","linktext","faSmall","openList","openCurrent","slimList","activeMenuItem","localdrawerOpen","SideBarNav","metaData","drawerOpen","setView","slimSize","setNewFilterData","setNewFilterView","isFromSeparetView","rootUrl","handleListItemClick","result","Array","isArray","navItems","one","seperateView","SeperateListView","level","NestedListItem","SingleListItem","List","disablePadding","ScrollBar","code","setCode","i18n","language","labelStart","substring","ListItemIcon","FontAwesomeIcon","levelClassName","ListItem","disableGutters","viewName","newChield","item1","secondaryLabel","user_code","stopPropagation","MoreHorizIcon","ListItemText","isActiveMenu","isActiveMenuFromhref","window","location","pathname","navigationProps","titleText","document","isRouterLink","path","passNavigationPropsAsURLParmas","urlParms","URLSearchParams","rel","system_code","childrens","ExpandLess","ExpandMore","Collapse","in","timeout","unmountOnExit","menuhref","matchByValue","tags","navItem","toLocaleLowerCase","filterMetaDataByValue","searchString","tagsToSearch","newNavItems","newItem","newChildren","push","SearchViewNavigation","setSearch","translatedMetaData","filteredMetaData","myIcon","ArrowBackIosNewIcon","SearchBar","searchLabel","config","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","faPenToSquare","faBarsProgress","faFileExport","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","transformMetaDataAsPerRole","role","branches","company","access","products","newnavItem","filterMetaData","matchBranches","userBranches","accessBranches","indexOf","matchInvisibleRoles","userRole","accessRoles","matchProducts","userProducts","accessProducts","Number","visibleToRoles","userCompany","accessCompany","visibleToCompanies","visibleToBranches","invisibleToRoles","visibleToProducts","SideBar","view","NewFilterView","NewFilterData","myBranches","entities","Branch","myProducts","categoryCode","newMetaData","filteredMetaDataSideBar","companyID","filteredReportsMetaData","SidebarWrapper","Drawer","paper"],"mappings":"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kBA,EAClBmF,WAAYA,EACZC,QAASA,EACTF,SAAU,CACRY,SAAUkE,EACVK,OAAQ,CAAE7B,IAAK,GAAIzsB,OAAQ,WAE7BspB,UAAU,EACVG,mBAAmB,EACnBC,QAASA,EACThO,aAAcA,EACd3F,SAAUA,EACVlG,WAAYA,QClBpB0e,GAAQC,IACNC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,IC7LK,MAAMC,GAA6B,CACxCpL,EACAqL,EACAC,EACAC,EACAC,EACAC,KAEA,IASIC,EATWC,GACb3L,EAASY,SACTyK,EACAC,EACAC,EACAC,EACAC,GAGwBrO,KAAK1X,IAC7B,IAAI1N,SAAEA,KAAawsB,GAAY9e,EAQ/B,OAPIgb,MAAMC,QAAQ3oB,IAAaA,EAASwH,OAAS,IAC1C3C,QAAQ2nB,EAAQ1D,gBACnB0D,EAAQ1D,cAAe,EACvB0D,EAAQvC,SAAW,kBAIhB,IAAKuC,EAASxsB,SAAUA,MAEjC,MAAO,CACLmtB,OAAQnF,EAASmF,OACjBvE,SAAU8K,IA4BRE,GAAgB,CAACC,EAAcC,KACnC,IAAKpL,MAAMC,QAAQmL,KAAoBpL,MAAMC,QAAQkL,GACnD,OAAO,EAET,GAAIC,EAAets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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/pages/auth/style.ts","../src/pages/auth/usernamePassword.tsx","../src/pages/auth/otpPopup.tsx","../src/pages/auth/verifyFinger.tsx","../src/pages/auth/biometric.ts","../src/pages/auth/utils.ts","../src/pages/auth/bankDetails.tsx","../src/pages/auth/passwordRotation.tsx","../src/pages/auth/authController.tsx","../src/pages/auth/api.ts","../src/pages/auth/forgotPasswordField.tsx","../src/pages/auth/forgotPassword.tsx","../src/pages/branchSelection/gridMetadata.ts","../src/pages/branchSelection/style.ts","../src/pages/branchSelection/branchSelectionGrid.tsx","../src/pages/appbar/style.ts","../src/pages/appbar/appBar.tsx","../src/pages/sidebar/style.ts","../src/pages/sidebar/reportMetaData.ts","../src/pages/sidebar/navigation/style.ts","../src/pages/sidebar/navigation/sideBarNavigation.tsx","../src/pages/sidebar/navigation/filterMetaData.ts","../src/pages/sidebar/navigation/searchViewNavigation.tsx","../src/pages/sidebar/icons.ts","../src/pages/sidebar/transformer.ts","../src/pages/sidebar/sideBar.tsx","../src/pages/sidebar/drawer.tsx"],"sourcesContent":["import { makeStyles } from \"@mui/styles\";\r\n\r\nexport const useStyles = makeStyles((theme: any) => ({\r\n wrapper: {\r\n minHeight: \"100vh\",\r\n boxShadow: \"0 3px 6px rgba(0,0,0,0.03)\",\r\n // background: \"#fff\",\r\n background: \"var(--white)\",\r\n },\r\n loginEmp: {\r\n background: \"#fff\",\r\n padding: theme.spacing(2, 4),\r\n display: \"flex\",\r\n maxWidth: \"400px\",\r\n margin: \"auto\",\r\n boxShadow: \"0 0 20px rgba(0,0,0,0.06)\",\r\n borderRadius: \"8px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n formWrap: {\r\n marginTop: theme.spacing(2),\r\n },\r\n loginBtn: {\r\n minWidth: \"100% !important\",\r\n margin: theme.spacing(2, 0),\r\n fontSize: \"1rem\",\r\n padding: \"10px .75rem\",\r\n background: \"rgb(128,0,0)\",\r\n border: 0,\r\n color: \"#fff !important\",\r\n fontWeight: 600,\r\n letterSpacing: \"0.02857em\",\r\n boxShadow: \"none\",\r\n textTransform: \"capitalize\",\r\n alignSelf: \"flex-end\",\r\n \"&:hover\": {\r\n background: \"#fedad8\",\r\n boxShadow: \"none\",\r\n },\r\n },\r\n OTPTimer: {\r\n marginTop: \"10px\",\r\n color: theme.palette.primary.main,\r\n fontWeight: 600,\r\n },\r\n resendLink: {\r\n marginTop: \"10px\",\r\n cursor: \"pointer\",\r\n color: theme.palette.secondary.main,\r\n fontWeight: 600,\r\n fontSize: \"0.875 rem\",\r\n },\r\n logo: {\r\n marginBottom: theme.spacing(1),\r\n },\r\n\r\n loginLeft: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n loginRight: {\r\n background: \"#fff\",\r\n padding: theme.spacing(2, 4),\r\n display: \"flex\",\r\n maxWidth: \"400px\",\r\n margin: \"auto\",\r\n boxShadow: \"0 0 20px rgba(0,0,0,0.06)\",\r\n borderRadius: \"8px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n \"& img\": {\r\n alignSelf: \"center\",\r\n },\r\n },\r\n\r\n loginImg: {},\r\n\r\n verifybutton: {\r\n alignSelf: \"center\",\r\n // marginBottom: \"10px\",\r\n // marginTop: \"10px\",\r\n padding: \"5px\",\r\n },\r\n otpButtons: {\r\n // padding: \"10px\",\r\n },\r\n\r\n divflex: {\r\n display: \"flex\",\r\n },\r\n otpinputpadding: {\r\n \"& input\": {\r\n marginRight: \"25px !important\",\r\n border: \"1.42444px solid var(--theme-color3)\",\r\n borderRadius: \"10px\",\r\n width: \"45px !important\",\r\n height: \"45px !important\",\r\n marginBottom: \"15px\",\r\n boxShadow: \"0px 5.69775px 11.3955px rgba(66, 99, 199, 0.16)\",\r\n },\r\n },\r\n ibtnvisible: {\r\n // padding: \"7px !important\",\r\n // alignItems: \"baseline\",\r\n marginBottom: \"15px\",\r\n },\r\n btnvisibleoff: {\r\n display: \"none\",\r\n },\r\n OTPalignName: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n marginBottom: \"12px\",\r\n color: \"#1C1C1C\",\r\n fonWeight: \"400\",\r\n fontSize: \"17px\",\r\n lineHeight: \"33px\",\r\n },\r\n resendOTPalign: {\r\n color: \"var(--theme-color3)\",\r\n fonWeight: \"400\",\r\n fontSize: \"17px\",\r\n lineHeight: \"33px\",\r\n // margin: \"0 auto\",\r\n // marginTop: \"15px\",\r\n // display: \"block !important\",\r\n },\r\n resendbtnLink: {\r\n textDecoration: \"underline\",\r\n color: \"var(--theme-color3)\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n color: \"var(--theme-color3)\",\r\n },\r\n },\r\n dialogTitleClass: {\r\n background: \"var(--primary-bg)\",\r\n padding: \"6px 15px !important\",\r\n margin: \"10px\",\r\n color: \"var(--white)\",\r\n borderRadius: \"4px\",\r\n \"& h2\": {\r\n fontWeight: \"500 !important\",\r\n },\r\n },\r\n lang_svg: {\r\n marginRight: \"10px\",\r\n width: \"22px\",\r\n height: \"22px\",\r\n },\r\n dialogContent: {\r\n padding: \"0px 15px\",\r\n \"& p\": {\r\n whiteSpace: \"pre-wrap\",\r\n color: \"black\",\r\n marginTop: \"8px\",\r\n marginBottom: \"6px\",\r\n },\r\n },\r\n button: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n flexDirection: \"column\",\r\n margin: \"6px\",\r\n background: \"var(--theme-color1)\",\r\n \"&:hover\": {\r\n background: \"var(--theme-color1) !important\",\r\n },\r\n },\r\n}));\r\n","import { GradientButton, TextField } from \"@acuteinfo/common-base\";\r\nimport { Fragment, useState, useEffect, useRef } from \"react\";\r\nimport Visibility from \"@mui/icons-material/Visibility\";\r\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\r\nimport { CircularProgress, IconButton, InputAdornment } from \"@mui/material\";\r\nimport { Container } from \"@mui/material\";\r\nimport { Grid } from \"@mui/material\";\r\nimport { useTranslation } from \"react-i18next\";\r\nexport const UsernamePasswordField = ({\r\n classes,\r\n loginState,\r\n verifyUsernamePassword,\r\n forgotPasswordEndpoint,\r\n preventSpecialChars,\r\n}) => {\r\n const [input, setInput] = useState({ userName: \"\", password: \"\" });\r\n const [showPasswordTime, setShowPasswordTime] = useState(0);\r\n const [blurred, setBlurred] = useState(false);\r\n const showPassword = Date.now() < showPasswordTime;\r\n const [, forceUpdate] = useState<any | null>();\r\n const timerRef = useRef<any>(null);\r\n const { t } = useTranslation();\r\n useEffect(() => {\r\n return () => clearTimeout(timerRef.current);\r\n }, []);\r\n const handleChange = (event) => {\r\n const name = event.target.name;\r\n const value = event.target.value;\r\n if (\r\n name === \"userName\" &&\r\n preventSpecialChars &&\r\n value &&\r\n preventSpecialChars.split(\"\").some((char) => value.includes(char))\r\n ) {\r\n return;\r\n }\r\n if (name === \"userName\" && value) {\r\n loginState.isUsernameError = false;\r\n }\r\n if (name === \"password\" && value) {\r\n loginState.isPasswordError = false;\r\n }\r\n\r\n setInput((values) => ({ ...values, [name]: value }));\r\n };\r\n const inputRef = useRef<any>(null);\r\n const inputPassRef = useRef<any>(null);\r\n const inputButtonRef = useRef<any>(null);\r\n\r\n useEffect(() => {\r\n let timeoutCd;\r\n if (loginState.isUsernameError) {\r\n timeoutCd = setTimeout(() => {\r\n inputRef?.current?.focus?.();\r\n }, 100);\r\n } else if (loginState.isPasswordError) {\r\n setInput((old) => ({ ...old, password: \"\" }));\r\n timeoutCd = setTimeout(() => {\r\n inputPassRef?.current?.focus?.();\r\n }, 100);\r\n }\r\n return () => {\r\n if (timeoutCd) {\r\n clearTimeout(timeoutCd);\r\n }\r\n };\r\n }, [loginState.isUsernameError, loginState.isPasswordError]);\r\n useEffect(() => {\r\n let timeoutCd;\r\n if (loginState?.otpmodelClose ?? false) {\r\n setInput((values) => ({ ...values, password: \"\" }));\r\n timeoutCd = setTimeout(() => {\r\n inputPassRef?.current?.focus?.();\r\n }, 1500);\r\n }\r\n return () => {\r\n if (timeoutCd) {\r\n clearTimeout(timeoutCd);\r\n }\r\n };\r\n }, [loginState.otpmodelClose]);\r\n\r\n return (\r\n <Fragment>\r\n <Container maxWidth=\"xs\">\r\n <Grid alignItems=\"center\" style={{ paddingTop: \"20px\" }}>\r\n <div\r\n style={{\r\n color: \"#000000 !important\",\r\n fontSize: \"30px\",\r\n fontWeight: \"600\",\r\n // fontFamily: \"Poppins\",\r\n alignItems: \"center\",\r\n fontStyle: \"normal\",\r\n lineHeight: \"150%\",\r\n }}\r\n >\r\n <h3>{t(\"SignIn\")}</h3>\r\n </div>\r\n <div\r\n className=\"\"\r\n style={{\r\n color: \"#949597\",\r\n fontSize: \"16px\",\r\n fontWeight: \"400\",\r\n // fontFamily: \"Poppins\",\r\n alignItems: \"center\",\r\n fontStyle: \"normal\",\r\n\r\n width: \"360px\",\r\n }}\r\n >\r\n {t(\"SignInWithUserIDandPassword\")}\r\n </div>\r\n <div className={classes.formWrap}>\r\n <TextField\r\n // variant=\"filled\"\r\n // color=\"secondary\"\r\n autoFocus={true}\r\n label={t(\"UserID\")}\r\n // placeholder=\"User ID\"\r\n placeholder={String(t(\"UserID\"))}\r\n style={{\r\n marginTop: \"10px\",\r\n marginBottom: \"17px\",\r\n }}\r\n fullWidth\r\n type={\"text\"}\r\n name=\"userName\"\r\n value={input.userName.trimStart() || \"\"}\r\n onChange={handleChange}\r\n error={loginState.isUsernameError}\r\n helperText={\r\n loginState.isUsernameError\r\n ? t(loginState.userMessageforusername)\r\n : \"\"\r\n }\r\n InputLabelProps={{ shrink: true }}\r\n disabled={loginState.loading}\r\n autoComplete=\"off\"\r\n inputRef={inputRef}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\") {\r\n inputButtonRef?.current?.click?.();\r\n }\r\n }}\r\n inputProps={{\r\n maxLength: \"16\",\r\n }}\r\n />\r\n\r\n <div\r\n style={{\r\n display: \"flex\",\r\n flexDirection: \"row-reverse\",\r\n marginTop: \"8px\",\r\n }}\r\n >\r\n <TextField\r\n key=\"employee\"\r\n label={t(\"Password\")}\r\n // variant=\"filled\"\r\n // color=\"secondary\"\r\n\r\n placeholder={String(t(\"EnterPassword\"))}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n fullWidth\r\n type={showPassword ? \"text\" : \"password\"}\r\n name=\"password\"\r\n value={\r\n blurred && !showPassword\r\n ? \"•\".repeat(16)\r\n : input.password.trimStart() || \"\"\r\n }\r\n onChange={(e) => {\r\n setBlurred(false); // reset blur effect on change\r\n handleChange(e);\r\n }}\r\n onBlur={() => {\r\n if (!showPassword && input.password.trimStart())\r\n setBlurred(true);\r\n }}\r\n onFocus={() => setBlurred(false)}\r\n error={loginState.isPasswordError}\r\n helperText={\r\n loginState.isPasswordError\r\n ? t(loginState.userMessageforpassword)\r\n : \"\"\r\n }\r\n disabled={loginState.loading}\r\n inputRef={inputPassRef}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\") {\r\n if (!showPassword && input.password.trimStart())\r\n setBlurred(true);\r\n inputButtonRef?.current?.click?.();\r\n }\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <IconButton\r\n aria-label=\"toggle password visibility\"\r\n onClick={() => {\r\n if (!showPassword) {\r\n setShowPasswordTime(Date.now() + 5000);\r\n timerRef.current = setTimeout(\r\n () => forceUpdate(Date.now()),\r\n 5000,\r\n );\r\n } else if (showPassword) setShowPasswordTime(0);\r\n }}\r\n onMouseDown={(e) => e.preventDefault()}\r\n disabled={loginState.loading}\r\n >\r\n {showPassword ? <Visibility /> : <VisibilityOff />}\r\n </IconButton>\r\n </InputAdornment>\r\n ),\r\n }}\r\n inputProps={{ maxLength: \"16\" }}\r\n />\r\n </div>\r\n <div style={{ marginTop: \"20px\", display: \"flex\" }}>\r\n <div style={{ flex: \"auto\", textAlign: \"end\" }}>\r\n <a\r\n href={forgotPasswordEndpoint ?? \"\"}\r\n style={{ color: \"var(--theme-color3)\" }}\r\n >\r\n {t(\"ForgotPassword\")}\r\n </a>\r\n </div>\r\n </div>\r\n <div style={{ marginTop: \"20px\", display: \"flex\" }}>\r\n <div\r\n style={{\r\n flex: \"auto\",\r\n textAlign: \"center\",\r\n marginTop: \"5px\",\r\n marginBottom: \"17px\",\r\n }}\r\n >\r\n <GradientButton\r\n style={{\r\n borderRadius: loginState.loading ? \"50%\" : \"10px\",\r\n height: loginState.loading ? \"40px\" : \"100%\",\r\n width: loginState.loading ? \"0px\" : \"100%\",\r\n minWidth: loginState.loading ? \"40px\" : \"80px\",\r\n }}\r\n fullWidth\r\n disabled={loginState.loading}\r\n onClick={() =>\r\n verifyUsernamePassword(\r\n (input.userName || \"\").toLowerCase(),\r\n input.password,\r\n )\r\n }\r\n ref={inputButtonRef}\r\n endicon={loginState.loading ? undefined : \"East\"}\r\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\r\n >\r\n {loginState.loading ? (\r\n <CircularProgress size={25} thickness={4.6} />\r\n ) : (\r\n t(\"Next\")\r\n )}\r\n </GradientButton>\r\n </div>\r\n </div>\r\n </div>\r\n </Grid>\r\n </Container>\r\n </Fragment>\r\n );\r\n};\r\n","import { FormHelperText } from \"@mui/material\";\nimport { GradientButton } from \"@acuteinfo/common-base\";\nimport { Fragment, useState, useRef, useEffect } from \"react\";\nimport OTPInput, { ResendOTP } from \"otp-input-react\";\nimport Visibility from \"@mui/icons-material/Visibility\";\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\nimport { CircularProgress } from \"@mui/material\";\nimport { Container } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { Grid } from \"@mui/material\";\nimport clsx from \"clsx\";\nimport { useSnackbar } from \"notistack\";\nimport { useTranslation } from \"react-i18next\";\nexport const OTPModel = ({\n classes,\n OTPResendRequest,\n open,\n handleClose,\n loginState,\n VerifyOTP,\n OTPError,\n setOTPError,\n previousStep,\n setNewRequestID = (id) => {},\n otpresendCount = 0,\n resendFlag,\n}) => {\n const [OTP, setOTP] = useState(\"\");\n const [showPasswordTime, setShowPasswordTime] = useState(0);\n const showPassword = Date.now() < showPasswordTime;\n const [, forceUpdate] = useState<any | null>();\n const timerRef = useRef<any>(null);\n useEffect(() => {\n return () => clearTimeout(timerRef.current);\n }, []);\n const [btnshow, setbtnshow] = useState(false);\n const inputButtonRef = useRef<any>(null);\n const [resendotpLoading, setResendotpLoading] = useState(false);\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation();\n // const renderButton = (buttonProps) => {\n // let { remainingTime, ...other } = buttonProps;\n // return resendotpLoading ? (\n // <a\n // remainingtime={remainingTime}\n // {...other}\n // className={clsx(\n // classes.resendbtnLink,\n // !btnshow && classes.btnvisibleoff\n // )}\n // >\n // {t(\"ResendOTP\")}\n // </a>\n // ) : null;\n // };\n const renderButton = (buttonProps) => {\n let { remainingTime, ...other } = buttonProps;\n return resendotpLoading ? (\n <a\n className={clsx(\n classes.resendbtnLink,\n !btnshow && classes.btnvisibleoff,\n )}\n style={{ cursor: \"wait\" }}\n >\n {/* {t(\"ResendOTP\")} {<CircularProgress size={20} color=\"secondary\" />} */}\n {t(\"GetNewOTP\")} {<CircularProgress size={20} color=\"secondary\" />}\n </a>\n ) : (\n <a\n remainingtime={remainingTime}\n {...other}\n className={clsx(\n classes.resendbtnLink,\n !btnshow && classes.btnvisibleoff,\n )}\n >\n {/* {t(\"ResendOTP\")} */}\n {t(\"GetNewOTP\")}\n </a>\n );\n };\n\n const ClickEventHandler = () => {\n if (!Boolean(OTP) || OTP.length < 6) {\n setOTPError(\"EnterOTPDigit\");\n } else {\n setOTPError(\"\");\n VerifyOTP(OTP);\n }\n };\n const handleResendClick = async () => {\n setResendotpLoading(true);\n setOTPError(\"\");\n const { status, data, message } = await OTPResendRequest(\n // resendFlag === \"FORGET_PW\" || resendFlag === \"FORGT_TOTP\"\n // ? loginState?.requestCd\n // : loginState?.transactionID,\n loginState?.comapanyCD,\n loginState?.branchCD,\n loginState?.contactUser,\n resendFlag,\n loginState?.otpValidFor,\n loginState?.username,\n // resendFlag,\n // loginState.auth_data?.[0]?.company_ID,\n // loginState.auth_data?.[0]?.branch_cd,\n );\n setResendotpLoading(false);\n if (status === \"0\") {\n setNewRequestID(data?.TRAN_CD);\n setbtnshow(false);\n enqueueSnackbar(message, { variant: \"success\" });\n } else {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n };\n const handleCloseEvent = () => {\n setOTPError(\"\");\n setOTP(\"\");\n handleClose(\"\");\n };\n const renderTime = (remainingtime) => {\n if (parseInt(remainingtime) === 0) {\n setTimeout(() => {\n setbtnshow(true);\n }, 700);\n }\n return (\n <span className={clsx(btnshow && classes.btnvisibleoff)}>\n {t(\"OtpExpired\")} {remainingtime} {t(\"second\")}\n {/* {t(\"ValidFor\")} {remainingtime} */}\n </span>\n );\n };\n\n useEffect(() => {\n if (loginState?.otpmodelClose ?? false) {\n handleCloseEvent();\n } else if (Boolean(OTPError)) {\n setOTP(\"\");\n }\n }, [loginState.otpmodelClose, OTPError]);\n return (\n <Fragment>\n <Container maxWidth=\"sm\">\n <Grid alignItems=\"center\" marginTop={\"4em\"}>\n <div\n // className={classes.formWrap}\n style={\n {\n // marginRight: \"25px\",\n // width: \"100%\",\n // position: \"relative\",\n // right: \"42px\",\n // bottom: \"13px\",\n }\n }\n >\n <div\n style={{\n color: \"#000000\",\n fontSize: \"30px\",\n fontWeight: \"600\",\n // fontFamily: \"Poppins\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"150%\",\n marginBottom: \"10px\",\n }}\n >\n {loginState?.authType === \"OTP\"\n ? t(\"OTPAuthentication\")\n : loginState?.authType === \"TOTP\"\n ? t(\"TOTPAuthentication\")\n : null}\n </div>\n <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"33px\",\n }}\n >\n {loginState?.authType === \"OTP\" || loginState?.authType === \"TOTP\"\n ? t(\"OTPSentMobileNo\", {\n defaultValue: loginState?.otpSentText ?? \"\",\n })\n : null}\n </div>\n {/* <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"33px\",\n }}\n >\n {t(\"GenerateNewOTP\")}\n </div> */}\n\n <div className={classes.OTPalignName}>\n {t(\"Hello\")}{\" \"}\n {loginState?.username\n ? loginState.username.charAt(0).toUpperCase() +\n loginState.username.slice(1)\n : null}\n {loginState?.description ? `(${loginState.description})` : null}\n {loginState?.authType === \"OTP\" && (\n <ResendOTP\n // onResendClick={() => setbtnshow(false)}\n onResendClick={handleResendClick}\n // onTimerComplete={() => setbtnshow(true)}\n renderButton={renderButton}\n renderTime={renderTime}\n maxTime={loginState?.otpValidFor ?? 60}\n className={classes.resendOTPalign}\n />\n )}\n </div>\n <div\n className={classes.divflex}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n >\n <OTPInput\n value={OTP}\n onChange={setOTP}\n autoFocus\n OTPLength={6}\n otpType=\"number\"\n disabled={loginState.otploading || loginState.loading}\n secure={!showPassword}\n className={classes.otpinputpadding}\n />\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => {\n if (!showPassword) {\n setShowPasswordTime(Date.now() + 5000);\n timerRef.current = setTimeout(\n () => forceUpdate(Date.now()),\n 5000,\n );\n } else if (showPassword) setShowPasswordTime(0);\n }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.otploading}\n className={classes.ibtnvisible}\n >\n {showPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </div>\n {Boolean(OTPError) ? (\n <FormHelperText style={{ color: \"red\" }}>\n {OTPError}\n </FormHelperText>\n ) : null}\n {loginState?.authType === \"TOTP\" ? (\n <div>\n <a href=\"forgot-totp\" style={{ color: \"var(--theme-color3)\" }}>\n {t(\"ResetTOTP\")}\n </a>\n </div>\n ) : (\n <></>\n )}\n <div\n style={{\n display: \"flex\",\n gap: \"10px\",\n margin: \"42px 0 0 42px\",\n width: \"60%\",\n }}\n >\n <GradientButton\n // fullWidth\n disabled={loginState.otploading || loginState.loading}\n onClick={() => {\n previousStep(false, \"\");\n }}\n className={classes.otpButtons}\n textColor={\"var(--theme-color3)\"}\n sx={{\n border: \"var(--theme-color3) 1px solid\",\n minWidth: \"50%\",\n background: \"var(--white)\",\n borderRadius: \"10px\",\n \"&:disabled\": {\n color: \"var(--theme-color3) !important\",\n opacity: 0.7,\n },\n \"&:hover\": {\n background: \"var(--white) !important\",\n \"& .MuiSvgIcon-root\": {\n transform: \"scale(1.4) rotateX(360deg)\",\n transition: \"transform 2s ease-in-out\",\n },\n },\n }}\n // customstyle = {{color : \"var(--theme-color3) !important\"}}\n starticon={\"West\"}\n >\n {t(\"Back\")}\n </GradientButton>\n <GradientButton\n style={{\n borderRadius: loginState.loading ? \"50%\" : \"10px\",\n height: loginState.loading ? \"40px\" : \"100%\",\n width: loginState.loading ? \"0px\" : \"100%\",\n minWidth: loginState.loading ? \"40px\" : \"80px\",\n }}\n fullWidth\n disabled={loginState.loading}\n onClick={ClickEventHandler}\n ref={inputButtonRef}\n className={classes.otpButtons}\n endicon={loginState.loading ? undefined : \"TaskAlt\"}\n rotateIcon=\"scale(1.4)\"\n >\n {loginState.loading ? (\n <CircularProgress size={25} thickness={4.6} />\n ) : (\n t(\"VerifyOTP\")\n )}\n </GradientButton>\n </div>\n </div>\n </Grid>\n </Container>\n </Fragment>\n );\n};\n\nexport const OTPModelForm = ({\n classes,\n OTPResendRequest,\n handleClose,\n loginState,\n VerifyOTP,\n OTPError,\n setOTPError,\n resendFlag,\n setNewRequestID = (id) => {},\n otpresendCount = 0,\n}) => {\n const [OTP, setOTP] = useState(\"\");\n const [showPasswordTime, setShowPasswordTime] = useState(0);\n const showPassword = Date.now() < showPasswordTime;\n const [, forceUpdate] = useState<any | null>();\n const timerRef = useRef<any>(null);\n useEffect(() => {\n return () => clearTimeout(timerRef.current);\n }, []);\n const [btnshow, setbtnshow] = useState(false);\n const [resendotpLoading, setResendotpLoading] = useState(false);\n const inputButtonRef = useRef<any>(null);\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation();\n const renderButton = (buttonProps) => {\n let { remainingTime, ...other } = buttonProps;\n return resendotpLoading ? (\n <a\n className={clsx(\n classes.resendbtnLink,\n !btnshow && classes.btnvisibleoff,\n )}\n style={{ cursor: \"wait\" }}\n >\n {/* {t(\"ResendOTP\")} {<CircularProgress size={20} color=\"secondary\" />} */}\n {t(\"GetNewOTP\")} {<CircularProgress size={20} color=\"secondary\" />}\n </a>\n ) : (\n <a\n remainingtime={remainingTime}\n {...other}\n className={clsx(\n classes.resendbtnLink,\n !btnshow && classes.btnvisibleoff,\n )}\n >\n {/* {t(\"ResendOTP\")} */}\n {t(\"GetNewOTP\")}\n </a>\n );\n };\n const ClickEventHandler = () => {\n if (!Boolean(OTP) || OTP.length < 6) {\n setOTPError(\"EnterOTPDigit\");\n } else {\n setOTPError(\"\");\n VerifyOTP(OTP);\n }\n };\n const handleResendClick = async () => {\n setResendotpLoading(true);\n setOTPError(\"\");\n const { status, data, message } = await OTPResendRequest(\n // resendFlag === \"FORGET_PW\"\n // ? loginState?.requestCd\n // : loginState?.transactionID,\n // resendFlag,\n loginState?.company_ID,\n loginState?.branch_cd,\n loginState?.contactUser,\n resendFlag,\n loginState?.otpValidFor,\n loginState?.username,\n );\n setResendotpLoading(false);\n if (status === \"0\") {\n setNewRequestID(data?.TRAN_CD);\n setbtnshow(false);\n enqueueSnackbar(message, { variant: \"success\" });\n } else {\n enqueueSnackbar(message, { variant: \"error\" });\n }\n };\n const handleCloseEvent = () => {\n setOTPError(\"\");\n setOTP(\"\");\n handleClose();\n };\n const renderTime = (remainingtime) => {\n if (parseInt(remainingtime) === 0) {\n setTimeout(() => {\n setbtnshow(true);\n }, 700);\n }\n return (\n <span className={clsx(btnshow && classes.btnvisibleoff)}>\n {t(\"OtpExpired\")} {remainingtime}\n </span>\n );\n };\n useEffect(() => {\n if (loginState?.otpmodelClose ?? false) {\n handleCloseEvent();\n } else if (Boolean(OTPError)) {\n setOTP(\"\");\n }\n }, [loginState.otpmodelClose, OTPError]);\n\n return (\n <Fragment>\n <Grid alignItems=\"center\">\n <div>\n <div\n style={{\n color: \"#000000\",\n fontSize: \"30px\",\n fontWeight: \"600\",\n // fontFamily: \"Poppins\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"150%\",\n marginBottom: \"10px\",\n }}\n >\n {t(\"OTPAuthentication\")}\n </div>\n {/* <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n lineHeight: \"33px\",\n }}\n >\n {t(\"GenerateNewOTP\")}\n </div> */}\n <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"33px\",\n }}\n >\n {t(\"OTPSentMobileNo\", {\n defaultValue: loginState?.forgotOtpSentText ?? \"\",\n })}\n </div>\n <div className={classes.OTPalignName}>\n {t(\"Hello\")}{\" \"}\n {loginState?.username\n ? loginState.username.charAt(0).toUpperCase() +\n loginState.username.slice(1)\n : null}\n {loginState?.description ? `(${loginState.description})` : null}\n {loginState.otploading ||\n otpresendCount >= 3 ||\n loginState?.auth_type === \"TOTP\" ? null : (\n <ResendOTP\n onResendClick={handleResendClick}\n // onTimerComplete={() => setbtnshow(true)}\n renderButton={renderButton}\n renderTime={renderTime}\n maxTime={loginState?.otpValidFor ?? 60}\n className={classes.resendOTPalign}\n />\n )}\n </div>\n <div\n className={classes.divflex}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n >\n <OTPInput\n value={OTP}\n onChange={setOTP}\n autoFocus\n OTPLength={6}\n otpType=\"number\"\n disabled={loginState.otploading || loginState.loading}\n secure={!showPassword}\n className={classes.otpinputpadding}\n />\n\n {/* <IconButton\n aria-label=\"toggle password visibility\"\n // onClick={() => {\n // if (!showPassword) {\n // setShowPasswordTime(Date.now() + 5000);\n // timerRef.current = setTimeout(\n // () => forceUpdate(Date.now()),\n // 5000\n // );\n // } else if (showPassword) setShowPasswordTime(0);\n // }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.otploading}\n className={classes.ibtnvisible}\n >\n {showPassword ? <VisibilityOffIcon /> : <VisibilityIcon />}\n </IconButton> */}\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => {\n if (!showPassword) {\n setShowPasswordTime(Date.now() + 5000);\n timerRef.current = setTimeout(\n () => forceUpdate(Date.now()),\n 5000,\n );\n } else if (showPassword) setShowPasswordTime(0);\n }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.otploading}\n className={classes.ibtnvisible}\n >\n {showPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </div>\n {Boolean(OTPError) ? (\n <FormHelperText style={{ color: \"red\" }}>{OTPError}</FormHelperText>\n ) : null}\n\n <div\n style={{\n display: \"flex\",\n gap: \"10px\",\n margin: \"42px 0 0 42px\",\n width: \"60%\",\n }}\n >\n <GradientButton\n fullWidth\n disabled={loginState.otploading || loginState.loading}\n onClick={handleCloseEvent}\n className={classes.otpButtons}\n starticon={\"West\"}\n textColor={\"var(--white) !important\"}\n sx={{\n \"&:disabled\": {\n color: \"var(-theme-color3) !important\",\n },\n }}\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\n style={{\n // border: \"var(--theme-color3) 1px solid\",\n // color: \"var(--white)\",\n // background: \"var(--white)\",\n borderRadius: \"10px\",\n minWidth: \"48%\",\n }}\n >\n {t(\"Back\")}\n </GradientButton>\n <GradientButton\n style={{\n borderRadius: loginState.otploading ? \"50%\" : \"10px\",\n height: loginState.otploading ? \"40px\" : \"100%\",\n width: loginState.otploading ? \"0px\" : \"100%\",\n minWidth: loginState.otploading ? \"40px\" : \"80px\",\n }}\n // fullWidth\n disabled={loginState.loading}\n onClick={ClickEventHandler}\n ref={inputButtonRef}\n className={classes.otpButtons}\n >\n {loginState.otploading ? (\n <CircularProgress size={25} thickness={4.6} />\n ) : (\n t(\"VerifyOTP\")\n )}\n </GradientButton>\n </div>\n </div>\n </Grid>\n </Fragment>\n );\n};\n","import { Fragment } from \"react\";\nimport { GradientButton } from \"@acuteinfo/common-base\";\nimport FingerprintSharpIcon from \"@mui/icons-material/FingerprintSharp\";\nimport { CircularProgress, Container, Typography } from \"@mui/material\";\nimport { Grid } from \"@mui/material\";\nimport \"./verify.css\";\nimport { useTranslation } from \"react-i18next\";\nexport const VerifyFinger = ({\n classes,\n loginState,\n verifyFinger,\n previousStep,\n}) => {\n const { t } = useTranslation();\n return (\n <Fragment>\n <Container maxWidth=\"xs\">\n <Grid alignItems=\"center\">\n <div\n style={{\n marginRight: \"25px\",\n width: \"102%\",\n // marginBottom: \"55px\",\n }}\n >\n <br />\n <div\n style={{\n color: \"#000000\",\n fontSize: \"34px\",\n fontWeight: \"600\",\n // fontFamily: \"Poppins\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"150%\",\n marginBottom: \"10px\",\n }}\n >\n {t(\"BiometrixAuthentication\")}\n </div>\n <div\n style={{\n color: \"#949597\",\n fontSize: \"18px\",\n fontWeight: \"400\",\n // fontFamily: \"Poppins\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"33px\",\n // marginBottom: \"10px\",\n }}\n >\n {t(\"Kindlyplaceyoufinger\")}\n </div>\n <br />\n <Typography variant=\"h5\" style={{ color: \"#000000\" }}>\n {t(\"Hello\")} {\"\"}\n {` ${\n loginState?.username\n ? loginState.username.charAt(0).toUpperCase() +\n loginState.username.slice(1)\n : null\n }`}\n </Typography>\n <br />\n <div\n className={\n loginState?.isBiometricError\n ? classes.eFingerUi\n : classes.fingerUi\n }\n >\n <div className=\"spinner-wrap\">\n <FingerprintSharpIcon\n sx={{\n fontSize: \"80px\",\n opacity: \"0.4\",\n borderRadius: \"50%\",\n display: \"flex\",\n margin: \"0 auto\",\n \"&:after\": {\n borderBottom: \"2px solid #26A456\",\n },\n }}\n className={\n loginState?.isBiometricError ? classes.FingerIcon : null\n }\n color={loginState?.isBiometricError ? \"error\" : \"inherit\"}\n />\n {loginState?.isScanning ? (\n <>\n <div\n className=\"spinner-item\"\n style={{\n border: loginState?.isScanning\n ? \"1px solid #949597\"\n : \" 1px solid red\",\n }}\n ></div>\n <div\n className=\"spinner-item spinner-item--2\"\n style={{\n border: loginState?.isScanning\n ? \"1px solid #949597\"\n : \"1px solid red\",\n }}\n ></div>\n <div\n className=\"spinner-item spinner-item--3\"\n style={{\n border: loginState?.isScanning\n ? \"1px solid #949597\"\n : \"1px solid red\",\n }}\n ></div>\n </>\n ) : null}\n </div>\n </div>\n\n <div className={classes.biometric}>\n <div style={{ marginTop: \"50px\" }}>\n <div className={loginState.isScanning ? \"progress\" : \"hide\"}>\n <div\n className=\"bar\"\n style={{ width: loginState.isScanning ? \"30%\" : \"0%\" }}\n ></div>\n </div>\n <h3\n style={{\n display: \"flex\",\n marginTop: \"20px\",\n justifyContent: \"space-around\",\n color: loginState?.isBiometricError\n ? \"rgb(255 0 0 / 65%)\"\n : \"inherit\",\n }}\n >\n {loginState?.isBiometricError\n ? loginState?.userMessage\n : loginState?.loading\n ? t(\"Loading\")\n : loginState?.isScanning\n ? t(\"Scanning\")\n : null}\n </h3>\n </div>\n </div>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n margin: \"42px 0 0 42px\",\n // margin: \"38px 0 0 0\",\n gap: \"10px\",\n }}\n >\n <GradientButton\n fullWidth\n disabled={loginState.loading}\n onClick={() => {\n previousStep(false, \"\");\n }}\n className={classes.otpButtons}\n starticon={\"West\"}\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\n textColor={\"var(--theme-color3) !important\"}\n style={{\n border: \"var(--theme-color3)1px solid\",\n color: \"var(--theme-color3)\",\n background: \"var(--white)\",\n borderRadius: \"10px\",\n minWidth: \"48%\",\n }}\n >\n {t(\"Back\")}\n </GradientButton>\n <GradientButton\n style={{\n borderRadius: loginState.loading ? \"50%\" : \"10px\",\n height: loginState.loading ? \"40px\" : \"100%\",\n width: loginState.loading ? \"0px\" : \"100%\",\n minWidth: loginState.loading ? \"40px\" : \"80px\",\n // width: loginState.loading ? \"0px\" : \"90%\",\n // minWidth: loginState.loading ? \"40px\" : \"80px\",\n }}\n disabled={loginState.loading}\n onKeyDown={(e) => e.keyCode === 13 && verifyFinger}\n onClick={verifyFinger}\n className={classes.otpButtons}\n >\n {loginState.loading ? (\n <CircularProgress\n size={25}\n thickness={4.6}\n style={{ color: \"#fff\" }}\n />\n ) : (\n t(\"Verify\")\n )}\n </GradientButton>\n </div>\n </Grid>\n </Container>\n </Fragment>\n );\n};\n","import CryptoJS from \"crypto-js\";\r\n\r\nconst decryptString = (encryptString: string) => {\r\n var secretKey = \"SUPERACUTE@MKS\";\r\n var keyBytes = CryptoJS.PBKDF2(secretKey, \"Ivan Medvedev\", {\r\n keySize: 48 / 4,\r\n iterations: 1000,\r\n });\r\n console.log(keyBytes.toString());\r\n\r\n // take first 32 bytes as key (like in C# code)\r\n var key = new CryptoJS.lib.WordArray.init(keyBytes.words, 32);\r\n\r\n // // skip first 32 bytes and take next 16 bytes as IV\r\n var iv = new CryptoJS.lib.WordArray.init(keyBytes.words.splice(32 / 4), 16);\r\n\r\n // console.log(key.toString());\r\n //console.log(encryptString, CryptoJS.enc.Base64.parse(encryptString));\r\n\r\n var dec = CryptoJS.AES.decrypt(\r\n {\r\n ciphertext: CryptoJS.enc.Base64.parse(\r\n CryptoJS.enc.Base64.parse(encryptString).toString(CryptoJS.enc.Utf8),\r\n ),\r\n },\r\n key,\r\n {\r\n iv: iv,\r\n },\r\n );\r\n console.log(\"CryptoJS.AES.decrypt\", dec);\r\n return dec.toString(CryptoJS.enc.Utf8).split(String.fromCharCode(0)).join(\"\");\r\n return dec.toString();\r\n};\r\n\r\nexport const matchFinger = async (rows: any, captureFinger: string) => {\r\n var promise = new Promise((resolve, reject) => {\r\n //console.log(\"matchFinger\", rows, typeof rows);\r\n if (typeof rows === \"string\") {\r\n rows = JSON.parse(rows);\r\n }\r\n rows.forEach(async (element: any, i: number) => {\r\n try {\r\n var galleryTemplate = decryptString(element.IMG_DATA);\r\n var MFS100Request = {\r\n GalleryTemplate: galleryTemplate,\r\n ProbTemplate: captureFinger,\r\n BioType: \"Iso\",\r\n };\r\n var jsondata = JSON.stringify(MFS100Request);\r\n await fetch(\"http://localhost:8004/mfs100/verify\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: jsondata,\r\n })\r\n .then((response: any) => response.json())\r\n .then((response: any) => {\r\n if (response?.ErrorCode === \"0\" && response[\"Status\"]) {\r\n resolve({\r\n status: true,\r\n errorCode: \"0\",\r\n errorMessage: \"\",\r\n isError: false,\r\n sr_cd: element.SR_CD,\r\n });\r\n return;\r\n }\r\n\r\n if (rows.length === i + 1) {\r\n resolve({\r\n status: false,\r\n errorCode: response.ErrorCode,\r\n errorMessage: response.ErrorMessage,\r\n isError: false,\r\n });\r\n return;\r\n }\r\n })\r\n .catch((reason) => {\r\n resolve({\r\n status: false,\r\n errorCode: \"999\",\r\n errorMessage: reason,\r\n isError: true,\r\n });\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n resolve({\r\n status: false,\r\n errorCode: \"999\",\r\n errorMessage: \"Something went wrong!\",\r\n isError: true,\r\n });\r\n }\r\n });\r\n });\r\n return promise;\r\n};\r\n","export const isBase64 = (str = \"\"): boolean => {\r\n if (typeof str !== \"string\") {\r\n return false;\r\n }\r\n const base64Regex =\r\n /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\r\n\r\n return base64Regex.test(str);\r\n};\r\n","import { useEffect, useState, useRef, useMemo } from \"react\";\nimport { useStyles } from \"./style\";\nimport { Grid } from \"@mui/material\";\nimport { Container } from \"@mui/material\";\nimport { utilFunction } from \"@acuteinfo/common-base\";\nimport { isBase64 } from \"./utils\";\nimport { t } from \"i18next\";\n\nexport const BankDetails = ({ bannerDetails }: any) => {\n const [loginImageURL, setLoginImageURL] = useState<any | null>(null);\n const urlObj = useRef<any>(null);\n const classes = useStyles();\n\n const banner = useMemo(() => bannerDetails, []);\n\n useEffect(() => {\n if (Boolean(banner?.bannerImg)) {\n if (isBase64(banner?.bannerImg)) {\n let blob = utilFunction.base64toBlob(banner?.bannerImg);\n urlObj.current =\n typeof blob === \"object\" && Boolean(blob)\n ? URL.createObjectURL(blob)\n : \"\";\n setLoginImageURL(urlObj.current);\n } else {\n setLoginImageURL(banner?.bannerImg);\n }\n }\n }, [banner]);\n return (\n <>\n {/* <Grid container style={{ height: \"100vh\", overflow: \"hidden\" }}> */}\n <Grid item xs={6} md={6} lg={6} className={classes.loginLeft}>\n <Grid item xs={12} md={12} lg={12} style={{ height: \"70vh\" }}>\n <img\n alt=\"\"\n style={{\n width: \"100%\",\n height: \"100%\",\n objectFit: \"fill\",\n objectPosition: \"center\",\n }}\n src={Boolean(loginImageURL) ? loginImageURL : \"\"}\n />\n </Grid>\n <Grid\n item\n xs={12}\n md={12}\n lg={12}\n style={{\n height: \"30vh\",\n background: \"var(--primary-bg)\",\n }}\n >\n <Container maxWidth=\"sm\">\n <div\n className=\"text\"\n style={{\n color: \"white\",\n fontStyle: \"normal\",\n fontSize: \"31px\",\n paddingTop: \"30px\",\n }}\n >\n {t(\"WelcometoEnfinityCore\", {\n defaultValue: banner?.bannerTitle ?? \"\",\n })}\n <span style={{ marginLeft: \"8px\", fontWeight: \"900\" }}>\n {/* EasyBank */}\n </span>\n </div>\n <div\n style={{\n lineHeight: \"27px\",\n fontSize: \"15px\",\n fontWeight: \"500px\",\n letterSpacing: \"0.02em\",\n color: \"#ebedee\",\n maxWidth: \"464px\",\n }}\n >\n {t(\"WelcomeNote\", { defaultValue: banner?.bannerNote ?? \"\" })}\n </div>\n </Container>\n </Grid>\n </Grid>\n {/* </Grid> */}\n </>\n );\n};\n","import {\n TextField,\n GradientButton,\n usePopupContext,\n} from \"@acuteinfo/common-base\";\n\nimport {\n CircularProgress,\n Container,\n FormHelperText,\n Grid,\n InputAdornment,\n} from \"@mui/material\";\nimport { Fragment, useRef, useState } from \"react\";\n// import { ResetPassword } from \"./api\";\nimport { useSnackbar } from \"notistack\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const PasswordRotation = ({\n classes,\n ResetPassword,\n open,\n username,\n accessToken,\n tokenType,\n handleClose,\n validatePasswordFn,\n}) => {\n const inputButtonRef = useRef<any>(null);\n const { MessageBox } = usePopupContext();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation();\n const [input, setInput] = useState({\n userName: username,\n oldpassword: \"\",\n password: \"\",\n confirmpassword: \"\",\n });\n const [pwdReset, setPasswordReset] = useState({\n isLoading: false,\n isNewpwdLoading: false,\n isoldPwdError: false,\n oldpassworderror: \"\",\n isnewpwdError: false,\n newpassworderror: \"\",\n isconfirmnewpwdError: false,\n confirmnewpassworderror: \"\",\n });\n\n const handleCloseEvent = () => {\n handleClose(\"\");\n };\n const ClickEventHandler = async () => {\n if (!Boolean(input.oldpassword)) {\n setPasswordReset((values) => ({\n ...values,\n isoldPwdError: true,\n oldpassworderror: \"CurrentPasswordisrequired\",\n }));\n } else if (!Boolean(input.confirmpassword)) {\n setPasswordReset((values) => ({\n ...values,\n isconfirmnewpwdError: true,\n confirmnewpassworderror: \"Confirmnewpasswordisrequired\",\n }));\n } else if (\n !pwdReset?.isoldPwdError &&\n !pwdReset?.isnewpwdError &&\n !pwdReset?.isconfirmnewpwdError &&\n input.oldpassword &&\n input.password &&\n input?.confirmpassword\n ) {\n setPasswordReset((values) => ({ ...values, isLoading: true }));\n let response = await ResetPassword(\n input.userName,\n input.oldpassword,\n input.password,\n accessToken,\n tokenType,\n );\n\n if (response.status === \"0\") {\n setPasswordReset((values) => ({ ...values, isLoading: false }));\n enqueueSnackbar(\"Passwordsuccessfullychanged\", {\n variant: \"success\",\n });\n handleClose(\"0\");\n } else {\n setPasswordReset((values) => ({ ...values, isLoading: false }));\n MessageBox({\n messageTitle: \"ValidationFailed\",\n message: response.message ?? \"ValidationFailed\",\n icon: \"ERROR\",\n });\n }\n }\n };\n\n const handleChange = (event) => {\n const name = event.target.name;\n let value = event.target.value;\n if (name === \"oldpassword\" && Boolean(value)) {\n setPasswordReset((values) => ({ ...values, isoldPwdError: false }));\n } else if (name === \"password\" && Boolean(value)) {\n setPasswordReset((values) => ({ ...values, isnewpwdError: false }));\n } else if (name === \"confirmpassword\" && Boolean(value)) {\n setPasswordReset((values) => ({\n ...values,\n isconfirmnewpwdError: false,\n }));\n }\n setInput((values) => ({ ...values, [name]: value }));\n };\n\n const handleBlur = async (event) => {\n const name = event.target.name;\n\n if (name === \"oldpassword\") {\n if (!Boolean(input.oldpassword)) {\n setPasswordReset((values) => ({\n ...values,\n isoldPwdError: true,\n oldpassworderror: \"CurrentPasswordisrequired\",\n }));\n } else if (\n Boolean(input.oldpassword) &&\n Boolean(input.password) &&\n input.oldpassword === input.password\n ) {\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: true,\n newpassworderror: \"newPasswordCantbeSameasOldPassword\",\n }));\n }\n } else if (name === \"password\") {\n if (!Boolean(input.password)) {\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: true,\n newpassworderror: \"Newpasswordisrequired\",\n }));\n } else if (\n Boolean(input.oldpassword) &&\n Boolean(input.password) &&\n input.oldpassword === input.password\n ) {\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: true,\n newpassworderror: \"newPasswordCantbeSameasOldPassword\",\n }));\n } else if (Boolean(input.password)) {\n setPasswordReset((values) => ({ ...values, isNewpwdLoading: true }));\n const { validateStatus, validateData } = await validatePasswordFn({\n USER_ID: input.userName,\n PASSWORD: input.password,\n SCREEN_REF: \"LOGIN\",\n });\n\n if (validateData?.O_STATUS !== \"0\") {\n setPasswordReset((values) => ({ ...values, isNewpwdLoading: false }));\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: true,\n newpassworderror: validateData?.O_MESSAGE,\n }));\n } else {\n setPasswordReset((values) => ({ ...values, isNewpwdLoading: false }));\n setPasswordReset((values) => ({\n ...values,\n isnewpwdError: false,\n newpassworderror: \"\",\n }));\n }\n }\n } else if (name === \"confirmpassword\") {\n if (!Boolean(input.confirmpassword)) {\n setPasswordReset((values) => ({\n ...values,\n isconfirmnewpwdError: true,\n confirmnewpassworderror: \"Confirmnewpasswordisrequired\",\n }));\n } else if (\n Boolean(input.password) &&\n input.password !== input.confirmpassword\n ) {\n setPasswordReset((values) => ({\n ...values,\n isconfirmnewpwdError: true,\n confirmnewpassworderror: \"NewPasswordandConfirmPassworddidnotmatched\",\n }));\n }\n }\n };\n\n return (\n <Fragment>\n <Container maxWidth=\"xs\">\n <Grid alignItems=\"center\">\n <div\n style={{\n color: \"#000000 !important\",\n fontSize: \"30px\",\n fontWeight: \"600\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n }}\n >\n <h3>{t(\"PasswordRotation\")}</h3>\n </div>\n <div\n className=\"\"\n style={{\n color: \"#949597\",\n fontSize: \"18px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n width: \"360px\",\n }}\n >\n {t(\"PleaseVerifyOTP\")}\n </div>\n <div className={classes.formWrap}>\n <TextField\n label={t(\"UserId\")}\n placeholder={t(\"EnterUserId\")}\n fullWidth\n type={\"text\"}\n name=\"userName\"\n value={input.userName || \"\"}\n onChange={handleChange}\n InputLabelProps={{ shrink: true }}\n disabled={true}\n autoComplete=\"off\"\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n <TextField\n autoFocus={true}\n label={t(\"CurrentPassword\")}\n placeholder={t(\"EnterCurrentPassword\")}\n fullWidth\n type={\"password\"}\n name=\"oldpassword\"\n value={input.oldpassword || \"\"}\n onChange={handleChange}\n onBlur={handleBlur}\n error={pwdReset.isoldPwdError}\n helperText={\n pwdReset.isoldPwdError ? t(pwdReset.oldpassworderror) : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={pwdReset.isLoading}\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n <TextField\n label={t(\"NewPassword\")}\n placeholder={t(\"EnterNewPassword\")}\n fullWidth\n type={\"password\"}\n name=\"password\"\n value={input.password || \"\"}\n onChange={handleChange}\n onBlur={handleBlur}\n error={pwdReset.isnewpwdError}\n helperText={\n pwdReset.isnewpwdError ? t(pwdReset.newpassworderror) : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={pwdReset.isLoading || pwdReset.isNewpwdLoading}\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n inputProps={{ maxLength: 16 }}\n InputProps={{\n endAdornment: pwdReset.isNewpwdLoading ? (\n <InputAdornment position=\"end\">\n <CircularProgress\n sx={{ color: \"var(--theme-color3)\" }}\n size={25}\n thickness={4.6}\n />\n </InputAdornment>\n ) : null,\n }}\n style={{ paddingBottom: \"8px\" }}\n />\n <TextField\n label={t(\"ConfirmNewPassword\")}\n placeholder={t(\"Enterconfirmnewpassword\")}\n fullWidth\n type={\"password\"}\n name=\"confirmpassword\"\n value={input.confirmpassword || \"\"}\n onChange={handleChange}\n onBlur={handleBlur}\n error={pwdReset.isconfirmnewpwdError}\n helperText={\n pwdReset.isconfirmnewpwdError\n ? t(pwdReset.confirmnewpassworderror)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={pwdReset.isLoading}\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n </div>\n <div\n style={{\n display: \"flex\",\n gap: \"10px\",\n margin: \"20px 0 0 10px\",\n width: \"94%\",\n }}\n >\n <GradientButton\n fullWidth\n disabled={pwdReset.isLoading}\n onClick={handleCloseEvent}\n className={classes.otpButtons}\n style={{\n border: \"var(--theme-color3)1px solid\",\n color: \"var(--theme-color3)\",\n // pebbackground: \"var(--white)\",\n borderRadius: \"10px\",\n }}\n >\n {t(\"Back\")}\n </GradientButton>\n <GradientButton\n style={{\n borderRadius: pwdReset.isLoading ? \"50%\" : \"10px\",\n height: pwdReset.isLoading ? \"40px\" : \"100%\",\n width: pwdReset.isLoading ? \"0px\" : \"100%\",\n minWidth: pwdReset.isLoading ? \"40px\" : \"80px\",\n }}\n fullWidth\n disabled={pwdReset.isLoading}\n onClick={ClickEventHandler}\n ref={inputButtonRef}\n className={classes.otpButtons}\n >\n {pwdReset.isLoading ? (\n <CircularProgress size={25} thickness={4.6} />\n ) : (\n t(\"Update\")\n )}\n </GradientButton>\n </div>\n </Grid>\n </Container>\n </Fragment>\n );\n};\n","import { usePopupContext, utilFunction } from \"@acuteinfo/common-base\";\n\nimport { useReducer, useEffect, useState, useRef } from \"react\";\nimport { useStyles } from \"./style\";\nimport { UsernamePasswordField } from \"./usernamePassword\";\nimport { OTPModel, OTPModelForm } from \"./otpPopup\";\nimport { VerifyFinger } from \"./verifyFinger\";\nimport * as API from \"./api\";\nimport { matchFinger } from \"./biometric\";\nimport { Grid, Tooltip } from \"@mui/material\";\nimport { BankDetails } from \"./bankDetails\";\nimport { useTranslation } from \"react-i18next\";\nimport { PasswordRotation } from \"./passwordRotation\";\nimport { isBase64 } from \"./utils\";\nimport {\n OTPResendRequestFnType,\n ResetPasswordFnType,\n ValidatePasswordFnType,\n VerifyOtpFnType,\n VerifyUsernamePassFnType,\n} from \"pages/types\";\n\nconst inititalState = {\n username: \"\",\n firstName: \"\",\n lastName: \"\",\n loading: false,\n otploading: false,\n isError: false,\n isUsernameError: false,\n isPasswordError: false,\n userMessage: \"\",\n OtpuserMessage: \"\",\n userMessageforpassword: \"\",\n userMessageforusername: \"\",\n currentFlow: \"username\",\n transactionID: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n contactUser: \"\",\n access_token: \"\",\n token_type: \"\",\n otpmodelClose: false,\n authType: \"\",\n isScanning: false,\n auth_type: \"O\",\n otpValidFor: 60,\n otpSentText: \"\",\n description: \"\",\n};\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case \"inititateUserFingerVerification\":\n case \"inititateOTPVerification\": {\n return {\n ...state,\n loading: true,\n isError: false,\n isUsernameError: false,\n isPasswordError: false,\n isOTPError: false,\n isBiometricError: false,\n userMessage: \"\",\n };\n }\n case \"inititateUserFingerScanner\": {\n return { ...state, isScanning: true, isBiometricError: false };\n }\n case \"usernameandpasswordrequired\": {\n return {\n ...state,\n loading: false,\n isError: true,\n isUsernameError: true,\n isPasswordError: true,\n otploading: false,\n userMessage: action?.payload?.error,\n userMessageforpassword: action?.payload?.errorPassword,\n userMessageforusername: action?.payload?.errorUsername,\n username: \"\",\n description: \"\",\n transactionID: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n contactUser: \"\",\n };\n }\n case \"passwordVerificationFailure\":\n return {\n ...state,\n loading: false,\n isError: true,\n isUsernameError: false,\n isPasswordError: true,\n otploading: false,\n userMessage: action?.payload?.error,\n userMessageforpassword: action?.payload?.errorPassword,\n username: \"\",\n description: \"\",\n transactionID: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n };\n case \"usernameVerificationFailure\": {\n return {\n ...state,\n loading: false,\n isError: true,\n isUsernameError: true,\n isPasswordError: false,\n otploading: false,\n userMessage: action?.payload?.error,\n userMessageforusername: action?.payload?.errorUsername,\n username: \"\",\n description: \"\",\n transactionID: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n contactUser: \"\",\n };\n }\n case \"inititatePasswordVerification\": {\n return {\n ...state,\n loading: true,\n isError: false,\n isUsernameError: false,\n isPasswordError: false,\n otploading: false,\n userMessage: \"\",\n userMessageforusername: \"\",\n userMessageforpassword: \"\",\n username: \"\",\n description: \"\",\n transactionID: \"\",\n access_token: \"\",\n comapanyCD: \"\",\n branchCD: \"\",\n contactUser: \"\",\n };\n }\n case \"passwordRotation\": {\n return {\n ...state,\n loading: false,\n username: action?.payload?.username,\n description: action?.payload?.description ?? \"\",\n access_token: action?.payload?.access_token,\n token_type: action?.payload?.token_type,\n };\n }\n case \"passwordRotationsuccess\": {\n return {\n ...state,\n loading: false,\n otpmodelClose: Boolean(action?.payload?.otpmodelclose),\n };\n }\n case \"passwordVerificationSuccessful\": {\n return {\n ...state,\n loading: false,\n otploading: false,\n transactionID: action?.payload?.transactionID,\n comapanyCD: action?.payload?.comapanyCD,\n branchCD: action?.payload?.branchCD,\n contactUser: action?.payload?.contactUser,\n username: action?.payload?.username,\n description: action?.payload?.description,\n auth_type: action?.payload?.auth_type,\n OtpuserMessage: \"\",\n access_token: action?.payload?.access_token,\n token_type: action?.payload?.token_type,\n otpmodelClose: false,\n currentFlow: \"OTP\",\n authType: action?.payload?.authType,\n auth_data: action?.payload?.auth_data,\n otpValidFor: action?.payload?.otpValidFor,\n otpSentText: action?.payload?.otpSentText,\n totpReg: action?.payload?.totpReg,\n secretTocken: action?.payload?.secretTocken,\n secretTockenQR: action?.payload?.secretTockenQR,\n };\n }\n case \"inititatebiometricVerification\": {\n return {\n ...state,\n loading: true,\n otploading: true,\n OtpuserMessage: \"\",\n otpmodelClose: false,\n };\n }\n case \"biometricVerificationFailure\":\n return {\n ...state,\n loading: false,\n isError: true,\n isBiometricError: true,\n userMessage: action?.payload?.error,\n isScanning: false,\n };\n case \"biometricVerificationSuccessful\":\n return {\n ...state,\n loading: false,\n isError: false,\n isBiometricError: false,\n state: action.payload,\n isScanning: false,\n };\n case \"OTPVerificationComplate\": {\n return {\n ...state,\n loading: false,\n otploading: false,\n OtpuserMessage: \"\",\n };\n }\n case \"OTPVerificationFailed\": {\n return {\n ...state,\n loading: false,\n otploading: false,\n OtpuserMessage: action?.payload?.error,\n otpmodelClose: Boolean(action?.payload?.otpmodelclose),\n };\n }\n case \"OTPResendSuccess\": {\n return {\n ...state,\n transactionID: action?.payload?.transactionID,\n };\n }\n case \"backToUsernameVerification\": {\n return {\n ...inititalState,\n isPasswordError: action?.payload?.isError,\n userMessageforpassword: action?.payload?.errorMessage,\n };\n }\n\n default: {\n return state;\n }\n }\n};\n\ninterface AuthControllerProps {\n bannerDetails: {\n bannerImg: string;\n bannerTitle: string;\n bannerNote: string;\n };\n logoUrl?: string;\n logoTitle?: string;\n loginFn: Function;\n veirfyUsernameandPassword: VerifyUsernamePassFnType;\n validatePasswordFn: ValidatePasswordFnType;\n verifyOTP: VerifyOtpFnType;\n OTPResendRequest: OTPResendRequestFnType;\n ResetPassword: ResetPasswordFnType;\n LanguageComponent?: React.ComponentType<any>;\n forgotPasswordEndpoint: string;\n /**\n * Prevents characters input from specified string in username field\n *\n * e.g. \"!@#\". Characters `!`, `@`, `#` will be prevented in username field\n */\n preventSpecialChars?: string | null;\n /**\n * Callback to run on otp verify fail\n * @param e Error Object\n * @returns void\n */\n onOtpVerifyFailFn?: (e: any) => void;\n}\n\nexport const AuthControllerWrapper: React.FC<AuthControllerProps> = ({\n bannerDetails,\n logoUrl,\n logoTitle,\n loginFn,\n veirfyUsernameandPassword,\n validatePasswordFn,\n verifyOTP,\n OTPResendRequest,\n ResetPassword,\n LanguageComponent,\n forgotPasswordEndpoint,\n preventSpecialChars,\n onOtpVerifyFailFn,\n}) => {\n const classes = useStyles();\n const [loginState, dispath] = useReducer(reducer, inititalState);\n const [openpwdreset, setOpenPwdReset] = useState(false);\n const failureCount = useRef(0);\n const [dashboardLogoURL, setDashboardLogoURL] = useState<any | null>(null);\n const urlObj = useRef<any>(null);\n const { t } = useTranslation();\n const otpResendRef = useRef(1);\n const { MessageBox } = usePopupContext();\n\n useEffect(() => {\n if (Boolean(logoUrl)) {\n if (isBase64(logoUrl)) {\n let blob = utilFunction.base64toBlob(logoUrl);\n urlObj.current =\n typeof blob === \"object\" && Boolean(blob)\n ? URL.createObjectURL(blob)\n : \"\";\n setDashboardLogoURL(urlObj.current);\n } else {\n setDashboardLogoURL(logoUrl);\n }\n }\n }, [logoUrl]);\n\n const verifyUsernamePassword = async (username, password) => {\n if (Boolean(username) && Boolean(password)) {\n dispath({ type: \"inititatePasswordVerification\" });\n try {\n const {\n status = \"\",\n data = null,\n message = \"\",\n responseType = \"\",\n access_token = null,\n } = await veirfyUsernameandPassword(username, password);\n\n if (status === \"0\" && responseType === \"S\") {\n dispath({\n type: \"passwordRotation\",\n payload: {\n username: username,\n access_token: access_token?.access_token || \"\",\n token_type: access_token?.token_type || \"\",\n },\n });\n setOpenPwdReset(true);\n } else if (status === \"0\") {\n dispath({\n type: \"passwordVerificationSuccessful\",\n payload: {\n comapanyCD: data?.BASE_COMP_CD,\n branchCD: data?.BASE_BRANCH_CD,\n contactUser: data?.CONTACT2,\n transactionID: data?.REQUEST_CD,\n username: username,\n description: data?.DESCRIPTION,\n access_token: access_token?.access_token,\n token_type: access_token?.token_type,\n authType: data?.AUTH_TYPE,\n auth_data: data?.AUTH_DATA,\n otpValidFor: data?.OTP_VALID,\n otpSentText: data?.OTP_SENT_TEXT,\n totpReg: data?.TOTP_REG,\n secretTocken: data?.SECRET_TOCKEN,\n secretTockenQR: data?.SECRET_TOCKEN_QR,\n },\n });\n if (data?.STATUS === \"0\") {\n for (let i = 0; i < data?.ALERT_MSG_LIST.length; i++) {\n await MessageBox({\n messageTitle: \"Password Alert\",\n message: data?.ALERT_MSG_LIST[i],\n });\n }\n }\n } else {\n dispath({\n type: \"passwordVerificationFailure\",\n payload: {\n error: message,\n errorPassword: t(\"UserIDPasswordisincorrect\", {\n defaultValue: message,\n }),\n },\n });\n }\n } catch (err) {\n throw new Error(\n \"Error occurred while verifying username and password: \" + err,\n );\n }\n } else if (!Boolean(username) && !Boolean(password)) {\n dispath({\n type: \"usernameandpasswordrequired\",\n payload: {\n error: \"UsernamenandPasswordisRequired\",\n errorUsername: \"UsernameisRequired\",\n errorPassword: \"PasswordisRequired\",\n },\n });\n } else if (!Boolean(username)) {\n dispath({\n type: \"usernameVerificationFailure\",\n payload: {\n error: \"UsernameisRequired\",\n errorUsername: \"UsernameisRequired\",\n },\n });\n } else {\n dispath({\n type: \"passwordVerificationFailure\",\n payload: {\n error: \"PasswordisRequired\",\n errorPassword: \"PasswordisRequired\",\n },\n });\n }\n };\n\n const VerifyOTP = async (OTPNumber) => {\n try {\n if (Boolean(OTPNumber) && OTPNumber.toString().length === 6) {\n dispath({ type: \"inititateOTPVerification\" });\n const { status, data, message } = await verifyOTP(\n loginState.transactionID,\n // loginState.app_transactionId,\n loginState.username,\n OTPNumber,\n loginState.access_token,\n loginState.token_type,\n loginState.authType,\n );\n if (status === \"0\") {\n // try {\n // audio.play();\n // } catch (error) {\n // console.log(error);\n // }\n dispath({ type: \"OTPVerificationComplate\" });\n loginFn({\n ...data,\n totpReg: loginState?.totpReg,\n secretTocken: loginState?.secretTocken,\n secretTockenQR: loginState?.secretTockenQR,\n });\n } else if (status === \"999\") {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: message, otpmodelclose: true },\n });\n // enqueueSnackbar(message, { variant: \"error\" });\n } else {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: message, otpmodelclose: false },\n });\n }\n } else {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: \"Please enter a 6 digit OTP number\" },\n });\n }\n } catch (e: any) {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: e?.message ?? \"Otp verification Failed!\" },\n });\n if (typeof onOtpVerifyFailFn === \"function\") {\n onOtpVerifyFailFn(e);\n }\n }\n };\n\n const handlePasswordRotationClose = (flag) => {\n if (flag === \"0\") {\n dispath({\n type: \"passwordRotationsuccess\",\n payload: { otpmodelclose: true },\n });\n }\n setOpenPwdReset(false);\n };\n const changeUserName = (isError = false, errorMessage = \"\") => {\n dispath({\n type: \"backToUsernameVerification\",\n payload: {\n isError: isError,\n errorMessage: errorMessage,\n },\n });\n };\n const verifyFinger = async () => {\n try {\n dispath({ type: \"inititateUserFingerScanner\" });\n const fingerResponse = await API.capture();\n if (fingerResponse?.ErrorCode === \"0\") {\n dispath({ type: \"inititateUserFingerVerification\" });\n const promise: any = await matchFinger(\n loginState.auth_data,\n fingerResponse.IsoTemplate,\n );\n if (promise.isError) {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: promise?.errorMessage ?? \"Something went wrong.\",\n },\n });\n } else {\n const { status, data, message } = await verifyOTP(\n loginState.transactionID,\n loginState.username,\n String(promise?.sr_cd ?? \"0\"),\n loginState.access_token,\n loginState.token_type,\n loginState.authType,\n promise.status ? \"Y\" : \"N\",\n );\n if (status === \"0\" && promise.status) {\n dispath({ type: \"biometricVerificationSuccessful\" });\n loginFn(data);\n } else if (status === \"0\" && !promise.status) {\n failureCount.current = failureCount.current + 1;\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: \"Finger Not Match.Please Try Again\",\n },\n });\n if (failureCount.current >= 3)\n changeUserName(true, \"Finger Not Match.Please Try Again\");\n } else if (status === \"99\") {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: message ?? \"Finger Not Match.Please Try Again\",\n },\n });\n } else if (status === \"999\") {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: message ?? \"Finger Not Match.Please Try Again\",\n },\n });\n changeUserName(\n true,\n message ?? \"Finger Not Match.Please Try Again\",\n );\n } else {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: message ?? \"Finger Not Match.Please Try Again\",\n },\n });\n }\n }\n } else {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: fingerResponse?.ErrorMessage ?? t(\"MFS100NotFound\"),\n },\n });\n }\n } catch (e: any) {\n dispath({\n type: \"biometricVerificationFailure\",\n payload: {\n error: e?.message ?? t(\"Unknownerroroccured\"),\n },\n });\n }\n };\n return (\n <>\n <Grid container style={{ height: \"100vh\", overflow: \"hidden\" }}>\n <BankDetails bannerDetails={bannerDetails} />\n <Grid item xs={11} md={6} lg={6} sm={6}>\n {logoUrl ? (\n <Grid\n container\n direction=\"row\"\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n padding={\"25px\"}\n maxWidth={\"210px\"}\n ml={\"auto\"}\n >\n <Tooltip describeChild title={logoTitle ?? \"\"}>\n <img\n src={Boolean(dashboardLogoURL) ? dashboardLogoURL : \"\"}\n alt=\"Logo\"\n width={\"100%\"}\n />\n </Tooltip>\n </Grid>\n ) : null}\n\n {LanguageComponent ? (\n <Grid\n container\n direction=\"row\"\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n padding={\"0 35px 0 0\"}\n maxWidth={\"180px\"}\n ml={\"auto\"}\n >\n <LanguageComponent />\n </Grid>\n ) : null}\n\n {openpwdreset ? (\n <PasswordRotation\n classes={classes}\n ResetPassword={ResetPassword}\n open={openpwdreset}\n username={loginState.username}\n accessToken={loginState.access_token}\n tokenType={loginState.token_type}\n handleClose={handlePasswordRotationClose}\n validatePasswordFn={validatePasswordFn}\n />\n ) : (\n <>\n {loginState.currentFlow === \"username\" ? (\n <UsernamePasswordField\n key=\"username\"\n classes={classes}\n loginState={loginState}\n verifyUsernamePassword={verifyUsernamePassword}\n forgotPasswordEndpoint={forgotPasswordEndpoint}\n preventSpecialChars={preventSpecialChars}\n />\n ) : (\n <>\n {loginState.authType === \"OTP\" ||\n loginState.authType === \"TOTP\" ? (\n <OTPModel\n key=\"otp\"\n OTPResendRequest={OTPResendRequest}\n classes={classes}\n loginState={loginState}\n VerifyOTP={VerifyOTP}\n previousStep={changeUserName}\n OTPError={t(loginState?.OtpuserMessage ?? \"\")}\n setOTPError={(error) => {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: error },\n });\n }}\n open={true}\n handleClose={changeUserName}\n resendFlag={\"LOGIN\"}\n setNewRequestID={(newRequestID) => {\n dispath({\n type: \"OTPResendSuccess\",\n payload: { transactionID: newRequestID },\n });\n otpResendRef.current = otpResendRef.current + 1;\n }}\n otpresendCount={otpResendRef.current}\n />\n ) : (\n <VerifyFinger\n key=\"biometric\"\n classes={classes}\n loginState={loginState}\n verifyFinger={verifyFinger}\n previousStep={changeUserName}\n />\n )}\n </>\n )}\n </>\n )}\n </Grid>\n </Grid>\n </>\n );\n};\n","export const capture = async () => {\r\n var MFS100Request = {\r\n Quality: 60,\r\n TimeOut: 10,\r\n };\r\n var jsondata = JSON.stringify(MFS100Request);\r\n const rawResponse = await fetch(\"http://localhost:8004/mfs100/capture\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: jsondata,\r\n });\r\n const content = await rawResponse.json();\r\n return content;\r\n};\r\n","import { TextField, GradientButton } from \"@acuteinfo/common-base\";\n\nimport { Fragment, useState, useEffect, useRef } from \"react\";\nimport {\n CircularProgress,\n FormHelperText,\n IconButton,\n InputAdornment,\n} from \"@mui/material\";\nimport Visibility from \"@mui/icons-material/Visibility\";\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\nimport { useTranslation } from \"react-i18next\";\n\nexport const ForgotPasswordFields = ({\n classes,\n loginState,\n onSubmit,\n navigate,\n loginPageEndpoint,\n preventSpecialChars,\n validatePassword,\n}) => {\n const [input, setInput] = useState({\n userName: loginState.workingState === 1 ? loginState?.username : \"\",\n mobileno: \"\",\n password: \"\",\n confirmpassword: \"\",\n });\n const inputRef = useRef<any>(null);\n const inputPassRef = useRef<any>(null);\n const inputButtonRef = useRef<any>(null);\n const [showPasswordTime, setShowPasswordTime] = useState(0);\n const [showConfirmPasswordTime, setShowConfirmPasswordTime] = useState(0);\n const showPassword = Date.now() < showPasswordTime;\n const showConfirmPassword = Date.now() < showConfirmPasswordTime;\n const [, forceUpdate] = useState<any | null>();\n const timerRef = useRef<any>(null);\n\n useEffect(() => {\n return () => clearTimeout(timerRef.current);\n }, []);\n // const navigate = useNavigate();\n const { t } = useTranslation();\n const handleChange = (event) => {\n const name = event.target.name;\n let value = event.target.value;\n if (\n name === \"userName\" &&\n preventSpecialChars &&\n value &&\n preventSpecialChars.split(\"\").some((char) => value.includes(char))\n ) {\n return;\n }\n if (name === \"userName\" && value) {\n loginState.isUsernameError = false;\n }\n if (name === \"mobileno\" && value) {\n value = value.replace(/\\D/g, \"\");\n if (Boolean(value)) {\n loginState.isMobileError = false;\n }\n }\n setInput((values) => ({ ...values, [name]: value }));\n };\n useEffect(() => {\n if (loginState.workingState === 1) {\n setTimeout(() => {\n inputPassRef?.current?.focus?.();\n }, 2000);\n }\n }, [loginState.workingState]);\n return (\n <Fragment>\n <div className={classes.formWrap}>\n <TextField\n autoFocus={true}\n label={t(\"UserID\")}\n placeholder={String(t(\"UserID\"))}\n fullWidth\n type={\"text\"}\n name=\"userName\"\n value={input.userName.trimStart() || \"\"}\n onChange={handleChange}\n error={loginState.isUsernameError}\n helperText={\n loginState.isUsernameError\n ? t(loginState.userMessageforusername)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={\n loginState.loading\n ? true\n : loginState.workingState === 0\n ? false\n : true\n }\n autoComplete=\"off\"\n ref={inputRef}\n inputProps={{ maxLength: 16 }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n style={{ paddingBottom: \"8px\" }}\n />\n {loginState.workingState === 0 ? (\n <TextField\n label={t(\"MobileNo\")}\n placeholder={t(\"EnterMobileNo\")}\n // placeholder={String(t(\"EnterMobileNo\"))}\n fullWidth\n type={\"text\"}\n name=\"mobileno\"\n value={input.mobileno.trimStart() || \"\"}\n onChange={handleChange}\n error={loginState.isMobileError}\n helperText={\n loginState.isMobileError\n ? t(loginState.userMessageforMobileno)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={\n loginState.loading\n ? true\n : loginState.workingState === 0\n ? false\n : true\n }\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n inputProps={{ maxLength: 13 }}\n style={{ paddingBottom: \"8px\" }}\n />\n ) : null}\n {loginState.workingState === 1 ? (\n <>\n <TextField\n autoFocus={true}\n label={t(\"Password\")}\n placeholder={t(\"EnterPassword\")}\n fullWidth\n type={showPassword ? \"text\" : \"password\"}\n name=\"password\"\n value={input.password.trimStart() || \"\"}\n onChange={handleChange}\n onBlur={async () => await validatePassword(input, \"P\")}\n error={loginState.isPasswordError}\n helperText={\n loginState.isPasswordError\n ? t(loginState.userMessageforPassword)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={loginState.loading}\n autoComplete=\"off\"\n ref={inputPassRef}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n {loginState.passwordValidateloading ? (\n <CircularProgress\n color=\"secondary\"\n variant=\"indeterminate\"\n size={24}\n thickness={4.6}\n />\n ) : null}\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => {\n if (!showPassword) {\n setShowPasswordTime(Date.now() + 5000);\n timerRef.current = setTimeout(\n () => forceUpdate(Date.now()),\n 5000,\n );\n } else if (showPassword) setShowPasswordTime(0);\n }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.loading}\n >\n {showPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n ),\n }}\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n <TextField\n label={t(\"ConfirmPassword\")}\n placeholder={String(t(\"EnterConfirmPassword\"))}\n fullWidth\n type={showConfirmPassword ? \"text\" : \"password\"}\n name=\"confirmpassword\"\n value={input.confirmpassword.trimStart() || \"\"}\n onChange={handleChange}\n onBlur={async () => await validatePassword(input, \"C\")}\n error={loginState.isConfirmPasswordError}\n helperText={\n loginState.isConfirmPasswordError\n ? t(loginState.userMessageforconfirmPassword)\n : \"\"\n }\n InputLabelProps={{ shrink: true }}\n disabled={loginState.loading}\n autoComplete=\"off\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n inputButtonRef?.current?.click?.();\n }\n }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => {\n if (!showConfirmPassword) {\n setShowConfirmPasswordTime(Date.now() + 5000);\n timerRef.current = setTimeout(\n () => forceUpdate(Date.now()),\n 5000,\n );\n } else if (showConfirmPassword)\n setShowConfirmPasswordTime(0);\n }}\n onMouseDown={(e) => e.preventDefault()}\n disabled={loginState.loading}\n >\n {showConfirmPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n ),\n }}\n inputProps={{ maxLength: 16 }}\n style={{ paddingBottom: \"8px\" }}\n />\n </>\n ) : null}\n {loginState.isApiError ? (\n <FormHelperText style={{ color: \"red\" }}>\n {loginState.apierrorMessage}\n </FormHelperText>\n ) : null}\n <div\n style={{\n marginTop: \"20px\",\n display: \"flex\",\n flexDirection: \"row-reverse\",\n }}\n >\n <div\n style={{\n flex: \"auto\",\n textAlign: \"center\",\n marginTop: \"5px\",\n marginBottom: \"17px\",\n }}\n >\n <div>\n <GradientButton\n style={{ borderRadius: \"10px\", marginRight: \"5px\" }}\n // fullWidth\n\n disabled={loginState.loading}\n onClick={() => {\n navigate(loginPageEndpoint);\n }}\n starticon={\"West\"}\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\n >\n {t(\"backtologin\")}\n </GradientButton>\n\n <GradientButton\n style={{ borderRadius: \"10px\" }}\n disabled={loginState.loading}\n onClick={() => {\n onSubmit(input, loginState.workingState);\n }}\n ref={inputButtonRef}\n endicon={loginState.loading ? undefined : \"East\"}\n rotateIcon=\"scale(1.4) rotateX(360deg)\"\n >\n {loginState.loading ? (\n <CircularProgress size={25} thickness={4.6} />\n ) : (\n t(\"Next\")\n )}\n </GradientButton>\n </div>\n </div>\n </div>\n </div>\n </Fragment>\n );\n};\n","import { useReducer, useState, useRef, useEffect } from \"react\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport { useStyles } from \"./style\";\nimport { ForgotPasswordFields } from \"./forgotPasswordField\";\nimport { OTPModelForm } from \"./otpPopup\";\nimport { utilFunction } from \"@acuteinfo/common-base\";\nimport { useSnackbar } from \"notistack\";\nimport { Container, Grid, Tooltip } from \"@mui/material\";\nimport { BankDetails } from \"./bankDetails\";\nimport { useTranslation } from \"react-i18next\";\nimport { isBase64 } from \"./utils\";\nimport {\n OTPResendRequestFnType,\n UpdateNewPasswordFnType,\n ValidatePasswordFnType,\n VerifyOtpForPWDResetFnType,\n VerifyUsernameMobileFnType,\n} from \"pages/types\";\n\nconst inititalState = {\n isUsernameError: false,\n userMessageforusername: \"\",\n loading: false,\n isMobileError: false,\n userMessageforMobileno: \"\",\n isPasswordError: false,\n userMessageforPassword: \"\",\n isConfirmPasswordError: false,\n userMessageforconfirmPassword: \"\",\n workingState: 0,\n isApiError: false,\n apierrorMessage: \"\",\n otploading: false,\n OtpuserMessage: \"\",\n otpmodelClose: false,\n requestCd: \"\",\n username: \"\",\n description: \"\",\n auth_type: \"O\",\n transactionID: \"\",\n contactUser: \"\",\n forgotOtpSentText: \"\",\n newPasswordMessage: \"\",\n passwordValidateloading: false,\n confirmPasswordValidateloading: false,\n};\nconst reducer = (state, action) => {\n switch (action.type) {\n case \"verifyUserNameandMobileNoFailed\": {\n return {\n ...state,\n loading: false,\n isUsernameError: action?.payload?.isUsernameError ?? false,\n isMobileError: action?.payload?.isMobileError ?? false,\n userMessageforusername: action?.payload?.userMessageforusername ?? \"\",\n userMessageforMobileno: action?.payload?.userMessageforMobileno ?? \"\",\n isApiError: action?.payload?.isApiError ?? false,\n apierrorMessage: action?.payload?.apierrorMessage ?? \"\",\n requestCd: \"\",\n username: \"\",\n description: \"\",\n contactUser: \"\",\n };\n }\n case \"initverifyUserNameandMobileNo\": {\n return {\n ...state,\n loading: true,\n isUsernameError: false,\n isMobileError: false,\n requestCd: \"\",\n username: \"\",\n description: \"\",\n };\n }\n case \"verifyUserNameandMobileNoSuccess\": {\n return {\n ...state,\n loading: false,\n isUsernameError: false,\n isMobileError: false,\n workingState: 0,\n isApiError: false,\n apierrorMessage: \"\",\n requestCd: action?.payload?.requestCd ?? \"\",\n username: action?.payload?.username ?? \"\",\n description: action?.payload?.description ?? \"\",\n auth_type: action?.payload?.auth_type,\n company_ID: action?.payload?.company_ID,\n branch_cd: action?.payload?.branch_cd,\n otpValidFor: action?.payload?.otpValidFor,\n contactUser: action?.payload?.contactUser,\n forgotOtpSentText: action?.payload?.forgotOtpSentText,\n };\n }\n case \"inititateOTPVerification\": {\n return {\n ...state,\n loading: false,\n otploading: true,\n OtpuserMessage: \"\",\n otpmodelClose: false,\n };\n }\n case \"OTPVerificationComplate\": {\n return {\n ...state,\n loading: false,\n otploading: false,\n OtpuserMessage: \"\",\n workingState: 1,\n otpmodelClose: Boolean(action?.payload?.otpmodelclose),\n newPasswordMessage: action?.payload?.newPasswordMessage,\n };\n }\n case \"OTPVerificationFailed\": {\n return {\n ...state,\n otploading: false,\n OtpuserMessage: action?.payload?.error,\n otpmodelClose: Boolean(action?.payload?.otpmodelclose),\n };\n }\n case \"verifyPasswordFailed\": {\n return {\n ...state,\n loading: false,\n isPasswordError: action?.payload?.isPasswordError ?? false,\n isConfirmPasswordError:\n action?.payload?.isConfirmPasswordError ?? false,\n userMessageforPassword: action?.payload?.userMessageforPassword ?? \"\",\n userMessageforconfirmPassword:\n action?.payload?.userMessageforconfirmPassword ?? \"\",\n isApiError: false,\n apierrorMessage: \"\",\n passwordValidateloading: false,\n confirmPasswordValidateloading: false,\n };\n }\n case \"initverifyPasswordSetReq\": {\n return {\n ...state,\n loading: true,\n isPasswordError: false,\n isConfirmPasswordError: false,\n };\n }\n case \"passwordRegistaredSuccess\": {\n return {\n ...state,\n loading: false,\n isPasswordError: false,\n isConfirmPasswordError: false,\n };\n }\n case \"OTPResendSuccess\": {\n return {\n ...state,\n requestCd: action?.payload?.requestCd,\n };\n }\n case \"initPasswordValidate\": {\n return {\n ...state,\n passwordValidateloading: action?.payload?.passwordValidateloading,\n confirmPasswordValidateloading:\n action?.payload?.confirmPasswordValidateloading,\n isPasswordError: false,\n isConfirmPasswordError: false,\n };\n }\n case \"passwordValidateSuccess\": {\n return {\n ...state,\n passwordValidateloading: false,\n confirmPasswordValidateloading: false,\n isPasswordError: false,\n isConfirmPasswordError: false,\n };\n }\n default: {\n return state;\n }\n }\n};\n\ninterface ForgotPasswordControllerProps {\n bannerDetails: {\n bannerImg: string;\n bannerTitle: string;\n bannerNote: string;\n };\n logoUrl?: string;\n logoTitle?: string;\n updatenewPassword: UpdateNewPasswordFnType;\n OTPResendRequest: OTPResendRequestFnType;\n veirfyUsernameandMobileNo: VerifyUsernameMobileFnType;\n validatePasswordFn: ValidatePasswordFnType;\n verifyOTPForPWDReset: VerifyOtpForPWDResetFnType;\n LanguageComponent?: React.ComponentType<any>;\n screenFlag: \"password\" | \"totp\";\n navigate: NavigateFunction;\n loginPageEndpoint: string;\n TotpEnbaledDisabled?: React.ComponentType<any>;\n /**\n * Prevents characters input from specified string in username field\n *\n * e.g. \"!@#\". Characters `!`, `@`, `#` will be prevented in username field\n */\n preventSpecialChars?: string | null;\n}\n\nexport const ForgotPasswordControllerWrapper: React.FC<\n ForgotPasswordControllerProps\n> = ({\n screenFlag,\n updatenewPassword,\n validatePasswordFn,\n veirfyUsernameandMobileNo,\n verifyOTPForPWDReset,\n OTPResendRequest,\n logoUrl,\n logoTitle,\n LanguageComponent,\n bannerDetails,\n navigate,\n loginPageEndpoint,\n preventSpecialChars,\n TotpEnbaledDisabled,\n}) => {\n const classes = useStyles();\n const [loginState, dispath] = useReducer(reducer, inititalState);\n const [open, setOpen] = useState(false);\n const [totp, setTotp] = useState<any>({\n Enable: false,\n totpdata: \"\",\n });\n const { enqueueSnackbar } = useSnackbar();\n const otpResendRef = useRef(1);\n const { t } = useTranslation();\n const [dashboardLogoURL, setDashboardLogoURL] = useState<any | null>(null);\n const urlObj = useRef<any>(null);\n useEffect(() => {\n if (Boolean(logoUrl)) {\n if (isBase64(logoUrl)) {\n let blob = utilFunction.base64toBlob(logoUrl);\n urlObj.current =\n typeof blob === \"object\" && Boolean(blob)\n ? URL.createObjectURL(blob)\n : \"\";\n setDashboardLogoURL(urlObj.current);\n } else {\n setDashboardLogoURL(logoUrl);\n }\n }\n }, [logoUrl]);\n\n const validatePassword = async (data, flag) => {\n if (flag === \"P\" && data?.password.trim()?.length > 0) {\n dispath({\n type: \"initPasswordValidate\",\n payload: {\n passwordValidateloading: flag === \"P\" ? true : false,\n },\n });\n const { validateStatus, validateData } = await validatePasswordFn({\n USER_ID: data.userName,\n PASSWORD: flag === \"P\" ? data?.password : data?.confirmpassword,\n SCREEN_REF: \"FORGET_PW\",\n });\n if (validateStatus === \"0\") {\n switch (validateData?.O_STATUS) {\n case \"999\":\n dispath({\n type: \"verifyPasswordFailed\",\n payload: {\n isPasswordError: flag === \"P\" ? true : false,\n isConfirmPasswordError: flag === \"P\" ? false : true,\n userMessageforPassword:\n flag === \"P\" ? validateData?.O_MESSAGE : \"\",\n userMessageforconfirmPassword:\n flag === \"P\" ? \"\" : (validateData?.O_MESSAGE ?? \"\"),\n apierrorMessage: validateData?.O_MESSAGE,\n },\n });\n break;\n case \"0\":\n dispath({ type: \"passwordValidateSuccess\" });\n break;\n }\n }\n } else if (flag === \"C\" && data?.confirmpassword.trim()?.length > 0) {\n let validationData = {\n isPasswordError: false,\n userMessageforPassword: \"\",\n isConfirmPasswordError: false,\n userMessageforconfirmPassword: \"\",\n };\n if (!Boolean(data.confirmpassword)) {\n validationData.isConfirmPasswordError = true;\n validationData.userMessageforconfirmPassword =\n \"Confirmpasswordisrequired\";\n } else if (\n Boolean(data.password) &&\n data.password !== data.confirmpassword\n ) {\n validationData.isConfirmPasswordError = true;\n validationData.userMessageforconfirmPassword =\n \"New Password and Confirm Password did not matched\";\n }\n dispath({\n type: \"verifyPasswordFailed\",\n payload: validationData,\n });\n }\n };\n\n const onSubmitHandel = async (data, flag) => {\n if (verifyRequestData(data, flag)) {\n if (flag === 0) {\n dispath({ type: \"initverifyUserNameandMobileNo\" });\n const {\n status,\n data: resdata,\n message,\n } = await veirfyUsernameandMobileNo(\n data?.userName.toLowerCase(),\n data?.mobileno,\n screenFlag,\n );\n\n if (status === \"0\") {\n dispath({\n type: \"verifyUserNameandMobileNoSuccess\",\n payload: {\n requestCd: String(resdata?.TRAN_CD ?? \"\"),\n username: data?.userName,\n description: resdata?.DESCRIPTION,\n auth_type: resdata?.AUTH_TYPE,\n company_ID: resdata?.COMP_CD,\n branch_cd: resdata?.BRANCH_CD,\n otpValidFor: resdata?.OTP_VALID,\n contactUser: resdata?.CONTACT2,\n forgotOtpSentText: resdata?.OTP_SENT_TEXT,\n },\n });\n setOpen(true);\n } else {\n dispath({\n type: \"verifyUserNameandMobileNoFailed\",\n payload: {\n isApiError: true,\n apierrorMessage: message,\n },\n });\n }\n } else if (flag === 1) {\n dispath({ type: \"initverifyPasswordSetReq\" });\n const { validateStatus, validateData } = await validatePasswordFn({\n USER_ID: data?.userName,\n PASSWORD: data?.password,\n SCREEN_REF: \"FORGET_PW\",\n });\n // console.log(\"validateData\", validateData?.O_MESSAGE, validateStatus)\n if (validateStatus === \"0\") {\n switch (validateData?.O_STATUS) {\n case \"999\":\n dispath({\n type: \"verifyPasswordFailed\",\n payload: {\n isPasswordError: true,\n userMessageforPassword: validateData?.O_MESSAGE,\n apierrorMessage: validateData?.O_MESSAGE,\n },\n });\n break;\n case \"0\":\n const {\n status,\n data: resdata,\n message,\n } = await updatenewPassword(\n loginState?.requestCd,\n loginState?.username,\n data?.password,\n );\n if (status === \"0\") {\n dispath({ type: \"passwordRegistaredSuccess\" });\n enqueueSnackbar(\"Password successfully reset\", {\n variant: \"success\",\n });\n navigate(loginPageEndpoint);\n } else if (status === \"99\") {\n dispath({\n type: \"verifyPasswordFailed\",\n payload: {\n isApiError: true,\n apierrorMessage: message,\n },\n });\n } else {\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n navigate(loginPageEndpoint);\n }\n }\n } else {\n dispath({\n type: \"verifyPasswordFailed\",\n payload: {\n isApiError: true,\n apierrorMessage: validateData?.O_MESSAGE,\n },\n });\n }\n }\n }\n };\n const verifyRequestData = (data, flag) => {\n if (flag === 0) {\n let validationData = {\n isUsernameError: false,\n isMobileError: false,\n userMessageforusername: \"\",\n userMessageforMobileno: \"\",\n };\n if (!Boolean(data.userName)) {\n validationData.isUsernameError = true;\n validationData.userMessageforusername = \"UsernameisRequired\";\n }\n if (!Boolean(data.mobileno)) {\n validationData.isMobileError = true;\n validationData.userMessageforMobileno = \"MobileNoisRequired\";\n } else if (\n isNaN(data.mobileno) ||\n (data.mobileno.length !== 10 && data.mobileno.length !== 13)\n ) {\n validationData.isMobileError = true;\n validationData.userMessageforMobileno = \"Please enter valid Mobile No.\";\n }\n dispath({\n type: \"verifyUserNameandMobileNoFailed\",\n payload: validationData,\n });\n return !(validationData.isMobileError || validationData.isUsernameError);\n } else if (flag === 1) {\n let validationData = {\n isPasswordError: false,\n userMessageforPassword: \"\",\n isConfirmPasswordError: false,\n userMessageforconfirmPassword: \"\",\n };\n let pwdverify = utilFunction.ValidatePassword(data.password);\n if (Boolean(pwdverify)) {\n validationData.isPasswordError = true;\n validationData.userMessageforPassword = pwdverify;\n }\n if (!Boolean(data.confirmpassword)) {\n validationData.isConfirmPasswordError = true;\n validationData.userMessageforconfirmPassword =\n \"Confirmpasswordisrequired\";\n } else if (\n Boolean(data.password) &&\n data.password !== data.confirmpassword\n ) {\n validationData.isConfirmPasswordError = true;\n validationData.userMessageforconfirmPassword =\n \"New Password and Confirm Password did not matched\";\n }\n dispath({\n type: \"verifyPasswordFailed\",\n payload: validationData,\n });\n return !(\n validationData.isConfirmPasswordError || validationData.isPasswordError\n );\n }\n return true;\n };\n const handleClose = () => {\n setOpen(false);\n };\n const changeUserName = () => {\n dispath({\n type: \"backToUsernameVerification\",\n });\n };\n\n const VerifyOTP = async (OTPNumber) => {\n if (Boolean(OTPNumber) && OTPNumber.toString().length === 6) {\n dispath({ type: \"inititateOTPVerification\" });\n const {\n status,\n data: resdata,\n message,\n } = await verifyOTPForPWDReset(\n loginState?.requestCd,\n loginState?.username,\n OTPNumber,\n loginState?.auth_type,\n screenFlag,\n );\n if (status === \"0\") {\n if (screenFlag === \"totp\") {\n setTotp({\n totpdata: {\n secretTockenQR: resdata?.SECRET_TOCKEN_QR,\n secretTocken: resdata?.SECRET_TOCKEN,\n userName: resdata?.USER_NAME,\n },\n Enable: true,\n });\n } else {\n dispath({\n type: \"OTPVerificationComplate\",\n payload: {\n otpmodelclose: true,\n newPasswordMessage: resdata?.MESSAGE,\n },\n });\n }\n } else if (status === \"99\") {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: message },\n });\n } else {\n enqueueSnackbar(message, {\n variant: \"error\",\n });\n navigate(loginPageEndpoint);\n }\n } else {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: \"Please enter a 6 digit OTP number\" },\n });\n }\n };\n return (\n <>\n <Grid container style={{ height: \"100vh\", overflow: \"hidden\" }}>\n <BankDetails bannerDetails={bannerDetails} />\n <Grid item xs={6} md={6} lg={6} sm={6}>\n {logoUrl ? (\n <Grid\n container\n direction=\"row\"\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n padding={\"31px\"}\n maxWidth={\"210px\"}\n ml={\"auto\"}\n >\n <Tooltip describeChild title={logoTitle ?? \"\"}>\n <img\n src={Boolean(dashboardLogoURL) ? dashboardLogoURL : \"\"}\n alt=\"Logo\"\n width={\"100%\"}\n />\n </Tooltip>\n </Grid>\n ) : null}\n {LanguageComponent ? (\n <Grid\n container\n direction=\"row\"\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n padding={\"0 35px 0 0\"}\n maxWidth={\"180px\"}\n ml={\"auto\"}\n >\n <LanguageComponent />\n </Grid>\n ) : null}\n <Container maxWidth=\"xs\">\n <Grid alignItems=\"center\" style={{ paddingTop: \"20px\" }}>\n <h2 style={{ margin: \"10px 0\" }}>\n {loginState.workingState === 1\n ? t(\"Setnewpassword\")\n : screenFlag === \"totp\"\n ? t(\"ResetTOTP\")\n : t(\"ForgotPassword\")}\n </h2>\n {loginState.workingState === 1 ? (\n <>\n <div\n style={{\n color: \"#949597\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n alignItems: \"center\",\n fontStyle: \"normal\",\n lineHeight: \"27px\",\n }}\n >\n <span\n style={{\n marginRight: \"12px\",\n color: \"#1C1C1C\",\n }}\n >\n {\" \"}\n {t(\"Hello\")}{\" \"}\n {loginState?.username\n ? loginState.username.charAt(0).toUpperCase() +\n loginState.username.slice(1)\n : null}\n </span>\n {t(\"OTSuccessfullynewpassword\", {\n defaultValue: loginState?.newPasswordMessage ?? \"\",\n })}\n </div>\n </>\n ) : null}\n {open ? (\n <OTPModelForm\n classes={classes}\n handleClose={handleClose}\n loginState={loginState}\n VerifyOTP={VerifyOTP}\n OTPError={t(loginState?.OtpuserMessage ?? \"\")}\n setOTPError={(error) => {\n dispath({\n type: \"OTPVerificationFailed\",\n payload: { error: error },\n });\n }}\n resendFlag={\"FORGET_PW\"}\n setNewRequestID={(newRequestID) => {\n dispath({\n type: \"OTPResendSuccess\",\n payload: { requestCd: newRequestID },\n });\n otpResendRef.current = otpResendRef.current + 1;\n }}\n otpresendCount={otpResendRef.current}\n OTPResendRequest={OTPResendRequest}\n />\n ) : (\n <ForgotPasswordFields\n classes={classes}\n loginState={loginState}\n onSubmit={onSubmitHandel}\n navigate={navigate}\n loginPageEndpoint={loginPageEndpoint}\n preventSpecialChars={preventSpecialChars}\n validatePassword={validatePassword}\n />\n )}\n </Grid>\n </Container>\n {totp?.Enable && TotpEnbaledDisabled ? (\n <TotpEnbaledDisabled totpdata={totp?.totpdata} flag=\"reset\" />\n ) : null}\n </Grid>\n </Grid>\n </>\n );\n};\n","import { GridMetaDataType } from \"@acuteinfo/common-base\";\nexport const BranchSelectionGridMetaData: GridMetaDataType = {\n gridConfig: {\n dense: true,\n gridLabel: \"AccessBranchList\",\n rowIdColumn: \"BRANCH_CD\",\n // searchPlaceholder: \"Branches\",\n defaultColumnConfig: {\n width: 400,\n maxWidth: 450,\n minWidth: 300,\n },\n\n allowColumnReordering: false,\n disableSorting: false,\n hideHeader: false,\n disableGroupBy: true,\n enablePagination: false,\n containerHeight: {\n min: \"68vh\",\n max: \"68vh \",\n },\n allowFilter: false,\n allowColumnHiding: false,\n allowRowSelection: false,\n isCusrsorFocused: true,\n hideFooter: true,\n },\n columns: [\n {\n accessor: \"BRANCH_CD\",\n columnName: \"BranchCode\",\n sequence: 1,\n alignment: \"left\",\n componentType: \"default\",\n width: 200,\n minWidth: 140,\n maxWidth: 220,\n },\n {\n accessor: \"BRANCH_NM\",\n columnName: \"BranchName\",\n sequence: 2,\n alignment: \"left\",\n componentType: \"default\",\n width: 280,\n minWidth: 280,\n maxWidth: 420,\n },\n {\n accessor: \"DISP_STATUS\",\n columnName: \"Status\",\n sequence: 3,\n alignment: \"left\",\n componentType: \"default\",\n width: 200,\n minWidth: 140,\n maxWidth: 220,\n },\n {\n accessor: \"BEGIN_DATETIME\",\n columnName: \"BeginTime\",\n sequence: 4,\n alignment: \"left\",\n componentType: \"date\",\n dateFormat: \"dd/MM/yyyy hh:mm a\",\n width: 222,\n minWidth: 140,\n maxWidth: 240,\n },\n {\n accessor: \"END_DATETIME\",\n columnName: \"EndTime\",\n sequence: 5,\n alignment: \"left\",\n componentType: \"date\",\n dateFormat: \"dd/MM/yyyy hh:mm a\",\n width: 222,\n minWidth: 140,\n maxWidth: 240,\n },\n // {\n // accessor: \"DAYEND_STATUS\",\n // columnName: \"Dayend Status\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"EOD_RUNNING_STATUS\",\n // columnName: \"EOD Running Status\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"BASE_COMP_CD\",\n // columnName: \"Base Comp Cd\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"BASE_BRANCH_CD\",\n // columnName: \"Base Branch Cd\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"COMP_CD\",\n // columnName: \"Comp Cd\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n // {\n // accessor: \"COMP_NM\",\n // columnName: \"Comp Name\",\n // sequence: 6,\n // componentType: \"default\",\n // isVisible: false,\n // },\n ],\n};\n","import { makeStyles } from \"@mui/styles\";\r\n\r\nexport const useStyles = makeStyles((theme: any) => ({\r\n heading_user_img: {\r\n width: \"40px\",\r\n height: \"40px\",\r\n // cursor: \"pointer\",\r\n },\r\n heading_user_img_border: {\r\n border: \"2px dashed var(--theme-color3)\",\r\n borderRadius: \"50%\",\r\n padding: \"4px\",\r\n },\r\n logo: {\r\n height: \"38px\",\r\n },\r\n}));\r\n","import {\n GridWrapper,\n ActionTypes,\n GridMetaDataType,\n ClearCacheProvider,\n Alert,\n queryClient,\n usePopupContext,\n} from \"@acuteinfo/common-base\";\n\nimport { Fragment, useCallback, useEffect } from \"react\";\nimport { BranchSelectionGridMetaData } from \"./gridMetadata\";\nimport \"./styles.css\";\nimport {\n Avatar,\n Box,\n Button,\n Grid,\n Stack,\n Tooltip,\n tooltipClasses,\n} from \"@mui/material\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport { useSnackbar } from \"notistack\";\n\nimport { useStyles } from \"./style\";\nimport { styled } from \"@mui/material/styles\";\nimport { BranchSelectionGridDataFnType, GetMenuDataFnType } from \"pages/types\";\nimport { t } from \"i18next\";\nconst actions: ActionTypes[] = [\n {\n actionName: \"back\",\n actionLabel: \"Back\",\n multiple: false,\n rowDoubleClick: false,\n actionTextColor: \"var(--theme-color3)\",\n actionBackground: \"var(--white)\",\n startsIcon: \"West\",\n rotateIcon: \"scale(1.4) rotateX(-360deg)\",\n },\n {\n actionName: \"proceed\",\n actionLabel: \"Proceed\",\n multiple: false,\n rowDoubleClick: true,\n actionTextColor: \"var(--white)\",\n actionBackground: \"var(--theme-color3)\",\n onEnterSubmit: true,\n endsIcon: \"East\",\n rotateIcon: \"scale(1.4) rotateX(-360deg)\",\n },\n];\n\ninterface BranchSelectionWrapperProps {\n selectionMode: \"S\" | \"C\";\n authState: any;\n isBranchSelectedFn: () => boolean;\n isLoggedInFn: () => boolean;\n logoutFn: () => void;\n branchSelectFn: Function;\n BranchSelectionGridDataApiFn: BranchSelectionGridDataFnType;\n GetMenuDataApiFn: GetMenuDataFnType;\n sideImage?: string;\n logos: any;\n logo?: string;\n navigate: NavigateFunction;\n dashboardUrl: string;\n loginUrl: string;\n appTranCd: string;\n}\n\nconst BranchSelectionGrid: React.FC<BranchSelectionWrapperProps> = ({\n selectionMode,\n authState,\n isBranchSelectedFn,\n isLoggedInFn,\n logoutFn,\n logos,\n logo,\n navigate,\n BranchSelectionGridDataApiFn,\n GetMenuDataApiFn,\n sideImage,\n branchSelectFn,\n dashboardUrl,\n loginUrl,\n appTranCd,\n}) => {\n const classes = useStyles();\n const { MessageBox } = usePopupContext();\n\n const { enqueueSnackbar } = useSnackbar();\n const { data, isLoading, isFetching, error, isError, refetch } = useQuery<\n any,\n any\n >([\"BranchSelectionGridData\"], () => BranchSelectionGridDataApiFn());\n\n useEffect(() => {\n refetch();\n return () => {\n queryClient.removeQueries([\"BranchSelectionGridData\", {}]);\n };\n }, []);\n\n useEffect(() => {\n if (!isLoggedInFn()) {\n navigate(loginUrl);\n } else if (isBranchSelectedFn() && selectionMode !== \"C\") {\n navigate(dashboardUrl);\n }\n }, [isBranchSelectedFn, isLoggedInFn]);\n\n type MutationErrorType = {\n severity: string;\n error_msg: string;\n error_detail: string;\n };\n\n const mutation: any = useMutation(GetMenuDataApiFn, {\n onSuccess: (data, extreData: any) => {\n branchSelectFn({\n menulistdata: data,\n branchCode: extreData?.BRANCH_CD,\n branch: extreData?.BRANCH_NM,\n baseBranchCode: extreData?.BASE_BRANCH_CD,\n });\n },\n });\n const getError: any = mutation.error as MutationErrorType;\n const setCurrentAction = useCallback(\n async (data) => {\n if (data.name === \"proceed\") {\n if (data.rows?.length === 0) {\n enqueueSnackbar(\"Please Select Branch\", {\n variant: \"error\",\n });\n } else if (data.rows?.[0]?.data?.STATUS === \"C\") {\n await MessageBox({\n message: \"BranchDayEndMessage\",\n messageTitle: \"BranchDayEndTitle\",\n icon: \"ERROR\",\n defFocusBtnName: \"Ok\",\n });\n } else {\n mutation.mutate({\n BASE_COMP_CD: data.rows?.[0]?.data?.BASE_COMP_CD ?? \"\",\n BASE_BRANCH_CD: data.rows?.[0]?.data?.BASE_BRANCH_CD ?? \"\",\n COMP_CD: data.rows?.[0]?.data?.COMP_CD ?? \"\",\n BRANCH_CD: data.rows?.[0]?.data?.BRANCH_CD ?? \"\",\n GROUP_NAME: authState?.groupName ?? \"\",\n APP_TRAN_CD: appTranCd,\n COMP_NM: data.rows?.[0]?.data?.COMP_NM ?? \"\",\n BRANCH_NM: data.rows?.[0]?.data?.BRANCH_NM ?? \"\",\n DAYEND_STATUS: data.rows?.[0]?.data?.DAYEND_STATUS ?? \"\",\n EOD_RUNNING_STATUS: data.rows?.[0]?.data?.EOD_RUNNING_STATUS ?? \"\",\n IS_UPD_DEF_BRANCH: authState?.user?.isUpdDefBranch ?? \"\",\n COMP_BASE_BRANCH_CD:\n data.rows?.[0]?.data?.COMP_BASE_BRANCH_CD ?? \"\",\n selectionMode: selectionMode,\n authState,\n });\n }\n } else if (data.name === \"back\") {\n const res = await MessageBox({\n messageTitle: \"confirmation\",\n message: \"AreYouSureToExit\",\n icon: \"CONFIRM\",\n buttonNames: [\"Yes\", \"No\"],\n defFocusBtnName: \"Yes\",\n });\n\n if (res === \"Yes\") {\n if (selectionMode === \"C\") {\n navigate(dashboardUrl, {\n replace: true,\n });\n } else {\n logoutFn();\n }\n }\n }\n },\n [navigate, data, mutation],\n );\n\n useEffect(() => {\n var oneBranchOpen = data?.some((branch) => branch.STATUS === \"O\");\n if (oneBranchOpen === false) {\n enqueueSnackbar(\n \"Branch is in Day End Status.~rPlease contact system Vendor.\",\n {\n variant: \"error\",\n },\n );\n logoutFn();\n }\n if (data?.length === 1) {\n if (data?.[0]?.STATUS === \"O\") {\n setCurrentAction({ name: \"proceed\", rows: [{ data: { ...data[0] } }] });\n }\n }\n }, [JSON.stringify(data)]);\n\n const Greetings = (userId) => {\n let hours = new Date().getHours();\n let greet;\n\n if (hours < 12) greet = \"morning\";\n else if (hours >= 12 && hours <= 16) greet = \"afternoon\";\n else if (hours >= 16 && hours <= 24) greet = \"evening\";\n\n return (\n <span>\n Good {greet} {userId},\n </span>\n );\n };\n\n const LightTooltip = styled(({ className, ...props }: any) => (\n <Tooltip {...props} classes={{ popper: className }} />\n ))(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.palette.common.white,\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: theme.shadows[1],\n fontSize: 13,\n },\n }));\n\n // const greet = Greetings();\n\n return (\n <>\n <Grid\n container\n style={{\n margin: \"0\",\n padding: \"0\",\n height: \"100vh\",\n // overflowY: \"hidden\",\n }}\n >\n {sideImage ? (\n <Grid item lg={1} md={1} xl={1} xs={1} sm={1}>\n <img className=\"sideImage\" src={sideImage} alt=\"side-Image\" />\n </Grid>\n ) : null}\n\n <Grid\n item\n lg={11}\n md={11}\n xl={11}\n xs={11}\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n <Grid\n container\n style={{\n minHeight: \"100vh\",\n padding: \"10px 0px 0px 0px\",\n }}\n lg={11}\n md={11}\n xl={11}\n xs={11}\n >\n <Grid\n container\n style={{\n margin: \"0\",\n padding: \"0\",\n // height: \"12vh\",\n }}\n lg={12}\n md={12}\n xl={12}\n xs={12}\n >\n <Grid\n xs={12}\n sm={1}\n md={1}\n lg={1}\n xl={1}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n visibility: Boolean(logos?.profile) ? \"visible\" : \"hidden\",\n // justifyContent: \"center\",\n }}\n >\n <Stack direction=\"row\" spacing={4} ml={1}>\n <Box\n className={classes.heading_user_img_border}\n sx={{ cursor: \"pointer\" }}\n >\n <LightTooltip\n title={\n <>\n <div>\n {t(\"UserID\")} : {authState?.user?.id ?? \"\"}\n </div>\n <div>\n {t(\"Role\")} : {authState?.roleName ?? \"\"}\n </div>\n <div>{t(\"LastUnsuccessfulLogin\")} : \"\"</div>\n </>\n }\n placement=\"bottom-start\"\n >\n <Avatar\n className={classes.heading_user_img}\n // onClick={handleNavigate}\n alt=\"Remy Sharp\"\n src={logos?.profile ?? \"\"}\n />\n </LightTooltip>\n </Box>\n </Stack>\n </Grid>\n <Grid\n xs={12}\n sm={5}\n md={5}\n lg={5}\n xl={5}\n sx={{\n justifyContent: \"center\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <h1\n className=\"name-heading\"\n style={{ fontSize: \"24px\", margin: \"4px 0px\" }}\n >\n {t(\"Welcome\")}\n <span>{`${authState?.user?.name ?? \"\"},`}</span>\n </h1>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: 10 }}>\n <h3 style={{ margin: \"4px 0px\" }}>\n {Greetings(authState?.user?.id ?? \"\")}\n </h3>\n 👋\n </div>\n </Grid>\n <Grid\n xs={12}\n sm={1}\n md={1}\n lg={1}\n xl={1}\n sx={{\n display: \"flex\",\n // flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n visibility: Boolean(logos?.bank) ? \"visible\" : \"hidden\",\n }}\n >\n <Stack direction=\"row\" justifyContent=\"flex-start\" spacing={2}>\n <Box className={classes.heading_user_img_border}>\n <Avatar\n className={classes.heading_user_img}\n alt=\"Remy Sharp\"\n src={logos?.bank ?? \"\"}\n />\n </Box>\n </Stack>\n </Grid>\n <Grid\n xs={12}\n sm={3}\n md={3}\n lg={3}\n xl={3}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n }}\n >\n <div\n className=\"bank-name-container\"\n style={{ fontSize: \"14px\" }}\n >\n <p className=\"bank-name\">\n {`${t(\"BankName\")}: ${authState?.companyName ?? \"\"}`}\n </p>\n </div>\n\n <p className=\"emp-id\">\n {`${t(\"EmpId\")}: ${authState?.user?.employeeID ?? \"\"}`}\n </p>\n </Grid>\n <Grid\n xs={12}\n sm={3}\n md={3}\n lg={2}\n xl={2}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"right\",\n visibility: Boolean(logo) ? \"visible\" : \"hidden\",\n }}\n >\n {\" \"}\n <div>\n <img\n src={logo ?? \"\"}\n alt=\"bank_logo\"\n className={classes.logo}\n />\n </div>\n </Grid>\n </Grid>\n\n {isError ? (\n <Fragment>\n <div style={{ width: \"100%\", paddingTop: \"10px\" }}>\n <Alert\n severity={error?.severity ?? \"error\"}\n errorMsg={error?.error_msg ?? \"Error\"}\n errorDetail={error?.error_detail ?? \"\"}\n />\n </div>\n </Fragment>\n ) : mutation.isError && mutation.error ? (\n <Fragment>\n <div style={{ width: \"100%\", paddingTop: \"10px\" }}>\n <Alert\n severity={getError.severity ?? \"error\"}\n errorMsg={getError.error_msg ?? \"Error\"}\n errorDetail={getError.error_detail ?? \"\"}\n />\n </div>\n </Fragment>\n ) : null}\n <GridWrapper\n key={`branchSelection`}\n finalMetaData={BranchSelectionGridMetaData as GridMetaDataType}\n data={data ?? []}\n setData={() => null}\n actions={actions}\n setAction={setCurrentAction}\n controlsAtBottom={true}\n actionContextAtBottom={true}\n headerToolbarStyle={{\n background: \"#fff !important\",\n padding: \"0\",\n \"& .MuiTypography-root\": {\n color: \"black\",\n },\n }}\n disableMultipleRowSelect={true}\n variant=\"outlined\"\n loading={isLoading || isFetching || mutation.isLoading}\n defaultSelectedRowId={\n authState?.user?.defaultSelectBranch ?? null\n }\n />\n {isError || data?.length === 0 ? (\n <Button\n sx={{\n backgroundColor: \"var(--theme-color3)\",\n position: \"absolute\",\n right: \"113px\",\n bottom: \"20px\",\n width: \"7rem\",\n \"&:hover\": {\n backgroundColor: \"var(--theme-color3)\",\n },\n }}\n onClick={async () => {\n const res = await MessageBox({\n messageTitle: \"confirmation\",\n message: \"AreYouSureToExit\",\n icon: \"CONFIRM\",\n buttonNames: [\"Yes\", \"No\"],\n defFocusBtnName: \"Yes\",\n });\n if (res === \"Yes\") {\n if (selectionMode === \"C\") {\n navigate(dashboardUrl, {\n replace: true,\n });\n } else {\n logoutFn();\n }\n }\n }}\n >\n Back\n </Button>\n ) : null}\n </Grid>\n </Grid>\n </Grid>\n </>\n );\n};\n\nexport const BranchSelectionGridWrapper: React.FC<\n BranchSelectionWrapperProps\n> = (props) => {\n return (\n <ClearCacheProvider>\n <BranchSelectionGrid {...props} />\n </ClearCacheProvider>\n );\n};\n","import { alpha } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\nexport const useStyles = makeStyles((theme: any) => ({\n appBar: {\n // zIndex: theme.zIndex.drawer + 1,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n color: \"#0063A3\",\n height: \"unset\",\n background: \"var(--white)\",\n boxShadow: \"0px 1px 0px -0.5px #DEE0E2\",\n },\n searchBar: {\n width: 290,\n border: \"none\",\n color: \"rgba(0, 0, 0, 0.87) !important\",\n backgroundColor: \"rgb(235 237 238 / 26%)!important\",\n\n \"& input\": {\n width: \"100% !important\",\n },\n },\n searchList: {\n position: \"absolute\",\n background: \"#fff\",\n width: \"100%\",\n borderRadius: \"6px\",\n boxShadow: \"0 12px 25px rgba(0,0,0,.3)\",\n top: \"120%\",\n height: \"auto\",\n maxHeight: \"325px\",\n overflowY: \"auto\",\n\n \"& .list-links\": {\n background: \"none\",\n border: \"none\",\n outline: \"none\",\n cursor: \"pointer\",\n textDecoration: \"none\",\n padding: \"0.7rem 1rem\",\n fontSize: \"0.90rem\",\n textAlign: \"left\",\n borderBottom: \"1px solid #ddd\",\n color: \"#222 !important\",\n fontWeight: 500,\n \"&:hover, &.active\": {\n backgroundColor: \"#f4f4f4\",\n },\n },\n },\n appBarShift: {\n paddingLeft: \"0px\",\n // width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create([\"width\", \"margin\"], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n background: \"rgba(250, 251, 255, 0.9)\",\n }),\n },\n heading_user_dtl: {\n width: \"458px\",\n height: \"73px\",\n left: \"37px\",\n top: \"calc(50% - 73px/2)\",\n },\n heading_user_img: {\n width: \"40px\",\n height: \"40px\",\n // cursor: \"pointer\",\n },\n heading_user_img_border: {\n border: \"2px dashed var(--theme-color3)\",\n borderRadius: \"50%\",\n padding: \"4px\",\n },\n toolbar: {\n paddingLeft: \"0px\",\n },\n title: {\n flexGrow: 1,\n padding: theme.spacing(0.5, 0),\n color: \"var(--theme-color1)\",\n },\n searchRoot: {\n fontFamily: theme.typography.fontFamily,\n position: \"relative\",\n boxShadow:\n \"0px 2px 4px -1px rgba(0,0,0,0.2), 0px 4px 5px 0px rgba(0,0,0,0.14), 0px 1px 10px 0px rgba(0,0,0,0.12)\",\n marginRight: theme.spacing(2),\n marginLeft: theme.spacing(1),\n marginBottom: theme.spacing(0.25),\n marginTop: theme.spacing(0.25),\n borderRadius: 40,\n backgroundColor: alpha(theme.palette.common.white, 0.15),\n \"&:hover\": {\n backgroundColor: alpha(theme.palette.common.white, 0.25),\n },\n \"& $inputInput\": {\n transition: theme.transitions.create(\"width\"),\n width: 120,\n \"&:focus\": {\n width: 170,\n },\n },\n },\n search: {\n width: theme.spacing(6),\n height: \"100%\",\n position: \"absolute\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n inputRoot: {\n color: \"inherit\",\n marginTop: 0,\n borderRadius: \"40px\",\n },\n inputInput: {\n padding: theme.spacing(1, 1, 1, 6),\n },\n\n loggedInUser: {\n marginLeft: theme.spacing(2),\n },\n nameClass: {\n color: \"#0063A3\",\n fontWeight: 600,\n textTransform: \"capitalize\",\n lineHeight: \"1.4\",\n textAlign: \"left\",\n },\n dropDown: {\n fontSize: \"2rem\",\n },\n vTop: {\n verticalAlign: \"top\",\n paddingLeft: \"4px\",\n color: \"var(--theme-color1)\",\n },\n userDesignation: {\n margin: \"0px\",\n fontWeight: 500,\n fontSize: \"0.875rem\",\n lineHeight: 1.57,\n color: \"var(--theme-color1)\",\n },\n userName: {\n margin: \"0px\",\n fontWeight: 500,\n fontSize: \"0.875rem\",\n lineHeight: 1.57,\n color: \"var(--theme-color3)\",\n },\n userprofilehover: {\n \"&:hover\": {\n backgroundColor: \"var(--white)\",\n },\n },\n lang_svg: {\n marginRight: \"10px\",\n width: \"22px\",\n height: \"22px\",\n },\n logo: {\n height: \"38px\",\n },\n version01: {\n margin: \"0\",\n textAlign: \"center\",\n color: \"var(--theme-color3)\",\n fontSize: \"9px\",\n },\n DrawerClose_icon: {\n color: \"var(--theme-color3)\",\n position: \"static\",\n background: \"transperant\",\n \"&:hover\": {\n background: \"var(--theme-color4)\",\n },\n width: \"46px\",\n height: \"46px\",\n },\n marquee: {\n animation: \"$marquee 10s linear infinite\",\n animationDelay: \"3s\",\n },\n \"@keyframes marquee\": {\n \"0%\": { transform: \"translateX(100%)\" },\n \"100%\": { transform: \"translateX(-100%)\" },\n },\n popover: {\n popover: {\n maxWidth: \"100%\",\n width: \"fit-content\",\n \"& .MuiPopover-paper\": {\n maxWidth: \"100%\",\n },\n },\n },\n blinkHard: {\n animation: \"$blinker 1s step-end infinite\",\n },\n \"@keyframes blinker\": {\n \"50%\": {\n opacity: 0,\n },\n },\n}));\n","import React, { useEffect, useState } from \"react\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport { useStyles } from \"./style\";\nimport BecomePartnerImg from \"../../assets/images/BecomePartnerImg.svg\";\nimport LogoutIcon from \"@mui/icons-material/Logout\";\nimport MenuOutlinedIcon from \"@mui/icons-material/MenuOutlined\";\nimport { styled, alpha } from \"@mui/material/styles\";\nimport {\n AppBar,\n Avatar,\n Box,\n IconButton,\n Stack,\n Toolbar,\n Tooltip,\n Typography,\n tooltipClasses,\n useMediaQuery,\n} from \"@mui/material\";\nimport { useTranslation } from \"react-i18next\";\nimport { format } from \"date-fns\";\n\ninterface AppbarWrapperProps {\n handleDrawerOpen: Function;\n handleDrawerClose: Function;\n open: boolean;\n authState: any;\n LanguageComponent?: React.ComponentType<any>;\n SearchComponent?: React.ComponentType<any>;\n dashboardUrl?: string;\n logos?: any;\n bankLogo?: any;\n profilePic?: string;\n handleLogout?: Function;\n handleProfile?: Function;\n navigate: NavigateFunction;\n hideGreetings?: boolean;\n menuIconConfig?: {\n menuIconPosition?: \"left\" | \"right\";\n OpenIconComponent?: React.ReactNode;\n CloseIconComponent?: React.ReactNode;\n };\n optionalComponents?: {\n Component: React.ComponentType<any>;\n props?: { [key: string]: any };\n }[];\n /**\n * Accepts useIdleTimer instance\n */\n idleTimer?: any;\n}\n\nconst StyledAppBar = styled(AppBar)(({ theme }) => ({\n boxShadow: \"0 2px 4px rgba(0,0,0,0.1)\",\n padding: \"6px 0\",\n}));\n\nconst LogoContainer = styled(Box)(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(1),\n minWidth: \"fit-content\",\n}));\n\nconst CompanyLogo = styled(Avatar)(({ theme }) => ({\n backgroundColor: \"white\",\n width: 35,\n height: 35,\n}));\n\nconst BankInfoContainer = styled(Box)(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(2),\n marginLeft: theme.spacing(3),\n [theme.breakpoints.down(\"md\")]: {\n marginLeft: theme.spacing(1),\n gap: theme.spacing(1),\n },\n}));\n\nconst BankInfoText = styled(Box)(({ theme }) => ({\n display: \"flex\",\n flexDirection: \"column\",\n color: \"white\",\n}));\n\nconst Search = styled(\"div\")(({ theme }) => ({\n position: \"relative\",\n borderRadius: theme.shape.borderRadius,\n backgroundColor: alpha(theme.palette.common.white, 0.15),\n \"&:hover\": {\n backgroundColor: alpha(theme.palette.common.white, 0.25),\n },\n marginLeft: 0,\n width: \"100%\",\n [theme.breakpoints.up(\"sm\")]: {\n width: \"auto\",\n },\n}));\n\nconst RightSection = styled(Box)(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(1),\n marginLeft: \"auto\",\n}));\n\nconst GreetingText = styled(Typography)(({ theme }) => ({\n color: \"var(--theme-color3)\",\n fontSize: \"14px\",\n marginRight: theme.spacing(1),\n [theme.breakpoints.down(\"md\")]: {\n display: \"none\",\n },\n}));\n\nexport const AppbarWrapper: React.FC<AppbarWrapperProps> = ({\n handleDrawerOpen,\n handleDrawerClose,\n open,\n authState,\n LanguageComponent,\n SearchComponent,\n dashboardUrl,\n logos,\n bankLogo,\n profilePic,\n handleLogout,\n handleProfile,\n navigate,\n hideGreetings,\n menuIconConfig = {},\n optionalComponents = [],\n idleTimer,\n // menuIconPosition = \"left\",\n}) => {\n const above1300 = useMediaQuery(\"(min-width:1300px)\");\n const classes = useStyles();\n const { t } = useTranslation();\n const [countdownMessage, setCountdownMessage] = useState(\"\");\n const [blinker, setBlinker] = useState(0);\n const {\n CloseIconComponent,\n OpenIconComponent,\n menuIconPosition = \"right\",\n } = menuIconConfig;\n\n const LightTooltip = styled(({ className, ...props }: any) => (\n <Tooltip {...props} classes={{ popper: className }} />\n ))(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.palette.common.white,\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: theme.shadows[1],\n fontSize: 13,\n },\n }));\n const Greetings = () => {\n let hours = new Date().getHours();\n let greet;\n\n if (hours < 12) greet = \"morning\";\n else if (hours >= 12 && hours <= 16) greet = \"afternoon\";\n else if (hours >= 16 && hours <= 24) greet = \"evening\";\n\n return <span>Good {greet},</span>;\n };\n\n useEffect(() => {\n if (!idleTimer) return;\n const updateCountdown = () => {\n const remainingTime = idleTimer.getRemainingTime();\n const remainingSeconds = Math.floor(remainingTime / 1000); // Convert to seconds\n if (remainingSeconds <= 30 && remainingSeconds > 0) {\n setCountdownMessage(\n t(\"sessionTimeoutInSec\", {\n remainingSeconds,\n }),\n );\n setBlinker((prev) => prev + 1);\n } else {\n setCountdownMessage(\"\"); // Clear the message if more than 30 seconds\n setBlinker(0);\n }\n };\n const interval = setInterval(updateCountdown, 1000);\n return () => clearInterval(interval);\n }, []);\n\n return (\n <>\n <StyledAppBar position=\"fixed\">\n <Toolbar\n sx={{\n minHeight: \"64px !important\",\n }}\n >\n {/* Left Section - Logo and Menu */}\n <LogoContainer\n sx={{\n flexDirection:\n menuIconPosition === \"left\" ? \"row\" : \"row-reverse\",\n }}\n >\n {open ? (\n <IconButton\n disableRipple\n onClick={() => handleDrawerClose()}\n className={classes.DrawerClose_icon}\n >\n {OpenIconComponent ? (\n OpenIconComponent\n ) : (\n <MenuOutlinedIcon fontSize=\"large\" />\n )}\n </IconButton>\n ) : (\n <IconButton\n disableRipple\n aria-label=\"open drawer\"\n onClick={() => handleDrawerOpen()}\n className={classes.DrawerClose_icon}\n >\n {CloseIconComponent ? (\n CloseIconComponent\n ) : (\n <MenuOutlinedIcon fontSize=\"large\" />\n )}\n </IconButton>\n )}\n <CompanyLogo>\n {Boolean(bankLogo) && (\n <div>\n <img\n src={bankLogo ?? \"\"}\n alt=\"bank_logo\"\n className={classes.logo}\n onClick={(e) => {\n e.preventDefault();\n navigate(dashboardUrl ?? \"./dashboard\");\n }}\n />\n <p className={classes.version01}>{logos?.version}</p>\n </div>\n )}\n </CompanyLogo>\n </LogoContainer>\n\n {/* Bank Information - Hidden on mobile */}\n <BankInfoContainer>\n <Stack direction=\"row\" spacing={4}>\n <Box className={classes.heading_user_img_border}>\n <Avatar\n className={classes.heading_user_img}\n alt=\"Remy Sharp\"\n src={Boolean(logos?.bank) ? logos?.bank : BecomePartnerImg}\n />\n </Box>\n </Stack>\n <BankInfoText>\n <Typography\n variant=\"body2\"\n sx={{\n fontWeight: \"bold\",\n fontSize: {\n xs: \"10px\",\n sm: \"11px\",\n md: \"12px\",\n lg: \"15px\",\n xl: \"15px\",\n },\n lineHeight: 1.2,\n overflow: \"hidden\",\n textOverflow: \"unset\",\n whiteSpace: \"unset\",\n color: \"var(--theme-color1)\",\n marginBottom: \"6px\",\n }}\n >\n {authState?.companyName || \"\"}\n </Typography>\n <Typography\n variant=\"caption\"\n sx={{\n fontSize: { xs: \"8px\", sm: \"9px\", md: \"10px\" },\n opacity: 0.9,\n color: \"var(--theme-color3)\",\n lineHeight: 1.2,\n }}\n >\n {t(\"Branch\")}:{authState?.user?.branchCode ?? \"001 \"}-\n {authState?.user?.branch ?? \"\"}\n </Typography>\n <Typography\n variant=\"caption\"\n sx={{\n fontSize: { xs: \"8px\", sm: \"9px\", md: \"10px\" },\n opacity: 0.9,\n color: \"var(--theme-color3)\",\n lineHeight: 1.2,\n }}\n >\n {t(\"WorkingDate\")}:{\" \"}\n {Boolean(authState?.workingDate)\n ? checkDateAndDisplay(\n format(new Date(authState?.workingDate), \"dd/MM/yyyy\"),\n // authState?.workingDate ?? \"\"\n )\n : \"not found\"}{\" \"}\n {t(\"LastLoginDate\")} :{\" \"}\n {checkDateAndDisplay(authState?.user?.lastLogin ?? \"\")}\n </Typography>\n </BankInfoText>\n </BankInfoContainer>\n\n {/* Right Section */}\n <RightSection>\n <Stack alignItems={\"flex-end\"}>\n <Stack direction={\"row\"} gap={\"1rem\"}>\n <Typography\n key={blinker}\n className={classes.blinkHard}\n fontSize={\"15px\"}\n color={\"#1C1C1C\"}\n >\n {countdownMessage}\n </Typography>\n {!hideGreetings ? (\n <GreetingText>\n {Greetings()} {authState?.user?.id ?? \"\"} 👋\n </GreetingText>\n ) : null}\n </Stack>\n <Stack direction=\"row\" alignItems={\"center\"}>\n {/* Search - Responsive */}\n {SearchComponent ? (\n <Search>\n <SearchComponent />\n </Search>\n ) : null}\n\n {/* Language Selector - Hidden on small screens */}\n {LanguageComponent ? <LanguageComponent /> : null}\n\n {/* User Actions */}\n <Box\n display={\"flex\"}\n justifyContent={\"space-between\"}\n gap={\"0.8rem\"}\n padding={\"0 0.5rem\"}\n alignItems={\"center\"}\n >\n {optionalComponents.map((component) => {\n let componentProps = { ...component.props };\n if (Array.isArray(componentProps)) componentProps = {};\n return <component.Component {...component.props} />;\n })}\n\n {above1300 && (\n <Tooltip title=\"Logout\" placement=\"bottom\" arrow>\n <IconButton\n onClick={() =>\n typeof handleLogout === \"function\"\n ? handleLogout()\n : null\n }\n color=\"error\"\n sx={{\n backgroundColor: \"rgba(235, 237, 238, 0.45)\",\n borderRadius: \"10px\",\n height: \"36px\",\n width: !above1300 ? \"100%\" : \"auto\",\n padding: \"0 8px\",\n \"&:hover\": {\n background: \"var(--theme-color2)\",\n boxShadow:\n \"rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px\",\n transition: \"all 0.2s ease\",\n },\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n }}\n aria-label=\"logout\"\n >\n <LogoutIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Stack>\n </Stack>\n\n {/* User Avatar */}\n <Stack direction=\"row\" spacing={4}>\n <Box\n className={classes.heading_user_img_border}\n sx={{ cursor: \"pointer\" }}\n >\n <LightTooltip\n title={\n <>\n <div>\n {\" \"}\n {t(\"UserID\")}: {authState?.user?.id}\n </div>\n <div>\n {t(\"Role\")} : {authState?.roleName}\n </div>\n <div>{t(\"LastUnsuccessfulLogin\")} : \"\"</div>\n </>\n }\n placement=\"bottom-start\"\n >\n <Avatar\n className={classes.heading_user_img}\n onClick={() =>\n typeof handleProfile === \"function\"\n ? handleProfile()\n : null\n }\n alt=\"Remy Sharp\"\n src={profilePic ?? \"\"}\n />\n </LightTooltip>\n </Box>\n </Stack>\n </RightSection>\n </Toolbar>\n </StyledAppBar>\n </>\n );\n};\n\nexport const checkDateAndDisplay = (dateStr: string) => {\n // const dt = new Date(dateStr);\n // //@ts-ignore\n // if (dt instanceof Date && !isNaN(dt)) {\n // return dt.toDateString();\n // }\n if (Boolean(dateStr)) {\n return dateStr;\n }\n return \"N/A\";\n};\n","import { Theme } from \"@mui/material\";\r\nimport { makeStyles } from \"@mui/styles\";\r\n\r\nconst drawerWidth = 227;\r\n\r\nexport const useStyles = makeStyles((theme: Theme) => {\r\n return {\r\n drawerPaper: {\r\n boxShadow: \"0 0 10px rgba(0, 0, 0, 0.1)\",\r\n position: \"relative\",\r\n whiteSpace: \"nowrap\",\r\n width: drawerWidth,\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n border: \"none\",\r\n overflow: \"hidden\",\r\n zIndex: 120,\r\n },\r\n drawerPaperClose: {\r\n overflowX: \"hidden\",\r\n transition: theme.transitions.create(\"width\", {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n width: theme.spacing(8),\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: theme.spacing(8),\r\n },\r\n },\r\n toolbarIcon: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n zIndex: 9999,\r\n ...theme.mixins.toolbar,\r\n background: \"var(--white)\",\r\n justifyContent: \"center\",\r\n height: \"80px\",\r\n // borderBottom: \"1px dashed #949597\",\r\n },\r\n hrCSS: {\r\n zIndex: 9999,\r\n },\r\n buttonLink: {\r\n backgroundColor: \"transparent\",\r\n border: \"none\",\r\n cursor: \"pointer\",\r\n textDecoration: \"underline\",\r\n display: \"inline\",\r\n margin: 0,\r\n padding: 0,\r\n \"&:focus\": {\r\n textDecoration: \"none\",\r\n },\r\n \"$:hover\": {\r\n textDecoration: \"none\",\r\n },\r\n },\r\n };\r\n});\r\n\r\n/*\r\n \r\n*/\r\n","import { NavItemType } from \"./navigation\";\r\n\r\nexport const reportMetaData: NavItemType[] = [];\r\n","// import { createTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n// const theme = createTheme();\n\nexport const useStylesBootstrapNav = makeStyles((theme: any) => ({\n navBarCSS: {\n padding: \"4px 1rem \",\n backgroundColor: \"#fff !important\",\n minHeight: \"64px\",\n boxShadow: \"0 3px 6px rgba(0,0,0,0.03)\",\n margin: \"10px\",\n },\n headerDropdown: {\n backgroundColor: \"#fff\",\n minWidth: \"205px\",\n boxShadow: \"0 3px 6px rgba(0,0,0,0.16)\",\n textDecoration: \"none\",\n borderBottom: \"3px solid #26A456\",\n },\n navLinkHeader: {\n color: \"#555\",\n fontSize: \"14px\",\n lineHeight: \"1.2\",\n paddingTop: \"4px\",\n paddingBottom: \"4px\",\n paddingRight: \".5rem\",\n paddingLeft: \".5rem\",\n fontWeight: 600,\n textTransform: \"capitalize\",\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n\n \"& hover\": {\n color: \"#0b6fb8\",\n },\n },\n productLink: {\n color: \"#555\",\n padding: \"0 1rem 8px 1rem\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n cursor: \"pointer\",\n textTransform: \"capitalize\",\n },\n font13: {\n fontSize: \"13px\",\n },\n loginDropdown: {\n width: \"160px\",\n },\n}));\n\nexport const useStylesSideBar = makeStyles((theme: any) => ({\n root: {\n justifyContent: \"center\",\n },\n drawer: {\n margin: \"5px\",\n },\n item: {\n display: \"flex\",\n //borderBottom: \"2px solid #93242433\",\n borderRadius: \"8px\",\n marginLeft: \"7px\",\n marginTop: \"6.5px\",\n width: \"93%\",\n height: \"50px\",\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n background: \"var(--white)\",\n boxShadow: \"3px 6px 6px rgba(93, 95, 121, 0.2)\",\n \"& svg\": {\n // color: theme.palette.primary.main,\n color: \"var(--theme-color1)\",\n },\n \"&:hover\": {\n boxShadow:\n \"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)\",\n background: \"var(--theme-color4)\",\n transition: \"0.3s ease\",\n \"& .__more-btn__\": {\n opacity: 1,\n pointerEvents: \"auto\",\n background: \"#ddd\",\n \"& svg\": {\n fill: \"var(--theme-color1) !important\",\n },\n },\n },\n },\n drawerIconSize: {\n width: \"50px\",\n height: \"50px\",\n padding: \"18px\",\n justifyItems: \"cenetr\",\n },\n button: {\n color: \"#0063A3\",\n padding: \"10px 8px\",\n //justifyContent: \"flex-start\",\n textTransform: \"none\",\n letterSpacing: 0,\n width: \"100%\",\n textAlign: \"left\",\n \"&:hover\": {\n backgroundColor: \"var(--theme-color1)\",\n // boxShadow: \"0px 15px 20px rgb(221 176 176 / 37%)\",\n },\n },\n btnRoot: {\n paddingLeft: \"24px\",\n justifyContent: \"left \",\n },\n navLinks: {\n // height: \"calc(100vh - 78px)\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n // height:\"100px\",\n // backgroundColor: \"rgba(250, 251, 255, 0.9);\",\n // height: \"calc(100vh - 230px)\",\n //background: \"var(--theme-color1)\",\n // marginTop: \"25px\",\n // boxShadow: \"0 3px 6px rgba(255, 99, 71, 0.3)\",\n borderRadius: \"10px\",\n paddingTop: \"5px\",\n \"&>.scrollbar-container\": {\n paddingBottom: \"10px\",\n },\n //margin: \"5px\",\n },\n navLinksforseparateView: {\n overflowY: \"auto\",\n overflowX: \"hidden\",\n height: \"calc(100vh - 180px)\",\n // height:\"auto\",\n paddingTop: \"10px\",\n },\n nestedMenuLevel1: {\n paddingLeft: \"20px\",\n marginTop: \"11px\",\n paddingRight: theme.spacing(3),\n height: \"auto\",\n fontSize: \"13px\",\n \"& div > svg\": {\n fontSize: \"14px\",\n },\n },\n nestedMenuLevel2: {\n paddingLeft: \"20px\",\n marginTop: \"11px\",\n fontSize: \"12px\",\n \"& div > svg\": {\n fontSize: \"9px\",\n },\n },\n listIcon: {\n minWidth: \"30px !important\",\n justifyItems: \"center\",\n color: \"var(--theme-color6)\",\n fontWeight: 700,\n fontSize: \"18px\",\n },\n link: {\n fontSize: \"1rem \",\n marginTop: \"2px\",\n marginBottom: \"2px\",\n textOverflow: \"ellipsis\",\n color: \"var(--theme-color1)\",\n marginLeft: \"15px\",\n whiteSpace: \"break-spaces\",\n \"& span\": {\n fontWeight: 400,\n whiteSpace: \"break-spaces\",\n },\n \"& p\": {\n color: \"var(--theme-color3)\",\n fontweight: 400,\n },\n },\n linktext: {\n backgroundColor: \"var(--white)\",\n \"&:hover\": {\n background: \"var(--theme-color1)\",\n \"& div\": {\n color: \"var(--white) !important\",\n },\n \"& div > svg\": {\n color: \"var(--white) !important\",\n },\n },\n },\n faSmall: {\n fontSize: \"13px \",\n },\n openList: {\n \":not(activeMenuItem)\": {\n \"& > div\": {\n backgroundColor: \"rgba(0, 0, 0, 0.04)\",\n },\n \"& *\": {\n color: \"var(--white)\",\n },\n },\n },\n openCurrent: {\n backgroundColor: \"var(--theme-color1)\",\n \"& *\": {\n color: \"var(--white)\",\n },\n \"&:hover\": {\n backgroundColor: \"var(--theme-color1)\",\n },\n },\n slimList: {\n paddingTop: \"15px\",\n paddingBottom: \"13px\",\n height: \"auto\",\n paddingLeft: \"15px\",\n justifyItems: \"center\",\n },\n activeMenuItem: {\n backgroundColor: \"var(--theme-color1)!important \", //\"var(--white)!important\",\n\n \"& > div\": {\n color: \"var(--white)!important\",\n },\n \"& svg\": {\n color: \"var(--theme-color4)\",\n },\n \"& hover\": {\n \"& > div\": {\n color: \"var(--theme-color3)\",\n },\n },\n \"& p\": {\n color: \"var(--theme-color4)\",\n },\n },\n}));\n","import { FC, useEffect } from \"react\";\nimport { useState } from \"react\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport clsx from \"clsx\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { NavItemType, SideBarRendererType } from \"./types\";\nimport { useStylesSideBar } from \"./style\";\nimport ScrollBar from \"react-perfect-scrollbar\";\nimport {\n Button,\n Collapse,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Tooltip,\n} from \"@mui/material\";\nimport { ExpandLess, ExpandMore } from \"@mui/icons-material\";\nimport { usePopupContext } from \"@acuteinfo/common-base\";\nimport { useTranslation } from \"react-i18next\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nlet localdrawerOpen = true;\n\ninterface SideBarNavProps extends SideBarRendererType {\n rootUrl: string;\n dashboardUrl?: string;\n navigate: NavigateFunction;\n authState?: any;\n handleListItemClick?: (flag: string) => void;\n}\n\nexport const SideBarNav: FC<SideBarNavProps> = ({\n metaData,\n handleDrawerOpen,\n drawerOpen,\n setView,\n slimSize,\n setNewFilterData,\n setNewFilterView,\n isFromSeparetView = false,\n rootUrl,\n dashboardUrl,\n navigate,\n handleListItemClick,\n authState,\n}) => {\n const classes = useStylesSideBar();\n let result: JSX.Element[] | null = null;\n localdrawerOpen = drawerOpen;\n if (Array.isArray(metaData.navItems)) {\n result = metaData.navItems.map((one) => {\n if (one?.seperateView === true) {\n return (\n <SeperateListView\n key={one.label}\n item={one}\n setView={setView}\n classes={classes}\n level={0}\n slimSize={slimSize}\n setNewFilterData={setNewFilterData}\n setNewFilterView={setNewFilterView}\n handleListItemClick={handleListItemClick}\n />\n );\n } else if (Array.isArray(one.children)) {\n return (\n <NestedListItem\n key={one.label}\n item={one}\n classes={classes}\n level={0}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={drawerOpen}\n slimSize={slimSize}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n handleListItemClick={handleListItemClick}\n />\n );\n } else {\n return (\n <SingleListItem\n key={one.label}\n item={one}\n classes={classes}\n level={0}\n slimSize={slimSize}\n drawerOpen={drawerOpen}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n />\n );\n }\n });\n }\n return (\n <List\n component=\"nav\"\n disablePadding\n className={\n isFromSeparetView ? classes.navLinksforseparateView : classes.navLinks\n }\n >\n <ScrollBar>{result}</ScrollBar>\n </List>\n );\n};\n\nconst SeperateListView: FC<{\n item: NavItemType;\n setView: any;\n classes: ReturnType<typeof useStylesSideBar>;\n level: number;\n slimSize?: boolean;\n setNewFilterData?: any;\n setNewFilterView?: any;\n handleListItemClick?: (flag: string) => void;\n}> = ({\n item,\n setView,\n level,\n classes,\n slimSize,\n setNewFilterData,\n setNewFilterView,\n handleListItemClick,\n}) => {\n const [code, setCode] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n setCode(i18n.language);\n }, [t]);\n let labelStart: any =\n (item.label || \"\").toLowerCase().substring(0, 1) || \"circle\";\n // const icon = item.icon ? (\n // <ListItemIcon className={classes.listIcon}>\n // <FontAwesomeIcon icon={[\"fas\", labelStart]} />\n // </ListItemIcon>\n // ) : null;\n\n const icon =\n item.icon?.toLowerCase() !== \"process.gif\" && item.icon ? (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", item.icon]} />\n </ListItemIcon>\n ) : (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", labelStart]} />\n </ListItemIcon>\n );\n\n const levelClassName =\n level === 1\n ? classes.nestedMenuLevel1\n : level === 2\n ? classes.nestedMenuLevel2\n : \"\";\n\n return (\n <ListItem\n button\n disableGutters\n sx={{ position: \"relative\", overflow: \"hidden\" }}\n className={clsx({\n [classes.item]: true,\n [levelClassName]: Boolean(levelClassName),\n [classes.slimList]: Boolean(slimSize),\n [classes.drawerIconSize]: !localdrawerOpen,\n })}\n onClick={() => {\n if (item.viewName === \"newfilterview\" && Array.isArray(item.children)) {\n setNewFilterView({\n label: item.label,\n placeholder: \"Search \" + item.label + \" Screen...\",\n });\n let newChield = item.children.map((item1) => {\n return { ...item1, secondaryLabel: item1.user_code };\n });\n setNewFilterData(newChield);\n }\n setView(item.viewName);\n }}\n >\n {typeof handleListItemClick === \"function\" ? (\n <Button\n className=\"__more-btn__\"\n title={t(\"OpenScreensList\")}\n sx={{\n background: \"#ddd\",\n outline: \"none\",\n border: \"none\",\n padding: 0,\n position: \"absolute\",\n top: 0,\n right: 0,\n minWidth: \"38px\",\n height: \"20px\",\n lineHeight: \"10px\",\n cursor: \"pointer\",\n zIndex: 2,\n transition: \"all 0.3s ease-in-out\",\n borderRadius: \"0 0 0 8px\",\n boxShadow: \"0 1px 2px rgba(0,0,0,.2)\",\n opacity: 0,\n pointerEvents: \"none\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n handleListItemClick(item.label);\n }}\n >\n <MoreHorizIcon fontSize=\"large\" color=\"secondary\" />\n </Button>\n ) : null}\n <Tooltip\n title={t(item.label)}\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <span>{icon}</span>\n </Tooltip>\n {(localdrawerOpen && item.label.length > 27) || !Boolean(icon) ? (\n <Tooltip\n title={item.label}\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <ListItemText\n key={code}\n primary={t(item.label)}\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText>\n </Tooltip>\n ) : localdrawerOpen ? (\n <ListItemText\n key={code}\n primary={t(item.label)}\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText>\n ) : null}\n </ListItem>\n );\n};\n\nconst SingleListItem: FC<{\n item: NavItemType;\n classes: ReturnType<typeof useStylesSideBar>;\n level: number;\n slimSize?: boolean;\n drawerOpen?: any;\n rootUrl: string;\n dashboardUrl?: string;\n navigate: NavigateFunction;\n}> = ({\n item,\n classes,\n level,\n slimSize,\n drawerOpen,\n rootUrl,\n dashboardUrl,\n navigate,\n}) => {\n const [code, setCode] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n setCode(i18n.language);\n }, [t]);\n const isActiveMenu = isActiveMenuFromhref(\n window.location?.pathname ?? \"\",\n item?.href ?? \"\",\n item?.navigationProps,\n rootUrl,\n dashboardUrl,\n );\n if (isActiveMenu) {\n // GeneralAPI.setDocumentName(item.label);\n let titleText = document.title;\n document.title = titleText.split(\" - \")[0] + \" - \" + item.label;\n }\n let labelStart: any =\n (item.label || \"\").toLowerCase().substring(0, 1) || \"circle\";\n\n const icon =\n item.icon.toLowerCase() === \"process.gif\" || !Boolean(item.icon) ? (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", labelStart]} />\n </ListItemIcon>\n ) : (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", item.icon]} />\n </ListItemIcon>\n );\n const levelClassName =\n level === 1\n ? classes.nestedMenuLevel1\n : level === 2\n ? classes.nestedMenuLevel2\n : \"\";\n return (\n <ListItem\n button\n // disabled ={item?.allow_open !== \"Y\"}\n disableGutters\n className={clsx({\n [classes.item]: true,\n [levelClassName]: Boolean(levelClassName),\n [classes.slimList]: Boolean(slimSize),\n [classes.activeMenuItem]: isActiveMenu,\n [classes.drawerIconSize]: !localdrawerOpen,\n })}\n onClick={async (e) => {\n e.preventDefault();\n if (item.isRouterLink) {\n let path = item.href;\n path =\n item.href?.substring(0, 1) === \"/\"\n ? item.href.substring(1)\n : item.href;\n if (item.passNavigationPropsAsURLParmas) {\n let urlParms = new URLSearchParams(item?.navigationProps);\n navigate(`${path}?${urlParms.toString()}`);\n } else {\n navigate(`${path}` as string, {\n state: { ...item?.navigationProps },\n });\n }\n } else if (Boolean(item.href)) {\n window.open(item.href, item.rel ?? \"_newtab\");\n }\n }}\n >\n <Tooltip\n title={item.label}\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <span>{icon}</span>\n </Tooltip>\n {/* {console.log(localdrawerOpen, item.label.length)} */}\n {(localdrawerOpen && item.label.length > 27) || !Boolean(icon) ? (\n <Tooltip\n title={\n item.system_code\n ? t(item.system_code, { defaultValue: item.label })\n : t(item.label)\n }\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <ListItemText\n key={code}\n primary={\n item.system_code\n ? t(item.system_code, { defaultValue: item.label })\n : t(item.label)\n }\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText>\n </Tooltip>\n ) : localdrawerOpen ? (\n <ListItemText\n key={code}\n primary={t(\n item?.navigationProps\n ? `reportID${item?.system_code ?? \"\"}`\n : item?.system_code || item?.label || \"\",\n { defaultValue: item?.label ?? \"\" },\n )}\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText>\n ) : null}\n {/* <ListItemText\n primary={item.label}\n className={classes.link}\n secondary={item.secondaryLabel ?? null}\n ></ListItemText> */}\n </ListItem>\n );\n};\n\nconst NestedListItem: FC<{\n item: NavItemType;\n classes: ReturnType<typeof useStylesSideBar>;\n level: number;\n handleDrawerOpen: Function;\n drawerOpen: boolean;\n slimSize?: boolean;\n rootUrl: string;\n dashboardUrl?: string;\n navigate: NavigateFunction;\n handleListItemClick?: (flag: string) => void;\n}> = ({\n item,\n classes,\n level,\n handleDrawerOpen,\n drawerOpen,\n slimSize,\n rootUrl,\n navigate,\n handleListItemClick,\n}) => {\n const [code, setCode] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n setCode(i18n.language);\n }, [t]);\n const [open, setOpen] = useState(false);\n const handleClick = () => {\n if (!drawerOpen) {\n // handleDrawerOpen();\n }\n setOpen(!open);\n };\n const childrens = item.children?.map((one) => {\n if (Array.isArray(one.children)) {\n return (\n <NestedListItem\n key={one.label}\n item={one}\n classes={classes}\n level={level + 1}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={drawerOpen}\n slimSize={slimSize}\n rootUrl={rootUrl}\n navigate={navigate}\n handleListItemClick={handleListItemClick}\n />\n );\n } else {\n return (\n <SingleListItem\n key={one.label}\n item={one}\n classes={classes}\n level={level + 1}\n slimSize={slimSize}\n rootUrl={rootUrl}\n navigate={navigate}\n />\n );\n }\n });\n let labelStart: any =\n (item.label || \"\").toLowerCase().substring(0, 1) || \"circle\";\n\n const icon =\n item.icon?.toLowerCase() === \"process.gif\" || !Boolean(item.icon) ? (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", labelStart]} />\n </ListItemIcon>\n ) : (\n <ListItemIcon className={classes.listIcon}>\n <FontAwesomeIcon icon={[\"fas\", item.icon]} />\n </ListItemIcon>\n );\n\n const levelClassName =\n level === 1\n ? classes.nestedMenuLevel1\n : level === 2\n ? classes.nestedMenuLevel2\n : \"\";\n return (\n <>\n <ListItem\n button\n onClick={handleClick}\n disableGutters\n sx={{ position: \"relative\", overflow: \"hidden\" }}\n className={\n open\n ? clsx({\n [classes.item]: true,\n [levelClassName]: Boolean(levelClassName),\n [classes.slimList]: Boolean(slimSize),\n [classes.openCurrent]: true,\n [classes.drawerIconSize]: !localdrawerOpen,\n })\n : clsx({\n [classes.item]: true,\n [levelClassName]: Boolean(levelClassName),\n [classes.slimList]: Boolean(slimSize),\n [classes.drawerIconSize]: !localdrawerOpen,\n })\n }\n >\n {typeof handleListItemClick === \"function\" ? (\n <Button\n className=\"__more-btn__\"\n title={t(\"OpenScreensList\")}\n sx={{\n background: \"#ddd\",\n outline: \"none\",\n border: \"none\",\n padding: 0,\n position: \"absolute\",\n top: 0,\n right: 0,\n minWidth: \"38px\",\n height: \"20px\",\n lineHeight: \"10px\",\n cursor: \"pointer\",\n zIndex: 2,\n transition: \"all 0.3s ease-in-out\",\n borderRadius: \"0 0 0 8px\",\n boxShadow: \"0 1px 2px rgba(0,0,0,.2)\",\n opacity: 0,\n pointerEvents: \"none\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n handleListItemClick(item.label);\n }}\n >\n <MoreHorizIcon fontSize=\"large\" color=\"secondary\" />\n </Button>\n ) : null}\n\n <Tooltip\n title={t(item.label)}\n arrow={true}\n placement={localdrawerOpen ? \"bottom-start\" : \"right\"}\n >\n <span>{icon}</span>\n </Tooltip>\n {/* {icon} */}\n {drawerOpen || !Boolean(icon) ? (\n <>\n <ListItemText\n key={code}\n primary={t(item.label)}\n secondary={item.secondaryLabel ?? null}\n color=\"primary\"\n className={classes.link}\n ></ListItemText>\n {open ? <ExpandLess /> : <ExpandMore />}\n </>\n ) : null}\n </ListItem>\n\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <List\n component=\"div\"\n disablePadding\n className={open ? classes.openList : \"\"}\n >\n {childrens}\n </List>\n </Collapse>\n </>\n );\n};\nconst isActiveMenuFromhref = (\n location,\n menuhref,\n navigationProps,\n rootUrl,\n dashboardUrl,\n) => {\n if (\n (location === `/${rootUrl}` || location === `/${rootUrl}/`) &&\n menuhref === dashboardUrl\n ) {\n return true;\n } else if (menuhref === \"report\") {\n try {\n let urlParms = new URLSearchParams(navigationProps);\n if (\"?\" + urlParms.toString() === window.location.search) {\n return true;\n }\n } catch (error) {\n console.log(error);\n }\n return false;\n } else if (\n location !== `/${rootUrl}` &&\n location !== \"/\" &&\n Boolean(menuhref) &&\n location.includes(menuhref)\n ) {\n return true;\n }\n return false;\n};\n","import { NavItemType } from \"./types\";\r\n\r\nconst matchByValue = (search, tags, navItem) => {\r\n if (!Array.isArray(tags)) {\r\n tags = [tags];\r\n }\r\n return tags.some((one) =>\r\n navItem[one]\r\n ?.toLocaleLowerCase?.()\r\n ?.includes(search?.toLocaleLowerCase?.()),\r\n );\r\n};\r\n\r\nexport const filterMetaDataByValue = (\r\n searchString: string,\r\n navItems: NavItemType[],\r\n tagsToSearch?: string[],\r\n): NavItemType[] => {\r\n let newNavItems: NavItemType[] = [];\r\n for (let i = 0; i < navItems.length; i++) {\r\n if (matchByValue(searchString, tagsToSearch, navItems[i])) {\r\n let { children, ...newItem } = navItems[i];\r\n if (Array.isArray(children) && children.length > 0) {\r\n let newChildren = filterMetaDataByValue(\r\n searchString,\r\n children,\r\n tagsToSearch,\r\n );\r\n if (newChildren.length > 0) {\r\n newNavItems.push({ ...newItem, children: newChildren });\r\n }\r\n } else {\r\n newNavItems.push({ ...newItem });\r\n }\r\n }\r\n }\r\n return newNavItems;\r\n};\r\n","import { FC, useEffect, useMemo, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { SearchBar } from \"@acuteinfo/common-base\";\nimport ArrowBackIosNewIcon from \"@mui/icons-material/ArrowBackIosNew\";\nimport { useStylesSideBar } from \"./style\";\nimport { filterMetaDataByValue } from \"./filterMetaData\";\nimport { SideBarNav } from \"./sideBarNavigation\";\nimport { SideBarRendererType } from \"./types\";\nimport { ListItem, ListItemIcon, ListItemText } from \"@mui/material\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface NewSideBarNav extends SideBarRendererType {\n label: string;\n icon?: any;\n placeholder?: any;\n rootUrl: string;\n dashboardUrl?: string;\n navigate: NavigateFunction;\n MessageBox?: any;\n}\n\nexport const SearchViewNavigation: FC<NewSideBarNav> = ({\n metaData,\n handleDrawerOpen,\n drawerOpen,\n setView,\n label,\n icon,\n placeholder = \"Search Reports...\",\n rootUrl,\n dashboardUrl,\n navigate,\n MessageBox,\n}) => {\n const [code, setCode] = useState(\"\");\n const { t, i18n } = useTranslation();\n\n useEffect(() => {\n setCode(i18n.language);\n }, [t]);\n\n const [search, setSearch] = useState(\"\");\n const translatedMetaData = useMemo(() => {\n return metaData.navItems.map((item) => ({\n ...item,\n label: item.system_code\n ? t(item.system_code, { defaultValue: item.label })\n : item.label,\n }));\n }, [metaData.navItems, t]);\n\n const filteredMetaData = useMemo(() => {\n return filterMetaDataByValue(search, translatedMetaData, [\n \"label\",\n \"secondaryLabel\",\n ]);\n }, [search, translatedMetaData]);\n\n const classes = useStylesSideBar();\n\n const myIcon = icon ? (\n <ListItemIcon className={classes.listIcon}>\n <ArrowBackIosNewIcon />\n </ListItemIcon>\n ) : null;\n const handleClick = () => {\n if (!drawerOpen) {\n handleDrawerOpen();\n }\n };\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\" }}>\n <ListItem\n button\n className={clsx({\n [classes.item]: true,\n [classes.nestedMenuLevel1]: true,\n [classes.linktext]: true,\n })}\n onClick={() => setView(\"/\")}\n sx={{ width: !drawerOpen ? \"80% !important\" : \"auto\" }}\n >\n {myIcon}\n <ListItemText key={code} primary={t(label)} className={classes.link} />\n </ListItem>\n {/* <div onClick={handleDrawerOpen}> */}\n <SearchBar\n sx={{ overflow: \"hidden\" }}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n onClick={handleClick}\n placeholder={\n Boolean(placeholder)\n ? t(\"SidebarPlaceholder\", {\n defaultValue: placeholder,\n searchLabel: t(placeholder?.split(\" \")?.[1]) ?? \"\",\n })\n : \"Search Reports...\"\n }\n autoFocus={drawerOpen}\n />\n {/* </div> */}\n <SideBarNav\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={drawerOpen}\n setView={setView}\n metaData={{\n navItems: filteredMetaData,\n config: { rel: \"\", target: \"_blank\" },\n }}\n slimSize={true}\n isFromSeparetView={true}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n MessageBox={MessageBox}\n />\n </div>\n );\n};\n","import { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n faHandsHelping,\r\n faUsers,\r\n faBars,\r\n faBalanceScale,\r\n faHandHoldingHeart,\r\n faTasks,\r\n faCog,\r\n faHome,\r\n faTh,\r\n faUsersCog,\r\n faCircle,\r\n faUserCircle,\r\n faHashtag,\r\n faThumbtack,\r\n faSquare,\r\n faLink,\r\n faQuestion,\r\n faPlus,\r\n faTable,\r\n faLocationArrow,\r\n faHeadset,\r\n faGears,\r\n faArrowDown,\r\n faArrowUp,\r\n faSpinner,\r\n faCircleExclamation,\r\n faRotateRight,\r\n faUserLock,\r\n faUserClock,\r\n faGripHorizontal,\r\n faBarsProgress,\r\n faFileExport,\r\n faFileLines,\r\n faGear,\r\n faHeadphones,\r\n faUsersGear,\r\n faMessage,\r\n faUnlock,\r\n faUserPlus,\r\n faUserCheck,\r\n faKey,\r\n faIdCard,\r\n faIdBadge,\r\n faCheck,\r\n faCheckDouble,\r\n faCircleCheck,\r\n faPenToSquare,\r\n faCircleXmark,\r\n faUserTag,\r\n faAddressCard,\r\n faChartColumn,\r\n faUserPen,\r\n faHandHolding,\r\n faHandHoldingMedical,\r\n faObjectGroup,\r\n faTowerCell,\r\n faTowerObservation,\r\n faBuilding,\r\n faMailBulk,\r\n faLandmarkFlag,\r\n faCreditCard,\r\n faHospitalSymbol,\r\n faPlugCircleBolt,\r\n faCodeBranch,\r\n faPersonCircleCheck,\r\n faBank,\r\n faServer,\r\n faNotesMedical,\r\n faA,\r\n faB,\r\n faC,\r\n faD,\r\n faE,\r\n faF,\r\n faG,\r\n faH,\r\n faI,\r\n faJ,\r\n faK,\r\n faL,\r\n faM,\r\n faN,\r\n faO,\r\n faP,\r\n faQ,\r\n faR,\r\n faS,\r\n faT,\r\n faU,\r\n faV,\r\n faW,\r\n faX,\r\n faY,\r\n faZ,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nlibrary.add(\r\n faHandsHelping,\r\n faUsers,\r\n faBars,\r\n faBalanceScale,\r\n faHandHoldingHeart,\r\n faTasks,\r\n faCog,\r\n faHome,\r\n faTh,\r\n faUsersCog,\r\n faCircle,\r\n faUserCircle,\r\n faHashtag,\r\n faThumbtack,\r\n faSquare,\r\n faLink,\r\n faQuestion,\r\n faPlus,\r\n faTable,\r\n faLocationArrow,\r\n faHeadset,\r\n faGears,\r\n faArrowDown,\r\n faArrowUp,\r\n faSpinner,\r\n faCircleExclamation,\r\n faRotateRight,\r\n faUserLock,\r\n faUserClock,\r\n faGripHorizontal,\r\n faFileLines,\r\n faGear,\r\n faHeadphones,\r\n faUsersGear,\r\n faMessage,\r\n faUnlock,\r\n faUserPlus,\r\n faUserCheck,\r\n faKey,\r\n faIdCard,\r\n faIdBadge,\r\n faCheck,\r\n faCheckDouble,\r\n faCircleCheck,\r\n faCircleXmark,\r\n faUserTag,\r\n faAddressCard,\r\n faChartColumn,\r\n faUserPen,\r\n faHandHolding,\r\n faHandHoldingMedical,\r\n faObjectGroup,\r\n faTowerCell,\r\n faTowerObservation,\r\n faBuilding,\r\n faMailBulk,\r\n faLandmarkFlag,\r\n faCreditCard,\r\n faHospitalSymbol,\r\n faPlugCircleBolt,\r\n faCodeBranch,\r\n faPersonCircleCheck,\r\n faBank,\r\n faServer,\r\n faNotesMedical,\r\n faPenToSquare,\r\n faBarsProgress,\r\n faFileExport,\r\n faA,\r\n faB,\r\n faC,\r\n faD,\r\n faE,\r\n faF,\r\n faG,\r\n faH,\r\n faI,\r\n faJ,\r\n faK,\r\n faL,\r\n faM,\r\n faN,\r\n faO,\r\n faP,\r\n faQ,\r\n faR,\r\n faS,\r\n faT,\r\n faU,\r\n faV,\r\n faW,\r\n faX,\r\n faY,\r\n faZ,\r\n);\r\n","import { NavBarMetaDataType, NavItemType } from \"./navigation\";\r\nimport { cloneDeep } from \"lodash\";\r\n\r\nexport const transformMetaDataAsPerRole = (\r\n metaData: NavBarMetaDataType,\r\n role: number,\r\n branches: string[],\r\n company: string,\r\n access: any,\r\n products: string[],\r\n) => {\r\n let navItems = filterMetaData(\r\n metaData.navItems,\r\n role,\r\n branches,\r\n company,\r\n access,\r\n products,\r\n );\r\n //console.log(navItems);\r\n let newnavItem = navItems.map((item) => {\r\n let { children, ...newItem } = item;\r\n if (Array.isArray(children) && children.length > 5) {\r\n if (!Boolean(newItem.seperateView)) {\r\n newItem.seperateView = true;\r\n newItem.viewName = \"newfilterview\";\r\n //console.log(newItem);\r\n }\r\n }\r\n return { ...newItem, children: children };\r\n });\r\n return {\r\n config: metaData.config,\r\n navItems: newnavItem,\r\n };\r\n};\r\nexport const transformMetaDataAsPerMenuRights = (\r\n metaData: NavBarMetaDataType,\r\n authState: any,\r\n) => {\r\n let newMetadata = cloneDeep(metaData) as NavBarMetaDataType;\r\n let NavItem = filterMetaDataAsperRights(newMetadata.navItems, authState);\r\n newMetadata.navItems = NavItem;\r\n return newMetadata;\r\n};\r\nconst filterMetaDataAsperRights = (navItems, accessgroup) => {\r\n let newNavItems: NavItemType[] = [];\r\n for (let i = 0; i < navItems.length; i++) {\r\n let { children, ...newItem } = navItems[i];\r\n if (Array.isArray(children) && children.length > 0) {\r\n let newChildren = filterMetaDataAsperRights(children, accessgroup);\r\n if (newChildren.length > 0) {\r\n newNavItems.push({ ...newItem, children: newChildren });\r\n }\r\n } else {\r\n //if(newItem?.doccd) ///condition\r\n ///newNavItems.push({ ...newItem });\r\n }\r\n }\r\n return newNavItems;\r\n};\r\nconst matchBranches = (userBranches, accessBranches) => {\r\n if (!Array.isArray(accessBranches) || !Array.isArray(userBranches)) {\r\n return true;\r\n }\r\n if (accessBranches.length <= 0 || userBranches.length <= 0) {\r\n return true;\r\n }\r\n for (const one of accessBranches) {\r\n if (userBranches.indexOf(one) >= 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nconst matchComany = (userCompany, accessCompany) => {\r\n if (!Array.isArray(accessCompany) || !Boolean(userCompany)) {\r\n return true;\r\n }\r\n if (accessCompany.length <= 0) {\r\n return true;\r\n }\r\n if (accessCompany.indexOf(userCompany) >= 0) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst matchRoles = (userRole, accessRoles) => {\r\n if (!Array.isArray(accessRoles) || typeof userRole !== \"number\") {\r\n return true;\r\n }\r\n if (accessRoles.length <= 0) {\r\n return true;\r\n }\r\n if (accessRoles.indexOf(userRole) >= 0) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst matchInvisibleRoles = (userRole, accessRoles) => {\r\n if (!Array.isArray(accessRoles) || typeof userRole !== \"number\") {\r\n return true;\r\n }\r\n if (accessRoles.length <= 0) {\r\n return true;\r\n }\r\n if (accessRoles.indexOf(userRole) >= 0) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nconst matchProducts = (userProducts, accessProducts) => {\r\n if (!Array.isArray(accessProducts) || !Array.isArray(userProducts)) {\r\n return true;\r\n }\r\n if (accessProducts.length <= 0 || userProducts.length <= 0) {\r\n return true;\r\n }\r\n\r\n for (const one of accessProducts) {\r\n if (userProducts.indexOf(one) >= 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\nconst ishrefisNotNull = (item) => {\r\n if (\r\n !(Array.isArray(item.children) && item.children.length > 0) &&\r\n !Boolean(item.href)\r\n ) {\r\n //console.log(item);\r\n return false;\r\n }\r\n return true;\r\n};\r\nconst filterMetaData = (\r\n navItems: NavItemType[],\r\n role: number,\r\n branches: string[],\r\n company: string,\r\n access: any,\r\n products: string[],\r\n): NavItemType[] => {\r\n let newNavItems: NavItemType[] = [];\r\n for (let i = 0; i < navItems.length; i++) {\r\n if (\r\n matchRoles(Number(role), navItems[i].visibleToRoles) &&\r\n matchComany(company, navItems[i].visibleToCompanies) &&\r\n matchBranches(branches, navItems[i].visibleToBranches) &&\r\n matchInvisibleRoles(Number(role), navItems[i].invisibleToRoles) &&\r\n matchProducts(products, navItems[i].visibleToProducts) &&\r\n ishrefisNotNull(navItems[i])\r\n ) {\r\n let { children, ...newItem } = navItems[i];\r\n if (Array.isArray(children) && children.length > 0) {\r\n let newChildren = filterMetaData(\r\n children,\r\n role,\r\n branches,\r\n company,\r\n access,\r\n products,\r\n );\r\n if (newChildren.length > 0) {\r\n newNavItems.push({ ...newItem, children: newChildren });\r\n }\r\n } else {\r\n newNavItems.push({ ...newItem, secondaryLabel: newItem.system_code });\r\n }\r\n }\r\n }\r\n return newNavItems;\r\n};\r\n","import { FC, useMemo, useState } from \"react\";\nimport { reportMetaData } from \"./reportMetaData\";\nimport { SideBarNav } from \"./navigation\";\nimport { SearchViewNavigation } from \"./navigation/searchViewNavigation\";\nimport \"./icons\";\nimport { transformMetaDataAsPerRole } from \"./transformer\";\n\n/* eslint-disable react-hooks/exhaustive-deps */\nexport const SideBar = ({\n authState,\n handleDrawerOpen,\n open,\n rootUrl,\n dashboardUrl = \"dashboard\",\n navigate,\n handleListItemClick,\n}: any) => {\n const [view, setView] = useState(\"/\");\n const [NewFilterView, setNewFilterView] = useState<any>({});\n const [NewFilterData, setNewFilterData] = useState([]);\n\n const branches = useMemo(() => {\n let myBranches = authState?.access?.entities?.Branch ?? [];\n if (Array.isArray(myBranches) && myBranches.length >= 0) {\n return myBranches.map((one) => one.branchCode);\n } else {\n return [];\n }\n }, []);\n\n const products = useMemo(() => {\n let myProducts = authState?.access?.products ?? [];\n if (Array.isArray(myProducts) && myProducts.length >= 0) {\n return myProducts.map((one) => one.categoryCode);\n } else {\n return [];\n }\n }, []);\n let newMetaData = { navItems: authState.menulistdata };\n let filteredMetaDataSideBar = transformMetaDataAsPerRole(\n newMetaData,\n Number(authState.role),\n branches,\n authState.companyID,\n authState.access,\n products,\n );\n\n let filteredReportsMetaData = transformMetaDataAsPerRole(\n {\n config: { rel: \"\", target: \"_blank\" },\n navItems: reportMetaData,\n },\n Number(authState.role),\n branches,\n authState.companyID,\n authState.access,\n products,\n );\n return view === \"report\" ? (\n <SearchViewNavigation\n metaData={filteredReportsMetaData}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={open}\n setView={setView}\n label=\"Reports\"\n icon=\"table\"\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n />\n ) : view === \"newfilterview\" ? (\n <SearchViewNavigation\n metaData={{\n config: { rel: \"\", target: \"_blank\" },\n navItems: NewFilterData,\n }}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={open}\n setView={setView}\n label={NewFilterView?.label ?? \"Reports\"}\n icon=\"table\"\n placeholder={NewFilterView?.placeholder}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n />\n ) : (\n <>\n <SideBarNav\n metaData={filteredMetaDataSideBar}\n handleDrawerOpen={handleDrawerOpen}\n drawerOpen={open}\n setView={setView}\n slimSize={true}\n setNewFilterData={setNewFilterData}\n setNewFilterView={setNewFilterView}\n rootUrl={rootUrl}\n dashboardUrl={dashboardUrl}\n navigate={navigate}\n authState={authState}\n handleListItemClick={handleListItemClick}\n />\n </>\n );\n};\n","import React from \"react\";\nimport { NavigateFunction } from \"react-router-dom\";\nimport clsx from \"clsx\";\nimport { useStyles } from \"./style\";\nimport { Drawer } from \"@mui/material\";\nimport { SideBar } from \"./sideBar\";\n\ninterface SidebarWrapperProps {\n authState: any;\n navigate: NavigateFunction;\n handleDrawerOpen: Function;\n handleDrawerClose?: Function;\n open: boolean;\n rootUrl: string;\n dashboardUrl?: string;\n handleListItemClick?: (flag: string) => void;\n}\n\nexport const SidebarWrapper: React.FC<SidebarWrapperProps> = (props) => {\n const classes = useStyles();\n return (\n <Drawer\n variant=\"permanent\"\n sx={{\n height: \"100dvh\",\n }}\n classes={{\n paper: clsx(\n classes.drawerPaper,\n !props.open && classes.drawerPaperClose,\n ),\n }}\n open={props.open}\n >\n <div className={classes.toolbarIcon}></div>\n <SideBar {...props} />\n </Drawer>\n );\n};\n"],"names":["useStyles","makeStyles","theme","wrapper","minHeight","boxShadow","background","loginEmp","padding","spacing","display","maxWidth","margin","borderRadius","breakpoints","down","width","formWrap","marginTop","loginBtn","minWidth","fontSize","border","color","fontWeight","letterSpacing","textTransform","alignSelf","OTPTimer","palette","primary","main","resendLink","cursor","secondary","logo","marginBottom","loginLeft","loginRight","loginImg","verifybutton","otpButtons","divflex","otpinputpadding","marginRight","height","ibtnvisible","btnvisibleoff","OTPalignName","alignItems","justifyContent","fonWeight","lineHeight","resendOTPalign","resendbtnLink","textDecoration","dialogTitleClass","lang_svg","dialogContent","whiteSpace","button","flexDirection","UsernamePasswordField","classes","loginState","verifyUsernamePassword","forgotPasswordEndpoint","preventSpecialChars","input","setInput","useState","userName","password","showPasswordTime","setShowPasswordTime","blurred","setBlurred","showPassword","Date","now","forceUpdate","timerRef","useRef","t","useTranslation","useEffect","clearTimeout","current","handleChange","event","name","target","value","split","some","char","includes","isUsernameError","isPasswordError","values","inputRef","inputPassRef","inputButtonRef","timeoutCd","setTimeout","focus","old","otpmodelClose","_jsx","Fragment","children","Container","_jsxs","Grid","style","paddingTop","fontStyle","className","TextField","autoFocus","label","placeholder","String","fullWidth","type","trimStart","onChange","error","helperText","userMessageforusername","InputLabelProps","shrink","disabled","loading","autoComplete","onKeyDown","e","key","click","inputProps","maxLength","repeat","onBlur","onFocus","userMessageforpassword","InputProps","endAdornment","InputAdornment","position","IconButton","onClick","onMouseDown","preventDefault","Visibility","VisibilityOff","flex","textAlign","href","GradientButton","toLowerCase","ref","endicon","undefined","rotateIcon","CircularProgress","size","thickness","OTPModel","OTPResendRequest","open","handleClose","VerifyOTP","OTPError","setOTPError","previousStep","setNewRequestID","id","otpresendCount","resendFlag","OTP","setOTP","btnshow","setbtnshow","resendotpLoading","setResendotpLoading","enqueueSnackbar","useSnackbar","Boolean","authType","defaultValue","otpSentText","username","charAt","toUpperCase","slice","description","ResendOTP","onResendClick","async","status","data","message","comapanyCD","branchCD","contactUser","otpValidFor","TRAN_CD","variant","renderButton","buttonProps","remainingTime","other","clsx","remainingtime","renderTime","parseInt","maxTime","OTPInput","OTPLength","otpType","otploading","secure","FormHelperText","gap","textColor","sx","opacity","transform","transition","starticon","length","OTPModelForm","handleCloseEvent","forgotOtpSentText","auth_type","company_ID","branch_cd","VerifyFinger","verifyFinger","Typography","isBiometricError","eFingerUi","fingerUi","FingerprintSharpIcon","borderBottom","FingerIcon","isScanning","_Fragment","biometric","userMessage","keyCode","matchFinger","rows","captureFinger","Promise","resolve","reject","JSON","parse","forEach","element","i","MFS100Request","GalleryTemplate","encryptString","keyBytes","CryptoJS","PBKDF2","keySize","iterations","console","log","toString","lib","WordArray","init","words","iv","splice","dec","AES","decrypt","ciphertext","enc","Base64","Utf8","fromCharCode","join","decryptString","IMG_DATA","ProbTemplate","BioType","jsondata","stringify","fetch","method","headers","Accept","body","then","response","json","ErrorCode","errorCode","errorMessage","isError","sr_cd","SR_CD","ErrorMessage","catch","reason","err","isBase64","str","test","BankDetails","bannerDetails","loginImageURL","setLoginImageURL","urlObj","banner","useMemo","bannerImg","blob","utilFunction","base64toBlob","URL","createObjectURL","item","xs","md","lg","alt","objectFit","objectPosition","src","bannerTitle","marginLeft","bannerNote","PasswordRotation","ResetPassword","accessToken","tokenType","validatePasswordFn","MessageBox","usePopupContext","oldpassword","confirmpassword","pwdReset","setPasswordReset","isLoading","isNewpwdLoading","isoldPwdError","oldpassworderror","isnewpwdError","newpassworderror","isconfirmnewpwdError","confirmnewpassworderror","handleBlur","validateStatus","validateData","USER_ID","PASSWORD","SCREEN_REF","O_STATUS","O_MESSAGE","paddingBottom","messageTitle","icon","inititalState","firstName","lastName","OtpuserMessage","currentFlow","transactionID","access_token","token_type","reducer","state","action","isOTPError","payload","errorPassword","errorUsername","otpmodelclose","auth_data","totpReg","secretTocken","secretTockenQR","AuthControllerWrapper","logoUrl","logoTitle","loginFn","veirfyUsernameandPassword","verifyOTP","LanguageComponent","onOtpVerifyFailFn","dispath","useReducer","openpwdreset","setOpenPwdReset","failureCount","dashboardLogoURL","setDashboardLogoURL","otpResendRef","changeUserName","container","overflow","sm","direction","ml","Tooltip","describeChild","title","flag","responseType","BASE_COMP_CD","BASE_BRANCH_CD","CONTACT2","REQUEST_CD","DESCRIPTION","AUTH_TYPE","AUTH_DATA","OTP_VALID","OTP_SENT_TEXT","TOTP_REG","SECRET_TOCKEN","SECRET_TOCKEN_QR","STATUS","ALERT_MSG_LIST","Error","OTPNumber","newRequestID","fingerResponse","Quality","TimeOut","rawResponse","API.capture","promise","IsoTemplate","ForgotPasswordFields","onSubmit","navigate","loginPageEndpoint","validatePassword","workingState","mobileno","showConfirmPasswordTime","setShowConfirmPasswordTime","showConfirmPassword","replace","isMobileError","userMessageforMobileno","userMessageforPassword","passwordValidateloading","isConfirmPasswordError","userMessageforconfirmPassword","isApiError","apierrorMessage","requestCd","newPasswordMessage","confirmPasswordValidateloading","ForgotPasswordControllerWrapper","screenFlag","updatenewPassword","veirfyUsernameandMobileNo","verifyOTPForPWDReset","TotpEnbaledDisabled","setOpen","totp","setTotp","Enable","totpdata","verifyRequestData","validationData","isNaN","pwdverify","ValidatePassword","resdata","USER_NAME","MESSAGE","COMP_CD","BRANCH_CD","trim","BranchSelectionGridMetaData","gridConfig","dense","gridLabel","rowIdColumn","defaultColumnConfig","allowColumnReordering","disableSorting","hideHeader","disableGroupBy","enablePagination","containerHeight","min","max","allowFilter","allowColumnHiding","allowRowSelection","isCusrsorFocused","hideFooter","columns","accessor","columnName","sequence","alignment","componentType","dateFormat","heading_user_img","heading_user_img_border","actions","actionName","actionLabel","multiple","rowDoubleClick","actionTextColor","actionBackground","startsIcon","onEnterSubmit","endsIcon","BranchSelectionGrid","selectionMode","authState","isBranchSelectedFn","isLoggedInFn","logoutFn","logos","BranchSelectionGridDataApiFn","GetMenuDataApiFn","sideImage","branchSelectFn","dashboardUrl","loginUrl","appTranCd","isFetching","refetch","useQuery","queryClient","removeQueries","mutation","useMutation","onSuccess","extreData","menulistdata","branchCode","branch","BRANCH_NM","baseBranchCode","getError","setCurrentAction","useCallback","defFocusBtnName","mutate","GROUP_NAME","groupName","APP_TRAN_CD","COMP_NM","DAYEND_STATUS","EOD_RUNNING_STATUS","IS_UPD_DEF_BRANCH","user","isUpdDefBranch","COMP_BASE_BRANCH_CD","buttonNames","oneBranchOpen","LightTooltip","styled","props","popper","tooltipClasses","tooltip","backgroundColor","common","white","shadows","xl","visibility","profile","Stack","Box","roleName","placement","Avatar","userId","greet","hours","getHours","Greetings","bank","companyName","employeeID","Alert","severity","errorMsg","error_msg","errorDetail","error_detail","GridWrapper","finalMetaData","setData","setAction","controlsAtBottom","actionContextAtBottom","headerToolbarStyle","disableMultipleRowSelect","defaultSelectedRowId","defaultSelectBranch","Button","right","bottom","BranchSelectionGridWrapper","ClearCacheProvider","appBar","transitions","create","easing","sharp","duration","leavingScreen","searchBar","searchList","top","maxHeight","overflowY","outline","appBarShift","paddingLeft","enteringScreen","heading_user_dtl","left","toolbar","flexGrow","searchRoot","fontFamily","typography","alpha","search","pointerEvents","inputRoot","inputInput","loggedInUser","nameClass","dropDown","vTop","verticalAlign","userDesignation","userprofilehover","version01","DrawerClose_icon","marquee","animation","animationDelay","popover","blinkHard","StyledAppBar","AppBar","LogoContainer","CompanyLogo","BankInfoContainer","BankInfoText","Search","shape","up","RightSection","GreetingText","AppbarWrapper","handleDrawerOpen","handleDrawerClose","SearchComponent","bankLogo","profilePic","handleLogout","handleProfile","hideGreetings","menuIconConfig","optionalComponents","idleTimer","above1300","useMediaQuery","countdownMessage","setCountdownMessage","blinker","setBlinker","CloseIconComponent","OpenIconComponent","menuIconPosition","interval","setInterval","getRemainingTime","remainingSeconds","Math","floor","prev","clearInterval","Toolbar","disableRipple","MenuOutlinedIcon","version","BecomePartnerImg","textOverflow","workingDate","checkDateAndDisplay","format","lastLogin","map","component","Component","arrow","LogoutIcon","dateStr","drawerPaper","zIndex","drawerPaperClose","overflowX","toolbarIcon","mixins","hrCSS","buttonLink","reportMetaData","navBarCSS","headerDropdown","navLinkHeader","paddingRight","productLink","font13","loginDropdown","useStylesSideBar","root","drawer","fill","drawerIconSize","justifyItems","btnRoot","navLinks","navLinksforseparateView","nestedMenuLevel1","nestedMenuLevel2","listIcon","link","fontweight","linktext","faSmall","openList","openCurrent","slimList","activeMenuItem","localdrawerOpen","SideBarNav","metaData","drawerOpen","setView","slimSize","setNewFilterData","setNewFilterView","isFromSeparetView","rootUrl","handleListItemClick","result","Array","isArray","navItems","one","seperateView","SeperateListView","level","NestedListItem","SingleListItem","List","disablePadding","ScrollBar","code","setCode","i18n","language","labelStart","substring","ListItemIcon","FontAwesomeIcon","levelClassName","ListItem","disableGutters","viewName","newChield","item1","secondaryLabel","user_code","stopPropagation","MoreHorizIcon","ListItemText","isActiveMenu","isActiveMenuFromhref","window","location","pathname","navigationProps","titleText","document","isRouterLink","path","passNavigationPropsAsURLParmas","urlParms","URLSearchParams","rel","system_code","childrens","ExpandLess","ExpandMore","Collapse","in","timeout","unmountOnExit","menuhref","matchByValue","tags","navItem","toLocaleLowerCase","filterMetaDataByValue","searchString","tagsToSearch","newNavItems","newItem","newChildren","push","SearchViewNavigation","setSearch","translatedMetaData","filteredMetaData","myIcon","ArrowBackIosNewIcon","SearchBar","searchLabel","config","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","faPenToSquare","faBarsProgress","faFileExport","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","transformMetaDataAsPerRole","role","branches","company","access","products","newnavItem","filterMetaData","matchBranches","userBranches","accessBranches","indexOf","matchInvisibleRoles","userRole","accessRoles","matchProducts","userProducts","accessProducts","Number","visibleToRoles","userCompany","accessCompany","visibleToCompanies","visibleToBranches","invisibleToRoles","visibleToProducts","SideBar","view","NewFilterView","NewFilterData","myBranches","entities","Branch","myProducts","categoryCode","newMetaData","filteredMetaDataSideBar","companyID","filteredReportsMetaData","SidebarWrapper","Drawer","paper"],"mappings":"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kBA,EAClBmF,WAAYA,EACZC,QAASA,EACTF,SAAU,CACRY,SAAUkE,EACVK,OAAQ,CAAE7B,IAAK,GAAIzsB,OAAQ,WAE7BspB,UAAU,EACVG,mBAAmB,EACnBC,QAASA,EACThO,aAAcA,EACd3F,SAAUA,EACVlG,WAAYA,QClBpB0e,GAAQC,IACNC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,IC7LK,MAAMC,GAA6B,CACxCpL,EACAqL,EACAC,EACAC,EACAC,EACAC,KAEA,IASIC,EATWC,GACb3L,EAASY,SACTyK,EACAC,EACAC,EACAC,EACAC,GAGwBrO,KAAK1X,IAC7B,IAAI1N,SAAEA,KAAawsB,GAAY9e,EAQ/B,OAPIgb,MAAMC,QAAQ3oB,IAAaA,EAASwH,OAAS,IAC1C3C,QAAQ2nB,EAAQ1D,gBACnB0D,EAAQ1D,cAAe,EACvB0D,EAAQvC,SAAW,kBAIhB,IAAKuC,EAASxsB,SAAUA,MAEjC,MAAO,CACLmtB,OAAQnF,EAASmF,OACjBvE,SAAU8K,IA4BRE,GAAgB,CAACC,EAAcC,KACnC,IAAKpL,MAAMC,QAAQmL,KAAoBpL,MAAMC,QAAQkL,GACnD,OAAO,EAET,GAAIC,EAAets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"}
|