@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.
Files changed (131) hide show
  1. package/dist/chunks/{ConsentProvider.DIG3atk-.js → ConsentProvider.6M2ucqXH.js} +3 -3
  2. package/dist/chunks/ConsentProvider.6M2ucqXH.js.map +1 -0
  3. package/dist/chunks/{ConsentProvider.DTG51XMy.js → ConsentProvider.Bbc0preP.js} +2 -2
  4. package/dist/chunks/ConsentProvider.Bbc0preP.js.map +1 -0
  5. package/dist/chunks/{CreateOrganization.utils.C5C_r3Zp.js → CreateOrganizationUtils.C5C_r3Zp.js} +1 -1
  6. package/dist/chunks/CreateOrganizationUtils.C5C_r3Zp.js.map +1 -0
  7. package/dist/chunks/{CreateOrganization.utils.8cSBFSYF.js → CreateOrganizationUtils.Xq78HHkP.js} +7 -7
  8. package/dist/chunks/CreateOrganizationUtils.Xq78HHkP.js.map +1 -0
  9. package/dist/chunks/{CustomAppBar.DuFQqld7.js → CustomAppBar.BOlNFosS.js} +5 -7
  10. package/dist/chunks/CustomAppBar.BOlNFosS.js.map +1 -0
  11. package/dist/chunks/{CustomAppBar.BfQvuTHz.js → CustomAppBar.DaXLAwPh.js} +4 -6
  12. package/dist/chunks/CustomAppBar.DaXLAwPh.js.map +1 -0
  13. package/dist/chunks/{LinkedInRegistrationInput.C-qzrR-S.js → LinkedInRegistrationInput.CmYmSJoq.js} +8 -5
  14. package/dist/chunks/LinkedInRegistrationInput.CmYmSJoq.js.map +1 -0
  15. package/dist/chunks/{LinkedInRegistrationInput.DKRMHYRh.js → LinkedInRegistrationInput.gnYgP1Hf.js} +11 -8
  16. package/dist/chunks/LinkedInRegistrationInput.gnYgP1Hf.js.map +1 -0
  17. package/dist/chunks/{Loading.UJl_3_cf.js → Loading.Bcm3xNJU.js} +2 -3
  18. package/dist/chunks/Loading.Bcm3xNJU.js.map +1 -0
  19. package/dist/chunks/{Loading.DYBk0Ktb.js → Loading.cGHE59CV.js} +2 -3
  20. package/dist/chunks/Loading.cGHE59CV.js.map +1 -0
  21. package/dist/chunks/{MainLayout.CWFkijrE.js → MainLayout.BzfaZs8j.js} +2 -2
  22. package/dist/chunks/{MainLayout.CWFkijrE.js.map → MainLayout.BzfaZs8j.js.map} +1 -1
  23. package/dist/chunks/{MainLayout.6Hq5XQ-L.js → MainLayout.V-ymVxxR.js} +3 -3
  24. package/dist/chunks/{MainLayout.6Hq5XQ-L.js.map → MainLayout.V-ymVxxR.js.map} +1 -1
  25. package/dist/chunks/{OrganizationAvatar.BEwRZ9tC.js → OrganizationAvatar.BXW4diDT.js} +2 -2
  26. package/dist/chunks/{OrganizationAvatar.BEwRZ9tC.js.map → OrganizationAvatar.BXW4diDT.js.map} +1 -1
  27. package/dist/chunks/{OrganizationAvatar.lWcXtbM6.js → OrganizationAvatar.Dgg5VSPI.js} +2 -2
  28. package/dist/chunks/{OrganizationAvatar.lWcXtbM6.js.map → OrganizationAvatar.Dgg5VSPI.js.map} +1 -1
  29. package/dist/chunks/{ServicesEdit.BUAbbXgV.js → ServicesEdit.BnnqC203.js} +3 -3
  30. package/dist/chunks/ServicesEdit.BnnqC203.js.map +1 -0
  31. package/dist/chunks/{ServicesEdit.CrtEcP_7.js → ServicesEdit.DDgjS5kU.js} +2 -2
  32. package/dist/chunks/ServicesEdit.DDgjS5kU.js.map +1 -0
  33. package/dist/chunks/{SetInvitationService.BUZqAilX.js → SetInvitationService.PxAGwk-I.js} +11 -11
  34. package/dist/chunks/SetInvitationService.PxAGwk-I.js.map +1 -0
  35. package/dist/chunks/{SetInvitationService.B0ezxTzf.js → SetInvitationService.ZT5lP003.js} +5 -5
  36. package/dist/chunks/SetInvitationService.ZT5lP003.js.map +1 -0
  37. package/dist/chunks/TermsAndConditionsPdf.Ba8-5Hcm.js.map +1 -1
  38. package/dist/chunks/TermsAndConditionsPdf.ewC7N9Vy.js.map +1 -1
  39. package/dist/chunks/{CreateOrganization.C2Kf44eJ.js → ValidateTextInput.D5kgjulG.js} +328 -14
  40. package/dist/chunks/ValidateTextInput.D5kgjulG.js.map +1 -0
  41. package/dist/chunks/{CreateOrganization.A11-a_8R.js → ValidateTextInput.DEBaVB1L.js} +356 -42
  42. package/dist/chunks/ValidateTextInput.DEBaVB1L.js.map +1 -0
  43. package/dist/chunks/{index.DZOVpocw.js → index.CYCWawJT.js} +6 -6
  44. package/dist/chunks/index.CYCWawJT.js.map +1 -0
  45. package/dist/chunks/{index.DmM8ShwP.js → index.Cmn4FlUL.js} +5 -5
  46. package/dist/chunks/index.Cmn4FlUL.js.map +1 -0
  47. package/dist/chunks/{index.DlFajFTS.js → index.DIizFYFZ.js} +3 -3
  48. package/dist/chunks/index.DIizFYFZ.js.map +1 -0
  49. package/dist/chunks/{index.ZAmuSdK1.js → index.DIur8MCO.js} +4 -4
  50. package/dist/chunks/index.DIur8MCO.js.map +1 -0
  51. package/dist/chunks/{index.Ch4ynES2.js → index.DMWKdmxs.js} +4 -5
  52. package/dist/chunks/index.DMWKdmxs.js.map +1 -0
  53. package/dist/chunks/{index.Dir1xwV4.js → index.DND10PiY.js} +5 -6
  54. package/dist/chunks/index.DND10PiY.js.map +1 -0
  55. package/dist/chunks/{index.Cpod3Il3.js → index.YjnxLFjk.js} +3 -3
  56. package/dist/chunks/index.YjnxLFjk.js.map +1 -0
  57. package/dist/chunks/index.iexmV4Mr.js.map +1 -1
  58. package/dist/chunks/remoteDataProvider.BCiFSYnk.js.map +1 -1
  59. package/dist/chunks/remoteDataProvider.gtTXA1-g.js.map +1 -1
  60. package/dist/chunks/useIsIssuingInspection.C76mY_wb.js.map +1 -1
  61. package/dist/chunks/useIsIssuingInspection.DavhBs5B.js.map +1 -1
  62. package/dist/components/AppBar.cjs +1 -1
  63. package/dist/components/AppBar.js +1 -1
  64. package/dist/components/common.cjs +3 -3
  65. package/dist/components/common.js +3 -3
  66. package/dist/components/invitations.cjs +1 -1
  67. package/dist/components/invitations.js +1 -1
  68. package/dist/components/organizations.cjs +12 -301
  69. package/dist/components/organizations.cjs.map +1 -1
  70. package/dist/components/organizations.js +10 -299
  71. package/dist/components/organizations.js.map +1 -1
  72. package/dist/components/services.cjs +1 -1
  73. package/dist/components/services.js +1 -1
  74. package/dist/components.cjs +2 -2
  75. package/dist/components.js +2 -2
  76. package/dist/index.cjs +3 -3
  77. package/dist/index.cjs.map +1 -1
  78. package/dist/index.js +3 -3
  79. package/dist/index.js.map +1 -1
  80. package/dist/layouts.cjs +1 -1
  81. package/dist/layouts.js +1 -1
  82. package/dist/pages/individuals.cjs +4 -4
  83. package/dist/pages/individuals.cjs.map +1 -1
  84. package/dist/pages/individuals.js +5 -5
  85. package/dist/pages/individuals.js.map +1 -1
  86. package/dist/pages/invitations.cjs +11 -12
  87. package/dist/pages/invitations.cjs.map +1 -1
  88. package/dist/pages/invitations.js +9 -10
  89. package/dist/pages/invitations.js.map +1 -1
  90. package/dist/pages/organizations.cjs +74 -75
  91. package/dist/pages/organizations.cjs.map +1 -1
  92. package/dist/pages/organizations.js +10 -11
  93. package/dist/pages/organizations.js.map +1 -1
  94. package/dist/pages/services.cjs +6 -6
  95. package/dist/pages/services.cjs.map +1 -1
  96. package/dist/pages/services.js +5 -5
  97. package/dist/pages/services.js.map +1 -1
  98. package/dist/pages.cjs +1 -1
  99. package/dist/pages.cjs.map +1 -1
  100. package/dist/pages.js +1 -1
  101. package/dist/pages.js.map +1 -1
  102. package/package.json +12 -9
  103. package/setup-tests.js +31 -0
  104. package/dist/chunks/ConsentProvider.DIG3atk-.js.map +0 -1
  105. package/dist/chunks/ConsentProvider.DTG51XMy.js.map +0 -1
  106. package/dist/chunks/CreateOrganization.A11-a_8R.js.map +0 -1
  107. package/dist/chunks/CreateOrganization.C2Kf44eJ.js.map +0 -1
  108. package/dist/chunks/CreateOrganization.utils.8cSBFSYF.js.map +0 -1
  109. package/dist/chunks/CreateOrganization.utils.C5C_r3Zp.js.map +0 -1
  110. package/dist/chunks/CustomAppBar.BfQvuTHz.js.map +0 -1
  111. package/dist/chunks/CustomAppBar.DuFQqld7.js.map +0 -1
  112. package/dist/chunks/LinkedInRegistrationInput.C-qzrR-S.js.map +0 -1
  113. package/dist/chunks/LinkedInRegistrationInput.DKRMHYRh.js.map +0 -1
  114. package/dist/chunks/Loading.DYBk0Ktb.js.map +0 -1
  115. package/dist/chunks/Loading.UJl_3_cf.js.map +0 -1
  116. package/dist/chunks/OrganisationSubmitButton.D32qynh9.js +0 -40
  117. package/dist/chunks/OrganisationSubmitButton.D32qynh9.js.map +0 -1
  118. package/dist/chunks/OrganisationSubmitButton.D3w1nG1X.js +0 -41
  119. package/dist/chunks/OrganisationSubmitButton.D3w1nG1X.js.map +0 -1
  120. package/dist/chunks/ServicesEdit.BUAbbXgV.js.map +0 -1
  121. package/dist/chunks/ServicesEdit.CrtEcP_7.js.map +0 -1
  122. package/dist/chunks/SetInvitationService.B0ezxTzf.js.map +0 -1
  123. package/dist/chunks/SetInvitationService.BUZqAilX.js.map +0 -1
  124. package/dist/chunks/index.Ch4ynES2.js.map +0 -1
  125. package/dist/chunks/index.Cpod3Il3.js.map +0 -1
  126. package/dist/chunks/index.DZOVpocw.js.map +0 -1
  127. package/dist/chunks/index.Dir1xwV4.js.map +0 -1
  128. package/dist/chunks/index.DlFajFTS.js.map +0 -1
  129. package/dist/chunks/index.DmM8ShwP.js.map +0 -1
  130. package/dist/chunks/index.ZAmuSdK1.js.map +0 -1
  131. 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.UJl_3_cf.js";
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.ZAmuSdK1.js";
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.DIG3atk-.js.map
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":";;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,YAAY,MAAM;AACtB,QAAM,WAAW,YAAA;AACjB,QAAM,CAAC,GAAG,IAAI,wBAAA;AAEd,YAAU,MAAM;AACd,QAAI,CAAC,KAAK;AACR;AAAA,IACF;AACA,aAAS,QAAQ,iBAAiB,GAAG;AAAA,EACvC,GAAG,CAAC,KAAK,QAAQ,CAAC;AAElB,6BAAQ,SAAA,EAAQ,IAAI,EAAE,IAAI,UAAU;AACtC;ACXA,MAAM,SAAS,MAAM;AACnB,SACE,qBAAC,UAAA,EAAO,OAAO,OAAO,QACpB,UAAA;AAAA,IAAA,qBAAC,QAAK,IAAI,OAAO,MAAM,WAAU,OAAM,cAAW,qBAChD,UAAA;AAAA,MAAA,oBAAC,kBAAe,UAAQ,MACtB,UAAA,oBAAC,cAAA,EAAa,WAAW,EAAE,SAAS,EAAE,IAAI,OAAO,SAAA,EAAS,GAAK,SAAQ,cAAa,GACtF;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS,MAAM,OAAO,KAAK,GAAG,OAAO,SAAS,MAAM,yBAAyB,QAAQ;AAAA,UAErF,UAAA,oBAAC,cAAA,EAAa,WAAW,EAAE,SAAS,EAAE,IAAI,OAAO,SAAA,KAAc,SAAQ,eAAA,CAAe;AAAA,QAAA;AAAA,MAAA;AAAA,MAExF;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS,MAAM,OAAO,KAAK,GAAG,OAAO,SAAS,MAAM,mBAAmB,QAAQ;AAAA,UAE/E,UAAA,oBAAC,cAAA,EAAa,WAAW,EAAE,SAAS,EAAE,IAAI,OAAO,SAAA,KAAc,SAAQ,iBAAA,CAAiB;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1F,GACF;AAAA,IACA,qBAAC,OAAA,EAAI,OAAO,OAAO,MAAM,UAAA;AAAA,MAAA;AAAA,OACF,oBAAI,KAAA,GAAO,YAAA;AAAA,MAChC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAI;AAAA,UACJ,KAAI;AAAA,UACJ,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,OAAO,OAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AAIA,MAAM,SAAS;AAAA,EACb,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,iBAAiB,MAAM,QAAQ,WAAW;AAAA,IAC1C,WAAW,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAAA;AAAA,EAEpD,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,OAAO,MAAM,QAAQ,UAAU;AAAA,EAAA;AAAA,EAEjC,UAAU;AAAA,IACR,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,YAAY,MAAM,WAAW;AAAA,EAAA;AAAA,EAE/B,MAAM;AAAA,IACJ,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,OAAO,MAAM,QAAQ,UAAU;AAAA,IAC/B,YAAY,MAAM,WAAW;AAAA,EAAA;AAAA,EAE/B,MAAM;AAAA,IACJ,eAAe;AAAA,IACf,OAAO,MAAM,QAAQ,UAAU;AAAA,IAC/B,aAAa;AAAA,IACb,QACE;AAAA;AAAA,EAAA;AAEN;ACxEA,MAAM,kBAAkB,CAAC,EAAE,SAAS,QAAQ,WAAW,OAAO,iBAAiB;AAC7E,SACE,oBAAC,OAAA,EAAM,OAAc,SAAkB,QAAgB,aAAa,GAAG,OACrE,UAAA,qBAAC,OAAA,EAAM,gBAAe,UAAS,IAAG,OAChC,UAAA;AAAA,IAAA,qBAAC,YAAA,EAAW,WAAU,UAAS,UAAA;AAAA,MAAA;AAAA,MACQ;AAAA,MACrC,oBAAC,MAAA,EAAK,QAAO,UAAS,IAAG,yBAAwB,MAAK,QAAO,OAAO,GAAG,MAAM,UAAA,eAAA,CAE7E;AAAA,IAAA,GACF;AAAA,IACA,qBAAC,KAAA,EAAI,IAAI,GAAG,KACV,UAAA;AAAA,MAAA,oBAAC,QAAA,EAAO,SAAS,WAAW,SAAQ,YAAW,IAAI,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAS,MAAC,UAAA,WAEtF;AAAA,MACA,oBAAC,QAAA,EAAO,SAAS,YAAY,SAAQ,YAAW,IAAI,GAAG,QAAQ,SAAS,oBAAC,UAAA,CAAA,CAAS,GAAI,UAAA,eAAA,CAEtF;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AAEA,MAAM,KAAK;AAAA,EACT,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,gBAAgB;AAAA,MACd,IAAI;AAAA,IAAA;AAAA,IAEN,OAAO,MAAM,QAAQ,QAAQ;AAAA,IAC7B,aAAa,MAAM,QAAQ,QAAQ;AAAA,IACnC,WAAW;AAAA,MACT,aAAa,MAAM,QAAQ,QAAQ;AAAA,IAAA;AAAA,EACrC;AAAA,EAEF,KAAK;AAAA,IACH,SAAS;AAAA,IACT,gBAAgB;AAAA,EAAA;AAAA,EAElB,MAAM,EAAE,OAAO,MAAM,QAAQ,QAAQ,KAAA;AAAA,EACrC,OAAO,EAAE,WAAW,SAAA;AAAA,EACpB,SAAS;AAAA,IACP,OAAO,MAAM,QAAQ,KAAK;AAAA,IAC1B,aAAa,MAAM,QAAQ,UAAU;AAAA,IACrC,WAAW;AAAA,MACT,aAAa,MAAM,QAAQ,UAAU;AAAA,IAAA;AAAA,EACvC;AAEJ;AAGA,gBAAgB,YAAY;AAAA,EAC1B,SAAS,UAAU;AAAA,EACnB,WAAW,UAAU;AAAA,EACrB,QAAQ,UAAU;AAAA,EAClB,OAAO,UAAU;AAAA,EACjB,YAAY,UAAU;AACxB;AC1DA,MAAM,eAAe,CAAC,gBAAgB,yBAAyB,eAAe;AAE9E,MAAM,kBAAkB,CAAC,EAAE,eAAe;AACxC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,IAAI;AACvD,QAAM,CAAC,6BAA6B,8BAA8B,IAAI,SAAS,KAAK;AACpF,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,KAAK;AAChE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,EAAE,QAAQ,eAAA,IAAmB,QAAA;AACnC,QAAM,SAAS,UAAA;AAEf,YAAU,MAAM;AACd,UAAM,mBAAmB,CAAC,UAAU;AAClC,YAAM,eAAe,SAAS,KAAK;AACnC,aAAO,aAAa,MAAM,SAAS,oBAAoB;AAAA,IACzD;AACA,UAAM,gBAAgB,CAAC,UAAU;AAC/B,YAAM,eAAe,iBAAiB,KAAK;AAC3C,mBAAa,IAAI;AACjB,uBAAiB,EAAE;AACnB,qCAA+B,YAAY;AAC3C,2BAAqB,YAAY;AACjC,mBAAa,KAAK;AAAA,IACpB;AACA,UAAM,qBAAqB,CAAC,SAAS;AACnC,YAAM,iBAAiB,CAAC,GAAG,IAAI,EAAE;AAAA,QAC/B,CAAC,UAAU,aAAa,IAAI,KAAK,SAAS,OAAO,IAAI,IAAI,KAAK,SAAS,OAAO;AAAA,MAAA;AAEhF,YAAM,oBAAoB,eAAe,CAAC,EAAE;AAC5C,uBAAiB,iBAAiB;AAElC,UAAI,oBAAoB,8BAA8B;AACpD,uCAA+B,IAAI;AAAA,MACrC;AAAA,IACF;AAEA,UAAM,qBAAqB,CAAC,MAAM;AAChC,UAAI,EAAE,SAAS,aAAa,SAAS,EAAE,KAAK,GAAG;AAC7C,eAAO,EAAE,cAAc,EAAE,UAAU,OAAO,SAAS,OAAA,GAAU;AAAA,MAC/D;AAAA,IACF;AAEA,KAAC,YAAY;AACX,UAAI;AACF,cAAM,QAAQ,MAAM,eAAA;AACpB,qBAAa,IAAI;AACjB,cAAM,WAAW,MAAM,MAAM,GAAG,OAAO,YAAY,IAAI,cAAc,QAAQ,IAAI;AAAA,UAC/E,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,QAAQ;AAAA,YACR,eAAe,UAAU,KAAK;AAAA,UAAA;AAAA,QAChC,CACD;AACD,cAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,YAAI,KAAK,OAAO;AACd,6BAAmB,IAAI;AAAA,QACzB,WAAW,CAAC,QAAQ,KAAK,WAAW,GAAG;AACrC,wBAAc,KAAK;AAAA,QACrB,OAAO;AACL,6BAAmB,IAAI;AAAA,QACzB;AAEA,qBAAa,KAAK;AAAA,MACpB,SAAS,GAAG;AACV,2BAAmB,CAAC;AACpB,qBAAa,KAAK;AAClB,uCAA+B,KAAK;AAAA,MACtC;AAAA,IACF,GAAA;AAAA,EACF,GAAG,CAAC,gBAAgB,QAAQ,OAAO,cAAc,MAAM,CAAC;AAExD,QAAM,wBAAwB,YAAY;AACxC,QAAI;AACF,YAAM,QAAQ,MAAM,eAAA;AACpB,YAAM,MAAM,GAAG,OAAO,YAAY,IAAI,cAAc,QAAQ,IAAI;AAAA,QAC9D,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,QAAQ;AAAA,UACR,eAAe,UAAU,KAAK;AAAA,QAAA;AAAA,QAEhC,MAAM,KAAK,UAAU;AAAA,UACnB,SAAS;AAAA,QAAA,CACV;AAAA,MAAA,CACF;AACD,uBAAiB,4BAA4B;AAC7C,qCAA+B,KAAK;AAAA,IACtC,SAAS,GAAG;AACV,cAAQ,MAAM,eAAe,CAAC;AAAA,IAChC;AAAA,EACF;AAEA,QAAM,YAAY,QAAQ,MAAM;AAC9B,UAAM,mBAAmB,YAAY,oBAAoB;AACzD,WACE,CAAC,aAAa,gCAAgC,SAAS,iBAAiB,CAAC;AAAA,EAE7E,GAAG,CAAC,WAAW,mBAAmB,WAAW,6BAA6B,aAAa,CAAC;AAExF,QAAM,cAAc,YAAY,YAAY;AAC1C,UAAM,OAAO,MAAM,wBAAK,uBAAA,CAAA,CAAsB,CAAE,EAAE,OAAA;AAClD,UAAM,OAAO,SAAS,cAAc,GAAG;AACvC,SAAK,aAAa,QAAQ,IAAI,gBAAgB,IAAI,CAAC;AACnD,SAAK,aAAa,YAAY,sBAAsB;AACpD,aAAS,KAAK,OAAO,IAAI;AAEzB,SAAK,MAAA;AACL,SAAK,OAAA;AAAA,EACP,GAAG,CAAA,CAAE;AACL,SACE,qBAAA,UAAA,EACG,UAAA;AAAA,IAAA,aAAa;AAAA,IACb,aAAa,oBAAC,SAAA,EAAQ,IAAI,EAAE,IAAI,UAAU;AAAA,IAC3C;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,SAAS,MAAM;AACb,iBAAA;AAAA,QACF;AAAA,QACA,WAAW;AAAA,QACX,OAAO,YAAY,iBAAiB;AAAA,QACpC,YAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EACd,GACF;AAEJ;AAKA,gBAAgB,YAAY;AAAA,EAC1B,UAAU,UAAU;AACtB;"}
@@ -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.DYBk0Ktb.js");
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.DTG51XMy.js.map
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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"}
@@ -27,4 +27,4 @@ exports.validateName = validateName;
27
27
  exports.validateServiceEndpoint = validateServiceEndpoint;
