@verii/components-organizations-registrar 1.0.0-pre.1756100765 → 1.0.0-pre.1756224043
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/chunks/{ConsentProvider.DIG3atk-.js → ConsentProvider.6M2ucqXH.js} +3 -3
- package/dist/chunks/ConsentProvider.6M2ucqXH.js.map +1 -0
- package/dist/chunks/{ConsentProvider.DTG51XMy.js → ConsentProvider.Bbc0preP.js} +2 -2
- package/dist/chunks/ConsentProvider.Bbc0preP.js.map +1 -0
- package/dist/chunks/{CreateOrganization.utils.C5C_r3Zp.js → CreateOrganizationUtils.C5C_r3Zp.js} +1 -1
- package/dist/chunks/CreateOrganizationUtils.C5C_r3Zp.js.map +1 -0
- package/dist/chunks/{CreateOrganization.utils.8cSBFSYF.js → CreateOrganizationUtils.Xq78HHkP.js} +7 -7
- package/dist/chunks/CreateOrganizationUtils.Xq78HHkP.js.map +1 -0
- package/dist/chunks/{CustomAppBar.DuFQqld7.js → CustomAppBar.BOlNFosS.js} +5 -7
- package/dist/chunks/CustomAppBar.BOlNFosS.js.map +1 -0
- package/dist/chunks/{CustomAppBar.BfQvuTHz.js → CustomAppBar.DaXLAwPh.js} +4 -6
- package/dist/chunks/CustomAppBar.DaXLAwPh.js.map +1 -0
- package/dist/chunks/{LinkedInRegistrationInput.C-qzrR-S.js → LinkedInRegistrationInput.CmYmSJoq.js} +8 -5
- package/dist/chunks/LinkedInRegistrationInput.CmYmSJoq.js.map +1 -0
- package/dist/chunks/{LinkedInRegistrationInput.DKRMHYRh.js → LinkedInRegistrationInput.gnYgP1Hf.js} +11 -8
- package/dist/chunks/LinkedInRegistrationInput.gnYgP1Hf.js.map +1 -0
- package/dist/chunks/{Loading.UJl_3_cf.js → Loading.Bcm3xNJU.js} +2 -3
- package/dist/chunks/Loading.Bcm3xNJU.js.map +1 -0
- package/dist/chunks/{Loading.DYBk0Ktb.js → Loading.cGHE59CV.js} +2 -3
- package/dist/chunks/Loading.cGHE59CV.js.map +1 -0
- package/dist/chunks/{MainLayout.CWFkijrE.js → MainLayout.BzfaZs8j.js} +2 -2
- package/dist/chunks/{MainLayout.CWFkijrE.js.map → MainLayout.BzfaZs8j.js.map} +1 -1
- package/dist/chunks/{MainLayout.6Hq5XQ-L.js → MainLayout.V-ymVxxR.js} +3 -3
- package/dist/chunks/{MainLayout.6Hq5XQ-L.js.map → MainLayout.V-ymVxxR.js.map} +1 -1
- package/dist/chunks/{OrganizationAvatar.BEwRZ9tC.js → OrganizationAvatar.BXW4diDT.js} +2 -2
- package/dist/chunks/{OrganizationAvatar.BEwRZ9tC.js.map → OrganizationAvatar.BXW4diDT.js.map} +1 -1
- package/dist/chunks/{OrganizationAvatar.lWcXtbM6.js → OrganizationAvatar.Dgg5VSPI.js} +2 -2
- package/dist/chunks/{OrganizationAvatar.lWcXtbM6.js.map → OrganizationAvatar.Dgg5VSPI.js.map} +1 -1
- package/dist/chunks/{ServicesEdit.BUAbbXgV.js → ServicesEdit.BnnqC203.js} +3 -3
- package/dist/chunks/ServicesEdit.BnnqC203.js.map +1 -0
- package/dist/chunks/{ServicesEdit.CrtEcP_7.js → ServicesEdit.DDgjS5kU.js} +2 -2
- package/dist/chunks/ServicesEdit.DDgjS5kU.js.map +1 -0
- package/dist/chunks/{SetInvitationService.BUZqAilX.js → SetInvitationService.PxAGwk-I.js} +11 -11
- package/dist/chunks/SetInvitationService.PxAGwk-I.js.map +1 -0
- package/dist/chunks/{SetInvitationService.B0ezxTzf.js → SetInvitationService.ZT5lP003.js} +5 -5
- package/dist/chunks/SetInvitationService.ZT5lP003.js.map +1 -0
- package/dist/chunks/TermsAndConditionsPdf.Ba8-5Hcm.js.map +1 -1
- package/dist/chunks/TermsAndConditionsPdf.ewC7N9Vy.js.map +1 -1
- package/dist/chunks/{CreateOrganization.C2Kf44eJ.js → ValidateTextInput.D5kgjulG.js} +328 -14
- package/dist/chunks/ValidateTextInput.D5kgjulG.js.map +1 -0
- package/dist/chunks/{CreateOrganization.A11-a_8R.js → ValidateTextInput.DEBaVB1L.js} +356 -42
- package/dist/chunks/ValidateTextInput.DEBaVB1L.js.map +1 -0
- package/dist/chunks/{index.DZOVpocw.js → index.CYCWawJT.js} +6 -6
- package/dist/chunks/index.CYCWawJT.js.map +1 -0
- package/dist/chunks/{index.DmM8ShwP.js → index.Cmn4FlUL.js} +5 -5
- package/dist/chunks/index.Cmn4FlUL.js.map +1 -0
- package/dist/chunks/{index.DlFajFTS.js → index.DIizFYFZ.js} +3 -3
- package/dist/chunks/index.DIizFYFZ.js.map +1 -0
- package/dist/chunks/{index.ZAmuSdK1.js → index.DIur8MCO.js} +4 -4
- package/dist/chunks/index.DIur8MCO.js.map +1 -0
- package/dist/chunks/{index.Ch4ynES2.js → index.DMWKdmxs.js} +4 -5
- package/dist/chunks/index.DMWKdmxs.js.map +1 -0
- package/dist/chunks/{index.Dir1xwV4.js → index.DND10PiY.js} +5 -6
- package/dist/chunks/index.DND10PiY.js.map +1 -0
- package/dist/chunks/{index.Cpod3Il3.js → index.YjnxLFjk.js} +3 -3
- package/dist/chunks/index.YjnxLFjk.js.map +1 -0
- package/dist/chunks/index.iexmV4Mr.js.map +1 -1
- package/dist/chunks/remoteDataProvider.BCiFSYnk.js.map +1 -1
- package/dist/chunks/remoteDataProvider.gtTXA1-g.js.map +1 -1
- package/dist/chunks/useIsIssuingInspection.C76mY_wb.js.map +1 -1
- package/dist/chunks/useIsIssuingInspection.DavhBs5B.js.map +1 -1
- package/dist/components/AppBar.cjs +1 -1
- package/dist/components/AppBar.js +1 -1
- package/dist/components/common.cjs +3 -3
- package/dist/components/common.js +3 -3
- package/dist/components/invitations.cjs +1 -1
- package/dist/components/invitations.js +1 -1
- package/dist/components/organizations.cjs +12 -301
- package/dist/components/organizations.cjs.map +1 -1
- package/dist/components/organizations.js +10 -299
- package/dist/components/organizations.js.map +1 -1
- package/dist/components/services.cjs +1 -1
- package/dist/components/services.js +1 -1
- package/dist/components.cjs +2 -2
- package/dist/components.js +2 -2
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/layouts.cjs +1 -1
- package/dist/layouts.js +1 -1
- package/dist/pages/individuals.cjs +4 -4
- package/dist/pages/individuals.cjs.map +1 -1
- package/dist/pages/individuals.js +5 -5
- package/dist/pages/individuals.js.map +1 -1
- package/dist/pages/invitations.cjs +11 -12
- package/dist/pages/invitations.cjs.map +1 -1
- package/dist/pages/invitations.js +9 -10
- package/dist/pages/invitations.js.map +1 -1
- package/dist/pages/organizations.cjs +74 -75
- package/dist/pages/organizations.cjs.map +1 -1
- package/dist/pages/organizations.js +10 -11
- package/dist/pages/organizations.js.map +1 -1
- package/dist/pages/services.cjs +6 -6
- package/dist/pages/services.cjs.map +1 -1
- package/dist/pages/services.js +5 -5
- package/dist/pages/services.js.map +1 -1
- package/dist/pages.cjs +1 -1
- package/dist/pages.cjs.map +1 -1
- package/dist/pages.js +1 -1
- package/dist/pages.js.map +1 -1
- package/package.json +12 -9
- package/setup-tests.js +31 -0
- package/dist/chunks/ConsentProvider.DIG3atk-.js.map +0 -1
- package/dist/chunks/ConsentProvider.DTG51XMy.js.map +0 -1
- package/dist/chunks/CreateOrganization.A11-a_8R.js.map +0 -1
- package/dist/chunks/CreateOrganization.C2Kf44eJ.js.map +0 -1
- package/dist/chunks/CreateOrganization.utils.8cSBFSYF.js.map +0 -1
- package/dist/chunks/CreateOrganization.utils.C5C_r3Zp.js.map +0 -1
- package/dist/chunks/CustomAppBar.BfQvuTHz.js.map +0 -1
- package/dist/chunks/CustomAppBar.DuFQqld7.js.map +0 -1
- package/dist/chunks/LinkedInRegistrationInput.C-qzrR-S.js.map +0 -1
- package/dist/chunks/LinkedInRegistrationInput.DKRMHYRh.js.map +0 -1
- package/dist/chunks/Loading.DYBk0Ktb.js.map +0 -1
- package/dist/chunks/Loading.UJl_3_cf.js.map +0 -1
- package/dist/chunks/OrganisationSubmitButton.D32qynh9.js +0 -40
- package/dist/chunks/OrganisationSubmitButton.D32qynh9.js.map +0 -1
- package/dist/chunks/OrganisationSubmitButton.D3w1nG1X.js +0 -41
- package/dist/chunks/OrganisationSubmitButton.D3w1nG1X.js.map +0 -1
- package/dist/chunks/ServicesEdit.BUAbbXgV.js.map +0 -1
- package/dist/chunks/ServicesEdit.CrtEcP_7.js.map +0 -1
- package/dist/chunks/SetInvitationService.B0ezxTzf.js.map +0 -1
- package/dist/chunks/SetInvitationService.BUZqAilX.js.map +0 -1
- package/dist/chunks/index.Ch4ynES2.js.map +0 -1
- package/dist/chunks/index.Cpod3Il3.js.map +0 -1
- package/dist/chunks/index.DZOVpocw.js.map +0 -1
- package/dist/chunks/index.Dir1xwV4.js.map +0 -1
- package/dist/chunks/index.DlFajFTS.js.map +0 -1
- package/dist/chunks/index.DmM8ShwP.js.map +0 -1
- package/dist/chunks/index.ZAmuSdK1.js.map +0 -1
- package/jest.config.cjs +0 -29
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect, useState, useMemo, useCallback } from "react";
|
|
3
3
|
import { useRedirect } from "react-admin";
|
|
4
4
|
import { u as useSelectedOrganization } from "./selectedOrganizationState.DBpKeOn0.js";
|
|
5
|
-
import { L as Loading } from "./Loading.
|
|
5
|
+
import { L as Loading } from "./Loading.Bcm3xNJU.js";
|
|
6
6
|
import List from "@mui/material/List";
|
|
7
7
|
import ListItemButton from "@mui/material/ListItemButton";
|
|
8
8
|
import ListItemText from "@mui/material/ListItemText";
|
|
@@ -10,7 +10,7 @@ import { t as theme, F as FOOTER_HEIGHT } from "./theme.CYcVcsx-.js";
|
|
|
10
10
|
import PropTypes from "prop-types";
|
|
11
11
|
import { pdf } from "@react-pdf/renderer";
|
|
12
12
|
import { d as dataResources } from "./remoteDataProvider.gtTXA1-g.js";
|
|
13
|
-
import { p as parseJwt } from "./index.
|
|
13
|
+
import { p as parseJwt } from "./index.DIur8MCO.js";
|
|
14
14
|
import { T as TermsAndConditionsPdf, a as TERMS_AND_CONDITIONS_VERSION } from "./TermsAndConditionsPdf.ewC7N9Vy.js";
|
|
15
15
|
import { Stack, Typography, Box, Button } from "@mui/material";
|
|
16
16
|
import { Link } from "react-router";
|
|
@@ -281,4 +281,4 @@ export {
|
|
|
281
281
|
Footer as F,
|
|
282
282
|
TermsOfUsePopup as T
|
|
283
283
|
};
|
|
284
|
-
//# sourceMappingURL=ConsentProvider.
|
|
284
|
+
//# sourceMappingURL=ConsentProvider.6M2ucqXH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsentProvider.6M2ucqXH.js","sources":["../../src/components/Dashboard.jsx","../../src/components/Footer.jsx","../../src/components/TermsOfUsePopup.jsx","../../src/components/ConsentProvider.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect } from 'react';\nimport { useRedirect } from 'react-admin';\nimport useSelectedOrganization from '../state/selectedOrganizationState.js';\nimport Loading from './Loading.jsx';\n\nconst Dashboard = () => {\n const redirect = useRedirect();\n const [did] = useSelectedOrganization();\n\n useEffect(() => {\n if (!did) {\n return;\n }\n redirect('show', 'organizations', did);\n }, [did, redirect]);\n\n return <Loading sx={{ pt: '60px' }} />;\n};\n\nexport default Dashboard;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport List from '@mui/material/List';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\n\nimport theme, { FOOTER_HEIGHT } from '../theme/theme.js';\n\nconst Footer = () => {\n return (\n <footer style={styles.footer}>\n <List sx={styles.list} component=\"nav\" aria-label=\"footer navigation\">\n <ListItemButton disabled>\n <ListItemText slotProps={{ primary: { sx: styles.listText } }} primary=\"CONTACT US\" />\n </ListItemButton>\n <ListItemButton\n onClick={() => window.open(`${window.location.origin}/terms-and-conditions`, '_blank')}\n >\n <ListItemText slotProps={{ primary: { sx: styles.listText } }} primary=\"TERMS OF USE\" />\n </ListItemButton>\n <ListItemButton\n onClick={() => window.open(`${window.location.origin}/privacy-policy`, '_blank')}\n >\n <ListItemText slotProps={{ primary: { sx: styles.listText } }} primary=\"PRIVACY POLICY\" />\n </ListItemButton>\n </List>\n <div style={styles.text}>\n All rights reserved {new Date().getFullYear()}\n <img\n src=\"/assets/images/logo.svg\"\n alt=\"Velocity\"\n width={98}\n height={20}\n style={styles.icon}\n />\n </div>\n </footer>\n );\n};\n\nexport default Footer;\n\nconst styles = {\n footer: {\n position: 'absolute',\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 100,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: FOOTER_HEIGHT,\n paddingRight: 10,\n backgroundColor: theme.palette.background.default,\n borderTop: `1px solid ${theme.palette.divider.main}`,\n },\n list: {\n display: 'flex',\n color: theme.palette.secondary.light,\n },\n listText: {\n fontWeight: 600,\n fontSize: '12px',\n lineHeight: '16px',\n letterSpacing: '0.5px',\n fontFamily: theme.typography.fontFamily,\n },\n text: {\n fontWeight: 300,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0.1px',\n color: theme.palette.secondary.light,\n fontFamily: theme.typography.fontFamily,\n },\n icon: {\n verticalAlign: 'middle',\n color: theme.palette.secondary.light,\n paddingLeft: 30,\n filter:\n 'invert(68%) sepia(13%) saturate(102%) hue-rotate(185deg) brightness(89%) contrast(87%)', // filter for #989A9F\n },\n};\n","/*\n * Copyright 2025 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport PropTypes from 'prop-types';\nimport { Button, Typography, Stack, Box } from '@mui/material';\nimport { Link } from 'react-router';\n\nimport { Download } from '@mui/icons-material';\nimport Popup from './common/Popup.jsx';\nimport theme from '../theme/theme.js';\n\nconst TermsOfUsePopup = ({ onClose, isOpen, onProceed, title, onDownload }) => {\n return (\n <Popup title={title} onClose={onClose} isOpen={isOpen} titleStyles={sx.title}>\n <Stack justifyContent=\"center\" pt=\"8px\">\n <Typography alignSelf=\"center\">\n By clicking PROCEED you agree to the{' '}\n <Link target=\"_blank\" to=\"/terms-and-conditions\" role=\"link\" style={sx.link}>\n terms of use\n </Link>\n </Typography>\n <Box sx={sx.box}>\n <Button onClick={onProceed} variant=\"outlined\" sx={[sx.button, sx.proceed]} autoFocus>\n Proceed\n </Button>\n <Button onClick={onDownload} variant=\"outlined\" sx={sx.button} endIcon={<Download />}>\n Download PDF\n </Button>\n </Box>\n </Stack>\n </Popup>\n );\n};\n\nconst sx = {\n button: {\n width: 'fit-content',\n alignSelf: 'center',\n px: 4,\n py: 1,\n mt: '40px',\n mr: 2,\n '&:last-child': {\n mr: 0,\n },\n color: theme.palette.primary.main,\n borderColor: theme.palette.primary.main,\n '&:hover': {\n borderColor: theme.palette.primary.main,\n },\n },\n box: {\n display: 'flex',\n justifyContent: 'center',\n },\n link: { color: theme.palette.primary.main },\n title: { textAlign: 'center' },\n proceed: {\n color: theme.palette.text.primary,\n borderColor: theme.palette.secondary.light,\n '&:hover': {\n borderColor: theme.palette.secondary.light,\n },\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nTermsOfUsePopup.propTypes = {\n onClose: PropTypes.func,\n onProceed: PropTypes.func,\n isOpen: PropTypes.bool,\n title: PropTypes.string,\n onDownload: PropTypes.func,\n};\n\nexport default TermsOfUsePopup;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { pdf } from '@react-pdf/renderer';\n\nimport { dataResources } from '../utils/remoteDataProvider.js';\nimport { parseJwt } from '../utils/index.jsx';\nimport { TERMS_AND_CONDITIONS_VERSION } from '../pages/TermsAndConditions.jsx';\nimport TermsAndConditionsPdf from '../pages/TermsAndConditionsPdf.jsx';\nimport TermsOfUsePopup from './TermsOfUsePopup.jsx';\nimport Loading from './Loading.jsx';\nimport { useAuth } from '../utils/auth/AuthContext.js';\nimport { useConfig } from '../utils/ConfigContext.js';\n\nconst logoutErrors = ['Unauthorized', 'missing_refresh_token', 'invalid_grant'];\n\nconst ConsentProvider = ({ children }) => {\n const [agreedVersion, setAgreedVersion] = useState(null);\n const [isShouldAgreeWithNewVersion, setIsShouldAgreeWithNewVersion] = useState(false);\n const [isNewUser, setIsNewUser] = useState(false);\n const [isNewUserHasScope, setIsNewUserHasScope] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const { logout, getAccessToken } = useAuth();\n const config = useConfig();\n\n useEffect(() => {\n const checkIfUserScope = (token) => {\n const tokenDecoded = parseJwt(token);\n return tokenDecoded.scope.includes('read:organizations');\n };\n const handleNewUser = (token) => {\n const newUserScope = checkIfUserScope(token);\n setIsNewUser(true);\n setAgreedVersion('');\n setIsShouldAgreeWithNewVersion(newUserScope);\n setIsNewUserHasScope(newUserScope);\n setIsLoading(false);\n };\n const handleExistingUser = (data) => {\n const sortedConsents = [...data].sort(\n (consent1, consent2) => new Date(consent2.version) - new Date(consent1.version),\n );\n const lastAgreedVersion = sortedConsents[0].version;\n setAgreedVersion(lastAgreedVersion);\n\n if (lastAgreedVersion < TERMS_AND_CONDITIONS_VERSION) {\n setIsShouldAgreeWithNewVersion(true);\n }\n };\n\n const handleConsentError = (e) => {\n if (e.error && logoutErrors.includes(e.error)) {\n logout({ logoutParams: { returnTo: window.location.origin } });\n }\n };\n\n (async () => {\n try {\n const token = await getAccessToken();\n setIsLoading(true);\n const response = await fetch(`${config.registrarApi}/${dataResources.CONSENTS}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`,\n },\n });\n const data = await response.json();\n if (data.error) {\n handleConsentError(data);\n } else if (!data || data.length === 0) {\n handleNewUser(token);\n } else {\n handleExistingUser(data);\n }\n\n setIsLoading(false);\n } catch (e) {\n handleConsentError(e);\n setIsLoading(false);\n setIsShouldAgreeWithNewVersion(false); // BE response 404, when `!consents.length`\n }\n })();\n }, [getAccessToken, logout, config.registrarApi, config]);\n\n const onAgreeWithNewVersion = async () => {\n try {\n const token = await getAccessToken();\n await fetch(`${config.registrarApi}/${dataResources.CONSENTS}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n version: TERMS_AND_CONDITIONS_VERSION,\n }),\n });\n setAgreedVersion(TERMS_AND_CONDITIONS_VERSION);\n setIsShouldAgreeWithNewVersion(false);\n } catch (e) {\n console.error('set consent', e);\n }\n };\n\n const skipTerms = useMemo(() => {\n const newUserWithScope = isNewUser ? isNewUserHasScope : true;\n return (\n !isLoading && isShouldAgreeWithNewVersion !== true && (agreedVersion || !newUserWithScope)\n );\n }, [isNewUser, isNewUserHasScope, isLoading, isShouldAgreeWithNewVersion, agreedVersion]);\n\n const downloadPdf = useCallback(async () => {\n const blob = await pdf(<TermsAndConditionsPdf />).toBlob();\n const link = document.createElement('a');\n link.setAttribute('href', URL.createObjectURL(blob));\n link.setAttribute('download', 'Terms and Conditions');\n document.body.append(link);\n\n link.click();\n link.remove();\n }, []);\n return (\n <>\n {skipTerms && children}\n {isLoading && <Loading sx={{ pt: '60px' }} />}\n <TermsOfUsePopup\n isOpen={isShouldAgreeWithNewVersion}\n onClose={() => {\n logout();\n }}\n onProceed={onAgreeWithNewVersion}\n title={isNewUser ? 'Terms of use' : 'The terms of use were updated'}\n onDownload={downloadPdf}\n />\n </>\n );\n};\n\nexport default ConsentProvider;\n\n// eslint-disable-next-line better-mutation/no-mutation\nConsentProvider.propTypes = {\n children: PropTypes.node,\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
3
3
|
const React = require("react");
|
|
4
4
|
const reactAdmin = require("react-admin");
|
|
5
5
|
const selectedOrganizationState = require("./selectedOrganizationState.BR4G8K3M.js");
|
|
6
|
-
const Loading = require("./Loading.
|
|
6
|
+
const Loading = require("./Loading.cGHE59CV.js");
|
|
7
7
|
const List = require("@mui/material/List");
|
|
8
8
|
const ListItemButton = require("@mui/material/ListItemButton");
|
|
9
9
|
const ListItemText = require("@mui/material/ListItemText");
|
|
@@ -280,4 +280,4 @@ exports.ConsentProvider = ConsentProvider;
|
|
|
280
280
|
exports.Dashboard = Dashboard;
|
|
281
281
|
exports.Footer = Footer;
|
|
282
282
|
exports.TermsOfUsePopup = TermsOfUsePopup;
|
|
283
|
-
//# sourceMappingURL=ConsentProvider.
|
|
283
|
+
//# sourceMappingURL=ConsentProvider.Bbc0preP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsentProvider.Bbc0preP.js","sources":["../../src/components/Dashboard.jsx","../../src/components/Footer.jsx","../../src/components/TermsOfUsePopup.jsx","../../src/components/ConsentProvider.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect } from 'react';\nimport { useRedirect } from 'react-admin';\nimport useSelectedOrganization from '../state/selectedOrganizationState.js';\nimport Loading from './Loading.jsx';\n\nconst Dashboard = () => {\n const redirect = useRedirect();\n const [did] = useSelectedOrganization();\n\n useEffect(() => {\n if (!did) {\n return;\n }\n redirect('show', 'organizations', did);\n }, [did, redirect]);\n\n return <Loading sx={{ pt: '60px' }} />;\n};\n\nexport default Dashboard;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport List from '@mui/material/List';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\n\nimport theme, { FOOTER_HEIGHT } from '../theme/theme.js';\n\nconst Footer = () => {\n return (\n <footer style={styles.footer}>\n <List sx={styles.list} component=\"nav\" aria-label=\"footer navigation\">\n <ListItemButton disabled>\n <ListItemText slotProps={{ primary: { sx: styles.listText } }} primary=\"CONTACT US\" />\n </ListItemButton>\n <ListItemButton\n onClick={() => window.open(`${window.location.origin}/terms-and-conditions`, '_blank')}\n >\n <ListItemText slotProps={{ primary: { sx: styles.listText } }} primary=\"TERMS OF USE\" />\n </ListItemButton>\n <ListItemButton\n onClick={() => window.open(`${window.location.origin}/privacy-policy`, '_blank')}\n >\n <ListItemText slotProps={{ primary: { sx: styles.listText } }} primary=\"PRIVACY POLICY\" />\n </ListItemButton>\n </List>\n <div style={styles.text}>\n All rights reserved {new Date().getFullYear()}\n <img\n src=\"/assets/images/logo.svg\"\n alt=\"Velocity\"\n width={98}\n height={20}\n style={styles.icon}\n />\n </div>\n </footer>\n );\n};\n\nexport default Footer;\n\nconst styles = {\n footer: {\n position: 'absolute',\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 100,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: FOOTER_HEIGHT,\n paddingRight: 10,\n backgroundColor: theme.palette.background.default,\n borderTop: `1px solid ${theme.palette.divider.main}`,\n },\n list: {\n display: 'flex',\n color: theme.palette.secondary.light,\n },\n listText: {\n fontWeight: 600,\n fontSize: '12px',\n lineHeight: '16px',\n letterSpacing: '0.5px',\n fontFamily: theme.typography.fontFamily,\n },\n text: {\n fontWeight: 300,\n fontSize: '14px',\n lineHeight: '16px',\n letterSpacing: '0.1px',\n color: theme.palette.secondary.light,\n fontFamily: theme.typography.fontFamily,\n },\n icon: {\n verticalAlign: 'middle',\n color: theme.palette.secondary.light,\n paddingLeft: 30,\n filter:\n 'invert(68%) sepia(13%) saturate(102%) hue-rotate(185deg) brightness(89%) contrast(87%)', // filter for #989A9F\n },\n};\n","/*\n * Copyright 2025 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport PropTypes from 'prop-types';\nimport { Button, Typography, Stack, Box } from '@mui/material';\nimport { Link } from 'react-router';\n\nimport { Download } from '@mui/icons-material';\nimport Popup from './common/Popup.jsx';\nimport theme from '../theme/theme.js';\n\nconst TermsOfUsePopup = ({ onClose, isOpen, onProceed, title, onDownload }) => {\n return (\n <Popup title={title} onClose={onClose} isOpen={isOpen} titleStyles={sx.title}>\n <Stack justifyContent=\"center\" pt=\"8px\">\n <Typography alignSelf=\"center\">\n By clicking PROCEED you agree to the{' '}\n <Link target=\"_blank\" to=\"/terms-and-conditions\" role=\"link\" style={sx.link}>\n terms of use\n </Link>\n </Typography>\n <Box sx={sx.box}>\n <Button onClick={onProceed} variant=\"outlined\" sx={[sx.button, sx.proceed]} autoFocus>\n Proceed\n </Button>\n <Button onClick={onDownload} variant=\"outlined\" sx={sx.button} endIcon={<Download />}>\n Download PDF\n </Button>\n </Box>\n </Stack>\n </Popup>\n );\n};\n\nconst sx = {\n button: {\n width: 'fit-content',\n alignSelf: 'center',\n px: 4,\n py: 1,\n mt: '40px',\n mr: 2,\n '&:last-child': {\n mr: 0,\n },\n color: theme.palette.primary.main,\n borderColor: theme.palette.primary.main,\n '&:hover': {\n borderColor: theme.palette.primary.main,\n },\n },\n box: {\n display: 'flex',\n justifyContent: 'center',\n },\n link: { color: theme.palette.primary.main },\n title: { textAlign: 'center' },\n proceed: {\n color: theme.palette.text.primary,\n borderColor: theme.palette.secondary.light,\n '&:hover': {\n borderColor: theme.palette.secondary.light,\n },\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nTermsOfUsePopup.propTypes = {\n onClose: PropTypes.func,\n onProceed: PropTypes.func,\n isOpen: PropTypes.bool,\n title: PropTypes.string,\n onDownload: PropTypes.func,\n};\n\nexport default TermsOfUsePopup;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { pdf } from '@react-pdf/renderer';\n\nimport { dataResources } from '../utils/remoteDataProvider.js';\nimport { parseJwt } from '../utils/index.jsx';\nimport { TERMS_AND_CONDITIONS_VERSION } from '../pages/TermsAndConditions.jsx';\nimport TermsAndConditionsPdf from '../pages/TermsAndConditionsPdf.jsx';\nimport TermsOfUsePopup from './TermsOfUsePopup.jsx';\nimport Loading from './Loading.jsx';\nimport { useAuth } from '../utils/auth/AuthContext.js';\nimport { useConfig } from '../utils/ConfigContext.js';\n\nconst logoutErrors = ['Unauthorized', 'missing_refresh_token', 'invalid_grant'];\n\nconst ConsentProvider = ({ children }) => {\n const [agreedVersion, setAgreedVersion] = useState(null);\n const [isShouldAgreeWithNewVersion, setIsShouldAgreeWithNewVersion] = useState(false);\n const [isNewUser, setIsNewUser] = useState(false);\n const [isNewUserHasScope, setIsNewUserHasScope] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const { logout, getAccessToken } = useAuth();\n const config = useConfig();\n\n useEffect(() => {\n const checkIfUserScope = (token) => {\n const tokenDecoded = parseJwt(token);\n return tokenDecoded.scope.includes('read:organizations');\n };\n const handleNewUser = (token) => {\n const newUserScope = checkIfUserScope(token);\n setIsNewUser(true);\n setAgreedVersion('');\n setIsShouldAgreeWithNewVersion(newUserScope);\n setIsNewUserHasScope(newUserScope);\n setIsLoading(false);\n };\n const handleExistingUser = (data) => {\n const sortedConsents = [...data].sort(\n (consent1, consent2) => new Date(consent2.version) - new Date(consent1.version),\n );\n const lastAgreedVersion = sortedConsents[0].version;\n setAgreedVersion(lastAgreedVersion);\n\n if (lastAgreedVersion < TERMS_AND_CONDITIONS_VERSION) {\n setIsShouldAgreeWithNewVersion(true);\n }\n };\n\n const handleConsentError = (e) => {\n if (e.error && logoutErrors.includes(e.error)) {\n logout({ logoutParams: { returnTo: window.location.origin } });\n }\n };\n\n (async () => {\n try {\n const token = await getAccessToken();\n setIsLoading(true);\n const response = await fetch(`${config.registrarApi}/${dataResources.CONSENTS}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`,\n },\n });\n const data = await response.json();\n if (data.error) {\n handleConsentError(data);\n } else if (!data || data.length === 0) {\n handleNewUser(token);\n } else {\n handleExistingUser(data);\n }\n\n setIsLoading(false);\n } catch (e) {\n handleConsentError(e);\n setIsLoading(false);\n setIsShouldAgreeWithNewVersion(false); // BE response 404, when `!consents.length`\n }\n })();\n }, [getAccessToken, logout, config.registrarApi, config]);\n\n const onAgreeWithNewVersion = async () => {\n try {\n const token = await getAccessToken();\n await fetch(`${config.registrarApi}/${dataResources.CONSENTS}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n version: TERMS_AND_CONDITIONS_VERSION,\n }),\n });\n setAgreedVersion(TERMS_AND_CONDITIONS_VERSION);\n setIsShouldAgreeWithNewVersion(false);\n } catch (e) {\n console.error('set consent', e);\n }\n };\n\n const skipTerms = useMemo(() => {\n const newUserWithScope = isNewUser ? isNewUserHasScope : true;\n return (\n !isLoading && isShouldAgreeWithNewVersion !== true && (agreedVersion || !newUserWithScope)\n );\n }, [isNewUser, isNewUserHasScope, isLoading, isShouldAgreeWithNewVersion, agreedVersion]);\n\n const downloadPdf = useCallback(async () => {\n const blob = await pdf(<TermsAndConditionsPdf />).toBlob();\n const link = document.createElement('a');\n link.setAttribute('href', URL.createObjectURL(blob));\n link.setAttribute('download', 'Terms and Conditions');\n document.body.append(link);\n\n link.click();\n link.remove();\n }, []);\n return (\n <>\n {skipTerms && children}\n {isLoading && <Loading sx={{ pt: '60px' }} />}\n <TermsOfUsePopup\n isOpen={isShouldAgreeWithNewVersion}\n onClose={() => {\n logout();\n }}\n onProceed={onAgreeWithNewVersion}\n title={isNewUser ? 'Terms of use' : 'The terms of use were updated'}\n onDownload={downloadPdf}\n />\n </>\n );\n};\n\nexport default ConsentProvider;\n\n// eslint-disable-next-line better-mutation/no-mutation\nConsentProvider.propTypes = {\n children: PropTypes.node,\n};\n"],"names":["useRedirect","useSelectedOrganization","useEffect","Loading","jsxs","jsx","FOOTER_HEIGHT","theme","Popup","Stack","Typography","Link","Box","Button","Download","useState","useAuth","useConfig","parseJwt","TERMS_AND_CONDITIONS_VERSION","dataResources","useMemo","useCallback","pdf","TermsAndConditionsPdf","Fragment"],"mappings":"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"}
|
package/dist/chunks/{CreateOrganization.utils.C5C_r3Zp.js → CreateOrganizationUtils.C5C_r3Zp.js}
RENAMED
|
@@ -27,4 +27,4 @@ exports.validateName = validateName;
|
|
|
27
27
|
exports.validateServiceEndpoint = validateServiceEndpoint;
|
|
28
28
|
exports.validateWebsite = validateWebsite;
|
|
29
29
|
exports.validateWebsiteStrict = validateWebsiteStrict;
|
|
30
|
-
//# sourceMappingURL=
|
|
30
|
+
//# sourceMappingURL=CreateOrganizationUtils.C5C_r3Zp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateOrganizationUtils.C5C_r3Zp.js","sources":["../../src/components/organizations/CreateOrganizationUtils.js"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { email, maxLength, required, regex } from 'react-admin';\nimport {\n validUrlRegexp,\n secureUrlRegexp,\n webSiteRegexp,\n webSiteHttpsRegexp,\n webSiteCleanPathRegexp,\n} from '../../utils/index.jsx';\n\nconst urlValidation = (value) => {\n if (!(value && validUrlRegexp.test(value.trim()))) {\n return 'Please type in a valid URL';\n }\n if (!(value && secureUrlRegexp.test(value.trim()))) {\n return `Invalid service endpoint url '${value}'. https is required`;\n }\n return undefined;\n};\n\nexport const validateWebsite = [\n regex(webSiteRegexp, 'Please type in a valid URL'),\n regex(webSiteHttpsRegexp, 'Https is required'),\n maxLength(1024),\n];\n\nexport const validateWebsiteStrict = [\n ...validateWebsite,\n regex(webSiteCleanPathRegexp, 'Website must not contain a path after domain'),\n];\nexport const validateName = [required(), maxLength(100)];\nexport const validateServiceEndpoint = [urlValidation, maxLength(1024)];\nexport const validateEmail = [email()];\n"],"names":["validUrlRegexp","secureUrlRegexp","regex","webSiteRegexp","webSiteHttpsRegexp","maxLength","webSiteCleanPathRegexp","required","email"],"mappings":";;;AAyBA,MAAM,gBAAgB,CAAC,UAAU;AAC/B,MAAI,EAAE,SAASA,qBAAe,KAAK,MAAM,KAAI,CAAE,IAAI;AACjD,WAAO;AAAA,EACT;AACA,MAAI,EAAE,SAASC,sBAAgB,KAAK,MAAM,KAAI,CAAE,IAAI;AAClD,WAAO,iCAAiC,KAAK;AAAA,EAC/C;AACA,SAAO;AACT;AAEY,MAAC,kBAAkB;AAAA,EAC7BC,WAAAA,MAAMC,MAAAA,eAAe,4BAA4B;AAAA,EACjDD,WAAAA,MAAME,MAAAA,oBAAoB,mBAAmB;AAAA,EAC7CC,WAAAA,UAAU,IAAI;AAChB;AAEY,MAAC,wBAAwB;AAAA,EACnC,GAAG;AAAA,EACHH,WAAAA,MAAMI,MAAAA,wBAAwB,8CAA8C;AAC9E;AACY,MAAC,eAAe,CAACC,WAAAA,YAAYF,WAAAA,UAAU,GAAG,CAAC;AAC3C,MAAC,0BAA0B,CAAC,eAAeA,WAAAA,UAAU,IAAI,CAAC;AAC1D,MAAC,gBAAgB,CAACG,WAAAA,MAAK,CAAE;;;;;;"}
|
package/dist/chunks/{CreateOrganization.utils.8cSBFSYF.js → CreateOrganizationUtils.Xq78HHkP.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { regex, maxLength, required, email } from "react-admin";
|
|
2
|
-
import { w as webSiteRegexp, a as webSiteHttpsRegexp, b as webSiteCleanPathRegexp, v as validUrlRegexp, s as secureUrlRegexp } from "./index.
|
|
2
|
+
import { w as webSiteRegexp, a as webSiteHttpsRegexp, b as webSiteCleanPathRegexp, v as validUrlRegexp, s as secureUrlRegexp } from "./index.DIur8MCO.js";
|
|
3
3
|
const urlValidation = (value) => {
|
|
4
4
|
if (!(value && validUrlRegexp.test(value.trim()))) {
|
|
5
5
|
return "Please type in a valid URL";
|
|
@@ -22,10 +22,10 @@ const validateName = [required(), maxLength(100)];
|
|
|
22
22
|
const validateServiceEndpoint = [urlValidation, maxLength(1024)];
|
|
23
23
|
const validateEmail = [email()];
|
|
24
24
|
export {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
validateWebsiteStrict as a,
|
|
26
|
+
validateName as b,
|
|
27
|
+
validateServiceEndpoint as c,
|
|
28
|
+
validateEmail as d,
|
|
29
|
+
validateWebsite as v
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=CreateOrganizationUtils.Xq78HHkP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateOrganizationUtils.Xq78HHkP.js","sources":["../../src/components/organizations/CreateOrganizationUtils.js"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { email, maxLength, required, regex } from 'react-admin';\nimport {\n validUrlRegexp,\n secureUrlRegexp,\n webSiteRegexp,\n webSiteHttpsRegexp,\n webSiteCleanPathRegexp,\n} from '../../utils/index.jsx';\n\nconst urlValidation = (value) => {\n if (!(value && validUrlRegexp.test(value.trim()))) {\n return 'Please type in a valid URL';\n }\n if (!(value && secureUrlRegexp.test(value.trim()))) {\n return `Invalid service endpoint url '${value}'. https is required`;\n }\n return undefined;\n};\n\nexport const validateWebsite = [\n regex(webSiteRegexp, 'Please type in a valid URL'),\n regex(webSiteHttpsRegexp, 'Https is required'),\n maxLength(1024),\n];\n\nexport const validateWebsiteStrict = [\n ...validateWebsite,\n regex(webSiteCleanPathRegexp, 'Website must not contain a path after domain'),\n];\nexport const validateName = [required(), maxLength(100)];\nexport const validateServiceEndpoint = [urlValidation, maxLength(1024)];\nexport const validateEmail = [email()];\n"],"names":[],"mappings":";;AAyBA,MAAM,gBAAgB,CAAC,UAAU;AAC/B,MAAI,EAAE,SAAS,eAAe,KAAK,MAAM,KAAI,CAAE,IAAI;AACjD,WAAO;AAAA,EACT;AACA,MAAI,EAAE,SAAS,gBAAgB,KAAK,MAAM,KAAI,CAAE,IAAI;AAClD,WAAO,iCAAiC,KAAK;AAAA,EAC/C;AACA,SAAO;AACT;AAEY,MAAC,kBAAkB;AAAA,EAC7B,MAAM,eAAe,4BAA4B;AAAA,EACjD,MAAM,oBAAoB,mBAAmB;AAAA,EAC7C,UAAU,IAAI;AAChB;AAEY,MAAC,wBAAwB;AAAA,EACnC,GAAG;AAAA,EACH,MAAM,wBAAwB,8CAA8C;AAC9E;AACY,MAAC,eAAe,CAAC,YAAY,UAAU,GAAG,CAAC;AAC3C,MAAC,0BAA0B,CAAC,eAAe,UAAU,IAAI,CAAC;AAC1D,MAAC,gBAAgB,CAAC,MAAK,CAAE;"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Link } from "react-router";
|
|
3
|
-
import AppBar from "@mui/material
|
|
4
|
-
import Toolbar from "@mui/material/Toolbar";
|
|
5
|
-
import { Box, Stack, Typography, Popover, List, ListItem, ListItemButton, Button } from "@mui/material";
|
|
3
|
+
import { Box, Stack, Typography, Popover, List, ListItem, ListItemButton, Button, AppBar, Toolbar } from "@mui/material";
|
|
6
4
|
import React, { useState, useEffect } from "react";
|
|
7
5
|
import { useRedirect, useLogout, useGetList, useGetOne } from "react-admin";
|
|
8
6
|
import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
|
|
9
7
|
import AddIcon from "@mui/icons-material/Add";
|
|
10
|
-
import { O as OrganizationAvatar } from "./OrganizationAvatar.
|
|
8
|
+
import { O as OrganizationAvatar } from "./OrganizationAvatar.Dgg5VSPI.js";
|
|
11
9
|
import { u as useSelectedOrganization } from "./selectedOrganizationState.DBpKeOn0.js";
|
|
12
|
-
import { u as useIsHideSidebar } from "./index.
|
|
10
|
+
import { u as useIsHideSidebar } from "./index.DIur8MCO.js";
|
|
13
11
|
import { u as useCountryCodes } from "./countryCodes.CQJpALrz.js";
|
|
14
|
-
import { L as Loading } from "./Loading.
|
|
12
|
+
import { L as Loading } from "./Loading.Bcm3xNJU.js";
|
|
15
13
|
import { u as useAuth } from "./AuthContext.CWlbjv4u.js";
|
|
16
14
|
import { d as dataResources } from "./remoteDataProvider.gtTXA1-g.js";
|
|
17
15
|
const AppBarOrganization = () => {
|
|
@@ -273,4 +271,4 @@ export {
|
|
|
273
271
|
AppBarOrganization as A,
|
|
274
272
|
CustomAppBar as C
|
|
275
273
|
};
|
|
276
|
-
//# sourceMappingURL=CustomAppBar.
|
|
274
|
+
//# sourceMappingURL=CustomAppBar.BOlNFosS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomAppBar.BOlNFosS.js","sources":["../../src/components/AppBar/AppBarOrganization.jsx","../../src/components/AppBar/hooks/useCheckUserHasGroup.js","../../src/components/AppBar/CustomAppBar.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { useLogout, useRedirect, useGetList } from 'react-admin';\nimport {\n Box,\n Button,\n List,\n ListItem,\n ListItemButton,\n Popover,\n Stack,\n Typography,\n} from '@mui/material';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport AddIcon from '@mui/icons-material/Add';\nimport OrganizationAvatar from '../common/OrganizationAvatar.jsx';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\nimport { useIsHideSidebar } from '../../utils/index.jsx';\nimport useCountryCodes from '../../utils/countryCodes.js';\nimport Loading from '../Loading.jsx';\nimport { useAuth } from '../../utils/auth/AuthContext.js';\n\n// eslint-disable-next-line complexity\nconst AppBarOrganization = () => {\n const { getCountryNameByCode } = useCountryCodes();\n const isHidden = useIsHideSidebar();\n const redirect = useRedirect();\n const [did, setDid] = useSelectedOrganization();\n const auth = useAuth();\n const logout = useLogout();\n\n const { data: allOrganizations, isLoading } = useGetList('organizations', undefined, {\n onSuccess: ({ data }) => {\n if (!data) {\n return;\n }\n\n if (data.find((item) => item.id === did)) {\n return;\n }\n\n setDid(data[0].id);\n },\n onError: () => redirect('/'),\n });\n\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const organization = React.useMemo(\n () => (allOrganizations || []).find((item) => item.id === did),\n [did, allOrganizations],\n );\n\n if (isLoading) {\n return (\n <Box>\n <Loading />\n </Box>\n );\n }\n\n if (!did || !allOrganizations || isHidden || !organization) {\n return null;\n }\n\n const isOpen = Boolean(anchorEl);\n const id = isOpen ? 'user-menu' : undefined;\n\n const handleSelectOrganization = (value) => {\n setDid(value);\n setAnchorEl(null);\n redirect('show', 'organizations', value);\n };\n\n const handleAddNewClick = () => {\n setAnchorEl(null);\n redirect('create', 'organizations');\n };\n\n const handleLogoutClick = () => {\n setAnchorEl(null);\n logout(auth, '/', false);\n };\n\n return (\n <>\n <Stack\n sx={sx.root}\n role=\"button\"\n aria-describedby={id}\n onClick={(e) => setAnchorEl(e.currentTarget)}\n data-testid=\"app-bar-org\"\n >\n <OrganizationAvatar\n size={36}\n name={organization.profile.name}\n logo={organization.profile.logo}\n />\n <Box>\n <Typography variant=\"pl\" component=\"div\" fontWeight={600}>\n {organization.profile.name}\n </Typography>\n <Typography variant=\"ps\" mt={0.25}>\n {getCountryNameByCode(organization.profile.location.countryCode)}\n </Typography>\n </Box>\n <ArrowDropDownIcon />\n </Stack>\n <Popover\n id={id}\n open={isOpen}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n componentsProps={{\n backdrop: {\n invisible: true,\n },\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <Stack sx={sx.popup} alignItems=\"center\">\n <OrganizationAvatar\n size={56}\n name={organization.profile.name}\n logo={organization.profile.logo}\n />\n <Typography mt={2} variant=\"h5\">\n {organization.profile.name}\n </Typography>\n <Typography mt={2} variant=\"pm\" fontWeight=\"600\" sx={sx.did}>\n {did}\n </Typography>\n <Typography variant=\"ps\" mt={1} mb={3}>\n {getCountryNameByCode(organization.profile.location.countryCode)}\n </Typography>\n <List sx={sx.list}>\n {allOrganizations\n .filter((item) => item.id !== did)\n .map((item) => (\n <ListItem key={item.id} sx={sx.listItem} disablePadding>\n <ListItemButton\n sx={sx.listItemButton}\n onClick={() => handleSelectOrganization(item.id)}\n >\n <OrganizationAvatar\n size={26}\n name={item.profile.name}\n logo={item.profile.logo}\n />\n <Typography variant=\"pm\" fontWeight={600}>\n {item.profile.name}\n </Typography>\n </ListItemButton>\n </ListItem>\n ))}\n <ListItem key=\"'add-new'\" sx={sx.listItem} disablePadding>\n <ListItemButton sx={sx.listItemButton} onClick={handleAddNewClick}>\n <Box sx={sx.plusIcon}>\n <AddIcon />\n </Box>\n <Typography variant=\"pm\" fontWeight={600} fontSize={12}>\n ADD ORGANIZATION\n </Typography>\n </ListItemButton>\n </ListItem>\n </List>\n <Button\n sx={sx.logout}\n onClick={handleLogoutClick}\n variant=\"outlined\"\n color=\"secondary\"\n size=\"small\"\n >\n LOG OUT\n </Button>\n\n <Button sx={sx.changePassword} variant=\"text\" color=\"secondary\" size=\"small\">\n Change password\n </Button>\n </Stack>\n </Popover>\n </>\n );\n};\n\nexport default AppBarOrganization;\n\nconst sx = {\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 1.5,\n cursor: 'pointer',\n py: 1.25,\n },\n popup: {\n minWidth: 368,\n py: 4,\n },\n list: {\n alignSelf: 'stretch',\n },\n listItem: {\n borderTop: (theme) => `1px solid ${theme.palette.divider.main}`,\n },\n listItemButton: {\n gap: 2.5,\n px: 3.25,\n py: 1.5,\n },\n plusIcon: {\n padding: 0.625,\n display: 'flex',\n },\n logout: {\n mt: 1,\n minWidth: 176,\n },\n changePassword: {\n mt: 2,\n },\n did: {\n wordBreak: 'break-word',\n px: '10px',\n },\n};\n","import { useEffect, useState } from 'react';\nimport { useGetOne, useRedirect } from 'react-admin';\nimport { useAuth } from '@/utils/auth/AuthContext.js';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\n\nexport const useCheckUserHasGroup = () => {\n const { user, getAccessTokenWithPopup } = useAuth();\n const redirect = useRedirect();\n const [, setDid] = useSelectedOrganization();\n const {\n data: userData,\n isLoading: isUserDataLoading,\n isError,\n } = useGetOne(dataResources.USERS, {\n id: user.sub,\n });\n const [isLoading, setIsLoading] = useState(false);\n const [hasOrganisations, setHasOrganisations] = useState(false);\n\n useEffect(() => {\n const checkUserGroup = async () => {\n setIsLoading(true);\n try {\n const userHasGroup = !!userData?.groupId;\n if (userHasGroup) {\n setHasOrganisations(true);\n return;\n }\n\n setDid('');\n if (!/organizations\\/create/.test(window.location.pathname)) {\n redirect('create', 'organizations', undefined, undefined, { userHasGroup });\n }\n } catch (e) {\n if (e.error === 'consent_required') {\n await getAccessTokenWithPopup();\n }\n throw e;\n } finally {\n setIsLoading(false);\n }\n };\n if (!isUserDataLoading && (userData || isError)) {\n checkUserGroup();\n }\n }, [\n getAccessTokenWithPopup,\n redirect,\n setDid,\n setIsLoading,\n userData?.groupId,\n isUserDataLoading,\n userData,\n isError,\n ]);\n\n return {\n isLoading,\n hasOrganisations,\n };\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Link } from 'react-router';\nimport { AppBar, Box, Toolbar } from '@mui/material';\nimport AppBarOrganization from './AppBarOrganization.jsx';\nimport { useCheckUserHasGroup } from './hooks/useCheckUserHasGroup.js';\n\nconst CustomAppBar = (props) => {\n const { hasOrganisations, isLoading } = useCheckUserHasGroup();\n const isLogoDisabled = isLoading || !hasOrganisations;\n\n return (\n <AppBar {...props} elevation={0}>\n <Toolbar>\n <Link\n to={isLogoDisabled ? undefined : '/'}\n style={{ display: 'flex', ...(isLogoDisabled ? { pointerEvents: 'none' } : {}) }}\n aria-disabled={isLogoDisabled}\n disabled={isLogoDisabled}\n role=\"link\"\n >\n <img src=\"/assets/images/logo.svg\" alt=\"Velocity\" />\n </Link>\n <Box flex={1} />\n {hasOrganisations && <AppBarOrganization />}\n </Toolbar>\n </AppBar>\n );\n};\n\nexport default CustomAppBar;\n"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("react/jsx-runtime");
|
|
3
3
|
const reactRouter = require("react-router");
|
|
4
|
-
const AppBar = require("@mui/material/AppBar");
|
|
5
|
-
const Toolbar = require("@mui/material/Toolbar");
|
|
6
4
|
const material = require("@mui/material");
|
|
7
5
|
const React = require("react");
|
|
8
6
|
const reactAdmin = require("react-admin");
|
|
9
7
|
const ArrowDropDownIcon = require("@mui/icons-material/ArrowDropDown");
|
|
10
8
|
const AddIcon = require("@mui/icons-material/Add");
|
|
11
|
-
const OrganizationAvatar = require("./OrganizationAvatar.
|
|
9
|
+
const OrganizationAvatar = require("./OrganizationAvatar.BXW4diDT.js");
|
|
12
10
|
const selectedOrganizationState = require("./selectedOrganizationState.BR4G8K3M.js");
|
|
13
11
|
const index = require("./index.iexmV4Mr.js");
|
|
14
12
|
const countryCodes = require("./countryCodes.B2bnzZrX.js");
|
|
15
|
-
const Loading = require("./Loading.
|
|
13
|
+
const Loading = require("./Loading.cGHE59CV.js");
|
|
16
14
|
const AuthContext = require("./AuthContext.DCNVg-VT.js");
|
|
17
15
|
const remoteDataProvider = require("./remoteDataProvider.BCiFSYnk.js");
|
|
18
16
|
const AppBarOrganization = () => {
|
|
@@ -254,7 +252,7 @@ const useCheckUserHasGroup = () => {
|
|
|
254
252
|
const CustomAppBar = (props) => {
|
|
255
253
|
const { hasOrganisations, isLoading } = useCheckUserHasGroup();
|
|
256
254
|
const isLogoDisabled = isLoading || !hasOrganisations;
|
|
257
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AppBar, { ...props, elevation: 0, children: /* @__PURE__ */ jsxRuntime.jsxs(Toolbar, { children: [
|
|
255
|
+
return /* @__PURE__ */ jsxRuntime.jsx(material.AppBar, { ...props, elevation: 0, children: /* @__PURE__ */ jsxRuntime.jsxs(material.Toolbar, { children: [
|
|
258
256
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
259
257
|
reactRouter.Link,
|
|
260
258
|
{
|
|
@@ -272,4 +270,4 @@ const CustomAppBar = (props) => {
|
|
|
272
270
|
};
|
|
273
271
|
exports.AppBarOrganization = AppBarOrganization;
|
|
274
272
|
exports.CustomAppBar = CustomAppBar;
|
|
275
|
-
//# sourceMappingURL=CustomAppBar.
|
|
273
|
+
//# sourceMappingURL=CustomAppBar.DaXLAwPh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomAppBar.DaXLAwPh.js","sources":["../../src/components/AppBar/AppBarOrganization.jsx","../../src/components/AppBar/hooks/useCheckUserHasGroup.js","../../src/components/AppBar/CustomAppBar.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport { useLogout, useRedirect, useGetList } from 'react-admin';\nimport {\n Box,\n Button,\n List,\n ListItem,\n ListItemButton,\n Popover,\n Stack,\n Typography,\n} from '@mui/material';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport AddIcon from '@mui/icons-material/Add';\nimport OrganizationAvatar from '../common/OrganizationAvatar.jsx';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\nimport { useIsHideSidebar } from '../../utils/index.jsx';\nimport useCountryCodes from '../../utils/countryCodes.js';\nimport Loading from '../Loading.jsx';\nimport { useAuth } from '../../utils/auth/AuthContext.js';\n\n// eslint-disable-next-line complexity\nconst AppBarOrganization = () => {\n const { getCountryNameByCode } = useCountryCodes();\n const isHidden = useIsHideSidebar();\n const redirect = useRedirect();\n const [did, setDid] = useSelectedOrganization();\n const auth = useAuth();\n const logout = useLogout();\n\n const { data: allOrganizations, isLoading } = useGetList('organizations', undefined, {\n onSuccess: ({ data }) => {\n if (!data) {\n return;\n }\n\n if (data.find((item) => item.id === did)) {\n return;\n }\n\n setDid(data[0].id);\n },\n onError: () => redirect('/'),\n });\n\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const organization = React.useMemo(\n () => (allOrganizations || []).find((item) => item.id === did),\n [did, allOrganizations],\n );\n\n if (isLoading) {\n return (\n <Box>\n <Loading />\n </Box>\n );\n }\n\n if (!did || !allOrganizations || isHidden || !organization) {\n return null;\n }\n\n const isOpen = Boolean(anchorEl);\n const id = isOpen ? 'user-menu' : undefined;\n\n const handleSelectOrganization = (value) => {\n setDid(value);\n setAnchorEl(null);\n redirect('show', 'organizations', value);\n };\n\n const handleAddNewClick = () => {\n setAnchorEl(null);\n redirect('create', 'organizations');\n };\n\n const handleLogoutClick = () => {\n setAnchorEl(null);\n logout(auth, '/', false);\n };\n\n return (\n <>\n <Stack\n sx={sx.root}\n role=\"button\"\n aria-describedby={id}\n onClick={(e) => setAnchorEl(e.currentTarget)}\n data-testid=\"app-bar-org\"\n >\n <OrganizationAvatar\n size={36}\n name={organization.profile.name}\n logo={organization.profile.logo}\n />\n <Box>\n <Typography variant=\"pl\" component=\"div\" fontWeight={600}>\n {organization.profile.name}\n </Typography>\n <Typography variant=\"ps\" mt={0.25}>\n {getCountryNameByCode(organization.profile.location.countryCode)}\n </Typography>\n </Box>\n <ArrowDropDownIcon />\n </Stack>\n <Popover\n id={id}\n open={isOpen}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n componentsProps={{\n backdrop: {\n invisible: true,\n },\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n >\n <Stack sx={sx.popup} alignItems=\"center\">\n <OrganizationAvatar\n size={56}\n name={organization.profile.name}\n logo={organization.profile.logo}\n />\n <Typography mt={2} variant=\"h5\">\n {organization.profile.name}\n </Typography>\n <Typography mt={2} variant=\"pm\" fontWeight=\"600\" sx={sx.did}>\n {did}\n </Typography>\n <Typography variant=\"ps\" mt={1} mb={3}>\n {getCountryNameByCode(organization.profile.location.countryCode)}\n </Typography>\n <List sx={sx.list}>\n {allOrganizations\n .filter((item) => item.id !== did)\n .map((item) => (\n <ListItem key={item.id} sx={sx.listItem} disablePadding>\n <ListItemButton\n sx={sx.listItemButton}\n onClick={() => handleSelectOrganization(item.id)}\n >\n <OrganizationAvatar\n size={26}\n name={item.profile.name}\n logo={item.profile.logo}\n />\n <Typography variant=\"pm\" fontWeight={600}>\n {item.profile.name}\n </Typography>\n </ListItemButton>\n </ListItem>\n ))}\n <ListItem key=\"'add-new'\" sx={sx.listItem} disablePadding>\n <ListItemButton sx={sx.listItemButton} onClick={handleAddNewClick}>\n <Box sx={sx.plusIcon}>\n <AddIcon />\n </Box>\n <Typography variant=\"pm\" fontWeight={600} fontSize={12}>\n ADD ORGANIZATION\n </Typography>\n </ListItemButton>\n </ListItem>\n </List>\n <Button\n sx={sx.logout}\n onClick={handleLogoutClick}\n variant=\"outlined\"\n color=\"secondary\"\n size=\"small\"\n >\n LOG OUT\n </Button>\n\n <Button sx={sx.changePassword} variant=\"text\" color=\"secondary\" size=\"small\">\n Change password\n </Button>\n </Stack>\n </Popover>\n </>\n );\n};\n\nexport default AppBarOrganization;\n\nconst sx = {\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 1.5,\n cursor: 'pointer',\n py: 1.25,\n },\n popup: {\n minWidth: 368,\n py: 4,\n },\n list: {\n alignSelf: 'stretch',\n },\n listItem: {\n borderTop: (theme) => `1px solid ${theme.palette.divider.main}`,\n },\n listItemButton: {\n gap: 2.5,\n px: 3.25,\n py: 1.5,\n },\n plusIcon: {\n padding: 0.625,\n display: 'flex',\n },\n logout: {\n mt: 1,\n minWidth: 176,\n },\n changePassword: {\n mt: 2,\n },\n did: {\n wordBreak: 'break-word',\n px: '10px',\n },\n};\n","import { useEffect, useState } from 'react';\nimport { useGetOne, useRedirect } from 'react-admin';\nimport { useAuth } from '@/utils/auth/AuthContext.js';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\n\nexport const useCheckUserHasGroup = () => {\n const { user, getAccessTokenWithPopup } = useAuth();\n const redirect = useRedirect();\n const [, setDid] = useSelectedOrganization();\n const {\n data: userData,\n isLoading: isUserDataLoading,\n isError,\n } = useGetOne(dataResources.USERS, {\n id: user.sub,\n });\n const [isLoading, setIsLoading] = useState(false);\n const [hasOrganisations, setHasOrganisations] = useState(false);\n\n useEffect(() => {\n const checkUserGroup = async () => {\n setIsLoading(true);\n try {\n const userHasGroup = !!userData?.groupId;\n if (userHasGroup) {\n setHasOrganisations(true);\n return;\n }\n\n setDid('');\n if (!/organizations\\/create/.test(window.location.pathname)) {\n redirect('create', 'organizations', undefined, undefined, { userHasGroup });\n }\n } catch (e) {\n if (e.error === 'consent_required') {\n await getAccessTokenWithPopup();\n }\n throw e;\n } finally {\n setIsLoading(false);\n }\n };\n if (!isUserDataLoading && (userData || isError)) {\n checkUserGroup();\n }\n }, [\n getAccessTokenWithPopup,\n redirect,\n setDid,\n setIsLoading,\n userData?.groupId,\n isUserDataLoading,\n userData,\n isError,\n ]);\n\n return {\n isLoading,\n hasOrganisations,\n };\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Link } from 'react-router';\nimport { AppBar, Box, Toolbar } from '@mui/material';\nimport AppBarOrganization from './AppBarOrganization.jsx';\nimport { useCheckUserHasGroup } from './hooks/useCheckUserHasGroup.js';\n\nconst CustomAppBar = (props) => {\n const { hasOrganisations, isLoading } = useCheckUserHasGroup();\n const isLogoDisabled = isLoading || !hasOrganisations;\n\n return (\n <AppBar {...props} elevation={0}>\n <Toolbar>\n <Link\n to={isLogoDisabled ? undefined : '/'}\n style={{ display: 'flex', ...(isLogoDisabled ? { pointerEvents: 'none' } : {}) }}\n aria-disabled={isLogoDisabled}\n disabled={isLogoDisabled}\n role=\"link\"\n >\n <img src=\"/assets/images/logo.svg\" alt=\"Velocity\" />\n </Link>\n <Box flex={1} />\n {hasOrganisations && <AppBarOrganization />}\n </Toolbar>\n </AppBar>\n );\n};\n\nexport default CustomAppBar;\n"],"names":["useCountryCodes","useIsHideSidebar","useRedirect","useSelectedOrganization","useAuth","useLogout","useGetList","jsx","Box","Loading","jsxs","Fragment","Stack","OrganizationAvatar","Typography","Popover","List","ListItem","ListItemButton","Button","useGetOne","dataResources","useState","useEffect","AppBar","Toolbar","Link"],"mappings":";;;;;;;;;;;;;;;AAsCA,MAAM,qBAAqB,MAAM;AAC/B,QAAM,EAAE,qBAAA,IAAyBA,6BAAA;AACjC,QAAM,WAAWC,MAAAA,iBAAA;AACjB,QAAM,WAAWC,WAAAA,YAAA;AACjB,QAAM,CAAC,KAAK,MAAM,IAAIC,kDAAA;AACtB,QAAM,OAAOC,YAAAA,QAAA;AACb,QAAM,SAASC,WAAAA,UAAA;AAEf,QAAM,EAAE,MAAM,kBAAkB,cAAcC,WAAAA,WAAW,iBAAiB,QAAW;AAAA,IACnF,WAAW,CAAC,EAAE,WAAW;AACvB,UAAI,CAAC,MAAM;AACT;AAAA,MACF;AAEA,UAAI,KAAK,KAAK,CAAC,SAAS,KAAK,OAAO,GAAG,GAAG;AACxC;AAAA,MACF;AAEA,aAAO,KAAK,CAAC,EAAE,EAAE;AAAA,IACnB;AAAA,IACA,SAAS,MAAM,SAAS,GAAG;AAAA,EAAA,CAC5B;AAED,QAAM,CAAC,UAAU,WAAW,IAAI,MAAM,SAAS,IAAI;AAEnD,QAAM,eAAe,MAAM;AAAA,IACzB,OAAO,oBAAoB,CAAA,GAAI,KAAK,CAAC,SAAS,KAAK,OAAO,GAAG;AAAA,IAC7D,CAAC,KAAK,gBAAgB;AAAA,EAAA;AAGxB,MAAI,WAAW;AACb,WACEC,2BAAAA,IAACC,SAAAA,KAAA,EACC,UAAAD,2BAAAA,IAACE,QAAAA,SAAA,CAAA,CAAQ,GACX;AAAA,EAEJ;AAEA,MAAI,CAAC,OAAO,CAAC,oBAAoB,YAAY,CAAC,cAAc;AAC1D,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,QAAQ,QAAQ;AAC/B,QAAM,KAAK,SAAS,cAAc;AAElC,QAAM,2BAA2B,CAAC,UAAU;AAC1C,WAAO,KAAK;AACZ,gBAAY,IAAI;AAChB,aAAS,QAAQ,iBAAiB,KAAK;AAAA,EACzC;AAEA,QAAM,oBAAoB,MAAM;AAC9B,gBAAY,IAAI;AAChB,aAAS,UAAU,eAAe;AAAA,EACpC;AAEA,QAAM,oBAAoB,MAAM;AAC9B,gBAAY,IAAI;AAChB,WAAO,MAAM,KAAK,KAAK;AAAA,EACzB;AAEA,SACEC,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,IAAAD,2BAAAA;AAAAA,MAACE,SAAAA;AAAAA,MAAA;AAAA,QACC,IAAI,GAAG;AAAA,QACP,MAAK;AAAA,QACL,oBAAkB;AAAA,QAClB,SAAS,CAAC,MAAM,YAAY,EAAE,aAAa;AAAA,QAC3C,eAAY;AAAA,QAEZ,UAAA;AAAA,UAAAL,2BAAAA;AAAAA,YAACM,mBAAAA;AAAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,MAAM,aAAa,QAAQ;AAAA,cAC3B,MAAM,aAAa,QAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,0CAE5BL,SAAAA,KAAA,EACC,UAAA;AAAA,YAAAD,2BAAAA,IAACO,SAAAA,YAAA,EAAW,SAAQ,MAAK,WAAU,OAAM,YAAY,KAClD,UAAA,aAAa,QAAQ,KAAA,CACxB;AAAA,YACAP,2BAAAA,IAACO,SAAAA,YAAA,EAAW,SAAQ,MAAK,IAAI,MAC1B,UAAA,qBAAqB,aAAa,QAAQ,SAAS,WAAW,EAAA,CACjE;AAAA,UAAA,GACF;AAAA,yCACC,mBAAA,CAAA,CAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAErBP,2BAAAA;AAAAA,MAACQ,SAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,SAAS,MAAM,YAAY,IAAI;AAAA,QAC/B,iBAAiB;AAAA,UACf,UAAU;AAAA,YACR,WAAW;AAAA,UAAA;AAAA,QACb;AAAA,QAEF,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,YAAY;AAAA,QAAA;AAAA,QAEd,iBAAiB;AAAA,UACf,UAAU;AAAA,UACV,YAAY;AAAA,QAAA;AAAA,QAGd,0CAACH,SAAAA,OAAA,EAAM,IAAI,GAAG,OAAO,YAAW,UAC9B,UAAA;AAAA,UAAAL,2BAAAA;AAAAA,YAACM,mBAAAA;AAAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,MAAM,aAAa,QAAQ;AAAA,cAC3B,MAAM,aAAa,QAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,UAE7BN,2BAAAA,IAACO,SAAAA,cAAW,IAAI,GAAG,SAAQ,MACxB,UAAA,aAAa,QAAQ,KAAA,CACxB;AAAA,UACAP,2BAAAA,IAACO,SAAAA,YAAA,EAAW,IAAI,GAAG,SAAQ,MAAK,YAAW,OAAM,IAAI,GAAG,KACrD,UAAA,IAAA,CACH;AAAA,UACAP,2BAAAA,IAACO,SAAAA,YAAA,EAAW,SAAQ,MAAK,IAAI,GAAG,IAAI,GACjC,UAAA,qBAAqB,aAAa,QAAQ,SAAS,WAAW,GACjE;AAAA,UACAJ,2BAAAA,KAACM,SAAAA,MAAA,EAAK,IAAI,GAAG,MACV,UAAA;AAAA,YAAA,iBACE,OAAO,CAAC,SAAS,KAAK,OAAO,GAAG,EAChC,IAAI,CAAC,wCACHC,SAAAA,UAAA,EAAuB,IAAI,GAAG,UAAU,gBAAc,MACrD,UAAAP,2BAAAA;AAAAA,cAACQ,SAAAA;AAAAA,cAAA;AAAA,gBACC,IAAI,GAAG;AAAA,gBACP,SAAS,MAAM,yBAAyB,KAAK,EAAE;AAAA,gBAE/C,UAAA;AAAA,kBAAAX,2BAAAA;AAAAA,oBAACM,mBAAAA;AAAAA,oBAAA;AAAA,sBACC,MAAM;AAAA,sBACN,MAAM,KAAK,QAAQ;AAAA,sBACnB,MAAM,KAAK,QAAQ;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAErBN,2BAAAA,IAACO,SAAAA,cAAW,SAAQ,MAAK,YAAY,KAClC,UAAA,KAAK,QAAQ,KAAA,CAChB;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,KAZW,KAAK,EAcpB,CACD;AAAA,YACHP,2BAAAA,IAACU,SAAAA,UAAA,EAAyB,IAAI,GAAG,UAAU,gBAAc,MACvD,UAAAP,2BAAAA,KAACQ,SAAAA,gBAAA,EAAe,IAAI,GAAG,gBAAgB,SAAS,mBAC9C,UAAA;AAAA,cAAAX,2BAAAA,IAACC,SAAAA,OAAI,IAAI,GAAG,UACV,UAAAD,+BAAC,WAAQ,GACX;AAAA,cACAA,2BAAAA,IAACO,SAAAA,cAAW,SAAQ,MAAK,YAAY,KAAK,UAAU,IAAI,UAAA,mBAAA,CAExD;AAAA,YAAA,EAAA,CACF,KARY,WASd;AAAA,UAAA,GACF;AAAA,UACAP,2BAAAA;AAAAA,YAACY,SAAAA;AAAAA,YAAA;AAAA,cACC,IAAI,GAAG;AAAA,cACP,SAAS;AAAA,cACT,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,MAAK;AAAA,cACN,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIDZ,2BAAAA,IAACY,SAAAA,QAAA,EAAO,IAAI,GAAG,gBAAgB,SAAQ,QAAO,OAAM,aAAY,MAAK,SAAQ,UAAA,kBAAA,CAE7E;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAIA,MAAM,KAAK;AAAA,EACT,MAAM;AAAA,IACJ,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,IAAI;AAAA,EAAA;AAAA,EAEN,OAAO;AAAA,IACL,UAAU;AAAA,IACV,IAAI;AAAA,EAAA;AAAA,EAEN,MAAM;AAAA,IACJ,WAAW;AAAA,EAAA;AAAA,EAEb,UAAU;AAAA,IACR,WAAW,CAAC,UAAU,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAAA;AAAA,EAE/D,gBAAgB;AAAA,IACd,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA;AAAA,EAEN,UAAU;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAAA,EAEX,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EAAA;AAAA,EAEZ,gBAAgB;AAAA,IACd,IAAI;AAAA,EAAA;AAAA,EAEN,KAAK;AAAA,IACH,WAAW;AAAA,IACX,IAAI;AAAA,EAAA;AAER;ACjPO,MAAM,uBAAuB,MAAM;AACxC,QAAM,EAAE,MAAM,wBAAuB,IAAKf,oBAAO;AACjD,QAAM,WAAWF,WAAAA,YAAW;AAC5B,QAAM,CAAA,EAAG,MAAM,IAAIC,kDAAuB;AAC1C,QAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX;AAAA,EACJ,IAAMiB,WAAAA,UAAUC,mBAAAA,cAAc,OAAO;AAAA,IACjC,IAAI,KAAK;AAAA,EACb,CAAG;AACD,QAAM,CAAC,WAAW,YAAY,IAAIC,MAAAA,SAAS,KAAK;AAChD,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,MAAAA,SAAS,KAAK;AAE9DC,QAAAA,UAAU,MAAM;AACd,UAAM,iBAAiB,YAAY;AACjC,mBAAa,IAAI;AACjB,UAAI;AACF,cAAM,eAAe,CAAC,CAAC,UAAU;AACjC,YAAI,cAAc;AAChB,8BAAoB,IAAI;AACxB;AAAA,QACF;AAEA,eAAO,EAAE;AACT,YAAI,CAAC,wBAAwB,KAAK,OAAO,SAAS,QAAQ,GAAG;AAC3D,mBAAS,UAAU,iBAAiB,QAAW,QAAW,EAAE,cAAc;AAAA,QAC5E;AAAA,MACF,SAAS,GAAG;AACV,YAAI,EAAE,UAAU,oBAAoB;AAClC,gBAAM,wBAAuB;AAAA,QAC/B;AACA,cAAM;AAAA,MACR,UAAC;AACC,qBAAa,KAAK;AAAA,MACpB;AAAA,IACF;AACA,QAAI,CAAC,sBAAsB,YAAY,UAAU;AAC/C,qBAAc;AAAA,IAChB;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACJ;AACA;ACxCA,MAAM,eAAe,CAAC,UAAU;AAC9B,QAAM,EAAE,kBAAkB,UAAA,IAAc,qBAAA;AACxC,QAAM,iBAAiB,aAAa,CAAC;AAErC,wCACGC,SAAAA,QAAA,EAAQ,GAAG,OAAO,WAAW,GAC5B,0CAACC,SAAAA,SAAA,EACC,UAAA;AAAA,IAAAlB,2BAAAA;AAAAA,MAACmB,YAAAA;AAAAA,MAAA;AAAA,QACC,IAAI,iBAAiB,SAAY;AAAA,QACjC,OAAO,EAAE,SAAS,QAAQ,GAAI,iBAAiB,EAAE,eAAe,OAAA,IAAW,GAAC;AAAA,QAC5E,iBAAe;AAAA,QACf,UAAU;AAAA,QACV,MAAK;AAAA,QAEL,UAAAnB,2BAAAA,IAAC,OAAA,EAAI,KAAI,2BAA0B,KAAI,WAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,IAEpDA,2BAAAA,IAACC,SAAAA,KAAA,EAAI,MAAM,EAAA,CAAG;AAAA,IACb,mDAAqB,oBAAA,CAAA,CAAmB;AAAA,EAAA,EAAA,CAC3C,EAAA,CACF;AAEJ;;;"}
|
package/dist/chunks/{LinkedInRegistrationInput.C-qzrR-S.js → LinkedInRegistrationInput.CmYmSJoq.js}
RENAMED
|
@@ -4,10 +4,10 @@ import PropTypes from "prop-types";
|
|
|
4
4
|
import { ResourceContextProvider, ArrayInput, SimpleFormIterator, FormDataConsumer, TextInput, required } from "react-admin";
|
|
5
5
|
import { FormControl, RadioGroup, FormControlLabel, Box, Tooltip, Radio, Stack } from "@mui/material";
|
|
6
6
|
import InfoIcon from "@mui/icons-material/Info";
|
|
7
|
-
import { get } from "lodash";
|
|
7
|
+
import { get } from "lodash-es";
|
|
8
8
|
import { useFormContext } from "react-hook-form";
|
|
9
|
-
import { L as LINKEDIN_ORGANIZATION_ID, N as NATIONAL_AUTHORITY_HINT,
|
|
10
|
-
import {
|
|
9
|
+
import { L as LINKEDIN_ORGANIZATION_ID, N as NATIONAL_AUTHORITY_HINT, c as LEI_HINT, D as DUNS_HINT } from "./index.DIur8MCO.js";
|
|
10
|
+
import { v as validateWebsite } from "./CreateOrganizationUtils.Xq78HHkP.js";
|
|
11
11
|
import { Authorities } from "../constants.js";
|
|
12
12
|
const registrationNumbers = {
|
|
13
13
|
DunnAndBradstreet: {
|
|
@@ -63,7 +63,9 @@ const AuthorityRegistrationInput = ({
|
|
|
63
63
|
const isNationalAuthority = selectedAuthority === registrationNumbers.NationalAuthority.authority;
|
|
64
64
|
const isHorizontal = orientation === "horizontal";
|
|
65
65
|
useEffect(() => {
|
|
66
|
-
if (!selectedAuthority || activeAuthorityEntry)
|
|
66
|
+
if (!selectedAuthority || activeAuthorityEntry) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
67
69
|
const updated = {
|
|
68
70
|
authority: selectedAuthority,
|
|
69
71
|
number: "",
|
|
@@ -108,6 +110,7 @@ const AuthorityRegistrationInput = ({
|
|
|
108
110
|
/* @__PURE__ */ jsx(Box, { sx: styles.authorityContainer, flexDirection: isNationalAuthority ? "row" : "column", children: /* @__PURE__ */ jsx(ResourceContextProvider, { value: "organizations", children: /* @__PURE__ */ jsx(
|
|
109
111
|
ArrayInput,
|
|
110
112
|
{
|
|
113
|
+
name: "authorities",
|
|
111
114
|
source,
|
|
112
115
|
fullWidth: true,
|
|
113
116
|
label: false,
|
|
@@ -214,4 +217,4 @@ export {
|
|
|
214
217
|
AuthorityRegistrationInput as A,
|
|
215
218
|
LinkedInRegistrationInput as L
|
|
216
219
|
};
|
|
217
|
-
//# sourceMappingURL=LinkedInRegistrationInput.
|
|
220
|
+
//# sourceMappingURL=LinkedInRegistrationInput.CmYmSJoq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkedInRegistrationInput.CmYmSJoq.js","sources":["../../src/pages/organizations/components/AuthorityRegistrationInput.jsx","../../src/pages/organizations/components/LinkedInRegistrationInput.jsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { get } from 'lodash-es';\nimport { Box, FormControl, FormControlLabel, Radio, RadioGroup, Tooltip } from '@mui/material';\nimport {\n TextInput,\n required,\n ArrayInput,\n SimpleFormIterator,\n ResourceContextProvider,\n FormDataConsumer,\n} from 'react-admin';\nimport InfoIcon from '@mui/icons-material/Info';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { useFormContext } from 'react-hook-form';\nimport {\n DUNS_HINT,\n LEI_HINT,\n NATIONAL_AUTHORITY_HINT,\n LINKEDIN_ORGANIZATION_ID,\n} from '@/utils/index.jsx';\nimport { validateWebsite } from '@/components/organizations/CreateOrganizationUtils.js';\n\nexport const registrationNumbers = {\n DunnAndBradstreet: {\n authority: 'DunnAndBradstreet',\n label: `D-U-N-S${String.fromCodePoint(174)} Number`,\n hint: DUNS_HINT,\n },\n GLEIF: {\n authority: 'GLEIF',\n label: 'LEI',\n hint: LEI_HINT,\n },\n NationalAuthority: {\n authority: 'NationalAuthority',\n label: 'Local Country Registration ID',\n hint: NATIONAL_AUTHORITY_HINT,\n },\n};\n\nexport const preservedRegistrationNumbers = {\n LinkedIn: {\n authority: 'LinkedIn',\n label: 'LinkedIn Company Page ID',\n hint: LINKEDIN_ORGANIZATION_ID,\n },\n};\n\nexport const defaultAuthority = registrationNumbers.DunnAndBradstreet.authority;\n\nconst getInitialAuthority = (values, source) => {\n const authority = get(values, source)?.find(\n (r) => r.authority && r.authority !== preservedRegistrationNumbers.LinkedIn.authority,\n )?.authority;\n\n return typeof authority === 'string' ? authority : defaultAuthority;\n};\n\nexport const AuthorityRegistrationInput = ({\n orientation = 'horizontal',\n source = 'registrationNumbers',\n isRequired = true,\n}) => {\n const { watch, setValue } = useFormContext();\n const formValues = watch();\n\n const initialAuthority = useMemo(\n () => getInitialAuthority(formValues, source),\n [formValues, source],\n );\n\n const [selectedAuthority, setSelectedAuthority] = useState(() => initialAuthority);\n\n const activeAuthorityEntry = useMemo(() => {\n return (get(formValues, source) || []).find((item) => item.authority === selectedAuthority);\n }, [formValues, source, selectedAuthority]);\n\n const preservedAuthorities = useMemo(() => {\n return (get(formValues, source) || []).filter(\n (r) => r.authority === preservedRegistrationNumbers.LinkedIn.authority,\n );\n }, [formValues, source]);\n\n const isNationalAuthority = selectedAuthority === registrationNumbers.NationalAuthority.authority;\n const isHorizontal = orientation === 'horizontal';\n\n useEffect(() => {\n if (!selectedAuthority || activeAuthorityEntry) {\n return;\n }\n // Create empty entry for the selected authority\n const updated = {\n authority: selectedAuthority,\n number: '',\n ...(isNationalAuthority ? { uri: '' } : {}),\n };\n\n setValue(source, [...preservedAuthorities, updated]);\n }, [\n selectedAuthority,\n source,\n setValue,\n isNationalAuthority,\n preservedAuthorities,\n activeAuthorityEntry,\n ]);\n\n const handleSelectAuthority = (event) => {\n const authority = event.target.value;\n setSelectedAuthority(() => authority);\n };\n\n return (\n <FormControl component=\"fieldset\" fullWidth>\n <RadioGroup\n row={isHorizontal}\n value={selectedAuthority}\n onChange={handleSelectAuthority}\n sx={styles.radioGroup}\n mb={isHorizontal ? 2 : 1}\n >\n {Object.entries(registrationNumbers).map(([key, { label }]) => (\n <FormControlLabel\n key={key}\n value={key}\n control={<Radio />}\n label={\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n {label}\n <Tooltip title={registrationNumbers[key]?.hint || ''}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n }\n />\n ))}\n </RadioGroup>\n\n <Box sx={styles.authorityContainer} flexDirection={isNationalAuthority ? 'row' : 'column'}>\n <ResourceContextProvider value=\"organizations\">\n <ArrayInput\n name=\"authorities\"\n source={source}\n fullWidth\n label={false}\n defaultValue={[{ authority: defaultAuthority, number: '' }]}\n >\n <SimpleFormIterator\n inline={isHorizontal}\n disableAdd\n disableRemove\n disableReordering\n fullWidth\n sx={styles.simpleFormIterator}\n helperText={false}\n >\n <FormDataConsumer>\n {({ scopedFormData }) => {\n if (scopedFormData?.authority !== selectedAuthority) return null;\n return (\n <>\n {isNationalAuthority && (\n <TextInput\n source=\"uri\"\n label=\"Local Country Registration Authority Website\"\n validate={[isRequired && required(), ...validateWebsite]}\n fullWidth\n />\n )}\n\n <TextInput\n source=\"number\"\n label={`${registrationNumbers[selectedAuthority].label}`}\n validate={isRequired && required()}\n fullWidth\n />\n </>\n );\n }}\n </FormDataConsumer>\n </SimpleFormIterator>\n </ArrayInput>\n </ResourceContextProvider>\n </Box>\n </FormControl>\n );\n};\n\nconst styles = {\n radioGroup: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: '16px 32px',\n backgroundColor: '#F5F7FB',\n },\n authorityContainer: {\n marginTop: '1em',\n display: 'flex',\n },\n simpleFormIterator: {\n '& .RaSimpleFormIterator-line > .MuiFormHelperText-root + .MuiFormHelperText-root': {\n display: 'none',\n },\n '& .RaSimpleFormIterator-line': {\n border: 'none',\n },\n },\n};\n// eslint-disable-next-line better-mutation/no-mutation\nAuthorityRegistrationInput.propTypes = {\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n source: PropTypes.string,\n isRequired: PropTypes.bool,\n};\n\nexport default AuthorityRegistrationInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TextInput } from 'react-admin';\nimport { Box, Stack, Tooltip } from '@mui/material';\nimport InfoIcon from '@mui/icons-material/Info';\n\nimport { preservedRegistrationNumbers } from './AuthorityRegistrationInput.jsx';\nimport { Authorities } from '../../../constants/messageCodes.js';\n\nexport const LinkedInRegistrationInput = ({ formData, source = 'registrationNumbers' }) => (\n <Stack flexDirection=\"row\" gap={1.75}>\n <TextInput\n fullWidth\n label={preservedRegistrationNumbers.LinkedIn.label}\n source={source}\n parse={(value) => {\n const existing = formData?.registrationNumbers || [];\n const preserved = existing.filter(\n (item) => item.authority !== preservedRegistrationNumbers.LinkedIn.authority,\n );\n return [\n ...preserved,\n {\n authority: Authorities.LinkedIn,\n number: value || '',\n },\n ];\n }}\n format={(value) => {\n const existing = value || [];\n return (\n existing.find(\n (item) => item.authority === preservedRegistrationNumbers.LinkedIn.authority,\n )?.number || ''\n );\n }}\n />\n <Box mt={2}>\n <Tooltip title={preservedRegistrationNumbers.LinkedIn.hint}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n);\n\n// eslint-disable-next-line better-mutation/no-mutation\nLinkedInRegistrationInput.propTypes = {\n formData: PropTypes.object,\n source: PropTypes.string,\n};\n\nexport default LinkedInRegistrationInput;\n"],"names":[],"mappings":"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"}
|
package/dist/chunks/{LinkedInRegistrationInput.DKRMHYRh.js → LinkedInRegistrationInput.gnYgP1Hf.js}
RENAMED
|
@@ -5,10 +5,10 @@ const PropTypes = require("prop-types");
|
|
|
5
5
|
const reactAdmin = require("react-admin");
|
|
6
6
|
const material = require("@mui/material");
|
|
7
7
|
const InfoIcon = require("@mui/icons-material/Info");
|
|
8
|
-
const
|
|
8
|
+
const lodashEs = require("lodash-es");
|
|
9
9
|
const reactHookForm = require("react-hook-form");
|
|
10
10
|
const index = require("./index.iexmV4Mr.js");
|
|
11
|
-
const
|
|
11
|
+
const CreateOrganizationUtils = require("./CreateOrganizationUtils.C5C_r3Zp.js");
|
|
12
12
|
const constants = require("../constants.cjs");
|
|
13
13
|
const registrationNumbers = {
|
|
14
14
|
DunnAndBradstreet: {
|
|
@@ -36,7 +36,7 @@ const preservedRegistrationNumbers = {
|
|
|
36
36
|
};
|
|
37
37
|
const defaultAuthority = registrationNumbers.DunnAndBradstreet.authority;
|
|
38
38
|
const getInitialAuthority = (values, source) => {
|
|
39
|
-
const authority =
|
|
39
|
+
const authority = lodashEs.get(values, source)?.find(
|
|
40
40
|
(r) => r.authority && r.authority !== preservedRegistrationNumbers.LinkedIn.authority
|
|
41
41
|
)?.authority;
|
|
42
42
|
return typeof authority === "string" ? authority : defaultAuthority;
|
|
@@ -54,17 +54,19 @@ const AuthorityRegistrationInput = ({
|
|
|
54
54
|
);
|
|
55
55
|
const [selectedAuthority, setSelectedAuthority] = React.useState(() => initialAuthority);
|
|
56
56
|
const activeAuthorityEntry = React.useMemo(() => {
|
|
57
|
-
return (
|
|
57
|
+
return (lodashEs.get(formValues, source) || []).find((item) => item.authority === selectedAuthority);
|
|
58
58
|
}, [formValues, source, selectedAuthority]);
|
|
59
59
|
const preservedAuthorities = React.useMemo(() => {
|
|
60
|
-
return (
|
|
60
|
+
return (lodashEs.get(formValues, source) || []).filter(
|
|
61
61
|
(r) => r.authority === preservedRegistrationNumbers.LinkedIn.authority
|
|
62
62
|
);
|
|
63
63
|
}, [formValues, source]);
|
|
64
64
|
const isNationalAuthority = selectedAuthority === registrationNumbers.NationalAuthority.authority;
|
|
65
65
|
const isHorizontal = orientation === "horizontal";
|
|
66
66
|
React.useEffect(() => {
|
|
67
|
-
if (!selectedAuthority || activeAuthorityEntry)
|
|
67
|
+
if (!selectedAuthority || activeAuthorityEntry) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
68
70
|
const updated = {
|
|
69
71
|
authority: selectedAuthority,
|
|
70
72
|
number: "",
|
|
@@ -109,6 +111,7 @@ const AuthorityRegistrationInput = ({
|
|
|
109
111
|
/* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: styles.authorityContainer, flexDirection: isNationalAuthority ? "row" : "column", children: /* @__PURE__ */ jsxRuntime.jsx(reactAdmin.ResourceContextProvider, { value: "organizations", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
110
112
|
reactAdmin.ArrayInput,
|
|
111
113
|
{
|
|
114
|
+
name: "authorities",
|
|
112
115
|
source,
|
|
113
116
|
fullWidth: true,
|
|
114
117
|
label: false,
|
|
@@ -131,7 +134,7 @@ const AuthorityRegistrationInput = ({
|
|
|
131
134
|
{
|
|
132
135
|
source: "uri",
|
|
133
136
|
label: "Local Country Registration Authority Website",
|
|
134
|
-
validate: [isRequired && reactAdmin.required(), ...
|
|
137
|
+
validate: [isRequired && reactAdmin.required(), ...CreateOrganizationUtils.validateWebsite],
|
|
135
138
|
fullWidth: true
|
|
136
139
|
}
|
|
137
140
|
),
|
|
@@ -213,4 +216,4 @@ LinkedInRegistrationInput.propTypes = {
|
|
|
213
216
|
};
|
|
214
217
|
exports.AuthorityRegistrationInput = AuthorityRegistrationInput;
|
|
215
218
|
exports.LinkedInRegistrationInput = LinkedInRegistrationInput;
|
|
216
|
-
//# sourceMappingURL=LinkedInRegistrationInput.
|
|
219
|
+
//# sourceMappingURL=LinkedInRegistrationInput.gnYgP1Hf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkedInRegistrationInput.gnYgP1Hf.js","sources":["../../src/pages/organizations/components/AuthorityRegistrationInput.jsx","../../src/pages/organizations/components/LinkedInRegistrationInput.jsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { get } from 'lodash-es';\nimport { Box, FormControl, FormControlLabel, Radio, RadioGroup, Tooltip } from '@mui/material';\nimport {\n TextInput,\n required,\n ArrayInput,\n SimpleFormIterator,\n ResourceContextProvider,\n FormDataConsumer,\n} from 'react-admin';\nimport InfoIcon from '@mui/icons-material/Info';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { useFormContext } from 'react-hook-form';\nimport {\n DUNS_HINT,\n LEI_HINT,\n NATIONAL_AUTHORITY_HINT,\n LINKEDIN_ORGANIZATION_ID,\n} from '@/utils/index.jsx';\nimport { validateWebsite } from '@/components/organizations/CreateOrganizationUtils.js';\n\nexport const registrationNumbers = {\n DunnAndBradstreet: {\n authority: 'DunnAndBradstreet',\n label: `D-U-N-S${String.fromCodePoint(174)} Number`,\n hint: DUNS_HINT,\n },\n GLEIF: {\n authority: 'GLEIF',\n label: 'LEI',\n hint: LEI_HINT,\n },\n NationalAuthority: {\n authority: 'NationalAuthority',\n label: 'Local Country Registration ID',\n hint: NATIONAL_AUTHORITY_HINT,\n },\n};\n\nexport const preservedRegistrationNumbers = {\n LinkedIn: {\n authority: 'LinkedIn',\n label: 'LinkedIn Company Page ID',\n hint: LINKEDIN_ORGANIZATION_ID,\n },\n};\n\nexport const defaultAuthority = registrationNumbers.DunnAndBradstreet.authority;\n\nconst getInitialAuthority = (values, source) => {\n const authority = get(values, source)?.find(\n (r) => r.authority && r.authority !== preservedRegistrationNumbers.LinkedIn.authority,\n )?.authority;\n\n return typeof authority === 'string' ? authority : defaultAuthority;\n};\n\nexport const AuthorityRegistrationInput = ({\n orientation = 'horizontal',\n source = 'registrationNumbers',\n isRequired = true,\n}) => {\n const { watch, setValue } = useFormContext();\n const formValues = watch();\n\n const initialAuthority = useMemo(\n () => getInitialAuthority(formValues, source),\n [formValues, source],\n );\n\n const [selectedAuthority, setSelectedAuthority] = useState(() => initialAuthority);\n\n const activeAuthorityEntry = useMemo(() => {\n return (get(formValues, source) || []).find((item) => item.authority === selectedAuthority);\n }, [formValues, source, selectedAuthority]);\n\n const preservedAuthorities = useMemo(() => {\n return (get(formValues, source) || []).filter(\n (r) => r.authority === preservedRegistrationNumbers.LinkedIn.authority,\n );\n }, [formValues, source]);\n\n const isNationalAuthority = selectedAuthority === registrationNumbers.NationalAuthority.authority;\n const isHorizontal = orientation === 'horizontal';\n\n useEffect(() => {\n if (!selectedAuthority || activeAuthorityEntry) {\n return;\n }\n // Create empty entry for the selected authority\n const updated = {\n authority: selectedAuthority,\n number: '',\n ...(isNationalAuthority ? { uri: '' } : {}),\n };\n\n setValue(source, [...preservedAuthorities, updated]);\n }, [\n selectedAuthority,\n source,\n setValue,\n isNationalAuthority,\n preservedAuthorities,\n activeAuthorityEntry,\n ]);\n\n const handleSelectAuthority = (event) => {\n const authority = event.target.value;\n setSelectedAuthority(() => authority);\n };\n\n return (\n <FormControl component=\"fieldset\" fullWidth>\n <RadioGroup\n row={isHorizontal}\n value={selectedAuthority}\n onChange={handleSelectAuthority}\n sx={styles.radioGroup}\n mb={isHorizontal ? 2 : 1}\n >\n {Object.entries(registrationNumbers).map(([key, { label }]) => (\n <FormControlLabel\n key={key}\n value={key}\n control={<Radio />}\n label={\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n {label}\n <Tooltip title={registrationNumbers[key]?.hint || ''}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n }\n />\n ))}\n </RadioGroup>\n\n <Box sx={styles.authorityContainer} flexDirection={isNationalAuthority ? 'row' : 'column'}>\n <ResourceContextProvider value=\"organizations\">\n <ArrayInput\n name=\"authorities\"\n source={source}\n fullWidth\n label={false}\n defaultValue={[{ authority: defaultAuthority, number: '' }]}\n >\n <SimpleFormIterator\n inline={isHorizontal}\n disableAdd\n disableRemove\n disableReordering\n fullWidth\n sx={styles.simpleFormIterator}\n helperText={false}\n >\n <FormDataConsumer>\n {({ scopedFormData }) => {\n if (scopedFormData?.authority !== selectedAuthority) return null;\n return (\n <>\n {isNationalAuthority && (\n <TextInput\n source=\"uri\"\n label=\"Local Country Registration Authority Website\"\n validate={[isRequired && required(), ...validateWebsite]}\n fullWidth\n />\n )}\n\n <TextInput\n source=\"number\"\n label={`${registrationNumbers[selectedAuthority].label}`}\n validate={isRequired && required()}\n fullWidth\n />\n </>\n );\n }}\n </FormDataConsumer>\n </SimpleFormIterator>\n </ArrayInput>\n </ResourceContextProvider>\n </Box>\n </FormControl>\n );\n};\n\nconst styles = {\n radioGroup: {\n display: 'flex',\n justifyContent: 'space-between',\n padding: '16px 32px',\n backgroundColor: '#F5F7FB',\n },\n authorityContainer: {\n marginTop: '1em',\n display: 'flex',\n },\n simpleFormIterator: {\n '& .RaSimpleFormIterator-line > .MuiFormHelperText-root + .MuiFormHelperText-root': {\n display: 'none',\n },\n '& .RaSimpleFormIterator-line': {\n border: 'none',\n },\n },\n};\n// eslint-disable-next-line better-mutation/no-mutation\nAuthorityRegistrationInput.propTypes = {\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n source: PropTypes.string,\n isRequired: PropTypes.bool,\n};\n\nexport default AuthorityRegistrationInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { TextInput } from 'react-admin';\nimport { Box, Stack, Tooltip } from '@mui/material';\nimport InfoIcon from '@mui/icons-material/Info';\n\nimport { preservedRegistrationNumbers } from './AuthorityRegistrationInput.jsx';\nimport { Authorities } from '../../../constants/messageCodes.js';\n\nexport const LinkedInRegistrationInput = ({ formData, source = 'registrationNumbers' }) => (\n <Stack flexDirection=\"row\" gap={1.75}>\n <TextInput\n fullWidth\n label={preservedRegistrationNumbers.LinkedIn.label}\n source={source}\n parse={(value) => {\n const existing = formData?.registrationNumbers || [];\n const preserved = existing.filter(\n (item) => item.authority !== preservedRegistrationNumbers.LinkedIn.authority,\n );\n return [\n ...preserved,\n {\n authority: Authorities.LinkedIn,\n number: value || '',\n },\n ];\n }}\n format={(value) => {\n const existing = value || [];\n return (\n existing.find(\n (item) => item.authority === preservedRegistrationNumbers.LinkedIn.authority,\n )?.number || ''\n );\n }}\n />\n <Box mt={2}>\n <Tooltip title={preservedRegistrationNumbers.LinkedIn.hint}>\n <InfoIcon color=\"info\" fontSize=\"small\" cursor=\"pointer\" />\n </Tooltip>\n </Box>\n </Stack>\n);\n\n// eslint-disable-next-line better-mutation/no-mutation\nLinkedInRegistrationInput.propTypes = {\n formData: PropTypes.object,\n source: PropTypes.string,\n};\n\nexport default LinkedInRegistrationInput;\n"],"names":["DUNS_HINT","LEI_HINT","NATIONAL_AUTHORITY_HINT","LINKEDIN_ORGANIZATION_ID","get","useFormContext","useMemo","useState","useEffect","jsxs","FormControl","jsx","RadioGroup","FormControlLabel","Radio","Box","Tooltip","ResourceContextProvider","ArrayInput","SimpleFormIterator","FormDataConsumer","Fragment","TextInput","required","validateWebsite","Stack","Authorities"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import CircularProgress from "@mui/material
|
|
3
|
-
import { Box } from "@mui/material";
|
|
2
|
+
import { Box, CircularProgress } from "@mui/material";
|
|
4
3
|
import PropTypes from "prop-types";
|
|
5
4
|
const Loading = ({ sx = {}, color = "secondary", size = 40 }) => /* @__PURE__ */ jsx(Box, { sx: [defaultSx.loader, sx], children: /* @__PURE__ */ jsx(CircularProgress, { color, size }) });
|
|
6
5
|
Loading.propTypes = {
|
|
@@ -21,4 +20,4 @@ const defaultSx = {
|
|
|
21
20
|
export {
|
|
22
21
|
Loading as L
|
|
23
22
|
};
|
|
24
|
-
//# sourceMappingURL=Loading.
|
|
23
|
+
//# sourceMappingURL=Loading.Bcm3xNJU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loading.Bcm3xNJU.js","sources":["../../src/components/Loading.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, CircularProgress } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nconst Loading = ({ sx = {}, color = 'secondary', size = 40 }) => (\n <Box sx={[defaultSx.loader, sx]}>\n <CircularProgress color={color} size={size} />\n </Box>\n);\n\nexport default Loading;\n\n// eslint-disable-next-line better-mutation/no-mutation\nLoading.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n sx: PropTypes.object,\n color: PropTypes.string,\n size: PropTypes.number,\n};\n\nconst defaultSx = {\n loader: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n },\n};\n"],"names":[],"mappings":";;;AAmBA,MAAM,UAAU,CAAC,EAAE,KAAK,CAAA,GAAI,QAAQ,aAAa,OAAO,GAAA,0BACrD,KAAA,EAAI,IAAI,CAAC,UAAU,QAAQ,EAAE,GAC5B,UAAA,oBAAC,kBAAA,EAAiB,OAAc,KAAA,CAAY,EAAA,CAC9C;AAMF,QAAQ,YAAY;AAAA;AAAA,EAElB,IAAI,UAAU;AAAA,EACd,OAAO,UAAU;AAAA,EACjB,MAAM,UAAU;AAClB;AAEA,MAAM,YAAY;AAAA,EAChB,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,OAAO;AAAA,EAAA;AAEX;"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
-
const CircularProgress = require("@mui/material/CircularProgress");
|
|
4
3
|
const material = require("@mui/material");
|
|
5
4
|
const PropTypes = require("prop-types");
|
|
6
|
-
const Loading = ({ sx = {}, color = "secondary", size = 40 }) => /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: [defaultSx.loader, sx], children: /* @__PURE__ */ jsxRuntime.jsx(CircularProgress, { color, size }) });
|
|
5
|
+
const Loading = ({ sx = {}, color = "secondary", size = 40 }) => /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: [defaultSx.loader, sx], children: /* @__PURE__ */ jsxRuntime.jsx(material.CircularProgress, { color, size }) });
|
|
7
6
|
Loading.propTypes = {
|
|
8
7
|
// eslint-disable-next-line react/forbid-prop-types
|
|
9
8
|
sx: PropTypes.object,
|
|
@@ -20,4 +19,4 @@ const defaultSx = {
|
|
|
20
19
|
}
|
|
21
20
|
};
|
|
22
21
|
exports.Loading = Loading;
|
|
23
|
-
//# sourceMappingURL=Loading.
|
|
22
|
+
//# sourceMappingURL=Loading.cGHE59CV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loading.cGHE59CV.js","sources":["../../src/components/Loading.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, CircularProgress } from '@mui/material';\nimport PropTypes from 'prop-types';\n\nconst Loading = ({ sx = {}, color = 'secondary', size = 40 }) => (\n <Box sx={[defaultSx.loader, sx]}>\n <CircularProgress color={color} size={size} />\n </Box>\n);\n\nexport default Loading;\n\n// eslint-disable-next-line better-mutation/no-mutation\nLoading.propTypes = {\n // eslint-disable-next-line react/forbid-prop-types\n sx: PropTypes.object,\n color: PropTypes.string,\n size: PropTypes.number,\n};\n\nconst defaultSx = {\n loader: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n },\n};\n"],"names":["Box","jsx","CircularProgress"],"mappings":";;;;AAmBA,MAAM,UAAU,CAAC,EAAE,KAAK,CAAA,GAAI,QAAQ,aAAa,OAAO,GAAA,qCACrDA,cAAA,EAAI,IAAI,CAAC,UAAU,QAAQ,EAAE,GAC5B,UAAAC,+BAACC,SAAAA,kBAAA,EAAiB,OAAc,KAAA,CAAY,EAAA,CAC9C;AAMF,QAAQ,YAAY;AAAA;AAAA,EAElB,IAAI,UAAU;AAAA,EACd,OAAO,UAAU;AAAA,EACjB,MAAM,UAAU;AAClB;AAEA,MAAM,YAAY;AAAA,EAChB,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,OAAO;AAAA,EAAA;AAEX;;"}
|
|
@@ -6,7 +6,7 @@ const Box = require("@mui/material/Box");
|
|
|
6
6
|
const material = require("@mui/material");
|
|
7
7
|
const ArrowRightIcon = require("@mui/icons-material/ArrowRight");
|
|
8
8
|
const index = require("./index.iexmV4Mr.js");
|
|
9
|
-
const CustomAppBar = require("./CustomAppBar.
|
|
9
|
+
const CustomAppBar = require("./CustomAppBar.DaXLAwPh.js");
|
|
10
10
|
const sxStyles = {
|
|
11
11
|
menu: {
|
|
12
12
|
width: 180,
|
|
@@ -104,4 +104,4 @@ const MainLayout = (props) => {
|
|
|
104
104
|
};
|
|
105
105
|
exports.MainLayout = MainLayout;
|
|
106
106
|
exports.Menu = Menu;
|
|
107
|
-
//# sourceMappingURL=MainLayout.
|
|
107
|
+
//# sourceMappingURL=MainLayout.BzfaZs8j.js.map
|