@argusoft/medplat-core 1.0.23 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/{AddFeatures-CTVs_Gr9.js → AddFeatures-CqE3v0BN.js} +2 -2
  2. package/dist/{AddFeatures-CTVs_Gr9.js.map → AddFeatures-CqE3v0BN.js.map} +1 -1
  3. package/dist/AddMenuConfiguration-BSQLl88V.js +6570 -0
  4. package/dist/AddMenuConfiguration-BSQLl88V.js.map +1 -0
  5. package/dist/AddMenuConfiguration.css +1 -1
  6. package/dist/{ChangePasswordModalCore-DONyFFlx.js → ChangePasswordModalCore-DTYWRTa-.js} +955 -952
  7. package/dist/ChangePasswordModalCore-DTYWRTa-.js.map +1 -0
  8. package/dist/{ConditionConfig-C3rF2wXU.js → ConditionConfig-DSsgGEXS.js} +2 -2
  9. package/dist/{ConditionConfig-C3rF2wXU.js.map → ConditionConfig-DSsgGEXS.js.map} +1 -1
  10. package/dist/FhirRawResourceList-ZZFd7gTX.js +550 -0
  11. package/dist/FhirRawResourceList-ZZFd7gTX.js.map +1 -0
  12. package/dist/FhirServerList-Dkq7Kbes.js +116 -0
  13. package/dist/FhirServerList-Dkq7Kbes.js.map +1 -0
  14. package/dist/FhirServerProfile-CUOwC6Wb.js +253 -0
  15. package/dist/FhirServerProfile-CUOwC6Wb.js.map +1 -0
  16. package/dist/FhirServerWizard-Db6Hm4bQ.js +161 -0
  17. package/dist/FhirServerWizard-Db6Hm4bQ.js.map +1 -0
  18. package/dist/{ImmunizationConfigurationBase-CTBoSuSz.js → ImmunizationConfigurationBase-BevKZx_l.js} +386 -302
  19. package/dist/ImmunizationConfigurationBase-BevKZx_l.js.map +1 -0
  20. package/dist/{ManageEventConfiguration-BntUc_YI.js → ManageEventConfiguration-DV3I5POA.js} +4 -4
  21. package/dist/{ManageEventConfiguration-BntUc_YI.js.map → ManageEventConfiguration-DV3I5POA.js.map} +1 -1
  22. package/dist/{ManageRole-CZAk-IlM.js → ManageRole-B9bs_T00.js} +116 -116
  23. package/dist/ManageRole-B9bs_T00.js.map +1 -0
  24. package/dist/{ManageUser-Gv38VHMu.js → ManageUser-AB3_Vfp_.js} +85 -84
  25. package/dist/{ManageUser-Gv38VHMu.js.map → ManageUser-AB3_Vfp_.js.map} +1 -1
  26. package/dist/{MobileMenuManagement-CV6QCeos.js → MobileMenuManagement-CVAKyKDa.js} +33 -32
  27. package/dist/MobileMenuManagement-CVAKyKDa.js.map +1 -0
  28. package/dist/{MobileTypeEventConfigModal-BNjZ8pnq.js → MobileTypeEventConfigModal-BxLympIO.js} +2 -2
  29. package/dist/{MobileTypeEventConfigModal-BNjZ8pnq.js.map → MobileTypeEventConfigModal-BxLympIO.js.map} +1 -1
  30. package/dist/{OtherTypeEventConfigModal-DiVhWDpG.js → OtherTypeEventConfigModal-BeG1GrUi.js} +94 -93
  31. package/dist/OtherTypeEventConfigModal-BeG1GrUi.js.map +1 -0
  32. package/dist/{RoleManagement-B9WgZGEj.js → RoleManagement-BIiW9uTq.js} +2 -2
  33. package/dist/{RoleManagement-B9WgZGEj.js.map → RoleManagement-BIiW9uTq.js.map} +1 -1
  34. package/dist/ServerFormFields-SLghoZ2z.js +136 -0
  35. package/dist/ServerFormFields-SLghoZ2z.js.map +1 -0
  36. package/dist/SyncDialog-BRGpHOE4.js +130 -0
  37. package/dist/SyncDialog-BRGpHOE4.js.map +1 -0
  38. package/dist/{TypeConfiguration-CupQxH9Y.js → TypeConfiguration-37wp-gsl.js} +2 -2
  39. package/dist/{TypeConfiguration-CupQxH9Y.js.map → TypeConfiguration-37wp-gsl.js.map} +1 -1
  40. package/dist/{UserList-BzHsbYel.js → UserList-2gGuDgNa.js} +38 -37
  41. package/dist/{UserList-BzHsbYel.js.map → UserList-2gGuDgNa.js.map} +1 -1
  42. package/dist/{UserListSkeleton-DhIJ5X3y.js → UserListSkeleton-BMKANCtW.js} +57 -93
  43. package/dist/UserListSkeleton-BMKANCtW.js.map +1 -0
  44. package/dist/Users-CsJ08Kjm.js +40 -0
  45. package/dist/Users-CsJ08Kjm.js.map +1 -0
  46. package/dist/dashboardLayoutUtils-Bt5HA96J.js +265 -0
  47. package/dist/dashboardLayoutUtils-Bt5HA96J.js.map +1 -0
  48. package/dist/index.css +1 -1
  49. package/dist/index.js +190 -134
  50. package/dist/index.js.map +1 -1
  51. package/dist/permissions-DEWACxJN.js +308 -0
  52. package/dist/permissions-DEWACxJN.js.map +1 -0
  53. package/package.json +1 -1
  54. package/dist/AddMenuConfiguration-DsnY0Rws.js +0 -2237
  55. package/dist/AddMenuConfiguration-DsnY0Rws.js.map +0 -1
  56. package/dist/ChangePasswordModalCore-DONyFFlx.js.map +0 -1
  57. package/dist/ImmunizationConfigurationBase-CTBoSuSz.js.map +0 -1
  58. package/dist/ManageRole-CZAk-IlM.js.map +0 -1
  59. package/dist/MobileMenuManagement-CV6QCeos.js.map +0 -1
  60. package/dist/OtherTypeEventConfigModal-DiVhWDpG.js.map +0 -1
  61. package/dist/UserListSkeleton-DhIJ5X3y.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RoleManagement-B9WgZGEj.js","sources":["../src/services/Roles.js","../src/views/Roles/Skeletons/RoleManagementSkeleton.jsx","../src/views/Roles/RoleManagement.jsx"],"sourcesContent":["import implementationConfig from \"@/common/config/implementationConfig\";\nimport { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const getAllRoleList = () => api.get(\"/role\");\n\nexport const deleteRoleFeature = (id) =>\n api.delete(implementationConfig.api.useQueryParamStyle ? `/menuconfig/usermenuitem/delete?empMenuItemId=${id}` : `/menuconfig/usermenuitem/${id}`);\n\nexport const getRoleById = (id) => api.get(implementationConfig.api.useQueryParamStyle ? `/role/retrieveById?id=${id}` : `/role/${id}`);\n\nexport const postRole = (params) => api.post(\"/role\", { ...params });\n\nexport const putRole = (params) => implementationConfig.api.useQueryParamStyle ? api.put(\"/role/update\", { ...params }) : api.post(\"/role\", { ...params });\n\nexport const ToggleState = (params) =>\n api.put(`role/?is_active=${params.state === \"INACTIVE\" ? \"true\" : \"false\"}`, {\n ...params,\n });\nexport const postNewFeature = (params, id) =>\n api.post(`/menuconfig/assignnewfeature?roleId=${id}`, { ...params });\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nconst RoleManagementSkeleton = ({ children, isLoading = true }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"pt-6 relative h-[90vh]\">\n {/* skleton for roles and add button */}\n\n <div className=\"flex flex-row h-[80vh] \">\n <div className=\"flex flex-col border border-gray-300 w-[20%] p-2 mr-3 rounded-md\">\n {\" \"}\n <div className=\"flex justify-between\">\n {/* skleton for list of roles and toogle roles */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-23 h-[40px] mr-3\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n <div className=\"flex flex-col border border-gray-300 w-[80%] p-2 rounded-md\">\n <div className=\"flex justify-between\">\n {/* skleton for role name and options */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-24 h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-21 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n </div>\n\n <div className=\"absolute bottom-20 right-[10px] \">\n <div className=\"bg-gray-300 animate-pulse rounded-full w-[40px] h-[40px]\"></div>\n </div>\n </div>\n );\n};\n\nRoleManagementSkeleton.propTypes = {\n children: PropTypes.any,\n loading: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport default RoleManagementSkeleton;\n","import GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { Suspense, useEffect, useState, lazy } from \"react\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport {\n Box,\n Card,\n Switch,\n TextField,\n Button,\n Chip,\n Typography,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport {\n getAllRoleList,\n ToggleState,\n deleteRoleFeature,\n getRoleById,\n} from \"../../services/Roles.js\";\nimport { getRoleList } from \"@/common/services/GlobalApis.js\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport RoleManagementSkeleton from \"./Skeletons/RoleManagementSkeleton.jsx\";\nimport { useSelector } from \"react-redux\";\nconst AddFeatures = lazy(() => import(\"./AddFeatures.jsx\"));\nconst ManageRole = lazy(() => import(\"./ManageRole.jsx\"));\n\nexport default function RoleManagement() {\n const { translate } = useTranslateProvider();\n const [Data, setData] = useState(\"\");\n const [selectedRole, setSelectedRole] = useState(Data[0]);\n const [includeInActive, setincludeInActive] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [openModal, setOpenModal] = useState(false);\n const [openManageRole, setOpenManageRole] = useState(0);\n const [searchText, setSearchText] = useState(\"\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [rights, setRights] = useState({});\n const [confirmToggleOpen, setConfirmToggleOpen] = useState(false);\n const trackEvent = useTrackEvent();\n const currentLoogedInUserRoleId = useSelector((state) => state.Authenticate.user.roleId);\n const [allowedRoleIds, setallowedRoleIds] = useState([]);\n\n const getAllData = async (isPreserveRole = false) => {\n try {\n setIsLoading(true);\n const roleListPromise = includeInActive ? getAllRoleList() : getRoleList();\n let data, userRoleIds = [];\n if (currentLoogedInUserRoleId) {\n // Run both APIs in parallel\n const [{ data: roleData }, currRoleData] = await Promise.all([\n roleListPromise,\n getRoleById(currentLoogedInUserRoleId),\n ]);\n data = roleData;\n userRoleIds = currRoleData?.data?.roleIds || [];\n } else {\n // Only fetch role list\n const { data: roleData } = await roleListPromise;\n data = roleData;\n }\n setallowedRoleIds(userRoleIds);\n // ✅ Filter logic (keep only allowed roles)\n const filteredData =\n userRoleIds.length > 0\n ? data.filter((role) => userRoleIds.includes(role.id))\n : data; // fallback: show all if no roleIds\n setData(filteredData);\n if (!isPreserveRole && filteredData.length > 0) {\n setSelectedRole(filteredData[0]);\n }\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(function () {\n const fetchRights = async () => {\n const { data: featureJson } = await getAssignedFeatures(\"techo.manage.role\");\n if (featureJson) setRights(JSON.parse(featureJson));\n };\n fetchRights();\n getAllData();\n }, []);\n\n const handleCheckboxChange = async (event) => {\n let isChecked = event.target.checked;\n setincludeInActive(event.target.checked);\n try {\n setIsLoading((cur) => !cur);\n let data;\n if (isChecked) {\n ({ data } = await getAllRoleList());\n } else {\n ({ data } = await getRoleList());\n }\n if (allowedRoleIds && allowedRoleIds.length > 0) {\n data = data.filter(\n (role) => allowedRoleIds.includes(role.id)\n );\n }\n setData(data);\n setSelectedRole(data[0]);\n setIsLoading((cur) => !cur);\n setSearchText(\"\");\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const filterData = Data\n ? Data?.filter((feature) =>\n feature.name.toLowerCase().includes(searchText.toLowerCase())\n )\n : [];\n\n const formatDateDDMMYYYY = (timestamp) => {\n if (!timestamp) return \"\";\n const date = new Date(Number(timestamp));\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const year = date.getFullYear();\n return `${day}/${month}/${year}`;\n };\n\n const handleToggleState = async () => {\n setConfirmToggleOpen(false);\n try {\n const payload = Data?.find((data) => data.id === selectedRole.id);\n await ToggleState(payload);\n showToast({\n message: `State succesfully changed from ${payload?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${payload?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n type: \"success\",\n });\n let res;\n setIsLoading((cur) => !cur);\n if (includeInActive) {\n res = await getAllRoleList();\n } else {\n res = await getRoleList();\n }\n\n setData(res.data);\n setSelectedRole(res.data[0]);\n setIsLoading((cur) => !cur);\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in handle active\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const sortedFilteredFeatures = Data\n ? Data.find((obj) => obj.id === selectedRole.id)\n ?.assignedFeatureList.filter((feature) =>\n feature.featureName\n ?.toLowerCase()\n .includes(searchQuery?.toLowerCase())\n )\n .sort((a, b) => a.featureName?.localeCompare(b.featureName))\n : [];\n\n const handleDeleteRoleFeature = async (feature) => {\n try {\n await deleteRoleFeature(feature.userMenuItemId);\n await getAllData(true);\n setSearchQuery(\"\");\n showToast({ message: \"Feature deleted successfully!\", type: \"success\" });\n } catch (error) {\n showToast({ message: error, type: \"error\" });\n }\n };\n\n const handleManageRoleModel = (index) => {\n setOpenManageRole(index);\n trackEvent(\"button_click\", {\n button_name: `${index === 1 ? \"add\" : \"edit\"} role modal button`,\n button_type: \"navigate\",\n button_id: `roles-${index === 1 ? \"add\" : \"edit\"}-button`,\n });\n };\n\n const isRoleListModified = () => {\n getAllData();\n setSearchText(\"\");\n };\n\n const handleOpen = async () => {\n try {\n setOpenModal(true);\n await trackEvent(\"button_click\", {\n button_name: \"add feature button\",\n button_type: \"navigate\",\n button_id: \"roles-addfeatures-button-add\",\n });\n } catch (error) {\n console.error(error);\n }\n };\n\n return GeneralUtil.isTecho && !isLoading && !rights?.[\"view.manage.role\"] ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card\n className=\"h-80 w-150 flex justify-center items-center\"\n >\n <Typography variant=\"h5\" className=\"text-customBlue\">\n You dont have permission to view Roles\n </Typography>\n </Card>\n </Box>\n ) : (\n <RoleManagementSkeleton isLoading={isLoading}>\n <Box className=\"flex flex-col gap-4 p-4 min-[900px]:flex-row min-[900px]:h-[calc(100vh-80px)]\">\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:w-[300px] flex flex-col p-4\"\n >\n <div className=\"flex justify-between items-center mb-3\">\n <Typography\n variant=\"h6\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n User Roles\n </Typography>\n {(!GeneralUtil.isTecho || rights?.['create.manage.role']) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => handleManageRoleModel(1)}\n data-testid=\"managerole-add-button\"\n >\n {translate(\"+ Add Role\")}\n </Button>\n )}\n </div>\n <TextField\n size=\"small\"\n variant=\"outlined\"\n placeholder=\"Search roles...\"\n fullWidth\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n data-testid=\"listofroles-search-input\"\n />\n <div className=\"flex items-center gap-2 mt-3\">\n <Switch\n size=\"small\"\n checked={includeInActive}\n onChange={handleCheckboxChange}\n />\n <Typography variant=\"body2\">Include Inactive</Typography>\n </div>\n <div className=\"flex-1 overflow-y-auto mt-4\">\n {filterData.length > 0 && (\n <>\n {filterData.map((role) => (\n <Card\n key={role.id}\n variant=\"outlined\"\n onClick={() => setSelectedRole(role)}\n className={`p-3 cursor-pointer transition\n ${selectedRole.id === role.id\n ? \"border-b-2\"\n : \"border-b-2 border-0\"\n }`}\n sx={\n selectedRole.id === role.id\n ? {\n bgcolor: (t) => alpha(t.palette.primary.main, 0.08),\n }\n : {}\n }\n >\n <Typography fontWeight={600}>\n {role.name}\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n {role?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {role.assignedFeatureList.length} Features\n </Typography>\n </Card>\n ))}\n </>\n )}\n </div>\n </Card>\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:flex-1 flex flex-col p-5\"\n >\n <div className=\"flex flex-col sm:flex-row justify-between items-start border-b pb-4 gap-4\">\n <div className=\"flex flex-col gap-1 w-full sm:w-auto\">\n <div className=\"flex items-center gap-2\">\n <Typography\n variant=\"h5\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n {selectedRole?.name || \"Select Role\"}\n </Typography>\n {selectedRole?.state === \"ACTIVE\" && (\n <Chip label=\"ACTIVE\" color=\"success\" size=\"small\" />\n )}\n {selectedRole?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </div>\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n className=\"mt-1\"\n >\n Created on {formatDateDDMMYYYY(selectedRole?.createdOn)}\n </Typography>\n </div>\n <div className=\"flex gap-2\">\n {(!GeneralUtil.isTecho || rights?.['update.manage.role.toggleActive']) && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setConfirmToggleOpen(true)}\n >\n {selectedRole?.state === \"ACTIVE\" ? \"Deactivate\" : \"Activate\"}\n </Button>\n )}\n {(!GeneralUtil.isTecho || rights?.['update.manage.role']) && (\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={() => handleManageRoleModel(2)}\n >\n ✏️ Edit Role\n </Button>\n )}\n </div>\n </div>\n {/* ASSIGNED FEATURES */}\n <div className=\"mt-5 flex flex-col flex-1 overflow-hidden\">\n <div className=\"flex flex-col sm:flex-row justify-between items-start sm:items-center mb-4 gap-4\">\n <div className=\"flex flex-row items-center gap-2 w-full sm:w-auto\">\n <Typography fontWeight={600}>{translate(\"Assigned Features\")}</Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ({sortedFilteredFeatures.length} {translate(\"features active for this role\")})\n </Typography>\n </div>\n <TextField\n size=\"small\"\n sx={{ width: { xs: \"100%\", sm: \"60%\" } }}\n placeholder=\"Search Feature Name\"\n variant=\"outlined\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n data-testid=\"assignedfeatures-search-input\"\n />\n </div>\n <Box className=\"overflow-x-auto w-full\">\n <Box\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-2 text-[15px] font-semibold border-b min-w-[500px]\"\n sx={{\n color: \"text.secondary\",\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n }}\n >\n <div>{translate(\"FEATURE NAME\")}</div>\n <div className=\"text-center\">{translate(\"ACTIONS\")}</div>\n </Box>\n <Box\n className=\"h-[calc(100vh-440px)] overflow-y-auto min-w-[500px]\"\n sx={{\n bgcolor: \"background.paper\",\n }}\n >\n {sortedFilteredFeatures.length > 0 && (\n <>\n {sortedFilteredFeatures.map((feature, index) => (\n <Box\n key={feature.id}\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-3 items-center border-b last:border-b-0 transition\"\n sx={{\n \"&:hover\": {\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n },\n }}\n >\n <div className=\"flex flex-col\">\n <Typography sx={{ fontSize: \"13px\", fontWeight: 600 }}>\n {feature.featureName}\n </Typography>\n </div>\n <div className=\"flex justify-center\">\n {(!GeneralUtil.isTecho || rights?.['view.manage.role.unassignFeature']) && (\n <FontAwesomeIcon\n icon={faTrash}\n onClick={() => {\n handleDeleteRoleFeature(feature);\n }}\n color=\"error\"\n className=\"text-red-400 cursor-pointer\"\n data-testid={`assignedfeatures-delete-icon-${index}`}\n />\n )}\n </div>\n </Box>\n ))}\n </>\n )}\n {sortedFilteredFeatures.length === 0 && (\n <>\n <Typography\n className=\"p-4\"\n sx={{ fontSize: \"13px\", fontStyle: \"italic\" }}\n >\n No Features assigned yet!\n </Typography>\n </>\n )}\n </Box>\n </Box>\n </div>\n <Box\n className=\"border-t p-4\"\n sx={{\n bgcolor: (t) => alpha(t.palette.primary.main, 0.06),\n }}\n >\n {(!GeneralUtil.isTecho || rights?.['view.manage.role.assignFeature']) && (\n <Button variant=\"outlined\" size=\"small\" onClick={handleOpen}>\n + Add More Features\n </Button>\n )}\n </Box>\n </Card>\n <CustomConfirmationModal\n open={confirmToggleOpen}\n handleClose={() => setConfirmToggleOpen(false)}\n handleClick={handleToggleState}\n title={selectedRole?.state === \"ACTIVE\" ? \"Deactivate Role\" : \"Activate Role\"}\n description={`Are you sure you want to ${selectedRole?.state === \"ACTIVE\" ? \"deactivate\" : \"activate\"} the role \"${selectedRole?.name}\"?`}\n dataTestId=\"toggle-role-confirm-modal\"\n />\n <Suspense>\n <ManageRole\n isUpdate={openManageRole !== 1}\n selectedId={openManageRole === 2 ? selectedRole.id : null}\n data-testid=\"roles-managerole-add-button\"\n open={openManageRole}\n setOpen={setOpenManageRole}\n isRoleListModified={isRoleListModified}\n />\n </Suspense>\n <Suspense fallback={<div className=\"animate-pulse w-80 h-20 \"></div>}>\n {openModal === true && (\n <AddFeatures\n open={openModal}\n setOpenModal={setOpenModal}\n selectedId={selectedRole.id}\n setData={() => getAllData(true)}\n assignedFeatureList={\n Data\n ? (() =>\n Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n ? Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n : Data[0]?.assignedFeatureList)()\n : []\n }\n data-testid=\"roles-addfeatures-component\"\n />\n )}\n </Suspense>\n </Box>\n </RoleManagementSkeleton>\n );\n}\n"],"names":["getAllRoleList","api","deleteRoleFeature","id","implementationConfig","getRoleById","postRole","params","putRole","ToggleState","postNewFeature","RoleManagementSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","AddFeatures","lazy","ManageRole","RoleManagement","translate","useTranslateProvider","Data","setData","useState","selectedRole","setSelectedRole","includeInActive","setincludeInActive","setIsLoading","openModal","setOpenModal","openManageRole","setOpenManageRole","searchText","setSearchText","searchQuery","setSearchQuery","rights","setRights","confirmToggleOpen","setConfirmToggleOpen","trackEvent","useTrackEvent","currentLoogedInUserRoleId","state","allowedRoleIds","setallowedRoleIds","getAllData","isPreserveRole","roleListPromise","getRoleList","data","userRoleIds","roleData","currRoleData","_a","filteredData","role","error","showToast","useEffect","featureJson","getAssignedFeatures","handleCheckboxChange","event","isChecked","cur","filterData","feature","formatDateDDMMYYYY","timestamp","date","day","month","year","handleToggleState","payload","res","sortedFilteredFeatures","obj","a","b","handleDeleteRoleFeature","handleManageRoleModel","index","isRoleListModified","handleOpen","GeneralUtil","Box","Card","Typography","Button","TextField","Switch","Fragment","t","alpha","Chip","FontAwesomeIcon","faTrash","CustomConfirmationModal","Suspense","_b","_c"],"mappings":"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"}
