@argusoft/medplat-core 1.0.28 → 1.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AccessRights-xrday-L1.js +1023 -0
- package/dist/AccessRights-xrday-L1.js.map +1 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js +365 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js.map +1 -0
- package/dist/{AddFeatures-C0Z29oSd.js → AddFeatures-D1sU8RjY.js} +2 -2
- package/dist/{AddFeatures-C0Z29oSd.js.map → AddFeatures-D1sU8RjY.js.map} +1 -1
- package/dist/AddLabelModal-Bq-wRqv9.js +631 -0
- package/dist/AddLabelModal-Bq-wRqv9.js.map +1 -0
- package/dist/AddMenuConfiguration-e5BVXhmw.js +8547 -0
- package/dist/AddMenuConfiguration-e5BVXhmw.js.map +1 -0
- package/dist/{AddRoleDrawer-CQdzQZLb.js → AddRoleDrawer-0gqAK8N0.js} +62 -63
- package/dist/AddRoleDrawer-0gqAK8N0.js.map +1 -0
- package/dist/AppModal-CCtrQ5Tr.js +394 -0
- package/dist/AppModal-CCtrQ5Tr.js.map +1 -0
- package/dist/BrandsPage-DmRW5bhm-Bk1szrjI.js +387 -0
- package/dist/BrandsPage-DmRW5bhm-Bk1szrjI.js.map +1 -0
- package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js +391 -0
- package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js.map +1 -0
- package/dist/{ChangePasswordModalCore-CDxkeIIM.js → ChangePasswordModalCore-BPsJquTS.js} +1606 -1611
- package/dist/ChangePasswordModalCore-BPsJquTS.js.map +1 -0
- package/dist/{ConditionConfig-DSsgGEXS.js → ConditionConfig-Ddz9halE.js} +2 -2
- package/dist/ConditionConfig-Ddz9halE.js.map +1 -0
- package/dist/DashboardPage-C3bKc5na-sBd9Yqbi.js +435 -0
- package/dist/DashboardPage-C3bKc5na-sBd9Yqbi.js.map +1 -0
- package/dist/{EntityManagement-GaYsBTvf.js → EntityManagement-CPQL6qBj.js} +2 -2
- package/dist/{EntityManagement-GaYsBTvf.js.map → EntityManagement-CPQL6qBj.js.map} +1 -1
- package/dist/EventConfig-BmLemzX3.js +26 -0
- package/dist/EventConfig-BmLemzX3.js.map +1 -0
- package/dist/{EventConfigurations-kNtAj_WM.js → EventConfigurations-Bzh1qWXU.js} +31 -30
- package/dist/{EventConfigurations-kNtAj_WM.js.map → EventConfigurations-Bzh1qWXU.js.map} +1 -1
- package/dist/{EventsExceptionModal-D4Bf1ilS.js → EventsExceptionModal-B2SRrnB1.js} +2 -2
- package/dist/{EventsExceptionModal-D4Bf1ilS.js.map → EventsExceptionModal-B2SRrnB1.js.map} +1 -1
- package/dist/EventsSkeleton-BIcPks4T.js +61 -0
- package/dist/EventsSkeleton-BIcPks4T.js.map +1 -0
- package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js +79 -0
- package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js.map +1 -0
- package/dist/FeatureMenu-DYJmDt7q.js +521 -0
- package/dist/FeatureMenu-DYJmDt7q.js.map +1 -0
- package/dist/Features-Dne21RWu.js +14 -0
- package/dist/Features-Dne21RWu.js.map +1 -0
- package/dist/{FhirServerList-Dkq7Kbes.js → FhirServerList-DuTwnngN.js} +19 -19
- package/dist/{FhirServerList-Dkq7Kbes.js.map → FhirServerList-DuTwnngN.js.map} +1 -1
- package/dist/{FhirServerWizard-Db6Hm4bQ.js → FhirServerWizard-DZI8Olku.js} +15 -15
- package/dist/{FhirServerWizard-Db6Hm4bQ.js.map → FhirServerWizard-DZI8Olku.js.map} +1 -1
- package/dist/FlywayQuery-CQygj51V.js +179 -0
- package/dist/FlywayQuery-CQygj51V.js.map +1 -0
- package/dist/{ManageNotification-CaBAOhji.js → Google-DQxMfbaL.js} +1725 -2652
- package/dist/{ManageNotification-CaBAOhji.js.map → Google-DQxMfbaL.js.map} +1 -1
- package/dist/GrantPermissionModal-BDN66Atn.js +236 -0
- package/dist/GrantPermissionModal-BDN66Atn.js.map +1 -0
- package/dist/ImmunizationConfigurationBase-Di1KO3oW.js +7639 -0
- package/dist/ImmunizationConfigurationBase-Di1KO3oW.js.map +1 -0
- package/dist/ImmunizationConfigurationBase.css +1 -1
- package/dist/ImmunizationConfigurationsList-TZcLDEci.js +369 -0
- package/dist/ImmunizationConfigurationsList-TZcLDEci.js.map +1 -0
- package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js +665 -0
- package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js.map +1 -0
- package/dist/LanguagesModal-B3NTebYT.js +352 -0
- package/dist/LanguagesModal-B3NTebYT.js.map +1 -0
- package/dist/ManageDynamicFeature-BU0I45dd.js +4475 -0
- package/dist/ManageDynamicFeature-BU0I45dd.js.map +1 -0
- package/dist/{ManageEventConfiguration-DV3I5POA.js → ManageEventConfiguration-CoYcpjR9.js} +465 -397
- package/dist/ManageEventConfiguration-CoYcpjR9.js.map +1 -0
- package/dist/ManageNotification-C5MhV77Q.js +934 -0
- package/dist/ManageNotification-C5MhV77Q.js.map +1 -0
- package/dist/{ManageRole-CGYfglpo.js → ManageRole-CNZBRKGU.js} +32 -30
- package/dist/ManageRole-CNZBRKGU.js.map +1 -0
- package/dist/ManageTranslation-vRiptUAP.js +833 -0
- package/dist/ManageTranslation-vRiptUAP.js.map +1 -0
- package/dist/ManageTranslation.css +1 -1
- package/dist/{ManageUser-AY1EUDLI.js → ManageUser-DCFkUMV9.js} +1722 -1586
- package/dist/ManageUser-DCFkUMV9.js.map +1 -0
- package/dist/MemberProfileCard-BdUNgHRB-VywqQdFF.js +272 -0
- package/dist/MemberProfileCard-BdUNgHRB-VywqQdFF.js.map +1 -0
- package/dist/MobileAnalytics-pQoE8cG1.js +16888 -0
- package/dist/MobileAnalytics-pQoE8cG1.js.map +1 -0
- package/dist/MobileMenuManagement-Cf8IZlla.js +108 -0
- package/dist/MobileMenuManagement-Cf8IZlla.js.map +1 -0
- package/dist/{MobileTypeEventConfigModal-BxLympIO.js → MobileTypeEventConfigModal-BeveaX0C.js} +2 -2
- package/dist/MobileTypeEventConfigModal-BeveaX0C.js.map +1 -0
- package/dist/NotificationFlywayQuery-BAHVjf6N.js +247 -0
- package/dist/NotificationFlywayQuery-BAHVjf6N.js.map +1 -0
- package/dist/{NotificationList-C3Vb_jKU.js → NotificationList-DEyRZEuM.js} +109 -110
- package/dist/NotificationList-DEyRZEuM.js.map +1 -0
- package/dist/{OtherTypeEventConfigModal-BeG1GrUi.js → OtherTypeEventConfigModal-CM6VkdmY.js} +570 -478
- package/dist/OtherTypeEventConfigModal-CM6VkdmY.js.map +1 -0
- package/dist/PaymentCreatePage-CIVe0P0p-25BQVpOX.js +482 -0
- package/dist/PaymentCreatePage-CIVe0P0p-25BQVpOX.js.map +1 -0
- package/dist/PaymentsPage-BvPe5Q9F-D2gfziwW.js +157 -0
- package/dist/PaymentsPage-BvPe5Q9F-D2gfziwW.js.map +1 -0
- package/dist/PermissionsModal-CCYkcKlC.js +151 -0
- package/dist/PermissionsModal-CCYkcKlC.js.map +1 -0
- package/dist/PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js +119 -0
- package/dist/PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js.map +1 -0
- package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js +783 -0
- package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js.map +1 -0
- package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js +818 -0
- package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js.map +1 -0
- package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js +599 -0
- package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js.map +1 -0
- package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js +1302 -0
- package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js.map +1 -0
- package/dist/ProductsPage-CupVmOD4-D45a_hf-.js +252 -0
- package/dist/ProductsPage-CupVmOD4-D45a_hf-.js.map +1 -0
- package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js +648 -0
- package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js.map +1 -0
- package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js +1577 -0
- package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js.map +1 -0
- package/dist/PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js +279 -0
- package/dist/PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js.map +1 -0
- package/dist/PurchasesPage-It1GHiXl-eH4IsF_U.js +293 -0
- package/dist/PurchasesPage-It1GHiXl-eH4IsF_U.js.map +1 -0
- package/dist/QueryBuilder-CXaBe6sr.js +478 -0
- package/dist/QueryBuilder-CXaBe6sr.js.map +1 -0
- package/dist/{RoleManagement-BPl2cE27.js → RoleManagement-s8iNx2Mu.js} +131 -142
- package/dist/RoleManagement-s8iNx2Mu.js.map +1 -0
- package/dist/Roles-BIyiic67.js +14 -0
- package/dist/Roles-BIyiic67.js.map +1 -0
- package/dist/SaleCreatePage-C9kFmTvm-B3Y0o4CX.js +544 -0
- package/dist/SaleCreatePage-C9kFmTvm-B3Y0o4CX.js.map +1 -0
- package/dist/SalesPage-D18DCseD-BxktGDRQ.js +315 -0
- package/dist/SalesPage-D18DCseD-BxktGDRQ.js.map +1 -0
- package/dist/{ServerSyncModal-D_oFpv3C.js → ServerSyncModal-92U3xtqI.js} +84 -85
- package/dist/ServerSyncModal-92U3xtqI.js.map +1 -0
- package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js +747 -0
- package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js.map +1 -0
- package/dist/ShowFlywayQuery-D10Olk5Z.js +154 -0
- package/dist/ShowFlywayQuery-D10Olk5Z.js.map +1 -0
- package/dist/{ShowFlywayQuery-DVRCd384.js → ShowFlywayQuery-D1y_4A1u.js} +161 -121
- package/dist/ShowFlywayQuery-D1y_4A1u.js.map +1 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js +313 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js.map +1 -0
- package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js +721 -0
- package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js.map +1 -0
- package/dist/SubMenu-eEDhZUvh.js +317 -0
- package/dist/SubMenu-eEDhZUvh.js.map +1 -0
- package/dist/{TableDetails-Cf_YfnY2.js → TableDetails-BtafRxXb.js} +1069 -831
- package/dist/TableDetails-BtafRxXb.js.map +1 -0
- package/dist/{TableList-D6jnIbnz.js → TableList-Dpo6dO7S.js} +2 -2
- package/dist/{TableList-D6jnIbnz.js.map → TableList-Dpo6dO7S.js.map} +1 -1
- package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js +746 -0
- package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js.map +1 -0
- package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js +315 -0
- package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js.map +1 -0
- package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js +476 -0
- package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js.map +1 -0
- package/dist/{TypeConfiguration-37wp-gsl.js → TypeConfiguration-3O6ABrK-.js} +2 -2
- package/dist/{TypeConfiguration-37wp-gsl.js.map → TypeConfiguration-3O6ABrK-.js.map} +1 -1
- package/dist/{UserList-Bc8gYxRL.js → UserList-DgPxsnj2.js} +253 -236
- package/dist/{UserList-Bc8gYxRL.js.map → UserList-DgPxsnj2.js.map} +1 -1
- package/dist/Users-Bpc4Sazd.js +41 -0
- package/dist/Users-Bpc4Sazd.js.map +1 -0
- package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js +321 -0
- package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js.map +1 -0
- package/dist/{WidgetList-Dw_FmbbE.js → WidgetList-D7YuWfDD.js} +2 -2
- package/dist/{WidgetList-Dw_FmbbE.js.map → WidgetList-D7YuWfDD.js.map} +1 -1
- package/dist/constants-ClZJY2x1-MkSWn6TZ.js +434 -0
- package/dist/constants-ClZJY2x1-MkSWn6TZ.js.map +1 -0
- package/dist/dashboardLayoutUtils-D1xCAxp3.js +405 -0
- package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +1 -0
- package/dist/format-UOyOu75i-D0GyylyQ.js +63 -0
- package/dist/format-UOyOu75i-D0GyylyQ.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +4 -752
- package/dist/index.js.map +1 -1
- package/dist/index.lib-Dn8PMkeD.js +862 -0
- package/dist/index.lib-Dn8PMkeD.js.map +1 -0
- package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js +28 -0
- package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js.map +1 -0
- package/dist/validation-BzlHnL-r-CCJm2utQ.js +125 -0
- package/dist/validation-BzlHnL-r-CCJm2utQ.js.map +1 -0
- package/package.json +5 -4
- package/dist/AccessRights-CHu27ZOw.js +0 -1262
- package/dist/AccessRights-CHu27ZOw.js.map +0 -1
- package/dist/AddEditQueryBuilder-Brdnm6rQ.js +0 -313
- package/dist/AddEditQueryBuilder-Brdnm6rQ.js.map +0 -1
- package/dist/AddLabelModal-DFllBVcd.js +0 -734
- package/dist/AddLabelModal-DFllBVcd.js.map +0 -1
- package/dist/AddMenuConfiguration-BSQLl88V.js +0 -6570
- package/dist/AddMenuConfiguration-BSQLl88V.js.map +0 -1
- package/dist/AddRoleDrawer-CQdzQZLb.js.map +0 -1
- package/dist/AppModal-CtG2GjD_.js +0 -428
- package/dist/AppModal-CtG2GjD_.js.map +0 -1
- package/dist/ChangePasswordModalCore-CDxkeIIM.js.map +0 -1
- package/dist/ConditionConfig-DSsgGEXS.js.map +0 -1
- package/dist/EventsSkeleton-8iiETGcf.js +0 -76
- package/dist/EventsSkeleton-8iiETGcf.js.map +0 -1
- package/dist/FeatureMenu-jl7-Tk6y.js +0 -265
- package/dist/FeatureMenu-jl7-Tk6y.js.map +0 -1
- package/dist/Features-CObdzJp_.js +0 -13
- package/dist/Features-CObdzJp_.js.map +0 -1
- package/dist/FlywayQuery-Cx2sly6g.js +0 -169
- package/dist/FlywayQuery-Cx2sly6g.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-DZGqwda2.js +0 -5910
- package/dist/ImmunizationConfigurationBase-DZGqwda2.js.map +0 -1
- package/dist/ImmunizationConfigurationsList-DdSZicTP.js +0 -344
- package/dist/ImmunizationConfigurationsList-DdSZicTP.js.map +0 -1
- package/dist/LanguagesModal-D6VfaGrl.js +0 -394
- package/dist/LanguagesModal-D6VfaGrl.js.map +0 -1
- package/dist/ManageDynamicFeature-BhONvfC_.js +0 -4189
- package/dist/ManageDynamicFeature-BhONvfC_.js.map +0 -1
- package/dist/ManageEventConfiguration-DV3I5POA.js.map +0 -1
- package/dist/ManageRole-CGYfglpo.js.map +0 -1
- package/dist/ManageTranslation-B4C9-lWD.js +0 -625
- package/dist/ManageTranslation-B4C9-lWD.js.map +0 -1
- package/dist/ManageUser-AY1EUDLI.js.map +0 -1
- package/dist/MobileMenuManagement-CVAKyKDa.js +0 -112
- package/dist/MobileMenuManagement-CVAKyKDa.js.map +0 -1
- package/dist/MobileTypeEventConfigModal-BxLympIO.js.map +0 -1
- package/dist/NotificationFlywayQuery-BY8Zzml_.js +0 -244
- package/dist/NotificationFlywayQuery-BY8Zzml_.js.map +0 -1
- package/dist/NotificationList-C3Vb_jKU.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-BeG1GrUi.js.map +0 -1
- package/dist/QueryBuilder-z7eqfd7D.js +0 -383
- package/dist/QueryBuilder-z7eqfd7D.js.map +0 -1
- package/dist/RoleManagement-BPl2cE27.js.map +0 -1
- package/dist/ServerSyncModal-D_oFpv3C.js.map +0 -1
- package/dist/ShowFlywayQuery-DVRCd384.js.map +0 -1
- package/dist/ShowFlywayQuery-tj42YQAS.js +0 -130
- package/dist/ShowFlywayQuery-tj42YQAS.js.map +0 -1
- package/dist/ShowQueryHistory-BDN0tzHg.js +0 -190
- package/dist/ShowQueryHistory-BDN0tzHg.js.map +0 -1
- package/dist/SubMenu-DYxAPH2Z.js +0 -191
- package/dist/SubMenu-DYxAPH2Z.js.map +0 -1
- package/dist/TableDetails-Cf_YfnY2.js.map +0 -1
- package/dist/Users-CsJ08Kjm.js +0 -40
- package/dist/Users-CsJ08Kjm.js.map +0 -1
- package/dist/dashboardLayoutUtils-Bt5HA96J.js +0 -265
- package/dist/dashboardLayoutUtils-Bt5HA96J.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ManageDynamicFeature-BhONvfC_.js","sources":["../src/views/Features/NewFormModal.jsx","../src/views/Features/ManageDynamicFeature.jsx"],"sourcesContent":["import {\n Alert,\n Box,\n Button,\n Chip,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Divider,\n FormControl,\n Grid2,\n IconButton,\n TextField,\n} from \"@mui/material\";\nimport React, { useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as Yup from \"yup\";\nimport { FormConfiguratorService } from \"@/common/services/FormConfiguratorService\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport PropTypes from \"prop-types\";\nimport { useDebounceFn } from \"@/hooks/useDebounceFn\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { executeAll } from \"@/common/services/QueryBuilder\";\n\nexport default function NewFormModal({\n mainFormCtrl,\n openAddFormModal,\n setModal,\n reloadForms,\n}) {\n const [inputValue, setInputValue] = useState(\"\");\n const [items, setItems] = useState([]);\n const [formCodeValidation, setFormCodeValidation] = useState(true);\n\n const validationSchema = Yup.object().shape({\n formName: Yup.string().required(\"Enter form name\"),\n formCode: Yup.string()\n .required(\"Enter form code\")\n .matches(\n /^[A-Z_]*$/,\n \"Only uppercase letters and underscores are allowed\",\n ),\n state: Yup.string().required(\"Select state\"),\n formType: Yup.string().required(\"Select form type\"),\n description: Yup.string().required(\"Enter description\"),\n });\n\n const formControl = useForm({\n defaultValues: {\n formName: \"\",\n formCode: \"\",\n state: \"ACTIVE\",\n description: \"\",\n menuConfigId: null,\n pageParams: \"\",\n formType: null,\n navigationState: \"medplat.form\",\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n const handleAddItem = () => {\n if (inputValue.trim() && !items.includes(inputValue)) {\n const updatedItems = [...items, inputValue];\n setItems(updatedItems);\n setInputValue(\"\");\n formControl.setValue(\"pageParams\", updatedItems.join(\",\"));\n }\n };\n\n const handleDeleteItem = (itemToDelete) => {\n const updatedItems = items.filter((item) => item !== itemToDelete);\n setItems(updatedItems);\n formControl.setValue(\"pageParams\", updatedItems.join(\",\"));\n };\n\n const handleInputChange = (e) => {\n const value = e.target.value;\n // Allow only letters, numbers, and underscores\n // const regex = /^[a-zA-Z0-9_]*$/;\n\n // Allow only letters and underscores\n const regex = /^[a-zA-Z_]*$/;\n if (regex.test(value)) {\n setInputValue(value);\n }\n };\n\n const handleDialogClose = () => {\n setModal(false);\n };\n\n const onSubmit = (data) => {\n handleAddNewForm(data);\n };\n\n const handleAddNewForm = (currentForm) => {\n if (!formCodeValidation) {\n showToast({ message: \"Form Code is already taken!\", type: \"error\" });\n return;\n }\n\n const buildFormData = () => {\n const formData = new FormData();\n formData.append(\n \"form\",\n new Blob([JSON.stringify(currentForm)], {\n type: \"application/json\",\n }),\n );\n console.log(formData);\n return formData;\n };\n\n currentForm.isSeparateFeature = true; // forms created from dynamic feature management will be separate features\n FormConfiguratorService.saveForm(buildFormData()).then(() => {\n showToast({\n message: \"Configuration created sucessfully!\",\n type: \"success\",\n });\n let translationDtoList = [];\n if (currentForm.formName && currentForm.formName.length > 0) {\n translationDtoList.push({\n code: \"medplat_form_insert_into_translation_master\",\n parameters: {\n translation_key: currentForm.formName.replaceAll(\" \", \"\"),\n translation_value: currentForm.formName,\n form_code: currentForm.formCode,\n },\n sequence: 1,\n });\n }\n if (translationDtoList.length > 0) {\n executeAll(translationDtoList);\n }\n mainFormCtrl.setValue(\"formCode\", currentForm.formCode);\n mainFormCtrl.setValue(\"version\", \"DRAFT\");\n mainFormCtrl.setValue(\"navigationState\", currentForm.navigationState);\n handleDialogClose();\n formControl.reset({\n formName: \"\",\n formCode: \"\",\n state: \"ACTIVE\",\n description: \"\",\n menuConfigId: null,\n pageParams: \"\",\n formType: null,\n navigationState: \"medplat.form\",\n });\n reloadForms();\n });\n };\n\n const handleFormCodeChange = useDebounceFn(async (value) => {\n if (!value?.trim()) return;\n\n const valid = (\n await FormConfiguratorService.checkFormCodeAvailability(value)\n ).data;\n setFormCodeValidation(valid);\n return valid;\n }, 500);\n\n return (\n <Dialog\n open={openAddFormModal}\n // TransitionComponent={Transition}\n fullWidth={true}\n maxWidth={\"lg\"}\n onClose={handleDialogClose}\n slotProps={{\n paper: {\n style: {\n borderRadius: \"8px\",\n },\n },\n }}\n >\n <form\n noValidate\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n formControl.handleSubmit(onSubmit)();\n }}\n >\n <DialogTitle>{\"Add new form\"}</DialogTitle>\n <DialogContent>\n <DialogContentText id=\"alert-dialog-slide-description\">\n Please enter all details\n </DialogContentText>\n <Grid2 container spacing={2} columns={12} sx={{ mt: 1 }}>\n <Grid2 size={12}>\n <Divider>\n <Chip label=\"Basic Details\" size=\"small\" />\n </Divider>\n </Grid2>\n <Grid2 size={4}>\n <CustomTextField\n control={formControl.control}\n name=\"formName\"\n id=\"formName\"\n fullWidth\n size=\"small\"\n label=\"Name\"\n errors={formControl.formState.errors}\n required\n />\n </Grid2>\n <Grid2 size={4}>\n <CustomTextField\n control={formControl.control}\n name=\"formCode\"\n id=\"formCode\"\n fullWidth\n size=\"small\"\n label=\"Code\"\n errors={{\n ...formControl.formState.errors,\n ...(formCodeValidation === false && {\n formCode: { message: \"Form Code is already taken!\" },\n }),\n }}\n required\n onChange={(e) => {\n const value = e.target.value\n .toUpperCase()\n .replace(/[^A-Z_]/g, \"\");\n formControl.setValue(\"formCode\", value);\n formControl.setValue(\n \"navigationState\",\n `medplat.form.${value}`,\n );\n handleFormCodeChange(value);\n }}\n />\n </Grid2>\n <Grid2 size={2}>\n <FormControl required fullWidth size=\"small\">\n {/* <InputLabel>State</InputLabel> */}\n <CustomDropdown\n control={formControl.control}\n name=\"state\"\n id=\"state\"\n options={[\"ACTIVE\", \"INACTIVE\"]}\n errors={formControl.formState.errors}\n size=\"small\"\n placeholder=\"\"\n label=\"State\"\n required\n />\n </FormControl>\n </Grid2>\n <Grid2 size={2}>\n <FormControl required fullWidth size=\"small\">\n {/* <InputLabel>Type</InputLabel> */}\n <CustomDropdown\n control={formControl.control}\n name=\"formType\"\n id=\"formType\"\n options={[\"FORM\", \"SEARCH\", \"WRAPPER\"]}\n errors={formControl.formState.errors}\n size=\"small\"\n placeholder=\"\"\n label=\"Type\"\n required\n />\n </FormControl>\n </Grid2>\n <Grid2 size={12}>\n <CustomTextField\n control={formControl.control}\n name=\"description\"\n id=\"description\"\n fullWidth\n multiline\n rows={2}\n size=\"small\"\n label=\"Description\"\n errors={formControl.formState.errors}\n required\n />\n </Grid2>\n <Grid2 size={12}>\n <Divider>\n <Chip label=\"Page Param Details\" size=\"small\" />\n </Divider>\n </Grid2>\n <Grid2 size={12}>\n <Controller\n name=\"pageParams\"\n control={formControl.control}\n render={({ field }) => (\n <TextField\n {...field}\n label=\"Page Params\"\n size=\"small\"\n placeholder=\"Add Page Params\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleAddItem();\n }\n }}\n fullWidth\n slotProps={{\n input: {\n endAdornment: (\n <IconButton color=\"primary\" onClick={handleAddItem}>\n <FontAwesomeIcons\n iconName=\"faArrowRightToBracket\"\n size=\"xs\"\n />\n </IconButton>\n ),\n },\n }}\n />\n )}\n />\n <Box sx={{ display: \"flex\", flexWrap: \"wrap\", gap: 1, mt: 2 }}>\n {items.map((item, index) => (\n <Chip\n key={index + 1}\n label={item}\n onDelete={() => handleDeleteItem(item)}\n color=\"primary\"\n />\n ))}\n </Box>\n {items.length === 0 && (\n <Alert severity=\"info\" variant=\"outlined\">\n No page params added\n </Alert>\n )}\n </Grid2>\n {[\"FORM\", \"SEARCH\"].includes(formControl.getValues(\"formType\")) && (\n <>\n <Grid2 size={12}>\n <Divider>\n <Chip label=\"Route Details\" size=\"small\" />\n </Divider>\n </Grid2>\n <CustomTextField\n control={formControl.control}\n name=\"navigationState\"\n id=\"navigationState\"\n fullWidth\n size=\"small\"\n label=\"Navigation State\"\n errors={formControl.formState.errors}\n disabled={true}\n />\n </>\n )}\n </Grid2>\n </DialogContent>\n <DialogActions>\n <Button type=\"submit\" color=\"success\">\n Create\n </Button>\n <Button onClick={handleDialogClose}>Close</Button>\n </DialogActions>\n </form>\n </Dialog>\n );\n}\n\nNewFormModal.propTypes = {\n mainFormCtrl: PropTypes.any,\n openAddFormModal: PropTypes.any,\n setModal: PropTypes.any,\n reloadForms: PropTypes.any,\n};\n","import { execute, executeAll } from \"@/common/services/QueryBuilder\";\nimport { useDebounceFn } from \"@/hooks/useDebounceFn.js\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport CustomSvgUpload from \"@/views/custom-components/CustomSvgUpload\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { Editor } from \"@monaco-editor/react\";\nimport { generateUUID } from \"@/utils/UUIDgenerator\";\nimport { executeQuery } from \"@/common/services/GlobalApis\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Button,\n Card,\n Checkbox,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n FormControl,\n FormControlLabel,\n FormGroup,\n IconButton,\n MenuItem,\n Modal,\n Radio,\n RadioGroup,\n Select,\n Stack,\n Step,\n TextField,\n Tooltip,\n Typography,\n debounce,\n useTheme,\n alpha,\n TableContainer,\n Table,\n TableHead,\n TableCell,\n TableRow,\n TableBody,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { t } from \"i18next\";\nimport React, {\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { Controller, useForm, useWatch } from \"react-hook-form\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate } from \"react-router\";\nimport * as Yup from \"yup\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport NewFormModal from \"./NewFormModal\";\nimport CustomAutocomplete from \"@/views/custom-components/CustomAutoComplete.jsx\";\nimport { getRoleList } from \"@/common/services/GlobalApis\";\nimport { getFeatureDataV2 } from \"../../services/Features\";\nimport CustomSwitch from \"@/views/custom-components/CustomSwitch\";\nimport CustomTextArea from \"@/views/custom-components/CustomTextArea\";\nimport CustomCheckBox from \"@/views/custom-components/CustomCheckBox\";\nimport CustomDatePicker from \"@/views/custom-components/CustomDatePicker\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport FieldDescription from \"@/views/custom-components/FieldDescription\";\nimport PropTypes from \"prop-types\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport {\n getFeatureData,\n updateUserMenuItems,\n} from \"../../services/Features\";\nimport CustomRadioGroup from \"@/views/custom-components/CustomRadioComponent\";\n\nconst PermissionRow = ({\n permission,\n index,\n depth = 0,\n onEdit,\n onRemove,\n handleAddChildClick,\n isLastChild = false,\n isDynamicFeature,\n}) => {\n const theme = useTheme();\n const displayPermissionId = (id) => id.replaceAll(\".child.\", \".\");\n return (\n <Box sx={{ position: \"relative\", pl: depth * 3 }}>\n {depth > 0 && (\n <>\n <Box\n sx={{\n position: \"absolute\",\n left: 16,\n top: 0,\n bottom: isLastChild ? \"50%\" : 0,\n width: 2,\n bgcolor: theme.palette.divider,\n }}\n />\n <Box\n sx={{\n position: \"absolute\",\n left: 16,\n top: 22,\n width: 24,\n height: 2,\n bgcolor: theme.palette.divider,\n }}\n />\n </>\n )}\n\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: 2,\n padding: \"8px 12px\",\n backgroundColor:\n depth === 0\n ? theme.palette.background.paper\n : alpha(theme.palette.background.paper, 0.8),\n ml: depth > 0 ? 3 : 0,\n position: \"relative\",\n }}\n >\n {depth === 0 && (\n <Typography sx={{ width: 24, color: \"text.secondary\" }}>\n {index + 1}.\n </Typography>\n )}\n\n <Typography sx={{ flexGrow: 1, fontWeight: 500 }}>\n {displayPermissionId(permission.permissionId)}\n </Typography>\n\n {depth === 0 && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={() => handleAddChildClick(permission)}\n >\n Add Child\n </Button>\n )}\n\n {(!permission.isDefault ||\n (permission.isDefault && !isDynamicFeature)) && (\n <IconButton\n color=\"secondary\"\n onClick={() => onEdit(permission, index)}\n >\n <FontAwesomeIcons iconName=\"faEdit\" size=\"sm\" />\n </IconButton>\n )}\n {!permission.isDefault && (\n <IconButton color=\"error\" onClick={() => onRemove(permission)}>\n <FontAwesomeIcons iconName=\"faTrash\" size=\"sm\" />\n </IconButton>\n )}\n </Box>\n\n {permission.childPermissions?.length > 0 && (\n <Stack spacing={1} sx={{ mt: 1 }}>\n {permission.childPermissions.map((child, cIndex) => (\n <PermissionRow\n key={cIndex}\n permission={child}\n index={cIndex}\n depth={depth + 1}\n onEdit={onEdit}\n onRemove={onRemove}\n handleAddChildClick={handleAddChildClick}\n isLastChild={cIndex === permission.childPermissions.length - 1}\n isDynamicFeature={isDynamicFeature}\n />\n ))}\n </Stack>\n )}\n </Box>\n );\n};\n\nconst PermissionItemList = ({\n permissions,\n onEdit,\n onRemove,\n handleAddChildClick,\n isDynamicFeature,\n}) => {\n return (\n <Stack spacing={1}>\n {permissions.map((perm, index) => (\n <PermissionRow\n key={index}\n permission={perm}\n index={index}\n depth={0}\n onEdit={onEdit}\n onRemove={onRemove}\n handleAddChildClick={handleAddChildClick}\n isLastChild={index === permissions.length - 1}\n isDynamicFeature={isDynamicFeature}\n />\n ))}\n </Stack>\n );\n};\n\nconst PermissionModal = ({\n open,\n onClose,\n onSave,\n formCtrl,\n editData,\n parentPermissionId = null,\n mode = \"add-parent\",\n permissionTypes,\n setPermissionTypes,\n existingPermissionIds,\n isDynamicFeature = true,\n}) => {\n const [inputText, setInputText] = useState(\"\");\n const [options, setOptions] = useState([]);\n const [inputValue, setInputValue] = useState(\"\");\n\n const commonDefaults = {\n permissionType: \"\",\n permissionId: \"--\",\n permissionName: \"\",\n permissionDesc: \"\",\n enabled: true,\n permissionSuffix: \"\",\n parentPermissionSuffix: \"\",\n };\n const staticDefaults = {\n backendUrl: \"\",\n urlType: \"\",\n queryCodeRequired: editData\n ? editData?.backendUrl?.trim() && editData?.urlType?.trim()\n ? false\n : editData?.queryCode?.trim()\n ? true\n : undefined\n : undefined,\n queryCode: \"\",\n };\n const defaultValues = isDynamicFeature\n ? commonDefaults\n : { ...commonDefaults, ...staticDefaults };\n\n const {\n control,\n watch,\n handleSubmit,\n reset,\n setValue,\n getValues,\n setError,\n clearErrors,\n formState,\n } = useForm({\n mode: \"onChange\",\n defaultValues,\n });\n const queryCodeRequired = watch(\"queryCodeRequired\");\n const permissionType = watch(\"permissionType\");\n const permissionSuffix = watch(\"permissionSuffix\");\n const backendUrl = watch(\"backendUrl\");\n const queryCode = watch(\"queryCode\");\n const queryApiOptions = [\n { label: \"Query\", value: true },\n { label: \"API\", value: false },\n ];\n\n const getDefaultValues = (override = {}) => {\n const base = isDynamicFeature\n ? commonDefaults\n : { ...commonDefaults, ...staticDefaults };\n\n return { ...base, ...override };\n };\n const parentSuffix = watch(\"parentPermissionSuffix\");\n\n const toCamelCase = (str) => {\n return str\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .map((word, index) =>\n index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1),\n )\n .join(\"\");\n };\n\n const fetchQueryCodes = async (search) => {\n const response = (\n await execute({\n code: \"GET_ALL_QUERY_CODE\",\n parameters: { search },\n })\n ).data;\n\n setOptions(response?.result || []);\n };\n useEffect(() => {\n const fetchInitialQueryCodes = async () => {\n const response = (\n await execute({\n code: \"GET_ALL_QUERY_CODE\",\n parameters: {\n search: getValues(\"queryCode\") ? getValues(\"queryCode\") : \"\",\n },\n })\n ).data;\n setOptions(response?.result || []);\n setInputValue(getValues(\"queryCode\"));\n };\n !isDynamicFeature && fetchInitialQueryCodes();\n }, [queryCode]);\n\n useEffect(() => {\n if (queryCodeRequired === true && !backendUrl) {\n setValue(\"backendUrl\", \"\");\n setValue(\"urlType\", \"\");\n } else if (queryCodeRequired === false && !queryCode) {\n setValue(\"queryCode\", \"\");\n }\n }, [queryCodeRequired]);\n\n useEffect(() => {\n if (!open) return;\n if (mode === \"edit\" && editData) {\n const baseValues = {\n permissionType: editData.permissionType || \"\",\n permissionId: editData.permissionId || \"--\",\n permissionName: editData.permissionName || \"\",\n permissionDesc: editData.permissionDesc || \"\",\n enabled: !!editData.enabled,\n permissionSuffix: \"\",\n };\n\n if (!isDynamicFeature) {\n const hasApi =\n editData?.backendUrl?.trim() && editData?.urlType?.trim();\n const hasQuery = editData?.queryCode?.trim();\n reset({\n ...baseValues,\n urlType: editData.urlType || \"\",\n backendUrl: editData.backendUrl || \"\",\n queryCode: editData.queryCode || \"\",\n queryCodeRequired: editData\n ? hasApi\n ? false\n : hasQuery\n ? true\n : undefined\n : undefined,\n });\n } else {\n reset(baseValues);\n }\n return;\n }\n\n if (mode === \"add-child\" && parentPermissionId) {\n const inheritedType = parentPermissionId.split(\".\")[0] || \"\";\n reset(\n getDefaultValues({\n permissionType: inheritedType,\n permissionId: parentPermissionId,\n permissionName: \"\",\n permissionDesc: \"\",\n enabled: true,\n permissionSuffix: \"\",\n urlType: \"\",\n backendUrl: \"\",\n queryCodeRequired: undefined,\n queryCode: \"\",\n }),\n );\n return;\n }\n\n reset(getDefaultValues());\n }, [open, mode, editData, parentPermissionId, reset]);\n\n useEffect(() => {\n if (mode === \"add-parent\") {\n const type =\n permissionType?.type === \"menu\" ? \"view\" : permissionType?.type;\n\n if (!type) {\n setValue(\"permissionId\", \"--\");\n return;\n }\n const menuType = formCtrl.getValues(\"menuType\") || \"menuType\";\n const featureConstant =\n formCtrl.getValues(\"featureConstant\") || \"feature\";\n let baseId;\n if (!isDynamicFeature) {\n const featureName = formCtrl.getValues(\"menuName\");\n baseId = `${type}.${menuType}.${toCamelCase(featureName)}`;\n } else {\n baseId = `${type}.${menuType}.${featureConstant}`;\n }\n\n if (parentSuffix?.trim()) {\n baseId = `${baseId}.${parentSuffix.trim()}`;\n }\n\n setValue(\"permissionId\", baseId);\n }\n }, [permissionType, parentSuffix, mode]);\n\n useEffect(() => {\n if (queryCodeRequired === true && !backendUrl) {\n setValue(\"backendUrl\", \"\");\n setValue(\"urlType\", \"\");\n } else if (queryCodeRequired === false && !queryCode) {\n setValue(\"queryCode\", \"\");\n }\n }, [queryCodeRequired]);\n\n useEffect(() => {\n if (mode === \"add-child\" && parentPermissionId !== null) {\n const parentType = parentPermissionId.split(\".\")[0] || \"\";\n const childBaseId = `${parentPermissionId}.child`;\n\n const newId = permissionSuffix\n ? `${childBaseId}.${permissionSuffix}`\n : childBaseId;\n setValue(\"permissionId\", newId);\n setValue(\"permissionType\", parentType);\n }\n }, [permissionSuffix, mode, parentPermissionId, setValue]);\n\n const onSubmit = (data) => {\n const newPermission = {\n permissionId: data.permissionId,\n permissionType:\n data.permissionType ||\n (parentPermissionId ? parentPermissionId.split(\".\")[0] : \"\"),\n permissionName: data.permissionName,\n permissionDesc: data.permissionDesc,\n enabled: data.enabled,\n backendUrl:\n data?.backendUrl && !queryCodeRequired ? data.backendUrl : null,\n urlType: data?.urlType && !queryCodeRequired ? data.urlType : null,\n queryCode: data?.queryCode && queryCodeRequired ? data.queryCode : null,\n childPermissions: [],\n isDefault: editData?.isDefault ? editData?.isDefault : false,\n };\n onSave(newPermission);\n reset();\n onClose();\n };\n\n const checkPermissionIdAvailability = async (permissionId) => {\n if (!permissionId || permissionId === \"--\") return;\n const response = await execute({\n code: \"CHECK_UNIQUE_PERMISSION_ID\",\n parameters: { permissionId },\n });\n\n return response.data.result[0].exists;\n };\n\n return (\n <Dialog open={open} onClose={onClose} fullWidth maxWidth=\"sm\">\n <DialogTitle>\n {mode === \"edit\" ? \"Edit Permission\" : \"Add Permission\"}\n </DialogTitle>\n <DialogContent\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 2, mt: 1 }}\n >\n {mode !== \"add-child\" && mode !== \"edit\" && (\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{ minWidth: 160, fontWeight: 500, color: \"text.secondary\" }}\n >\n Permission Type\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <FormControl fullWidth size=\"small\">\n <Controller\n name=\"permissionType\"\n control={control}\n rules={{ required: true }}\n render={({ field }) => (\n <CustomAutocomplete\n id=\"permissionType\"\n name=\"permissionType\"\n control={control}\n singleSelect={true}\n checkEquality=\"type\"\n freeSolo\n disableClearable={false}\n placeholder=\"Choose permission type\"\n options={\n permissionTypes\n ? !inputText ||\n permissionTypes.some(\n (p) =>\n p.type.toLowerCase() === inputText.toLowerCase(),\n )\n ? permissionTypes\n : [\n ...permissionTypes,\n { type: `__add_new__${inputText}`, isNew: true },\n ]\n : []\n }\n getOptionLabel={(option) => {\n if (option.isNew) {\n const value = option.type.replace(\"__add_new__\", \"\");\n return `Add \"${value}\"`;\n }\n return option.type;\n }}\n onInputChange={(e, val) => setInputText(val)}\n onChange={(e, val) => {\n if (!val) {\n field.onChange(null);\n setValue(\"permissionId\", \"--\");\n return;\n }\n if (val.isNew) {\n const actualValue = val.type.replace(\"__add_new__\", \"\");\n\n const newObj = { type: actualValue };\n\n setPermissionTypes((prev) =>\n prev.some((p) => p.type === actualValue)\n ? prev\n : [...prev, newObj],\n );\n\n field.onChange(newObj);\n return;\n }\n field.onChange(val);\n }}\n />\n )}\n />\n </FormControl>\n </Box>\n )}\n\n {mode === \"add-child\" ? (\n <>\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{\n minWidth: 160,\n fontWeight: 500,\n color: \"text.secondary\",\n }}\n >\n Permission ID\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n\n <Box sx={{ display: \"flex\", gap: 1, flexGrow: 1 }}>\n <CustomTextField\n control={control}\n name=\"parentPermissionDisplay\"\n value={`${parentPermissionId}.child.`}\n disabled\n fullWidth\n />\n\n <CustomTextField\n control={control}\n name=\"permissionSuffix\"\n placeholder=\"Enter child suffix\"\n errors={formState.errors}\n fullWidth\n onChange={async (e) => {\n const suffix = e.target.value.trim();\n setValue(\"permissionSuffix\", suffix);\n\n if (suffix.toLowerCase() === \"child\") {\n setError(\"permissionSuffix\", {\n type: \"manual\",\n message: \"Suffix cannot be 'child'\",\n });\n return;\n }\n\n clearErrors(\"permissionSuffix\");\n\n const finalId = `${parentPermissionId}.child.${suffix}`;\n setValue(\"permissionId\", finalId);\n\n if (existingPermissionIds?.has(finalId)) {\n setError(\"permissionSuffix\", {\n type: \"manual\",\n message: \"Permission ID already exists\",\n });\n return;\n }\n\n const exists = await checkPermissionIdAvailability(finalId);\n if (exists) {\n setError(\"permissionSuffix\", {\n type: \"manual\",\n message: \"Permission ID already exists in DB\",\n });\n } else {\n clearErrors(\"permissionSuffix\");\n }\n }}\n />\n </Box>\n </Box>\n </>\n ) : mode === \"add-parent\" ? (\n permissionType?.type ? (\n <>\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{\n minWidth: 160,\n fontWeight: 500,\n color: \"text.secondary\",\n }}\n >\n Permission ID\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n\n <CustomTextField\n control={control}\n name=\"baseId\"\n value={`${permissionType?.type === \"menu\" ? \"view\" : permissionType?.type}.${formCtrl.getValues(\"menuType\")}.${isDynamicFeature ? formCtrl.getValues(\"featureConstant\") : toCamelCase(formCtrl.getValues(\"menuName\"))}.`}\n disabled\n fullWidth\n />\n\n <CustomTextField\n control={control}\n name=\"parentPermissionSuffix\"\n placeholder=\"Enter suffix\"\n errors={formState.errors}\n fullWidth\n onChange={async (e) => {\n const suffix = e.target.value.trim();\n setValue(\"parentPermissionSuffix\", suffix);\n\n if (suffix.toLowerCase() === \"child\") {\n setError(\"parentPermissionSuffix\", {\n type: \"manual\",\n message: \"Suffix cannot be 'child'\",\n });\n return;\n }\n\n clearErrors(\"parentPermissionSuffix\");\n\n const type =\n permissionType?.type === \"menu\"\n ? \"view\"\n : permissionType?.type || permissionType || \"\";\n\n const menuType = formCtrl.getValues(\"menuType\");\n const featureConstant =\n formCtrl.getValues(\"featureConstant\");\n let finalId;\n if (!isDynamicFeature) {\n finalId = `${type}.${menuType}.${toCamelCase(formCtrl.getValues(\"menuName\"))}.${suffix}`;\n } else {\n finalId = `${type}.${menuType}.${featureConstant}.${suffix}`;\n }\n setValue(\"permissionId\", finalId);\n\n if (existingPermissionIds?.has(finalId)) {\n setError(\"parentPermissionSuffix\", {\n type: \"manual\",\n message: \"Permission ID already exists\",\n });\n return;\n }\n\n const exists = await checkPermissionIdAvailability(finalId);\n if (exists) {\n setError(\"parentPermissionSuffix\", {\n type: \"manual\",\n message: \"Permission ID already exists in DB\",\n });\n } else {\n clearErrors(\"parentPermissionSuffix\");\n }\n }}\n />\n </Box>\n </>\n ) : (\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{ minWidth: 160, fontWeight: 500, color: \"text.secondary\" }}\n >\n Permission ID\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <CustomTextField\n control={control}\n name=\"permissionId\"\n value=\"--\"\n disabled\n fullWidth\n />\n </Box>\n )\n ) : (\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{\n minWidth: 160,\n fontWeight: 500,\n color: \"text.secondary\",\n }}\n >\n Permission ID\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n\n <CustomTextField\n control={control}\n name=\"permissionId\"\n label=\"Permission ID\"\n disabled\n fullWidth\n />\n </Box>\n )}\n\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{ minWidth: 160, fontWeight: 500, color: \"text.secondary\" }}\n >\n Permission Name\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <Controller\n name=\"permissionName\"\n control={control}\n rules={{ required: true }}\n render={({ field }) => (\n <CustomTextField\n control={control}\n {...field}\n placeholder=\"Enter name\"\n />\n )}\n />\n </Box>\n\n <Box display=\"flex\" alignItems=\"flex-start\" gap={2}>\n <Typography\n sx={{\n minWidth: 160,\n fontWeight: 500,\n color: \"text.secondary\",\n mt: 1,\n }}\n >\n Description\n </Typography>\n <Controller\n name=\"permissionDesc\"\n control={control}\n render={({ field }) => (\n <CustomTextArea\n control={control}\n {...field}\n placeholder=\"Enter description (optional)\"\n minRows={2}\n />\n )}\n />\n </Box>\n\n {!isDynamicFeature && (\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{\n minWidth: 160,\n fontWeight: 500,\n color: \"text.secondary\",\n }}\n >\n Type{\" \"}\n </Typography>\n <CustomRadioGroup\n name=\"queryCodeRequired\"\n control={control}\n options={queryApiOptions}\n direction=\"row\"\n dataTestId=\"queryOrApi\"\n />\n </Box>\n )}\n {!isDynamicFeature && queryCodeRequired !== undefined && (\n <>\n {queryCodeRequired === false ? (\n <>\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{\n minWidth: 160,\n fontWeight: 500,\n color: \"text.secondary\",\n }}\n >\n URL Type\n </Typography>\n <FormControl fullWidth size=\"small\">\n <Controller\n name=\"urlType\"\n control={control}\n render={({ field }) => (\n <Select {...field} displayEmpty>\n <MenuItem value=\"\">\n <em>Select Type</em>\n </MenuItem>\n {[\"GET\", \"POST\", \"PUT\", \"DELETE\"].map((type) => (\n <MenuItem key={type} value={type}>\n {type}\n </MenuItem>\n ))}\n </Select>\n )}\n />\n </FormControl>\n </Box>\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{\n minWidth: 160,\n fontWeight: 500,\n color: \"text.secondary\",\n }}\n >\n Backend URL\n </Typography>\n <Controller\n name=\"backendUrl\"\n control={control}\n render={({ field }) => (\n <CustomTextField\n control={control}\n {...field}\n placeholder=\"Enter URL\"\n />\n )}\n />\n </Box>\n </>\n ) : (\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{\n minWidth: 160,\n fontWeight: 500,\n color: \"text.secondary\",\n }}\n >\n Query Code\n </Typography>\n <Controller\n name=\"queryCode\"\n control={control}\n render={({ field, fieldState: { error } }) => (\n <CustomAutocomplete\n id=\"queryCode\"\n name=\"queryCode\"\n control={control}\n options={options}\n getOptionLabel={(option) => option?.code || \"\"}\n checkEquality=\"code\"\n inputValue={inputValue}\n disableClearable={false}\n value={\n options?.find((q) => q.code === field.value) || null\n }\n onInputChange={(e, v, reason) => {\n if (reason === \"input\") {\n setInputValue(v);\n fetchQueryCodes(v);\n }\n }}\n singleSelect={true}\n onChange={(e, val) => {\n field.onChange(val?.code || \"\");\n setInputValue(val?.code || \"\");\n }}\n placeholder=\"Search Query Code...\"\n errors={error}\n fullWidth\n freeSolo={false}\n />\n )}\n />\n </Box>\n )}\n </>\n )}\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n sx={{ minWidth: 160, fontWeight: 500, color: \"text.secondary\" }}\n >\n Is Active\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <Controller\n name=\"enabled\"\n control={control}\n render={({ field }) => (\n <CustomSwitch\n {...field}\n disabled={editData?.isDefault && !isDynamicFeature}\n checked={field.value}\n onChange={(e) => field.onChange(e.target.checked)}\n />\n )}\n />\n </Box>\n </DialogContent>\n\n <DialogActions>\n <Button onClick={onClose}>Cancel</Button>\n <Button\n onClick={handleSubmit(onSubmit)}\n variant=\"contained\"\n disabled={\n !formState.isValid || Object.keys(formState.errors).length > 0\n }\n >\n {mode === \"edit\"\n ? \"Update\"\n : mode === \"add-child\"\n ? \"Add Child\"\n : \"Add\"}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nconst GrantAccessModal = ({\n open,\n onClose,\n onSave,\n entityData,\n permissions = [],\n}) => {\n const { control, watch, getValues } = useForm({\n defaultValues: {\n noStartDate: true,\n noEndDate: true,\n startDate: null,\n endDate: null,\n isBackendOnly: false,\n },\n });\n const noStartDate = watch(\"noStartDate\");\n const noEndDate = watch(\"noEndDate\");\n const startDate = watch(\"startDate\");\n const endDate = watch(\"endDate\");\n\n const handleSave = () => {\n const values = getValues();\n grantPermissionSubmit(values);\n };\n\n const grantPermissionSubmit = (values) => {\n const payloads = [];\n\n entityData.forEach((entity) => {\n if (entity.type === \"user\") {\n const ids = Array.isArray(entity.id) ? entity.id : [entity.id];\n payloads.push(\n ...ids.map((id) => ({\n entityType: \"user\",\n user_id: id,\n name: entity.name,\n startDate: values.noStartDate ? null : values.startDate,\n endDate: values.noEndDate ? null : values.endDate,\n isBackendOnly: values.isBackendOnly,\n permissions: JSON.parse(JSON.stringify(permissions)),\n })),\n );\n }\n\n if (entity.type === \"role\") {\n entity.ids.forEach((roleId, idx) => {\n payloads.push({\n entityType: \"role\",\n role_id: roleId,\n name: entity.names[idx],\n startDate: values.noStartDate ? null : values.startDate,\n endDate: values.noEndDate ? null : values.endDate,\n isBackendOnly: values.isBackendOnly,\n permissions: JSON.parse(JSON.stringify(permissions)),\n });\n });\n }\n });\n\n payloads.forEach((p) => onSave(p));\n onClose();\n };\n\n return (\n <Modal open={open} onClose={onClose}>\n <Box className=\"fixed inset-0 flex items-start justify-center z-50 bg-opacity-10 overflow-y-auto\">\n <Card className=\"relative mt-10 p-4 shadow-lg flex flex-col rounded-xl\">\n <Grid className=\"flex justify-between items-center mb-4\">\n <Typography variant=\"h6\">Grant Access</Typography>\n <IconButton onClick={onClose}>\n <FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />\n </IconButton>\n </Grid>\n\n <Grid container spacing={2}>\n <Grid item xs={12} display=\"flex\" gap={2}>\n <Box display=\"flex\" flexDirection=\"column\" flex={1}>\n <CustomCheckBox\n label=\"No Start Date\"\n name=\"noStartDate\"\n control={control}\n sx={{ mb: 1 }}\n />\n <CustomDatePicker\n name=\"startDate\"\n control={control}\n disabled={noStartDate}\n maxDate={endDate || undefined}\n />\n </Box>\n\n <Box display=\"flex\" flexDirection=\"column\" flex={1}>\n <CustomCheckBox\n label=\"No End Date\"\n name=\"noEndDate\"\n control={control}\n sx={{ mb: 1 }}\n />\n <CustomDatePicker\n name=\"endDate\"\n control={control}\n disabled={noEndDate}\n minDate={startDate || undefined}\n />\n </Box>\n </Grid>\n </Grid>\n\n <Box mt={2}>\n <CustomCheckBox\n label=\"Is Backend Only?\"\n name=\"isBackendOnly\"\n control={control}\n />\n </Box>\n <Grid className=\"flex justify-end gap-2 mt-4\">\n <Button type=\"button\" variant=\"outlined\" onClick={onClose}>\n Cancel\n </Button>\n <Button variant=\"contained\" type=\"button\" onClick={handleSave}>\n Save\n </Button>\n </Grid>\n </Card>\n </Box>\n </Modal>\n );\n};\n\nconst AssignedPermissionList = ({ permissions, onToggle, isChild = false }) => {\n const displayPermissionId = (id) => id.replaceAll(\".child\", \"\");\n\n return permissions.map((perm, permIndex) => (\n <Box\n key={permIndex}\n display=\"flex\"\n flexDirection=\"column\"\n gap={1}\n ml={isChild ? 2 : 0}\n >\n <Box display=\"flex\" alignItems=\"center\" gap={1}>\n <CustomSwitch\n sx={{\n transform: \"scale(0.75)\",\n transformOrigin: \"left center\",\n }}\n checked={!!perm.enabled}\n disabled={isChild}\n onChange={() => {\n if (!isChild) onToggle(perm);\n }}\n />\n <Typography variant=\"subtitle1\">\n {displayPermissionId(perm.permissionId)}\n </Typography>\n </Box>\n\n {perm.childPermissions?.length > 0 && (\n <AssignedPermissionList\n permissions={perm.childPermissions}\n onToggle={onToggle}\n isChild={true}\n />\n )}\n </Box>\n ));\n};\n\nexport default function ManageDynamicFeature() {\n const { translate } = useTranslateProvider();\n const formRef = useRef(null);\n const location = useLocation();\n const navigate = useNavigate();\n const { isNew } = location.state || {};\n\n const queryParams = useMemo(\n () => new URLSearchParams(location.search),\n [location.search],\n );\n const theme = useTheme();\n\n const [featureGroup, setFeatureGroup] = useState([]);\n const [showMobileFields, setShowMobileFields] = useState(false);\n const [entityList, setEntityList] = useState([]);\n const [syncedTableList, setSyncedTableList] = useState([]);\n const [formNames, setFormNames] = useState();\n const [formVersions, setFormVersions] = useState({});\n const [openAddFormModal, setOpenAddFormModal] = useState(false);\n const [disableEditing, setDisableEditing] = useState(false);\n const [successMessage, setSuccessMessage] = useState(\"\");\n const [selectedFormCode, setSelectedFormCode] = useState(\"\");\n const [prevLinkedFormCode, setPrevLinkedFormCode] = useState(\"\");\n const [menuGroups, setMenuGroups] = useState();\n const [menuTypes, setMenuTypes] = useState([]);\n const [isSyncedLoaded, setIsSyncedLoaded] = useState(false);\n const [activeStep, setActiveStep] = useState(0);\n const [submitted, setSubmitted] = useState(false);\n const [skippedSteps, setSkippedSteps] = useState([]);\n const [userData, setUserData] = useState([]);\n const [roleData, setRoleData] = useState([]);\n const [selectedRoles, setSelectedRoles] = useState([]);\n const [mobileEntitiesSync, setMobileEntitiesSync] = useState([]);\n const [selectedUser, setSelectedUser] = useState({});\n const [userMenuItemDtos, setUserMenuItemDtos] = useState([]);\n const [assignAccessRight, setAssignAccessRight] = useState({});\n const [permissions, setPermissions] = useState([]);\n const [modalOpen, setModalOpen] = useState(false);\n const [modalMode, setModalMode] = useState(\"add-parent\");\n const [modalParentId, setModalParentId] = useState(null);\n const [editData, setEditData] = useState(null);\n const [editOriginalId, setEditOriginalId] = useState(null);\n const [grantModalOpen, setGrantModalOpen] = useState(false);\n const [selectedEntity, setSelectedEntity] = useState(null);\n const [grantedData, setGrantedData] = useState([]);\n const [disableShowField, setDisableShowField] = useState(false);\n const [showFields, setShowFields] = useState(false);\n const [isSeparateFeature, setIsSeparateFeature] = useState(false);\n const [isUpdate, setIsUpdate] = useState({ value: false, length: 0 });\n const [permissionTypes, setPermissionTypes] = useState([\n { type: \"update\" },\n { type: \"menu\" },\n { type: \"create\" },\n { type: \"download\" },\n { type: \"execute\" },\n ]);\n const [queryCodeOptions, setQueryCodeOptions] = useState([]);\n const [trainingQueryInput, setTrainingQueryInput] = useState(\"\");\n const [notificationBadgeQueryInput, setNotificationBadgeQueryInput] =\n useState(\"\");\n const [accordionExpanded, setAccordionExpanded] = useState({\n basicConfig: true,\n trainingConfig: false,\n notificationConfig: false,\n });\n\n const [initialMobileModeValue, setInitialMobileModeValue] =\n React.useState(null);\n const isStepSkipped = (stepKey) => skippedSteps.includes(stepKey);\n\n const [filledSteps, setFilledSteps] = useState(new Set());\n const mode = useSelector((state) => state.theme.mode);\n\n const steps = [\n { key: \"featureDetails\", label: \"Feature Details\" },\n { key: \"mobileConfig\", label: \"Mobile Config\" },\n { key: \"formLinking\", label: \"Form Linking\" },\n { key: \"additionalPermissions\", label: \"Permission Management\" },\n { key: \"assignFeatures\", label: \"Assignment\" },\n { key: \"submit\", label: \"Submit\" },\n ];\n\n const validationSchema = Yup.object().shape({\n menuName: Yup.string().required(\"Enter Feature Name\"),\n featureConstant: Yup.string().when(\"isDynamicFeature\", {\n is: true,\n then: (schema) => schema.required(\"Enter Feature Constant\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n navigationState: Yup.string().when(\"isDynamicFeature\", {\n is: false,\n then: (schema) =>\n schema\n .required(\"Enter Navigation State\")\n .matches(\n /^(techo\\.[a-zA-Z]+\\.[a-zA-Z]+|medplat(\\.form\\.[a-zA-Z_]+|\\..+))$/,\n \"invalid format for state\",\n ),\n otherwise: (schema) => schema.notRequired(),\n }),\n menuType: Yup.string().required(\"Enter Feature Type\"),\n icon: Yup.string().when(\"$showMobileFields\", {\n is: true,\n then: (schema) => schema.required(\"Please upload an icon\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n conditions: Yup.string().transform((value) => (value ? value.trim() : \"\")),\n mobileMode: Yup.string().when(\"$showMobileFields\", {\n is: true,\n then: (schema) => schema.required(\"Please select a mode\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n trainingQuery: Yup.string().when(\"trainingRequired\", {\n is: true,\n then: (schema) => schema.required(\"Please select a training query\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n notificationBadgeType: Yup.string().when(\"notificationBadgeEnabled\", {\n is: true,\n then: (schema) => schema.required(\"Please select a badge type\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n notificationBadgeQuery: Yup.string().when(\n [\"notificationBadgeEnabled\", \"notificationBadgeType\"],\n (values, schema) => {\n const [badgeEnabled, badgeType] = values;\n if (badgeEnabled && badgeType) {\n return schema.required(\n badgeType === \"COUNT\"\n ? \"Please select a count query\"\n : \"Please select a nudge query\",\n );\n }\n return schema.notRequired();\n },\n ),\n updatedFields: Yup.array().when(\n [\"isDynamicFeature\", \"isNew\", \"isUpdate\", \"showFields\"],\n (values, schema) => {\n const [isDynamicFeature, isNew, isUpdate, showFields] = values;\n\n const shouldValidate =\n isDynamicFeature === false &&\n isNew?.val === false &&\n isUpdate?.value === true &&\n showFields === true;\n\n if (shouldValidate) {\n return schema.of(\n Yup.object().shape({\n value: Yup.string().required(\"Right is required\"),\n }),\n );\n }\n\n return schema.optional();\n },\n ),\n });\n\n const formCtrl = useForm({\n defaultValues: {\n menuName: \"\",\n featureConstant: \"\",\n navigationState: \"medplat.form\",\n menuType: \"\",\n menuGroup: \"\",\n isDynamicFeature: true,\n isWebFeature: false,\n isMobileFeature: false,\n accessRights: [],\n entityName: null,\n mobileEntitiesSync: [],\n icon: \"\",\n mobileMode: null,\n conditions: \"\",\n formCode: \"\",\n version: null,\n additionalPermissions: [],\n fields: [],\n updatedFields: [],\n trainingRequired: false,\n trainingQuery: \"\",\n notificationBadgeEnabled: false,\n notificationBadgeType: \"\",\n notificationBadgeQuery: \"\",\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n const isDynamicFeature = useWatch({\n control: formCtrl.control,\n name: \"isDynamicFeature\",\n });\n\n const isMobileFeature = useWatch({\n control: formCtrl.control,\n name: \"isMobileFeature\",\n });\n\n const isWebFeature = useWatch({\n control: formCtrl.control,\n name: \"isWebFeature\",\n });\n\n const watchedFieldsSteps = useWatch({\n control: formCtrl.control,\n name: getWatchedFieldNames(steps[activeStep]?.key),\n });\n\n const watchedFields = formCtrl.watch();\n\n function getWatchedFieldNames(stepKey) {\n switch (stepKey) {\n case \"featureDetails\":\n return isDynamicFeature\n ? [\"menuName\", \"featureConstant\", \"menuType\"]\n : [\"menuName\", \"navigationState\", \"menuType\"];\n case \"mobileConfig\":\n return showMobileFields\n ? [\n \"icon\",\n \"mobileMode\",\n \"trainingRequired\",\n \"trainingQuery\",\n \"notificationBadgeEnabled\",\n \"notificationBadgeType\",\n \"notificationBadgeQuery\",\n ]\n : [];\n case \"formLinking\":\n return isDynamicFeature ? [\"formCode\", \"version\"] : [];\n case \"additionalPermissions\":\n return !isDynamicFeature && isNew?.val === false\n ? [\"updatedFields\"]\n : [\"additionalPermissions\"];\n default:\n return [];\n }\n }\n\n const isStepValid = useMemo(() => {\n const key = steps[activeStep]?.key;\n switch (key) {\n case \"featureDetails\": {\n const hasNavigationStateError =\n !!formCtrl.formState.errors.navigationState;\n const hasFeatureConstantError =\n !!formCtrl.formState.errors.featureConstant;\n return (\n formCtrl.formState.isValid &&\n !!formCtrl.getValues(\"menuName\") &&\n (isDynamicFeature\n ? !!formCtrl.getValues(\"featureConstant\") &&\n !hasFeatureConstantError\n : !!formCtrl.getValues(\"navigationState\") &&\n !hasNavigationStateError) &&\n !!formCtrl.getValues(\"menuType\")\n );\n }\n case \"mobileConfig\": {\n if (!showMobileFields) return true;\n const hasIcon = !!formCtrl.getValues(\"icon\");\n const hasMode = !!formCtrl.getValues(\"mobileMode\");\n const trainingRequired = formCtrl.getValues(\"trainingRequired\");\n const trainingQuery = formCtrl.getValues(\"trainingQuery\");\n const badgeEnabled = formCtrl.getValues(\"notificationBadgeEnabled\");\n const badgeType = formCtrl.getValues(\"notificationBadgeType\");\n const badgeQuery = formCtrl.getValues(\"notificationBadgeQuery\");\n const trainingValid = !trainingRequired || !!trainingQuery;\n const badgeTypeValid = !badgeEnabled || !!badgeType;\n const badgeQueryValid = !badgeEnabled || !badgeType || !!badgeQuery;\n return (\n hasIcon &&\n hasMode &&\n trainingValid &&\n badgeTypeValid &&\n badgeQueryValid\n );\n }\n case \"formLinking\": {\n if (!isDynamicFeature) return true;\n const formCode = formCtrl.getValues(\"formCode\");\n const version = formCtrl.getValues(\"version\");\n return !!formCode && !!version;\n }\n case \"additionalPermissions\": {\n if (!isDynamicFeature && isNew?.val === false && showFields) {\n const updatedFields = formCtrl.getValues(\"updatedFields\") || [];\n const updatedFieldsValid = updatedFields.every(\n (f) => f.value && f.value.trim(),\n );\n return updatedFieldsValid;\n } else {\n const additionalPermissions =\n formCtrl.getValues(\"additionalPermissions\") || [];\n const isValid =\n additionalPermissions.length > 0 &&\n additionalPermissions.every(\n (perm) =>\n perm.permissionId?.trim() &&\n perm.permissionName?.trim() &&\n perm.permissionType?.type?.trim(),\n );\n\n return isValid;\n }\n }\n default:\n return true;\n }\n }, [\n watchedFieldsSteps,\n formCtrl.formState.isValid,\n activeStep,\n showMobileFields,\n ]);\n\n const visibleSteps = steps.filter(\n (step) =>\n (step.key !== \"mobileConfig\" || showMobileFields) &&\n (step.key !== \"formLinking\" || isDynamicFeature),\n );\n\n const handleNext = async () => {\n const currentStepKey = steps[activeStep].key;\n\n if (isStepSkipped(currentStepKey)) {\n moveToNextVisibleStep();\n return;\n }\n\n const isValid = await formCtrl.trigger(getFieldsForStep(currentStepKey));\n if (isValid) {\n setFilledSteps((prev) => new Set(prev).add(currentStepKey));\n setSkippedSteps((prev) => prev.filter((step) => step !== currentStepKey));\n moveToNextVisibleStep();\n }\n };\n\n const moveToNextVisibleStep = () => {\n const currentKey = steps[activeStep].key;\n const currentVisibleIndex = visibleSteps.findIndex(\n (s) => s.key === currentKey,\n );\n const nextVisibleStep = visibleSteps[currentVisibleIndex + 1];\n\n if (nextVisibleStep) {\n if (\n nextVisibleStep.key === \"additionalPermissions\" &&\n permissions.length === 0\n ) {\n createDefaultPermission();\n }\n\n if (\n currentKey === \"additionalPermissions\" &&\n nextVisibleStep.key === \"assignFeatures\"\n ) {\n setGrantedData(\n syncGrantedDataWithPermissions(permissions, grantedData),\n );\n }\n\n const nextIndexInSteps = steps.findIndex(\n (s) => s.key === nextVisibleStep.key,\n );\n setActiveStep(nextIndexInSteps);\n }\n };\n\n useEffect(() => {\n if (disableEditing === true) {\n const currentValue = formCtrl.getValues(\"mobileMode\");\n setInitialMobileModeValue(currentValue);\n }\n }, [disableEditing, formCtrl]);\n\n useEffect(() => {\n if (!isDynamicFeature) {\n queryParams.get(\"featureId\") === null &&\n formCtrl.setValue(\"navigationState\", \"\");\n formCtrl.setValue(\"featureConstant\", \"\");\n setSuccessMessage(\"\");\n formCtrl.clearErrors(\"featureConstant\");\n } else {\n formCtrl.setValue(\"navigationState\", \"medplat.form\");\n }\n }, [isDynamicFeature]);\n\n const getFieldsForStep = (key) => {\n switch (key) {\n case \"formLinking\":\n return [\"formCode\", \"version\"];\n case \"additionalPermissions\":\n return [\"permissionId\", \"permissionName\", \"permissionType\"];\n default:\n return [];\n }\n };\n\n const handleBack = () => {\n if (activeStep === 0) {\n navigate(\"/ui/medplat/manage/menu\");\n }\n const currentKey = steps[activeStep].key;\n const currentVisibleIndex = visibleSteps.findIndex(\n (s) => s.key === currentKey,\n );\n\n const prevVisibleStep = visibleSteps[currentVisibleIndex - 1];\n if (prevVisibleStep) {\n const prevIndexInSteps = steps.findIndex(\n (s) => s.key === prevVisibleStep.key,\n );\n setActiveStep(prevIndexInSteps);\n }\n };\n\n const isStepFilled = (stepIndex) => {\n const key = steps[stepIndex].key;\n return filledSteps.has(key);\n };\n\n useEffect(() => {\n (async () => {\n await fetchMenuGroups();\n await fetchTables();\n await fetchSyncedTables();\n setIsSyncedLoaded(true);\n await fetchFormNames();\n await fetchData();\n await fetchGlobalQueryCodes();\n if (queryParams.get(\"featureId\") && isDynamicFeature) {\n const { data } = await getFeatureDataV2(queryParams.get(\"featureId\"));\n if (data?.permissions) {\n const formattedPermissions = transformBackendPermissions(\n data.permissions,\n );\n if (data?.userMenuItemDtos?.length > 0) {\n const mergedData = buildGrantedDataFromBackend(\n formattedPermissions,\n data.userMenuItemDtos,\n );\n const normalizedData = mergedData.map((row) => ({\n ...row,\n permissions: normalizePermissionTree(row.permissions),\n }));\n setGrantedData(normalizedData);\n }\n setPermissions(formattedPermissions);\n }\n }\n })();\n }, []);\n\n useEffect(() => {\n if (assignAccessRight?.userMenuItemDtos) {\n const accessRightsArray = formCtrl.getValues(\"updatedFields\") || [];\n\n const defaultAccessRights = accessRightsArray?.reduce((acc, curr) => {\n acc[curr.name] = curr.enabled;\n return acc;\n }, {});\n\n const enrichedDtos = assignAccessRight.userMenuItemDtos.map((dto) => {\n let parsedFeatureJson = {};\n\n try {\n parsedFeatureJson = dto.featureJson\n ? JSON.parse(dto.featureJson)\n : {};\n } catch (e) {\n console.warn(\"Invalid JSON in featureJson:\", e);\n }\n\n const mergedFeatureJson = {\n ...defaultAccessRights,\n ...parsedFeatureJson,\n };\n\n return {\n ...dto,\n featureJson: JSON.stringify(mergedFeatureJson),\n };\n });\n setUserMenuItemDtos(enrichedDtos);\n }\n }, [assignAccessRight]);\n\n useEffect(() => {\n try {\n const featureId = queryParams.get(\"featureId\");\n const featureType = queryParams.get(\"featureType\");\n if (featureType && featureId) {\n const fetchData = async () => {\n if (isNew?.val) {\n const { data } = await getFeatureDataV2(featureId);\n setDisableShowField(true);\n await fetchStaticFeatureInfo();\n if (data?.permissions) {\n const formattedPermissions = transformBackendPermissions(\n data.permissions,\n );\n\n if (data?.userMenuItemDtos?.length > 0) {\n const mergedData = buildGrantedDataFromBackend(\n formattedPermissions,\n data.userMenuItemDtos,\n );\n const normalizedData = mergedData.map((row) => ({\n ...row,\n permissions: normalizePermissionTree(row.permissions),\n }));\n setGrantedData(normalizedData);\n }\n setPermissions(formattedPermissions);\n }\n setIsUpdate((cur) => {\n return { ...cur, value: true, length: 0 };\n });\n } else {\n const { data } = await getFeatureData(featureId);\n setAssignAccessRight(data);\n await fetchStaticFeatureInfo();\n const fields = JSON.parse(data.featureJson || \"{}\");\n const formattedFields = Object.keys(fields).map((key, index) => ({\n id: index + 1,\n value: key,\n checkbox: fields[key],\n updated: true,\n }));\n formCtrl.setValue(\"updatedFields\", formattedFields);\n setShowFields(formattedFields.length > 0);\n if (formattedFields.length > 0) {\n setDisableShowField(true);\n }\n setIsUpdate((cur) => {\n return { ...cur, value: true, length: fields.length || 0 };\n });\n setIsSeparateFeature(data?.isSeparateFeature);\n }\n };\n handleFeatureType();\n fetchData();\n }\n } catch (error) {\n showToast({\n type: \"error\",\n message: `error :${error?.message}`,\n });\n }\n }, [queryParams, formCtrl.setValue, isSyncedLoaded, menuGroups]);\n const transformBackendPermissions = (backendPermissions) => {\n const menuType = formCtrl.getValues(\"menuType\");\n const featureConstant = formCtrl.getValues(\"featureConstant\");\n\n const toCamelCase = (str) => {\n return str\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .map((word, index) =>\n index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1),\n )\n .join(\"\");\n };\n\n let defaultPermissionId;\n if (!isDynamicFeature || featureConstant?.length === 0) {\n const featureName = formCtrl.getValues(\"menuName\");\n defaultPermissionId = `view.${menuType}.${toCamelCase(featureName)}`;\n } else {\n defaultPermissionId = `view.${menuType}.${featureConstant}`;\n }\n\n const transform = (perm) => {\n const isDefault = perm.id === defaultPermissionId;\n return {\n permissionId: perm.id,\n permissionType: { type: perm.type },\n permissionName: perm.name,\n permissionDesc: perm.desc || \"\",\n enabled: perm.is_active,\n isDefault,\n childPermissions: perm.child\n ? perm.child.map((child) => transform(child))\n : [],\n urlType: perm?.httpMethod || \"\",\n backendUrl: perm?.url || \"\",\n queryCodeRequired: !perm?.url,\n queryCode: perm?.queryCodes || \"\",\n };\n };\n\n return backendPermissions.map(transform);\n };\n\n const buildGrantedDataFromBackend = (permissions, userMenuItemDtos) => {\n if (!Array.isArray(userMenuItemDtos)) return [];\n const markEnabledRecursive = (perm, enabledIds) => {\n const children =\n perm.childPermissions?.map((child) =>\n markEnabledRecursive(child, enabledIds),\n ) || [];\n\n const anyChildEnabled = children.some((c) => c.enabled);\n\n const isEnabled =\n enabledIds.includes(perm.permissionId) || anyChildEnabled;\n\n return { ...perm, enabled: isEnabled, childPermissions: children };\n };\n\n return userMenuItemDtos.map((dto) => {\n const enabledIds = dto.permissions?.map((p) => p.id) || [];\n const isRole = !!dto.roleName || !!dto.designationId || !!dto.roleId;\n const isUser = !!dto.userId || !!dto.fullName;\n\n const permissionTree = permissions.map((p) =>\n markEnabledRecursive(p, enabledIds),\n );\n\n return {\n entityType: isRole ? \"role\" : \"user\",\n user_id: isUser ? dto.userId || null : null,\n role_id: isRole ? dto.designationId || dto.roleId || null : null,\n name: isUser ? dto.fullName || \"\" : dto.roleName || \"\",\n startDate: dto.permissions?.[0]?.startDate || null,\n endDate: dto.permissions?.[0]?.endDate || null,\n isBackendOnly: dto.permissions?.[0]?.isBackendOnly || false,\n permissions: permissionTree,\n };\n });\n };\n\n const normalizePermissionTree = (permissions) => {\n const normalize = (perm) => {\n let childPermissions = [];\n if (perm.childPermissions?.length) {\n childPermissions = perm.childPermissions.map(normalize);\n const allChildrenEnabled = childPermissions.every((c) => c.enabled);\n perm.enabled = perm.enabled || allChildrenEnabled;\n }\n\n if (perm.enabled && perm.childPermissions?.length) {\n childPermissions = childPermissions.map((c) => ({\n ...c,\n enabled: true,\n childPermissions: c.childPermissions?.length\n ? normalizePermissionTree(c.childPermissions)\n : [],\n }));\n }\n\n return {\n ...perm,\n childPermissions,\n };\n };\n\n return permissions.map(normalize);\n };\n\n const syncGrantedDataWithPermissions = (permissions, grantedData) => {\n const permissionMap = new Map();\n const buildMap = (perms) => {\n perms.forEach((p) => {\n permissionMap.set(p.permissionId, p);\n if (p.childPermissions?.length) buildMap(p.childPermissions);\n });\n };\n buildMap(permissions);\n const mergePermissions = (permList, grantedPermList) => {\n return permList.map((perm) => {\n const grantedPerm =\n grantedPermList?.find((g) => g.permissionId === perm.permissionId) ||\n {};\n const mergedChildren = mergePermissions(\n perm.childPermissions || [],\n grantedPerm.childPermissions || [],\n );\n return {\n ...perm,\n enabled: grantedPerm.enabled ?? perm.enabled,\n childPermissions: mergedChildren,\n };\n });\n };\n\n return grantedData.map((row) => ({\n ...row,\n permissions: mergePermissions(permissions, row.permissions),\n }));\n };\n\n const fetchFeatureInfo = async () => {\n try {\n const response = (\n await execute({\n code: \"RETREIVE_DYNAMIC_FEATURE_INFO\",\n parameters: {\n id: parseInt(queryParams.get(\"featureId\")),\n menuType: queryParams.get(\"featureType\"),\n },\n })\n ).data;\n if (response.result) {\n let data = response.result[0];\n const mobileConfig = (() => {\n try {\n return data.mobile_config ? JSON.parse(data.mobile_config) : {};\n } catch {\n return {};\n }\n })();\n const parsedSyncArray = mobileConfig?.mobile_entities_sync ?? [];\n const mappedMobileEntitiesSync = parsedSyncArray\n .map((tableName) =>\n syncedTableList?.find((item) => item.tableName === tableName),\n )\n .filter(Boolean);\n formCtrl.reset({\n menuName: data.menuName ? data.menuName : \"\",\n featureConstant: data.featureConstant ? data.featureConstant : \"\",\n navigationState: data.navigationState\n ? data.navigationState\n : \"medplat.form\",\n isDynamicFeature:\n data.isDynamicFeature !== undefined &&\n data.isDynamicFeature !== null\n ? data.isDynamicFeature\n : false,\n menuType: data.menuType ? data.menuType : \"\",\n menuGroup: data.group_id ? data.group_id.toString() : \"\",\n isWebFeature: data.isWebFeature ? data.isWebFeature : false,\n isMobileFeature: data.isMobileFeature ? data.isMobileFeature : false,\n entityName: mobileConfig?.entity_name ?? \"\",\n mobileMode: mobileConfig?.mobile_mode ?? null,\n icon: mobileConfig?.icon ?? \"\",\n mobileEntitiesSync: mobileConfig?.mobile_entities_sync\n ? mobileConfig.mobile_entities_sync\n : [],\n conditions: mobileConfig?.conditions ?? \"\",\n formCode: data.formCode ? data.formCode : \"\",\n version: data.currentVersion ? data.currentVersion : \"\",\n trainingRequired: mobileConfig?.training_required ?? false,\n trainingQuery: mobileConfig?.training_query ?? \"\",\n notificationBadgeEnabled:\n mobileConfig?.notification_badge_enabled ?? false,\n notificationBadgeType: mobileConfig?.notification_badge_type ?? \"\",\n notificationBadgeQuery: mobileConfig?.notification_badge_query ?? \"\",\n });\n setMobileEntitiesSync(mappedMobileEntitiesSync);\n if (data.isMobileFeature) setShowMobileFields(true);\n const loadedTrainingQuery = mobileConfig?.training_query ?? \"\";\n const loadedBadgeQuery = mobileConfig?.notification_badge_query ?? \"\";\n if (loadedTrainingQuery) {\n setTrainingQueryInput(loadedTrainingQuery);\n fetchGlobalQueryCodes(loadedTrainingQuery);\n }\n if (loadedBadgeQuery) {\n setNotificationBadgeQueryInput(loadedBadgeQuery);\n fetchGlobalQueryCodes(loadedBadgeQuery);\n }\n if (data.formCode) {\n setSelectedFormCode(data.formCode);\n setPrevLinkedFormCode(data.formCode);\n }\n handleFeatureType();\n setDisableEditing(true);\n }\n } catch (error) {\n showToast({\n message: error.message,\n type: \"error\",\n });\n }\n };\n\n const fetchStaticFeatureInfo = async () => {\n try {\n const response = (\n await execute({\n code: \"RETREIVE_DYNAMIC_FEATURE_INFO\",\n parameters: {\n id: parseInt(queryParams.get(\"featureId\")),\n menuType: queryParams.get(\"featureType\"),\n },\n })\n ).data;\n if (response.result) {\n let data = response.result[0];\n const mobileConfig = (() => {\n try {\n return data.mobile_config ? JSON.parse(data.mobile_config) : {};\n } catch {\n return {};\n }\n })();\n const safeJSONParse = (value, fallback = null) => {\n try {\n if (!value || typeof value !== \"string\") return fallback;\n return JSON.parse(value);\n } catch {\n return fallback;\n }\n };\n const parsedSyncArray = mobileConfig?.mobile_entities_sync ?? [];\n const mappedMobileEntitiesSync = parsedSyncArray\n .map((tableName) =>\n syncedTableList?.find((item) => item.tableName === tableName),\n )\n .filter(Boolean);\n formCtrl.setValue(\"menuName\", data.menuName ? data.menuName : \"\");\n formCtrl.setValue(\n \"navigationState\",\n data.navigationState ? data.navigationState : \"\",\n );\n formCtrl.setValue(\n \"isDynamicFeature\",\n data.isDynamicFeature !== undefined && data.isDynamicFeature !== null\n ? data.isDynamicFeature\n : false,\n );\n formCtrl.setValue(\"menuType\", data.menuType ? data.menuType : \"\");\n formCtrl.setValue(\n \"menuGroup\",\n data.group_id ? data.group_id.toString() : \"\",\n );\n formCtrl.setValue(\n \"isWebFeature\",\n data.isWebFeature ? data.isWebFeature : false,\n );\n formCtrl.setValue(\n \"isMobileFeature\",\n data.isMobileFeature ? data.isMobileFeature : false,\n );\n formCtrl.setValue(\"entityName\", mobileConfig?.entity_name ?? \"\");\n formCtrl.setValue(\"mobileMode\", mobileConfig?.mobile_mode ?? null);\n formCtrl.setValue(\"icon\", mobileConfig?.icon ?? \"\");\n formCtrl.setValue(\n \"mobileEntitiesSync\",\n mobileConfig?.mobile_entities_sync ?? [],\n );\n formCtrl.setValue(\"conditions\", mobileConfig?.conditions ?? \"\");\n formCtrl.setValue(\n \"trainingRequired\",\n mobileConfig?.training_required ?? false,\n );\n formCtrl.setValue(\"trainingQuery\", mobileConfig?.training_query ?? \"\");\n formCtrl.setValue(\n \"notificationBadgeEnabled\",\n mobileConfig?.notification_badge_enabled ?? false,\n );\n formCtrl.setValue(\n \"notificationBadgeType\",\n mobileConfig?.notification_badge_type ?? \"\",\n );\n formCtrl.setValue(\n \"notificationBadgeQuery\",\n mobileConfig?.notification_badge_query ?? \"\",\n );\n\n setMobileEntitiesSync(mappedMobileEntitiesSync);\n if (data.isMobileFeature) setShowMobileFields(true);\n const loadedTrainingQuery = mobileConfig?.training_query ?? \"\";\n const loadedBadgeQuery = mobileConfig?.notification_badge_query ?? \"\";\n if (loadedTrainingQuery) {\n setTrainingQueryInput(loadedTrainingQuery);\n fetchGlobalQueryCodes(loadedTrainingQuery);\n }\n if (loadedBadgeQuery) {\n setNotificationBadgeQueryInput(loadedBadgeQuery);\n fetchGlobalQueryCodes(loadedBadgeQuery);\n }\n setDisableEditing(true);\n }\n } catch (error) {\n showToast({\n message: error.message,\n type: \"error\",\n });\n }\n };\n\n const createDefaultPermission = () => {\n const menuType = formCtrl.getValues(\"menuType\") || \"menuType\";\n const featureConstant = formCtrl.getValues(\"featureConstant\") || \"feature\";\n const toCamelCase = (str) => {\n return str\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .map((word, index) =>\n index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1),\n )\n .join(\"\");\n };\n let permissionId;\n if (!isDynamicFeature) {\n const featureName = formCtrl.getValues(\"menuName\");\n permissionId = `view.${menuType}.${toCamelCase(featureName)}`;\n } else {\n permissionId = `view.${menuType}.${featureConstant}`;\n }\n\n const defaultPermission = {\n permissionId,\n permissionType: { type: \"menu\" },\n permissionName: `view ${featureConstant}`,\n permissionDesc: \"\",\n enabled: true,\n isDefault: true,\n childPermissions: [],\n ...(isDynamicFeature === false && {\n backendUrl: \"\",\n urlType: \"\",\n queryCode: \"\",\n }),\n };\n setPermissions([defaultPermission]);\n };\n\n const addRole = (val) => {\n setSelectedRoles(val);\n };\n\n const addMobileEntitiesSync = (val) => {\n const tableNames = val?.map((opt) => opt?.tableName) || [];\n setMobileEntitiesSync(val);\n formCtrl.setValue(\"mobileEntitiesSync\", tableNames);\n };\n\n const handleUserChange = (e, newValue) => {\n setSelectedUser(newValue);\n };\n\n useEffect(() => {\n const isStatic = queryParams?.get(\"staticOrDynamic\") === \"STATIC\";\n if (\n isSyncedLoaded &&\n menuGroups &&\n queryParams.get(\"featureId\") &&\n !isStatic\n ) {\n fetchFeatureInfo();\n }\n }, [isSyncedLoaded, menuGroups]);\n\n const fetchMenuGroups = async () => {\n const response = (\n await execute({\n code: \"fetch_menu_groups\",\n })\n ).data;\n setMenuTypes(response.result.map((item) => item.menu_type));\n setMenuGroups(response.result);\n };\n const fetchTables = async () => {\n const response = (\n await execute({\n code: \"mfa_retreive_all_table_names\",\n })\n ).data;\n setEntityList(response.result.map((data) => data.table_name));\n };\n const fetchSyncedTables = async () => {\n const response = (\n await execute({\n code: \"retrieve_synced_tables\",\n })\n ).data;\n setSyncedTableList(response?.result);\n };\n const fetchFormNames = async () => {\n const response = (\n await execute({\n code: \"mfa_retrieve_separate_feature_forms\",\n })\n ).data;\n\n if (response.result) {\n let forms = response.result;\n setFormNames(forms);\n let obj = {};\n forms.forEach((form) => {\n try {\n const parsedVersions = JSON.parse(form.versions);\n obj[form.form_code] = parsedVersions;\n } catch (err) {\n console.error(\"Invalid JSON in form.versions:\", form.versions, err);\n obj[form.form_code] = [];\n }\n });\n\n setFormVersions(obj);\n return obj;\n }\n };\n\n const fetchData = async () => {\n try {\n const { data: users } = await execute({\n code: \"user_search_for_selectize\",\n parameters: {\n searchString: \"\",\n },\n });\n setUserData(users?.result);\n\n const rolesRes = await getRoleList();\n setRoleData(rolesRes.data);\n } catch (error) {\n console.error(\"Error fetching users or roles:\", error);\n }\n };\n\n const fetchGlobalQueryCodes = async (search = \"\") => {\n try {\n const response = (\n await execute({\n code: \"GET_ALL_QUERY_CODE\",\n parameters: { search },\n })\n ).data;\n setQueryCodeOptions(response?.result || []);\n } catch (err) {\n console.error(\"Error fetching query codes:\", err);\n }\n };\n\n const getFilteredRoles = () => {\n if (\n formCtrl.getValues(\"isMobileFeature\") &&\n formCtrl.getValues(\"isWebFeature\")\n ) {\n return roleData;\n }\n return roleData.filter((role) => {\n const { roleType } = role;\n if (roleType === null) return true;\n if (\n formCtrl.getValues(\"isMobileFeature\") &&\n (roleType === \"MOBILE\" || roleType === \"BOTH\")\n )\n return true;\n if (\n formCtrl.getValues(\"isWebFeature\") &&\n (roleType === \"WEB\" || roleType === \"BOTH\")\n )\n return true;\n\n return false;\n });\n };\n\n useEffect(() => {\n if (!roleData?.length) return;\n\n const filteredDtos = userMenuItemDtos.filter((dto) => {\n if (!dto.roleName) return true;\n\n const matchingRole = roleData.find((role) => role.name === dto.roleName);\n if (!matchingRole) return true;\n\n const { roleType } = matchingRole;\n\n if (!isMobileFeature && roleType === \"MOBILE\") return false;\n if (!isWebFeature && roleType === \"WEB\") return false;\n\n return true;\n });\n setUserMenuItemDtos(filteredDtos);\n }, [isMobileFeature, isWebFeature, roleData]);\n\n const getOptionLabel = (option) => {\n const { firstName, lastName, userName } = option;\n return !firstName && !lastName && !userName\n ? \"\"\n : (() => {\n const value =\n firstName && !lastName && !userName\n ? firstName\n : `${firstName} ${lastName} (${userName})`;\n return value;\n })();\n };\n\n const handleFeatureType = () => {\n setFeatureGroup(() => {\n const featGroup = formCtrl.getValues(\"menuType\")\n ? JSON.parse(\n menuGroups?.find(\n (item) => item.menu_type === formCtrl.getValues(\"menuType\"),\n ).groupNames,\n )\n : null;\n const validGroups = featGroup?.filter((g) => g.id !== null);\n if (validGroups?.length) {\n return validGroups;\n } else {\n formCtrl.setValue(\"menuGroup\", \"\");\n return validGroups;\n }\n });\n };\n\n const handleFeatureGroup = (res) => {\n formCtrl.setValue(\"menuGroup\", res.target.value);\n };\n\n const enableForMobile = (res) => {\n let forMobile = res.target.checked;\n if (forMobile) setShowMobileFields(true);\n else {\n setShowMobileFields(false);\n formCtrl.setValue(\"entityName\", null);\n formCtrl.setValue(\"icon\", null);\n formCtrl.setValue(\"mobileEntitiesSync\", null);\n formCtrl.setValue(\"conditions\", null);\n formCtrl.setValue(\"mobileMode\", null);\n }\n };\n\n const disableForStaticFeature = (res) => {\n if (!res.target.checked) {\n formCtrl.setValue(\"formCode\", null);\n formCtrl.setValue(\"version\", null);\n }\n };\n\n const handleAddParent = () => {\n setModalMode(\"add-parent\");\n setModalParentId(null);\n setEditData(null);\n setEditOriginalId(null);\n setModalOpen(true);\n };\n\n const handleAddChild = (parentPerm) => {\n setModalMode(\"add-child\");\n setModalParentId(parentPerm.permissionId);\n setEditData(null);\n setEditOriginalId(null);\n setModalOpen(true);\n };\n\n const handleEdit = (perm) => {\n setModalMode(\"edit\");\n setModalParentId(null);\n setEditData(perm);\n setEditOriginalId(perm.permissionId);\n setModalOpen(true);\n };\n\n const addChildRecursively = (items, parentId, newChild) => {\n return items.map((it) => {\n if (it.permissionId === parentId) {\n return {\n ...it,\n childPermissions: [...(it.childPermissions || []), newChild],\n };\n }\n return {\n ...it,\n childPermissions: addChildRecursively(\n it.childPermissions || [],\n parentId,\n newChild,\n ),\n };\n });\n };\n\n const updateNodeRecursively = (items, originalId, newNode) => {\n return items.map((it) => {\n if (it.permissionId === originalId) {\n return {\n ...newNode,\n childPermissions: it.childPermissions || [],\n };\n }\n return {\n ...it,\n childPermissions: updateNodeRecursively(\n it.childPermissions || [],\n originalId,\n newNode,\n ),\n };\n });\n };\n\n const removeRecursive = (items, idToRemove) => {\n return items\n .filter((it) => it.permissionId !== idToRemove)\n .map((it) => ({\n ...it,\n childPermissions: removeRecursive(\n it.childPermissions || [],\n idToRemove,\n ),\n }));\n };\n\n const handleSavePermission = (newPermission) => {\n setPermissions((prev) => {\n let updatedPermissions = [...prev];\n\n if (modalMode === \"add-parent\") {\n updatedPermissions = [...prev, newPermission];\n } else if (modalMode === \"add-child\") {\n const findParent = (items, parentId) => {\n for (const it of items) {\n if (it.permissionId === parentId) return it;\n if (it.childPermissions?.length) {\n const found = findParent(it.childPermissions, parentId);\n if (found) return found;\n }\n }\n return null;\n };\n\n const parent = findParent(prev, modalParentId);\n\n const childWithType = {\n ...newPermission,\n permissionType:\n typeof parent.permissionType === \"string\"\n ? { type: parent.permissionType }\n : parent.permissionType,\n };\n\n updatedPermissions = addChildRecursively(\n prev,\n modalParentId,\n childWithType,\n );\n } else if (modalMode === \"edit\") {\n updatedPermissions = updateNodeRecursively(\n prev,\n editOriginalId,\n newPermission,\n );\n }\n return updatedPermissions;\n });\n\n setModalOpen(false);\n setModalMode(\"add-parent\");\n setModalParentId(null);\n setEditData(null);\n setEditOriginalId(null);\n };\n\n const handleRemovePermission = (perm) => {\n const idToRemove = typeof perm === \"string\" ? perm : perm.permissionId;\n setPermissions((prev) => removeRecursive(prev, idToRemove));\n };\n\n useEffect(() => {\n formCtrl.setValue(\"additionalPermissions\", permissions);\n }, [permissions, formCtrl]);\n\n const flattenPermissions = (permissions, parentId = null) => {\n let result = [];\n\n permissions.forEach((perm) => {\n const {\n permissionId,\n permissionType,\n permissionName,\n permissionDesc,\n enabled,\n backendUrl,\n urlType,\n queryCode,\n } = perm;\n result.push({\n permissionId,\n permissionType: permissionType?.type,\n permissionName,\n permissionDesc,\n parentPermissionId: parentId,\n enabled,\n backendUrl,\n urlType,\n queryCode,\n });\n\n if (perm.childPermissions && perm.childPermissions.length > 0) {\n result = result.concat(\n flattenPermissions(perm.childPermissions, permissionId),\n );\n }\n });\n return result;\n };\n\n const reloadForms = () => {\n (async () => {\n let obj = await fetchFormNames();\n setFormVersions(obj);\n setSelectedFormCode(formCtrl.getValues(\"formCode\"));\n })();\n };\n const formattedFeatureJson = JSON.stringify(\n (isUpdate.value\n ? formCtrl.getValues(\"updatedFields\")\n : formCtrl.getValues(\"fields\")\n )?.reduce((acc, curr) => {\n if (curr.value?.trim()) {\n acc[curr.value.trim()] = curr.checkbox;\n }\n return acc;\n }, {}),\n );\n\n const onFeatureAdd = () => {\n if (!isDynamicFeature && isNew?.val === false) {\n try {\n const newEntries = [];\n\n if (selectedUser?.id) {\n newEntries.push({\n designationId: null,\n userId: selectedUser.id,\n fullName:\n `${selectedUser.firstName || \"\"} ${selectedUser.lastName || \"\"}`.trim(),\n featureJson: formattedFeatureJson,\n });\n }\n\n if (selectedRoles?.length > 0) {\n newEntries.push(\n ...selectedRoles.map((role) => ({\n designationId: role.id,\n roleName: role.name,\n featureJson: formattedFeatureJson,\n })),\n );\n }\n setUserMenuItemDtos((prev) => {\n return [...prev, ...newEntries];\n });\n\n showToast({\n message: \"Menu item added successfully\",\n type: \"success\",\n });\n\n setSelectedRoles([]);\n setSelectedUser({});\n } catch (error) {\n console.error(error);\n showToast({\n message: \"Cannot add menu item\",\n type: \"error\",\n });\n }\n } else {\n const entities = [];\n\n if (selectedUser?.id) {\n entities.push({\n type: \"user\",\n id: selectedUser.id,\n name: selectedUser.firstName + \" \" + selectedUser.lastName,\n });\n }\n\n if (selectedRoles.length > 0) {\n entities.push({\n type: \"role\",\n ids: selectedRoles.map((r) => r.id),\n names: selectedRoles.map((r) => r.name),\n });\n }\n\n if (entities.length === 0) return;\n\n setSelectedEntity(entities);\n setGrantModalOpen(true);\n setSelectedUser(null);\n setSelectedRoles([]);\n }\n };\n\n const buildPermissionUserMapForQuery = (grantedData) => {\n const result = [];\n\n const processPermissions = (permissions, entity) => {\n for (const perm of permissions) {\n if (perm.enabled) {\n result.push({\n permission_id: perm.permissionId,\n user_id: entity.user_id || null,\n role_id: entity.role_id || null,\n is_backend_only: entity.isBackendOnly || false,\n start_date: entity.startDate || null,\n end_date: entity.endDate || null,\n });\n }\n }\n };\n\n for (const entity of grantedData) {\n processPermissions(entity.permissions || [], entity);\n }\n return result;\n };\n\n const handleToggle = (rowIndex, toggledPerm) => {\n setGrantedData((prev) => {\n const newData = [...prev];\n\n newData[rowIndex] = {\n ...newData[rowIndex],\n permissions: togglePermissionDeep(\n newData[rowIndex].permissions,\n toggledPerm.permissionId,\n !toggledPerm.enabled,\n ),\n };\n\n return newData;\n });\n };\n\n const togglePermissionDeep = (permissions, targetId, newState) => {\n const updatedPermissions = permissions.map((perm) => {\n if (perm.permissionId === targetId) {\n return {\n ...perm,\n enabled: newState,\n childPermissions: perm.childPermissions?.length\n ? toggleAllChildren(perm.childPermissions, newState)\n : [],\n };\n }\n\n if (perm.childPermissions?.length) {\n const updatedChildren = togglePermissionDeep(\n perm.childPermissions,\n targetId,\n newState,\n );\n\n const allChildrenEnabled =\n updatedChildren.length > 0 &&\n updatedChildren.every((c) => c.enabled === true);\n\n return {\n ...perm,\n enabled: allChildrenEnabled,\n childPermissions: updatedChildren,\n };\n }\n\n return perm;\n });\n\n return updatedPermissions;\n };\n\n const toggleAllChildren = (children, newState) => {\n return children.map((child) => ({\n ...child,\n enabled: newState,\n childPermissions: child.childPermissions?.length\n ? toggleAllChildren(child.childPermissions, newState)\n : [],\n }));\n };\n\n const checkAvailability = async (featureConstant) => {\n const response = (\n await execute({\n code: \"check_unique_feature_constant\",\n parameters: {\n featureConstant: featureConstant,\n },\n })\n ).data;\n if (response.result[0].exists) {\n formCtrl.setError(\"featureConstant\", {\n type: \"manual\",\n message: \"Feature constant already exists\",\n });\n } else {\n setSuccessMessage(`${featureConstant} Feature constant is available`);\n }\n };\n const checkNavigationAvailability = async (featureState) => {\n const response = (\n await execute({\n code: \"CHECK_UNIQUE_NAVIGATION_STATE\",\n parameters: {\n featureState: featureState,\n },\n })\n ).data;\n if (response.result[0].exists) {\n formCtrl.setError(\"navigationState\", {\n type: \"manual\",\n message: \"Feature State already exists\",\n });\n } else {\n setSuccessMessage(`${featureState} Feature State is available`);\n }\n };\n const debouncedCheckAvailability = useDebounceFn(checkAvailability, 500);\n const debounceNavigationCheckAvailability = useDebounceFn(\n checkNavigationAvailability,\n 500,\n );\n\n const debouncedFetch = debounce(\n async (value, setUserData, setSelectedUser) => {\n const { data: users } = await execute({\n code: \"user_search_for_selectize\",\n parameters: {\n searchString: value,\n },\n });\n\n setUserData(users.result);\n setSelectedUser({ firstName: value, lastName: \"\", userName: \"\" });\n },\n 500,\n );\n\n const handleDynamicFeatureSubmit = async (data) => {\n const flatPermissions = flattenPermissions(permissions);\n\n let menuConfigDto = {\n code: \"insert_dynamic_feature_into_menu_config\",\n parameters: {\n menuName: data.menuName ? data.menuName : null,\n featureConstant: data.featureConstant ? data.featureConstant : null,\n formCode: data.formCode && data.formCode !== \"\" ? data.formCode : null,\n prevFormCode: prevLinkedFormCode || null,\n deLinkPrevForm: prevLinkedFormCode !== data.formCode ? true : false,\n menuType: data.menuType ? data.menuType : null,\n menuGroup: data.menuGroup ? parseInt(data.menuGroup) : null,\n navigationState:\n data.navigationState && data.formCode && data.formCode !== \"\"\n ? data.navigationState\n : null,\n formVersion: data.version ? data.version : null,\n isMobileFeature: data.isMobileFeature ? data.isMobileFeature : null,\n isWebFeature: data.isWebFeature ? data.isWebFeature : null,\n permissions: JSON.stringify(flatPermissions),\n mobileConfig: JSON.stringify({\n entity_name: data.entityName ?? null,\n mobile_mode: data.mobileMode ? data.mobileMode.toUpperCase() : null,\n icon: data.icon ?? null,\n mobile_entities_sync: data.mobileEntitiesSync ?? [],\n conditions: data.conditions ?? null,\n training_required: data.trainingRequired ?? false,\n training_query: data.trainingQuery ?? null,\n notification_badge_enabled: data.notificationBadgeEnabled ?? false,\n notification_badge_type: data.notificationBadgeType ?? null,\n notification_badge_query: data.notificationBadgeQuery ?? null,\n }),\n },\n };\n try {\n const res = await execute(menuConfigDto);\n if (res) {\n let translationDtoList = [];\n if (data.menuName && data.menuName.length > 0) {\n translationDtoList.push({\n code: \"medplat_form_insert_into_translation_master\",\n parameters: {\n translation_key: data.menuName.replaceAll(\" \", \"\"),\n translation_value: data.menuName,\n form_code: \"General\",\n },\n sequence: 1,\n });\n }\n if (translationDtoList.length > 0) {\n await executeAll(translationDtoList);\n }\n\n const permissionUserMap = buildPermissionUserMapForQuery(grantedData);\n\n if (permissionUserMap) {\n await execute({\n code: \"GRANT_PERMISSION_USER_MAP\",\n parameters: {\n permissionUserMap: JSON.stringify(permissionUserMap),\n },\n });\n }\n }\n\n showToast({\n message: queryParams.get(\"featureId\")\n ? \"Feature updated successfully\"\n : \"New Dynamic feature created successfully!\",\n type: \"success\",\n });\n setSubmitted(true);\n } catch (error) {\n showToast({\n message: error.message,\n type: \"error\",\n });\n }\n };\n const handleStaticFeatureSubmit = async (values) => {\n try {\n let groupUUID = null;\n let subgroupId = null;\n let subgroupUUID = null;\n const UUID = generateUUID();\n if (values?.menuGroup?.length) {\n groupUUID = generateUUID();\n }\n const flatPermissions = flattenPermissions(permissions);\n const params = {\n code: \"insert_menu_config\",\n parameters: {\n UUID,\n featureJson: null,\n menuGroup: values.menuGroup ? parseInt(values.menuGroup) : null,\n groupUUID,\n menuName: values.menuName ? values.menuName : null,\n menuType: values.menuType ? values.menuType : null,\n navigationState: values.navigationState\n ? values.navigationState\n : null,\n subgroupId,\n subgroupUUID,\n isMobileFeature: values?.isMobileFeature\n ? values?.isMobileFeature\n : null,\n isWebFeature: values?.isWebFeature ? values?.isWebFeature : null,\n permissions: JSON.stringify(flatPermissions),\n isNewFeature: \"true\",\n mobileConfig: JSON.stringify({\n entity_name: values?.entityName ?? null,\n mobile_mode: values?.mobileMode\n ? values?.mobileMode.toUpperCase()\n : null,\n icon: values?.icon ?? null,\n mobile_entities_sync: values?.mobileEntitiesSync ?? [],\n conditions: values?.conditions ?? null,\n training_required: values.trainingRequired ?? false,\n training_query: values.trainingQuery ?? null,\n notification_badge_enabled:\n values.notificationBadgeEnabled ?? false,\n notification_badge_type: values.notificationBadgeType ?? null,\n notification_badge_query: values.notificationBadgeQuery ?? null,\n }),\n },\n };\n if (isUpdate.value && isNew?.val === false) {\n params.code = \"update_menu_config\";\n const { fields, updatedFields } = values;\n const featureJson =\n isUpdate.value && showFields\n ? convertToJson(updatedFields)\n : fields[0]?.value && showFields\n ? convertToJson(fields)\n : {};\n formCtrl.setValue(\"featureJson\", featureJson);\n delete params.parameters.UUID;\n delete params.parameters.groupUUID;\n delete params.parameters.subgroupUUID;\n delete params.parameters.permissions;\n delete params.parameters.isNewFeature;\n params.parameters.featureType = queryParams.get(\"featureType\");\n params.parameters.featureId = queryParams.get(\"featureId\");\n params.parameters.featureJson = featureJson;\n }\n let returnedData;\n if (isUpdate.value && isNew?.val === false) {\n const { data } = await executeQuery(params);\n returnedData = data;\n await updateUserMenuItems(data?.result[0]?.id, userMenuItemDtos);\n } else {\n if (isUpdate.value) {\n delete params.parameters.UUID;\n delete params.parameters.groupUUID;\n delete params.parameters.subgroupUUID;\n delete params.parameters.isNewFeature;\n params.parameters.featureType = queryParams.get(\"featureType\");\n params.parameters.featureId = queryParams.get(\"featureId\");\n }\n const { data } = await execute(params);\n returnedData = data;\n if (data) {\n let translationDtoList = [];\n if (values.menuName && values.menuName.length > 0) {\n translationDtoList.push({\n code: \"medplat_form_insert_into_translation_master\",\n parameters: {\n translation_key: values.menuName.replaceAll(\" \", \"\"),\n translation_value: values.menuName,\n form_code: \"General\",\n },\n sequence: 1,\n });\n }\n if (translationDtoList.length > 0) {\n await executeAll(translationDtoList);\n }\n\n const permissionUserMap = buildPermissionUserMapForQuery(grantedData);\n if (permissionUserMap) {\n await execute({\n code: \"GRANT_PERMISSION_USER_MAP\",\n parameters: {\n permissionUserMap: JSON.stringify(permissionUserMap),\n },\n });\n }\n }\n }\n if (returnedData?.result?.length) {\n showToast({\n message: isUpdate.value\n ? \"FEATURE EDITED SUCCESFULLY\"\n : \"FEATURE ADDED SUCCESFULLY\",\n type: \"success\",\n });\n } else {\n showToast({\n message: \"FEATURE CONFIGURATION ALREADY EXISTS \",\n type: \"error\",\n });\n }\n setSubmitted(true);\n } catch (error) {\n showToast({\n message: error.message,\n type: \"error\",\n });\n }\n };\n\n const onSubmit = async (data) => {\n if (isDynamicFeature) {\n handleDynamicFeatureSubmit(data);\n } else {\n handleStaticFeatureSubmit(data);\n }\n };\n\n const convertToJson = (fields) => {\n return JSON.stringify(\n fields?.reduce((acc, field) => {\n acc[field.value] = field.checkbox;\n return acc;\n }, {}),\n );\n };\n\n const handleInputChange = (e, value) => {\n if (e && e.type === \"change\") {\n fetchUserData(value);\n }\n };\n\n const fetchUserData = useCallback(\n (value) => {\n debouncedFetch(value, setUserData, setSelectedUser);\n },\n [debouncedFetch],\n );\n const handleCheckboxChange = () => {\n setShowFields(!showFields);\n if (!showFields) {\n isUpdate.value\n ? formCtrl.setValue(\"updatedFields\", [\n { id: 1, value: \"\", checkbox: false },\n ])\n : formCtrl.setValue(\"fields\", [{ id: 1, value: \"\", checkbox: false }]);\n }\n };\n const handleCheckboxValueChange = (id) => {\n const fields = isUpdate.value\n ? formCtrl.getValues(\"updatedFields\")\n : formCtrl.getValues(\"fields\");\n const newFields = fields.map((field) => {\n if (field.id === id) {\n return { ...field, checkbox: !field.checkbox };\n }\n return field;\n });\n isUpdate.value\n ? formCtrl.setValue(\"updatedFields\", newFields)\n : formCtrl.setValue(\"fields\", newFields);\n };\n const handleAddField = () => {\n const fields = isUpdate.value\n ? formCtrl.getValues(\"updatedFields\")\n : formCtrl.getValues(\"fields\");\n\n const lastField = fields[fields?.length - 1];\n if (lastField?.value.trim() === \"\") {\n alert(\"Enter the right name before adding a new one.\");\n return;\n }\n const newField = {\n id: fields.length + 1,\n value: \"\",\n checkbox: false,\n };\n isUpdate.value\n ? formCtrl.setValue(\"updatedFields\", [...fields, newField])\n : formCtrl.setValue(\"fields\", [...fields, newField]);\n };\n const handleDeleteField = (id) => {\n const fields = isUpdate.value\n ? formCtrl.getValues(\"updatedFields\")\n : formCtrl.getValues(\"fields\");\n\n const newFields = fields.filter((field) => field.id !== id);\n isUpdate.value\n ? formCtrl.setValue(\"updatedFields\", newFields)\n : formCtrl.setValue(\"fields\", newFields);\n if (newFields?.length === 0) {\n isUpdate.value ? setShowFields(true) : setShowFields(false);\n }\n };\n return (\n <form\n noValidate\n ref={formRef}\n onSubmit={formCtrl.handleSubmit(onSubmit)}\n method=\"POST\"\n >\n <Box sx={{ width: \"100%\", p: 3, borderRadius: 2 }}>\n <Box sx={{ display: \"flex\" }}>\n <Box\n sx={{\n width: \"30%\",\n maxHeight: \"87vh\",\n background: `linear-gradient(to right, ${theme.palette.custom.featureList || \"#3576BA\"}, ${theme.palette.custom.black2 || \"#1C2128\"})`,\n p: 3,\n borderTopLeftRadius: 16,\n borderBottomLeftRadius: 16,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n gap: 5,\n }}\n >\n {steps.map((step, index) => {\n const isActive = index === activeStep;\n const isFilled = isStepFilled(index);\n const isReachable =\n visibleSteps.some((s) => s.key === step.key) &&\n !isFilled &&\n !isActive;\n const isDisabled = !isReachable && !isFilled && !isActive;\n\n let circleBg = \"transparent\";\n let circleBorder = \"2px solid rgba(255,255,255,0.5)\";\n let circleTextColor = \"white\";\n\n if (isActive) {\n circleBg = \"#BEE2FD\";\n circleTextColor = \"#1e3a8a\";\n circleBorder = \"2px solid #BEE2FD\";\n } else if (isFilled) {\n circleBg = \"white\";\n circleTextColor = \"#4caf50\";\n circleBorder = \"2px solid #4caf50\";\n } else if (isReachable) {\n circleBg = \"transparent\";\n circleTextColor = \"white\";\n circleBorder = \"2px solid #BEE2FD\";\n } else if (isDisabled) {\n circleBg = \"transparent\";\n circleTextColor = \"rgba(255,255,255,0.5)\";\n circleBorder = \"2px solid rgba(255,255,255,0.2)\";\n }\n\n return (\n <Step key={step.key} sx={{ p: 0, m: 0 }}>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n backgroundColor: isActive\n ? \"custom.gray3\"\n : \"transparent\",\n px: 1,\n py: 1,\n transition: \"all 0.3s ease\",\n borderRadius: 2,\n minHeight: 64,\n }}\n >\n {index < steps?.length - 1 && (\n <Box\n sx={{\n position: \"absolute\",\n top: \"45%\",\n left: 22,\n height: \"calc(100% + -10px)\",\n width: 2,\n backgroundColor: \"white\",\n opacity: isDisabled ? 0.3 : 1,\n zIndex: 0,\n transform: \"translateY(50%)\",\n }}\n />\n )}\n\n <Box\n sx={{\n width: 32,\n height: 32,\n borderRadius: \"50%\",\n backgroundColor: circleBg,\n border: circleBorder,\n color: circleTextColor,\n fontWeight: \"bold\",\n fontSize: 14,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n zIndex: 1,\n flexShrink: 0,\n }}\n >\n {isFilled && !isActive ? (\n <FontAwesomeIcons iconName=\"faCheck\" size=\"lg\" />\n ) : (\n index + 1\n )}\n </Box>\n\n <Box sx={{ ml: 2 }}>\n <Typography\n variant=\"caption\"\n sx={{\n color: isFilled ? \"primary.main\" : \"white\",\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n fontSize: 14,\n opacity: isDisabled ? 0.5 : 1,\n }}\n >\n STEP {index + 1}\n </Typography>\n <Typography\n variant=\"subtitle2\"\n sx={{\n color: isFilled ? \"primary.main\" : \"white\",\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n fontSize: 14,\n opacity: isDisabled ? 0.5 : 1,\n }}\n >\n {step.label}\n </Typography>\n </Box>\n </Box>\n </Step>\n );\n })}\n </Box>\n\n <Box\n sx={{\n width: \"80%\",\n backgroundColor: \"background.paper\",\n padding: 2,\n borderRadius: \"10px\",\n display: \"flex\",\n flexDirection: \"column\",\n maxHeight: \"87vh\",\n overflowY: \"auto\",\n }}\n >\n {steps[activeStep]?.key === \"featureDetails\" && (\n <Box display=\"flex\" justifyContent=\"center\">\n <Box width=\"80%\">\n <Typography\n variant=\"h5\"\n sx={{\n fontWeight: \"bold\",\n textAlign: \"center\",\n marginBottom: 1,\n marginTop: 2,\n }}\n >\n {translate(\"Feature Details\")}\n </Typography>\n <Typography\n sx={{ textAlign: \"center\", marginBottom: 4, color: \"grey\" }}\n >\n Please provide the necessary details for the new feature,\n including its name, constant, and where it should be linked\n in the menu.\n </Typography>\n <Grid>\n <FormControl\n variant=\"outlined\"\n className=\"m-3 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography\n variant=\"subtitle1\"\n className=\"whitespace-nowrap\"\n >\n {translate(\"Is\")} {translate(\"dynamic\")}{\" \"}\n {translate(\"feature? \")}:\n </Typography>\n\n <Box className=\"w-[60%]\">\n <Controller\n name=\"isDynamicFeature\"\n control={formCtrl.control}\n rules={{ required: \"Required field\" }}\n render={({ field }) => (\n <CustomSwitch\n checked={field.value}\n disabled={!!queryParams.get(\"featureId\")}\n onChange={(e) => {\n field.onChange(e.target.checked);\n disableForStaticFeature(e);\n }}\n />\n )}\n />\n </Box>\n </FormControl>\n </Grid>\n <Grid>\n <FormControl\n variant=\"outlined\"\n className=\" m-3 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography variant=\"subtitle1\">\n {translate(\"Feature\")} {translate(\"Name\")}\n <span className=\"text-red-500 ml-1\">*</span> :\n </Typography>\n <Box className=\"w-[60%]\">\n <CustomTextField\n control={formCtrl.control}\n id=\"menuName\"\n name=\"menuName\"\n errors={formCtrl.formState.errors}\n disabled={isSeparateFeature}\n placeholder=\"Feature Name\"\n />\n </Box>\n </FormControl>\n </Grid>\n {!isDynamicFeature ? (\n <Grid key=\"dynamic-feature\">\n <FormControl\n variant=\"outlined\"\n className=\" m-2 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography variant=\"subtitle1\">\n {translate(\"Feature\")} {translate(\"State\")}\n <span className=\"text-red-500 mx-1\">*</span>\n <FieldDescription\n title={\n <Typography\n fontSize={12}\n maxWidth={200}\n sx={{ whiteSpace: \"pre-line\" }}\n >\n {\n \"Must follow one of these formats:\\n• techo.*\\n• medplat.*\\n• medplat.form.*\"\n }\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box className=\"w-[60%]\">\n <CustomTextField\n control={formCtrl.control}\n id=\"navigationState\"\n name=\"navigationState\"\n placeholder=\"Feature State\"\n disabled={isSeparateFeature || disableEditing}\n successMessage={successMessage}\n dataTestId=\"managefeature-textfield-feature-state\"\n errors={formCtrl.formState.errors}\n onChange={(e) =>\n debounceNavigationCheckAvailability(\n e.target.value,\n )\n }\n />\n </Box>\n </FormControl>\n </Grid>\n ) : (\n <Grid key=\"static-feature\">\n <FormControl\n variant=\"outlined\"\n className=\" m-3 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography variant=\"subtitle1\">\n {translate(\"Feature\")} {translate(\"Constant\")}\n <span className=\"text-red-500 ml-1\">*</span> :\n </Typography>\n <Box className=\"w-[60%]\">\n <CustomTextField\n control={formCtrl.control}\n id=\"featureConstant\"\n name=\"featureConstant\"\n errors={formCtrl.formState.errors}\n successMessage={successMessage}\n placeholder=\"Feature Constant\"\n disabled={disableEditing}\n onChange={(e) =>\n debouncedCheckAvailability(e.target.value)\n }\n />\n </Box>\n </FormControl>\n </Grid>\n )}\n <Grid>\n <FormControl\n variant=\"outlined\"\n className=\" m-3 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography variant=\"subtitle1\">\n {translate(\"Link\")} {translate(\"to\")}{\" \"}\n {translate(\"Menu\")}\n <span className=\"text-red-500 ml-1\">*</span> :\n </Typography>\n <Box className=\" w-[60%]\">\n <CustomDropdown\n control={formCtrl.control}\n name=\"menuType\"\n options={menuTypes}\n errors={formCtrl.formState.errors}\n disableClearable={false}\n onChange={(e) => {\n formCtrl.setValue(\"menuType\", e.target.value);\n handleFeatureType();\n }}\n />\n </Box>\n </FormControl>\n </Grid>\n <Grid>\n {featureGroup?.length > 0 && (\n <FormControl\n variant=\"outlined\"\n className=\" m-3 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography variant=\"subtitle1\">\n {translate(\"Menu\")} {translate(\"SubGroup\")} :\n </Typography>\n <Box className=\" w-[60%]\">\n <CustomDropdown\n control={formCtrl.control}\n name=\"menuGroup\"\n errors={formCtrl.formState.errors}\n displayName=\"name\"\n optionValue=\"id\"\n options={featureGroup}\n disableClearable={false}\n onChange={handleFeatureGroup}\n />\n </Box>\n </FormControl>\n )}\n </Grid>\n <Grid>\n <FormControl\n variant=\"outlined\"\n className=\"m-3 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography\n variant=\"subtitle1\"\n className=\"whitespace-nowrap\"\n >\n {translate(\"Enable\")} {translate(\"feature\")}{\" \"}\n {translate(\"for\")}:\n </Typography>\n\n <Box className=\"w-[60%] flex flex-row gap-6 items-center\">\n <Box className=\"flex items-center gap-1\">\n <Typography variant=\"subtitle1\">\n {translate(\"Web\")}\n </Typography>\n <Controller\n name=\"isWebFeature\"\n control={formCtrl.control}\n render={({ field }) => (\n <CustomSwitch\n {...field}\n checked={field.value}\n onChange={(e) =>\n field.onChange(e.target.checked)\n }\n />\n )}\n />\n </Box>\n\n <Box className=\"flex items-center gap-1\">\n <Typography variant=\"subtitle1\">\n {translate(\"Mobile\")}\n </Typography>\n <Controller\n name=\"isMobileFeature\"\n control={formCtrl.control}\n render={({ field }) => (\n <CustomSwitch\n {...field}\n checked={field.value}\n onChange={(e) => {\n field.onChange(e.target.checked);\n enableForMobile(e);\n }}\n />\n )}\n />\n </Box>\n </Box>\n </FormControl>\n </Grid>\n </Box>\n </Box>\n )}\n {steps[activeStep]?.key === \"mobileConfig\" && showMobileFields && (\n <Box display=\"flex\" justifyContent=\"center\">\n <Box width=\"95%\">\n <Typography\n variant=\"h5\"\n sx={{ fontWeight: \"bold\", textAlign: \"center\", mb: 1 }}\n >\n {translate(\"Mobile Setup\")}\n </Typography>\n <Typography\n sx={{ textAlign: \"center\", mb: 3, color: \"grey\" }}\n >\n Set up how this feature should behave and appear in the\n mobile app, including its entity, icon and condition query.\n </Typography>\n\n <Accordion\n expanded={accordionExpanded.basicConfig}\n onChange={() =>\n setAccordionExpanded((prev) => ({\n ...prev,\n basicConfig: !prev.basicConfig,\n }))\n }\n sx={{\n mb: 1.5,\n borderRadius: 2,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.08)\",\n border: \"1px solid rgba(33, 150, 243, 0.2)\",\n borderLeft: \"4px solid #2196f3\",\n \"&:before\": { display: \"none\" },\n overflow: \"hidden\",\n }}\n >\n <AccordionSummary\n expandIcon={\n <FontAwesomeIcons iconName=\"faChevronDown\" size=\"sm\" />\n }\n sx={{\n backgroundColor: \"rgba(33, 150, 243, 0.06)\",\n \"&:hover\": {\n backgroundColor: \"rgba(33, 150, 243, 0.12)\",\n },\n minHeight: 52,\n }}\n >\n <Typography fontWeight={700} fontSize={15}>\n Basic Config\n </Typography>\n </AccordionSummary>\n <AccordionDetails\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}\n >\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n >\n <Box\n display=\"flex\"\n alignItems=\"center\"\n gap={2}\n sx={{ width: \"50%\" }}\n >\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"140px\", flexShrink: 0 }}\n >\n {translate(\"Feature Icon\")}{\" \"}\n <span style={{ color: \"#d32f2f\" }}>* </span>\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={200}>\n {\"Upload Feature Icon\"}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Tooltip title=\"Upload Icon\">\n <Box\n sx={{\n transform: \"scale(0.55)\",\n transformOrigin: \"left center\",\n \"& svg\": {\n fontSize: \"2.5rem\",\n },\n }}\n >\n <CustomSvgUpload\n onUpload={(svg) =>\n formCtrl.setValue(\"icon\", svg)\n }\n formControl={formCtrl}\n name=\"icon\"\n accept=\"image/svg+xml, image/svg\"\n errors={\n showMobileFields\n ? formCtrl.formState.errors\n : null\n }\n triggerType=\"icon\"\n />\n </Box>\n </Tooltip>\n </Box>\n <Box\n display=\"flex\"\n alignItems=\"center\"\n gap={2}\n my={4}\n sx={{ width: \"50%\" }}\n >\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"140px\", flexShrink: 0 }}\n >\n {translate(\"Mode\")}{\" \"}\n <span style={{ color: \"#d32f2f\" }}>* </span>\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={200}>\n {\n \"Choose whether this feature should work online or offline\"\n }\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box sx={{ display: \"flex\", flex: 1 }}>\n <Controller\n name=\"mobileMode\"\n control={formCtrl.control}\n render={({ field, fieldState: { error } }) => (\n <>\n <RadioGroup\n value={field.value ?? \"\"}\n row\n {...field}\n >\n <FormControlLabel\n value=\"ONLINE\"\n control={\n <Radio\n disabled={\n disableEditing &&\n initialMobileModeValue !== null\n }\n />\n }\n label=\"Online\"\n />\n <FormControlLabel\n value=\"OFFLINE\"\n control={\n <Radio\n disabled={\n disableEditing &&\n initialMobileModeValue !== null\n }\n />\n }\n label=\"Offline\"\n />\n </RadioGroup>\n {error?.message && (\n <Typography\n variant=\"caption\"\n color=\"error\"\n sx={{ mt: 0.5 }}\n >\n {error.message}\n </Typography>\n )}\n </>\n )}\n />\n </Box>\n </Box>\n </Box>\n\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"140px\", flexShrink: 0 }}\n >\n {translate(\"Entity Name\")}{\" \"}\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={200}>\n {\"Select Entity Name\"}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 2,\n flex: 1,\n }}\n >\n <CustomDropdown\n control={formCtrl.control}\n name=\"entityName\"\n options={entityList || []}\n errors={\n showMobileFields\n ? formCtrl.formState.errors\n : null\n }\n size=\"small\"\n disableClearable={false}\n sx={{ flex: 1 }}\n />\n </Box>\n </Box>\n\n {/* Condition Query (conditional) */}\n {formCtrl.getValues(\"entityName\") &&\n formCtrl.getValues(\"entityName\")?.trim().length > 0 && (\n <Box\n display=\"flex\"\n alignItems=\"flex-start\"\n gap={2}\n my={2}\n >\n <Typography\n variant=\"subtitle1\"\n sx={{\n minWidth: \"140px\",\n flexShrink: 0,\n pt: 0.5,\n }}\n >\n {translate(\"Condition Query\")} :{\" \"}\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={200}>\n {\"Write Condition Query in the editor\"}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box\n flex={1}\n sx={{\n border: \"1px solid #bdbdbd\",\n borderRadius: 2,\n height: \"20vh\",\n overflow: \"hidden\",\n boxShadow: \"0 1px 6px rgba(0, 0, 0, 0.08)\",\n }}\n >\n <Controller\n name=\"conditions\"\n control={formCtrl.control}\n render={({ field, fieldState: { error } }) => (\n <>\n <Editor\n height=\"100%\"\n defaultLanguage=\"sql\"\n theme={\n mode == \"light\" ? \"light\" : \"vs-dark\"\n }\n options={{\n fontSize: 13,\n minimap: { enabled: false },\n automaticLayout: true,\n scrollBeyondLastLine: false,\n wordWrap: \"on\",\n occurrencesHighlight: false,\n selectionHighlight: false,\n }}\n value={field.value || \"\"}\n onChange={field.onChange}\n editorProps={{ $blockScrolling: true }}\n />\n {error?.message && (\n <Typography\n variant=\"caption\"\n color=\"error\"\n sx={{ mt: 0.75, ml: 1 }}\n >\n {error.message}\n </Typography>\n )}\n </>\n )}\n />\n </Box>\n </Box>\n )}\n\n {/* Tables to sync */}\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"140px\", flexShrink: 0 }}\n >\n {translate(\"Tables to sync\")}{\" \"}\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={200}>\n {\"Select at least one table to sync\"}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 2,\n flex: 1,\n }}\n >\n <CustomAutocomplete\n id=\"mobileEntitiesSync\"\n name=\"mobileEntitiesSync\"\n control={formCtrl.control}\n options={syncedTableList}\n onChange={(e, val) => addMobileEntitiesSync(val)}\n getOptionLabel={(option) => option?.tableName}\n checkEquality={\"tableName\"}\n errors={\n showMobileFields\n ? formCtrl.formState.errors\n : null\n }\n dataTestId=\"syncentities-select-table\"\n value={mobileEntitiesSync}\n fullWidth\n />\n </Box>\n </Box>\n </AccordionDetails>\n </Accordion>\n\n {/* ────────── Accordion 2: Training Config ────────── */}\n <Accordion\n expanded={accordionExpanded.trainingConfig}\n onChange={() =>\n setAccordionExpanded((prev) => ({\n ...prev,\n trainingConfig: !prev.trainingConfig,\n }))\n }\n sx={{\n mb: 1.5,\n borderRadius: 2,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.08)\",\n border: \"1px solid rgba(76, 175, 80, 0.2)\",\n borderLeft: \"4px solid #4caf50\",\n \"&:before\": { display: \"none\" },\n overflow: \"hidden\",\n }}\n >\n <AccordionSummary\n expandIcon={\n <FontAwesomeIcons iconName=\"faChevronDown\" size=\"sm\" />\n }\n sx={{\n backgroundColor: \"rgba(76, 175, 80, 0.06)\",\n \"&:hover\": {\n backgroundColor: \"rgba(76, 175, 80, 0.12)\",\n },\n minHeight: 52,\n }}\n >\n <Typography fontWeight={700} fontSize={15}>\n Training Config\n </Typography>\n </AccordionSummary>\n <AccordionDetails\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}\n >\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"200px\", flexShrink: 0 }}\n >\n {translate(\"Training Required\")}{\" \"}\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={220}>\n {t(\n \"Enable if the user must complete training before accessing this feature\",\n )}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box sx={{ flex: 1 }}>\n <Controller\n name=\"trainingRequired\"\n control={formCtrl.control}\n render={({ field }) => (\n <CustomSwitch\n {...field}\n checked={!!field.value}\n onChange={(e) => {\n field.onChange(e.target.checked);\n if (!e.target.checked) {\n formCtrl.setValue(\"trainingQuery\", \"\");\n setTrainingQueryInput(\"\");\n }\n }}\n />\n )}\n />\n </Box>\n </Box>\n\n {formCtrl.watch(\"trainingRequired\") && (\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"200px\", flexShrink: 0 }}\n >\n {translate(\"Training Query\")}{\" \"}\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={220}>\n {t(\n \"Select a query that returns a boolean — true if training is completed, false otherwise\",\n )}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box sx={{ flex: 1 }}>\n <Controller\n name=\"trainingQuery\"\n control={formCtrl.control}\n render={({ field, fieldState: { error } }) => (\n <CustomAutocomplete\n id=\"trainingQuery\"\n name=\"trainingQuery\"\n control={formCtrl.control}\n options={queryCodeOptions}\n getOptionLabel={(option) =>\n option?.code || \"\"\n }\n checkEquality=\"code\"\n inputValue={trainingQueryInput}\n disableClearable={false}\n singleSelect={true}\n value={\n queryCodeOptions?.find(\n (q) => q.code === field.value,\n ) || null\n }\n onInputChange={(e, v, reason) => {\n if (reason === \"input\") {\n setTrainingQueryInput(v);\n fetchGlobalQueryCodes(v);\n }\n }}\n onChange={(e, val) => {\n field.onChange(val?.code || \"\");\n setTrainingQueryInput(val?.code || \"\");\n }}\n placeholder=\"Search training query code...\"\n errors={error}\n fullWidth\n freeSolo={false}\n />\n )}\n />\n </Box>\n </Box>\n )}\n </AccordionDetails>\n </Accordion>\n\n <Accordion\n expanded={accordionExpanded.notificationConfig}\n onChange={() =>\n setAccordionExpanded((prev) => ({\n ...prev,\n notificationConfig: !prev.notificationConfig,\n }))\n }\n sx={{\n mb: 1.5,\n borderRadius: 2,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.08)\",\n border: \"1px solid rgba(255, 152, 0, 0.2)\",\n borderLeft: \"4px solid #ff9800\",\n \"&:before\": { display: \"none\" },\n overflow: \"hidden\",\n }}\n >\n <AccordionSummary\n expandIcon={\n <FontAwesomeIcons iconName=\"faChevronDown\" size=\"sm\" />\n }\n sx={{\n backgroundColor: \"rgba(255, 152, 0, 0.06)\",\n \"&:hover\": {\n backgroundColor: \"rgba(255, 152, 0, 0.12)\",\n },\n minHeight: 52,\n }}\n >\n <Typography fontWeight={700} fontSize={15}>\n {translate(\"Notification Config\")}{\" \"}\n </Typography>\n </AccordionSummary>\n <AccordionDetails\n sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}\n >\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"200px\", flexShrink: 0 }}\n >\n {translate(\"Enable Notification Badge\")}{\" \"}\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={220}>\n {t(\n \"Show a count or nudge badge on this feature's icon in the mobile app\",\n )}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box sx={{ flex: 1 }}>\n <Controller\n name=\"notificationBadgeEnabled\"\n control={formCtrl.control}\n render={({ field }) => (\n <CustomSwitch\n {...field}\n checked={!!field.value}\n onChange={(e) => {\n field.onChange(e.target.checked);\n if (!e.target.checked) {\n formCtrl.setValue(\n \"notificationBadgeType\",\n \"\",\n );\n formCtrl.setValue(\n \"notificationBadgeQuery\",\n \"\",\n );\n setNotificationBadgeQueryInput(\"\");\n }\n }}\n />\n )}\n />\n </Box>\n </Box>\n\n {formCtrl.watch(\"notificationBadgeEnabled\") && (\n <>\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"200px\", flexShrink: 0 }}\n >\n {translate(\"Badge Type\")}{\" \"}\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={220}>\n {t(\n `Count Based: query returns a number.\\n\n Nudge Based: query returns true/false.`,\n )}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box sx={{ flex: 1 }}>\n <Controller\n name=\"notificationBadgeType\"\n control={formCtrl.control}\n render={({ field }) => (\n <RadioGroup row {...field}>\n <FormControlLabel\n value=\"COUNT\"\n control={<Radio />}\n label=\"Count Based\"\n />\n <FormControlLabel\n value=\"NUDGE\"\n control={<Radio />}\n label=\"Nudge Based\"\n />\n </RadioGroup>\n )}\n />\n </Box>\n </Box>\n\n {formCtrl.watch(\"notificationBadgeType\") && (\n <Box display=\"flex\" alignItems=\"center\" gap={2}>\n <Typography\n variant=\"subtitle1\"\n sx={{ minWidth: \"200px\", flexShrink: 0 }}\n >\n {formCtrl.watch(\"notificationBadgeType\") ===\n \"COUNT\"\n ? \"Count Query\"\n : \"Nudge Query\"}{\" \"}\n <FieldDescription\n title={\n <Typography fontSize={12} maxWidth={220}>\n {formCtrl.watch(\n \"notificationBadgeType\",\n ) === \"COUNT\"\n ? \"Select a query that returns a numeric count for the badge\"\n : \"Select a query that returns true/false to show or hide the badge\"}\n </Typography>\n }\n size=\"sm\"\n />\n </Typography>\n <Box sx={{ flex: 1 }}>\n <Controller\n name=\"notificationBadgeQuery\"\n control={formCtrl.control}\n render={({\n field,\n fieldState: { error },\n }) => (\n <CustomAutocomplete\n id=\"notificationBadgeQuery\"\n name=\"notificationBadgeQuery\"\n control={formCtrl.control}\n options={queryCodeOptions}\n getOptionLabel={(option) =>\n option?.code || \"\"\n }\n checkEquality=\"code\"\n inputValue={notificationBadgeQueryInput}\n disableClearable={false}\n singleSelect={true}\n value={\n queryCodeOptions?.find(\n (q) => q.code === field.value,\n ) || null\n }\n onInputChange={(e, v, reason) => {\n if (reason === \"input\") {\n setNotificationBadgeQueryInput(v);\n fetchGlobalQueryCodes(v);\n }\n }}\n onChange={(e, val) => {\n field.onChange(val?.code || \"\");\n setNotificationBadgeQueryInput(\n val?.code || \"\",\n );\n }}\n placeholder={\n formCtrl.watch(\n \"notificationBadgeType\",\n ) === \"COUNT\"\n ? \"Search count query code...\"\n : \"Search nudge query code...\"\n }\n errors={error}\n fullWidth\n freeSolo={false}\n />\n )}\n />\n </Box>\n </Box>\n )}\n </>\n )}\n </AccordionDetails>\n </Accordion>\n </Box>\n </Box>\n )}\n\n {steps[activeStep]?.key === \"formLinking\" && isDynamicFeature && (\n <Box display=\"flex\" justifyContent=\"center\">\n <Box width=\"80%\">\n <Typography\n variant=\"h5\"\n sx={{\n fontWeight: \"bold\",\n textAlign: \"center\",\n marginBottom: 1,\n marginTop: 2,\n }}\n >\n {translate(\"Form Linking\")}\n </Typography>\n <Typography\n sx={{ textAlign: \"center\", mb: 4, color: \"grey\" }}\n >\n Link this feature to an existing form, or create a new form\n to be associated with it.\n </Typography>\n\n <Grid container mt={3} className=\"flex flex-col w-[98%]\">\n <Typography\n variant=\"subtitle1\"\n sx={{\n marginLeft: 1,\n marginBottom: \"0.5rem\",\n fontWeight: 600,\n }}\n >\n Use Existing Form\n </Typography>\n\n <Grid container sx={{ alignItems: \"center\" }}>\n <FormControl\n variant=\"outlined\"\n className=\"m-3 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography variant=\"subtitle1\">\n {translate(\"Select\")} {translate(\"Form\")}:\n </Typography>\n <Box className=\"w-[60%]\">\n <CustomDropdown\n control={formCtrl.control}\n name=\"formCode\"\n options={formNames || []}\n getOptionDisabled={(option) =>\n option.menu_config_id &&\n option.menu_config_id !==\n parseInt(queryParams.get(\"featureId\"))\n }\n displayName=\"form_name\"\n optionValue=\"form_code\"\n errors={formCtrl.formState.errors}\n size=\"small\"\n disableClearable={false}\n onChange={(e) => {\n if (e.target.value) {\n formCtrl.setValue(\n \"navigationState\",\n `medplat.form.${e.target.value}`,\n );\n setSelectedFormCode(e.target.value);\n } else {\n formCtrl.setValue(\"version\", null);\n formCtrl.setValue(\n \"navigationState\",\n \"medplat.form.\",\n );\n }\n }}\n />\n </Box>\n </FormControl>\n </Grid>\n\n <FormControl\n variant=\"outlined\"\n className=\"m-3 flex flex-row items-center w-[80%] justify-between\"\n >\n <Typography variant=\"subtitle1\">\n {translate(\"Select\")} {translate(\"Version\")}:\n </Typography>\n <Box className=\"w-[60%]\">\n <CustomDropdown\n control={formCtrl.control}\n name=\"version\"\n options={\n Array.isArray(formVersions?.[selectedFormCode])\n ? formVersions[selectedFormCode].map(\n (v) => v.version,\n )\n : []\n }\n errors={formCtrl.formState.errors}\n disableClearable={false}\n size=\"small\"\n />\n </Box>\n </FormControl>\n\n <Divider\n sx={{\n width: \"80%\",\n margin: \"1rem auto\",\n position: \"relative\",\n }}\n >\n <Typography\n variant=\"caption\"\n sx={{\n position: \"absolute\",\n top: \"-0.6rem\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n backgroundColor: \"background.paper\",\n padding: \"0 0.5rem\",\n }}\n >\n OR\n </Typography>\n </Divider>\n\n <Box className=\"flex justify-center\">\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => {\n formCtrl.setValue(\"formCode\", null);\n setOpenAddFormModal(true);\n }}\n >\n Add New Form\n </Button>\n {openAddFormModal && (\n <NewFormModal\n mainFormCtrl={formCtrl}\n openAddFormModal={openAddFormModal}\n setModal={(val) => {\n setOpenAddFormModal(val);\n }}\n reloadForms={reloadForms}\n />\n )}\n </Box>\n </Grid>\n </Box>\n </Box>\n )}\n {steps[activeStep]?.key === \"additionalPermissions\" && (\n <Grid item xs={12} md={6}>\n <Box mt={3} className=\"flex flex-col w-full\">\n <Typography\n variant=\"h5\"\n sx={{ fontWeight: \"bold\", textAlign: \"center\", mb: 1 }}\n >\n Additional Permissions\n </Typography>\n <Typography\n sx={{ textAlign: \"center\", mb: 4, color: \"grey\" }}\n >\n Define custom permissions for this feature. These will be\n used to control fine-grained permissions beyond default\n roles.\n </Typography>\n {!isDynamicFeature && isNew?.val === false ? (\n <>\n <Grid>\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-row items-center ml-3 \"\n >\n <Typography variant=\"body2\">\n {translate(\"Add feature JSON access rights\")}\n </Typography>\n <Checkbox\n disabled={disableShowField}\n checked={showFields}\n onChange={handleCheckboxChange}\n data-testid=\"managefeature-checkbox-access-rights\"\n />\n </FormControl>\n </Grid>\n <Grid>\n {isUpdate.value && showFields && (\n <Grid>\n <FormGroup className=\"ml-2\">\n {formCtrl\n .getValues(\"updatedFields\")\n ?.map((field, index) => (\n <Grid\n key={field.id}\n className=\" mb-2.5 flex flex-row items-center \"\n >\n <FormControl>\n <Controller\n name={`updatedFields[${index}].value`}\n control={formCtrl.control}\n render={({ field }) => (\n <TextField\n {...field}\n label={`${translate(\"Right\")} ${index + 1}`}\n value={field.value || \"\"}\n sx={{\n \"& .MuiInputLabel-root\": {\n fontSize: \"14px\",\n },\n \"& .MuiInputBase-input\": {\n fontSize: \"14px\",\n },\n }}\n />\n )}\n />\n </FormControl>\n <Checkbox\n disabled={field.updated}\n checked={field.checkbox}\n onChange={() =>\n handleCheckboxValueChange(field.id)\n }\n className=\" mr-2.5\"\n data-testid={`managefeature-checkbox-updated-right-${index + 1}`}\n />\n {index + 1 ===\n formCtrl.getValues(\"updatedFields\")\n ?.length && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handleAddField}\n size=\"small\"\n className=\" mr-2.5\"\n disabled={\n !watchedFields.updatedFields.some(\n (item) =>\n item.id === field?.id &&\n item.value,\n )\n }\n data-testid=\"managefeature-button-add-updated\"\n >\n {translate(\"Add\")}\n </Button>\n )}\n\n {!field.updated && (\n <Button\n variant=\"contained\"\n size=\"small\"\n color=\"secondary\"\n onClick={() =>\n handleDeleteField(field.id)\n }\n data-testid={`managefeature-button-delete-updated-${index + 1}`}\n >\n {translate(\"Delete\")}\n </Button>\n )}\n </Grid>\n ))}\n </FormGroup>\n </Grid>\n )}\n </Grid>\n </>\n ) : (\n <>\n {permissions?.length === 0 ? (\n <Typography\n variant=\"subtitle1\"\n color=\"text.secondary\"\n align=\"center\"\n sx={{ py: 2 }}\n >\n No permissions added yet.\n </Typography>\n ) : (\n <PermissionItemList\n permissions={permissions}\n onEdit={(perm) => handleEdit(perm)}\n onRemove={(perm) => handleRemovePermission(perm)}\n handleAddChildClick={(parent) =>\n handleAddChild(parent)\n }\n isDynamicFeature={isDynamicFeature}\n />\n )}\n\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"flex-end\",\n mt: 2,\n }}\n >\n <Button\n variant=\"outlined\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={handleAddParent}\n sx={{\n textTransform: \"none\",\n fontWeight: 500,\n borderRadius: 2,\n px: 2,\n py: 0.75,\n minWidth: 120,\n }}\n >\n Add Parent Permission\n </Button>\n </Box>\n <PermissionModal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n onSave={handleSavePermission}\n formCtrl={formCtrl}\n editData={editData}\n parentPermissionId={\n modalMode === \"add-child\" ? modalParentId : null\n }\n mode={modalMode}\n permissionTypes={permissionTypes}\n setPermissionTypes={setPermissionTypes}\n existingPermissionIds={\n new Set(\n flattenPermissions(permissions).map(\n (p) => p.permissionId,\n ),\n )\n }\n isDynamicFeature={isDynamicFeature}\n />\n </>\n )}\n </Box>\n </Grid>\n )}\n {steps[activeStep]?.key === \"assignFeatures\" && (\n <Box mt={3} className=\"flex flex-col w-full\">\n <Typography\n variant=\"h5\"\n sx={{ fontWeight: \"bold\", textAlign: \"center\", mb: 1 }}\n >\n {translate(\"Assign Features\")}\n </Typography>\n <Typography sx={{ textAlign: \"center\", mb: 4, color: \"grey\" }}>\n Assign this feature to specific users or roles. You can toggle\n individual permissions below after assigning.\n </Typography>\n\n <Box display=\"flex\" gap={2} flexWrap=\"wrap\" mb={3}>\n <Box flex=\"1 1 300px\" minWidth={300}>\n <Typography variant=\"subtitle1\" sx={{ mb: 1 }}>\n {translate(\"User\")}\n </Typography>\n <CustomAutocomplete\n id=\"roles\"\n name=\"roles\"\n control={formCtrl.control}\n options={\n !isDynamicFeature && isNew?.val === false\n ? userData.filter(\n (user) =>\n !grantedData.some(\n (g) =>\n g.entityType === \"user\" &&\n g.user_id === user.id,\n ),\n )\n : userData\n }\n value={selectedUser}\n singleSelect={true}\n onChange={handleUserChange}\n onInputChange={handleInputChange}\n getOptionLabel={getOptionLabel}\n data-testid=\"accessrights-autocomplete-user\"\n fullWidth\n />\n </Box>\n\n <Box flex=\"1 1 300px\" minWidth={300}>\n <Typography variant=\"subtitle1\" sx={{ mb: 1 }}>\n {translate(\"Role\")}\n </Typography>\n <CustomAutocomplete\n id=\"selectedRoles\"\n name=\"selectedRoles\"\n control={formCtrl.control}\n options={\n !isDynamicFeature && isNew?.val === false\n ? getFilteredRoles().filter(\n (role) =>\n !grantedData.some(\n (g) =>\n g.entityType === \"role\" &&\n g.role_id === role.id,\n ),\n )\n : getFilteredRoles()\n }\n onChange={(e, val) => addRole(val)}\n getOptionLabel={(option) => option?.name}\n dataTestId=\"accessrights-select-role\"\n value={selectedRoles}\n fullWidth\n />\n </Box>\n\n <Box\n display=\"flex\"\n alignItems=\"flex-end\"\n flexShrink={0}\n sx={{ minWidth: 120 }}\n >\n <Button\n variant=\"contained\"\n size=\"medium\"\n fullWidth\n disabled={!(selectedRoles.length > 0 || selectedUser?.id)}\n data-testid=\"accessrights-add-button\"\n onClick={onFeatureAdd}\n sx={{ minWidth: 120, marginBottom: \"10px\" }}\n >\n {translate(\"Add\")}\n </Button>\n </Box>\n </Box>\n {!isDynamicFeature && isNew?.val === false ? (\n <TableContainer sx={{ maxHeight: 360, overflowY: \"auto\" }}>\n <Table size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell sx={{ fontWeight: \"bold\" }}>\n {translate(\"Type\")}\n </TableCell>\n <TableCell sx={{ fontWeight: \"bold\" }}>\n {translate(\"Name\")}\n </TableCell>\n <TableCell sx={{ fontWeight: \"bold\" }}>\n {translate(\"Access Right\")}\n </TableCell>\n <TableCell sx={{ fontWeight: \"bold\" }}>\n {translate(\"Actions\")}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {userMenuItemDtos.map((field, index) => (\n <TableRow key={index}>\n <TableCell>\n {field.designationId ? \"Role\" : \"User\"}\n </TableCell>\n <TableCell>\n {field.roleName || field.fullName}\n </TableCell>\n <TableCell>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n gap={1}\n >\n {(() => {\n const accessRightsArray = isUpdate.value\n ? formCtrl.getValues(\"updatedFields\")\n : formCtrl.getValues(\"fields\");\n const liveFeatureJson =\n accessRightsArray?.reduce((acc, curr) => {\n acc[curr.value] = curr.checkbox;\n return acc;\n }, {});\n\n const savedFeatureJsonRaw = field.featureJson\n ? JSON.parse(field.featureJson)\n : {};\n\n const savedFeatureJson = Object.fromEntries(\n Object.entries(savedFeatureJsonRaw).map(\n ([key, value]) => [\n key,\n value === true || value === \"true\",\n ],\n ),\n );\n\n const mergedFeatureJson = {\n ...savedFeatureJson,\n ...Object.fromEntries(\n Object.entries(\n liveFeatureJson || {},\n ).filter(\n ([key]) => !(key in savedFeatureJson),\n ),\n ),\n };\n\n return Object.entries(mergedFeatureJson).map(\n ([featureName, isEnabled]) => (\n <Box\n key={featureName}\n display=\"flex\"\n alignItems=\"center\"\n gap={1}\n >\n <CustomSwitch\n sx={{\n transform: \"scale(0.75)\",\n transformOrigin: \"left center\",\n }}\n checked={!!isEnabled}\n // size=\"small\"\n onChange={() => {\n const updatedDtos = [\n ...userMenuItemDtos,\n ];\n\n let currentFeatureJson = {};\n try {\n currentFeatureJson =\n field.featureJson\n ? JSON.parse(\n field.featureJson,\n )\n : {};\n } catch (e) {\n console.warn(\n \"Invalid JSON in featureJson:\",\n e,\n );\n }\n\n const accessRightsArray =\n isUpdate.value\n ? formCtrl.getValues(\n \"updatedFields\",\n )\n : formCtrl.getValues(\n \"fields\",\n ) || [];\n const mergedFeatureJson =\n accessRightsArray.reduce(\n (acc, curr) => {\n acc[curr.value] =\n curr.value in\n currentFeatureJson\n ? currentFeatureJson[\n curr.value\n ]\n : curr.checkbox;\n return acc;\n },\n {},\n );\n\n mergedFeatureJson[featureName] =\n !isEnabled;\n\n updatedDtos[index] = {\n ...field,\n featureJson:\n JSON.stringify(\n mergedFeatureJson,\n ),\n };\n setUserMenuItemDtos(updatedDtos);\n }}\n />\n <Typography variant=\"subtitle1\">\n {featureName}\n </Typography>\n </Box>\n ),\n );\n })()}\n </Box>\n </TableCell>\n <TableCell>\n <IconButton\n size=\"small\"\n color=\"error\"\n onClick={() => {\n const updatedDtos = userMenuItemDtos.filter(\n (_, i) => i !== index,\n );\n setUserMenuItemDtos(updatedDtos);\n }}\n >\n <FontAwesomeIcons\n iconName=\"faTrashAlt\"\n size=\"sm\"\n />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n ) : (\n <>\n {grantedData.length > 0 && (\n <TableContainer\n sx={{ maxHeight: 360, overflowY: \"auto\" }}\n >\n <Table size=\"small\">\n <TableHead>\n <TableRow>\n <TableCell sx={{ fontWeight: \"bold\" }}>\n {translate(\"Type\")}\n </TableCell>\n <TableCell sx={{ fontWeight: \"bold\" }}>\n {translate(\"Name\")}\n </TableCell>\n <TableCell sx={{ fontWeight: \"bold\" }}>\n {translate(\"Permissions\")}\n </TableCell>\n <TableCell sx={{ fontWeight: \"bold\" }}>\n {translate(\"Actions\")}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {grantedData.map((field, index) => (\n <TableRow key={index}>\n <TableCell>\n {field.entityType === \"role\"\n ? \"Role\"\n : \"User\"}\n </TableCell>\n <TableCell>{field.name}</TableCell>\n <TableCell>\n <AssignedPermissionList\n permissions={field.permissions}\n onToggle={(perm) =>\n handleToggle(index, perm)\n }\n />\n </TableCell>\n <TableCell>\n <IconButton\n size=\"small\"\n color=\"error\"\n onClick={() => {\n const updatedData = grantedData.filter(\n (_, i) => i !== index,\n );\n setGrantedData(updatedData);\n }}\n >\n <FontAwesomeIcons\n iconName=\"faTrashAlt\"\n size=\"sm\"\n />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n )}\n </>\n )}\n\n <GrantAccessModal\n open={grantModalOpen}\n onClose={() => setGrantModalOpen(false)}\n permissions={permissions}\n entityData={selectedEntity}\n onSave={(data) => {\n setGrantedData((prev) => [...prev, data]);\n setGrantModalOpen(false);\n }}\n />\n </Box>\n )}\n\n {steps[activeStep]?.key === \"submit\" && submitted && (\n <Box\n sx={{\n mt: 4,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n minHeight: \"300px\",\n px: 3,\n mx: \"auto\",\n maxWidth: 500,\n backgroundColor: \"background.default\",\n borderRadius: 1.5,\n boxShadow: \"0 4px 12px rgba(0,0,0,0.1)\",\n border: `1px solid ${theme.palette.divider}`,\n p: 6,\n }}\n >\n <Box sx={{ color: \"success.main\", fontSize: 40, mb: 2 }}>\n <FontAwesomeIcons iconName=\"faCheckCircle\" />\n </Box>\n <Typography\n variant=\"h6\"\n gutterBottom\n sx={{ fontWeight: \"bold\" }}\n >\n Feature was successfully\n {queryParams.get(\"featureId\") ? \"updated\" : \"created\"}!\n </Typography>\n\n <Divider sx={{ my: 2, width: \"100%\" }} />\n\n <Typography variant=\"subtitle1\" gutterBottom>\n <strong>Feature Name:</strong>{\" \"}\n {formCtrl.getValues(\"menuName\")}\n </Typography>\n\n {isDynamicFeature && (\n <Typography variant=\"subtitle1\" gutterBottom>\n <strong>Feature Constant:</strong>{\" \"}\n {formCtrl.getValues(\"featureConstant\")}\n </Typography>\n )}\n\n <Box mt={5} width=\"100%\" display=\"flex\" justifyContent=\"center\">\n {formCtrl.getValues(\"formCode\") &&\n formCtrl.getValues(\"version\") ? (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n const formCode = formCtrl.getValues(\"formCode\");\n const version = formCtrl.getValues(\"version\");\n const versionObj = formVersions?.[formCode]?.find(\n (v) => v.version === version,\n );\n if (versionObj?.uuid) {\n navigate(\n `/ui/medplat/admin/medplatForms/form/${versionObj.uuid}`,\n );\n } else {\n console.warn(\"Could not find matching version UUID\");\n }\n }}\n >\n Configure Form\n </Button>\n ) : (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={() => navigate(\"/ui/medplat/manage/menu\")}\n >\n Go Back to Menu\n </Button>\n )}\n </Box>\n </Box>\n )}\n\n {!submitted && (\n <Box\n mt=\"auto\"\n display=\"flex\"\n justifyContent=\"flex-end\"\n gap={2}\n sx={{ paddingTop: 4 }}\n >\n <Button\n variant=\"outlined\"\n sx={{ color: \"text.secondary\" }}\n onClick={handleBack}\n >\n Back\n </Button>\n\n {steps[activeStep]?.key !== \"submit\" &&\n (() => {\n const key = steps[activeStep]?.key;\n const isSkippable = [\"formLinking\"].includes(key);\n const isSkipped = skippedSteps.includes(key);\n const [formCodeOrAccessRights, version] =\n formCtrl.getValues(getFieldsForStep(key));\n\n const hasStarted =\n key === \"formLinking\"\n ? !!formCodeOrAccessRights?.trim() || !!version?.trim()\n : key === \"additionalPermissions\"\n ? Array.isArray(formCodeOrAccessRights) &&\n formCodeOrAccessRights.length > 0\n : false;\n\n const handleSaveAndSubmit = formCtrl.handleSubmit(\n (data) => {\n onSubmit(data);\n const submitIndex = steps.findIndex(\n (s) => s.key === \"submit\",\n );\n setFilledSteps((prev) => new Set(prev).add(key));\n setActiveStep(submitIndex);\n },\n );\n\n if (key === \"assignFeatures\" || key === \"accessRights\") {\n return (\n <Button\n variant=\"contained\"\n onClick={handleSaveAndSubmit}\n >\n Save\n </Button>\n );\n }\n\n return isSkippable ? (\n isStepValid ? (\n <Button variant=\"contained\" onClick={handleNext}>\n Next\n </Button>\n ) : hasStarted ? (\n <Button variant=\"contained\" disabled>\n Next\n </Button>\n ) : (\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => {\n if (!isSkipped)\n setSkippedSteps((prev) => [...prev, key]);\n handleNext();\n }}\n >\n Skip for now\n </Button>\n )\n ) : (\n <Button\n variant=\"contained\"\n onClick={handleNext}\n disabled={!isStepValid}\n >\n Next\n </Button>\n );\n })()}\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n </form>\n );\n}\n\nPermissionItemList.propTypes = {\n permissions: PropTypes.any,\n onEdit: PropTypes.any,\n onRemove: PropTypes.any,\n handleAddChildClick: PropTypes.any,\n isDynamicFeature: PropTypes.any,\n};\n\nPermissionModal.propTypes = {\n open: PropTypes.any,\n onClose: PropTypes.any,\n onSave: PropTypes.any,\n formCtrl: PropTypes.any,\n editData: PropTypes.any,\n parentPermissionId: PropTypes.any,\n mode: PropTypes.any,\n permissionTypes: PropTypes.any,\n setPermissionTypes: PropTypes.any,\n isDynamicFeature: PropTypes.any,\n existingPermissionIds: PropTypes.any,\n};\n\nPermissionRow.propTypes = {\n permission: PropTypes.any,\n index: PropTypes.any,\n depth: PropTypes.any,\n onEdit: PropTypes.any,\n onRemove: PropTypes.any,\n handleAddChildClick: PropTypes.any,\n isLastChild: PropTypes.any,\n isDynamicFeature: PropTypes.any,\n};\n\nAssignedPermissionList.propTypes = {\n permissions: PropTypes.any,\n onToggle: PropTypes.any,\n isChild: PropTypes.any,\n};\n\nGrantAccessModal.propTypes = {\n open: PropTypes.any,\n onClose: PropTypes.any,\n onSave: PropTypes.any,\n entityData: PropTypes.any,\n permissions: PropTypes.any,\n};\n"],"names":["NewFormModal","mainFormCtrl","openAddFormModal","setModal","reloadForms","inputValue","setInputValue","useState","items","setItems","formCodeValidation","setFormCodeValidation","validationSchema","Yup","formControl","useForm","yupResolver","handleAddItem","updatedItems","handleDeleteItem","itemToDelete","item","handleInputChange","e","value","handleDialogClose","onSubmit","data","handleAddNewForm","currentForm","showToast","buildFormData","formData","FormConfiguratorService","translationDtoList","executeAll","handleFormCodeChange","useDebounceFn","valid","jsx","Dialog","jsxs","DialogTitle","DialogContent","DialogContentText","Grid2","Divider","Chip","CustomTextField","FormControl","CustomDropdown","Controller","field","TextField","IconButton","FontAwesomeIcons","Box","index","Alert","Fragment","DialogActions","Button","PropTypes","PermissionRow","permission","depth","onEdit","onRemove","handleAddChildClick","isLastChild","isDynamicFeature","theme","useTheme","displayPermissionId","id","alpha","Typography","_a","Stack","child","cIndex","PermissionItemList","permissions","perm","PermissionModal","open","onClose","onSave","formCtrl","editData","parentPermissionId","mode","permissionTypes","setPermissionTypes","existingPermissionIds","inputText","setInputText","options","setOptions","commonDefaults","staticDefaults","_b","_c","defaultValues","control","watch","handleSubmit","reset","setValue","getValues","setError","clearErrors","formState","queryCodeRequired","permissionType","permissionSuffix","backendUrl","queryCode","queryApiOptions","getDefaultValues","override","parentSuffix","toCamelCase","str","word","fetchQueryCodes","search","response","execute","useEffect","baseValues","hasApi","hasQuery","inheritedType","type","menuType","featureConstant","baseId","featureName","parentType","childBaseId","newId","newPermission","checkPermissionIdAvailability","permissionId","CustomAutocomplete","p","option","val","actualValue","newObj","prev","suffix","finalId","CustomTextArea","CustomRadioGroup","Select","MenuItem","error","q","v","reason","CustomSwitch","GrantAccessModal","entityData","noStartDate","noEndDate","startDate","endDate","handleSave","values","grantPermissionSubmit","payloads","entity","ids","roleId","idx","Modal","Card","Grid","CustomCheckBox","CustomDatePicker","AssignedPermissionList","onToggle","isChild","permIndex","ManageDynamicFeature","translate","useTranslateProvider","formRef","useRef","location","useLocation","navigate","useNavigate","isNew","queryParams","useMemo","featureGroup","setFeatureGroup","showMobileFields","setShowMobileFields","entityList","setEntityList","syncedTableList","setSyncedTableList","formNames","setFormNames","formVersions","setFormVersions","setOpenAddFormModal","disableEditing","setDisableEditing","successMessage","setSuccessMessage","selectedFormCode","setSelectedFormCode","prevLinkedFormCode","setPrevLinkedFormCode","menuGroups","setMenuGroups","menuTypes","setMenuTypes","isSyncedLoaded","setIsSyncedLoaded","activeStep","setActiveStep","submitted","setSubmitted","skippedSteps","setSkippedSteps","userData","setUserData","roleData","setRoleData","selectedRoles","setSelectedRoles","mobileEntitiesSync","setMobileEntitiesSync","selectedUser","setSelectedUser","userMenuItemDtos","setUserMenuItemDtos","assignAccessRight","setAssignAccessRight","setPermissions","modalOpen","setModalOpen","modalMode","setModalMode","modalParentId","setModalParentId","setEditData","editOriginalId","setEditOriginalId","grantModalOpen","setGrantModalOpen","selectedEntity","setSelectedEntity","grantedData","setGrantedData","disableShowField","setDisableShowField","showFields","setShowFields","isSeparateFeature","setIsSeparateFeature","isUpdate","setIsUpdate","queryCodeOptions","setQueryCodeOptions","trainingQueryInput","setTrainingQueryInput","notificationBadgeQueryInput","setNotificationBadgeQueryInput","accordionExpanded","setAccordionExpanded","initialMobileModeValue","setInitialMobileModeValue","React","isStepSkipped","stepKey","filledSteps","setFilledSteps","useSelector","state","steps","schema","badgeEnabled","badgeType","useWatch","isMobileFeature","isWebFeature","watchedFieldsSteps","getWatchedFieldNames","watchedFields","isStepValid","hasNavigationStateError","hasFeatureConstantError","hasIcon","hasMode","trainingRequired","trainingQuery","badgeQuery","formCode","version","f","additionalPermissions","_d","visibleSteps","step","handleNext","currentStepKey","moveToNextVisibleStep","getFieldsForStep","currentKey","currentVisibleIndex","s","nextVisibleStep","createDefaultPermission","syncGrantedDataWithPermissions","nextIndexInSteps","currentValue","key","handleBack","prevVisibleStep","prevIndexInSteps","isStepFilled","stepIndex","fetchMenuGroups","fetchTables","fetchSyncedTables","fetchFormNames","fetchData","fetchGlobalQueryCodes","getFeatureDataV2","formattedPermissions","transformBackendPermissions","normalizedData","buildGrantedDataFromBackend","row","normalizePermissionTree","accessRightsArray","defaultAccessRights","acc","curr","enrichedDtos","dto","parsedFeatureJson","mergedFeatureJson","featureId","fetchStaticFeatureInfo","cur","getFeatureData","fields","formattedFields","handleFeatureType","backendPermissions","defaultPermissionId","transform","isDefault","markEnabledRecursive","enabledIds","children","anyChildEnabled","c","isEnabled","isRole","isUser","permissionTree","_e","_g","_f","normalize","childPermissions","allChildrenEnabled","permissionMap","buildMap","perms","mergePermissions","permList","grantedPermList","grantedPerm","g","mergedChildren","fetchFeatureInfo","mobileConfig","mappedMobileEntitiesSync","tableName","loadedTrainingQuery","loadedBadgeQuery","safeJSONParse","fallback","defaultPermission","addRole","addMobileEntitiesSync","tableNames","opt","handleUserChange","newValue","isStatic","forms","obj","form","parsedVersions","err","users","rolesRes","getRoleList","getFilteredRoles","role","roleType","filteredDtos","matchingRole","getOptionLabel","firstName","lastName","userName","featGroup","validGroups","handleFeatureGroup","res","enableForMobile","disableForStaticFeature","handleAddParent","handleAddChild","parentPerm","handleEdit","addChildRecursively","parentId","newChild","it","updateNodeRecursively","originalId","newNode","removeRecursive","idToRemove","handleSavePermission","updatedPermissions","findParent","found","parent","childWithType","handleRemovePermission","flattenPermissions","result","permissionName","permissionDesc","enabled","urlType","formattedFeatureJson","onFeatureAdd","newEntries","entities","r","buildPermissionUserMapForQuery","processPermissions","handleToggle","rowIndex","toggledPerm","newData","togglePermissionDeep","targetId","newState","toggleAllChildren","updatedChildren","checkAvailability","checkNavigationAvailability","featureState","debouncedCheckAvailability","debounceNavigationCheckAvailability","debouncedFetch","debounce","handleDynamicFeatureSubmit","flatPermissions","menuConfigDto","permissionUserMap","handleStaticFeatureSubmit","groupUUID","subgroupId","subgroupUUID","UUID","generateUUID","params","updatedFields","featureJson","convertToJson","returnedData","executeQuery","updateUserMenuItems","fetchUserData","useCallback","handleCheckboxChange","handleCheckboxValueChange","newFields","handleAddField","lastField","newField","handleDeleteField","isActive","isFilled","isReachable","isDisabled","circleBg","circleBorder","circleTextColor","Step","FieldDescription","Accordion","AccordionSummary","AccordionDetails","Tooltip","CustomSvgUpload","svg","RadioGroup","FormControlLabel","Radio","Editor","t","Checkbox","FormGroup","_i","user","TableContainer","Table","TableHead","TableRow","TableCell","TableBody","liveFeatureJson","savedFeatureJsonRaw","savedFeatureJson","updatedDtos","currentFeatureJson","_","i","updatedData","_j","versionObj","_k","isSkippable","isSkipped","formCodeOrAccessRights","hasStarted","handleSaveAndSubmit","submitIndex"],"mappings":"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"}
|