28
28
  exports.validateWebsite = validateWebsite;
29
29
  exports.validateWebsiteStrict = validateWebsiteStrict;
30
- //# sourceMappingURL=CreateOrganization.utils.C5C_r3Zp.js.map
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;;;;;;"}
@@ -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.ZAmuSdK1.js";
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
- validateWebsite as a,
26
- validateWebsiteStrict as b,
27
- validateEmail as c,
28
- validateServiceEndpoint as d,
29
- validateName as v
25
+ validateWebsiteStrict as a,
26
+ validateName as b,
27
+ validateServiceEndpoint as c,
28
+ validateEmail as d,
29
+ validateWebsite as v
30
30
  };
31
- //# sourceMappingURL=CreateOrganization.utils.8cSBFSYF.js.map
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/AppBar";
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.lWcXtbM6.js";
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.ZAmuSdK1.js";
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.UJl_3_cf.js";
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.DuFQqld7.js.map
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.BEwRZ9tC.js");
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.DYBk0Ktb.js");
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.BfQvuTHz.js.map
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":"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"}
@@ -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, e as LEI_HINT, D as DUNS_HINT } from "./index.ZAmuSdK1.js";
10
- import { a as validateWebsite } from "./CreateOrganization.utils.8cSBFSYF.js";
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) return;
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.C-qzrR-S.js.map
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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"}
@@ -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 lodash = require("lodash");
8
+ const lodashEs = require("lodash-es");
9
9
  const reactHookForm = require("react-hook-form");
10
10
  const index = require("./index.iexmV4Mr.js");
11
- const CreateOrganization_utils = require("./CreateOrganization.utils.C5C_r3Zp.js");
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 = lodash.get(values, source)?.find(
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 (lodash.get(formValues, source) || []).find((item) => item.authority === selectedAuthority);
57
+ return (lodashEs.get(formValues, source) || []).find((item) => item.authority === selectedAuthority);
58
58
  }, [formValues, source, selectedAuthority]);
59
59
  const preservedAuthorities = React.useMemo(() => {
60
- return (lodash.get(formValues, source) || []).filter(
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) return;
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(), ...CreateOrganization_utils.validateWebsite],
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.DKRMHYRh.js.map
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/CircularProgress";
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.UJl_3_cf.js.map
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.DYBk0Ktb.js.map
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.BfQvuTHz.js");
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.CWFkijrE.js.map
107
+ //# sourceMappingURL=MainLayout.BzfaZs8j.js.map