1
+ {"version":3,"file":"RoleManagement-BIiW9uTq.js","sources":["../src/services/Roles.js","../src/views/Roles/Skeletons/RoleManagementSkeleton.jsx","../src/views/Roles/RoleManagement.jsx"],"sourcesContent":["import implementationConfig from \"@/common/config/implementationConfig\";\nimport { api } from \"@/common/interceptors/AxiosInterceptor\";\n\nexport const getAllRoleList = () => api.get(\"/role\");\n\nexport const deleteRoleFeature = (id) =>\n api.delete(implementationConfig.api.useQueryParamStyle ? `/menuconfig/usermenuitem/delete?empMenuItemId=${id}` : `/menuconfig/usermenuitem/${id}`);\n\nexport const getRoleById = (id) => api.get(implementationConfig.api.useQueryParamStyle ? `/role/retrieveById?id=${id}` : `/role/${id}`);\n\nexport const postRole = (params) => api.post(\"/role\", { ...params });\n\nexport const putRole = (params) => implementationConfig.api.useQueryParamStyle ? api.put(\"/role/update\", { ...params }) : api.post(\"/role\", { ...params });\n\nexport const ToggleState = (params) =>\n api.put(`role/?is_active=${params.state === \"INACTIVE\" ? \"true\" : \"false\"}`, {\n ...params,\n });\nexport const postNewFeature = (params, id) =>\n api.post(`/menuconfig/assignnewfeature?roleId=${id}`, { ...params });\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nconst RoleManagementSkeleton = ({ children, isLoading = true }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"pt-6 relative h-[90vh]\">\n {/* skleton for roles and add button */}\n\n <div className=\"flex flex-row h-[80vh] \">\n <div className=\"flex flex-col border border-gray-300 w-[20%] p-2 mr-3 rounded-md\">\n {\" \"}\n <div className=\"flex justify-between\">\n {/* skleton for list of roles and toogle roles */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-23 h-[40px] mr-3\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n <div className=\"flex flex-col border border-gray-300 w-[80%] p-2 rounded-md\">\n <div className=\"flex justify-between\">\n {/* skleton for role name and options */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-24 h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-21 h-[40px]\"></div>\n </div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-[50px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm mt-2 w-full h-full\"></div>\n </div>\n </div>\n\n <div className=\"absolute bottom-20 right-[10px] \">\n <div className=\"bg-gray-300 animate-pulse rounded-full w-[40px] h-[40px]\"></div>\n </div>\n </div>\n );\n};\n\nRoleManagementSkeleton.propTypes = {\n children: PropTypes.any,\n loading: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport default RoleManagementSkeleton;\n","import GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { Suspense, useEffect, useState, lazy } from \"react\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport {\n Box,\n Card,\n Switch,\n TextField,\n Button,\n Chip,\n Typography,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport {\n getAllRoleList,\n ToggleState,\n deleteRoleFeature,\n getRoleById,\n} from \"../../services/Roles.js\";\nimport { getRoleList } from \"@/common/services/GlobalApis.js\";\nimport { getAssignedFeatures } from \"@/utils/feature.js\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport RoleManagementSkeleton from \"./Skeletons/RoleManagementSkeleton.jsx\";\nimport { useSelector } from \"react-redux\";\nconst AddFeatures = lazy(() => import(\"./AddFeatures.jsx\"));\nconst ManageRole = lazy(() => import(\"./ManageRole.jsx\"));\n\nexport default function RoleManagement() {\n const { translate } = useTranslateProvider();\n const [Data, setData] = useState(\"\");\n const [selectedRole, setSelectedRole] = useState(Data[0]);\n const [includeInActive, setincludeInActive] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [openModal, setOpenModal] = useState(false);\n const [openManageRole, setOpenManageRole] = useState(0);\n const [searchText, setSearchText] = useState(\"\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [rights, setRights] = useState({});\n const [confirmToggleOpen, setConfirmToggleOpen] = useState(false);\n const trackEvent = useTrackEvent();\n const currentLoogedInUserRoleId = useSelector((state) => state.Authenticate.user.roleId);\n const [allowedRoleIds, setallowedRoleIds] = useState([]);\n\n const getAllData = async (isPreserveRole = false) => {\n try {\n setIsLoading(true);\n const roleListPromise = includeInActive ? getAllRoleList() : getRoleList();\n let data, userRoleIds = [];\n if (currentLoogedInUserRoleId) {\n // Run both APIs in parallel\n const [{ data: roleData }, currRoleData] = await Promise.all([\n roleListPromise,\n getRoleById(currentLoogedInUserRoleId),\n ]);\n data = roleData;\n userRoleIds = currRoleData?.data?.roleIds || [];\n } else {\n // Only fetch role list\n const { data: roleData } = await roleListPromise;\n data = roleData;\n }\n setallowedRoleIds(userRoleIds);\n // ✅ Filter logic (keep only allowed roles)\n const filteredData =\n userRoleIds.length > 0\n ? data.filter((role) => userRoleIds.includes(role.id))\n : data; // fallback: show all if no roleIds\n setData(filteredData);\n if (!isPreserveRole && filteredData.length > 0) {\n setSelectedRole(filteredData[0]);\n }\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(function () {\n const fetchRights = async () => {\n const { data: featureJson } = await getAssignedFeatures(\"techo.manage.role\");\n if (featureJson) setRights(JSON.parse(featureJson));\n };\n fetchRights();\n getAllData();\n }, []);\n\n const handleCheckboxChange = async (event) => {\n let isChecked = event.target.checked;\n setincludeInActive(event.target.checked);\n try {\n setIsLoading((cur) => !cur);\n let data;\n if (isChecked) {\n ({ data } = await getAllRoleList());\n } else {\n ({ data } = await getRoleList());\n }\n if (allowedRoleIds && allowedRoleIds.length > 0) {\n data = data.filter(\n (role) => allowedRoleIds.includes(role.id)\n );\n }\n setData(data);\n setSelectedRole(data[0]);\n setIsLoading((cur) => !cur);\n setSearchText(\"\");\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in getting role data\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const filterData = Data\n ? Data?.filter((feature) =>\n feature.name.toLowerCase().includes(searchText.toLowerCase())\n )\n : [];\n\n const formatDateDDMMYYYY = (timestamp) => {\n if (!timestamp) return \"\";\n const date = new Date(Number(timestamp));\n const day = String(date.getDate()).padStart(2, \"0\");\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const year = date.getFullYear();\n return `${day}/${month}/${year}`;\n };\n\n const handleToggleState = async () => {\n setConfirmToggleOpen(false);\n try {\n const payload = Data?.find((data) => data.id === selectedRole.id);\n await ToggleState(payload);\n showToast({\n message: `State succesfully changed from ${payload?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${payload?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n type: \"success\",\n });\n let res;\n setIsLoading((cur) => !cur);\n if (includeInActive) {\n res = await getAllRoleList();\n } else {\n res = await getRoleList();\n }\n\n setData(res.data);\n setSelectedRole(res.data[0]);\n setIsLoading((cur) => !cur);\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in handle active\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const sortedFilteredFeatures = Data\n ? Data.find((obj) => obj.id === selectedRole.id)\n ?.assignedFeatureList.filter((feature) =>\n feature.featureName\n ?.toLowerCase()\n .includes(searchQuery?.toLowerCase())\n )\n .sort((a, b) => a.featureName?.localeCompare(b.featureName))\n : [];\n\n const handleDeleteRoleFeature = async (feature) => {\n try {\n await deleteRoleFeature(feature.userMenuItemId);\n await getAllData(true);\n setSearchQuery(\"\");\n showToast({ message: \"Feature deleted successfully!\", type: \"success\" });\n } catch (error) {\n showToast({ message: error, type: \"error\" });\n }\n };\n\n const handleManageRoleModel = (index) => {\n setOpenManageRole(index);\n trackEvent(\"button_click\", {\n button_name: `${index === 1 ? \"add\" : \"edit\"} role modal button`,\n button_type: \"navigate\",\n button_id: `roles-${index === 1 ? \"add\" : \"edit\"}-button`,\n });\n };\n\n const isRoleListModified = () => {\n getAllData();\n setSearchText(\"\");\n };\n\n const handleOpen = async () => {\n try {\n setOpenModal(true);\n await trackEvent(\"button_click\", {\n button_name: \"add feature button\",\n button_type: \"navigate\",\n button_id: \"roles-addfeatures-button-add\",\n });\n } catch (error) {\n console.error(error);\n }\n };\n\n return GeneralUtil.isTecho && !isLoading && !rights?.[\"view.manage.role\"] ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card\n className=\"h-80 w-150 flex justify-center items-center\"\n >\n <Typography variant=\"h5\" className=\"text-customBlue\">\n You dont have permission to view Roles\n </Typography>\n </Card>\n </Box>\n ) : (\n <RoleManagementSkeleton isLoading={isLoading}>\n <Box className=\"flex flex-col gap-4 p-4 min-[900px]:flex-row min-[900px]:h-[calc(100vh-80px)]\">\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:w-[300px] flex flex-col p-4\"\n >\n <div className=\"flex justify-between items-center mb-3\">\n <Typography\n variant=\"h6\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n User Roles\n </Typography>\n {(!GeneralUtil.isTecho || rights?.['create.manage.role']) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n onClick={() => handleManageRoleModel(1)}\n data-testid=\"managerole-add-button\"\n >\n {translate(\"+ Add Role\")}\n </Button>\n )}\n </div>\n <TextField\n size=\"small\"\n variant=\"outlined\"\n placeholder=\"Search roles...\"\n fullWidth\n value={searchText}\n onChange={(e) => setSearchText(e.target.value)}\n data-testid=\"listofroles-search-input\"\n />\n <div className=\"flex items-center gap-2 mt-3\">\n <Switch\n size=\"small\"\n checked={includeInActive}\n onChange={handleCheckboxChange}\n />\n <Typography variant=\"body2\">Include Inactive</Typography>\n </div>\n <div className=\"flex-1 overflow-y-auto mt-4\">\n {filterData.length > 0 && (\n <>\n {filterData.map((role) => (\n <Card\n key={role.id}\n variant=\"outlined\"\n onClick={() => setSelectedRole(role)}\n className={`p-3 cursor-pointer transition\n ${selectedRole.id === role.id\n ? \"border-b-2\"\n : \"border-b-2 border-0\"\n }`}\n sx={\n selectedRole.id === role.id\n ? {\n bgcolor: (t) => alpha(t.palette.primary.main, 0.08),\n }\n : {}\n }\n >\n <Typography fontWeight={600}>\n {role.name}\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n {role?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {role.assignedFeatureList.length} Features\n </Typography>\n </Card>\n ))}\n </>\n )}\n </div>\n </Card>\n <Card\n variant=\"outlined\"\n className=\"w-full min-[900px]:flex-1 flex flex-col p-5\"\n >\n <div className=\"flex flex-col sm:flex-row justify-between items-start border-b pb-4 gap-4\">\n <div className=\"flex flex-col gap-1 w-full sm:w-auto\">\n <div className=\"flex items-center gap-2\">\n <Typography\n variant=\"h5\"\n fontWeight={600}\n className=\"text-customBlue\"\n >\n {selectedRole?.name || \"Select Role\"}\n </Typography>\n {selectedRole?.state === \"ACTIVE\" && (\n <Chip label=\"ACTIVE\" color=\"success\" size=\"small\" />\n )}\n {selectedRole?.state === \"INACTIVE\" && (\n <Chip label=\"INACTIVE\" color=\"disabled\" size=\"small\" />\n )}\n </div>\n <Typography\n variant=\"body2\"\n color=\"text.secondary\"\n className=\"mt-1\"\n >\n Created on {formatDateDDMMYYYY(selectedRole?.createdOn)}\n </Typography>\n </div>\n <div className=\"flex gap-2\">\n {(!GeneralUtil.isTecho || rights?.['update.manage.role.toggleActive']) && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setConfirmToggleOpen(true)}\n >\n {selectedRole?.state === \"ACTIVE\" ? \"Deactivate\" : \"Activate\"}\n </Button>\n )}\n {(!GeneralUtil.isTecho || rights?.['update.manage.role']) && (\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={() => handleManageRoleModel(2)}\n >\n ✏️ Edit Role\n </Button>\n )}\n </div>\n </div>\n {/* ASSIGNED FEATURES */}\n <div className=\"mt-5 flex flex-col flex-1 overflow-hidden\">\n <div className=\"flex flex-col sm:flex-row justify-between items-start sm:items-center mb-4 gap-4\">\n <div className=\"flex flex-row items-center gap-2 w-full sm:w-auto\">\n <Typography fontWeight={600}>{translate(\"Assigned Features\")}</Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n ({sortedFilteredFeatures.length} {translate(\"features active for this role\")})\n </Typography>\n </div>\n <TextField\n size=\"small\"\n sx={{ width: { xs: \"100%\", sm: \"60%\" } }}\n placeholder=\"Search Feature Name\"\n variant=\"outlined\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n data-testid=\"assignedfeatures-search-input\"\n />\n </div>\n <Box className=\"overflow-x-auto w-full\">\n <Box\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-2 text-[15px] font-semibold border-b min-w-[500px]\"\n sx={{\n color: \"text.secondary\",\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n }}\n >\n <div>{translate(\"FEATURE NAME\")}</div>\n <div className=\"text-center\">{translate(\"ACTIONS\")}</div>\n </Box>\n <Box\n className=\"h-[calc(100vh-440px)] overflow-y-auto min-w-[500px]\"\n sx={{\n bgcolor: \"background.paper\",\n }}\n >\n {sortedFilteredFeatures.length > 0 && (\n <>\n {sortedFilteredFeatures.map((feature, index) => (\n <Box\n key={feature.id}\n className=\"grid grid-cols-[minmax(340px,1.5fr)_120px] px-4 py-3 items-center border-b last:border-b-0 transition\"\n sx={{\n \"&:hover\": {\n bgcolor: (t) => alpha(t.palette.action.hover, 0.04),\n },\n }}\n >\n <div className=\"flex flex-col\">\n <Typography sx={{ fontSize: \"13px\", fontWeight: 600 }}>\n {feature.featureName}\n </Typography>\n </div>\n <div className=\"flex justify-center\">\n {(!GeneralUtil.isTecho || rights?.['view.manage.role.unassignFeature']) && (\n <FontAwesomeIcon\n icon={faTrash}\n onClick={() => {\n handleDeleteRoleFeature(feature);\n }}\n color=\"error\"\n className=\"text-red-400 cursor-pointer\"\n data-testid={`assignedfeatures-delete-icon-${index}`}\n />\n )}\n </div>\n </Box>\n ))}\n </>\n )}\n {sortedFilteredFeatures.length === 0 && (\n <>\n <Typography\n className=\"p-4\"\n sx={{ fontSize: \"13px\", fontStyle: \"italic\" }}\n >\n No Features assigned yet!\n </Typography>\n </>\n )}\n </Box>\n </Box>\n </div>\n <Box\n className=\"border-t p-4\"\n sx={{\n bgcolor: (t) => alpha(t.palette.primary.main, 0.06),\n }}\n >\n {(!GeneralUtil.isTecho || rights?.['view.manage.role.assignFeature']) && (\n <Button variant=\"outlined\" size=\"small\" onClick={handleOpen}>\n + Add More Features\n </Button>\n )}\n </Box>\n </Card>\n <CustomConfirmationModal\n open={confirmToggleOpen}\n handleClose={() => setConfirmToggleOpen(false)}\n handleClick={handleToggleState}\n title={selectedRole?.state === \"ACTIVE\" ? \"Deactivate Role\" : \"Activate Role\"}\n description={`Are you sure you want to ${selectedRole?.state === \"ACTIVE\" ? \"deactivate\" : \"activate\"} the role \"${selectedRole?.name}\"?`}\n dataTestId=\"toggle-role-confirm-modal\"\n />\n <Suspense>\n <ManageRole\n isUpdate={openManageRole !== 1}\n selectedId={openManageRole === 2 ? selectedRole.id : null}\n data-testid=\"roles-managerole-add-button\"\n open={openManageRole}\n setOpen={setOpenManageRole}\n isRoleListModified={isRoleListModified}\n />\n </Suspense>\n <Suspense fallback={<div className=\"animate-pulse w-80 h-20 \"></div>}>\n {openModal === true && (\n <AddFeatures\n open={openModal}\n setOpenModal={setOpenModal}\n selectedId={selectedRole.id}\n setData={() => getAllData(true)}\n assignedFeatureList={\n Data\n ? (() =>\n Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n ? Data?.find((data) => data?.id === selectedRole.id)\n ?.assignedFeatureList\n : Data[0]?.assignedFeatureList)()\n : []\n }\n data-testid=\"roles-addfeatures-component\"\n />\n )}\n </Suspense>\n </Box>\n </RoleManagementSkeleton>\n );\n}\n"],"names":["getAllRoleList","api","deleteRoleFeature","id","implementationConfig","getRoleById","postRole","params","putRole","ToggleState","postNewFeature","RoleManagementSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","AddFeatures","lazy","ManageRole","RoleManagement","translate","useTranslateProvider","Data","setData","useState","selectedRole","setSelectedRole","includeInActive","setincludeInActive","setIsLoading","openModal","setOpenModal","openManageRole","setOpenManageRole","searchText","setSearchText","searchQuery","setSearchQuery","rights","setRights","confirmToggleOpen","setConfirmToggleOpen","trackEvent","useTrackEvent","currentLoogedInUserRoleId","state","allowedRoleIds","setallowedRoleIds","getAllData","isPreserveRole","roleListPromise","getRoleList","data","userRoleIds","roleData","currRoleData","_a","filteredData","role","error","showToast","useEffect","featureJson","getAssignedFeatures","handleCheckboxChange","event","isChecked","cur","filterData","feature","formatDateDDMMYYYY","timestamp","date","day","month","year","handleToggleState","payload","res","sortedFilteredFeatures","obj","a","b","handleDeleteRoleFeature","handleManageRoleModel","index","isRoleListModified","handleOpen","GeneralUtil","Box","Card","Typography","Button","TextField","Switch","Fragment","t","alpha","Chip","FontAwesomeIcon","faTrash","CustomConfirmationModal","Suspense","_b","_c"],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { jsxs as o, jsx as t, Fragment as d } from "react/jsx-runtime";
2
+ import h from "prop-types";
3
+ import { Stack as p, TextField as n, Divider as b, Typography as m, FormControl as g, InputLabel as v, Select as f, MenuItem as y, FormControlLabel as A, Switch as T } from "@mui/material";
4
+ const S = /^[a-z][a-z0-9-]*$/, U = [
5
+ { value: "NONE", label: "None (public server)" },
6
+ { value: "BASIC", label: "Basic (username + password)" },
7
+ { value: "BEARER", label: "Bearer token" },
8
+ { value: "API_KEY", label: "API key header" }
9
+ ];
10
+ function C({ value: a, onChange: u, isEdit: l = !1, errors: s = {} }) {
11
+ const r = (e) => u({ ...a, ...e }), i = a.authType ?? "NONE", c = l && a.hasSecret ? "•••••••• (leave blank to keep current)" : "";
12
+ return /* @__PURE__ */ o(p, { spacing: 2.5, children: [
13
+ /* @__PURE__ */ t(
14
+ n,
15
+ {
16
+ label: "Server Name *",
17
+ size: "small",
18
+ fullWidth: !0,
19
+ value: a.name ?? "",
20
+ onChange: (e) => r({ name: e.target.value }),
21
+ disabled: l,
22
+ error: !!s.name,
23
+ helperText: s.name ?? "Lowercase letters, digits and hyphens. e.g. primary-terminology"
24
+ }
25
+ ),
26
+ /* @__PURE__ */ t(
27
+ n,
28
+ {
29
+ label: "Base URL *",
30
+ size: "small",
31
+ fullWidth: !0,
32
+ value: a.baseUrl ?? "",
33
+ onChange: (e) => r({ baseUrl: e.target.value }),
34
+ error: !!s.baseUrl,
35
+ helperText: s.baseUrl ?? "The FHIR server base URL, e.g. https://your-fhir-server/fhir"
36
+ }
37
+ ),
38
+ /* @__PURE__ */ t(b, { textAlign: "left", children: /* @__PURE__ */ t(m, { variant: "caption", color: "text.secondary", sx: { fontWeight: 700 }, children: "AUTHENTICATION" }) }),
39
+ /* @__PURE__ */ o(g, { fullWidth: !0, size: "small", children: [
40
+ /* @__PURE__ */ t(v, { children: "Authentication" }),
41
+ /* @__PURE__ */ t(f, { value: i, label: "Authentication", onChange: (e) => r({ authType: e.target.value }), children: U.map((e) => /* @__PURE__ */ t(y, { value: e.value, children: e.label }, e.value)) })
42
+ ] }),
43
+ i === "BASIC" && /* @__PURE__ */ o(d, { children: [
44
+ /* @__PURE__ */ t(
45
+ n,
46
+ {
47
+ label: "Username",
48
+ size: "small",
49
+ fullWidth: !0,
50
+ value: a.authUsername ?? "",
51
+ onChange: (e) => r({ authUsername: e.target.value })
52
+ }
53
+ ),
54
+ /* @__PURE__ */ t(
55
+ n,
56
+ {
57
+ label: "Password",
58
+ type: "password",
59
+ size: "small",
60
+ fullWidth: !0,
61
+ value: a.authSecret ?? "",
62
+ placeholder: c,
63
+ onChange: (e) => r({ authSecret: e.target.value })
64
+ }
65
+ )
66
+ ] }),
67
+ i === "BEARER" && /* @__PURE__ */ t(
68
+ n,
69
+ {
70
+ label: "Bearer Token",
71
+ type: "password",
72
+ size: "small",
73
+ fullWidth: !0,
74
+ value: a.authSecret ?? "",
75
+ placeholder: c,
76
+ onChange: (e) => r({ authSecret: e.target.value }),
77
+ helperText: "Sent as: Authorization: Bearer <token>"
78
+ }
79
+ ),
80
+ i === "API_KEY" && /* @__PURE__ */ o(d, { children: [
81
+ /* @__PURE__ */ t(
82
+ n,
83
+ {
84
+ label: "Header Name",
85
+ size: "small",
86
+ fullWidth: !0,
87
+ value: a.authHeaderName ?? "",
88
+ onChange: (e) => r({ authHeaderName: e.target.value }),
89
+ placeholder: "e.g. x-api-key"
90
+ }
91
+ ),
92
+ /* @__PURE__ */ t(
93
+ n,
94
+ {
95
+ label: "Header Value",
96
+ type: "password",
97
+ size: "small",
98
+ fullWidth: !0,
99
+ value: a.authSecret ?? "",
100
+ placeholder: c,
101
+ onChange: (e) => r({ authSecret: e.target.value })
102
+ }
103
+ )
104
+ ] }),
105
+ /* @__PURE__ */ t(
106
+ A,
107
+ {
108
+ control: /* @__PURE__ */ t(T, { checked: a.isActive ?? !0, onChange: (e) => r({ isActive: e.target.checked }) }),
109
+ label: /* @__PURE__ */ t(m, { variant: "body2", children: "Active" })
110
+ }
111
+ )
112
+ ] });
113
+ }
114
+ C.propTypes = {
115
+ value: h.object.isRequired,
116
+ onChange: h.func.isRequired,
117
+ isEdit: h.bool,
118
+ errors: h.object
119
+ };
120
+ function E(a, { isEdit: u = !1 } = {}) {
121
+ var s, r;
122
+ const l = {};
123
+ if ((s = a.name) != null && s.trim() ? !u && !S.test(a.name) && (l.name = "Lowercase letters, digits, hyphens; must start with a letter.") : l.name = "Name is required.", !((r = a.baseUrl) != null && r.trim())) l.baseUrl = "Base URL is required.";
124
+ else
125
+ try {
126
+ new URL(a.baseUrl);
127
+ } catch {
128
+ l.baseUrl = "Must be a valid URL.";
129
+ }
130
+ return l;
131
+ }
132
+ export {
133
+ C as S,
134
+ E as v
135
+ };
136
+ //# sourceMappingURL=ServerFormFields-SLghoZ2z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerFormFields-SLghoZ2z.js","sources":["../src/views/FhirResource/components/ServerFormFields.jsx"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport {\n Stack, TextField, FormControl, InputLabel, Select, MenuItem,\n FormControlLabel, Switch, Typography, Divider,\n} from \"@mui/material\";\n\nconst NAME_PATTERN = /^[a-z][a-z0-9-]*$/;\n\nconst AUTH_TYPES = [\n { value: \"NONE\", label: \"None (public server)\" },\n { value: \"BASIC\", label: \"Basic (username + password)\" },\n { value: \"BEARER\", label: \"Bearer token\" },\n { value: \"API_KEY\", label: \"API key header\" },\n];\n\n/**\n * Controlled server form fields (name, base URL, authentication). Shared by the\n * creation wizard and the edit modal. `value` is the form object; `onChange`\n * receives a partial patch.\n */\nexport default function ServerFormFields({ value, onChange, isEdit = false, errors = {} }) {\n const set = (patch) => onChange({ ...value, ...patch });\n const authType = value.authType ?? \"NONE\";\n const secretPlaceholder = isEdit && value.hasSecret ? \"•••••••• (leave blank to keep current)\" : \"\";\n\n return (\n <Stack spacing={2.5}>\n <TextField\n label=\"Server Name *\"\n size=\"small\"\n fullWidth\n value={value.name ?? \"\"}\n onChange={(e) => set({ name: e.target.value })}\n disabled={isEdit}\n error={Boolean(errors.name)}\n helperText={errors.name ?? \"Lowercase letters, digits and hyphens. e.g. primary-terminology\"}\n />\n\n <TextField\n label=\"Base URL *\"\n size=\"small\"\n fullWidth\n value={value.baseUrl ?? \"\"}\n onChange={(e) => set({ baseUrl: e.target.value })}\n error={Boolean(errors.baseUrl)}\n helperText={errors.baseUrl ?? \"The FHIR server base URL, e.g. https://your-fhir-server/fhir\"}\n />\n\n <Divider textAlign=\"left\">\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ fontWeight: 700 }}>AUTHENTICATION</Typography>\n </Divider>\n\n <FormControl fullWidth size=\"small\">\n <InputLabel>Authentication</InputLabel>\n <Select value={authType} label=\"Authentication\" onChange={(e) => set({ authType: e.target.value })}>\n {AUTH_TYPES.map((a) => <MenuItem key={a.value} value={a.value}>{a.label}</MenuItem>)}\n </Select>\n </FormControl>\n\n {authType === \"BASIC\" && (\n <>\n <TextField label=\"Username\" size=\"small\" fullWidth\n value={value.authUsername ?? \"\"} onChange={(e) => set({ authUsername: e.target.value })} />\n <TextField label=\"Password\" type=\"password\" size=\"small\" fullWidth\n value={value.authSecret ?? \"\"} placeholder={secretPlaceholder}\n onChange={(e) => set({ authSecret: e.target.value })} />\n </>\n )}\n\n {authType === \"BEARER\" && (\n <TextField label=\"Bearer Token\" type=\"password\" size=\"small\" fullWidth\n value={value.authSecret ?? \"\"} placeholder={secretPlaceholder}\n onChange={(e) => set({ authSecret: e.target.value })}\n helperText=\"Sent as: Authorization: Bearer <token>\" />\n )}\n\n {authType === \"API_KEY\" && (\n <>\n <TextField label=\"Header Name\" size=\"small\" fullWidth\n value={value.authHeaderName ?? \"\"} onChange={(e) => set({ authHeaderName: e.target.value })}\n placeholder=\"e.g. x-api-key\" />\n <TextField label=\"Header Value\" type=\"password\" size=\"small\" fullWidth\n value={value.authSecret ?? \"\"} placeholder={secretPlaceholder}\n onChange={(e) => set({ authSecret: e.target.value })} />\n </>\n )}\n\n <FormControlLabel\n control={<Switch checked={value.isActive ?? true} onChange={(e) => set({ isActive: e.target.checked })} />}\n label={<Typography variant=\"body2\">Active</Typography>}\n />\n </Stack>\n );\n}\n\nServerFormFields.propTypes = {\n value: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n isEdit: PropTypes.bool,\n errors: PropTypes.object,\n};\n\nexport function validateServerForm(form, { isEdit = false } = {}) {\n const errors = {};\n if (!form.name?.trim()) errors.name = \"Name is required.\";\n else if (!isEdit && !NAME_PATTERN.test(form.name)) errors.name = \"Lowercase letters, digits, hyphens; must start with a letter.\";\n if (!form.baseUrl?.trim()) errors.baseUrl = \"Base URL is required.\";\n else {\n try { new URL(form.baseUrl); } catch { errors.baseUrl = \"Must be a valid URL.\"; }\n }\n return errors;\n}\n"],"names":["NAME_PATTERN","AUTH_TYPES","ServerFormFields","value","onChange","isEdit","errors","set","patch","authType","secretPlaceholder","jsxs","Stack","jsx","TextField","Divider","Typography","FormControl","InputLabel","Select","a","MenuItem","Fragment","FormControlLabel","Switch","PropTypes","validateServerForm","form","_a","_b"],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { jsxs as n, jsx as t, Fragment as G } from "react/jsx-runtime";
2
+ import { useState as i, useMemo as V } from "react";
3
+ import { Dialog as _, DialogTitle as v, Typography as T, Tabs as Y, Tab as W, DialogContent as J, Box as j, Alert as K, FormControlLabel as C, Checkbox as B, Divider as N, Stack as k, FormControl as Q, InputLabel as X, Select as Z, MenuItem as D, TextField as ee, Switch as te, Chip as se, DialogActions as ae, Button as R } from "@mui/material";
4
+ import { showToast as d } from "@/common/toaster/toaster";
5
+ import { d as le, s as ce, j as ne, k as ie } from "./permissions-DEWACxJN.js";
6
+ const oe = ["ValueSet", "CodeSystem", "Organization", "Location", "HealthcareService"];
7
+ function ue({ open: z, server: s, onClose: p, onDone: o }) {
8
+ var A;
9
+ const [h, E] = i("types"), [y, F] = i({}), [u, H] = i("ValueSet"), [g, L] = i(""), [f, O] = i(!0), [c, m] = i(!1), [w, I] = i(null), r = V(() => {
10
+ const e = (s == null ? void 0 : s.supportedResources) ?? [];
11
+ return e.length ? e : oe;
12
+ }, [s]), S = Object.keys(y).filter((e) => y[e]), P = r.length > 0 && r.every((e) => y[e]), M = r.some((e) => y[e]), U = (e) => {
13
+ F(Object.fromEntries(r.map((l) => [l, e])));
14
+ }, $ = async () => {
15
+ var e, l;
16
+ if (S.length === 0) {
17
+ d({ type: "error", message: "Select at least one resource type." });
18
+ return;
19
+ }
20
+ m(!0);
21
+ try {
22
+ const a = await ce(s.id, S, {
23
+ alsoProcess: f,
24
+ onProgress: I
25
+ });
26
+ d({ type: "success", message: `Synced ${a} resource(s).` }), o == null || o(), p();
27
+ } catch (a) {
28
+ d({ type: "error", message: ((l = (e = a == null ? void 0 : a.response) == null ? void 0 : e.data) == null ? void 0 : l.message) ?? "Sync failed." });
29
+ } finally {
30
+ m(!1), I(null);
31
+ }
32
+ }, q = async () => {
33
+ var e, l;
34
+ if (!u || !g.trim()) {
35
+ d({ type: "error", message: "Resource type and FHIR id are required." });
36
+ return;
37
+ }
38
+ m(!0);
39
+ try {
40
+ const a = await ne(s.id, u, g.trim()), b = a == null ? void 0 : a.data;
41
+ f && (b != null && b.id) && await ie(b.id), d({ type: "success", message: `Synced ${u}/${g.trim()}.` }), o == null || o(), p();
42
+ } catch (a) {
43
+ d({ type: "error", message: ((l = (e = a == null ? void 0 : a.response) == null ? void 0 : e.data) == null ? void 0 : l.message) ?? "Sync failed." });
44
+ } finally {
45
+ m(!1);
46
+ }
47
+ }, x = c && h === "types" && w;
48
+ return /* @__PURE__ */ n(_, { open: z, onClose: c ? void 0 : p, maxWidth: "sm", fullWidth: !0, children: [
49
+ /* @__PURE__ */ n(v, { children: [
50
+ "Sync from “",
51
+ s == null ? void 0 : s.name,
52
+ "”",
53
+ /* @__PURE__ */ t(T, { variant: "caption", color: "text.secondary", display: "block", children: s == null ? void 0 : s.baseUrl })
54
+ ] }),
55
+ !x && /* @__PURE__ */ n(Y, { value: h, onChange: (e, l) => E(l), sx: { px: 3, "& .MuiTab-root": { textTransform: "none", fontWeight: 700 } }, children: [
56
+ /* @__PURE__ */ t(W, { value: "types", label: "By Resource Type", disabled: c }),
57
+ /* @__PURE__ */ t(W, { value: "single", label: "Single Resource", disabled: c })
58
+ ] }),
59
+ /* @__PURE__ */ n(J, { dividers: !0, children: [
60
+ x ? /* @__PURE__ */ t(le, { progress: w }) : h === "types" ? /* @__PURE__ */ n(j, { children: [
61
+ !((A = s == null ? void 0 : s.supportedResources) != null && A.length) && /* @__PURE__ */ t(K, { severity: "info", sx: { mb: 2 }, children: "Capability not discovered yet — showing common resource types. Use “Refresh Capability” on the server to list exactly what this server supports." }),
62
+ /* @__PURE__ */ t(
63
+ C,
64
+ {
65
+ control: /* @__PURE__ */ t(
66
+ B,
67
+ {
68
+ checked: P,
69
+ indeterminate: M && !P,
70
+ onChange: (e) => U(e.target.checked)
71
+ }
72
+ ),
73
+ label: /* @__PURE__ */ t(T, { variant: "body2", sx: { fontWeight: 700 }, children: "Select All" }),
74
+ sx: { mb: 0.5 }
75
+ }
76
+ ),
77
+ /* @__PURE__ */ t(N, { sx: { mb: 1 } }),
78
+ /* @__PURE__ */ t(k, { children: r.map((e) => /* @__PURE__ */ t(
79
+ C,
80
+ {
81
+ control: /* @__PURE__ */ t(
82
+ B,
83
+ {
84
+ checked: !!y[e],
85
+ onChange: (l) => F((a) => ({ ...a, [e]: l.target.checked }))
86
+ }
87
+ ),
88
+ label: e
89
+ },
90
+ e
91
+ )) })
92
+ ] }) : /* @__PURE__ */ n(k, { spacing: 2.5, sx: { pt: 1 }, children: [
93
+ /* @__PURE__ */ n(Q, { fullWidth: !0, size: "small", children: [
94
+ /* @__PURE__ */ t(X, { children: "Resource Type" }),
95
+ /* @__PURE__ */ t(Z, { value: u, label: "Resource Type", onChange: (e) => H(e.target.value), children: r.map((e) => /* @__PURE__ */ t(D, { value: e, children: e }, e)) })
96
+ ] }),
97
+ /* @__PURE__ */ t(
98
+ ee,
99
+ {
100
+ label: "FHIR ID *",
101
+ size: "small",
102
+ value: g,
103
+ onChange: (e) => L(e.target.value),
104
+ placeholder: "The FHIR logical id of the resource",
105
+ helperText: "Syncs a single resource by GET /{ResourceType}/{id}"
106
+ }
107
+ )
108
+ ] }),
109
+ !x && /* @__PURE__ */ n(G, { children: [
110
+ /* @__PURE__ */ t(
111
+ C,
112
+ {
113
+ sx: { mt: 2 },
114
+ control: /* @__PURE__ */ t(te, { checked: f, onChange: (e) => O(e.target.checked) }),
115
+ label: /* @__PURE__ */ t(T, { variant: "body2", children: "Process into the system after sync" })
116
+ }
117
+ ),
118
+ h === "types" && S.length > 0 && /* @__PURE__ */ t(j, { sx: { mt: 1 }, children: /* @__PURE__ */ t(k, { direction: "row", spacing: 1, flexWrap: "wrap", useFlexGap: !0, children: S.map((e) => /* @__PURE__ */ t(se, { label: e, size: "small" }, e)) }) })
119
+ ] })
120
+ ] }),
121
+ /* @__PURE__ */ n(ae, { sx: { px: 3, pb: 2 }, children: [
122
+ !c && /* @__PURE__ */ t(R, { onClick: p, children: "Cancel" }),
123
+ h === "types" ? /* @__PURE__ */ t(R, { variant: "contained", disabled: c, onClick: $, children: c ? "Syncing…" : "Sync Selected" }) : /* @__PURE__ */ t(R, { variant: "contained", disabled: c, onClick: q, children: c ? "Syncing…" : "Sync Resource" })
124
+ ] })
125
+ ] });
126
+ }
127
+ export {
128
+ ue as S
129
+ };
130
+ //# sourceMappingURL=SyncDialog-BRGpHOE4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncDialog-BRGpHOE4.js","sources":["../src/views/FhirResource/SyncDialog.jsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport {\n Dialog, DialogTitle, DialogContent, DialogActions, Button, Tabs, Tab,\n Box, Stack, FormControlLabel, Checkbox, Switch, Typography, TextField,\n FormControl, InputLabel, Select, MenuItem, Alert, Chip, Divider,\n} from \"@mui/material\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport {\n syncTypesSequentially, syncSingleResource, reprocessOne,\n} from \"../../services/FhirResource\";\nimport { SyncProgress } from \"./components/FhirUi\";\n\n// Sensible defaults when the server has no discovered capability yet.\nconst DEFAULT_TYPES = [\"ValueSet\", \"CodeSystem\", \"Organization\", \"Location\", \"HealthcareService\"];\n\nfunction SyncDialog({ open, server, onClose, onDone }) {\n const [tab, setTab] = useState(\"types\");\n const [selected, setSelected] = useState({});\n const [singleType, setSingleType] = useState(\"ValueSet\");\n const [fhirId, setFhirId] = useState(\"\");\n const [alsoProcess, setAlsoProcess] = useState(true);\n const [busy, setBusy] = useState(false);\n const [progress, setProgress] = useState(null);\n\n const availableTypes = useMemo(() => {\n const caps = server?.supportedResources ?? [];\n return caps.length ? caps : DEFAULT_TYPES;\n }, [server]);\n\n const checkedTypes = Object.keys(selected).filter((t) => selected[t]);\n const allSelected = availableTypes.length > 0 && availableTypes.every((t) => selected[t]);\n const someSelected = availableTypes.some((t) => selected[t]);\n\n const toggleSelectAll = (checked) => {\n setSelected(Object.fromEntries(availableTypes.map((t) => [t, checked])));\n };\n\n const handleSyncTypes = async () => {\n if (checkedTypes.length === 0) {\n showToast({ type: \"error\", message: \"Select at least one resource type.\" });\n return;\n }\n setBusy(true);\n try {\n const total = await syncTypesSequentially(server.id, checkedTypes, {\n alsoProcess,\n onProgress: setProgress,\n });\n showToast({ type: \"success\", message: `Synced ${total} resource(s).` });\n onDone?.();\n onClose();\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Sync failed.\" });\n } finally {\n setBusy(false);\n setProgress(null);\n }\n };\n\n const handleSyncSingle = async () => {\n if (!singleType || !fhirId.trim()) {\n showToast({ type: \"error\", message: \"Resource type and FHIR id are required.\" });\n return;\n }\n setBusy(true);\n try {\n const res = await syncSingleResource(server.id, singleType, fhirId.trim());\n const raw = res?.data;\n if (alsoProcess && raw?.id) await reprocessOne(raw.id);\n showToast({ type: \"success\", message: `Synced ${singleType}/${fhirId.trim()}.` });\n onDone?.();\n onClose();\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Sync failed.\" });\n } finally {\n setBusy(false);\n }\n };\n\n const showProgress = busy && tab === \"types\" && progress;\n\n return (\n <Dialog open={open} onClose={busy ? undefined : onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>\n Sync from “{server?.name}”\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\">\n {server?.baseUrl}\n </Typography>\n </DialogTitle>\n\n {!showProgress && (\n <Tabs value={tab} onChange={(_, v) => setTab(v)} sx={{ px: 3, \"& .MuiTab-root\": { textTransform: \"none\", fontWeight: 700 } }}>\n <Tab value=\"types\" label=\"By Resource Type\" disabled={busy} />\n <Tab value=\"single\" label=\"Single Resource\" disabled={busy} />\n </Tabs>\n )}\n\n <DialogContent dividers>\n {showProgress ? (\n <SyncProgress progress={progress} />\n ) : tab === \"types\" ? (\n <Box>\n {!server?.supportedResources?.length && (\n <Alert severity=\"info\" sx={{ mb: 2 }}>\n Capability not discovered yet — showing common resource types. Use “Refresh Capability” on the\n server to list exactly what this server supports.\n </Alert>\n )}\n <FormControlLabel\n control={\n <Checkbox\n checked={allSelected}\n indeterminate={someSelected && !allSelected}\n onChange={(e) => toggleSelectAll(e.target.checked)}\n />\n }\n label={<Typography variant=\"body2\" sx={{ fontWeight: 700 }}>Select All</Typography>}\n sx={{ mb: 0.5 }}\n />\n <Divider sx={{ mb: 1 }} />\n <Stack>\n {availableTypes.map((t) => (\n <FormControlLabel\n key={t}\n control={\n <Checkbox\n checked={Boolean(selected[t])}\n onChange={(e) => setSelected((s) => ({ ...s, [t]: e.target.checked }))}\n />\n }\n label={t}\n />\n ))}\n </Stack>\n </Box>\n ) : (\n <Stack spacing={2.5} sx={{ pt: 1 }}>\n <FormControl fullWidth size=\"small\">\n <InputLabel>Resource Type</InputLabel>\n <Select value={singleType} label=\"Resource Type\" onChange={(e) => setSingleType(e.target.value)}>\n {availableTypes.map((t) => <MenuItem key={t} value={t}>{t}</MenuItem>)}\n </Select>\n </FormControl>\n <TextField\n label=\"FHIR ID *\"\n size=\"small\"\n value={fhirId}\n onChange={(e) => setFhirId(e.target.value)}\n placeholder=\"The FHIR logical id of the resource\"\n helperText=\"Syncs a single resource by GET /{ResourceType}/{id}\"\n />\n </Stack>\n )}\n\n {!showProgress && (\n <>\n <FormControlLabel\n sx={{ mt: 2 }}\n control={<Switch checked={alsoProcess} onChange={(e) => setAlsoProcess(e.target.checked)} />}\n label={<Typography variant=\"body2\">Process into the system after sync</Typography>}\n />\n {tab === \"types\" && checkedTypes.length > 0 && (\n <Box sx={{ mt: 1 }}>\n <Stack direction=\"row\" spacing={1} flexWrap=\"wrap\" useFlexGap>\n {checkedTypes.map((t) => <Chip key={t} label={t} size=\"small\" />)}\n </Stack>\n </Box>\n )}\n </>\n )}\n </DialogContent>\n\n <DialogActions sx={{ px: 3, pb: 2 }}>\n {/* While a sync is in progress the user can only watch — no cancel. */}\n {!busy && <Button onClick={onClose}>Cancel</Button>}\n {tab === \"types\" ? (\n <Button variant=\"contained\" disabled={busy} onClick={handleSyncTypes}>\n {busy ? \"Syncing…\" : \"Sync Selected\"}\n </Button>\n ) : (\n <Button variant=\"contained\" disabled={busy} onClick={handleSyncSingle}>\n {busy ? \"Syncing…\" : \"Sync Resource\"}\n </Button>\n )}\n </DialogActions>\n </Dialog>\n );\n}\n\nexport default SyncDialog;\n"],"names":["DEFAULT_TYPES","SyncDialog","open","server","onClose","onDone","tab","setTab","useState","selected","setSelected","singleType","setSingleType","fhirId","setFhirId","alsoProcess","setAlsoProcess","busy","setBusy","progress","setProgress","availableTypes","useMemo","caps","checkedTypes","t","allSelected","someSelected","toggleSelectAll","checked","handleSyncTypes","showToast","total","syncTypesSequentially","err","_b","_a","handleSyncSingle","res","syncSingleResource","raw","reprocessOne","showProgress","jsxs","Dialog","DialogTitle","jsx","Typography","Tabs","_","v","Tab","DialogContent","SyncProgress","Box","Alert","FormControlLabel","Checkbox","Divider","Stack","e","s","FormControl","InputLabel","Select","MenuItem","TextField","Fragment","Switch","Chip","DialogActions","Button"],"mappings":"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"}
@@ -5,7 +5,7 @@ import * as s from "yup";
5
5
  import { yupResolver as g } from "@hookform/resolvers/yup";
6
6
  import { FormControl as C, Typography as p, Select as b, MenuItem as a, Box as E, Button as d } from "@mui/material";
7
7
  import u from "prop-types";
8
- import "./ManageEventConfiguration-BntUc_YI.js";
8
+ import "./ManageEventConfiguration-DV3I5POA.js";
9
9
  import { useTranslateProvider as T } from "@/common/languageTranslator/TranslationContext";
10
10
  import F from "@/common/config/implementationConfig";
11
11
  const I = ({ setType: n, onSubmit: y }) => {
@@ -114,4 +114,4 @@ I.propTypes = {
114
114
  export {
115
115
  I as default
116
116
  };
117
- //# sourceMappingURL=TypeConfiguration-CupQxH9Y.js.map
117
+ //# sourceMappingURL=TypeConfiguration-37wp-gsl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypeConfiguration-CupQxH9Y.js","sources":["../src/views/Events/TypeConfiguration.jsx"],"sourcesContent":["import React from \"react\";\nimport { useForm, Controller } from \"react-hook-form\";\nimport * as Yup from \"yup\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport {\n FormControl,\n Select,\n MenuItem,\n Button,\n Box,\n Typography,\n} from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport \"./Styles/ManageEventConfiguration.scss\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\n\nimport implementationConfig from \"@/common/config/implementationConfig\";\n/**\n * A form component for configuring event types.\n * @module TypeConfigurationForm\n * @param {Object} props - The props for the component.\n * @param {Function} props.setType - Function to set the selected type.\n * @param {Function} props.onSubmit - Function to handle form submission.\n * @returns {JSX.Element} The rendered form component.\n */\nconst TypeConfigurationForm = ({ setType, onSubmit }) => {\n const { translate } = useTranslateProvider();\n const validationSchema = Yup.object().shape({\n type: Yup.string().required(\"Type is Required\"),\n });\n\n const {\n control,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n /**\n * @function onFormSubmit\n * Handles form submission.\n * Calls the onSubmit function and resets the form.\n */\n const onFormSubmit = () => {\n onSubmit();\n reset();\n setType(null);\n };\n\n return (\n <div>\n <FormControl\n fullWidth\n error={!!errors.type}\n className=\"mb-2\"\n data-testid=\"typeconfigurationform-formcontrol-type\"\n >\n <Typography variant=\"body2\" className=\"m-1\">\n {translate(\"Type\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n\n <Controller\n name=\"type\"\n control={control}\n defaultValue=\"\"\n render={({ field }) => (\n <Select\n {...field}\n size=\"small\"\n displayEmpty\n onChange={(e) => {\n field.onChange(e.target.value);\n setType(e.target.value);\n }}\n data-testid=\"typeconfigurationform-select-type\"\n >\n <MenuItem value=\"\">\n <Typography variant=\"body2\">{translate(\"Select\")}</Typography>\n </MenuItem>\n <MenuItem className=\"text-[14px] \" value=\"SMS\">\n {translate(\"SMS Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"EMAIL\">\n {translate(\"Email Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"QUERY\">\n {translate(\"Query\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"MOBILE\">\n {translate(\"Mobile Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"EXCEPTION\">\n {translate(\"Exception\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"SYSTEM_FUNCTION\">\n {translate(\"System Function\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"PUSH_NOTIFICATION\">\n {translate(\"Push Notification\")}\n </MenuItem>\n {implementationConfig.events.kafkaSyncEnabled && (\n <MenuItem className=\"text-[14px]\" value=\"KAFKA_SYNC\">\n {translate(\"Kafka Sync\")}\n </MenuItem>\n )}\n </Select>\n )}\n />\n {errors?.type && (\n <p\n className=\"error-helper\"\n data-testid=\"typeconfigurationform-error-helper-type\"\n >\n {errors?.type?.message}\n </p>\n )}\n </FormControl>\n\n <Box className=\"flex items-center gap-1\">\n <Button\n type=\"button\"\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => {\n setType(null);\n reset();\n setType(null);\n }} // Clear form\n data-testid=\"typeconfigurationform-button-clear\"\n >\n {translate(\"Clear\")}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handleSubmit(onFormSubmit)} // Handle submission without form reload\n data-testid=\"typeconfigurationform-button-add\"\n >\n {translate(\"Add\")}\n </Button>\n </Box>\n </div>\n );\n};\n\nexport default TypeConfigurationForm;\n\nTypeConfigurationForm.propTypes = {\n setType: PropTypes.any, // or PropTypes.shape({...}) for specific shape\n onSubmit: PropTypes.any, // or PropTypes.shape({...}) for specific shape\n};\n"],"names":["TypeConfigurationForm","setType","onSubmit","translate","useTranslateProvider","validationSchema","Yup","control","handleSubmit","reset","errors","useForm","yupResolver","onFormSubmit","jsxs","FormControl","Typography","jsx","Controller","field","Select","e","MenuItem","implementationConfig","Box","Button","PropTypes"],"mappings":"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"}
1
+ {"version":3,"file":"TypeConfiguration-37wp-gsl.js","sources":["../src/views/Events/TypeConfiguration.jsx"],"sourcesContent":["import React from \"react\";\nimport { useForm, Controller } from \"react-hook-form\";\nimport * as Yup from \"yup\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport {\n FormControl,\n Select,\n MenuItem,\n Button,\n Box,\n Typography,\n} from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport \"./Styles/ManageEventConfiguration.scss\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\n\nimport implementationConfig from \"@/common/config/implementationConfig\";\n/**\n * A form component for configuring event types.\n * @module TypeConfigurationForm\n * @param {Object} props - The props for the component.\n * @param {Function} props.setType - Function to set the selected type.\n * @param {Function} props.onSubmit - Function to handle form submission.\n * @returns {JSX.Element} The rendered form component.\n */\nconst TypeConfigurationForm = ({ setType, onSubmit }) => {\n const { translate } = useTranslateProvider();\n const validationSchema = Yup.object().shape({\n type: Yup.string().required(\"Type is Required\"),\n });\n\n const {\n control,\n handleSubmit,\n reset,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n /**\n * @function onFormSubmit\n * Handles form submission.\n * Calls the onSubmit function and resets the form.\n */\n const onFormSubmit = () => {\n onSubmit();\n reset();\n setType(null);\n };\n\n return (\n <div>\n <FormControl\n fullWidth\n error={!!errors.type}\n className=\"mb-2\"\n data-testid=\"typeconfigurationform-formcontrol-type\"\n >\n <Typography variant=\"body2\" className=\"m-1\">\n {translate(\"Type\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n\n <Controller\n name=\"type\"\n control={control}\n defaultValue=\"\"\n render={({ field }) => (\n <Select\n {...field}\n size=\"small\"\n displayEmpty\n onChange={(e) => {\n field.onChange(e.target.value);\n setType(e.target.value);\n }}\n data-testid=\"typeconfigurationform-select-type\"\n >\n <MenuItem value=\"\">\n <Typography variant=\"body2\">{translate(\"Select\")}</Typography>\n </MenuItem>\n <MenuItem className=\"text-[14px] \" value=\"SMS\">\n {translate(\"SMS Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"EMAIL\">\n {translate(\"Email Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"QUERY\">\n {translate(\"Query\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"MOBILE\">\n {translate(\"Mobile Notification\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"EXCEPTION\">\n {translate(\"Exception\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"SYSTEM_FUNCTION\">\n {translate(\"System Function\")}\n </MenuItem>\n <MenuItem className=\"text-[14px]\" value=\"PUSH_NOTIFICATION\">\n {translate(\"Push Notification\")}\n </MenuItem>\n {implementationConfig.events.kafkaSyncEnabled && (\n <MenuItem className=\"text-[14px]\" value=\"KAFKA_SYNC\">\n {translate(\"Kafka Sync\")}\n </MenuItem>\n )}\n </Select>\n )}\n />\n {errors?.type && (\n <p\n className=\"error-helper\"\n data-testid=\"typeconfigurationform-error-helper-type\"\n >\n {errors?.type?.message}\n </p>\n )}\n </FormControl>\n\n <Box className=\"flex items-center gap-1\">\n <Button\n type=\"button\"\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => {\n setType(null);\n reset();\n setType(null);\n }} // Clear form\n data-testid=\"typeconfigurationform-button-clear\"\n >\n {translate(\"Clear\")}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handleSubmit(onFormSubmit)} // Handle submission without form reload\n data-testid=\"typeconfigurationform-button-add\"\n >\n {translate(\"Add\")}\n </Button>\n </Box>\n </div>\n );\n};\n\nexport default TypeConfigurationForm;\n\nTypeConfigurationForm.propTypes = {\n setType: PropTypes.any, // or PropTypes.shape({...}) for specific shape\n onSubmit: PropTypes.any, // or PropTypes.shape({...}) for specific shape\n};\n"],"names":["TypeConfigurationForm","setType","onSubmit","translate","useTranslateProvider","validationSchema","Yup","control","handleSubmit","reset","errors","useForm","yupResolver","onFormSubmit","jsxs","FormControl","Typography","jsx","Controller","field","Select","e","MenuItem","implementationConfig","Box","Button","PropTypes"],"mappings":"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"}