{"version":3,"sources":["components/ErrorFallback/ErrorFallback.tsx","components/CustomLoader/CustomLoader.tsx","components/Content/Content.tsx","config/string.ts","recoil/auth/atom.js","helpers/useRequest.js","config/apiEndpoints.ts","services/authService.ts","constants/userRoles.js","helpers/useAuth.js","components/LoginButton/LoginButton.tsx","config/queryEnums.ts","helpers/useMessages.tsx","services/organisationService.ts","components/Header/Header.tsx","helpers/useLogo.js","assets/NCVIB.png","components/MessageToast/MessageToast.tsx","config/header.ts","components/PageContent/PageContent.tsx","services/officeService.ts","services/projectService.ts","services/userService.ts","pages/IndexPage/DashItem/DashItem.tsx","pages/IndexPage/Dashboard/Dashboard.tsx","pages/IndexPage/IndexPage.tsx","config/FormValidations.ts","pages/LoginPage/LoginForm/LoginForm.tsx","pages/LoginPage/LoginError/LoginError.tsx","components/DeleteButton/DeleteButton.tsx","components/DisplayItem/DisplayItem.tsx","components/EditButton/EditButton.tsx","pages/OfficePage/OfficeItem/OfficeItem.tsx","pages/OfficePage/OfficeForm/OfficeForm.tsx","components/ConfirmationModal/ConfirmationModal.tsx","components/EditEntityModal/EditEntityModal.tsx","pages/OfficePage/EditOfficeModal/EditOfficeModal.tsx","pages/OfficePage/DeleteOfficeModal/DeleteOfficeModal.tsx","pages/OfficePage/AddOfficeModal/AddOfficeModal.tsx","pages/OfficePage/OfficeCrudModals/OfficeCrudModals.tsx","components/AddEntityButton/AddEntityButton.tsx","pages/OfficePage/OfficesContainer/OfficesContainer.tsx","services/folderService.ts","pages/ProjectPage/ProjectForm/ProjectForm.tsx","pages/ProjectPage/EditProjectModal/EditProjectModal.tsx","pages/ProjectPage/AddProjectModal/AddProjectModal.tsx","pages/ProjectPage/DeleteProjectModal/DeleteProjectModal.tsx","pages/ProjectPage/ProjectCrudModals/ProjectCrudModals.tsx","pages/ProjectPage/ProjectItem/ProjectItem.tsx","pages/ProjectPage/ProjectsContainer/ProjectsContainer.tsx","pages/UserPage/UserItem/UserItem.tsx","config/roles.ts","pages/UserPage/UserForm/UserForm.tsx","pages/UserPage/EditUserModal/EditUserModal.tsx","pages/UserPage/DeleteUserModal/DeleteUserModal.tsx","pages/UserPage/AddUserModal/AddUserModal.tsx","pages/UserPage/UserCrudModals/UserCrudModals.tsx","pages/UserPage/UsersContainer/UsersContainer.tsx","pages/FolderPage/FolderForm/FolderForm.tsx","pages/FolderPage/AddFolderModal/AddFolderModal.tsx","pages/FolderPage/EditFolderModal/EditFolderModal.tsx","pages/FolderPage/DeleteFolderModal/DeleteFolderModal.tsx","pages/FolderPage/FolderCrudModals/FolderCrudModals.tsx","pages/FolderPage/FolderItem/FolderItem.tsx","pages/FolderPage/FoldersContainer/FoldersContainer.tsx","components/BackButton/BackButton.tsx","pages/FolderDetailPage/FolderDetailContainer/FolderDetailContainer.tsx","pages/OfficeDetailPage/OfficeDetailContainer/OfficeDetailContainer.tsx","pages/ResetPasswordPage/ResetPasswordForm/ResetPasswordForm.tsx","pages/SendResetPasswordTokenPage/ResetPasswordTokenForm/ResetPasswordTokenForm.tsx","pages/OrganisationPage/OrganisationItem/OrganisationItem.tsx","pages/OrganisationPage/OrganisationForm/OrganisationForm.tsx","pages/OrganisationPage/EditOrganisationModal/EditOrganisationModal.tsx","pages/OrganisationPage/DeleteOrganisationModal/DeleteOrganisationModal.tsx","pages/OrganisationPage/AddOrganisationModal/AddOrganisationModal.tsx","pages/OrganisationPage/OrganisationCrudModals/OrganisationCrudModals.tsx","pages/OrganisationPage/OrganisationContainer/OrganisationContainer.tsx","pages/OrganisationDetailPage/OrganisationDetailContainer/OrganisationDetailContainer.tsx","config/routes.ts","pages/ResetPasswordPage/ResetPasswordPage.tsx","pages/SendResetPasswordTokenPage/SendResetPasswordTokenPage.tsx","pages/OfficePage/OfficePage.tsx","pages/OfficeDetailPage/OfficeDetailPage.tsx","pages/OrganisationPage/OrganisationPage.tsx","pages/OrganisationDetailPage/OrganisationDetailPage.tsx","pages/ProjectPage/ProjectPage.tsx","pages/UserPage/UserPage.tsx","pages/FolderPage/FolderPage.tsx","pages/FolderDetailPage/FolderDetailPage.tsx","pages/LoginPage/LoginPage.tsx","components/SideBar/SideBar.tsx","components/Layout/Layout.tsx","App.tsx","config/queryClient.ts","index.tsx"],"names":["ErrorFallback","_ref","error","resetErrorBoundary","location","useLocation","_useState","useState","_useState2","_slicedToArray","hasError","setHasError","useEffect","_jsx","Container","fluid","className","children","_jsxs","message","Button","onClick","CustomLoader","Loader","type","color","height","width","Content","reset","useQueryErrorResetBoundary","ErrorBoundary","onReset","FallbackComponent","Suspense","fallback","strings","authAtom","atom","key","default","JSON","parse","localStorage","getItem","messageAtom","useRequest","_useRecoilState","useRecoilState","_useRecoilState2","auth","setAuth","request","method","url","body","overrideUrl","arguments","length","undefined","formData","requestOptions","headers","authHeader","hooks","afterResponse","_asyncToGenerator","_regeneratorRuntime","mark","_callee","options","response","user","wrap","_context","prev","next","status","ky","post","concat","process","id","json","sent","isAuthenticated","set","token","abrupt","removeItem","stop","_x","_x2","_x3","apply","stringify","_fetch","Authorization","_ref2","_callee2","_url","data","_context2","_x4","_x5","_x6","get","put","_delete","api","Roles","Admin","User","useAuth","useSetRecoilState","useRecoilValue","history","useHistory","loginUser","useMutation","useAuthLogin","mutateAsync","refresh","useRefreshToken","login","email","password","loginError","then","roles","some","role","onSuccess","setItem","refreshToken","logout","push","checkToken","_ref3","_callee3","decoded","_context3","jwt_decode","refreshTokenExpiration","exp","Date","getTime","result","orgId","organizationId","LoginButton","_useAuth","variant","FontAwesomeIcon","icon","faSignOutAlt","_Fragment","queryEnums","useMessage","setMessage","sendUpdated","entity","sendAdded","sendRemoved","sendCustom","useGetOrganisationById","useQuery","enabled","Header","_useLogo","_useGetOrganisationBy","org","isLoading","logo","useLogo","Row","Col","Navbar","bg","src","alt","style","objectFit","marginLeft","MessageToast","show","setShow","text","setText","Toast","onClose","delay","autohide","Body","header","userSideBarHeader","PageContent","title","useGetAllOffices","useGetOfficeById","useGetOfficesByUserId","useGetAllProjectsByUser","useGetAllProjectStatus","staleTime","useGetAllUsers","DashItem","count","size","Dashboard","users","offices","projects","faBuilding","faProjectDiagram","faUsers","IndexPage","UserFormValidationSchema","yup","userName","trim","required","matches","max","ProjectFormValidationSchema","name","folderId","description","officeId","projectStatusId","OfficeFormValidationSchema","OrganisationFormValidationSchema","organization","shape","FolderFormValidationSchema","LoginFormValidationSchema","ResetPasswordFormValidationSchema","ResetPasswordTokenFormValidationSchema","LoginForm","_errors$email","_errors$password","onSubmit","_useForm","useForm","resolver","yupResolver","register","handleSubmit","errors","formState","Form","Group","Label","Control","_objectSpread","pattern","placeholder","autoComplete","Text","LoginError","DeleteButton","faTrash","DisplayItem","Card","EditButton","faEdit","OfficeItem","office","onClickEdit","onClickDelete","onClickFolders","Title","Subtitle","Footer","OfficeForm","_errors$name","_errors$description","as","column","sm","defaultValue","maxLength","ConfirmationModal","handleClose","handleConfirmation","Modal","onHide","backdrop","keyboard","closeButton","EditEntityModal","onUpdate","entityForm","inputData","Object","assign","handleModalClose","EditOfficeModal","updateOffice","queryClient","useQueryClient","_result","invalidateQueries","useUpdateOffice","mutate","DeleteOfficeModal","deleteOffice","useDeleteOffice","AddOfficeModal","_useAddOffice","useAddOffice","addOffice","item","createdBy","OfficeCrudModals","showAdd","onAddClose","showEdit","onEditClose","showDelete","onDeleteClose","AddEntityButton","OfficesContainer","selectedOfficeId","setSelectedOfficeId","_useState3","_useState4","setShowEdit","_useState5","_useState6","setShowAdd","_useState7","_useState8","setShowDelete","xs","lg","xl","map","index","useGetAllFolders","useGetFolderById","ProjectForm","_errors$officeId","_errors$folderId","_errors$projectStatus","project","projectStatus","folders","setValue","filter","x","folderData","setFolderData","handleSelectOnChange","target","value","Select","onChange","label","officeName","EditProjectModal","projectId","updateProject","useUpdateProject","useGetProjectById","defaultValues","projectTempId","userOffices","userByRoles","AddProjectModal","_useAddProject","useAddProject","addProject","DeleteProjectModal","deleteProject","useDeleteProject","ProjectCrudModals","ProjectItem","Badge","faFolderOpen","folderName","ProjectsContainer","setProjectId","UserItem","ROLES","superAdmins","UserForm","_errors$userName","_errors$role","_errors$offices","selected","setSelected","controlId","readOnly","MultiSelect","labelledBy","EditUserModal","userId","useGetUserById","updateUser","useUpdateUser","DeleteUserModal","deleteUser","useDeleteUser","AddUserModal","_useAddUser","useAddUser","addUser","responseError","setResoponseError","includes","UserCrudModals","UsersContainer","selectedUserId","setSelectedUserId","FolderForm","folder","AddFolderModal","_useAddFolder","useAddFolder","addFolder","EditFolderModal","updateFolder","useUpdateFolder","DeleteFolderModal","deleteFolder","useDeleteFolder","FolderCrudModals","FolderItem","onClickProjects","FoldersContainer","setFolderId","BackButton","faArrowLeft","FolderDetailContainer","useGetProjectsByFolderId","OfficeDetailContainer","useGetFolderByOfficeId","ResetPasswordForm","ResetPasswordTokenForm","OrganisationItem","organisation","OrganisationForm","_createOrganisationDT","_errors$name2","_errors$description2","_errors$defaultUser","_errors$defaultUser$e","createOrganisationDTO","create","console","log","organizationNumber","toString","event","file","files","split","pop","Blob","alert","defaultUser","EditOrganisationModal","organisationId","_useUpdateOrganisatio","prom","objects","FormData","append","fromEntries","useUpdateOrganisation","updateOrganisation","organizationDto","setTimeout","DeleteOrganisationModal","deleteorganisation","useDeleteOrganisation","AddOrganisationModal","_useAddOrganisation","_organisation$default","_organisation$default2","values","Organisation","useAddOrganisation","addOrganisation","OrganisationCrudModals","OrganisationContainer","useGetAllOrganisations","selectedOrganisationId","setSelectedOrganisationId","OrganisationDetailContainer","useGetFolderByOrganisationId","routes","path","component","exact","protected","resetpassword","arg","onError","useSendPasswordReset","queryParams","URLSearchParams","search","rawToken","URL","window","href","decodedToken","decodeURIComponent","e","resetpasswordtoken","useSendPasswordResetEmaill","dashboard","officeDetail","useParams","organisations","toLowerCase","organisationDetail","folderDetail","loggedIn","setLoggedIn","loading","setLoading","SideBar","filteredHeader","Nav","NavLink","to","Layout","md","App","BrowserRouter","Switch","entries","Route","render","Redirect","pathname","QueryClient","defaultOptions","queries","retry","suspense","ReactDOM","React","StrictMode","QueryClientProvider","client","RecoilRoot","document","getElementById"],"mappings":"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","file":"static/js/main.a10d54df.chunk.js","sourcesContent":["import { useEffect, useState } from \"react\";\nimport { Button, Container } from \"react-bootstrap\";\nimport { useLocation } from \"react-router-dom\";\n\ntype Props = {\n error: any;\n resetErrorBoundary: () => void;\n};\n\nexport const ErrorFallback = ({ error, resetErrorBoundary }: Props) => {\n const location = useLocation();\n const [hasError, setHasError] = useState(null);\n\n useEffect(() => {\n if (error && !hasError) {\n setHasError(error);\n } else if (error && hasError) {\n setHasError(null);\n resetErrorBoundary();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location]);\n\n return (\n \n
\n
Something went wrong.
\n
\n Error: {error.message}\n
\n \n
\n
\n );\n};\n","import Loader from \"react-loader-spinner\";\nimport \"react-loader-spinner/dist/loader/css/react-spinner-loader.css\";\n\nexport const CustomLoader = () => {\n return (\n
\n \n
\n );\n};\n","import { ReactNode } from \"react\";\nimport { Suspense } from \"react\";\nimport { Container } from \"react-bootstrap\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { ErrorFallback } from \"../ErrorFallback/ErrorFallback\";\nimport { CustomLoader } from \"../CustomLoader/CustomLoader\";\nimport { useQueryErrorResetBoundary } from \"react-query\";\n\ntype Props = {\n children?: ReactNode;\n};\n\nexport const Content = ({ children }: Props) => {\n const { reset } = useQueryErrorResetBoundary();\n return (\n \n \n }>{children}\n \n \n );\n};\n","export const strings = {\n //Pages titles\n loginPage: \"Sign in\",\n userPage: \"Manage users\",\n projectPage: \"Manage projects\",\n officePage: \"Manage offices\",\n organisationPage: \"Manage organisations\",\n folderPage: \"Manage folders\",\n indexPage: \"Welcome\",\n folderDetailPage: \"Manage Folder Detail\",\n\n //LoginPage\n login: \"Sign in\",\n logout: \"Sign out\",\n loginDisclaimer: \"Sign in with your admin account.\",\n loginButton: \"Sign in\",\n loginPassword: \"Password\",\n loginEmail: \"E-mail\",\n\n //UserPage\n addNewUser: \"Add new user\",\n userFormDisclaimer: \"Create a unique username, ie firstname.lastname\",\n newUserModalMessage: \"Enter user data below\",\n newUserModalTitle: \"Add new user\",\n editUserModalMessage: \"Edit user data below\",\n editUserModalTitle: \"Edit user\",\n deleteUserModalTitle: \"Delete user\",\n deleteUserModalMessage: \"Are you sure you want to delete this user? This action can not be un-done.\",\n\n //ProjectPage\n addNewProject: \"Add new project\",\n newProjectModalTitle: \"Add new project\",\n newProjectModalMessage: \"Input project data below\",\n editProjectModalMessage: \"Edit project data below\",\n editProjectModalTitle: \"Edit project\",\n deleteProjectModalTitle: \"Delete project\",\n deleteProjectModalMessage: \"Are you sure you want to delete this project? This action can not be un-done.\",\n\n //OfficePage\n addNewOffice: \"Add new office\",\n newOfficeModalMessage: \"Enter office data below\",\n newOfficeModalTitle: \"Add new office\",\n editOfficeModalMessage: \"Edit office details below\",\n editOfficeModalTitle: \"Edit office\",\n deleteOfficeModalTitle: \"Delete office\",\n deleteOfficeModalMessage: \"Are you sure you want to delete this office? This action can not be un-done.\",\n showFolders: \"Show folders\",\n\n //OrganisationPage\n addNewOrganisation: \"Add new organisation\",\n newOrganisationModalMessage: \"Enter organisation data below\",\n newOrganisationModalTitle: \"Add new organisation\",\n editOrganisationModalMessage: \"Edit organisation details below\",\n editOrganisationModalTitle: \"Edit organisation\",\n deleteOrganisationModalTitle: \"Delete organisation\",\n deleteOrganisationModalMessage: \"Are you sure you want to delete this organisation? This action can not be un-done.\",\n\n //FolderPage\n addNewFolder: \"Add new folder\",\n newFolderModalTitle: \"Add new folder\",\n newFolderModalMessage: \"Input folder data below\",\n editFolderModalMessage: \"Edit folder data below\",\n editFolderModalTitle: \"Edit folder\",\n deleteFolderModalTitle: \"Delete folder\",\n deleteFolderModalMessage: \"Are you sure you want to delete this folder? This action can not be un-done.\",\n showProjects: \"Show projects\",\n back: \"Back\",\n\n //Confirmation Modal\n confirmationModalAccept: \"Confirm\",\n confirmationModalClose: \"Cancel\",\n\n //Form labels\n formFieldName: \"Name\",\n formFieldEmail: \"E-mail\",\n formFieldOffice: \"Office\",\n formFieldOganisation: \"Organisation\",\n formFieldRole: \"Role\",\n formFieldDesc: \"Desc\",\n formFieldFolderName: \"Folder\",\n formFieldProjectNumber: \"Project number\",\n formFieldProjectStatus: \"Project status\",\n\n //Form placeholders\n formPlaceholderName: \"Enter name\",\n formPlaceholderEmail: \"Enter e-mail\",\n formPlaceholderOffice: \"Select office\",\n formPlaceholderOrganisation: \"Select organisation\",\n formPlaceholderRole: \"Select role\",\n formPlaceholderDesc: \"Enter desc\",\n formPlaceholderFolderName: \"Select folder\",\n formPlaceholderProjectNumber: \"Enter project number\",\n formPlaceholderProjectStatus: \"Select project status\",\n\n //Validation error messages\n loginError: \"You have entered an invalid username or password.\",\n loginRoleError: \"Your role does not match\",\n errorMessageName: \"Name is required\",\n errorMessageEmail: \"E-mail is required\",\n errorMessageValidEmail: \"Valid E-mail is required\",\n errorMessageRole: \"Role is required\",\n errorMessageFolder: \"Folder is required\",\n errorMessageProjectNumber: \"Project number is required\",\n errorMessageDesc: \"Description is required\",\n errorMessageOffice: \"Office is required\",\n errorMessageProjectStatus: \"Project status is required\",\n errorMessageNameMaxLength: \"Maximum length is 80\",\n errorMessageDescMaxLength: \"Maximum length is 300\",\n errorPasswordIsRequired: \"Password is required\",\n errorCheckMessage: \"is already\",\n\n //MessageToasts\n messageToastHeader: \"Information\",\n messageToastUpdated: \"Successfully updated\",\n messageToastDeleted: \"Successfully removed\",\n messageToastAdded: \"Successfully added\",\n};\n","import { atom } from \"recoil\";\n\nconst authAtom = atom({\n key: \"auth\",\n default: JSON.parse(localStorage.getItem(\"user\")),\n});\n\nconst messageAtom = atom({\n key: \"toast\",\n default: \"\",\n});\n\nexport { authAtom, messageAtom };\n","import { useRecoilState } from \"recoil\";\nimport { authAtom } from \"../recoil/auth/atom\";\nimport ky from \"ky\";\n\nexport const useRequest = () => {\n const [auth, setAuth] = useRecoilState(authAtom);\n\n const request = (method) => {\n return (url, body, overrideUrl = false, formData = false) => {\n const requestOptions = {\n method,\n headers: authHeader(url),\n hooks: {\n afterResponse: [\n async (request, options, response) => {\n if (response.status === 401) {\n const user = await ky\n .post(\n `${process.env.REACT_APP_API_URL}authorization/refresh-token?&id=${auth.id}`\n )\n .json();\n if (user.isAuthenticated) {\n setAuth(user);\n request.headers.set(\"Authorization\", `Bearer ${user.token}`);\n return ky(request);\n } else {\n localStorage.removeItem(\"user\");\n setAuth(null);\n }\n }\n },\n ],\n },\n };\n if (body) {\n if (!formData) {\n requestOptions.headers[\"Content-Type\"] = \"application/json\";\n requestOptions.body = JSON.stringify(body);\n } else {\n requestOptions.body = body;\n }\n }\n\n return _fetch(url, requestOptions, overrideUrl);\n };\n };\n\n const authHeader = (url) => {\n const token = auth?.token;\n const isLoggedIn = !!token;\n if (isLoggedIn) {\n return { Authorization: `Bearer ${token}` };\n } else {\n return {};\n }\n };\n\n const _fetch = async (url, requestOptions, overrideUrl) => {\n const _url = overrideUrl ? url : process.env.REACT_APP_API_URL + url;\n const data = ky(_url, requestOptions).json();\n return data;\n };\n\n return {\n get: request(\"GET\"),\n post: request(\"POST\"),\n put: request(\"PUT\"),\n _delete: request(\"DELETE\"),\n };\n};\n","export const api = {\n users: \"user\",\n projects: \"project\",\n offices: \"office\",\n auth: \"authorization\",\n folders: \"folder\",\n organisations: \"organisation\",\n};\n","import { useRequest } from \"../helpers/useRequest\";\nimport { useMutation } from \"react-query\";\nimport { api } from \"../config/apiEndpoints\";\n\nconst url = api.auth;\n\nexport const useAuthLogin = () => {\n const { post } = useRequest();\n\n return useMutation((user: LoginUser) => post(`${url}/login`, user));\n};\n\nexport const useRefreshToken = () => {\n const { post } = useRequest();\n\n return useMutation((id: string) => post(`${url}/refresh-token?&id=${id}`, null));\n};\n","const Roles = {\n Admin: \"Admin\",\n User: \"User\",\n};\n\nexport default Roles;\n","import { useHistory } from \"react-router\";\nimport { useRecoilValue, useSetRecoilState } from \"recoil\";\nimport { authAtom } from \"../recoil/auth/atom\";\nimport { useAuthLogin, useRefreshToken } from \"../services/authService\";\nimport { strings } from \"../config/string\";\nimport jwt_decode from \"jwt-decode\";\nimport Roles from \"../constants/userRoles\";\n\nexport const useAuth = () => {\n const setAuth = useSetRecoilState(authAtom);\n const auth = useRecoilValue(authAtom);\n const history = useHistory();\n const { mutateAsync: loginUser } = useAuthLogin();\n const { mutateAsync: refresh } = useRefreshToken();\n\n const login = async (email, password) => {\n let loginError = \"\";\n await loginUser({ email: email, password: password }).then(\n (user) => {\n if (user.isAuthenticated) {\n if (user.roles.some((role) => role === Roles.Admin || Roles.User)) {\n onSuccess(user);\n } else {\n loginError = strings.loginRoleError;\n }\n } else {\n loginError = strings.loginError;\n }\n },\n () => {\n loginError = strings.loginError;\n }\n );\n\n return loginError;\n };\n\n const onSuccess = (user) => {\n setAuth(user);\n localStorage.setItem(\"user\", JSON.stringify(user));\n };\n const refreshToken = async () => {\n await refresh(auth.id).then(\n (user) => {\n onSuccess(user);\n return true;\n },\n () => {\n logout();\n return false;\n }\n );\n return false;\n };\n\n const logout = () => {\n localStorage.removeItem(\"user\");\n setAuth(null);\n history.push(\"/login\");\n };\n const isAuthenticated = () => {\n return auth && auth.token && checkToken();\n };\n const checkToken = async () => {\n const decoded = jwt_decode(auth.token);\n\n if (auth.token.refreshTokenExpiration)\n if (decoded.exp * 1000 < new Date().getTime()) {\n //TODO: check if tokenRefresh expired\n return await refreshToken().then((result) => result);\n } else {\n return false;\n }\n };\n\n return {\n login,\n logout,\n isAuthenticated,\n refreshToken,\n orgId: auth?.token ? jwt_decode(auth.token).organizationId : null,\n };\n};\n","import { faSignOutAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Button } from \"react-bootstrap\";\nimport { strings } from \"../../config/string\";\nimport { useAuth } from \"../../helpers/useAuth\";\n\nexport const LoginButton = () => {\n const { isAuthenticated, logout } = useAuth();\n if (isAuthenticated())\n return (\n \n );\n return <>;\n};\n","export const queryEnums = {\n users: \"getAllUsers\",\n users_get: \"getUserById\",\n offices: \"getAllOffices\",\n offices_get: \"getOfficeById\",\n organisations: \"getAllOrganisations\",\n Organisations_get: \"getOrganisationById\",\n projects: \"getAllProjects\",\n projects_get: \"getProjectById\",\n projectsByFolderId_get: \"getProjectsByFolderId\",\n projects_status: \"getProjectStatus\",\n folders: \"getAllFolders\",\n folders_get: \"getFolderById\",\n foldersByOfficeId_get: \"getFoldersByOfficeId\",\n foldersByOrganisationId_get: \"getFoldersByOrganisationId\",\n};\n","import { useSetRecoilState } from \"recoil\";\nimport { strings } from \"../config/string\";\nimport { messageAtom } from \"../recoil/auth/atom\";\n\nexport const useMessage = () => {\n const setMessage = useSetRecoilState(messageAtom);\n\n const sendUpdated = (entity = \"\") => {\n setMessage(`${strings.messageToastUpdated} ${entity}`);\n };\n const sendAdded = (entity = \"\") => {\n setMessage(`${strings.messageToastAdded} ${entity}`);\n };\n const sendRemoved = (entity = \"\") => {\n setMessage(`${strings.messageToastDeleted} ${entity}`);\n };\n\n const sendCustom = (entity = \"\") => {\n setMessage(`${entity}`);\n };\n\n return {\n sendUpdated,\n sendAdded,\n sendRemoved,\n sendCustom,\n };\n};\n","import { useRequest } from \"../helpers/useRequest\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { api } from \"../config/apiEndpoints\";\nimport { queryEnums } from \"../config/queryEnums\";\nimport { useMessage } from \"../helpers/useMessages\";\n\nconst url = api.organisations;\n\nexport const useGetAllOrganisations = () => {\n const { get } = useRequest();\n return useQuery(queryEnums.organisations, () => get(`${url}`));\n};\n\nexport const useAddOrganisation = () => {\n const { post } = useRequest();\n const queryClient = useQueryClient();\n const { sendAdded } = useMessage();\n\n return useMutation((organisation: createOrganizationDTO) => {\n const formData = new FormData();\n formData.append('Organization.Description', organisation.organization.description || '');\n formData.append('Organization.Name', organisation.organization.name || '');\n formData.append('Organization.Logo', organisation.organization.logo || '');\n formData.append('DefaultUser.userName', organisation.defaultUser?.userName || '');\n formData.append('DefaultUser.email', organisation.defaultUser?.email || '');\n if (organisation.file) {\n const prom = organisation.file!;\n // @ts-ignore\n formData.append('File', prom, prom.name);\n }\n\n console.log(formData.values(), 'FOrm Data', organisation, `${url}`);\n return post(`${url}`, formData, false, true)\n }, {\n onSuccess: (_result, Organisation) => {\n sendAdded(Organisation.organization.name);\n queryClient.invalidateQueries(queryEnums.organisations);\n },\n });\n};\n\nexport const useDeleteOrganisation = () => {\n const { _delete } = useRequest();\n const queryClient = useQueryClient();\n const { sendRemoved } = useMessage();\n return useMutation((id?: string) => _delete(`${url}/${id}`), {\n onSuccess: () => {\n sendRemoved();\n queryClient.invalidateQueries(queryEnums.organisations);\n },\n });\n};\n\nexport const useGetOrganisationById = (id?: string) => {\n const { get } = useRequest();\n return useQuery([queryEnums.Organisations_get, id], () => get(`${url}/${id}`), {\n enabled: !!id,\n });\n};\n\n\nexport const useUpdateOrganisation = () => {\n const { post } = useRequest();\n const queryClient = useQueryClient();\n const { sendUpdated } = useMessage();\n return useMutation(async (createOrganisationDTO: createOrganizationDTO) => {\n const formData = new FormData();\n\n formData.append('Name', 'Ahmad');\n\n formData.append('Organization.Id', createOrganisationDTO.organization.id || '');\n formData.append('Organization.Description', createOrganisationDTO.organization.description || '');\n formData.append('Organization.Name', createOrganisationDTO.organization.name || '');\n formData.append('Organization.Logo', createOrganisationDTO.organization.logo || '');\n formData.append('Organization.OrganizationNumber', createOrganisationDTO.organization?.organizationNumber || '');\n if (createOrganisationDTO.file) {\n const prom = createOrganisationDTO.file!;\n // @ts-ignore\n formData.append('File', prom, prom.name);\n }\n console.log(formData, 'FOrm Data', createOrganisationDTO, `${url}`);\n const objects = Object.fromEntries(formData)\n\n console.log(objects, 'Objects', createOrganisationDTO, `${url}`);\n return post(`${url}`, formData, false, true)\n }, {\n onSuccess: (_result, organisation) => {\n sendUpdated(organisation.organization.name);\n queryClient.invalidateQueries(queryEnums.organisations);\n queryClient.invalidateQueries(queryEnums.Organisations_get);\n },\n });\n};\n\n\n","import { Navbar, Row, Col } from \"react-bootstrap\";\nimport { LoginButton } from \"../LoginButton/LoginButton\";\nimport NCVIB from \"../../assets/NCVIB.png\";\nimport { useLogo } from \"../../helpers/useLogo\";\n\nexport const Header = () => {\n const { logo, isLoading } = useLogo();\n\n return (\n \n \n \n
\n
\n \n
\n
\n \n \n \n
\n );\n};\n","import { useGetOrganisationById } from \"../services/organisationService\";\nimport { useAuth } from \"./useAuth\";\n\nexport const useLogo = () => {\n const { orgId } = useAuth();\n const { data: org, isLoading } = useGetOrganisationById(orgId);\n return { logo: org?.logo, isLoading };\n};\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZkAAAFbCAYAAAAHhfNxAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAACxMAAAsTAQCanBgAAAfraVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pg0KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuMTcxYzI3ZiwgMjAyMi8wOC8xNi0xODowMjo0MyAgICAgICAgIj4NCiAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4NCiAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTAzLTI5VDExOjIxOjMxKzAyOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNC0wMS0xN1QxMzo0NToxMSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNC0wMS0xN1QxMzo0NToxMSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjIxNWJiMDYtOGVlNi1lZDQ1LTg0ODEtZmU4OTg4ZTc5YmUxIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTNiOTkxODItOGY1My1iYjRmLTk3NzUtZGZhZjkwMWFmZjYyIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MDYyNGM2YTQtMzdmNC01NzRkLWI5ZTQtNWYwYWNkYzU3N2RiIj4NCiAgICAgIDxwaG90b3Nob3A6VGV4dExheWVycz4NCiAgICAgICAgPHJkZjpCYWc+DQogICAgICAgICAgPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSJOQyBCRVMiIHBob3Rvc2hvcDpMYXllclRleHQ9Ik5DIEJFUyIgLz4NCiAgICAgICAgICA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9IkJFUyIgcGhvdG9zaG9wOkxheWVyVGV4dD0iQkVTIiAvPg0KICAgICAgICA8L3JkZjpCYWc+DQogICAgICA8L3Bob3Rvc2hvcDpUZXh0TGF5ZXJzPg0KICAgICAgPHhtcE1NOkhpc3Rvcnk+DQogICAgICAgIDxyZGY6U2VxPg0KICAgICAgICAgIDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjA2MjRjNmE0LTM3ZjQtNTc0ZC1iOWU0LTVmMGFjZGM1NzdkYiIgc3RFdnQ6d2hlbj0iMjAyMS0wMy0yOVQxMToyMTozMSswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKFdpbmRvd3MpIiAvPg0KICAgICAgICAgIDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphMzA4YWZjZS1lZDc0LTVlNDgtYjFkYi1jZDhlMTg5NmJkYTQiIHN0RXZ0OndoZW49IjIwMjEtMDMtMjlUMTM6MTE6MjkrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4zIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIgLz4NCiAgICAgICAgICA8cmRm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\"","import { useEffect, useState } from \"react\";\nimport Toast from \"react-bootstrap/Toast\";\nimport { useRecoilState } from \"recoil\";\nimport { strings } from \"../../config/string\";\nimport { messageAtom } from \"../../recoil/auth/atom\";\n\nexport const MessageToast = () => {\n const [show, setShow] = useState(false);\n const [text, setText] = useRecoilState(messageAtom);\n\n useEffect(() => {\n if (text) setShow(true);\n }, [text]);\n\n return (\n {\n setShow(false);\n setText(\"\");\n }}\n show={show}\n delay={3000}\n autohide\n >\n \n {strings.messageToastHeader}\n \n {text}\n \n );\n};\n","export const header = [\"dashboard\", \"offices\", \"folders\", \"projects\", \"users\", \"organisations\"];\nexport const userSideBarHeader = [\"dashboard\", \"projects\"];\n","import { Row } from \"react-bootstrap\";\n\ntype Props = {\n title: string;\n children?: React.ReactNode;\n};\n\nexport const PageContent = ({ title, children }: Props) => {\n return (\n \n

