{"version":3,"sources":["helpers/GetApiUrl/index.js","context/FavoriteGroups/index.js","components/Loading/index.js","context/AuthorizedWidgets/index.js","context/FavoriteWidgets/index.js","components/FeatureFlag/index.js","context/SelectedCompanies/index.js","context/Dates/index.js","context/Companies/index.js","helpers/GetApiEnvironment/index.js","services/FetchApi/index.js","services/Validation/index.js","serviceWorker.js","svg/iconUser.svg","svg/brandMark.svg","components/Walkthough/index.js","components/WalkthroughFavorites/index.js","components/Navigation/index.js","containers/Layout/index.js","components/PrivateRoute/index.js","containers/App/index.js","index.js","helpers/SessionTimer/index.js","services/Authentication/index.js","components/ChangePasswordForm/index.js"],"names":["getApiUrl","hostname","window","location","indexOf","FavoriteGroupsContext","createContext","Loading","_ref","_ref$isLoading","isLoading","classes","useStyles","_jsxs","className","loading","children","_jsx","Box","component","visibility","CircularProgress","size","buttonProgress","makeStyles","theme","position","width","height","zIndex","top","left","marginTop","marginLeft","AuthorizedWidgetsContext","FavoriteWidgetsContext","FeatureFlag","props","_useState","useState","_useState2","_slicedToArray","flagStatus","setFlagStatus","useEffect","api","concat","getApiEnvironment","flagName","fetchApi","then","response","status","data","value","catch","error","fetchFeatureFlag","Fragment","SelectedCompaniesContext","selectedCompanyIds","changeCompanies","DatesContext","CompaniesContext","Error","console","log","http","axios","create","adapter","cacheAdapterEnhancer","defaults","enabledByDefault","cacheFlag","method","url","arguments","length","undefined","useCache","accessToken","sessionStorage","getItem","Promise","resolve","reject","headers","Authorization","hasSpecialCharacters","string","test","hasUpperCaseLetter","hasMinCharacters","min","characterCountEqualsTo","number","Boolean","match","_style","_path","_excluded","_extends","Object","assign","bind","target","i","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgIconUser","svgRef","title","titleId","id","xmlns","xmlnsXlink","x","y","viewBox","style","enableBackground","xmlSpace","ref","type","d","_g","ForwardRef","SvgBrandMark","tutorialSteps","label","imgPath","root","maxWidth","maxHeight","flexGrow","header","display","alignItems","justifyContent","paddingLeft","spacing","paddingRight","paddingTop","paddingBottom","backgroundColor","palette","background","default","img","overflow","marginRight","marginBottom","Walkthough","open","onClose","useTheme","_React$useState","React","_React$useState2","activeStep","setActiveStep","maxSteps","handleClose","Dialog","PaperProps","dialogPaper","Height","Width","DialogActions","IconButton","onClick","color","CloseIcon","SwipeableViews","axis","direction","index","onChangeIndex","step","enableMouseEvents","map","src","alt","Paper","square","elevation","Typography","align","MobileStepper","variant","steps","mobileStepper","nextButton","Button","prevActiveStep","disabled","KeyboardArrowLeft","KeyboardArrowRight","backButton","WalkthroughFavorites","Navigation","useLocation","setLoading","_useState3","_useState4","setError","_useState5","_useState6","firstName","setFirstName","_useState7","_useState8","lastName","setLastName","_useState9","_useState10","clientActive","setClientActive","_useState11","_useState12","depositActive","setDepositActive","_useState13","_useState14","setFavoritesActive","_useState15","_useState16","paymentActive","setPaymentActive","_useState17","_useState18","clientsSubmenuOpen","setclientsSubmenuOpen","_useState19","_useState20","depositsSubmenuOpen","setDepositsSubmenuOpen","_useState21","_useState22","favoritesSubmenuOpen","_useState23","_useState24","paymentsSubmenuOpen","setPaymentsSubmenuOpen","anchorRef","useRef","anchorRefDeposits","anchorRefFavorites","anchorRefPayments","_useContext","useContext","handleSubmenuClose","event","current","contains","prevOpen","focus","handleDepositsSubmenuClose","prevOpenDeposits","prevOpenFavorites","walkDoneObj","handlePaymentsSubmenuClose","prevOpenPayments","localStorage","walkDone2Obj","_useState25","_useState26","setOpen","_useState27","_useState28","open2","setOpen2","anchorEl","setAnchorEl","handleUserLinkClick","currentTarget","openUserLink","_useState29","_useState30","isModalOpen","setIsModalOpen","toggleModal","fetchUserName","pathname","appHeader","headerLeft","NavHashLink","branding","to","logoContainer","BrandMark","NavLink","exact","menuLink","menuLinkActiveSmall","menuLinkSmall","menuLinkActive","menuLinkIcon","ExpandLessIcon","ExpandMoreIcon","Popper","subMenu","placement","ClickAwayListener","onClickAway","MenuList","autoFocusItem","menuItem","MenuItem","headerRight","UserIcon","userIcon","ChangePasswordForm","CloseFunction","Walkthrough","setItem","userName","logOut","settingsLink","ExitToAppIcon","textDecoration","primary","main","padding","fill","stroke","appName","margin","fontSize","fontWeight","cursor","borderRadius","outline","borderBottom","textTransform","Layout","authorizedWidgets","setAuthorizedWidgets","favoriteGroups","setFavoriteGroups","favoriteWidgets","setFavoriteWidgets","dataFetched","setDataFetched","initialGroup","setInitialGroup","updateFavoriteGroups","favoriteGroupsEndpoint","groupId","groupName","sortOrder","updateFavoriteWidgets","favoriteWidgetsEndpoint","authorizedWidgetsEndpoint","updateAuthorized","userIsAuthenticated","Provider","navigationContainer","flex","PrivateRoute","Component","rest","temporary","companies","setCompanies","companiesEndpoint","setCompaniesEndpoint","selectedCompanies","setSelectedCompanies","relationshipsFetched","setRelationshipsFetched","companiesFetched","setCompaniesFetched","dates","setDates","monthlyStartDate","format","startOfMonth","subMonths","Date","monthlyEndDate","endOfMonth","weeklyStartDate","startOfISOWeek","subWeeks","weeklyEndDate","endOfISOWeek","dailyStartDate","endOfDay","subDays","dailyEndDate","useCallback","values","selectedCompaniesData","JSON","stringify","option","companyId","join","relationshipsEndpoint","fetchRelationships","Route","_objectSpread","render","ClientsContainer","lazy","DepositsContainer","PaymentsContainer","WithdrawalsContainer","FavoritesContainer","FavoritesAdminContainer","Login","App","createResponseInterceptor","Suspense","fallback","Router","Switch","path","ChangeTempPasswordForm","require","navigator","serviceWorker","ready","registration","unregister","createMuiTheme","light","typography","fontFamily","MuiButtonBase","disableRipple","overrides","MuiButton","text","MuiAppBar","flexDirection","colorDefault","MuiDialogTitle","MuiTab","flexShrink","minWidth","PrivateTabIndicator","bottom","MuiFormControl","marginNormal","MuiTypography","h1","MuiOutlinedInput","input","MuiInputLabel","outlined","transform","ThemeProvider","document","getElementById","startSessionTimer","callback","minutes","sessionTimer","setInterval","refreshSession","clearInterval","addEventListener","logIn","_response$data","tokenExpirationDate","username","isAdUser","isTempPassword","referrer","protocol","clear","urlSearchParams","URLSearchParams","search","params","fromEntries","entries","result","expires","currentUser","parse","passwordIsTemporary","referrerCompanyWebsite","interceptor","interceptors","use","eject","withCredentials","crossdomain","refreshToken","expiredAccessToken","AppName","process","REACT_APP_CLIENT_ID","AppSecret","REACT_APP_CLIENT_SECRET","_response$data2","currentPassword","newPassword","verifyNewPassword","checked","setValues","hasErrors","setHasErrors","helperText","setHelperText","uppercase","setUpperCase","specialCharacter","setSpecialCharacter","minCharacters","setMinCharacters","showPassword","classname","ariaStatus","confirmation","setConfirmation","handleInputChange","prop","_defineProperty","onBlur","closeFunction","closeIcon","formContainer","px","pb","moduleSubTitle","onSubmit","preventDefault","oldPassword","appSecret","HasErrors","Errors","message","setTimeout","errors","TextField","name","onChange","fullWidth","autoComplete","InputLabelProps","shrink","required","InputProps","inputProps","maxLength","passwordHelper","m","aligncenter","every","item","role","phone","lineHeight","listStyle","right"],"mappings":"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","file":"static/js/main.f94670dc.chunk.js","sourcesContent":["export default function getApiUrl() {\r\n const hostname = window.location.hostname;\r\n if (\r\n hostname.indexOf(\"localhost\") !== -1 ||\r\n hostname.indexOf(\"dev\") !== -1 ||\r\n hostname.indexOf(\"test\") !== -1 ||\r\n hostname.indexOf(\"qa\") !== -1\r\n ) {\r\n return \"gateway.ghllc.com\";\r\n } else {\r\n return \"gateway.ghllc.com\";\r\n }\r\n}\r\n","import { createContext } from \"react\";\r\n\r\nexport const FavoriteGroupsContext = createContext();\r\n","import React from \"react\";\r\n// Material-UI imports\r\nimport { Box, CircularProgress } from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nexport default function Loading({ isLoading = true }) {\r\n const classes = useStyles();\r\n if (isLoading) {\r\n return (\r\n
\r\n \r\n Loading...\r\n \r\n \r\n
\r\n );\r\n }\r\n return null;\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n loading: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n zIndex: 1000\r\n },\r\n buttonProgress: {\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12\r\n }\r\n}));\r\n","import { createContext } from \"react\";\r\n\r\nexport const AuthorizedWidgetsContext = createContext([]);\r\n","import { createContext } from \"react\";\r\n\r\nexport const FavoriteWidgetsContext = createContext();\r\n","import React, { Fragment, useState, useEffect } from \"react\";\r\n// Custom imports\r\nimport fetchApi from \"../../services/FetchApi\";\r\nimport getApiEnvironment from \"../../helpers/GetApiEnvironment\";\r\nimport getApiUrl from \"../../helpers/GetApiUrl\";\r\n\r\nexport default function FeatureFlag(props) {\r\n const [flagStatus, setFlagStatus] = useState(false);\r\n\r\n const fetchFeatureFlag = () => {\r\n const api = `${getApiEnvironment()}.${getApiUrl()}/featureflags?flagname=${\r\n props.flagName\r\n }`;\r\n fetchApi(\"GET\", api)\r\n .then(response => {\r\n if (response.status === 200) {\r\n if (response.data[0].value === \"true\") {\r\n setFlagStatus(true);\r\n }\r\n } else {\r\n //fail silently\r\n }\r\n })\r\n .catch(error => {\r\n //fail silently\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n fetchFeatureFlag();\r\n });\r\n\r\n return flagStatus && {props.children};\r\n}\r\n","import { createContext } from \"react\";\r\n\r\nexport const SelectedCompaniesContext = createContext({\r\n selectedCompanyIds: \"\",\r\n changeCompanies: () => {}\r\n});\r\n","import { createContext } from \"react\";\r\n\r\nexport const DatesContext = createContext({});\r\n","import { createContext } from \"react\";\r\n\r\nexport const CompaniesContext = createContext([]);\r\n","export default function getApiEnvironment() {\r\n const hostname = window.location.hostname;\r\n try {\r\n // Use the Dev API in dev & local environments\r\n if (\r\n hostname.indexOf(\"dev\") !== -1 ||\r\n hostname.indexOf(\"localhost\") !== -1\r\n ) {\r\n //return \"https://localhost:3004\";\r\n //return \"http://localhost:56420\";\r\n return \"https://dev.api\";\r\n }\r\n // QA API in QA environment\r\n else if (hostname.indexOf(\"qa\") !== -1) {\r\n return \"https://qa.api\";\r\n }\r\n //Test environment\r\n else if (hostname.indexOf(\"test\") !== -1) {\r\n return \"https://test.api\";\r\n }\r\n // Prod\r\n else if (hostname.indexOf(\"dashboard\") !== -1) {\r\n return \"https://api\";\r\n } else {\r\n throw new Error(\r\n \"API could not be found. Please connect to this site via a URL instead of an IP address.\"\r\n );\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport { cacheAdapterEnhancer } from \"axios-extensions\";\r\n\r\nconst http = axios.create({\r\n adapter: cacheAdapterEnhancer(axios.defaults.adapter, {\r\n enabledByDefault: true,\r\n cacheFlag: \"useCache\"\r\n })\r\n});\r\n\r\nexport default function fetchApi(\r\n method,\r\n url,\r\n data = {},\r\n useCache = true,\r\n accessToken = sessionStorage.getItem(\"accessToken\")\r\n ? `Bearer ${sessionStorage.getItem(\"accessToken\")}`\r\n : null\r\n) {\r\n return new Promise((resolve, reject) => {\r\n const config = {\r\n method: method,\r\n url: url,\r\n data: data,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n Authorization: accessToken\r\n },\r\n useCache: useCache\r\n };\r\n http(config)\r\n .then(response => {\r\n if (response.status === 200) {\r\n resolve(response);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch(error => {\r\n reject(error);\r\n });\r\n });\r\n}\r\n","export function hasSpecialCharacters(string) {\r\n return /[~`!#$%^&*+=\\-[\\]\\\\';,/{}|\\\\\":<>@?]/g.test(string);\r\n}\r\n\r\nexport function hasUpperCaseLetter(string) {\r\n return /[A-Z]/g.test(string);\r\n}\r\n\r\nexport function hasMinCharacters(string, min) {\r\n return string.length >= min;\r\n}\r\n\r\nexport function hasMaxCharacters(string, max) {\r\n return max >= string.length;\r\n}\r\n\r\nexport function characterCountEqualsTo(string, number) {\r\n return number === string.length;\r\n}\r\n\r\nexport function hasDigitsOnly(string) {\r\n return /^[0-9]+$/.test(string);\r\n}\r\n\r\nexport function matchEmailFormat(string) {\r\n return /^([A-Za-z0-9_]+([-+.'][A-Za-z0-9_]+)*)@([A-Za-z0-9_]([-.][A-Za-z0-9_])*)+[.][A-Za-z0-9]{2,16}/.test(\r\n string\r\n );\r\n}\r\n\r\nexport function leadingOrTrailingSpaces(string) {\r\n return string !== string.trim();\r\n}\r\n\r\nexport function hasSingleQuote(string) {\r\n return /[`']/.test(string);\r\n}\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","var _style, _path;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgIconUser(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 55 55\",\n style: {\n enableBackground: \"new 0 0 55 55\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\r\\n\\t.st0{fill:#0097D6;stroke:#0097D6;stroke-width:0.3;stroke-miterlimit:10;}\\r\\n\")), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M47.3,27.5c0-10.92-8.88-19.8-19.8-19.8S7.7,16.58,7.7,27.5c0,5.77,2.48,10.97,6.43,14.59l-0.02,0.02l0.64,0.54 c0.04,0.04,0.09,0.06,0.13,0.1c0.34,0.28,0.69,0.55,1.06,0.81c0.12,0.08,0.23,0.17,0.35,0.25c0.38,0.27,0.78,0.52,1.18,0.75 c0.09,0.05,0.18,0.1,0.27,0.15c0.44,0.25,0.89,0.49,1.35,0.71c0.03,0.02,0.07,0.03,0.1,0.05c1.5,0.7,3.11,1.21,4.79,1.52 c0.04,0.01,0.09,0.02,0.13,0.02c0.52,0.09,1.05,0.16,1.58,0.21c0.06,0.01,0.13,0.01,0.2,0.02c0.53,0.04,1.07,0.07,1.61,0.07 c0.54,0,1.07-0.03,1.6-0.07c0.07-0.01,0.13-0.01,0.2-0.02c0.53-0.05,1.05-0.12,1.57-0.21C30.91,47,30.96,47,31,46.99 c1.65-0.3,3.24-0.8,4.72-1.48c0.05-0.03,0.11-0.05,0.16-0.07c0.44-0.21,0.88-0.43,1.3-0.67c0.11-0.06,0.21-0.12,0.32-0.18 c0.39-0.23,0.77-0.47,1.14-0.72c0.13-0.09,0.26-0.19,0.4-0.28c0.32-0.23,0.63-0.46,0.93-0.71c0.07-0.05,0.14-0.1,0.2-0.16l0.66-0.55 l-0.02-0.02C44.8,38.52,47.3,33.3,47.3,27.5z M9.14,27.5c0-10.13,8.24-18.36,18.36-18.36s18.36,8.24,18.36,18.36 c0,5.46-2.39,10.36-6.19,13.73c-0.21-0.15-0.42-0.28-0.64-0.39l-6.1-3.05c-0.55-0.27-0.89-0.82-0.89-1.44v-2.13 c0.14-0.17,0.29-0.37,0.44-0.59c0.79-1.11,1.42-2.35,1.88-3.69c0.91-0.43,1.5-1.34,1.5-2.37v-2.55c0-0.62-0.23-1.23-0.64-1.71v-3.36 c0.04-0.37,0.17-2.48-1.36-4.22c-1.33-1.52-3.48-2.28-6.39-2.28s-5.06,0.77-6.39,2.28c-1.53,1.74-1.39,3.85-1.36,4.22v3.36 c-0.41,0.48-0.64,1.08-0.64,1.71v2.55c0,0.79,0.36,1.53,0.96,2.03c0.58,2.28,1.78,4.01,2.23,4.6v2.08c0,0.59-0.32,1.13-0.84,1.41 l-5.69,3.11c-0.18,0.1-0.36,0.21-0.54,0.34C11.5,37.79,9.14,32.92,9.14,27.5z M38.27,42.36c-0.25,0.18-0.51,0.36-0.77,0.53 c-0.12,0.08-0.24,0.16-0.36,0.23c-0.34,0.21-0.69,0.41-1.04,0.6c-0.08,0.04-0.16,0.08-0.23,0.12c-0.81,0.42-1.65,0.77-2.51,1.06 c-0.03,0.01-0.06,0.02-0.09,0.03c-0.45,0.15-0.91,0.28-1.37,0.4c0,0,0,0,0,0c-0.47,0.12-0.94,0.21-1.41,0.29 c-0.01,0-0.03,0.01-0.04,0.01c-0.45,0.07-0.9,0.13-1.35,0.16c-0.08,0.01-0.16,0.01-0.24,0.02c-0.45,0.03-0.9,0.06-1.35,0.06 c-0.46,0-0.91-0.02-1.36-0.06c-0.08-0.01-0.16-0.01-0.23-0.02c-0.46-0.04-0.91-0.09-1.36-0.17c-0.02,0-0.04-0.01-0.06-0.01 c-0.95-0.16-1.89-0.39-2.8-0.7c-0.03-0.01-0.06-0.02-0.08-0.03c-0.45-0.15-0.9-0.32-1.34-0.51c0,0-0.01,0-0.01,0 c-0.42-0.18-0.82-0.38-1.23-0.59c-0.05-0.03-0.11-0.05-0.16-0.08c-0.37-0.2-0.73-0.41-1.08-0.63c-0.11-0.07-0.21-0.13-0.31-0.2 c-0.33-0.21-0.65-0.44-0.96-0.67c-0.03-0.02-0.06-0.05-0.1-0.07c0.02-0.01,0.05-0.03,0.07-0.04l5.69-3.11 c0.98-0.53,1.59-1.56,1.59-2.67l0-2.59l-0.17-0.2c-0.02-0.02-1.57-1.91-2.16-4.48l-0.07-0.29l-0.25-0.16c-0.35-0.22-0.55-0.6-0.55-1 v-2.55c0-0.33,0.14-0.65,0.4-0.88l0.24-0.21v-4.01l-0.01-0.09c0-0.02-0.21-1.75,1.01-3.14c1.04-1.19,2.83-1.79,5.3-1.79 c2.47,0,4.25,0.6,5.29,1.78c1.22,1.38,1.02,3.14,1.02,3.15l-0.01,4.11l0.24,0.21c0.26,0.23,0.4,0.55,0.4,0.88v2.55 c0,0.51-0.35,0.98-0.85,1.13l-0.36,0.11l-0.12,0.36c-0.42,1.32-1.03,2.54-1.8,3.62c-0.19,0.27-0.37,0.5-0.53,0.68l-0.18,0.2v2.66 c0,1.16,0.65,2.21,1.68,2.72l6.1,3.05c0.04,0.02,0.08,0.04,0.12,0.06C38.43,42.25,38.35,42.3,38.27,42.36z\"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconUser);\nexport default __webpack_public_path__ + \"static/media/iconUser.cbbeea9f.svg\";\nexport { ForwardRef as ReactComponent };","var _style, _g;\nvar _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgBrandMark(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 58 88\",\n style: {\n enableBackground: \"new 0 0 58 88\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _style || (_style = /*#__PURE__*/React.createElement(\"style\", {\n type: \"text/css\"\n }, \"\\r\\n\\t.st0{fill:#1373E6;}\\r\\n\")), _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M40.9,1.6v2.8C37.3,2.6,33.3,1.6,29,1.6c-14.8,0-26.8,12-26.8,26.9c0,14.9,12,26.9,26.8,26.9 c14.8,0,26.8-12,26.8-26.9V1.6H40.9z M29,16.7c6.5,0,11.8,5.3,11.8,11.8c0,6.5-5.3,11.8-11.8,11.8c-6.5,0-11.8-5.3-11.8-11.8 C17.2,22,22.5,16.7,29,16.7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"st0\",\n d: \"M29,71.3c-6.5,0-11.8-5.3-11.8-11.9h-15c0,14.9,12,26.9,26.8,26.9c14.8,0,26.8-12.1,26.8-26.9h-15 C40.8,66,35.5,71.3,29,71.3\"\n }))));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBrandMark);\nexport default __webpack_public_path__ + \"static/media/brandMark.ce2d15c3.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport MobileStepper from \"@material-ui/core/MobileStepper\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport KeyboardArrowLeft from \"@material-ui/icons/KeyboardArrowLeft\";\r\nimport KeyboardArrowRight from \"@material-ui/icons/KeyboardArrowRight\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport SwipeableViews from \"react-swipeable-views\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\n\r\nconst tutorialSteps = [\r\n {\r\n label:\r\n \"Portfolio Analytics are now grouped into navigation tabs, making it easier to see charts based on related topics: Clients, Deposits, Payments and Withdrawals.\",\r\n imgPath: \"Dashboard-Walkthrough-1.png\"\r\n },\r\n {\r\n label:\r\n 'If you have more than one company in your Portfolio, use the \"Select Company\" dropdown to choose between a single company, or a mix of multiple companies.',\r\n imgPath: \"Dashboard-Walkthrough-2.png\"\r\n },\r\n {\r\n label:\r\n \"Click any chart title to see a chart description, including how data is calculated.\",\r\n imgPath: \"Dashboard-Walkthrough-3.png\"\r\n },\r\n {\r\n label:\r\n 'On some select charts you will see a \"Download CSV\" button, which will give you access to raw chart data. The data format is based upon the selected data view on the graph.',\r\n imgPath: \"Dashboard-Walkthrough-4.png\"\r\n }\r\n];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n maxWidth: 800,\r\n maxHeight: 800,\r\n flexGrow: 1\r\n },\r\n header: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n height: 125,\r\n paddingLeft: theme.spacing(4),\r\n paddingRight: theme.spacing(4),\r\n paddingTop: theme.spacing(1),\r\n paddingBottom: theme.spacing(1),\r\n backgroundColor: theme.palette.background.default\r\n },\r\n img: {\r\n height: 400,\r\n display: \"block\",\r\n width: 480,\r\n overflow: \"hidden\",\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n marginTop: \"auto\",\r\n marginBottom: \"auto\"\r\n }\r\n}));\r\n\r\nexport default function Walkthough(props) {\r\n const { open, onClose } = props;\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [activeStep, setActiveStep] = React.useState(0);\r\n const maxSteps = tutorialSteps.length;\r\n\r\n const handleNext = () => {\r\n setActiveStep(prevActiveStep => prevActiveStep + 1);\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep(prevActiveStep => prevActiveStep - 1);\r\n };\r\n\r\n const handleClose = () => {\r\n onClose(false);\r\n };\r\n\r\n const handleStepChange = step => {\r\n setActiveStep(step);\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {tutorialSteps.map(step => (\r\n \r\n ))}\r\n \r\n\r\n \r\n \r\n {\" \"}\r\n {tutorialSteps[activeStep].label}{\" \"}\r\n \r\n \r\n\r\n \r\n Next\r\n {theme.direction === \"rtl\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n }\r\n backButton={\r\n \r\n {theme.direction === \"rtl\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n Back\r\n \r\n }\r\n />\r\n
\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport MobileStepper from \"@material-ui/core/MobileStepper\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport KeyboardArrowLeft from \"@material-ui/icons/KeyboardArrowLeft\";\r\nimport KeyboardArrowRight from \"@material-ui/icons/KeyboardArrowRight\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport SwipeableViews from \"react-swipeable-views\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\n\r\nconst tutorialSteps = [\r\n {\r\n label:\r\n \"Be on the lookout for the 'New' and 'Updated' badges on the widgets.\",\r\n imgPath: \"newwalkthrough0.jpg\"\r\n },\r\n {\r\n label: \"You can now add a widget to your favorites, or remove it...\",\r\n imgPath: \"newwalkthrough2.jpg\"\r\n },\r\n {\r\n label: \"...and see all your favorite widgets under the 'Favorites' tab.\",\r\n imgPath: \"newwalkthrough1.jpg\"\r\n },\r\n {\r\n label:\r\n \"You can click on the 'Reorder' button in the 'Favorites' tab, then drag and drop to reorder your favorite widgets.\",\r\n imgPath: \"newwalkthrough3.jpg\"\r\n }\r\n];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n maxWidth: 800,\r\n maxHeight: 800,\r\n flexGrow: 1\r\n },\r\n header: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n height: 125,\r\n paddingLeft: theme.spacing(4),\r\n paddingRight: theme.spacing(4),\r\n paddingTop: theme.spacing(1),\r\n paddingBottom: theme.spacing(1),\r\n backgroundColor: theme.palette.background.default\r\n },\r\n img: {\r\n height: 400,\r\n display: \"block\",\r\n width: 480,\r\n overflow: \"hidden\",\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n marginTop: \"auto\",\r\n marginBottom: \"auto\"\r\n }\r\n}));\r\n\r\nexport default function WalkthroughFavorites(props) {\r\n const { open, onClose } = props;\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [activeStep, setActiveStep] = React.useState(0);\r\n const maxSteps = tutorialSteps.length;\r\n\r\n const handleNext = () => {\r\n setActiveStep(prevActiveStep => prevActiveStep + 1);\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep(prevActiveStep => prevActiveStep - 1);\r\n };\r\n\r\n const handleClose = () => {\r\n onClose(false);\r\n };\r\n\r\n const handleStepChange = step => {\r\n setActiveStep(step);\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {tutorialSteps.map(step => (\r\n \r\n ))}\r\n \r\n\r\n \r\n \r\n {\" \"}\r\n {tutorialSteps[activeStep].label}{\" \"}\r\n \r\n \r\n\r\n \r\n Next\r\n {theme.direction === \"rtl\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n }\r\n backButton={\r\n \r\n {theme.direction === \"rtl\" ? (\r\n \r\n ) : (\r\n \r\n )}\r\n Back\r\n \r\n }\r\n />\r\n
\r\n \r\n );\r\n}\r\n","import React, { useState, useEffect, useRef, useContext } from \"react\";\r\nimport { NavLink, useLocation } from \"react-router-dom\";\r\nimport { NavHashLink } from \"react-router-hash-link\";\r\n// Material-UI imports\r\nimport {\r\n Typography,\r\n Button,\r\n Paper,\r\n MenuItem,\r\n Popper,\r\n ClickAwayListener,\r\n MenuList,\r\n IconButton,\r\n Box,\r\n Dialog\r\n} from \"@material-ui/core\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// Custom imports\r\nimport { ReactComponent as UserIcon } from \"../../svg/iconUser.svg\";\r\nimport { ReactComponent as BrandMark } from \"../../svg/brandMark.svg\";\r\nimport { logOut } from \"../../services/Authentication\";\r\nimport fetchApi from \"../../services/FetchApi\";\r\nimport getApiEnvironment from \"../../helpers/GetApiEnvironment\";\r\nimport Loading from \"../Loading\";\r\nimport Walkthrough from \"../../components/Walkthough\";\r\nimport WalkthroughFavorites from \"../WalkthroughFavorites\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport ExpandLessIcon from \"@material-ui/icons/ExpandLess\";\r\nimport FeatureFlag from \"../FeatureFlag\";\r\nimport { FavoriteGroupsContext } from \"../../context/FavoriteGroups\";\r\nimport SettingsIcon from \"@material-ui/icons/Settings\";\r\nimport ExitToAppIcon from \"@material-ui/icons/ExitToApp\";\r\nimport ChangePasswordForm from \"../ChangePasswordForm\";\r\n\r\nexport default function Navigation() {\r\n const classes = useStyles();\r\n const location = useLocation();\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const [firstName, setFirstName] = useState(\r\n sessionStorage.getItem(\"firstName\")\r\n );\r\n const [lastName, setLastName] = useState(sessionStorage.getItem(\"lastName\"));\r\n const [clientActive, setClientActive] = useState(false);\r\n const [depositActive, setDepositActive] = useState(false);\r\n const [favoritesActive, setFavoritesActive] = useState(false);\r\n const [paymentActive, setPaymentActive] = useState(false);\r\n const [clientsSubmenuOpen, setclientsSubmenuOpen] = useState(false);\r\n const [depositsSubmenuOpen, setDepositsSubmenuOpen] = useState(false);\r\n const [favoritesSubmenuOpen, setFavoritesSubmenuOpen] = useState(false);\r\n const [paymentsSubmenuOpen, setPaymentsSubmenuOpen] = useState(false);\r\n const anchorRef = useRef(null);\r\n const anchorRefDeposits = useRef(null);\r\n const anchorRefFavorites = useRef(null);\r\n const anchorRefPayments = useRef(null);\r\n const [favoriteGroups] = useContext(FavoriteGroupsContext);\r\n\r\n // Clients Submenu\r\n const handleSubmenuToggle = () => {\r\n setclientsSubmenuOpen(prevOpen => !prevOpen);\r\n };\r\n const handleSubmenuClose = event => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setclientsSubmenuOpen(false);\r\n };\r\n const prevOpen = useRef(clientsSubmenuOpen);\r\n useEffect(() => {\r\n if (prevOpen.current === true && clientsSubmenuOpen === false) {\r\n anchorRef.current.focus();\r\n }\r\n prevOpen.current = clientsSubmenuOpen;\r\n }, [clientsSubmenuOpen]);\r\n\r\n // Deposits Submenu\r\n const handleDepositsSubmenuToggle = () => {\r\n setDepositsSubmenuOpen(prevOpenDeposits => !prevOpenDeposits);\r\n };\r\n const handleDepositsSubmenuClose = event => {\r\n if (\r\n anchorRefDeposits.current &&\r\n anchorRefDeposits.current.contains(event.target)\r\n ) {\r\n return;\r\n }\r\n setDepositsSubmenuOpen(false);\r\n };\r\n const prevOpenDeposits = useRef(depositsSubmenuOpen);\r\n useEffect(() => {\r\n if (prevOpenDeposits.current === true && depositsSubmenuOpen === false) {\r\n anchorRefDeposits.current.focus();\r\n }\r\n prevOpenDeposits.current = depositsSubmenuOpen;\r\n }, [depositsSubmenuOpen]);\r\n\r\n // Favorites Submenu\r\n const handleFavoritesSubmenuToggle = () => {\r\n setFavoritesSubmenuOpen(prevOpenFavorites => !prevOpenFavorites);\r\n };\r\n const handleFavoritesSubmenuClose = event => {\r\n if (\r\n anchorRefFavorites.current &&\r\n anchorRefFavorites.current.contains(event.target)\r\n ) {\r\n return;\r\n }\r\n setFavoritesSubmenuOpen(false);\r\n };\r\n const prevOpenFavorites = useRef(favoritesSubmenuOpen);\r\n useEffect(() => {\r\n if (prevOpenFavorites.current === true && favoritesSubmenuOpen === false) {\r\n anchorRefFavorites.current.focus();\r\n }\r\n prevOpenFavorites.current = favoritesSubmenuOpen;\r\n }, [favoritesSubmenuOpen]);\r\n\r\n //Payments Submenu\r\n const handlePaymentsSubmenuToggle = () => {\r\n setPaymentsSubmenuOpen(prevOpenPayments => !prevOpenPayments);\r\n };\r\n const handlePaymentsSubmenuClose = event => {\r\n if (\r\n anchorRefPayments.current &&\r\n anchorRefPayments.current.contains(event.target)\r\n ) {\r\n return;\r\n }\r\n setPaymentsSubmenuOpen(false);\r\n };\r\n const prevOpenPayments = useRef(paymentsSubmenuOpen);\r\n useEffect(() => {\r\n if (prevOpenPayments.current === true && paymentsSubmenuOpen === false) {\r\n anchorRefPayments.current.focus();\r\n }\r\n prevOpenPayments.current = paymentsSubmenuOpen;\r\n }, [paymentsSubmenuOpen]);\r\n\r\n let walkDoneObj;\r\n if (localStorage.getItem(\"walkDone\") === \"true\") {\r\n walkDoneObj = false;\r\n } else {\r\n walkDoneObj = true;\r\n }\r\n const [open, setOpen] = useState(walkDoneObj);\r\n const handleClose = () => {\r\n localStorage.setItem(\"walkDone\", \"true\");\r\n setOpen(false);\r\n };\r\n\r\n let walkDone2Obj;\r\n if (localStorage.getItem(\"walkDone2\") === \"true\") {\r\n walkDone2Obj = false;\r\n } else {\r\n walkDone2Obj = true;\r\n }\r\n const [open2, setOpen2] = useState(walkDone2Obj);\r\n const handleClose2 = () => {\r\n localStorage.setItem(\"walkDone2\", \"true\");\r\n setOpen2(false);\r\n };\r\n\r\n //userlink\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const handleUserLinkClick = (event) => {\r\n setAnchorEl(anchorEl ? null : event.currentTarget);\r\n };\r\n\r\n const openUserLink = Boolean(anchorEl);\r\n const id = openUserLink ? 'simple-popper' : undefined;\r\n\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n\r\n function toggleModal() {\r\n setIsModalOpen(!isModalOpen); \r\n }\r\n\r\n function closeModal() {\r\n toggleModal();\r\n handleUserLinkClick();\r\n }\r\n\r\n useEffect(() => {\r\n const fetchUserName = () => {\r\n const api = `${getApiEnvironment()}.gateway.ghllc.com/users/user`;\r\n fetchApi(\"GET\", api, null, false)\r\n .then(response => {\r\n if (response.status === 200) {\r\n setFirstName(response.data.firstName);\r\n setLastName(response.data.lastName);\r\n setClientActive(false);\r\n setLoading(false);\r\n } else {\r\n throw new Error(`Error Code ${response.status}`);\r\n }\r\n })\r\n .catch(error => {\r\n setError(true);\r\n });\r\n };\r\n fetchUserName();\r\n }, [firstName, lastName]);\r\n\r\n useEffect(() => {\r\n if (location.pathname.indexOf(\"clients\") > -1) {\r\n setClientActive(true);\r\n setDepositActive(false);\r\n setFavoritesActive(false);\r\n setPaymentActive(false);\r\n } else if (location.pathname.indexOf(\"deposits\") > -1) {\r\n setClientActive(false);\r\n setDepositActive(true);\r\n setFavoritesActive(false);\r\n setPaymentActive(false);\r\n } else if (location.pathname.indexOf(\"favorites\") > -1) {\r\n setClientActive(false);\r\n setDepositActive(false);\r\n setFavoritesActive(true);\r\n setPaymentActive(false);\r\n } else if (location.pathname.indexOf(\"payments\") > -1) {\r\n setClientActive(false);\r\n setDepositActive(false);\r\n setFavoritesActive(false);\r\n setPaymentActive(true);\r\n } else {\r\n setDepositActive(false);\r\n setClientActive(false);\r\n setFavoritesActive(false);\r\n setPaymentActive(false);\r\n }\r\n }, [location]);\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n Favorites\r\n \r\n \r\n \r\n Clients\r\n \r\n \r\n {clientsSubmenuOpen ? : }\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Client Adds\r\n \r\n \r\n Client Retention\r\n \r\n \r\n \r\n Client Validation\r\n \r\n \r\n \r\n \r\n Client Closings\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Deposits\r\n \r\n\r\n \r\n {depositsSubmenuOpen ? : }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Time to First Deposit\r\n \r\n \r\n \r\n \r\n Client Deposits\r\n \r\n \r\n \r\n \r\n Draft Returns\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Payments\r\n \r\n\r\n \r\n {paymentsSubmenuOpen ? : }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Creditor Payments\r\n \r\n \r\n \r\n \r\n Exceptions\r\n \r\n \r\n \r\n \r\n Phone Pay Returns\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Withdrawals\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n closeModal()}>\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {!loading ? (\r\n \r\n {firstName} {lastName}\r\n \r\n ) : (\r\n \r\n )}\r\n\r\n \r\n {\" \"}\r\n {\" \"}\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n appHeader: {\r\n background: \"#fff\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n height: 80,\r\n position: \"fixed\",\r\n zIndex: 999\r\n },\r\n headerLeft: {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n branding: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"none\"\r\n },\r\n logoContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n backgroundColor: theme.palette.primary.main,\r\n \"& svg\": {\r\n width: theme.spacing(4),\r\n padding: theme.spacing(2, 3),\r\n \"& .st0\": {\r\n fill: \"#fff !important\",\r\n stroke: \"#fff !important\"\r\n }\r\n }\r\n },\r\n appName: {\r\n margin: theme.spacing(0, 4, 0, 2),\r\n height: 40,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n color: \"#333\",\r\n fontSize: \"1rem\",\r\n fontWeight: 400,\r\n \"@media (min-width:720px)\": {\r\n fontSize: \"1.6rem\"\r\n }\r\n },\r\n settingsLink: {\r\n cursor: \"pointer\",\r\n borderRadius: 0,\r\n padding: theme.spacing(1, 1),\r\n height: theme.spacing(7.5),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"none\",\r\n color: \"#333\",\r\n fontSize: \"1rem\",\r\n fontWeight: \"normal\",\r\n outline: \"none\",\r\n borderBottom: `${theme.spacing(0.5)}px solid transparent`,\r\n \"&.active\": {\r\n color: theme.palette.primary.main,\r\n borderBottom: `${theme.spacing(0.5)}px solid ${\r\n theme.palette.primary.main\r\n }`\r\n }\r\n },\r\n\r\n menuLink: {\r\n cursor: \"pointer\",\r\n borderRadius: 0,\r\n padding: theme.spacing(1, 3),\r\n height: theme.spacing(7.5),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"none\",\r\n color: \"#333\",\r\n fontSize: \"1rem\",\r\n fontWeight: \"normal\",\r\n outline: \"none\",\r\n borderBottom: `${theme.spacing(0.5)}px solid transparent`,\r\n \"&.active\": {\r\n color: theme.palette.primary.main,\r\n borderBottom: `${theme.spacing(0.5)}px solid ${\r\n theme.palette.primary.main\r\n }`\r\n }\r\n },\r\n menuLinkSmall: {\r\n cursor: \"pointer\",\r\n borderRadius: 0,\r\n padding: theme.spacing(1, 0.5, 1, 3),\r\n height: theme.spacing(7.5),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"none\",\r\n color: \"#333\",\r\n fontSize: \"1rem\",\r\n fontWeight: \"normal\",\r\n outline: \"none\",\r\n borderBottom: `${theme.spacing(0.5)}px solid transparent`,\r\n \"&.active\": {\r\n color: theme.palette.primary.main,\r\n borderBottom: `${theme.spacing(0.5)}px solid ${\r\n theme.palette.primary.main\r\n }`\r\n }\r\n },\r\n menuLinkIcon: {\r\n cursor: \"pointer\",\r\n borderRadius: 0,\r\n padding: theme.spacing(1, 3, 1, 0),\r\n height: theme.spacing(7.5),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"none\",\r\n color: \"#333\",\r\n fontSize: \"1rem\",\r\n fontWeight: \"normal\",\r\n outline: \"none\",\r\n borderBottom: `${theme.spacing(0.5)}px solid transparent`,\r\n \"&.active\": {\r\n color: theme.palette.primary.main,\r\n borderBottom: `${theme.spacing(0.5)}px solid ${\r\n theme.palette.primary.main\r\n }`\r\n }\r\n },\r\n menuLinkActive: {\r\n cursor: \"pointer\",\r\n borderRadius: 0,\r\n padding: theme.spacing(1, 3, 1, 0),\r\n height: theme.spacing(7.5),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"none\",\r\n color: \"#333\",\r\n fontSize: \"1rem\",\r\n fontWeight: \"normal\",\r\n outline: \"none\",\r\n borderBottom: `${theme.spacing(0.5)}px solid ${theme.palette.primary.main}`\r\n },\r\n menuLinkActiveSmall: {\r\n cursor: \"pointer\",\r\n borderRadius: 0,\r\n padding: theme.spacing(1, 0.5, 1, 3),\r\n height: theme.spacing(7.5),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n textDecoration: \"none\",\r\n color: \"#333\",\r\n fontSize: \"1rem\",\r\n fontWeight: \"normal\",\r\n outline: \"none\",\r\n borderBottom: `${theme.spacing(0.5)}px solid ${theme.palette.primary.main}`\r\n },\r\n menuItem: {\r\n textDecoration: \"none\",\r\n color: \"#222\",\r\n outline: \"none\"\r\n },\r\n headerRight: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginRight: theme.spacing(1),\r\n paddingRight: theme.spacing(1)\r\n },\r\n userIcon: {\r\n marginRight: theme.spacing(1)\r\n },\r\n userName: {\r\n display: \"none\",\r\n \"@media (min-width: 720px)\": {\r\n display: \"flex\"\r\n }\r\n },\r\n logOut: {\r\n marginLeft: theme.spacing(2),\r\n fontSize: \"1rem\",\r\n textTransform: \"none\"\r\n },\r\n subMenu: {\r\n zIndex: 999\r\n }\r\n}));\r\n","import React, { useState, useEffect } from \"react\";\r\n// Material-UI imports\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// Custom imports\r\nimport { AuthorizedWidgetsContext } from \"../../context/AuthorizedWidgets\";\r\nimport { FavoriteGroupsContext } from \"../../context/FavoriteGroups\";\r\nimport { FavoriteWidgetsContext } from \"../../context/FavoriteWidgets\";\r\nimport fetchApi from \"../../services/FetchApi\";\r\nimport getApiEnvironment from \"../../helpers/GetApiEnvironment\";\r\nimport Navigation from \"../../components/Navigation\";\r\nimport { userIsAuthenticated } from \"../../services/Authentication\";\r\n\r\nexport default function Layout(props) {\r\n const classes = useStyles();\r\n const [authorizedWidgets, setAuthorizedWidgets] = useState([]);\r\n const [favoriteGroups, setFavoriteGroups] = useState([]);\r\n const [favoriteWidgets, setFavoriteWidgets] = useState([]);\r\n const [dataFetched, setDataFetched] = useState(false);\r\n const [initialGroup, setInitialGroup] = useState(false);\r\n\r\n const updateAuthorized = () => {\r\n if (!dataFetched) {\r\n const authorizedWidgetsEndpoint = `${getApiEnvironment()}.gateway.ghllc.com/dashboard/users/authorizedwidgets`;\r\n fetchApi(\"GET\", authorizedWidgetsEndpoint, null, false)\r\n .then(response => {\r\n if (response.status === 200) {\r\n setAuthorizedWidgets(response.data);\r\n setDataFetched(true);\r\n } else {\r\n throw new Error(`Error Code ${response.status}`);\r\n }\r\n })\r\n .catch(error => {\r\n //setError(error);\r\n });\r\n } else {\r\n setAuthorizedWidgets(authorizedWidgets);\r\n }\r\n };\r\n\r\n const updateFavoriteGroups = () => {\r\n const favoriteGroupsEndpoint = `${getApiEnvironment()}.gateway.ghllc.com/dashboard/workspaces/favorites/groups`;\r\n fetchApi(\"GET\", favoriteGroupsEndpoint, null, false)\r\n .then(response => {\r\n if (response.status === 200) {\r\n setFavoriteGroups(response.data);\r\n } else {\r\n throw new Error(`Error Code ${response.status}`);\r\n }\r\n })\r\n .catch(error => {\r\n if (error.status === 204 && !initialGroup) {\r\n const defaultFavoritesGroup = {\r\n groupId: null,\r\n groupName: \"Favorites\",\r\n sortOrder: 0\r\n };\r\n\r\n fetchApi(\r\n \"POST\",\r\n favoriteGroupsEndpoint,\r\n defaultFavoritesGroup,\r\n false\r\n ).then(response => {\r\n setInitialGroup(true);\r\n //setFavoriteGroups(defaultFavoritesGroup);\r\n fetchApi(\"GET\", favoriteGroupsEndpoint, null, false)\r\n .then(response => { \r\n if (response.status === 200) {\r\n setFavoriteGroups(response.data);\r\n }\r\n })\r\n \r\n });\r\n }\r\n });\r\n };\r\n\r\n const updateFavoriteWidgets = () => {\r\n const favoriteWidgetsEndpoint = `${getApiEnvironment()}.gateway.ghllc.com/dashboard/workspaces/favorites`;\r\n fetchApi(\"GET\", favoriteWidgetsEndpoint, null, false)\r\n .then(response => {\r\n if (response.status === 200) {\r\n setFavoriteWidgets(response.data);\r\n } else if (response.status === 204) {\r\n setFavoriteWidgets([]);\r\n } else {\r\n throw new Error(`Error Code ${response.status}`);\r\n }\r\n })\r\n .catch(error => {\r\n if (error.status === 204) {\r\n setFavoriteWidgets([]);\r\n }\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n updateAuthorized();\r\n }, [dataFetched, authorizedWidgets]);\r\n\r\n useEffect(() => {\r\n updateFavoriteGroups();\r\n updateFavoriteWidgets();\r\n }, [initialGroup]);\r\n\r\n if (userIsAuthenticated() && window.location.pathname !== \"/\") {\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {props.children}\r\n \r\n \r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n navigationContainer: {\r\n flex: \"0 0 100%\",\r\n height: \"80px\"\r\n }\r\n}));\r\n","import React, { useState, useEffect, useCallback } from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\nimport { format, endOfISOWeek, startOfISOWeek, subDays, subWeeks, subMonths } from \"date-fns\";\r\n\r\n// Custom imports\r\nimport { CompaniesContext } from \"../../context/Companies\";\r\nimport { SelectedCompaniesContext } from \"../../context/SelectedCompanies\";\r\nimport { DatesContext } from \"../../context/Dates\";\r\nimport { userIsAuthenticated, logOut } from \"../../services/Authentication\";\r\nimport fetchApi from \"../../services/FetchApi\";\r\nimport getApiEnvironment from \"../../helpers/GetApiEnvironment\";\r\nimport startOfMonth from \"date-fns/esm/fp/startOfMonth/index.js\";\r\nimport endOfMonth from \"date-fns/endOfMonth\";\r\nimport endOfDay from \"date-fns/endOfDay/index\";\r\n\r\nexport default function PrivateRoute(props) {\r\n const { component: Component, temporary: Temporary, ...rest } = props;\r\n const [companies, setCompanies] = useState([]);\r\n const [companiesEndpoint, setCompaniesEndpoint] = useState(\"\");\r\n const [selectedCompanies, setSelectedCompanies] = useState({\r\n selectedCompanyIds: \"\",\r\n changeCompanies: () => { }\r\n });\r\n const [relationshipsFetched, setRelationshipsFetched] = useState(false);\r\n const [companiesFetched, setCompaniesFetched] = useState(false);\r\n const [dates, setDates] = useState({});\r\n\r\n const monthlyStartDate = format(startOfMonth(subMonths(new Date(), 13)), \"MM/dd/yyyy\");\r\n const monthlyEndDate = format(endOfMonth(subMonths(new Date(), 1)), \"MM/dd/yyyy\");\r\n const weeklyStartDate = format(startOfISOWeek(subWeeks(new Date(), 12)), \"MM/dd/yyyy\");\r\n const weeklyEndDate = format(endOfISOWeek(subWeeks(new Date(), 1)), \"MM/dd/yyyy\");\r\n const dailyStartDate = format(endOfDay(subDays(new Date(), 35)), \"MM/dd/yyyy\");\r\n const dailyEndDate = format(endOfDay(subDays(new Date(), 1)), \"MM/dd/yyyy\");\r\n\r\n const changeCompanies = useCallback(values => {\r\n //console.log(\"changeCompanies\");\r\n const selectedCompaniesData = JSON.stringify(values);\r\n const selectedCompanyIds = values\r\n .map(option => {\r\n return option.companyId;\r\n })\r\n .join();\r\n sessionStorage.setItem(\"selectedCompanies\", selectedCompaniesData);\r\n sessionStorage.setItem(\"selectedCompanyIds\", selectedCompanyIds);\r\n setSelectedCompanies({\r\n selectedCompanies: sessionStorage.getItem(\"selectedCompanies\"),\r\n selectedCompanyIds: sessionStorage.getItem(\"selectedCompanyIds\"),\r\n changeCompanies\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n const fetchRelationships = () => {\r\n const relationshipsEndpoint = `${getApiEnvironment()}.gateway.ghllc.com/Dashboard/Users/Relationships`;\r\n fetchApi(\"GET\", relationshipsEndpoint)\r\n .then(response => {\r\n if (response.status === 200) {\r\n sessionStorage.setItem(\"relationshipsAvailable\", true);\r\n setCompaniesEndpoint(\r\n `${getApiEnvironment()}.gateway.ghllc.com/Dashboard/Users/RelationshipsCompanies`\r\n );\r\n } else {\r\n throw new Error(`Error Code ${response.status}`);\r\n }\r\n })\r\n .catch(error => {\r\n if (\r\n error.response.data ===\r\n \"Cannot retrieve relationships from a non GH internal user\"\r\n ) {\r\n sessionStorage.setItem(\"relationshipsAvailable\", false);\r\n setCompaniesEndpoint(\r\n `${getApiEnvironment()}.gateway.ghllc.com/dashboard/users/companies`\r\n );\r\n setCompaniesFetched(false);\r\n }\r\n // @todo: handle displaying errors here\r\n console.log(error);\r\n });\r\n setRelationshipsFetched(true);\r\n };\r\n\r\n if (!relationshipsFetched) {\r\n fetchRelationships();\r\n }\r\n setCompaniesFetched(false);\r\n }, [\r\n dailyEndDate,\r\n dailyStartDate,\r\n monthlyEndDate,\r\n monthlyStartDate,\r\n relationshipsFetched,\r\n weeklyEndDate,\r\n weeklyStartDate\r\n ]);\r\n\r\n useEffect(() => {\r\n const fetchCompanies = () => {\r\n setCompanies([]);\r\n fetchApi(\"GET\", companiesEndpoint)\r\n .then(response => {\r\n if (response.status === 200) {\r\n setCompanies(response.data);\r\n setSelectedCompanies({\r\n selectedCompanies: sessionStorage.getItem(\"selectedCompanies\"),\r\n selectedCompanyIds: sessionStorage.getItem(\"selectedCompanyIds\"),\r\n changeCompanies: changeCompanies\r\n });\r\n } else {\r\n throw new Error(`Error Code ${response.status}`);\r\n }\r\n })\r\n .catch(error => {\r\n // @todo: handle displaying errors here\r\n console.log(error);\r\n });\r\n\r\n setCompaniesFetched(true);\r\n };\r\n if (!companiesFetched && companiesEndpoint) {\r\n fetchCompanies();\r\n }\r\n }, [\r\n dailyEndDate,\r\n dailyStartDate,\r\n monthlyEndDate,\r\n monthlyStartDate,\r\n weeklyEndDate,\r\n weeklyStartDate,\r\n selectedCompanies,\r\n changeCompanies,\r\n companiesFetched,\r\n companiesEndpoint\r\n ]);\r\n\r\n useEffect(() => {\r\n setDates({\r\n monthlyStartDate,\r\n weeklyStartDate,\r\n dailyStartDate,\r\n monthlyEndDate,\r\n weeklyEndDate,\r\n dailyEndDate\r\n });\r\n }, [\r\n dailyEndDate,\r\n dailyStartDate,\r\n monthlyEndDate,\r\n monthlyStartDate,\r\n weeklyEndDate,\r\n weeklyStartDate\r\n ]);\r\n\r\n //console.log(\"selectedCompanies in route\", selectedCompanies);\r\n //console.log(\"companies\", companies);\r\n return (\r\n \r\n userIsAuthenticated() === true ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n logOut()\r\n )\r\n }\r\n />\r\n );\r\n}\r\n","import React, { Suspense, lazy } from \"react\";\r\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\r\n// Custom imports\r\nimport Loading from \"../../components/Loading\";\r\nimport Layout from \"../../containers/Layout\";\r\nimport PrivateRoute from \"../../components/PrivateRoute\";\r\nimport ChangeTempPasswordForm from \"../../components/ChangePasswordForm\";\r\nimport { createResponseInterceptor } from \"../../services/Authentication\";\r\n\r\nconst ClientsContainer = lazy(() => import(\"../Clients\"));\r\nconst DepositsContainer = lazy(() => import(\"../Deposits\"));\r\nconst PaymentsContainer = lazy(() => import(\"../Payments\"));\r\nconst WithdrawalsContainer = lazy(() => import(\"../Withdrawals\"));\r\nconst FavoritesContainer = lazy(() => import(\"../Favorites\"));\r\nconst FavoritesAdminContainer = lazy(() => import(\"../Settings\"));\r\nconst Login = lazy(() => import(\"../../components/Login\"));\r\n\r\nexport default function App() {\r\n createResponseInterceptor();\r\n\r\n return (\r\n }>\r\n \r\n \r\n \r\n }\r\n temporary={() => }\r\n />\r\n }\r\n temporary={() => }\r\n />\r\n }\r\n temporary={() => }\r\n />\r\n }\r\n temporary={() => }\r\n />\r\n }\r\n temporary={() => }\r\n />\r\n }\r\n temporary={() => }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import \"react-app-polyfill/ie9\";\r\nimport \"react-app-polyfill/stable\";\r\nimport React from \"react\";\r\nimport { render } from \"react-dom\";\r\nimport { createMuiTheme } from \"@material-ui/core/styles\";\r\nimport { ThemeProvider } from \"@material-ui/styles\";\r\nimport { unregister } from \"./serviceWorker\";\r\nimport App from \"./containers/App\";\r\nimport \"./styles.css\";\r\nrequire(\"typeface-poppins\");\r\n\r\nunregister();\r\n\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: \"#1373e6\",\r\n light: \"#fff\"\r\n }\r\n },\r\n typography: {\r\n fontFamily: [\r\n \"Poppins\",\r\n \"-apple-system\",\r\n \"BlinkMacSystemFont\",\r\n '\"Segoe UI\"',\r\n \"Roboto\",\r\n '\"Helvetica Neue\"',\r\n \"Arial\",\r\n \"sans-serif\",\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"'\r\n ].join(\",\")\r\n },\r\n props: {\r\n MuiButtonBase: {\r\n disableRipple: true\r\n }\r\n },\r\n\r\n overrides: {\r\n MuiButton: {\r\n root: {\r\n textTransform: \"none\",\r\n padding: \"6px 32px\",\r\n borderRadius: \"18px\"\r\n },\r\n text: {\r\n textTransform: \"none\"\r\n }\r\n },\r\n MuiAppBar: {\r\n root: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n padding: \"0 16px\",\r\n height: 60\r\n },\r\n colorDefault: {\r\n backgroundColor: \"#ffffff\"\r\n }\r\n },\r\n MuiDialogTitle: {\r\n root: {\r\n padding: \"16px 40px\"\r\n }\r\n },\r\n MuiTab: {\r\n root: {\r\n flexShrink: 1,\r\n textTransform: \"none\",\r\n \"@media (min-width: 600px)\": {\r\n minWidth: \"80px\"\r\n }\r\n }\r\n },\r\n PrivateTabIndicator: {\r\n root: {\r\n bottom: \"10px\",\r\n height: \"3px\"\r\n }\r\n },\r\n MuiFormControl: {\r\n marginNormal: {\r\n marginTop: 8,\r\n marginBottom: 8\r\n }\r\n },\r\n MuiTypography: {\r\n h1: {\r\n fontSize: \"1.15rem\",\r\n fontWeight: \"600\",\r\n color: \"#888\"\r\n }\r\n },\r\n MuiOutlinedInput: {\r\n input: {\r\n padding: \"12px 14px\"\r\n }\r\n },\r\n MuiInputLabel: {\r\n outlined: {\r\n transform: \"translate(14px, 12px) scale(1)\"\r\n }\r\n }\r\n }\r\n});\r\nrender(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n","export function startSessionTimer(callback, minutes) {\r\n // Start a timer\r\n let sessionTimer = window.setInterval(callback, minutes * 60 * 1000);\r\n // Function used to refresh the timer\r\n const refreshSession = function() {\r\n clearInterval(sessionTimer);\r\n sessionTimer = window.setInterval(callback, minutes * 60 * 1000);\r\n };\r\n // If user clicks something or presses a key reset the timer\r\n document.addEventListener(\"click\", refreshSession);\r\n document.addEventListener(\"keydown\", refreshSession);\r\n document.addEventListener(\"mousemove\", refreshSession);\r\n document.addEventListener(\"scroll\", refreshSession);\r\n}\r\n","import axios from \"axios\";\r\nimport getApiEnvironment from \"../../helpers/GetApiEnvironment\";\r\nimport getApiUrl from \"../../helpers/GetApiUrl\";\r\nimport { startSessionTimer } from \"../../helpers/SessionTimer\";\r\n\r\nexport function logIn(response) {\r\n const {\r\n accessToken,\r\n tokenExpirationDate,\r\n username,\r\n isAdUser,\r\n isTempPassword\r\n } = response.data;\r\n if (accessToken && tokenExpirationDate && username) {\r\n sessionStorage.setItem(\"accessToken\", accessToken);\r\n sessionStorage.setItem(\"expires\", tokenExpirationDate);\r\n sessionStorage.setItem(\"userName\", username);\r\n sessionStorage.setItem(\"adUser\", isAdUser);\r\n sessionStorage.setItem(\"tempPass\", isTempPassword);\r\n } else {\r\n throw new Error(`Error Code ${response.status}`);\r\n }\r\n}\r\n\r\nexport function logOut() {\r\n if (sessionStorage.referrer === \"companyWebsite\") {\r\n let protocol =\r\n sessionStorage.getItem(\"referrerUrl\") === \"localhost:63159\"\r\n ? \"http://\"\r\n : \"https://\";\r\n window.location.assign(\r\n `${protocol}${sessionStorage.getItem(\"referrerUrl\")}/HomeTab.aspx`\r\n );\r\n } else {\r\n sessionStorage.clear();\r\n window.location.assign(\"/\");\r\n }\r\n}\r\n\r\nexport function userIsAuthenticated() {\r\n\r\n const urlSearchParams = new URLSearchParams(window.location.search);\r\n const params = Object.fromEntries(urlSearchParams.entries());\r\n let result= {}; //The logIn function is going to look for a data object\r\n if(params.accessToken && params.expires && params.tokenExpirationDate && params.isTempPassword && params.isAdUser && params.username) {\r\n result.data = params;\r\n logIn(result);\r\n }\r\n\r\n if (\r\n sessionStorage.getItem(\"referrer\") === \"companyWebsite\" &&\r\n sessionStorage.getItem(\"currentUser\")\r\n ) {\r\n const currentUser = JSON.parse(sessionStorage.getItem(\"currentUser\"));\r\n sessionStorage.setItem(\"accessToken\", currentUser.accessToken);\r\n sessionStorage.setItem(\"expires\", currentUser.tokenExpirationDate);\r\n sessionStorage.setItem(\"referrerUrl\", currentUser.referrer);\r\n sessionStorage.setItem(\"userName\", currentUser.username);\r\n sessionStorage.setItem(\"adUser\", currentUser.isAdUser);\r\n sessionStorage.setItem(\"tempPass\", currentUser.isTempPassword);\r\n startSessionTimer(logOut, 20);\r\n\r\n return true;\r\n }\r\n if (\r\n sessionStorage.getItem(\"accessToken\") &&\r\n sessionStorage.getItem(\"expires\")\r\n ) {\r\n startSessionTimer(logOut, 20);\r\n return true;\r\n }\r\n \r\n return false;\r\n}\r\n\r\nexport function passwordIsTemporary() {\r\n if (sessionStorage.getItem(\"tempPass\") === \"true\") {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function referrerCompanyWebsite() {\r\n if (sessionStorage.getItem(\"referrer\") === \"companyWebsite\") {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n\r\n\r\nexport function createResponseInterceptor() {\r\n const interceptor = axios.interceptors.response.use(\r\n // If the request succeeds, return the original response\r\n response => {\r\n return response;\r\n },\r\n // If there is an error, use the Interceptor to handle the error.\r\n error => {\r\n const status = error.response ? error.response.status : null;\r\n // Reject the Promise if the error is not a 401 error.\r\n if (status !== 401) {\r\n return Promise.reject(error);\r\n // When the response code is a 401, try to refresh the Bearer token.\r\n } else {\r\n // Eject the interceptor so it doesn't loop in case token refresh causes the 401 response\r\n axios.interceptors.response.eject(interceptor);\r\n // Post the refresh token to the API in order to receive a new Bearer token.\r\n const api = `${getApiEnvironment()}.${getApiUrl()}/auth/token`;\r\n return axios({\r\n method: \"POST\",\r\n url: api,\r\n withCredentials: true,\r\n crossdomain: true,\r\n data: {\r\n refreshToken: sessionStorage.getItem(\"refreshToken\"),\r\n expiredAccessToken: sessionStorage.getItem(\"accessToken\"),\r\n AppName: process.env.REACT_APP_CLIENT_ID,\r\n AppSecret: process.env.REACT_APP_CLIENT_SECRET\r\n }\r\n })\r\n .then(response => {\r\n // Save the new tokens and resolve the original Promise as true\r\n const { accessToken, expires, refreshToken } = response.data;\r\n sessionStorage.setItem(\"accessToken\", accessToken);\r\n sessionStorage.setItem(\"refreshToken\", refreshToken);\r\n sessionStorage.setItem(\"expires\", expires);\r\n return Promise.resolve(true);\r\n })\r\n .catch(error => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n }\r\n );\r\n}\r\n","import React, { useState } from \"react\";\r\n// Material-UI imports\r\nimport {\r\n Typography,\r\n Box,\r\n TextField,\r\n Button,\r\n FormControlLabel,\r\n Checkbox,\r\n Paper,\r\n Dialog,\r\n IconButton\r\n} from \"@material-ui/core/\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// Custom imports\r\nimport {\r\n hasSpecialCharacters,\r\n hasUpperCaseLetter,\r\n hasMinCharacters,\r\n characterCountEqualsTo\r\n} from \"../../services/Validation\";\r\nimport fetchApi from \"../../services/FetchApi\";\r\nimport getApiUrl from \"../../helpers/GetApiUrl\";\r\nimport getApiEnvironment from \"../../helpers/GetApiEnvironment\";\r\nimport { logOut } from \"../../services/Authentication\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nexport default function ChangePasswordForm(props) {\r\n const classes = useStyles();\r\n const [values, setValues] = useState({\r\n currentPassword: \"\",\r\n newPassword: \"\",\r\n verifyNewPassword: \"\",\r\n checked: false\r\n });\r\n const [hasErrors, setHasErrors] = useState({\r\n currentPassword: false,\r\n newPassword: false,\r\n verifyNewPassword: false\r\n });\r\n const [helperText, setHelperText] = useState({\r\n currentPassword: \"\",\r\n newPassword: \"\",\r\n verifyNewPassword: \"\"\r\n });\r\n\r\n const [uppercase, setUpperCase] = useState(\"\");\r\n const [specialCharacter, setSpecialCharacter] = useState(\"\");\r\n const [minCharacters, setMinCharacters] = useState(\"\");\r\n\r\n const [showPassword, setShowPassword] = useState(\"password\");\r\n const [confirmation, setConfirmation] = useState({\r\n text: \"\",\r\n classname: \"\",\r\n ariaStatus: \"status\"\r\n });\r\n\r\n\r\n const userName = sessionStorage.getItem(\"userName\");\r\n\r\n const onSubmit = event => {\r\n event.preventDefault();\r\n const api = `${getApiEnvironment()}.${getApiUrl()}/auth/changepassword`;\r\n const data = {\r\n username: userName,\r\n oldPassword: values.currentPassword,\r\n newPassword: values.newPassword,\r\n appName: process.env.REACT_APP_APPNAME,\r\n appSecret: process.env.REACT_APP_APPSECRET\r\n };\r\n \r\n fetchApi(\"POST\", api, data)\r\n .then(response => {\r\n if (response.status === 200) {\r\n if (response.data.HasErrors === true) {\r\n setConfirmation({\r\n text: `${response.data.Errors[0].message}.`,\r\n classname: \"error\",\r\n ariaStatus: \"alert\"\r\n });\r\n } else {\r\n setConfirmation({\r\n text: \"Your password was updated successfully.\",\r\n classname: \"success\",\r\n ariaStatus: \"status\"\r\n });\r\n setTimeout(function () {\r\n logOut();\r\n }, 3000);\r\n }\r\n } else {\r\n setConfirmation({\r\n text: `Something went wrong. Please contact us for support.`,\r\n classname: \"error\",\r\n ariaStatus: \"alert\"\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n setHasErrors({\r\n currentPassword: true,\r\n newPassword: true,\r\n verifyNewPassword: true\r\n });\r\n setValues({\r\n currentPassword: \"\",\r\n newPassword: \"\",\r\n verifyNewPassword: \"\",\r\n checked: false\r\n });\r\n if (error.response) {\r\n setConfirmation({\r\n text: error.response.data.errors[0].message,\r\n classname: \"error\",\r\n ariaStatus: \"alert\"\r\n });\r\n } else {\r\n setConfirmation({\r\n text: `Something went wrong. Please contact us for support.`,\r\n classname: \"error\",\r\n ariaStatus: \"alert\"\r\n });\r\n }\r\n });\r\n };\r\n\r\n const handleCheckedChange = name => event => {\r\n const checked = event.target.checked;\r\n setValues({ ...values, [name]: checked });\r\n checked === true ? setShowPassword(\"text\") : setShowPassword(\"password\");\r\n };\r\n\r\n const handleInputChange = prop => event => {\r\n const value = event.target.value;\r\n setValues({ ...values, [prop]: value });\r\n\r\n // If the condition is met, highlight the password requirement in green\r\n if (prop === \"newPassword\") {\r\n if (hasMinCharacters(value, 8)) {\r\n setMinCharacters(\"successfulValidation\");\r\n }\r\n if (hasSpecialCharacters(value)) {\r\n setSpecialCharacter(\"successfulValidation\");\r\n }\r\n if (hasUpperCaseLetter(value)) {\r\n setUpperCase(\"successfulValidation\");\r\n }\r\n }\r\n\r\n // Validation of verifyNewPassword field\r\n if (prop === \"verifyNewPassword\") {\r\n if (value !== values.newPassword) {\r\n setHelperText({\r\n ...helperText,\r\n [prop]: \"New passwords must match.\"\r\n });\r\n setHasErrors({ ...hasErrors, [prop]: true });\r\n } else if (characterCountEqualsTo(value, 0)) {\r\n setHelperText({\r\n ...helperText,\r\n [prop]: \"Password is required.\"\r\n });\r\n setHasErrors({ ...hasErrors, [prop]: true });\r\n } else {\r\n setHelperText({\r\n ...helperText,\r\n [prop]: \"\"\r\n });\r\n setHasErrors({ ...hasErrors, [prop]: false });\r\n }\r\n }\r\n };\r\n\r\n // Validation\r\n const onBlur = prop => event => {\r\n const value = event.target.value;\r\n if (prop === \"newPassword\") {\r\n if (characterCountEqualsTo(value, 0)) {\r\n if (values.newPassword !== values.verifyNewPassword) {\r\n setHelperText({\r\n ...helperText,\r\n newPassword: \"New password is required.\",\r\n verifyNewPassword: \"New passwords must match.\"\r\n });\r\n setHasErrors({ ...hasErrors, [prop]: true, verifyNewPassword: true });\r\n } else {\r\n setHelperText({\r\n ...helperText,\r\n newPassword: \"New password is required.\",\r\n verifyNewPassword: \"\"\r\n });\r\n setHasErrors({\r\n ...hasErrors,\r\n [prop]: true,\r\n verifyNewPassword: false\r\n });\r\n }\r\n } else if (\r\n !hasMinCharacters(value, 8) ||\r\n !hasSpecialCharacters(value) ||\r\n !hasUpperCaseLetter(value)\r\n ) {\r\n if (values.newPassword !== values.verifyNewPassword) {\r\n setHelperText({\r\n ...helperText,\r\n newPassword: \"Your password does not meet the requirements.\",\r\n verifyNewPassword: \"New passwords must match.\"\r\n });\r\n setHasErrors({ ...hasErrors, [prop]: true, verifyNewPassword: true });\r\n } else {\r\n setHelperText({\r\n ...helperText,\r\n newPassword: \"Your password does not meet the requirements.\",\r\n verifyNewPassword: \"\"\r\n });\r\n setHasErrors({\r\n ...hasErrors,\r\n [prop]: true,\r\n verifyNewPassword: false\r\n });\r\n }\r\n } else {\r\n if (values.newPassword !== values.verifyNewPassword) {\r\n setHelperText({\r\n ...helperText,\r\n newPassword: \"\",\r\n verifyNewPassword: \"New passwords must match.\"\r\n });\r\n setHasErrors({\r\n ...hasErrors,\r\n [prop]: false,\r\n verifyNewPassword: true\r\n });\r\n } else {\r\n setHelperText({\r\n ...helperText,\r\n newPassword: \"\",\r\n verifyNewPassword: \"\"\r\n });\r\n setHasErrors({\r\n ...hasErrors,\r\n [prop]: false,\r\n verifyNewPassword: false\r\n });\r\n }\r\n }\r\n\r\n // If the condition is not met, highlight the password requirement in red\r\n if (!hasMinCharacters(value, 8)) {\r\n setMinCharacters(\"failedValidation\");\r\n }\r\n if (!hasSpecialCharacters(value)) {\r\n setSpecialCharacter(\"failedValidation\");\r\n }\r\n if (!hasUpperCaseLetter(value)) {\r\n setUpperCase(\"failedValidation\");\r\n }\r\n }\r\n\r\n if (prop === \"currentPassword\") {\r\n if (characterCountEqualsTo(value, 0)) {\r\n setHelperText({\r\n ...helperText,\r\n [prop]: \"Current password is required.\"\r\n });\r\n setHasErrors({ ...hasErrors, [prop]: true });\r\n } else {\r\n setHelperText({\r\n ...helperText,\r\n [prop]: \"\"\r\n });\r\n setHasErrors({ ...hasErrors, [prop]: false });\r\n }\r\n }\r\n\r\n if (prop === \"verifyNewPassword\") {\r\n if (characterCountEqualsTo(value, 0)) {\r\n setHelperText({\r\n ...helperText,\r\n [prop]: \"Password is required.\"\r\n });\r\n setHasErrors({ ...hasErrors, [prop]: true });\r\n }\r\n }\r\n };\r\n \r\n const isButtonEnabled = () => {\r\n if (\r\n values.currentPassword.length > 0 &&\r\n values.newPassword.length > 0 &&\r\n values.verifyNewPassword.length > 0\r\n ) {\r\n if (Object.values(hasErrors).every(item => item === false)) {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n return (\r\n props.closeFunction()}\r\n >\r\n props.CloseFunction()}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n >\r\n {\" \"}\r\n {\" \"}\r\n \r\n \r\n \r\n \r\n Change Password\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
  • \r\n {\" \"}\r\n include one uppercase letter\r\n
  • \r\n
  • \r\n {\" \"}\r\n include one special character\r\n
  • \r\n
  • \r\n be at least 8 characters in length\r\n
  • \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Update password\r\n \r\n \r\n
\r\n \r\n \r\n {confirmation.text}\r\n {confirmation.phone &&
{confirmation.phone}
}\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n formContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n width: \"480px\",\r\n margin: \"16px auto\"\r\n },\r\n moduleSubTitle: {\r\n paddingTop: \"16px\"\r\n },\r\n passwordHelper: {\r\n color: \"rgba(0, 0, 0, 0.54)\",\r\n fontSize: \"0.75rem\",\r\n lineHeight: \"2em\",\r\n marginTop: 0,\r\n paddingLeft: \"1em\",\r\n listStyle: \"none\"\r\n },\r\n closeIcon: {\r\n cursor: \"pointer\",\r\n position: \"absolute\",\r\n top: theme.spacing(2.5),\r\n right: theme.spacing(2),\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n },\r\n \"&:focus\": {\r\n color: theme.palette.primary.main\r\n },\r\n margin: theme.spacing(-1.5, 0)\r\n },\r\n}));\r\n"],"sourceRoot":""}