{title}

\n {children}\n
\n );\n};\n","import { useRequest } from \"../helpers/useRequest\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { api } from \"../config/apiEndpoints\";\nimport { queryEnums } from \"../config/queryEnums\";\nimport { useMessage } from \"../helpers/useMessages\";\n\nconst url = api.offices;\n\nexport const useGetAllOffices = () => {\n const { get } = useRequest();\n return useQuery(queryEnums.offices, () => get(`${url}`));\n};\n\nexport const useAddOffice = () => {\n const { post } = useRequest();\n const queryClient = useQueryClient();\n const { sendAdded } = useMessage();\n\n return useMutation((office: Office) => post(`${url}`, office), {\n onSuccess: (_result, office) => {\n sendAdded(office.name);\n queryClient.invalidateQueries(queryEnums.offices);\n },\n });\n};\n\nexport const useDeleteOffice = () => {\n const { _delete } = useRequest();\n const queryClient = useQueryClient();\n const { sendRemoved } = useMessage();\n return useMutation((id?: string) => _delete(`${url}/${id}`), {\n onSuccess: () => {\n sendRemoved();\n queryClient.invalidateQueries(queryEnums.offices);\n },\n });\n};\n\nexport const useGetOfficeById = (id?: string) => {\n const { get } = useRequest();\n return useQuery([queryEnums.offices_get, id], () => get(`${url}/${id}`), {\n enabled: !!id,\n });\n};\n\nexport const useGetOfficesByUserId = (id?: string) => {\n const { get } = useRequest();\n return useQuery([queryEnums.offices_get, id], () => get(`${url}/userOffices/${id}`), {\n enabled: !!id,\n });\n};\n\nexport const useUpdateOffice = () => {\n const { put } = useRequest();\n const queryClient = useQueryClient();\n const { sendUpdated } = useMessage();\n return useMutation((office: Office) => put(`${url}`, office), {\n onSuccess: (_result, office) => {\n sendUpdated(office.name);\n queryClient.invalidateQueries(queryEnums.offices);\n queryClient.invalidateQueries(queryEnums.offices_get);\n },\n });\n};\n","import { useRequest } from \"../helpers/useRequest\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { api } from \"../config/apiEndpoints\";\nimport { queryEnums } from \"../config/queryEnums\";\nimport { useMessage } from \"../helpers/useMessages\";\n\nconst url = api.projects;\n\nexport const useGetAllProjects = () => {\n const { get } = useRequest();\n return useQuery(queryEnums.projects, () => get(`${url}`, null));\n};\n\nexport const useGetAllProjectsByUser = (id?: string) => {\n const { get } = useRequest();\n return useQuery([queryEnums.projects, id], () => get(`${url}/user/${id}`), {\n enabled: !!id,\n });\n};\n\nexport const useGetProjectById = (id?: string) => {\n const { get } = useRequest();\n\n return useQuery([queryEnums.projects_get, id], () => get(`${url}/${id}`), {\n enabled: !!id,\n });\n};\n\nexport const useGetAllProjectStatus = () => {\n const { get } = useRequest();\n return useQuery(queryEnums.projects_status, () => get(`${url}/project-status`, null), {\n staleTime: 1000 * 60 * 5,\n });\n};\n\nexport const useDeleteProject = () => {\n const { _delete } = useRequest();\n const queryClient = useQueryClient();\n const { sendRemoved } = useMessage();\n\n return useMutation((id?: string) => _delete(`${url}/${id}`), {\n onSuccess: () => {\n sendRemoved();\n queryClient.invalidateQueries(queryEnums.projects);\n },\n });\n};\n\nexport const useAddProject = () => {\n const { post } = useRequest();\n const queryClient = useQueryClient();\n const { sendAdded } = useMessage();\n\n return useMutation((project: Project) => post(`${url}`, project), {\n onSuccess: (_result, project) => {\n sendAdded(project.name);\n queryClient.invalidateQueries(queryEnums.projects);\n },\n });\n};\n\nexport const useUpdateProject = () => {\n const { put } = useRequest();\n const queryClient = useQueryClient();\n const { sendUpdated } = useMessage();\n\n return useMutation((project: Project) => put(`${url}/${project.id}`, project), {\n onSuccess: (_result, project) => {\n sendUpdated(project.name);\n queryClient.invalidateQueries(queryEnums.projects);\n queryClient.invalidateQueries(queryEnums.projects_get);\n },\n });\n};\n\nexport const useGetProjectsByFolderId = (id?: string) => {\n const { get } = useRequest();\n const queryClient = useQueryClient();\n return useQuery([queryEnums.projectsByFolderId_get, id], () => get(`${url}/folder/${id}`), {\n onSuccess: () => {\n queryClient.invalidateQueries(queryEnums.projectsByFolderId_get);\n },\n });\n};\n","import { useRequest } from \"../helpers/useRequest\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { api } from \"../config/apiEndpoints\";\nimport { queryEnums } from \"../config/queryEnums\";\nimport { useMessage } from \"../helpers/useMessages\";\n\nconst url = api.users;\n\nexport const useGetAllUsers = () => {\n const { get } = useRequest();\n return useQuery(queryEnums.users, () => get(`${url}`, null));\n};\n\nexport const useGetUserById = (id?: string) => {\n const { get } = useRequest();\n return useQuery(\n [queryEnums.users_get, id],\n () => get(`${url}/${id}`, null),\n {\n enabled: !!id,\n }\n );\n};\n\nexport const useDeleteUser = () => {\n const { _delete } = useRequest();\n const queryClient = useQueryClient();\n const { sendRemoved } = useMessage();\n\n return useMutation((id?: string) => _delete(`${url}/${id}`, null), {\n onSuccess: () => {\n sendRemoved();\n queryClient.invalidateQueries(queryEnums.users);\n },\n });\n};\n\nexport const useAddUser = () => {\n const { post } = useRequest();\n const queryClient = useQueryClient();\n const { sendAdded } = useMessage();\n\n return useMutation((user: User) => post(`${url}`, user), {\n onSuccess: (_result, user) => {\n sendAdded(`${user.userName} (${user.email})`);\n queryClient.invalidateQueries(queryEnums.users);\n },\n });\n};\n\nexport const useSendPasswordResetEmaill = () => {\n const { post } = useRequest();\n const queryClient = useQueryClient();\n const { sendCustom } = useMessage();\n\n return useMutation(\n (email: string) => post(`${url}/passwordReset/${email}`, {}),\n {\n onSuccess: (_result) => {\n debugger;\n sendCustom(`Email sent`);\n queryClient.invalidateQueries(queryEnums.users);\n },\n onError: (_result) => {\n debugger;\n sendCustom(\"Fail\");\n },\n }\n );\n};\n\nexport const useSendPasswordReset = () => {\n const { post } = useRequest();\n const queryClient = useQueryClient();\n const { sendCustom } = useMessage();\n\n return useMutation(\n (arg: { email: string; token: string; password: string }) =>\n post(`${url}/passwordResetToken`, arg),\n {\n onSuccess: (_result) => {\n debugger;\n sendCustom(`Password Updated`);\n queryClient.invalidateQueries(queryEnums.users);\n },\n onError: (_result) => {\n debugger;\n sendCustom(`Fail`);\n },\n }\n );\n};\n\nexport const useUpdateUser = () => {\n const { put } = useRequest();\n const queryClient = useQueryClient();\n const { sendUpdated } = useMessage();\n return useMutation((user: User) => put(`${url}/${user.id}`, user), {\n onSuccess: (_result, user) => {\n sendUpdated(`${user.userName} (${user.email})`);\n queryClient.invalidateQueries(queryEnums.users);\n queryClient.invalidateQueries(queryEnums.users_get);\n },\n });\n};\n","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\ntype Props = {\n icon: IconProp;\n count: number;\n title: string;\n};\n\nexport const DashItem = ({ icon, count, title }: Props) => {\n return (\n
\n
\n
{count}
\n
{title}
\n
\n \n
\n );\n};\n","import { faBuilding, faProjectDiagram, faUsers } from \"@fortawesome/free-solid-svg-icons\";\nimport { useGetAllOffices } from \"../../../services/officeService\";\nimport { useGetAllProjectsByUser } from \"../../../services/projectService\";\nimport { useGetAllUsers } from \"../../../services/userService\";\nimport { DashItem } from \"../DashItem/DashItem\";\nimport \"./Dashboard.scss\";\nimport { authAtom } from \"../../../recoil/auth/atom\";\nimport { useRecoilValue } from \"recoil\";\nimport Roles from \"../../../constants/userRoles\";\n\nexport const Dashboard = () => {\n const { data: users } = useGetAllUsers();\n const { data: offices } = useGetAllOffices();\n const auth = useRecoilValue(authAtom);\n const { data: projects } = useGetAllProjectsByUser(auth.id);\n\n return (\n
\n {auth.roles.some((role: any) => role === Roles.Admin) && offices && (\n \n )}\n {projects && }\n {auth.roles.some((role: any) => role === Roles.Admin) && users && (\n \n )}\n
\n );\n};\n","import { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { Dashboard } from \"./Dashboard/Dashboard\";\n\nexport const IndexPage = () => {\n return (\n \n \n \n );\n};\n","import * as yup from \"yup\";\nimport { strings } from \"./string\";\n\nexport const UserFormValidationSchema = yup\n .object({\n userName: yup\n .string()\n .trim()\n .required(strings.errorMessageName)\n .matches(/^\\S*$/, \"Blank space not allowed\")\n .max(80, strings.errorMessageNameMaxLength),\n email: yup\n .string()\n .email(strings.errorMessageValidEmail)\n .required(strings.errorMessageEmail)\n .max(80, strings.errorMessageNameMaxLength),\n role: yup.string().required(strings.errorMessageRole),\n })\n .required();\n\nexport const ProjectFormValidationSchema = yup\n .object({\n name: yup\n .string()\n .required(strings.errorMessageName)\n .max(80, strings.errorMessageNameMaxLength),\n folderId: yup.string().required(strings.errorMessageFolder),\n //projectNumber: yup.number().typeError(strings.errorMessageProjectNumber),\n description: yup\n .string()\n .required(strings.errorMessageDesc)\n .max(300, strings.errorMessageDescMaxLength),\n officeId: yup.string().required(strings.errorMessageOffice),\n projectStatusId: yup.string().required(strings.errorMessageProjectStatus),\n })\n .required();\n\nexport const OfficeFormValidationSchema = yup\n .object({\n name: yup\n .string()\n .required(strings.errorMessageName)\n .max(80, strings.errorMessageNameMaxLength),\n description: yup\n .string()\n .required(strings.errorMessageDesc)\n .max(300, strings.errorMessageDescMaxLength),\n })\n .required();\n\n export const OrganisationFormValidationSchema = yup.object({\n organization: yup.object().shape({\n name: yup\n .string()\n .required(strings.errorMessageName)\n .max(80, strings.errorMessageNameMaxLength),\n description: yup\n .string()\n .required(strings.errorMessageDesc)\n .max(300, strings.errorMessageDescMaxLength),\n }),\n }).required();\n\n\nexport const FolderFormValidationSchema = yup\n .object({\n name: yup\n .string()\n .required(strings.errorMessageName)\n .max(80, strings.errorMessageNameMaxLength),\n officeId: yup.string().required(strings.errorMessageOffice),\n })\n .required();\n\nexport const LoginFormValidationSchema = yup\n .object({\n email: yup\n .string()\n .email(strings.errorMessageValidEmail)\n .required(strings.errorMessageEmail)\n .matches(\n /^(([^<>()\\\\.,;:\\s@\"]+(\\.[^<>()\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n strings.errorMessageValidEmail\n )\n .max(80, strings.errorMessageNameMaxLength),\n password: yup.string().required(strings.errorPasswordIsRequired),\n })\n .required();\n\nexport const ResetPasswordFormValidationSchema = yup.object({\n password: yup\n .string()\n .required(\"Please Enter your password\")\n .matches(\n // eslint-disable-next-line\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\\$%\\^&\\*])(?=.{8,})/,\n \"Must Contain 8 Characters, One Uppercase, One Lowercase, One Number and One Special Case Character\"\n ),\n});\n\nexport const ResetPasswordTokenFormValidationSchema = yup.object({\n email: yup.string().email().required(\"Enter email\"),\n});\n","import { Button, Form } from \"react-bootstrap\";\nimport { useForm } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { LoginFormValidationSchema } from \"../../../config/FormValidations\";\nimport { useHistory } from \"react-router-dom\";\n\ntype Props = {\n onSubmit(data: LoginUser): void;\n};\n\nexport const LoginForm = ({ onSubmit }: Props) => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(LoginFormValidationSchema),\n });\n const history = useHistory();\n return (\n
\n \n {strings.loginEmail}\n ()\\\\.,;:\\s@\"]+(\\.[^<>()\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n })}\n placeholder=\"Enter email\"\n autoComplete=\"on\"\n />\n {errors.email ? (\n {errors.email?.message}\n ) : (\n \n {strings.loginDisclaimer}\n \n )}\n \n\n \n {strings.loginPassword}\n \n {errors.password?.message}\n \n\n \n\n {\n debugger;\n history.push(\"/resetpasswordtoken\");\n }}\n >\n Reset Password\n \n \n );\n};\n","type Props = {\n message: string;\n};\n\nexport const LoginError = ({ message }: Props) => {\n return
{message}
;\n};\n","import { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Button } from \"react-bootstrap\";\n\ntype Props = {\n onClick: () => void;\n};\n\nexport const DeleteButton = ({ onClick }: Props) => {\n return (\n \n );\n};\n","import { ReactNode } from \"react\";\nimport { Card, Col } from \"react-bootstrap\";\n\ntype Props = {\n children?: ReactNode;\n};\n\nexport const DisplayItem = ({ children }: Props) => {\n return (\n \n {children}\n \n );\n};\n","import { faEdit } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Button } from \"react-bootstrap\";\n\ntype Props = {\n onClick: () => void;\n};\n\nexport const EditButton = ({ onClick }: Props) => {\n return (\n \n );\n};\n","import { Card, Button } from \"react-bootstrap\";\nimport { DeleteButton } from \"../../../components/DeleteButton/DeleteButton\";\nimport { DisplayItem } from \"../../../components/DisplayItem/DisplayItem\";\nimport { EditButton } from \"../../../components/EditButton/EditButton\";\nimport { strings } from \"../../../config/string\";\n\ntype Props = {\n office: Office;\n onClickEdit: () => void;\n onClickDelete: () => void;\n onClickFolders: () => void;\n};\n\nexport const OfficeItem = ({ office, onClickEdit, onClickDelete, onClickFolders }: Props) => {\n return (\n \n \n {office.name}\n {office.description}\n \n \n
\n \n \n \n {strings.showFolders}\n \n
\n
\n
\n );\n};\n","import { Col, Form, Row } from \"react-bootstrap\";\nimport { UseFormRegister } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\n\ntype Props = {\n office: Office;\n handleSubmit: any;\n register: UseFormRegister;\n errors: any;\n};\n\nexport const OfficeForm = ({\n office,\n handleSubmit,\n register,\n errors,\n}: Props) => {\n return (\n
\n \n \n {strings.formFieldName}\n \n \n \n \n {errors.name?.message}\n \n \n \n\n \n \n {strings.formFieldDesc}\n \n \n \n \n {errors.description?.message}\n \n \n \n
\n );\n};\n","import React from \"react\";\nimport { Button, Modal } from \"react-bootstrap\";\nimport { strings } from \"../../config/string\";\n\ntype Props = {\n title: string;\n message: string;\n show: boolean;\n handleClose: (value: boolean) => void;\n handleConfirmation: () => void;\n children?: React.ReactNode;\n};\n\nexport const ConfirmationModal = ({ title, message, show, handleClose, handleConfirmation, children }: Props) => {\n return (\n \n \n {title}\n \n \n
{message}
\n
{children}
\n
\n \n \n \n \n
\n );\n};\n","import { ReactNode } from \"react\";\nimport { ConfirmationModal } from \"../ConfirmationModal/ConfirmationModal\";\n\ntype Props = {\n onUpdate: (data: any) => void;\n data: any;\n handleClose: () => void;\n entityForm: ReactNode;\n show: boolean;\n message: string;\n title: string;\n handleSubmit: any;\n reset: any;\n};\n\nexport const EditEntityModal = ({\n onUpdate,\n data,\n handleClose,\n entityForm,\n show,\n message,\n title,\n handleSubmit,\n reset,\n}: Props) => {\n const handleConfirmation = (inputData: any) => {\n onUpdate(Object.assign(data, inputData));\n handleClose();\n reset();\n };\n\n const handleModalClose = () => {\n handleClose();\n reset();\n };\n return (\n
\n handleModalClose()}\n handleConfirmation={() => handleSubmit(handleConfirmation)()}\n message={message}\n title={title}\n >\n {entityForm}\n \n
\n );\n};\n","import { useEffect } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\nimport { OfficeForm } from \"../OfficeForm/OfficeForm\";\nimport {\n useGetOfficeById,\n useUpdateOffice,\n} from \"../../../services/officeService\";\nimport { EditEntityModal } from \"../../../components/EditEntityModal/EditEntityModal\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { OfficeFormValidationSchema } from \"../../../config/FormValidations\";\n\ntype Props = {\n officeId?: string;\n handleClose: () => void;\n show: boolean;\n};\n\nexport const EditOfficeModal = ({ officeId, handleClose, show }: Props) => {\n const { mutate: updateOffice } = useUpdateOffice();\n const { data } = useGetOfficeById(officeId);\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(OfficeFormValidationSchema),\n });\n\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [officeId]);\n\n return (\n
\n \n }\n />\n
\n );\n};\n","import { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { strings } from \"../../../config/string\";\nimport { useDeleteOffice } from \"../../../services/officeService\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n officeId?: string;\n};\n\nexport const DeleteOfficeModal = ({ show, handleClose, officeId }: Props) => {\n const { mutate: deleteOffice } = useDeleteOffice();\n\n return (\n {\n deleteOffice(officeId);\n handleClose();\n }}\n handleClose={handleClose}\n />\n );\n};\n","import { yupResolver } from \"@hookform/resolvers/yup\";\nimport { useForm } from \"react-hook-form\";\nimport { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { strings } from \"../../../config/string\";\nimport { useAddOffice } from \"../../../services/officeService\";\nimport { OfficeForm } from \"../OfficeForm/OfficeForm\";\nimport { OfficeFormValidationSchema } from \"../../../config/FormValidations\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n};\n\nexport const AddOfficeModal = ({ show, handleClose }: Props) => {\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(OfficeFormValidationSchema),\n });\n const { mutate: addOffice } = useAddOffice();\n\n const handleConfirmation = (office: Office) => {\n debugger;\n\n const user = localStorage.getItem(\"user\");\n const item = JSON.parse(user || \"\");\n addOffice({ ...office, createdBy: item?.email || \"UNKNOWN\" });\n handleClose();\n reset();\n };\n\n const handleModalClose = () => {\n handleClose();\n reset();\n };\n\n const office = {} as Office;\n\n return (\n
\n handleModalClose()}\n handleConfirmation={() => handleSubmit(handleConfirmation)()}\n message={strings.newOfficeModalMessage}\n title={strings.newOfficeModalTitle}\n >\n \n \n
\n );\n};\n","import { EditOfficeModal } from \"../EditOfficeModal/EditOfficeModal\";\nimport { DeleteOfficeModal } from \"../DeleteOfficeModal/DeleteOfficeModal\";\nimport { AddOfficeModal } from \"../AddOfficeModal/AddOfficeModal\";\n\ntype Props = {\n showAdd: boolean;\n showEdit: boolean;\n showDelete: boolean;\n onEditClose: () => void;\n onDeleteClose: () => void;\n onAddClose: () => void;\n officeId?: string;\n};\n\nexport const OfficeCrudModals = ({\n showAdd,\n onAddClose,\n showEdit,\n onEditClose,\n showDelete,\n onDeleteClose,\n officeId,\n}: Props) => {\n return (\n <>\n \n \n \n \n );\n};\n","import { Button } from \"react-bootstrap\";\n\ntype Props = {\n onClick: () => void;\n text: string;\n};\n\nexport const AddEntityButton = ({ onClick, text }: Props) => {\n return (\n \n );\n};\n","import { useState } from \"react\";\nimport { Row } from \"react-bootstrap\";\nimport { useHistory } from \"react-router-dom\";\nimport { useGetAllOffices } from \"../../../services/officeService\";\nimport { OfficeItem } from \"../OfficeItem/OfficeItem\";\nimport { OfficeCrudModals } from \"../OfficeCrudModals/OfficeCrudModals\";\nimport { AddEntityButton } from \"../../../components/AddEntityButton/AddEntityButton\";\nimport { strings } from \"../../../config/string\";\n\nexport const OfficesContainer = () => {\n const { data } = useGetAllOffices();\n const [selectedOfficeId, setSelectedOfficeId] = useState();\n const [showEdit, setShowEdit] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [showDelete, setShowDelete] = useState(false);\n const history = useHistory();\n\n return (\n
\n setShowAdd(true)} text={strings.addNewOffice} />\n setShowAdd(false)}\n onEditClose={() => setShowEdit(false)}\n onDeleteClose={() => setShowDelete(false)}\n />\n \n {data &&\n data.map((office, index) => (\n {\n setSelectedOfficeId(office.id);\n setShowEdit(true);\n }}\n onClickDelete={() => {\n setSelectedOfficeId(office.id);\n setShowDelete(true);\n }}\n onClickFolders={() => {\n history.push(`/offices/${office.id}`);\n }}\n />\n ))}\n \n
\n );\n};\n","import { useRequest } from \"../helpers/useRequest\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { api } from \"../config/apiEndpoints\";\nimport { queryEnums } from \"../config/queryEnums\";\nimport { useMessage } from \"../helpers/useMessages\";\n\nconst url = api.folders;\n\nexport const useGetAllFolders = () => {\n const { get } = useRequest();\n return useQuery(queryEnums.folders, () => get(`${url}`, null));\n};\n\nexport const useAddFolder = () => {\n const { post } = useRequest();\n const queryClient = useQueryClient();\n const { sendAdded } = useMessage();\n\n return useMutation((folder: Folder) => post(`${url}`, folder), {\n onSuccess: (_result, folder) => {\n sendAdded(folder.name);\n queryClient.invalidateQueries(queryEnums.folders);\n queryClient.invalidateQueries(queryEnums.foldersByOfficeId_get);\n },\n });\n};\n\nexport const useGetFolderById = (id?: string) => {\n const { get } = useRequest();\n return useQuery([queryEnums.folders_get, id], () => get(`${url}/${id}`, null), {\n enabled: !!id,\n });\n};\n\nexport const useUpdateFolder = () => {\n const { put } = useRequest();\n const queryClient = useQueryClient();\n const { sendUpdated } = useMessage();\n return useMutation((folder: Folder) => put(`${url}/${folder.id}`, folder), {\n onSuccess: (_result, folder) => {\n sendUpdated(folder.name);\n queryClient.invalidateQueries(queryEnums.folders);\n queryClient.invalidateQueries(queryEnums.folders_get);\n queryClient.invalidateQueries(queryEnums.foldersByOfficeId_get);\n },\n });\n};\n\nexport const useDeleteFolder = () => {\n const { _delete } = useRequest();\n const queryClient = useQueryClient();\n const { sendRemoved } = useMessage();\n return useMutation((id?: string) => _delete(`${url}/${id}`, null), {\n onSuccess: () => {\n sendRemoved();\n queryClient.invalidateQueries(queryEnums.folders);\n queryClient.invalidateQueries(queryEnums.foldersByOfficeId_get);\n },\n });\n};\n\nexport const useGetFolderByOfficeId = (id?: string) => {\n const { get } = useRequest();\n return useQuery([queryEnums.foldersByOfficeId_get, id], () => get(`${url}/office/${id}`));\n};\n\nexport const useGetFolderByOrganisationId = (id?: string) => {\n const { get } = useRequest();\n return useQuery([queryEnums.foldersByOrganisationId_get, id], () => get(`${url}/organisation/${id}`));\n};\n","import { Col, Form, Row } from \"react-bootstrap\";\nimport { UseFormRegister } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\nimport { useEffect, useState } from \"react\";\n\ntype Props = {\n project: Project;\n handleSubmit: any;\n register: UseFormRegister;\n offices: Office[];\n projectStatus: ProjectStatus[];\n errors: any;\n folders: Folder[];\n reset?: any;\n setValue?: any;\n folderId?: string;\n};\n\nexport const ProjectForm = ({\n project,\n handleSubmit,\n register,\n offices,\n projectStatus,\n errors,\n folders,\n setValue,\n folderId,\n}: Props) => {\n const officeId = folderId ? folders.filter((item) => item.id === folderId)[0].officeId : project.officeId;\n const [folderData, setFolderData] = useState(folders.filter((x) => x.officeId === officeId));\n\n const handleSelectOnChange = (data: any) => {\n setValue(\"folderId\", \"\");\n setFolderData(folders.filter((x) => x.officeId === data.target.value));\n };\n\n useEffect(() => {\n setValue(\"folderId\", project.folderId);\n setValue(\"projectStatusId\", project.projectStatusId);\n }, [project.folderId, setValue, project.projectStatusId]);\n\n return (\n
\n \n \n {strings.formFieldName}\n \n \n \n {errors.name?.message}\n \n \n {/* \n \n {strings.formFieldProjectNumber}\n \n \n \n {errors.projectNumber?.message}\n \n */}\n\n \n \n {strings.formFieldDesc}\n \n \n \n {errors.description?.message}\n \n \n \n \n {strings.formFieldOffice}\n \n \n \n \n ))}\n \n {errors.officeId?.message}\n \n \n \n \n {strings.formFieldFolderName}\n \n \n \n \n ))}\n \n {errors.folderId?.message}\n \n \n\n \n \n {strings.formFieldProjectStatus}\n \n \n \n \n ))}\n \n {errors.projectStatusId?.message}\n \n \n
\n );\n};\n","import { useEffect } from \"react\";\nimport { useRecoilValue } from \"recoil\";\nimport { useForm } from \"react-hook-form\";\nimport { EditEntityModal } from \"../../../components/EditEntityModal/EditEntityModal\";\nimport { strings } from \"../../../config/string\";\nimport { useGetProjectById, useUpdateProject, useGetAllProjectStatus } from \"../../../services/projectService\";\nimport { useGetAllOffices, useGetOfficesByUserId } from \"../../../services/officeService\";\nimport { useGetAllFolders } from \"../../../services/folderService\";\nimport { ProjectForm } from \"../ProjectForm/ProjectForm\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { ProjectFormValidationSchema } from \"../../../config/FormValidations\";\nimport { authAtom } from \"../../../recoil/auth/atom\";\nimport Roles from \"../../../constants/userRoles\";\n\ntype Props = {\n projectId?: string;\n handleClose: () => void;\n show: boolean;\n folderId?: string;\n};\n\nexport const EditProjectModal = ({ projectId, show, folderId, handleClose }: Props) => {\n const { mutate: updateProject } = useUpdateProject();\n const { data } = useGetProjectById(projectId);\n const { data: offices } = useGetAllOffices();\n const { data: projectStatus } = useGetAllProjectStatus();\n const { data: folders } = useGetAllFolders();\n const {\n register,\n handleSubmit,\n reset,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(ProjectFormValidationSchema),\n defaultValues: { projectTempId: null },\n });\n\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [projectId]);\n\n const auth = useRecoilValue(authAtom);\n const { data: userOffices } = useGetOfficesByUserId(auth.id);\n const userByRoles = auth.roles.some((role: any) => role === Roles.Admin);\n\n return (\n
\n \n }\n />\n
\n );\n};\n","import { useForm } from \"react-hook-form\";\nimport { useRecoilValue } from \"recoil\";\nimport { strings } from \"../../../config/string\";\nimport { ProjectForm } from \"../ProjectForm/ProjectForm\";\nimport { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { useAddProject } from \"../../../services/projectService\";\nimport { useGetAllOffices, useGetOfficesByUserId } from \"../../../services/officeService\";\nimport { useGetAllProjectStatus } from \"../../../services/projectService\";\nimport { useGetAllFolders } from \"../../../services/folderService\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { ProjectFormValidationSchema } from \"../../../config/FormValidations\";\nimport { authAtom } from \"../../../recoil/auth/atom\";\nimport Roles from \"../../../constants/userRoles\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n folderId?: string;\n};\n\nexport const AddProjectModal = ({ show, folderId, handleClose }: Props) => {\n const {\n register,\n handleSubmit,\n reset,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(ProjectFormValidationSchema),\n defaultValues: { projectTempId: null },\n });\n const { mutate: addProject } = useAddProject();\n const { data: offices } = useGetAllOffices();\n const { data: projectStatus } = useGetAllProjectStatus();\n const { data: folders } = useGetAllFolders();\n\n const auth = useRecoilValue(authAtom);\n const { data: userOffices } = useGetOfficesByUserId(auth.id);\n const userByRoles = auth.roles.some((role: any) => role === Roles.Admin);\n\n const handleConfirmation = (project: Project) => {\n addProject(project);\n handleClose();\n reset();\n };\n\n const project = {} as Project;\n const handleModalClose = () => {\n handleClose();\n reset();\n };\n\n return (\n
\n handleModalClose()}\n handleConfirmation={() => handleSubmit(handleConfirmation)()}\n message={strings.newProjectModalMessage}\n title={strings.newProjectModalTitle}\n >\n \n \n
\n );\n};\n","import { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { strings } from \"../../../config/string\";\nimport { useDeleteProject } from \"../../../services/projectService\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n projectId?: string;\n};\n\nexport const DeleteProjectModal = ({ show, handleClose, projectId }: Props) => {\n const { mutate: deleteProject } = useDeleteProject();\n\n return (\n {\n deleteProject(projectId);\n handleClose();\n }}\n handleClose={handleClose}\n />\n );\n};\n","import { EditProjectModal } from \"../EditProjectModal/EditProjectModal\";\nimport { AddProjectModal } from \"../AddProjectModal/AddProjectModal\";\nimport { DeleteProjectModal } from \"../DeleteProjectModal/DeleteProjectModal\";\n\ntype Props = {\n showAdd: boolean;\n showEdit: boolean;\n showDelete: boolean;\n onAddClose: () => void;\n onEditClose: () => void;\n onDeleteClose: () => void;\n projectId?: string;\n folderId?: string;\n};\n\nexport const ProjectCrudModals = ({\n showAdd,\n onAddClose,\n showEdit,\n onEditClose,\n showDelete,\n onDeleteClose,\n projectId,\n folderId,\n}: Props) => {\n return (\n <>\n \n \n \n \n );\n};\n","import { Badge, Card } from \"react-bootstrap\";\nimport { DeleteButton } from \"../../../components/DeleteButton/DeleteButton\";\nimport { DisplayItem } from \"../../../components/DisplayItem/DisplayItem\";\nimport { EditButton } from \"../../../components/EditButton/EditButton\";\nimport { faFolderOpen } from \"@fortawesome/free-solid-svg-icons\";\nimport { faBuilding } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\ntype Props = {\n project: Project;\n onClickEdit: () => void;\n onClickDelete: () => void;\n};\n\nexport const ProjectItem = ({ project, onClickEdit, onClickDelete }: Props) => {\n return (\n \n \n {project.name}\n {project.description}\n \n \n \n {project.officeName}\n \n \n \n {project.folderName}\n \n \n \n \n \n \n
{project.projectStatus}
\n
\n
\n );\n};\n","import { useState } from \"react\";\nimport { Row } from \"react-bootstrap\";\nimport { AddEntityButton } from \"../../../components/AddEntityButton/AddEntityButton\";\nimport { strings } from \"../../../config/string\";\nimport { ProjectCrudModals } from \"../ProjectCrudModals/ProjectCrudModals\";\nimport { ProjectItem } from \"../ProjectItem/ProjectItem\";\n\ntype Props = {\n projects: Project[];\n folderId?: string;\n};\n\nexport const ProjectsContainer = ({ projects, folderId }: Props) => {\n const [showDelete, setShowDelete] = useState(false);\n const [showEdit, setShowEdit] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [projectId, setProjectId] = useState();\n\n return (\n
\n setShowAdd(true)} text={strings.addNewProject} />\n setShowAdd(false)}\n onDeleteClose={() => setShowDelete(false)}\n onEditClose={() => setShowEdit(false)}\n projectId={projectId}\n />\n \n {projects &&\n projects.map((project, index) => (\n {\n setProjectId(project.id);\n setShowEdit(true);\n }}\n onClickDelete={() => {\n setProjectId(project.id);\n setShowDelete(true);\n }}\n />\n ))}\n \n
\n );\n};\n","import { Card, Badge } from \"react-bootstrap\";\nimport { EditButton } from \"../../../components/EditButton/EditButton\";\nimport { DeleteButton } from \"../../../components/DeleteButton/DeleteButton\";\nimport { DisplayItem } from \"../../../components/DisplayItem/DisplayItem\";\n\ntype Props = {\n user: User;\n onClickEdit: () => void;\n onClickDelete: () => void;\n};\n\nexport const UserItem = ({ user, onClickEdit, onClickDelete }: Props) => {\n return (\n \n \n {user.userName}\n \n {user.email}\n \n \n {user.offices &&\n user.offices.map((office) => (\n \n {office.name}\n \n ))}\n \n \n \n \n \n \n {user.role}\n \n \n \n );\n};\n","export const ROLES = [\n { value: \"User\", label: \"User\" },\n { value: \"Admin\", label: \"Admin\" },\n];\n\nexport const superAdmins = [\n \"admin@nitro.com\",\n \"christer.holmberg@nitroconsult.se\",\n \"mattias.aslund@nitroconsult.se\",\n \"philip.brandstrom@nitroconsult.se\",\n \"simon.degerman@nitroconsult.se\",\n \"ahmad@crossplatform.se\",\n \"emil@crossplatform.se\",\n \"milad@crossplatform.se\",\n];\n","import { useState } from \"react\";\nimport { Col, Form, Row } from \"react-bootstrap\";\nimport { strings } from \"../../../config/string\";\nimport { MultiSelect } from \"react-multi-select-component\";\nimport { ROLES } from \"../../../config/roles\";\nimport { UseFormRegister, UseFormSetValue } from \"react-hook-form\";\n\ntype Props = {\n user: User;\n handleSubmit: any;\n register: UseFormRegister;\n setValue: UseFormSetValue;\n errors: any;\n offices: Office[];\n message: string;\n};\n\nexport const UserForm = ({\n user,\n handleSubmit,\n register,\n setValue,\n errors,\n offices,\n message,\n}: Props) => {\n const [selected, setSelected] = useState(\n user.offices\n ? user.offices.map((office) => {\n return { label: office.name, value: office.officeId };\n })\n : []\n );\n\n const handleSelectOnChange = (data: any) => {\n setSelected(data);\n setValue(\n \"offices\",\n data.map((office: any) => {\n return { officeId: office.value };\n })\n );\n };\n\n return (\n
\n \n \n {strings.formFieldName}\n \n \n \n\n {errors.userName ? (\n \n {errors.userName?.message}\n \n ) : (\n \n {strings.userFormDisclaimer}\n \n )}\n \n \n\n \n \n {strings.formFieldEmail}\n \n \n \n \n {errors.email?.message}\n \n \n \n \n \n {strings.formFieldRole}\n \n \n \n \n {ROLES &&\n ROLES.map((item) => (\n \n ))}\n \n \n {errors.role?.message}\n \n \n \n \n \n {strings.formFieldOffice}\n \n\n \n {\n return { label: office.name, value: office.id };\n })\n : []\n }\n value={selected}\n onChange={handleSelectOnChange}\n />\n \n {errors.offices?.message}\n \n \n \n \n {message}\n \n
\n );\n};\n","import { useEffect } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\nimport { EditEntityModal } from \"../../../components/EditEntityModal/EditEntityModal\";\nimport { useGetUserById, useUpdateUser } from \"../../../services/userService\";\nimport { UserForm } from \"../UserForm/UserForm\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { UserFormValidationSchema } from \"../../../config/FormValidations\";\nimport { useGetAllOffices } from \"../../../services/officeService\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n userId?: string;\n};\n\nexport const EditUserModal = ({ show, handleClose, userId }: Props) => {\n const { data } = useGetUserById(userId);\n const { mutate: updateUser } = useUpdateUser();\n const { data: offices } = useGetAllOffices();\n const responseError = \"\";\n\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [userId]);\n\n const {\n register,\n handleSubmit,\n reset,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(UserFormValidationSchema),\n });\n\n return (\n
\n {\n updateUser(data);\n }}\n data={data}\n handleSubmit={handleSubmit}\n reset={reset}\n entityForm={\n \n }\n />\n
\n );\n};\n","import { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { strings } from \"../../../config/string\";\nimport { useDeleteUser } from \"../../../services/userService\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n userId?: string;\n};\n\nexport const DeleteUserModal = ({ show, handleClose, userId }: Props) => {\n const { mutate: deleteUser } = useDeleteUser();\n\n return (\n {\n deleteUser(userId);\n handleClose();\n }}\n handleClose={handleClose}\n />\n );\n};\n","import { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { strings } from \"../../../config/string\";\nimport { useAddUser } from \"../../../services/userService\";\nimport { UserForm } from \"../UserForm/UserForm\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { UserFormValidationSchema } from \"../../../config/FormValidations\";\nimport { useGetAllOffices } from \"../../../services/officeService\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n};\n\nexport const AddUserModal = ({ show, handleClose }: Props) => {\n const {\n register,\n handleSubmit,\n reset,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(UserFormValidationSchema),\n });\n\n const { mutateAsync: addUser } = useAddUser();\n const { data: offices } = useGetAllOffices();\n const [responseError, setResoponseError] = useState(\"\");\n\n const handleConfirmation = (user: User) => {\n addUser(user).then((result) => {\n setResoponseError(result);\n if (!result.includes(strings.errorCheckMessage)) {\n setResoponseError(\"\");\n handleClose();\n reset();\n }\n });\n };\n\n const handleModalClose = () => {\n setResoponseError(\"\");\n handleClose();\n reset();\n };\n\n const user = {} as User;\n\n return (\n
\n handleSubmit(handleConfirmation)()}\n message={strings.newUserModalMessage}\n title={strings.newUserModalTitle}\n >\n \n \n
\n );\n};\n","import { EditUserModal } from \"../EditUserModal/EditUserModal\";\nimport { DeleteUserModal } from \"../DeleteUserModal/DeleteUserModal\";\nimport { AddUserModal } from \"../AddUserModal/AddUserModal\";\n\ntype Props = {\n showAdd: boolean;\n onAddClose: () => void;\n showEdit: boolean;\n onEditClose: () => void;\n showDelete: boolean;\n onDeleteClose: () => void;\n userId?: string;\n};\n\nexport const UserCrudModals = ({\n showAdd,\n onAddClose,\n showEdit,\n onEditClose,\n showDelete,\n onDeleteClose,\n userId,\n}: Props) => {\n return (\n <>\n \n \n \n \n );\n};\n","import { useState } from \"react\";\nimport { Row } from \"react-bootstrap\";\nimport { useGetAllUsers } from \"../../../services/userService\";\nimport { UserItem } from \"../UserItem/UserItem\";\nimport { UserCrudModals } from \"../UserCrudModals/UserCrudModals\";\nimport { AddEntityButton } from \"../../../components/AddEntityButton/AddEntityButton\";\nimport { strings } from \"../../../config/string\";\n\nexport const UsersContainer = () => {\n const { data } = useGetAllUsers();\n const [showDelete, setShowDelete] = useState(false);\n const [showEdit, setShowEdit] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [selectedUserId, setSelectedUserId] = useState();\n\n return (\n
\n setShowAdd(true)} text={strings.addNewUser} />\n setShowAdd(false)}\n onDeleteClose={() => setShowDelete(false)}\n onEditClose={() => setShowEdit(false)}\n />\n \n {data &&\n data.map((user: User, index) => (\n {\n setSelectedUserId(user.id);\n setShowEdit(true);\n }}\n onClickDelete={() => {\n setSelectedUserId(user.id);\n setShowDelete(true);\n }}\n />\n ))}\n \n
\n );\n};\n","import { Col, Form, Row } from \"react-bootstrap\";\nimport { UseFormRegister } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\n\ntype Props = {\n folder: Folder;\n handleSubmit: any;\n register: UseFormRegister;\n offices: Office[];\n errors: any;\n officeId?: string;\n};\n\nexport const FolderForm = ({ folder, handleSubmit, register, offices, officeId, errors }: Props) => {\n return (\n
\n \n \n {strings.formFieldName}\n \n \n \n {errors.name?.message}\n \n \n \n \n {strings.formFieldOffice}\n \n \n \n \n ))}\n \n {errors.officeId?.message}\n \n \n
\n );\n};\n","import { useForm } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\nimport { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { useAddFolder } from \"../../../services/folderService\";\nimport { useGetAllOffices } from \"../../../services/officeService\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { FolderForm } from \"../FolderForm/FolderForm\";\nimport { FolderFormValidationSchema } from \"../../../config/FormValidations\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n officeId?: string;\n};\n\nexport const AddFolderModal = ({ show, handleClose, officeId }: Props) => {\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(FolderFormValidationSchema),\n });\n const { mutate: addFolder } = useAddFolder();\n const { data: offices } = useGetAllOffices();\n\n const handleConfirmation = (folder: Folder) => {\n addFolder(folder);\n handleClose();\n reset();\n };\n\n const folder = {} as Folder;\n const handleModalClose = () => {\n handleClose();\n reset();\n };\n\n return (\n
\n handleModalClose()}\n handleConfirmation={() => handleSubmit(handleConfirmation)()}\n message={strings.newFolderModalMessage}\n title={strings.newFolderModalTitle}\n >\n \n \n
\n );\n};\n","import { useEffect } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\nimport { useGetFolderById, useUpdateFolder } from \"../../../services/folderService\";\nimport { useGetAllOffices } from \"../../../services/officeService\";\nimport { EditEntityModal } from \"../../../components/EditEntityModal/EditEntityModal\";\nimport { FolderForm } from \"../FolderForm/FolderForm\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { FolderFormValidationSchema } from \"../../../config/FormValidations\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n folderId?: string;\n officeId?: string;\n};\n\nexport const EditFolderModal = ({ show, handleClose, folderId, officeId }: Props) => {\n const { data } = useGetFolderById(folderId);\n const { mutate: updateFolder } = useUpdateFolder();\n const { data: offices } = useGetAllOffices();\n\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [folderId]);\n\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(FolderFormValidationSchema),\n });\n\n return (\n
\n \n }\n />\n
\n );\n};\n","import { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { strings } from \"../../../config/string\";\nimport { useDeleteFolder } from \"../../../services/folderService\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n folderId?: string;\n};\n\nexport const DeleteFolderModal = ({ show, handleClose, folderId }: Props) => {\n const { mutate: deleteFolder } = useDeleteFolder();\n\n return (\n {\n deleteFolder(folderId);\n handleClose();\n }}\n handleClose={handleClose}\n />\n );\n};\n","import { AddFolderModal } from \"../AddFolderModal/AddFolderModal\";\nimport { EditFolderModal } from \"../EditFolderModal/EditFolderModal\";\nimport { DeleteFolderModal } from \"../DeleteFolderModal/DeleteFolderModal\";\n\ntype Props = {\n showAdd: boolean;\n showDelete: boolean;\n showEdit: boolean;\n onAddClose: () => void;\n onDeleteClose: () => void;\n onEditClose: () => void;\n folderId?: string;\n officeId?: string;\n};\n\nexport const FolderCrudModals = ({\n showAdd,\n showDelete,\n showEdit,\n onAddClose,\n onDeleteClose,\n onEditClose,\n folderId,\n officeId,\n}: Props) => {\n return (\n <>\n {folderId && (\n \n )}\n \n \n \n );\n};\n","import { Badge, Card, Button } from \"react-bootstrap\";\nimport { DeleteButton } from \"../../../components/DeleteButton/DeleteButton\";\nimport { DisplayItem } from \"../../../components/DisplayItem/DisplayItem\";\nimport { EditButton } from \"../../../components/EditButton/EditButton\";\nimport { strings } from \"../../../config/string\";\n\ntype Props = {\n folder: Folder;\n onClickEdit: () => void;\n onClickDelete: () => void;\n onClickProjects: () => void;\n};\n\nexport const FolderItem = ({ folder, onClickEdit, onClickDelete, onClickProjects }: Props) => {\n return (\n \n \n {folder.name}\n \n {folder.officeName}\n \n \n \n
\n \n \n \n {strings.showProjects}\n \n
\n
\n
\n );\n};\n","import { useState } from \"react\";\nimport { Row } from \"react-bootstrap\";\nimport { useHistory } from \"react-router-dom\";\nimport { FolderCrudModals } from \"../FolderCrudModals/FolderCrudModals\";\nimport { AddEntityButton } from \"../../../components/AddEntityButton/AddEntityButton\";\nimport { strings } from \"../../../config/string\";\nimport { FolderItem } from \"../FolderItem/FolderItem\";\n\ntype Props = {\n folders: Folder[];\n officeId?: string;\n organisationId?: string;\n};\n\nexport const FoldersContainer = ({ folders, officeId }: Props) => {\n const [showDelete, setShowDelete] = useState(false);\n const [showEdit, setShowEdit] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [folderId, setFolderId] = useState();\n const history = useHistory();\n\n return (\n
\n setShowAdd(true)}\n text={strings.addNewFolder}\n />\n setShowAdd(false)}\n onDeleteClose={() => setShowDelete(false)}\n onEditClose={() => setShowEdit(false)}\n />\n\n \n {folders &&\n folders.map((folder, index) => (\n {\n setFolderId(folder.id);\n setShowEdit(true);\n }}\n onClickDelete={() => {\n setFolderId(folder.id);\n setShowDelete(true);\n }}\n onClickProjects={() => {\n history.push(`/folders/${folder.id}`);\n }}\n />\n ))}\n \n
\n );\n};\n","import { faArrowLeft } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { Button } from \"react-bootstrap\";\nimport { strings } from \"../../config/string\";\n\ntype Props = {\n onClick: () => void;\n};\n\nexport const BackButton = ({ onClick }: Props) => {\n return (\n \n );\n};\n","import { ProjectsContainer } from \"../../ProjectPage/ProjectsContainer/ProjectsContainer\";\nimport { useHistory } from \"react-router-dom\";\nimport { useGetProjectsByFolderId } from \"../../../services/projectService\";\nimport { useGetFolderById } from \"../../../services/folderService\";\nimport { BackButton } from \"../../../components/BackButton/BackButton\";\n\ntype Props = {\n folderId?: string;\n};\n\nexport const FolderDetailContainer = ({ folderId }: Props) => {\n const history = useHistory();\n const { data: projects } = useGetProjectsByFolderId(folderId);\n const { data: folder } = useGetFolderById(folderId);\n\n return (\n
\n

{folder ? folder.name : \"\"}

\n {\n history.push(\"/folders\");\n }}\n />\n \n
\n );\n};\n","import { Button } from \"react-bootstrap\";\nimport { FoldersContainer } from \"../../../pages/FolderPage/FoldersContainer/FoldersContainer\";\nimport { useHistory } from \"react-router-dom\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowLeft } from \"@fortawesome/free-solid-svg-icons\";\nimport { useGetFolderByOfficeId } from \"../../../services/folderService\";\nimport { strings } from \"../../../config/string\";\nimport { useGetOfficeById } from \"../../../services/officeService\";\ntype Props = {\n officeId?: string;\n};\n\nexport const OfficeDetailContainer = ({ officeId }: Props) => {\n const history = useHistory();\n\n const { data: folders } = useGetFolderByOfficeId(officeId);\n const { data: office } = useGetOfficeById(officeId);\n\n return (\n
\n

{office ? office.name : \"\"}

\n {\n history.push(\"/offices\");\n }}\n className=\"ms-auto mb-2\"\n variant=\"warning\"\n >\n \n {strings.back}\n \n \n
\n );\n};\n","import { Button, Form } from \"react-bootstrap\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { ResetPasswordFormValidationSchema } from \"../../../config/FormValidations\";\n\ntype Props = {\n onSubmit(data: { password: string }): void;\n};\n\nexport const ResetPasswordForm = ({ onSubmit }: Props) => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<{ password: string }>({\n resolver: yupResolver(ResetPasswordFormValidationSchema),\n });\n return (\n
\n \n New Password\n \n {errors.password?.message}\n \n\n \n
\n );\n};\n","import { Button, Form } from \"react-bootstrap\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { ResetPasswordTokenFormValidationSchema } from \"../../../config/FormValidations\";\n\ntype Props = {\n onSubmit(data: { email: string }): void;\n};\n\nexport const ResetPasswordTokenForm = ({ onSubmit }: Props) => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<{ email: string }>({\n resolver: yupResolver(ResetPasswordTokenFormValidationSchema),\n });\n return (\n
\n \n Email\n \n {errors.email?.message}\n \n\n \n
\n );\n};\n","import { Card } from \"react-bootstrap\";\nimport { DeleteButton } from \"../../../components/DeleteButton/DeleteButton\";\nimport { DisplayItem } from \"../../../components/DisplayItem/DisplayItem\";\nimport { EditButton } from \"../../../components/EditButton/EditButton\";\n\ntype Props = {\n organisation: Organisation;\n onClickEdit: () => void;\n onClickDelete: () => void;\n};\n\nexport const OrganisationItem = ({\n organisation,\n onClickEdit,\n onClickDelete,\n}: Props) => {\n return (\n \n \n {organisation.name}\n \n {organisation.description}\n \n \n \n
\n \n \n
\n
\n
\n );\n};\n","import { Col, Form, Row } from \"react-bootstrap\";\nimport { UseFormRegister } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\n\ntype Props = {\n createOrganisationDTO: createOrganizationDTO;\n handleSubmit: any;\n register: UseFormRegister;\n errors: any;\n create?: boolean;\n setValue: React.Dispatch>;\n};\n\nexport const OrganisationForm = ({\n createOrganisationDTO,\n handleSubmit,\n register,\n errors,\n create,\n setValue,\n}: Props) => {\n console.log(\"OrgDOT\", createOrganisationDTO);\n return (\n
\n {false && (\n \n \n ID\n \n \n \n \n \n )}\n\n \n \n {strings.formFieldName}\n \n \n \n \n {errors.name?.message}\n \n \n \n\n \n \n Org Number (10 digits)\n \n \n \n \n {errors.name?.message}\n \n \n \n\n \n \n {strings.formFieldDesc}\n \n \n \n \n {errors.description?.message}\n \n \n \n\n \n \n Logo\n \n \n ) => {\n if (event.target.files && event.target.files.length > 0) {\n const file = event.target.files[0];\n if (file.name.split(\".\").pop() === \"png\") {\n setValue(\n new Blob([file], {\n type: file.type,\n })\n );\n } else {\n alert(\"Please choose a png file\");\n }\n }\n }}\n />\n \n \n\n {create && (\n <>\n \n \n User Name\n \n \n \n \n {errors.description?.message}\n \n \n \n\n \n \n Email\n \n \n \n \n {errors.defaultUser?.email?.message}\n \n \n \n \n )}\n {createOrganisationDTO.organization.logo && (\n \n )}\n \n );\n};\n","import { useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { strings } from \"../../../config/string\";\nimport { OrganisationForm } from \"../OrganisationForm/OrganisationForm\";\nimport { EditEntityModal } from \"../../../components/EditEntityModal/EditEntityModal\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { OrganisationFormValidationSchema } from \"../../../config/FormValidations\";\nimport {\n useGetOrganisationById,\n useUpdateOrganisation,\n} from \"../../../services/organisationService\";\n\ntype Props = {\n organisationId?: string;\n handleClose: () => void;\n show: boolean;\n};\n\nexport const EditOrganisationModal = ({\n organisationId,\n handleClose,\n show,\n}: Props) => {\n const [value, setValue] = useState(null);\n const { mutate: updateOrganisation } = useUpdateOrganisation();\n const { data } = useGetOrganisationById(organisationId);\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(OrganisationFormValidationSchema),\n });\n\n useEffect(() => {\n reset();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [organisationId]);\n\n return (\n
\n {\n organisation.organization.id = organisationId;\n const organizationDto: createOrganizationDTO = {\n organization: { ...organisation.organization },\n defaultUser: null,\n file: value,\n };\n updateOrganisation(organizationDto);\n setTimeout(() => {\n setValue(null);\n }, 2000);\n }}\n data={data}\n handleSubmit={handleSubmit}\n reset={reset}\n entityForm={\n \n }\n />\n
\n );\n};\n","import { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { strings } from \"../../../config/string\";\nimport { useDeleteOrganisation } from \"../../../services/organisationService\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n organisationId?: string;\n};\n\nexport const DeleteOrganisationModal = ({\n show,\n handleClose,\n organisationId,\n}: Props) => {\n const { mutate: deleteorganisation } = useDeleteOrganisation();\n\n return (\n {\n deleteorganisation(organisationId);\n handleClose();\n }}\n handleClose={handleClose}\n />\n );\n};\n","import { yupResolver } from \"@hookform/resolvers/yup\";\nimport { useForm } from \"react-hook-form\";\nimport { ConfirmationModal } from \"../../../components/ConfirmationModal/ConfirmationModal\";\nimport { strings } from \"../../../config/string\";\nimport { OrganisationForm } from \"../OrganisationForm/OrganisationForm\";\nimport { OrganisationFormValidationSchema } from \"../../../config/FormValidations\";\nimport { useAddOrganisation } from \"../../../services/organisationService\";\nimport { useState } from \"react\";\n\ntype Props = {\n show: boolean;\n handleClose: () => void;\n};\n\nexport const AddOrganisationModal = ({ show, handleClose }: Props) => {\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(OrganisationFormValidationSchema),\n });\n const [value, setValue] = useState(null);\n const { mutate: addOrganisation } = useAddOrganisation();\n\n const handleConfirmation = (organisation: createOrganizationDTO) => {\n if (\n !organisation.defaultUser?.email ||\n !organisation.defaultUser.userName ||\n !value\n ) {\n alert(\"Missing userName/email/logo\");\n return;\n }\n addOrganisation({ ...organisation, file: value });\n handleClose();\n reset();\n setTimeout(() => {\n setValue(null);\n }, 2000);\n };\n\n const handleModalClose = () => {\n handleClose();\n reset();\n };\n\n const organisation = {} as Organisation;\n\n return (\n
\n handleModalClose()}\n handleConfirmation={() => handleSubmit(handleConfirmation)()}\n message={strings.newOrganisationModalMessage}\n title={strings.newOrganisationModalTitle}\n >\n \n \n
\n );\n};\n","import { EditOrganisationModal } from \"../EditOrganisationModal/EditOrganisationModal\";\nimport { DeleteOrganisationModal } from \"../DeleteOrganisationModal/DeleteOrganisationModal\";\nimport { AddOrganisationModal } from \"../AddOrganisationModal/AddOrganisationModal\";\n\ntype Props = {\n showAdd: boolean;\n showEdit: boolean;\n showDelete: boolean;\n onEditClose: () => void;\n onDeleteClose: () => void;\n onAddClose: () => void;\n organisationId?: string;\n};\n\nexport const OrganisationCrudModals = ({\n showAdd,\n onAddClose,\n showEdit,\n onEditClose,\n showDelete,\n onDeleteClose,\n organisationId,\n}: Props) => {\n return (\n <>\n \n \n \n \n );\n};\n","import { useState } from \"react\";\nimport { Row } from \"react-bootstrap\";\nimport { OrganisationItem } from \"../OrganisationItem/OrganisationItem\";\nimport { OrganisationCrudModals } from \"../OrganisationCrudModals/OrganisationCrudModals\";\nimport { AddEntityButton } from \"../../../components/AddEntityButton/AddEntityButton\";\nimport { strings } from \"../../../config/string\";\nimport { useGetAllOrganisations } from \"../../../services/organisationService\";\n\nexport const OrganisationContainer = () => {\n const { data } = useGetAllOrganisations();\n const [selectedOrganisationId, setSelectedOrganisationId] =\n useState();\n const [showEdit, setShowEdit] = useState(false);\n const [showAdd, setShowAdd] = useState(false);\n const [showDelete, setShowDelete] = useState(false);\n\n return (\n
\n setShowAdd(true)}\n text={strings.addNewOrganisation}\n />\n setShowAdd(false)}\n onEditClose={() => setShowEdit(false)}\n onDeleteClose={() => setShowDelete(false)}\n />\n \n {data &&\n data.map((organisation, index) => (\n {\n setSelectedOrganisationId(organisation.id);\n setShowEdit(true);\n }}\n onClickDelete={() => {\n setSelectedOrganisationId(organisation.id);\n setShowDelete(true);\n }}\n />\n ))}\n \n
\n );\n};\n","import { Button } from \"react-bootstrap\";\nimport { FoldersContainer } from \"../../FolderPage/FoldersContainer/FoldersContainer\";\nimport { useHistory } from \"react-router-dom\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowLeft } from \"@fortawesome/free-solid-svg-icons\";\nimport { useGetFolderByOrganisationId } from \"../../../services/folderService\";\nimport { strings } from \"../../../config/string\";\nimport { useGetOrganisationById } from \"../../../services/organisationService\";\ntype Props = {\n organisationId?: string;\n};\n\nexport const OrganisationDetailContainer = ({ organisationId }: Props) => {\n const history = useHistory();\n\n const { data: folders } = useGetFolderByOrganisationId(organisationId);\n const { data: organisation } = useGetOrganisationById(organisationId);\n\n return (\n
\n

{organisation ? organisation.name : \"\"}

\n {\n history.push(\"/organisations\");\n }}\n className=\"ms-auto mb-2\"\n variant=\"warning\"\n >\n \n {strings.back}\n \n \n
\n );\n};\n","import React from \"react\";\nimport { IndexPage } from \"../pages/IndexPage/IndexPage\";\nimport { LoginPage } from \"../pages/LoginPage/LoginPage\";\nimport { OfficePage } from \"../pages/OfficePage/OfficePage\";\nimport { ProjectPage } from \"../pages/ProjectPage/ProjectPage\";\nimport { UserPage } from \"../pages/UserPage/UserPage\";\nimport { FolderPage } from \"../pages/FolderPage/FolderPage\";\nimport { FolderDetailPage } from \"../pages/FolderDetailPage/FolderDetailPage\";\nimport { OfficeDetailPage } from \"../pages/OfficeDetailPage/OfficeDetailPage\";\nimport { ResetPasswordPage } from \"../pages/ResetPasswordPage/ResetPasswordPage\";\nimport { ResetPasswordPageToken } from \"../pages/SendResetPasswordTokenPage/SendResetPasswordTokenPage\";\nimport { OrganisationPage } from \"../pages/OrganisationPage/OrganisationPage\";\nimport { OrganisationDetailPage } from \"../pages/OrganisationDetailPage/OrganisationDetailPage\";\n\ninterface Map {\n [key: string]: Route;\n}\n\ninterface Route {\n path: string;\n component: React.FC;\n exact: boolean;\n protected: boolean;\n}\n\nexport const routes: Map = {\n index: {\n path: `/`,\n component: IndexPage,\n exact: true,\n protected: true,\n },\n resetpassword: {\n path: `/resetpassword`,\n component: ResetPasswordPage,\n exact: true,\n protected: false,\n },\n resetpasswordtoken: {\n path: `/resetpasswordtoken`,\n component: ResetPasswordPageToken,\n exact: true,\n protected: false,\n },\n dashboard: {\n path: `/dashboard`,\n component: IndexPage,\n exact: true,\n protected: true,\n },\n offices: {\n path: `/offices`,\n component: OfficePage,\n exact: true,\n protected: true,\n },\n officeDetail: {\n path: `/offices/:id`,\n component: OfficeDetailPage,\n exact: true,\n protected: true,\n },\n organisations: {\n path: `/organisations`,\n component: OrganisationPage,\n exact: true,\n protected: true,\n },\n organisationDetail: {\n path: `/organisations/:id`,\n component: OrganisationDetailPage,\n exact: true,\n protected: true,\n },\n projects: {\n path: `/projects`,\n component: ProjectPage,\n exact: true,\n protected: true,\n },\n users: {\n path: `/users`,\n component: UserPage,\n exact: true,\n protected: true,\n },\n folders: {\n path: `/folders`,\n component: FolderPage,\n exact: true,\n protected: true,\n },\n folderDetail: {\n path: `/folders/:id`,\n component: FolderDetailPage,\n exact: true,\n protected: true,\n },\n login: {\n path: `/login`,\n component: LoginPage,\n exact: true,\n protected: false,\n },\n};\n","import React from \"react\";\nimport { PageContent } from \"../../components/PageContent/PageContent\";\nimport { ResetPasswordForm } from \"./ResetPasswordForm/ResetPasswordForm\";\nimport { useSendPasswordReset } from \"../../services/userService\";\nimport { useHistory, useLocation } from \"react-router\";\nimport { useAuth } from \"../../helpers/useAuth\";\n\nexport function ResetPasswordPage(): React.ReactElement {\n const { mutateAsync } = useSendPasswordReset();\n const location = useLocation();\n const queryParams = new URLSearchParams(location.search);\n\n let url = new URL(window.location.href);\n let rawToken = url.search.split(\"token=\")[1];\n if (rawToken.includes(\"&\")) {\n rawToken = rawToken.split(\"&\")[0];\n }\n const decodedToken = decodeURIComponent(rawToken);\n const email = queryParams.get(\"email\");\n const token = queryParams.get(\"token\");\n\n const { login } = useAuth();\n const { push } = useHistory();\n\n console.log({ token }, { rawToken });\n\n if (typeof token !== \"string\" || typeof email !== \"string\") {\n return <>ERROR IN QUERY PARAMS TOKEN;\n }\n\n return (\n \n {\n debugger;\n mutateAsync({\n password: e.password,\n email,\n token: decodedToken,\n }).then(async () => {\n await login(email, e.password);\n push(\"/dashboard\");\n });\n }}\n />\n \n );\n}\n","import React from \"react\";\nimport { PageContent } from \"../../components/PageContent/PageContent\";\nimport { useSendPasswordResetEmaill } from \"../../services/userService\";\nimport { ResetPasswordTokenForm } from \"./ResetPasswordTokenForm/ResetPasswordTokenForm\";\n\nexport function ResetPasswordPageToken(): React.ReactElement {\n const { mutateAsync } = useSendPasswordResetEmaill();\n\n return (\n \n {\n debugger;\n await mutateAsync(e.email);\n }}\n />\n \n );\n}\n","import { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { OfficesContainer } from \"./OfficesContainer/OfficesContainer\";\n\nexport const OfficePage = () => {\n return (\n \n \n \n );\n};\n","import { useParams } from \"react-router-dom\";\nimport { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { OfficeDetailContainer } from \"../OfficeDetailPage/OfficeDetailContainer/OfficeDetailContainer\";\n\ntype OfficeId = {\n id: string;\n};\nexport const OfficeDetailPage = () => {\n const { id } = useParams();\n return (\n \n \n \n );\n};\n","import { useRecoilValue } from \"recoil\";\nimport { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { OrganisationContainer } from \"./OrganisationContainer/OrganisationContainer\";\nimport { authAtom } from \"../../recoil/auth/atom\";\nimport { superAdmins } from \"../../config/roles\";\n\nexport const OrganisationPage = () => {\n const auth = useRecoilValue(authAtom);\n\n return (\n <>\n {superAdmins.includes(auth.email.toLowerCase()) ? (\n \n \n \n ) : null}\n \n );\n};\n","import { useParams } from \"react-router-dom\";\nimport { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { OrganisationDetailContainer } from \"./OrganisationDetailContainer/OrganisationDetailContainer\";\n\ntype OrganisationId = {\n id: string;\n};\nexport const OrganisationDetailPage = () => {\n const { id } = useParams();\n return (\n \n \n \n );\n};\n","import { useRecoilValue } from \"recoil\";\nimport { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { ProjectsContainer } from \"./ProjectsContainer/ProjectsContainer\";\nimport { useGetAllProjectsByUser } from \"../../services/projectService\";\nimport { authAtom } from \"../../recoil/auth/atom\";\n\nexport const ProjectPage = () => {\n const auth = useRecoilValue(authAtom);\n const { data } = useGetAllProjectsByUser(auth.id);\n\n return (\n \n \n \n );\n};\n","import { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { UsersContainer } from \"./UsersContainer/UsersContainer\";\n\nexport const UserPage = () => {\n return (\n \n \n \n );\n};\n","import { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { FoldersContainer } from \"./FoldersContainer/FoldersContainer\";\nimport { useGetAllFolders } from \"../../services/folderService\";\n\nexport const FolderPage = () => {\n const { data } = useGetAllFolders();\n\n return (\n \n \n \n );\n};\n","import { useParams } from \"react-router-dom\";\nimport { PageContent } from \"../../components/PageContent/PageContent\";\nimport { strings } from \"../../config/string\";\nimport { FolderDetailContainer } from \"./FolderDetailContainer/FolderDetailContainer\";\n\ntype FolderId = {\n id: string;\n};\nexport const FolderDetailPage = () => {\n const { id } = useParams();\n return (\n \n \n \n );\n};\n","import { useState } from \"react\";\nimport { PageContent } from \"../../components/PageContent/PageContent\";\nimport { useAuth } from \"../../helpers/useAuth\";\nimport { useEffect } from \"react\";\nimport { useHistory } from \"react-router\";\nimport { useRecoilValue } from \"recoil\";\nimport { authAtom } from \"../../recoil/auth/atom\";\nimport { LoginForm } from \"./LoginForm/LoginForm\";\nimport { strings } from \"../../config/string\";\nimport { LoginError } from \"./LoginError/LoginError\";\nimport { CustomLoader } from \"../../components/CustomLoader/CustomLoader\";\n\nexport const LoginPage = () => {\n const { login } = useAuth();\n const auth = useRecoilValue(authAtom);\n const history = useHistory();\n const [loggedIn, setLoggedIn] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (auth) {\n history.push(\"/dashboard\");\n }\n }, [auth, history]);\n\n const _login = (user: LoginUser) => {\n setLoading(true);\n login(user.email, user.password).then((result: string) => {\n setLoggedIn(result);\n setLoading(false);\n });\n };\n\n return (\n \n \n \n {loading && }\n \n );\n};\n","import { Nav, Navbar } from \"react-bootstrap\";\nimport { NavLink } from \"react-router-dom\";\nimport { header, userSideBarHeader } from \"../../config/header\";\nimport { routes } from \"../../config/routes\";\nimport { useAuth } from \"../../helpers/useAuth\";\nimport { useRecoilValue } from \"recoil\";\nimport { authAtom } from \"../../recoil/auth/atom\";\nimport Roles from \"../../constants/userRoles\";\nimport { superAdmins } from \"../../config/roles\";\n\nexport const SideBar = () => {\n const { isAuthenticated } = useAuth();\n const auth = useRecoilValue(authAtom);\n const filteredHeader = superAdmins.includes(auth?.email.toLowerCase())\n ? header\n : header.filter((item) => item !== \"organisations\");\n\n return (\n \n \n \n );\n};\n","import { ReactNode } from \"react\";\nimport { Col, Container, Row } from \"react-bootstrap\";\nimport { Content } from \"../Content/Content\";\nimport { Header } from \"../Header/Header\";\nimport { MessageToast } from \"../MessageToast/MessageToast\";\nimport { SideBar } from \"../SideBar/SideBar\";\n\ntype Props = {\n children?: ReactNode;\n};\n\nexport const Layout = ({ children }: Props) => {\n return (\n <>\n
\n \n \n
\n \n \n \n \n \n \n \n {children}\n \n \n \n
\n \n );\n};\n","import { Redirect, Route, Switch } from \"react-router\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport { Layout } from \"./components/Layout/Layout\";\nimport { routes } from \"./config/routes\";\nimport { useAuth } from \"./helpers/useAuth\";\nimport \"./styles/global.scss\";\n\nfunction App() {\n const { isAuthenticated } = useAuth();\n return (\n \n \n \n {Object.entries(routes).map(([key, value]) => {\n return (\n {\n if (!isAuthenticated() && value.protected) {\n return ;\n }\n return ;\n }}\n />\n );\n })}\n \n \n \n );\n}\n\nexport default App;\n","import { QueryClient } from \"react-query\";\n\nexport const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: 1,\n suspense: true,\n },\n },\n});\n","import React, { Suspense } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { QueryClientProvider } from \"react-query\";\nimport { RecoilRoot } from \"recoil\";\nimport App from \"./App\";\nimport { queryClient } from \"./config/queryClient\";\nimport { CustomLoader } from \"./components/CustomLoader/CustomLoader\";\n\nReactDOM.render(\n \n \n \n }>\n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""}