@argusoft/medplat-core 1.0.29 → 1.0.31
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-DUgY6ewy.js +1031 -0
- package/dist/AccessRights-DUgY6ewy.js.map +1 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js +365 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js.map +1 -0
- package/dist/{AddFeatures-v3TmGQee.js → AddFeatures-D1sU8RjY.js} +2 -2
- package/dist/{AddFeatures-v3TmGQee.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-c6ZKiN0i.js +8898 -0
- package/dist/AddMenuConfiguration-c6ZKiN0i.js.map +1 -0
- package/dist/AppModal-CCtrQ5Tr.js +394 -0
- package/dist/AppModal-CCtrQ5Tr.js.map +1 -0
- package/dist/BrandsPage-DMw2vT0u-BVhvhc6J.js +387 -0
- package/dist/BrandsPage-DMw2vT0u-BVhvhc6J.js.map +1 -0
- package/dist/CategoriesPage-D3ihx9Gi-CT58g0ry.js +398 -0
- package/dist/CategoriesPage-D3ihx9Gi-CT58g0ry.js.map +1 -0
- package/dist/{ChangePasswordModalCore-DutQAZOx.js → ChangePasswordModalCore-lQ9GamH1.js} +1605 -1610
- package/dist/ChangePasswordModalCore-lQ9GamH1.js.map +1 -0
- package/dist/ConditionConfig-BQBmBHaM.js +408 -0
- package/dist/ConditionConfig-BQBmBHaM.js.map +1 -0
- package/dist/DashboardPage-asr2XDRu-uOOlX9Vq.js +435 -0
- package/dist/DashboardPage-asr2XDRu-uOOlX9Vq.js.map +1 -0
- package/dist/EventConfig-BY2cgGyx.js +27 -0
- package/dist/EventConfig-BY2cgGyx.js.map +1 -0
- package/dist/EventConfigurations-CUPEN5BV.js +544 -0
- package/dist/EventConfigurations-CUPEN5BV.js.map +1 -0
- package/dist/EventConfigurations.css +1 -1
- package/dist/EventsExceptionModal-BX-ArkBE.js +188 -0
- package/dist/EventsExceptionModal-BX-ArkBE.js.map +1 -0
- package/dist/EventsUi-D6O9S7BK.js +258 -0
- package/dist/EventsUi-D6O9S7BK.js.map +1 -0
- package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js +79 -0
- package/dist/FacilityPicker-DYl_PDyt-Cbwo2tAY.js.map +1 -0
- package/dist/FeatureMenu-CHsBbw3W.js +525 -0
- package/dist/FeatureMenu-CHsBbw3W.js.map +1 -0
- package/dist/{FhirServerList-Dkq7Kbes.js → FhirServerList-iXBPkRVF.js} +22 -22
- package/dist/{FhirServerList-Dkq7Kbes.js.map → FhirServerList-iXBPkRVF.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/GrantPermissionModal-D7iNZd0M.js +239 -0
- package/dist/GrantPermissionModal-D7iNZd0M.js.map +1 -0
- package/dist/ImmunizationConfigurationBase-aUtx0JEe.js +8019 -0
- package/dist/ImmunizationConfigurationBase-aUtx0JEe.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-DOotGZrj-CoPjOJEI.js +665 -0
- package/dist/InventoryPage-DOotGZrj-CoPjOJEI.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-DqW3krT6.js +1216 -0
- package/dist/ManageEventConfiguration-DqW3krT6.js.map +1 -0
- package/dist/ManageEventConfiguration.css +1 -1
- package/dist/{ManageNotification-CfhHlfxA.js → ManageNotification-C5MhV77Q.js} +2 -2
- package/dist/{ManageNotification-CfhHlfxA.js.map → ManageNotification-C5MhV77Q.js.map} +1 -1
- package/dist/{ManageRole-4Y2PP4dQ.js → ManageRole-CNZBRKGU.js} +2 -2
- package/dist/{ManageRole-4Y2PP4dQ.js.map → ManageRole-CNZBRKGU.js.map} +1 -1
- package/dist/ManageTranslation-vRiptUAP.js +833 -0
- package/dist/ManageTranslation-vRiptUAP.js.map +1 -0
- package/dist/ManageTranslation.css +1 -1
- package/dist/{ManageUser-DDzyd9jm.js → ManageUser-DZltBina.js} +224 -224
- package/dist/{ManageUser-DDzyd9jm.js.map → ManageUser-DZltBina.js.map} +1 -1
- package/dist/MemberProfileCard-D5CgkTdJ-D2NgDJl3.js +272 -0
- package/dist/MemberProfileCard-D5CgkTdJ-D2NgDJl3.js.map +1 -0
- package/dist/MobileAnalytics-BLOionG_.js +17301 -0
- package/dist/MobileAnalytics-BLOionG_.js.map +1 -0
- package/dist/MobileMenuManagement-68Wijb0X.js +220 -0
- package/dist/MobileMenuManagement-68Wijb0X.js.map +1 -0
- package/dist/MobileTypeEventConfigModal-CMcj7Ozp.js +752 -0
- package/dist/MobileTypeEventConfigModal-CMcj7Ozp.js.map +1 -0
- package/dist/NotificationFlywayQuery-BAHVjf6N.js +247 -0
- package/dist/NotificationFlywayQuery-BAHVjf6N.js.map +1 -0
- package/dist/{NotificationList-BMFpNUJG.js → NotificationList-DEyRZEuM.js} +2 -2
- package/dist/{NotificationList-BMFpNUJG.js.map → NotificationList-DEyRZEuM.js.map} +1 -1
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js +1812 -0
- package/dist/OtherTypeEventConfigModal-stNmuSv_.js.map +1 -0
- package/dist/PaymentCreatePage-DfvSZ-kB-CckogYoe.js +482 -0
- package/dist/PaymentCreatePage-DfvSZ-kB-CckogYoe.js.map +1 -0
- package/dist/PaymentsPage-DMNjYWAJ-ChO9IXmk.js +157 -0
- package/dist/PaymentsPage-DMNjYWAJ-ChO9IXmk.js.map +1 -0
- package/dist/PermissionsModal-CCYkcKlC.js +151 -0
- package/dist/PermissionsModal-CCYkcKlC.js.map +1 -0
- package/dist/PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js +119 -0
- package/dist/PickupBatchLinesEditor-CE2RuyJT-BPceiJr8.js.map +1 -0
- package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js +783 -0
- package/dist/PickupCreatePage-B4O_-vE5-DoOo9nJO.js.map +1 -0
- package/dist/PickupsPage-D7zyioJB-bHKnARYw.js +818 -0
- package/dist/PickupsPage-D7zyioJB-bHKnARYw.js.map +1 -0
- package/dist/PmGuard-BZE-y4In-D_pUm5MP.js +599 -0
- package/dist/PmGuard-BZE-y4In-D_pUm5MP.js.map +1 -0
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js +1305 -0
- package/dist/ProductEditPage-BVlVUCtD-BR-tJ5Wb.js.map +1 -0
- package/dist/ProductsPage-DvNHIeZt-BoOOJJtk.js +253 -0
- package/dist/ProductsPage-DvNHIeZt-BoOOJJtk.js.map +1 -0
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js +675 -0
- package/dist/PurchaseCreatePage-Cq_i9snz-DRtHHFWw.js.map +1 -0
- package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js +1577 -0
- package/dist/PurchaseRequestDetailPage-CA9KFOfE-CtjG4Gx6.js.map +1 -0
- package/dist/PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js +279 -0
- package/dist/PurchaseRequestsPage-DS9i4o0--TpoxA5Kd.js.map +1 -0
- package/dist/PurchasesPage-DgL5T6BY-DePUuE9l.js +293 -0
- package/dist/PurchasesPage-DgL5T6BY-DePUuE9l.js.map +1 -0
- package/dist/QueryBuilder-CXaBe6sr.js +478 -0
- package/dist/QueryBuilder-CXaBe6sr.js.map +1 -0
- package/dist/{RoleManagement-DEiBNfT8.js → RoleManagement-s8iNx2Mu.js} +145 -155
- 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-CZnIOydv-DKBw-qp7.js +544 -0
- package/dist/SaleCreatePage-CZnIOydv-DKBw-qp7.js.map +1 -0
- package/dist/SalesPage-DPIRrC_O-M8rqnK7z.js +315 -0
- package/dist/SalesPage-DPIRrC_O-M8rqnK7z.js.map +1 -0
- package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.js +676 -0
- package/dist/SettingsPage-BC_R6Z-Q-CKNt9zRu.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-DIOUdYfG.js} +170 -123
- package/dist/ShowFlywayQuery-DIOUdYfG.js.map +1 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js +313 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js.map +1 -0
- package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js +728 -0
- package/dist/StorageUnitsPage-BDRkdCjW-UF64rf7q.js.map +1 -0
- package/dist/SubMenu-BdMTYtC1.js +319 -0
- package/dist/SubMenu-BdMTYtC1.js.map +1 -0
- package/dist/TransactionsPage-CqWTMNU8-Df6eGFDW.js +746 -0
- package/dist/TransactionsPage-CqWTMNU8-Df6eGFDW.js.map +1 -0
- package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js +315 -0
- package/dist/TransferCreatePage-DF7FZaTJ-CL79V3aR.js.map +1 -0
- package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js +476 -0
- package/dist/TransfersPage-CGrRFaBF-cTwBUv0o.js.map +1 -0
- package/dist/TypeConfiguration-JbRCN6GR.js +114 -0
- package/dist/TypeConfiguration-JbRCN6GR.js.map +1 -0
- package/dist/{UserList-Bc8gYxRL.js → UserList-L41Xw0Q6.js} +253 -236
- package/dist/{UserList-Bc8gYxRL.js.map → UserList-L41Xw0Q6.js.map} +1 -1
- package/dist/Users-CsJ08Kjm.js.map +1 -1
- package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js +321 -0
- package/dist/VialsPage-rvvXjgZG-Oqo1v6kQ.js.map +1 -0
- package/dist/constants-DpXnLsAB-D6lN5cjK.js +445 -0
- package/dist/constants-DpXnLsAB-D6lN5cjK.js.map +1 -0
- package/dist/{dashboardLayoutUtils-D1xCAxp3.js → dashboardLayoutUtils-CJivzaU1.js} +95 -92
- package/dist/dashboardLayoutUtils-CJivzaU1.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 +1 -1
- package/dist/index.lib-ETRQOzvE.js +894 -0
- package/dist/index.lib-ETRQOzvE.js.map +1 -0
- package/dist/listValueStore-BFQtDYIR-Bj0yX145.js +36 -0
- package/dist/listValueStore-BFQtDYIR-Bj0yX145.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 +4 -3
- package/dist/AccessRights-Zm8Obm4N.js +0 -1284
- package/dist/AccessRights-Zm8Obm4N.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-Ce91MhnU.js +0 -8547
- package/dist/AddMenuConfiguration-Ce91MhnU.js.map +0 -1
- package/dist/AppModal-CtG2GjD_.js +0 -428
- package/dist/AppModal-CtG2GjD_.js.map +0 -1
- package/dist/ChangePasswordModalCore-DutQAZOx.js.map +0 -1
- package/dist/ConditionConfig-B4Ffpgj3.js +0 -395
- package/dist/ConditionConfig-B4Ffpgj3.js.map +0 -1
- package/dist/ConditionConfig.css +0 -1
- package/dist/EventConfigurations-BJcURufo.js +0 -449
- package/dist/EventConfigurations-BJcURufo.js.map +0 -1
- package/dist/EventsExceptionModal-BlZtBQoR.js +0 -200
- package/dist/EventsExceptionModal-BlZtBQoR.js.map +0 -1
- package/dist/EventsSkeleton-DK6JDKAK.js +0 -83
- package/dist/EventsSkeleton-DK6JDKAK.js.map +0 -1
- package/dist/FeatureMenu-C3503UIX.js +0 -265
- package/dist/FeatureMenu-C3503UIX.js.map +0 -1
- package/dist/FlywayQuery-Cx2sly6g.js +0 -169
- package/dist/FlywayQuery-Cx2sly6g.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-DLQVSNnt.js +0 -5895
- package/dist/ImmunizationConfigurationBase-DLQVSNnt.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-dt096fyj.js +0 -4189
- package/dist/ManageDynamicFeature-dt096fyj.js.map +0 -1
- package/dist/ManageEventConfiguration-BpSJszSX.js +0 -1017
- package/dist/ManageEventConfiguration-BpSJszSX.js.map +0 -1
- package/dist/ManageTranslation-B4C9-lWD.js +0 -625
- package/dist/ManageTranslation-B4C9-lWD.js.map +0 -1
- package/dist/MobileMenuManagement-Cf8IZlla.js +0 -108
- package/dist/MobileMenuManagement-Cf8IZlla.js.map +0 -1
- package/dist/MobileTypeEventConfigModal-DUkUYACe.js +0 -783
- package/dist/MobileTypeEventConfigModal-DUkUYACe.js.map +0 -1
- package/dist/NotificationFlywayQuery-BY8Zzml_.js +0 -244
- package/dist/NotificationFlywayQuery-BY8Zzml_.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-CYBfr2XE.js +0 -2046
- package/dist/OtherTypeEventConfigModal-CYBfr2XE.js.map +0 -1
- package/dist/QueryBuilder-z7eqfd7D.js +0 -383
- package/dist/QueryBuilder-z7eqfd7D.js.map +0 -1
- package/dist/RoleManagement-DEiBNfT8.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-B072oEGb.js +0 -191
- package/dist/SubMenu-B072oEGb.js.map +0 -1
- package/dist/TypeConfiguration-C3xoP2Nb.js +0 -117
- package/dist/TypeConfiguration-C3xoP2Nb.js.map +0 -1
- package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +0 -1
- package/dist/index.lib-C3fwoM3y.js +0 -820
- package/dist/index.lib-C3fwoM3y.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AccessRights-Zm8Obm4N.js","sources":["../src/views/Features/GrantPermissionModal.jsx","../src/views/Features/AccessPanel.jsx","../src/views/Features/PermissionsModal.jsx","../src/views/Features/AccessRights.jsx"],"sourcesContent":["import React from \"react\";\nimport {\n Modal,\n Box,\n Card,\n Typography,\n IconButton,\n Button,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faXmark } from \"@fortawesome/free-solid-svg-icons\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as Yup from \"yup\";\nimport CustomCheckBox from \"@/views/custom-components/CustomCheckBox\";\nimport CustomDatePicker from \"@/views/custom-components/CustomDatePicker\";\nimport PropTypes from \"prop-types\";\nimport { getFeatureDataV2 } from \"../../services/Features\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { execute } from \"@/common/services/GlobalApis.js\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\n\nconst schema = Yup.object().shape({\n noStartDate: Yup.boolean().default(true),\n noEndDate: Yup.boolean().default(true),\n startDate: Yup.date()\n .nullable()\n .when(\"noStartDate\", {\n is: false,\n then: (schema) => schema.required(\"Start date is required\"),\n }),\n endDate: Yup.date()\n .nullable()\n .when(\"noEndDate\", {\n is: false,\n then: (schema) => schema.required(\"End date is required\"),\n })\n .test(\n \"endAfterStart\",\n \"End date must be after start date\",\n function (value) {\n const { startDate, noEndDate } = this.parent;\n if (!value || noEndDate || !startDate) return true;\n return new Date(value) >= new Date(startDate);\n }\n ),\n isBackendOnly: Yup.boolean().default(false),\n});\n\nexport default function GrantPermissionModal({\n isOpen,\n onClose,\n pendingGrant,\n subMenuId,\n newApiData,\n}) {\n const { translate } = useTranslateProvider();\n const {\n handleSubmit,\n control,\n reset,\n watch,\n formState: { errors },\n trigger,\n } = useForm({\n resolver: yupResolver(schema),\n defaultValues: {\n noStartDate: true,\n noEndDate: true,\n startDate: null,\n endDate: null,\n isBackendOnly: false,\n },\n mode: \"onChange\",\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 handleFormSubmit = async (values) => {\n if (!pendingGrant) return;\n\n try {\n await execute({\n code: \"grant_permission\",\n parameters: {\n featureName: pendingGrant.id,\n roleIds: pendingGrant?.designationId\n ? String(pendingGrant?.designationId)\n : null,\n userIds: pendingGrant?.userId ? String(pendingGrant.userId) : null,\n startDate: values.noStartDate ? null : values.startDate,\n endDate: values.noEndDate ? null : values.endDate,\n isBackendOnly: values.isBackendOnly,\n },\n });\n\n showToast({\n type: \"success\",\n message: \"Permission Granted Successfully\",\n });\n\n // refresh data\n const { data: val } = await getFeatureDataV2(subMenuId);\n newApiData(val);\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error granting permission: ${error?.response?.data?.message}`,\n });\n }\n\n // cleanup\n reset();\n onClose();\n };\n\n const handleClose = () => {\n reset();\n onClose();\n };\n\n return (\n <Modal open={isOpen} onClose={handleClose}>\n <Box className=\"fixed inset-0 flex items-start justify-center z-50 overflow-y-auto bg-opacity-10\">\n <Card\n className=\"\n relative mt-10 p-4 shadow-lg flex flex-col rounded-xl\n w-[95vw] max-w-md\n sm:w-[80vw] sm:max-w-lg\n md:w-[60vw] md:max-w-xl\n lg:w-[40vw] lg:max-w-2xl\n xl:w-[30vw] xl:max-w-3xl\n \"\n >\n <form onSubmit={handleSubmit(handleFormSubmit)}>\n {/* Header */}\n <Grid className=\"flex justify-between items-center mb-4\">\n <Typography\n variant=\"h6\"\n className=\"text-base sm:text-lg text-customBlue\"\n >\n {translate(\"Set Access Window\")}\n </Typography>\n <IconButton onClick={handleClose}>\n <FontAwesomeIcon icon={faXmark} />\n </IconButton>\n </Grid>\n\n {/* Dates */}\n <Grid className=\"flex flex-col sm:flex-row gap-4 mb-4\">\n <Grid className=\"flex-1\">\n <CustomCheckBox\n defaultChecked={true}\n label={\"No Start Date\"}\n control={control}\n errors={errors}\n name={\"noStartDate\"}\n onChange={() => trigger(\"startDate\")}\n />\n <CustomDatePicker\n control={control}\n name={\"startDate\"}\n errors={errors}\n disabled={noStartDate}\n format=\"DD/MM/YYYY\"\n maxDate={endDate ? endDate : undefined}\n />\n </Grid>\n <Grid className=\"flex-1\">\n <CustomCheckBox\n label={\"No End Date\"}\n control={control}\n name={\"noEndDate\"}\n errors={errors}\n onChange={() => trigger(\"endDate\")}\n />\n <CustomDatePicker\n control={control}\n name={\"endDate\"}\n errors={errors}\n disabled={noEndDate}\n format=\"DD/MM/YYYY\"\n minDate={startDate ? startDate : undefined}\n />\n </Grid>\n </Grid>\n\n {/* Backend only */}\n <CustomCheckBox\n label={\"Is Backend Only?\"}\n control={control}\n name={\"isBackendOnly\"}\n className=\"\"\n />\n\n {/* Footer */}\n <Grid className=\"flex justify-end gap-3 mt-2\">\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n onClick={handleClose}\n type=\"button\"\n className=\"mt-2\"\n >\n {translate(\"Close\")}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n className=\"mt-2\"\n >\n {translate(\"Submit\")}\n </Button>\n </Grid>\n </form>\n </Card>\n </Box>\n </Modal>\n );\n}\n\nGrantPermissionModal.propTypes = {\n isOpen: PropTypes.bool,\n onClose: PropTypes.func,\n pendingGrant: PropTypes.object,\n execute: PropTypes.func,\n getFeatureDataV2: PropTypes.func,\n subMenuId: PropTypes.string,\n newApiData: PropTypes.func,\n showToast: PropTypes.func,\n};\n","import { useEffect, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport Grid from \"@mui/material/Grid2\";\nimport { execute } from \"@/common/services/GlobalApis\";\nimport { Autocomplete, Button, TextField, Typography } from \"@mui/material\";\nimport PropTypes from \"prop-types\";\nimport CustomAutocomplete from \"@/views/custom-components/CustomAutoComplete\";\n\nexport default function AccessPanel({\n translate,\n onSubmit,\n roleList,\n featureData,\n}) {\n const [search, setSearch] = useState(\"\");\n const [debouncedSearch, setDebouncedSearch] = useState(\"\");\n const [userList, setUserList] = useState([]);\n const { control, handleSubmit, reset } = useForm({});\n\n const newRoleList = roleList.filter(\n (role) => !featureData?.some((item) => item?.designationId === role?.id)\n );\n\n /**\n * Debounces the `search` input by 300ms before updating `debouncedSearch`.\n * Ensures user input is throttled to avoid excessive API calls.\n */\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedSearch(search);\n }, 300);\n\n return () => clearTimeout(handler);\n }, [search]);\n\n /**\n * Triggers user list fetching when `debouncedSearch` is updated and non-empty.\n */\n useEffect(() => {\n if (debouncedSearch !== \"\") {\n userListFetch(debouncedSearch);\n }\n }, [debouncedSearch]);\n\n useEffect(() => {\n userListFetch(\"\");\n }, []);\n\n /**\n * Fetches a filtered list of users based on the provided search query.\n *\n * Calls the backend with the given query string, processes the response to ensure\n * only users with valid IDs are included, and maps each user to include a formatted\n * `displayName` used in UI dropdowns.\n *\n * @param {string} query - The search string used to filter users.\n */\n const userListFetch = async (query, currentFeatureData = featureData) => {\n try {\n const { data: userData } = await execute({\n code: \"user_search_for_selectize\",\n parameters: {\n searchString: query,\n },\n });\n\n const newArray = (userData?.result || [])\n .filter((item) => item?.id)\n .filter(\n (user) =>\n !currentFeatureData?.some((item) => item?.userId === user?.id)\n )\n .map((item) => ({\n ...item,\n displayName:\n `${item.firstName || \"\"} ${item.lastName || \"\"} (${item.userName || \"\"})`.trim(),\n }));\n\n setUserList(newArray);\n } catch (error) {\n console.error(error);\n }\n };\n\n return (\n <Grid className=\"flex flex-col md:flex-row gap-3 md:pl-5 justify-start w-full\">\n <Grid\n key=\"specific-section\"\n className=\"flex flex-col md:flex-row md:space-x-5 justify-center items-center w-full\"\n >\n <Grid className=\"flex flex-row flex-2 md:space-x-3 items-center w-full\">\n <Typography className=\"flex-1\">{translate(\"User\")}</Typography>\n <Grid className=\"flex-3\">\n <Controller\n name=\"roles\"\n id=\"roles\"\n users\n control={control}\n defaultValue={null} // or ''\n render={({ field: { onChange, value, ref } }) => (\n <Autocomplete\n options={userList}\n getOptionLabel={(option) => option.displayName || \"\"}\n isOptionEqualToValue={(option, value) =>\n option.id === value?.id\n }\n value={value || null}\n onChange={(event, newValue, reason) => {\n if (reason === \"clear\") {\n userListFetch(\"\");\n }\n onChange(newValue);\n }}\n onInputChange={(event, newInputValue, reason) => {\n if (reason === \"input\") {\n setSearch(newInputValue);\n }\n }}\n renderOption={(props, option) => {\n const label = option.displayName || \"\";\n const searchTerm = search.trim();\n\n const index = label\n .toLowerCase()\n .indexOf(searchTerm.toLowerCase());\n if (index === -1) {\n return (\n <li\n {...props}\n key={option.id}\n style={{ lineHeight: 1.5, fontSize: \"14px\" }}\n >\n {label}\n </li>\n );\n }\n\n const beforeMatch = label.substring(0, index);\n const match = label.substring(\n index,\n index + searchTerm.length\n );\n const afterMatch = label.substring(\n index + searchTerm.length\n );\n\n return (\n <li {...props} key={option.id}>\n <span className=\"inline\">\n {beforeMatch}\n <span className=\"bg-yellow-300\">{match}</span>\n {afterMatch}\n </span>\n </li>\n );\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"User\"\n variant=\"outlined\"\n size=\"small\"\n inputRef={ref}\n />\n )}\n />\n )}\n />\n </Grid>\n </Grid>\n <Grid className=\"flex flex-row flex-2 md:space-x-3 items-center w-full\">\n <Typography className=\"flex-1\">{translate(\"Role\")}</Typography>\n <Grid className=\"flex-3\">\n <CustomAutocomplete\n id=\"selectedRoles\"\n name={\"selectedRoles\"}\n options={newRoleList}\n control={control}\n // onChange={(e, val) => addRole(val)}\n getOptionLabel={(option) => option?.name}\n dataTestId=\"accessrights-select-role\"\n // value={selectedRoles}\n />\n </Grid>\n </Grid>\n </Grid>\n <Grid className=\"flex items-center md:pr-5 justify-end\">\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={handleSubmit((data) => {\n onSubmit(data);\n\n userListFetch(\"\", [...featureData, { userId: data.roles?.id }]);\n reset();\n })}\n >\n {translate(\"add\")}\n </Button>\n </Grid>\n </Grid>\n );\n}\n\nAccessPanel.propTypes = {\n translate: PropTypes.any,\n permissionDetailsList: PropTypes.any,\n getPermissionDetails: PropTypes.any,\n onSubmit: PropTypes.any,\n permissionTypes: PropTypes.any,\n roleList: PropTypes.any,\n featureData: PropTypes.any,\n};\n","import React from \"react\";\nimport { Modal, Box, Card, Typography, IconButton } from \"@mui/material\";\nimport PropTypes from \"prop-types\";\n\nimport { faArrowRight, faCheck, faXmark } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nimport Grid from \"@mui/material/Grid2\";\n\nexport default function PermissionsModal({\n isOpen,\n onClose,\n permissions,\n featureState,\n featureName,\n}) {\n const handleClose = () => {\n onClose();\n };\n\n\n const isChecked = featureState[featureName] || false;\n const renderPermissionList = (node, level = 0) => {\n if (!node) return null;\n\n const childrenNode = node.child || [];\n const featureName = node.display_name || node.name || node.id;\n // const isChecked = !!featureState[featureName];\n\n return (\n <div className=\"py-2 \">\n <div className=\"flex items-center \">\n {isChecked ? (\n <FontAwesomeIcon icon={faCheck} />\n ) : (\n <FontAwesomeIcon icon={faArrowRight} />\n )}\n <div className=\"top-6.5 w-4 border-t border-gray-300\"></div>\n <div\n className={`\n inline-flex items-center \n text-[0.8rem]\n px-2 py-1\n rounded-full\n bg-gray-100\n text-gray-800\n border border-gray-300\n hover:bg-gray-200\n transition-all duration-200 cursor-pointer\n \n `}\n >\n {featureName}\n </div>\n </div>\n\n {childrenNode?.length > 0 && (\n <div className=\"pl-2 \">\n {childrenNode.map((child, index) => {\n const isLast = index === childrenNode.length - 1;\n\n return (\n <div key={index} className=\"relative pl-3\">\n <div\n className={`\n absolute left-0 w-px bg-gray-300\n ${isLast ? \"top-0 h-6.5\" : \"top-[-11px] bottom-0\"}\n `}\n />\n {/* <div\n className={`absolute left-0 w-px bg-gray-300 \n ${isLast ? \"top-0 h-6.5\" : \"top-[-11px] bottom-0\"}\n `}\n /> */}\n\n {/* HORIZONTAL CONNECTOR (line → chip row) */}\n <div className=\"absolute left-0 top-6.5 w-3 border-t border-gray-300\" />\n {renderPermissionList(child, level + 1)}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <Modal open={isOpen} onClose={handleClose}>\n <Box className=\"fixed inset-0 flex items-start justify-center z-50 bg-opacity-10\">\n <Card\n className=\"\n relative mt-10 shadow-lg flex flex-col rounded-xl\n w-[95vw] max-w-md\n sm:w-[80vw] sm:max-w-lg\n md:w-[60vw] md:max-w-xl\n lg:w-[60vw] lg:max-w-2xl\n xl:w-[30vw] xl:max-w-3xl\n \n \"\n >\n <Grid className=\"flex justify-between items-center p-[5px_10px] border-b border-black\">\n <Typography variant=\"body1\" className=\"font-bold text-customBlue\">\n Permissions\n </Typography>\n <IconButton\n size=\"small\"\n onClick={handleClose}\n data-testid=\"flywayquery-close-button\"\n >\n <FontAwesomeIcon icon={faXmark} />\n </IconButton>\n </Grid>\n <div className=\" max-h-[75vh] overflow-y-auto\">\n {permissions && (\n <div className=\"w-max pl-6 m-3 rounded px-2 py-1 h-fit \">\n {renderPermissionList(permissions)}\n </div>\n )}\n </div>\n </Card>\n </Box>\n </Modal>\n );\n}\n\nPermissionsModal.propTypes = {\n isOpen: PropTypes.bool,\n onClose: PropTypes.func,\n permissions: PropTypes.any,\n featureName: PropTypes.any,\n featureState: PropTypes.any,\n};\n","import {\n Box,\n Checkbox,\n debounce,\n FormControl,\n FormControlLabel,\n // List,\n ListItem,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport PropTypes from \"prop-types\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport React, { useCallback, useEffect, useState, useRef } from \"react\";\nimport { useTheme } from \"@mui/material/styles\";\nimport {\n deleteUserMenuItem,\n getFeatureAccessSummaryV2,\n getFeatureData,\n getFeatureDataV2,\n getFeaturePermissionsForIdentity,\n postMenuItem,\n updateUserMenuItem,\n} from \"../../services/Features\";\nimport { getRoleList, execute } from \"@/common/services/GlobalApis.js\";\nimport \"@/assets/scss/scrollBar.scss\";\nimport { useForm } from \"react-hook-form\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faAngleDown,\n // faEarDeaf,\n faEye,\n faEyeSlash,\n faPen,\n faTrash,\n} from \"@fortawesome/free-solid-svg-icons\";\n// import CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport GrantPermissionModal from \"./GrantPermissionModal\";\nimport AccessPanel from \"./AccessPanel\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\n\nimport Accordion from \"@mui/material/Accordion\";\nimport AccordionDetails from \"@mui/material/AccordionDetails\";\nimport AccordionSummary from \"@mui/material/AccordionSummary\";\n\nimport { IconButton, Menu, MenuItem, Tooltip } from \"@mui/material\";\nimport PermissionsModal from \"./PermissionsModal\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nfunction RowActionMenu({ config, row }) {\n const [anchorEl, setAnchorEl] = useState(null);\n const openMenu = Boolean(anchorEl);\n\n const handleIconClick = (e) => {\n e.stopPropagation(); // row/accordion click ko rokne ke liye\n setAnchorEl(e.currentTarget);\n\n if (typeof config.menuClick === \"function\") {\n config.menuClick(row);\n }\n };\n\n const handleClose = (e) => {\n if (e) {\n e.stopPropagation();\n }\n setAnchorEl(null);\n };\n\n const handleItemClick = (item) => (e) => {\n e.stopPropagation();\n if (typeof item.onClick === \"function\") {\n item.onClick(row);\n }\n setAnchorEl(null);\n };\n\n return (\n <Box>\n <IconButton\n size=\"small\"\n disableRipple\n sx={{\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n }}\n onClick={handleIconClick}\n data-testid={config.dataTestId}\n >\n {config.icon}\n </IconButton>\n\n <Menu\n anchorEl={anchorEl}\n open={openMenu}\n onClose={handleClose}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\n >\n {config.menuItems?.map((item, index) => (\n <MenuItem key={index} onClick={handleItemClick(item)}>\n {item.label}\n </MenuItem>\n ))}\n </Menu>\n </Box>\n );\n}\n\nRowActionMenu.propTypes = {\n config: PropTypes.any,\n row: PropTypes.any,\n};\n\n/**\n * The `AccessRights` component displays access rights related to a specific sub-menu.\n *@module AccessRights\n * @param {Object} props - The component props.\n * @param {number} props.subMenuId - The ID of the sub-menu for which access rights are displayed or managed.\n * @param {number} props.subMenuGroupName - The name of the sub-menu group.\n */\nexport default function AccessRights({\n subMenuId,\n // subMenuGroupName,\n subMenuFeatureVal,\n // selectedTab,\n parentLoading,\n onNewAPIChange,\n rights,\n}) {\n const useSkeleton = useSelector(getUseSkeleton);\n const theme = useTheme();\n const formRef = useRef(null);\n const submitRef = useRef(false);\n const trackEvent = useTrackEvent();\n const useLegacySummaryApiRef = useRef(!GeneralUtil.isTecho);\n const [featureNames, setFeatureNames] = useState([]);\n const [featureData, setFeatureData] = useState([]);\n const [initFeatureData, setinitFeatureData] = useState([]);\n const [roleData, setRoleData] = useState([]);\n const [initialROleData, setInitialRoleData] = useState([]);\n const [feature, setFeature] = useState(\"\");\n const [selectedUser, setSelectedUser] = useState({});\n const [open, setOpen] = useState(false);\n const [openPermissionModal, setOpenPermissionModal] = useState(false);\n const [deletedId, setDeletedId] = useState(\"\");\n const [selectedRow, setSelectedRow] = useState(null);\n const [allData, setAllData] = useState({});\n const [isLoading, setIsLoading] = useState(false);\n const [isNewApi, setIsNewApi] = useState(false);\n const [pendingGrant, setPendingGrant] = useState(null);\n const [permissionList, setPermissionList] = useState([]);\n const [isOpen, setIsOpen] = useState(0);\n const [search, setSearch] = useState(\"\");\n const { translate } = useTranslateProvider();\n const [selectedFeatureName, setSelectedFeatureName] = useState(\"\");\n const [selectedFeatureState, setSelectedFeatureState] = useState([]);\n\n // const { user } = useSelector((state) => state.Authenticate);\n // const featuresObj = user?.features || {};\n const [expandedChildrenByRow, setExpandedChildrenByRow] = useState(null);\n\n const getBasicRightId = () => {\n if (!permissionList || permissionList.length === 0) return null;\n const views = permissionList.filter((rights) =>\n rights?.id?.startsWith(\"view\"),\n );\n if (views && views.length > 0) {\n // Case 2: view.report.<uuid> — anchored so candrilldown sub-rights don't match\n const reportUuidView = views.find((item) =>\n /^view\\.report\\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(item.id)\n );\n if (reportUuidView) return reportUuidView.id;\n\n // Case 1: view.report — exact match regardless of list order\n if (views.some((item) => item.id === \"view.report\")) return \"view.report\";\n\n // Case 3: view.x.x — three-segment\n const threeSegment = views.filter((item) => item.id.split(\".\").length === 3);\n if (threeSegment.length > 0) {\n return threeSegment[0].id;\n }\n }\n return permissionList[0]?.id;\n };\n\n useEffect(() => {\n let form = formRef.current;\n\n return () => {\n trackEvent(\"conversion_event\", {\n form,\n form_name: \"Access Rights\",\n submit: submitRef.current,\n }); // Use the current ref value\n };\n }, []);\n\n /**\n * Sorts an array of user menu items based on `designationId` and `userId`.\n * @param {Object} data - The data object containing `userMenuItemDtos` to be sorted.\n * @param {Object[]} data.userMenuItemDtos - An array of user menu items to sort.\n * @param {number} [data.userMenuItemDtos[].designationId] - The designation ID of a menu item.\n * @param {number} [data.userMenuItemDtos[].userId] - The user ID of a menu item.\n * @returns {Object[]} The sorted array of user menu items.\n */\n const sortData = (data) => {\n let sortedData;\n sortedData = data.userMenuItemDtos?.toSorted((a, b) => {\n if (a.designationId !== undefined && b.designationId !== undefined) {\n return a.designationId - b.designationId;\n }\n if (a.designationId !== undefined && b.designationId === undefined) {\n return -1;\n }\n if (a.designationId === undefined && b.designationId !== undefined) {\n return 1;\n }\n\n if (a.userId !== undefined && b.userId !== undefined) {\n return a.userId - b.userId;\n }\n if (a.userId !== undefined && b.userId === undefined) {\n return -1;\n }\n if (a.userId === undefined && b.userId !== undefined) {\n return 1;\n }\n\n return 0;\n });\n return sortedData;\n };\n\n /**\n * `CustomGrid` is a wrapper component that renders its children inside a Material-UI `Grid` item.\n *\n * @param {Object} props - The component props.\n * @param {React.ReactNode} props.children - The elements to be rendered inside the `FormControl`.\n * @returns {JSX.Element} The rendered `CustomGrid` component.\n */\n\n const CustomGrid = ({ children }) => (\n <Grid>\n <FormControl variant=\"outlined\" className=\"flex justify-between\">\n {children}\n </FormControl>\n </Grid>\n );\n\n CustomGrid.propTypes = {\n children: PropTypes.any,\n };\n\n /**\n * Handles the deletion of a user menu item and updates the feature data.\n * @async\n * @function handleDelete\n * @returns {Promise<void>} A promise that resolves when the operation is complete.\n * @throws {Error} Throws an error if the deletion or data retrieval fails.\n */\n\n const editUserMenuItem = (data) => {\n data?.userMenuItemDtos.forEach((right) => {\n right.featureJson = extendFeatureJson(\n JSON.parse(data.featureJson || \"{}\"),\n JSON.parse(right.featureJson || \"{}\"),\n );\n if (right.designationId) {\n right.code = \"Role\";\n right.displayName = right.roleName;\n } else {\n right.code = \"User\";\n right.displayName = right.fullName;\n }\n });\n return data;\n };\n\n const handleDelete = async () => {\n try {\n setIsLoading((cur) => !cur);\n if (isNewApi) {\n const response = [];\n Object.entries(JSON.parse(selectedRow?.featureJson)).forEach(\n ([id, value]) => {\n if (value === true) {\n response.push(id);\n }\n },\n );\n\n try {\n await execute({\n code: \"delete_permissions\",\n parameters: {\n permissionList: response,\n roleId: parseInt(selectedRow?.designationId),\n userId: parseInt(selectedRow?.userId),\n },\n });\n showToast({\n type: \"success\",\n message: \"Permission Deleted Successfully\",\n });\n const { data: val } = await getFeatureDataV2(subMenuId);\n newApiData(val);\n } catch {\n showToast({\n type: \"error\",\n message: \"error occurred\",\n });\n }\n } else {\n await deleteUserMenuItem(deletedId);\n let { data } = await getFeatureData(subMenuId);\n if (data?.userMenuItemDtos.length > 0) {\n data = editUserMenuItem(data);\n }\n\n setFeatureData(data.userMenuItemDtos);\n }\n setOpen(false);\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error Deleting data: ${error?.response?.data?.message}`,\n });\n setIsLoading((cur) => !cur);\n setOpen(false);\n }\n };\n\n const diffPermissions = (permissions, featureJson) => {\n const assignedIds = new Set(permissions.map((p) => p.id));\n const response = [];\n\n // Check for grants (in featureJson but not in permissions)\n Object.entries(featureJson).forEach(([id, value]) => {\n if (value === true && !assignedIds.has(id)) {\n response.push({ id, action: \"grant\" });\n }\n });\n\n // Check for revokes (in permissions but not true in featureJson)\n permissions.forEach((p) => {\n if (!featureJson[p.id]) {\n response.push({ id: p.id, action: \"revoke\" });\n }\n });\n\n return response;\n };\n\n const { handleSubmit } = useForm({});\n /**\n * Updates a user menu item and refreshes the feature data.\n * @async\n * @function handleUpdateUserMenuItem\n * @param {Object} params - Parameters to update the user menu item.\n * @returns {Promise<void>} A promise that resolves when the operation is complete.\n * @throws {Error} Logs an error if the update or data retrieval fails.\n */\n\n const handleUpdateUserMenuItem = async (params) => {\n try {\n if (isNewApi) {\n params = { ...params, featureJson: JSON.parse(params?.featureJson) };\n const missing = diffPermissions(\n params.permissions,\n params?.featureJson,\n );\n if (missing[0]?.action === \"grant\") {\n setPendingGrant({\n ...params,\n id: missing[0]?.id,\n });\n setIsOpen(1);\n } else if (missing[0]?.action === \"revoke\") {\n try {\n await execute({\n code: \"revoke_permission\",\n parameters: {\n featureName: missing[0]?.id,\n roleId: parseInt(params?.designationId),\n userId: parseInt(params?.userId),\n },\n });\n showToast({\n type: \"success\",\n message: \"Permission Revoked Successfully\",\n });\n } catch {\n showToast({\n type: \"error\",\n message: \"Error in revoking permission\",\n });\n }\n }\n const { data: val } = await getFeatureDataV2(subMenuId);\n newApiData(val);\n } else {\n await updateUserMenuItem(params);\n }\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error Updating data: ${error?.response?.data?.message}`,\n });\n }\n };\n\n const handleCheckAllAndNone = async (params) => {\n try {\n params = {\n ...params,\n featureJson: JSON.parse(params?.featureJson),\n };\n\n if (params?.checkAll) {\n const falseKeys = Object.keys(params?.featureJson)\n .filter((key) => params?.featureJson[key] === false)\n .join(\",\");\n\n await execute({\n code: \"grant_permission_bulk\",\n parameters: {\n permission_id_list: falseKeys,\n role_id: parseInt(params?.designationId),\n user_id: parseInt(params?.userId),\n },\n });\n showToast({\n type: \"success\",\n message: \"Permission granted Successfully\",\n });\n }\n const { data: val } = await getFeatureDataV2(subMenuId);\n newApiData(val);\n } catch (error) {\n console.error(error);\n }\n };\n\n /**\n * Removes a role from the selected roles list based on its ID.\n * @function deleteRole\n * @param {Object} value - The role object to be deleted.\n * @param {number|string} value.id - The unique identifier of the role.\n * @returns {void}\n */\n\n /**\n * Submits the selected roles and user data to add a menu item.\n * @async\n * @function onSubmit\n * @returns {Promise<void>} A promise that resolves when the operation is complete.\n * @throws {Error} Displays an error toast if the operation fails.\n */\n\n const onSubmit = async (formVal) => {\n if (!(formVal?.roles || formVal?.selectedRoles)) {\n showToast({\n message: \"Please select either user or role !!\",\n type: \"info\",\n });\n return;\n }\n if (isNewApi && featureNames.length < 1) {\n showToast({\n message: \"Please add permissions first for this feature !!\",\n type: \"info\",\n });\n return;\n }\n\n try {\n const selectedRoleIds =\n formVal?.selectedRoles?.map((item) => item?.id) || [];\n\n const isUserDuplicate = selectedUser?.id\n ? featureData.some((data) => data?.userId === selectedUser?.id)\n : false;\n const isRoleDuplicate =\n selectedRoleIds?.length > 0\n ? featureData.some((data) =>\n selectedRoleIds.includes(data?.designationId),\n )\n : false;\n const isDuplicate = isUserDuplicate || isRoleDuplicate;\n if (!isDuplicate) {\n const ids = selectedRoleIds?.join(\",\");\n const params = {\n userId: formVal?.roles?.id,\n designationId: ids || null,\n };\n const featureName = permissionList.filter((rights) =>\n rights?.id?.startsWith(\"view\"),\n );\n\n if (isNewApi) {\n\n const reportPermissionId = featureName.find(item =>\n /^view\\.report\\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(item.id)\n )?.id;\n\n if (reportPermissionId) {\n setPendingGrant({\n ...params,\n id: reportPermissionId\n });\n } else if (featureName.some(item => item.id === \"view.report\")) {\n setPendingGrant({\n ...params,\n id: \"view.report\"\n });\n } else {\n setPendingGrant({\n ...params,\n id:\n featureName\n ?.filter((item) => item.id.split(\".\").length === 3)\n .map((item) => item.id)[0] || permissionList[0]?.id,\n });\n }\n setIsOpen(1);\n const { data: val } = await getFeatureDataV2(subMenuId);\n newApiData(val);\n } else {\n await postMenuItem(subMenuId, params);\n let { data } = await getFeatureData(subMenuId);\n if (data?.userMenuItemDtos.length > 0) {\n if (data?.userMenuItemDtos.length > 0) {\n data = editUserMenuItem(data);\n }\n }\n setFeature(data?.featureJson);\n const sortedData = sortData(data);\n setFeatureData(sortedData);\n const featureList = data.featureJson\n ? Object.keys(JSON.parse(data.featureJson))\n : [];\n if (featureList.length > 0) {\n const { data: features } = await execute({\n code: \"retrieve_display_name_for_feature\",\n parameters: {\n menu_id: subMenuId,\n feature_name_list: featureList,\n },\n });\n setFeatureNames(features.result);\n } else {\n setFeatureNames([]);\n }\n showToast({\n message: \"menu item added successfully\",\n type: \"success\",\n });\n }\n\n submitRef.current = true;\n setSelectedUser({});\n } else {\n showToast({\n message: `Selected User Already found please select another id`,\n type: \"warning\",\n });\n }\n } catch (error) {\n console.error(error);\n showToast({\n message: \"cannot add menu item\",\n type: \"error\",\n });\n }\n };\n\n const debouncedFilter = useCallback(\n debounce((searchValue) => {\n if (!searchValue) {\n setFeatureData(initFeatureData);\n } else {\n const filteredData = initFeatureData?.filter((feature) =>\n feature?.designationId\n ? feature.roleName?.toLowerCase().includes(searchValue)\n : feature.fullName?.toLowerCase().includes(searchValue),\n );\n trackEvent(\"search_tracking\", {\n searchTerm: searchValue,\n results_count: filteredData.length,\n search_type: \"Page Search\",\n });\n setFeatureData(filteredData);\n }\n }, 500),\n [featureNames, trackEvent],\n );\n\n /**\n * Handles the search input to filter notifications by name.\n * @function handleSearch\n * @param {Object} e - The event object from the input field.\n * @param {string} e.target.value - The current value in the search input field.\n */\n const handleSearch = (e) => {\n const searchValue = e.target.value.toLowerCase();\n setSearch(searchValue);\n debouncedFilter(searchValue);\n };\n\n // /**\n // * Fetches user data based on the input value, with debouncing to limit API calls.\n // * @function fetchUserData\n // * @param {string} value - The search string used to fetch user data.\n // * @returns {void}\n // */\n\n // const fetchUserData = useCallback(\n // (value) => {\n // debouncedFetch(value, setUserData, setSelectedUser);\n // },\n // [debouncedFetch] // Dependency array is empty because we're not directly referencing other state\n // );\n\n /**\n * Merges a \"default\" feature set with any overrides, and returns the result as a JSON string.\n *\n * For every key in `defaultJson`, if `assignedJson` provides its own value for that key,\n * the assigned value is used; otherwise the default is preserved. Keys in `assignedJson`\n * that aren't in `defaultJson` are ignored.\n *\n * @param {Object<string, any>} defaultJson\n * An object whose keys are the full set of features, each mapped to its default value.\n * @param {Object<string, any>} [assignedJson={}]\n * An object mapping a subset of those same keys to override values. Defaults to `{}`.\n * @returns {string}\n * A JSON‐stringified representation of the merged feature set.\n */\n const extendFeatureJson = (defaultJson, assignedJson = {}) => {\n const newJson = {};\n\n Object.keys(defaultJson).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(assignedJson, key)) {\n newJson[key] = assignedJson[key];\n } else {\n newJson[key] = defaultJson[key];\n }\n });\n\n return JSON.stringify(newJson);\n };\n\n const buildPermissionMap = (allPermissions, userPermissions) => {\n const userPermissionIds = new Set(userPermissions.map((p) => p.id));\n\n const result = {};\n allPermissions.forEach((p) => {\n result[p.id] = userPermissionIds.has(p.id);\n });\n\n return JSON.stringify(result);\n };\n\n const newApiData = (val) => {\n val?.userMenuItemDtos.forEach((right) => {\n right.id = right?.designationId || right?.userId;\n right.featureJson = buildPermissionMap(\n val?.permissions,\n right?.permissions,\n );\n\n if (right.designationId) {\n right.code = \"Role\";\n right.displayName = right.roleName;\n } else {\n right.code = \"User\";\n right.displayName = right.fullName;\n }\n });\n\n const featureList = [\n ...new Set(val.permissions.map((permission) => permission.id)),\n ];\n setFeatureNames(featureList);\n\n setPermissionList(val?.permissions);\n const sortedData = sortData(val);\n setFeatureData(sortedData);\n setinitFeatureData(sortedData);\n };\n\n // const findById = () => {\n // const arr = featuresObj[selectedTab];\n // if (Array.isArray(arr)) {\n // if (subMenuGroupName) {\n // const foundedGroup = arr.find((item) => item.name === subMenuGroupName);\n // if (foundedGroup) {\n // const result = foundedGroup.subGroups.find(\n // (item) => item.id === subMenuId\n // );\n // if (result) {\n // return result;\n // }\n // }\n // } else {\n // const result = arr.find((item) => item.id === subMenuId);\n // if (result) {\n // return result;\n // }\n // }\n // }\n // };\n\n /**\n * Effect hook to load initial data when `subMenuId` changes.\n * @function\n * @name useEffect\n * @returns {void}\n * @throws {Error} Logs an error to the console if any of the data fetching operations fail.\n */\n\n useEffect(() => {\n const loadInitialData = async () => {\n try {\n if (subMenuId) {\n setExpandedChildrenByRow(null);\n setExpanded(false);\n setIsLoading((cur) => !cur);\n setSearch(\"\");\n let data, isNewApi;\n if (subMenuFeatureVal) {\n // Names + permission tree only; each row's individual permission grants are\n // fetched on demand when that row is expanded (see handleChange). Falls back to\n // the full-bundle endpoint if this backend doesn't have the lazy-load routes yet.\n if (useLegacySummaryApiRef.current) {\n const res = await getFeatureDataV2(subMenuId);\n data = res.data;\n } else {\n try {\n const res = await getFeatureAccessSummaryV2(subMenuId);\n data = res.data;\n } catch (summaryError) {\n console.error(\"configtypesV2/summary unavailable, falling back to full bundle\", summaryError);\n useLegacySummaryApiRef.current = true;\n const res = await getFeatureDataV2(subMenuId);\n data = res.data;\n }\n }\n isNewApi = true;\n setIsNewApi(true);\n onNewAPIChange({ id: subMenuId, val: true });\n } else {\n const res = await getFeatureData(subMenuId);\n data = res.data;\n isNewApi = false;\n setIsNewApi(false);\n onNewAPIChange({ id: subMenuId, val: false });\n }\n\n if (isNewApi) {\n newApiData(data);\n } else {\n if (data?.userMenuItemDtos.length > 0) {\n data = editUserMenuItem(data);\n }\n setFeature(data?.featureJson);\n const sortedData = sortData(data);\n setFeatureData(sortedData);\n setinitFeatureData(sortedData);\n }\n\n let allRoles = initialROleData;\n if (!roleData || roleData.length === 0) {\n const { data: fetchedRoles } = await getRoleList();\n setInitialRoleData(fetchedRoles);\n allRoles = fetchedRoles;\n }\n\n let featureList;\n if (isNewApi) {\n featureList = data.permissions.map((permission) => permission.id);\n setFeatureNames(featureList);\n } else {\n featureList = data.featureJson\n ? Object.keys(JSON.parse(data.featureJson))\n : [];\n\n if (featureList.length > 0) {\n const [featuresRes] = await Promise.all([\n await execute({\n code: \"retrieve_display_name_for_feature\",\n parameters: {\n menu_id: subMenuId,\n feature_name_list: featureList,\n },\n }),\n ]);\n setFeatureNames(featuresRes.data?.result);\n } else {\n setFeatureNames([]);\n }\n }\n\n if (allRoles && allRoles.length > 0) {\n if (data.isDynamicFeature) {\n const copyAllRoles = JSON.parse(JSON.stringify(allRoles));\n const filteredRoles = copyAllRoles.filter((role) => {\n const roleType = role.roleType;\n if (roleType === null) return true;\n if (data?.isMobileFeature && data?.isWebFeature) return true;\n if (data.isMobileFeature)\n return roleType === \"MOBILE\" || roleType === \"BOTH\";\n if (data.isWebFeature)\n return roleType === \"WEB\" || roleType === \"BOTH\";\n return false;\n });\n setRoleData(filteredRoles);\n } else {\n setRoleData(allRoles);\n }\n }\n\n setIsLoading((cur) => !cur);\n }\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error loading initial data: ${error?.response?.data?.message}`,\n });\n setIsLoading((cur) => !cur);\n }\n };\n loadInitialData();\n }, [subMenuId, onNewAPIChange]);\n\n // /**\n // * Effect hook to fetch initial user data when the component mounts.\n // * @function\n // * @name useEffect\n // * @returns {void}\n // */\n\n // useEffect(() => {\n // const fetchUsers = async () => {\n // const { data: users } = await execute({\n // code: \"user_search_for_selectize\",\n // parameters: {\n // searchString: \"\",\n // },\n // });\n\n // setUserData(users?.result);\n // };\n // fetchUsers();\n // }, []);\n\n // const tableColumns = [\n // {\n // label: \"Type\",\n // field: \"\",\n // render: (row) => {\n // return (\n // <ListItem className=\"p-[6px_16px]\">\n // <Typography variant=\"body2\">\n // {row.designationId ? \"Role\" : \"User\"}\n // </Typography>\n // </ListItem>\n // );\n // },\n // },\n // {\n // label: \"Name\",\n // field: \"Name\",\n // render: (row, rowIndex) => {\n // return (\n // <ListItem className=\"p-[6px_16px]\">\n // <Typography variant=\"body2\" key={`${rowIndex}+${row?.id}`}>\n // {row.designationId ? row.roleName : row.fullName}\n // </Typography>\n // </ListItem>\n // );\n // },\n // },\n // {\n // label: \"Features\",\n // field: \"Features\",\n // render: (row) => {\n // return (\n // <List className=\"p-0 m-0\">\n // {featureNames?.length > 0\n // ? Object.keys(JSON.parse(row.featureJson || \"{}\"))?.map(\n // (featureName, index) => {\n // const featureState = JSON.parse(row.featureJson || \"{}\");\n // const displayName =\n // featureNames.find(\n // (feature) => feature.feature_name === featureName\n // )?.display_name || featureName;\n // const isChecked = featureState[featureName] || false;\n // return (\n // <ListItem key={`featureName-${index}`} className=\"p-0\">\n // <FormControlLabel\n // control={\n // <Checkbox\n // checked={isChecked}\n // name={featureName}\n // onClick={() => {\n // const updatedFeatureState = {\n // ...featureState,\n // [featureName]: !isChecked,\n // };\n // setFeatureData((prev) =>\n // prev.map((item) =>\n // item.id === row.id\n // ? {\n // ...item,\n // featureJson:\n // JSON.stringify(updatedFeatureState),\n // }\n // : item\n // )\n // );\n // handleUpdateUserMenuItem({\n // ...row,\n // featureJson:\n // JSON.stringify(updatedFeatureState),\n // code: row.designationId ? \"Role\" : \"User\",\n // menuConfigId: subMenuId,\n // displayName: row.designationId\n // ? row.roleName\n // : row.fullName,\n // });\n // }}\n // />\n // }\n // label={\n // <Typography variant=\"body2\">\n // {displayName}\n // </Typography>\n // }\n // />\n // </ListItem>\n // );\n // }\n // )\n // : Object.keys(JSON.parse(feature || \"{}\")).map((key, index) => {\n // const featureState = JSON.parse(row.featureJson || \"{}\");\n // const isChecked = featureState[key] || false;\n\n // return (\n // <ListItem key={`featureName-${index}`} className=\"p-0\">\n // <FormControlLabel\n // key={`features-${index}`}\n // control={\n // <Checkbox\n // checked={isChecked}\n // name={key}\n // onClick={() => {\n // const updatedFeatureState = {\n // ...featureState,\n // [key]: !isChecked,\n // };\n // setFeatureData((prev) =>\n // prev.map((item) =>\n // item.id === row.id\n // ? {\n // ...item,\n // featureJson:\n // JSON.stringify(updatedFeatureState),\n // }\n // : item\n // )\n // );\n\n // handleUpdateUserMenuItem({\n // ...row,\n // featureJson:\n // JSON.stringify(updatedFeatureState),\n // code: row.designationId ? \"Role\" : \"User\",\n // menuConfigId: subMenuId,\n // displayName: row.designationId\n // ? row.roleName\n // : row.fullName,\n // });\n // }}\n // />\n // }\n // label={<Typography variant=\"caption\">{key}</Typography>}\n // />\n // </ListItem>\n // );\n // })}\n // </List>\n // );\n // },\n // },\n // {\n // label: \"Actions\",\n // field: \"Actions\",\n // },\n // ];\n\n function findPermissionById(permissionList, displayName) {\n for (const perm of permissionList) {\n // match on ID\n if (String(perm.id) === String(displayName)) {\n return perm;\n }\n\n // // if it has children → search inside them\n // if (perm.child && perm.child.length > 0) {\n // const found = findPermissionById(perm.child, displayName);\n // if (found) return found;\n // }\n }\n\n return null; // not found\n }\n\n // const actions = [\n // {\n // label: \"\",\n // icon: <FontAwesomeIcon icon={faTrash} />,\n // onClick: (row) => {\n // setOpen(true);\n // setDeletedId(row.id);\n // setSelectedRow(row);\n // },\n // dataTestId: \"accessrights-delete-icon\",\n // },\n // {\n // label: \"\",\n // icon: <FontAwesomeIcon icon={faPen} />,\n // dataTestId: \"accessrights-edit-icon\",\n // menuClick: (row) => {\n // // handleClick(e);\n // setAllData(() => {\n // return {\n // ...row,\n // code: row.designationId ? \"Role\" : \"User\",\n // menuConfigId: subMenuId,\n // displayName: row.designationId ? row.roleName : row.fullName,\n // };\n // });\n // },\n // menuItems: [\n // {\n // label: \"Check All\",\n // onClick: (row) => {\n // if (isNewApi) {\n // handleCheckAllAndNone({ ...row, checkAll: true });\n // } else {\n // let keys = JSON.parse(feature);\n // const featureJson =\n // featureNames?.length > 0\n // ? featureNames.reduce((acc, { feature_name }) => {\n // acc[feature_name] = true;\n // return acc;\n // }, {})\n // : Object.keys(keys).reduce((acc, key) => {\n // acc[key] = true;\n // return acc;\n // }, {});\n // setFeatureData((prev) =>\n // prev.map((item) =>\n // item.id === row.id\n // ? { ...item, featureJson: JSON.stringify(featureJson) }\n // : item\n // )\n // );\n // handleUpdateUserMenuItem({\n // ...allData,\n // featureJson: JSON.stringify(featureJson),\n // });\n // }\n // },\n // },\n // ],\n // },\n // ];\n\n const [expanded, setExpanded] = useState(false);\n\n // Fetches this row's own permission grants the first time it's expanded, instead of\n // every row's permissions being fetched up front when the menu is selected.\n const handleChange = (row) => async (event, isExpanded) => {\n const panel = `panel${row?.id}`;\n // setExpandedChildrenByRow(null);\n setExpanded(isExpanded ? panel : false);\n\n if (isExpanded && isNewApi && row && !row._permissionsLoaded && !useLegacySummaryApiRef.current) {\n try {\n const { data: permissions } = await getFeaturePermissionsForIdentity(subMenuId, {\n userId: row.userId,\n roleId: row.designationId,\n });\n row.permissions = permissions;\n row.featureJson = buildPermissionMap(permissionList, permissions);\n row._permissionsLoaded = true;\n setFeatureData((cur) => [...cur]);\n } catch (error) {\n console.error(error);\n showToast({ type: \"error\", message: \"Error loading permissions for row\" });\n }\n }\n };\n\n return (\n <>\n {(isLoading || parentLoading) && useSkeleton ? (\n <div className=\"w-full flex flex-wrap\">\n <div className=\"w-full flex flex-col px-2\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[70px] mb-2\"></div>\n\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[280px] mb-2\"></div>\n </div>\n </div>\n ) : (\n <Grid container sx={{ borderTop: `1px solid ${theme.palette.divider}` }}>\n <CustomConfirmationModal\n description={\"Are you sure , Do you want to delete this ?\"}\n title={\"CONFIRM ACTION\"}\n open={open && deletedId === selectedRow?.id}\n handleClick={handleDelete}\n handleClose={() => setOpen((cur) => !cur)}\n dataTestId=\"accessrights-delete-modal\"\n />\n <PermissionsModal\n isOpen={openPermissionModal && expandedChildrenByRow}\n onClose={() => {\n setOpenPermissionModal((cur) => !cur);\n setExpandedChildrenByRow(null);\n setSelectedFeatureName(\"\");\n setSelectedFeatureState([]);\n }}\n featureState={selectedFeatureState}\n featureName={selectedFeatureName}\n permissions={expandedChildrenByRow}\n />\n {\n <GrantPermissionModal\n isOpen={isOpen === 1}\n onClose={() => setIsOpen(0)}\n pendingGrant={pendingGrant}\n subMenuId={subMenuId}\n newApiData={newApiData}\n />\n }\n <form\n ref={formRef}\n onSubmit={handleSubmit(onSubmit)}\n className=\"w-full\"\n >\n <Grid\n container\n className=\"flex flex-col md:flex-row items-center justify-between p-2 w-full\"\n spacing={1}\n >\n <Grid className=\"flex-1 flex space-x-10 items-center justify-between\">\n <Typography variant=\"body2\">{translate(\"Search\")}</Typography>\n <Box>\n <TextField\n id=\"searchQuery\"\n placeholder=\"Search Text\"\n size=\"small\"\n onChange={handleSearch}\n value={search}\n data-testid=\"access-rights-textfield-search\"\n sx={{\n \"& .MuiInputBase-root\": {\n height: \"2.6em\",\n },\n }}\n />\n </Box>\n </Grid>\n {GeneralUtil.hasCheckRights(rights?.['update.manage.featurelist']) && (\n <Grid className=\"flex-3 flex space-x-10 items-center justify-between w-full\">\n <AccessPanel\n translate={translate}\n onSubmit={onSubmit}\n roleList={roleData}\n featureData={featureData}\n // addRole={addRole}\n // selectedRole={selectedRole}\n />\n </Grid>\n )}\n </Grid>\n </form>\n {/* <CustomizedTable\n tableData={featureData}\n columns={tableColumns}\n actions={actions}\n styleConfig={{ tableStyle: { maxHeight: 150 } }}\n paginationConfig={{ pagination: false }}\n /> */}\n <div style={{ width: \"100%\" }}>\n {featureData.map((row) => {\n return (\n <>\n <Accordion\n\n expanded={expanded === `panel${row?.id}`}\n onChange={handleChange(row)}\n >\n <AccordionSummary\n expandIcon={<FontAwesomeIcon icon={faAngleDown} />}\n aria-controls=\"panel1bh-content\"\n id=\"panel1bh-header\"\n >\n <Typography\n component=\"span\"\n sx={{ width: \"33%\", flexShrink: 0 }}\n >\n {row.code}\n </Typography>\n\n <Typography\n component=\"span\"\n sx={{ color: \"text.secondary\" }}\n >\n {row.displayName}\n </Typography>\n <div className=\"ml-auto mr-4 flex items-center space-x-3\">\n {GeneralUtil.hasCheckRights(rights?.['delete.manage.featurelist']) && (\n <FontAwesomeIcon\n icon={faTrash}\n style={{\n cursor: \"pointer\",\n color: theme.palette.error.main,\n fontSize: \"16px\",\n marginTop: \"0.5rem\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n setOpen(true);\n setDeletedId(row.id);\n setSelectedRow(row);\n }}\n />\n )}\n {GeneralUtil.hasCheckRights(rights?.['update.manage.featurelist']) && (\n <RowActionMenu\n config={{\n label: \"\",\n icon: (\n <FontAwesomeIcon\n style={{\n cursor: \"pointer\",\n // color: theme.palette.error.main,\n fontSize: \"16px\",\n marginTop: \"0.5rem\",\n }}\n icon={faPen}\n />\n ),\n dataTestId: \"accessrights-edit-icon\",\n menuClick: (row) => {\n // handleClick(e);\n setAllData(() => {\n return {\n ...row,\n code: row.designationId ? \"Role\" : \"User\",\n menuConfigId: subMenuId,\n displayName: row.designationId\n ? row.roleName\n : row.fullName,\n };\n });\n },\n menuItems: [\n {\n label: \"Check All\",\n onClick: (row) => {\n if (isNewApi) {\n handleCheckAllAndNone({\n ...row,\n checkAll: true,\n });\n } else {\n let keys = JSON.parse(feature);\n const featureJson =\n featureNames?.length > 0\n ? featureNames.reduce(\n (acc, { feature_name }) => {\n acc[feature_name] = true;\n return acc;\n },\n {},\n )\n : Object.keys(keys).reduce(\n (acc, key) => {\n acc[key] = true;\n return acc;\n },\n {},\n );\n setFeatureData((prev) =>\n prev.map((item) =>\n item.id === row.id\n ? {\n ...item,\n featureJson:\n JSON.stringify(featureJson),\n }\n : item,\n ),\n );\n handleUpdateUserMenuItem({\n ...allData,\n featureJson: JSON.stringify(featureJson),\n });\n }\n },\n },\n ],\n }}\n row={row}\n />\n )}\n </div>\n </AccordionSummary>\n <AccordionDetails>\n <div className=\"overflow-x-auto\">\n <div className=\"flex gap-6 w-max\">\n <div className={\"grid grid-cols-3 w-max p-0 m-0\"}>\n {featureNames.length <= 0 &&\n Object.keys(JSON.parse(feature || \"{}\")).length <=\n 0 && (\n <div className=\"text-gray-500 px-4 italic\">\n No Data to Display\n </div>\n )}\n {featureNames?.length > 0\n ? Object.keys(\n JSON.parse(row.featureJson || \"{}\"),\n ).map((featureName, index) => {\n const featureState = JSON.parse(\n row.featureJson || \"{}\",\n );\n const displayName =\n featureNames.find(\n (feature) =>\n feature.feature_name === featureName,\n )?.display_name || featureName;\n const isChecked =\n featureState[featureName] || false;\n\n const permObj = findPermissionById(\n permissionList,\n displayName,\n );\n\n const hasChildren =\n (permObj?.child?.length || 0) > 0;\n\n return (\n <ListItem\n key={`featureName-${index}`}\n className=\"p-0 flex \"\n >\n <FormControlLabel\n control={\n <Checkbox\n disabled={(!GeneralUtil.hasCheckRights(rights?.['update.manage.featurelist'])) || featureName === getBasicRightId()}\n checked={isChecked}\n name={featureName}\n onClick={() => {\n const updatedFeatureState = {\n ...featureState,\n [featureName]: !isChecked,\n };\n setFeatureData((prev) =>\n prev.map((item) =>\n item.id === row.id\n ? {\n ...item,\n featureJson:\n JSON.stringify(\n updatedFeatureState,\n ),\n }\n : item,\n ),\n );\n handleUpdateUserMenuItem({\n ...row,\n featureJson:\n JSON.stringify(\n updatedFeatureState,\n ),\n code: row.designationId\n ? \"Role\"\n : \"User\",\n menuConfigId: subMenuId,\n displayName: row.designationId\n ? row.roleName\n : row.fullName,\n });\n }}\n />\n }\n label={\n <Typography variant=\"body2\">\n {(() => {\n const perm = findPermissionById(\n permissionList,\n displayName,\n );\n return perm\n ? perm.name\n : displayName;\n })()}\n </Typography>\n }\n />\n {hasChildren && (\n <div\n onClick={() => {\n if (\n expandedChildrenByRow?.id ===\n permObj?.id\n ) {\n setExpandedChildrenByRow(null);\n setOpenPermissionModal(false);\n setSelectedFeatureName(\"\");\n setSelectedFeatureState([]);\n return;\n }\n setSelectedFeatureName(featureName);\n setSelectedFeatureState(\n featureState,\n );\n\n setOpenPermissionModal(true);\n setExpandedChildrenByRow(permObj);\n }}\n className=\"cursor-pointer text-gray-600 transition-transform duration-200 hover:scale-[1.2] py-1 pr-3\"\n >\n {expandedChildrenByRow?.id ===\n permObj?.id ? (\n <Tooltip title=\"Close Permissions\">\n <FontAwesomeIcon\n color=\"primary\"\n icon={faEyeSlash}\n />\n </Tooltip>\n ) : (\n <Tooltip title=\"View Permissions\">\n <FontAwesomeIcon\n className=\" text-[var(--color-primary)] \"\n color=\"primary\"\n icon={faEye}\n />\n </Tooltip>\n )}\n </div>\n )}\n </ListItem>\n );\n })\n : Object.keys(JSON.parse(feature || \"{}\")).map(\n (key, index) => {\n const featureState = JSON.parse(\n row.featureJson || \"{}\",\n );\n const isChecked =\n featureState[key] || false;\n const permObj = findPermissionById(\n permissionList,\n key,\n );\n\n const hasChildren =\n (permObj?.child?.length || 0) > 0;\n\n return (\n <ListItem\n key={`featureName-${index}`}\n className=\"p-0\"\n >\n <FormControlLabel\n control={\n <Checkbox\n disabled={(!GeneralUtil.hasCheckRights(rights?.['update.manage.featurelist'])) || key === getBasicRightId()}\n checked={isChecked}\n name={key}\n onClick={() => {\n const updatedFeatureState = {\n ...featureState,\n [key]: !isChecked,\n };\n setFeatureData((prev) =>\n prev.map((item) =>\n item.id === row.id\n ? {\n ...item,\n featureJson:\n JSON.stringify(\n updatedFeatureState,\n ),\n }\n : item,\n ),\n );\n handleUpdateUserMenuItem({\n ...row,\n featureJson:\n JSON.stringify(\n updatedFeatureState,\n ),\n code: row.designationId\n ? \"Role\"\n : \"User\",\n menuConfigId: subMenuId,\n displayName: row.designationId\n ? row.roleName\n : row.fullName,\n });\n }}\n />\n }\n // label={\n // <Typography variant=\"caption\">\n // {key}\n // </Typography>\n // }\n // />\n label={\n <Typography variant=\"body2\">\n {(() => {\n const perm = findPermissionById(\n permissionList,\n key,\n );\n return perm ? perm.name : key;\n })()}\n </Typography>\n }\n />\n {hasChildren && (\n <div\n onClick={() => {\n if (\n expandedChildrenByRow?.id ===\n permObj?.id\n ) {\n setExpandedChildrenByRow(null);\n return;\n }\n setExpandedChildrenByRow(permObj);\n }}\n className=\"cursor-pointer text-slate-500 dark:text-slate-400 transition-transform duration-200 hover:scale-[1.2] py-1 pr-3\"\n >\n {expandedChildrenByRow?.id ===\n permObj?.id ? (\n <FontAwesomeIcon\n color=\"primary\"\n icon={faEyeSlash}\n />\n ) : (\n <FontAwesomeIcon\n className=\" text-[var(--color-primary)] \"\n color=\"primary\"\n icon={faEye}\n />\n )}\n </div>\n )}\n </ListItem>\n );\n },\n )}\n </div>\n </div>\n </div>\n </AccordionDetails>\n </Accordion>\n </>\n );\n })}\n </div>\n </Grid>\n )}\n </>\n );\n}\n\nAccessRights.propTypes = {\n subMenuId: PropTypes.any,\n subMenuGroupName: PropTypes.any,\n selectedTab: PropTypes.any,\n parentLoading: PropTypes.any,\n isNewApi: PropTypes.any,\n setIsNewApi: PropTypes.any,\n onNewAPIChange: PropTypes.any,\n subMenuFeatureVal: PropTypes.any,\n rights: PropTypes.any,\n};\n"],"names":["schema","Yup","value","startDate","noEndDate","GrantPermissionModal","isOpen","onClose","pendingGrant","subMenuId","newApiData","translate","useTranslateProvider","handleSubmit","control","reset","watch","errors","trigger","useForm","yupResolver","noStartDate","endDate","handleFormSubmit","values","execute","showToast","val","getFeatureDataV2","error","_b","_a","handleClose","jsx","Modal","Box","Card","jsxs","Grid","Typography","IconButton","FontAwesomeIcon","faXmark","CustomCheckBox","CustomDatePicker","Button","PropTypes","AccessPanel","onSubmit","roleList","featureData","search","setSearch","useState","debouncedSearch","setDebouncedSearch","userList","setUserList","newRoleList","role","item","useEffect","handler","userListFetch","query","currentFeatureData","userData","newArray","user","Controller","onChange","ref","Autocomplete","option","event","newValue","reason","newInputValue","props","label","searchTerm","index","createElement","beforeMatch","match","afterMatch","params","TextField","CustomAutocomplete","data","PermissionsModal","permissions","featureState","featureName","isChecked","renderPermissionList","node","level","childrenNode","faCheck","faArrowRight","child","isLast","RowActionMenu","config","row","anchorEl","setAnchorEl","openMenu","handleIconClick","e","handleItemClick","Menu","MenuItem","AccessRights","subMenuFeatureVal","parentLoading","onNewAPIChange","rights","useSkeleton","useSelector","getUseSkeleton","theme","useTheme","formRef","useRef","submitRef","trackEvent","useTrackEvent","useLegacySummaryApiRef","GeneralUtil","featureNames","setFeatureNames","setFeatureData","initFeatureData","setinitFeatureData","roleData","setRoleData","initialROleData","setInitialRoleData","feature","setFeature","selectedUser","setSelectedUser","open","setOpen","openPermissionModal","setOpenPermissionModal","deletedId","setDeletedId","selectedRow","setSelectedRow","allData","setAllData","isLoading","setIsLoading","isNewApi","setIsNewApi","setPendingGrant","permissionList","setPermissionList","setIsOpen","selectedFeatureName","setSelectedFeatureName","selectedFeatureState","setSelectedFeatureState","expandedChildrenByRow","setExpandedChildrenByRow","getBasicRightId","views","reportUuidView","threeSegment","form","sortData","sortedData","a","b","editUserMenuItem","right","extendFeatureJson","handleDelete","cur","response","id","deleteUserMenuItem","getFeatureData","diffPermissions","featureJson","assignedIds","p","handleUpdateUserMenuItem","missing","_c","_d","updateUserMenuItem","_f","_e","handleCheckAllAndNone","falseKeys","key","formVal","selectedRoleIds","isUserDuplicate","isRoleDuplicate","ids","reportPermissionId","postMenuItem","featureList","features","debouncedFilter","useCallback","debounce","searchValue","filteredData","handleSearch","defaultJson","assignedJson","newJson","buildPermissionMap","allPermissions","userPermissions","userPermissionIds","result","permission","setExpanded","getFeatureAccessSummaryV2","summaryError","allRoles","fetchedRoles","getRoleList","featuresRes","filteredRoles","roleType","findPermissionById","displayName","perm","expanded","handleChange","isExpanded","panel","getFeaturePermissionsForIdentity","Fragment","CustomConfirmationModal","Accordion","AccordionSummary","faAngleDown","faTrash","faPen","keys","acc","feature_name","prev","AccordionDetails","permObj","hasChildren","ListItem","FormControlLabel","Checkbox","updatedFeatureState","Tooltip","faEyeSlash","faEye"],"mappings":"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"}
|
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import { jsx as r, jsxs as l } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslateProvider as M } from "@/common/languageTranslator/TranslationContext";
|
|
3
|
-
import { s as N } from "./QueryBuilder-z7eqfd7D.js";
|
|
4
|
-
import d from "@/common/config/implementationConfig";
|
|
5
|
-
import { showToast as C } from "@/common/toaster/toaster";
|
|
6
|
-
import _ from "@/hooks/useTrackEvent";
|
|
7
|
-
import z from "@/views/custom-components/CustomTextArea";
|
|
8
|
-
import j from "@/views/custom-components/CustomTextField";
|
|
9
|
-
import { yupResolver as A } from "@hookform/resolvers/yup";
|
|
10
|
-
import { Drawer as D, Box as Q, Typography as q, FormControlLabel as u, Checkbox as n, Button as S } from "@mui/material";
|
|
11
|
-
import s from "@mui/material/Grid2";
|
|
12
|
-
import c from "prop-types";
|
|
13
|
-
import { useRef as F, useEffect as B } from "react";
|
|
14
|
-
import { useForm as O, Controller as m } from "react-hook-form";
|
|
15
|
-
import * as p from "yup";
|
|
16
|
-
import './AddEditQueryBuilder.css';const U = p.object().shape({
|
|
17
|
-
code: p.string().required("Enter code").trim().lowercase(),
|
|
18
|
-
description: p.string().required("Enter Description").trim().lowercase(),
|
|
19
|
-
query: p.string().required("Enter query").trim().lowercase()
|
|
20
|
-
});
|
|
21
|
-
function G({
|
|
22
|
-
isEditMode: o,
|
|
23
|
-
open: b,
|
|
24
|
-
close: I,
|
|
25
|
-
editRow: a,
|
|
26
|
-
loadInitialState: V
|
|
27
|
-
}) {
|
|
28
|
-
const g = F(null), k = F(!1), { translate: t } = M(), {
|
|
29
|
-
control: i,
|
|
30
|
-
handleSubmit: E,
|
|
31
|
-
setValue: y,
|
|
32
|
-
getValues: P,
|
|
33
|
-
formState: { errors: f },
|
|
34
|
-
reset: v
|
|
35
|
-
} = O({
|
|
36
|
-
resolver: A(U),
|
|
37
|
-
mode: "onChange",
|
|
38
|
-
defaultValues: {
|
|
39
|
-
code: "",
|
|
40
|
-
description: "",
|
|
41
|
-
query: "",
|
|
42
|
-
returnsResultSet: !1,
|
|
43
|
-
isPublic: !1,
|
|
44
|
-
isMobileQuery: !1,
|
|
45
|
-
isClickhouseQuery: !1,
|
|
46
|
-
...d.queryBuilder.showIsCachedField && { isCached: d.queryBuilder.defaultIsCached }
|
|
47
|
-
}
|
|
48
|
-
}), T = _(), h = () => {
|
|
49
|
-
T("conversion_event", {
|
|
50
|
-
form: g.current,
|
|
51
|
-
form_name: "Add/Edit Query Builder",
|
|
52
|
-
submit: k.current
|
|
53
|
-
}), I();
|
|
54
|
-
}, w = async () => {
|
|
55
|
-
try {
|
|
56
|
-
const e = P();
|
|
57
|
-
T("button_click", {
|
|
58
|
-
button_name: o && a ? "querybuilder-update-button" : "querybuilder-add-button",
|
|
59
|
-
button_type: "submit",
|
|
60
|
-
button_id: "addeditquerybuilder-save-button"
|
|
61
|
-
}), o && a ? (a.query = e.query, a.code = e.code, a.description = e.description, a.returnsResultSet = e.returnsResultSet, a.isPublic = e.isPublic, a.isMobileQuery = e.isMobileQuery, a.isClickhouseQuery = e.isClickhouseQuery, d.queryBuilder.showIsCachedField && (a.isCached = e.isCached), await N(a), C({ message: "Query Updated SuccessFully", type: "success" })) : (await N(e), C({ message: "Query Created SuccessFully", type: "success" })), k.current = !0, h(), await V();
|
|
62
|
-
} catch (e) {
|
|
63
|
-
C({
|
|
64
|
-
message: `${e.status === 400 ? "This code is already registered. Please enter a different code" : "Error in Query Generation"}`,
|
|
65
|
-
type: "error"
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
return B(() => {
|
|
70
|
-
o && Object.keys(a).forEach((e) => y(e, a == null ? void 0 : a[e]));
|
|
71
|
-
}, [o, a, y]), B(() => {
|
|
72
|
-
b || v();
|
|
73
|
-
}, [b, v]), /* @__PURE__ */ r(
|
|
74
|
-
D,
|
|
75
|
-
{
|
|
76
|
-
anchor: "right",
|
|
77
|
-
open: b,
|
|
78
|
-
onClose: h,
|
|
79
|
-
className: "z-[1300]",
|
|
80
|
-
"data-testid": "addEdit-queryBuilder",
|
|
81
|
-
children: /* @__PURE__ */ l(s, { container: !0, className: "w-full md:w-[650px] max-w-full", ref: g, children: [
|
|
82
|
-
/* @__PURE__ */ r(Q, { className: "p-2.5 px-5 flex border-b w-full", children: /* @__PURE__ */ l(s, { className: "font-medium text-lg w-full text-customBlue", children: [
|
|
83
|
-
t(o ? "Edit Configured" : "Configure New"),
|
|
84
|
-
" ",
|
|
85
|
-
t("Query")
|
|
86
|
-
] }) }),
|
|
87
|
-
/* @__PURE__ */ l(s, { className: "p-3 grow", children: [
|
|
88
|
-
/* @__PURE__ */ l(s, { size: { xs: 12 }, className: "pb-2", children: [
|
|
89
|
-
/* @__PURE__ */ l(q, { variant: "caption", className: "pl-0", children: [
|
|
90
|
-
t("Code"),
|
|
91
|
-
/* @__PURE__ */ r("span", { className: "text-red-500 ml-1", children: "*" })
|
|
92
|
-
] }),
|
|
93
|
-
/* @__PURE__ */ r(
|
|
94
|
-
j,
|
|
95
|
-
{
|
|
96
|
-
control: i,
|
|
97
|
-
id: "code",
|
|
98
|
-
name: "code",
|
|
99
|
-
errors: f,
|
|
100
|
-
className: "m-0",
|
|
101
|
-
label: "",
|
|
102
|
-
size: "small",
|
|
103
|
-
onBlur: (e) => {
|
|
104
|
-
const x = e.target.value;
|
|
105
|
-
if (x) {
|
|
106
|
-
const L = o ? x.trim() : x.trim().toUpperCase();
|
|
107
|
-
y("code", L);
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
dataTestId: "addeditquerybuilder-code-textfield"
|
|
111
|
-
}
|
|
112
|
-
)
|
|
113
|
-
] }),
|
|
114
|
-
/* @__PURE__ */ l(s, { size: { xs: 12 }, className: "pb-2", children: [
|
|
115
|
-
/* @__PURE__ */ l(
|
|
116
|
-
q,
|
|
117
|
-
{
|
|
118
|
-
variant: "caption",
|
|
119
|
-
className: "p-3 pl-0",
|
|
120
|
-
"data-testid": "addeditquerybuilder-description-label",
|
|
121
|
-
children: [
|
|
122
|
-
t("Description"),
|
|
123
|
-
/* @__PURE__ */ r("span", { className: "text-red-500 ml-1", children: "*" })
|
|
124
|
-
]
|
|
125
|
-
}
|
|
126
|
-
),
|
|
127
|
-
/* @__PURE__ */ r(
|
|
128
|
-
z,
|
|
129
|
-
{
|
|
130
|
-
control: i,
|
|
131
|
-
minRows: 1,
|
|
132
|
-
id: "description",
|
|
133
|
-
name: "description",
|
|
134
|
-
errors: f,
|
|
135
|
-
className: "pl-2.5 pt-2.5",
|
|
136
|
-
"data-testid": "addeditquerybuilder-description-textarea"
|
|
137
|
-
}
|
|
138
|
-
)
|
|
139
|
-
] }),
|
|
140
|
-
/* @__PURE__ */ l(s, { size: { xs: 12 }, className: "pb-2", children: [
|
|
141
|
-
/* @__PURE__ */ l(q, { variant: "caption", className: "p-3 pl-0", children: [
|
|
142
|
-
t("Query"),
|
|
143
|
-
/* @__PURE__ */ r("span", { className: "text-red-500 ml-1", children: "*" })
|
|
144
|
-
] }),
|
|
145
|
-
/* @__PURE__ */ r(
|
|
146
|
-
z,
|
|
147
|
-
{
|
|
148
|
-
control: i,
|
|
149
|
-
minRows: 5,
|
|
150
|
-
id: "query",
|
|
151
|
-
name: "query",
|
|
152
|
-
errors: f,
|
|
153
|
-
"data-testid": "addeditquerybuilder-query-textarea"
|
|
154
|
-
}
|
|
155
|
-
)
|
|
156
|
-
] }),
|
|
157
|
-
d.queryBuilder.showIsCachedField && /* @__PURE__ */ r(s, { size: { xs: 12 }, children: /* @__PURE__ */ r(
|
|
158
|
-
m,
|
|
159
|
-
{
|
|
160
|
-
name: "isCached",
|
|
161
|
-
control: i,
|
|
162
|
-
defaultValue: !1,
|
|
163
|
-
render: ({ field: e }) => /* @__PURE__ */ r(
|
|
164
|
-
u,
|
|
165
|
-
{
|
|
166
|
-
control: /* @__PURE__ */ r(n, { ...e, checked: e.value }),
|
|
167
|
-
label: t("Is Cached"),
|
|
168
|
-
sx: {
|
|
169
|
-
"& .MuiFormControlLabel-label": {
|
|
170
|
-
fontSize: "14px"
|
|
171
|
-
},
|
|
172
|
-
marginTop: 0,
|
|
173
|
-
paddingTop: 0
|
|
174
|
-
},
|
|
175
|
-
"data-testid": "addeditquerybuilder-is-cached-checkbox"
|
|
176
|
-
}
|
|
177
|
-
)
|
|
178
|
-
}
|
|
179
|
-
) }),
|
|
180
|
-
/* @__PURE__ */ r(s, { size: { xs: 12 }, children: /* @__PURE__ */ r(
|
|
181
|
-
m,
|
|
182
|
-
{
|
|
183
|
-
name: "returnsResultSet",
|
|
184
|
-
control: i,
|
|
185
|
-
defaultValue: !1,
|
|
186
|
-
render: ({ field: e }) => /* @__PURE__ */ r(
|
|
187
|
-
u,
|
|
188
|
-
{
|
|
189
|
-
control: /* @__PURE__ */ r(n, { ...e, checked: e.value }),
|
|
190
|
-
label: t("Returns Result Set"),
|
|
191
|
-
sx: {
|
|
192
|
-
"& .MuiFormControlLabel-label": {
|
|
193
|
-
fontSize: "14px"
|
|
194
|
-
},
|
|
195
|
-
marginTop: 0,
|
|
196
|
-
paddingTop: 0
|
|
197
|
-
},
|
|
198
|
-
"data-testid": "addeditquerybuilder-returns-result-set-checkbox"
|
|
199
|
-
}
|
|
200
|
-
)
|
|
201
|
-
}
|
|
202
|
-
) }),
|
|
203
|
-
/* @__PURE__ */ r(s, { size: { xs: 12 }, children: /* @__PURE__ */ r(
|
|
204
|
-
m,
|
|
205
|
-
{
|
|
206
|
-
name: "isPublic",
|
|
207
|
-
control: i,
|
|
208
|
-
defaultValue: !1,
|
|
209
|
-
render: ({ field: e }) => /* @__PURE__ */ r(
|
|
210
|
-
u,
|
|
211
|
-
{
|
|
212
|
-
control: /* @__PURE__ */ r(n, { ...e, checked: e.value }),
|
|
213
|
-
label: t("Is Public"),
|
|
214
|
-
sx: {
|
|
215
|
-
"& .MuiFormControlLabel-label": {
|
|
216
|
-
fontSize: "14px"
|
|
217
|
-
},
|
|
218
|
-
marginTop: 0,
|
|
219
|
-
paddingTop: 0
|
|
220
|
-
},
|
|
221
|
-
"data-testid": "addeditquerybuilder-is-public-checkbox"
|
|
222
|
-
}
|
|
223
|
-
)
|
|
224
|
-
}
|
|
225
|
-
) }),
|
|
226
|
-
/* @__PURE__ */ r(s, { size: { xs: 12 }, children: /* @__PURE__ */ r(
|
|
227
|
-
m,
|
|
228
|
-
{
|
|
229
|
-
name: "isMobileQuery",
|
|
230
|
-
control: i,
|
|
231
|
-
defaultValue: !1,
|
|
232
|
-
render: ({ field: e }) => /* @__PURE__ */ r(
|
|
233
|
-
u,
|
|
234
|
-
{
|
|
235
|
-
control: /* @__PURE__ */ r(n, { ...e, checked: e.value }),
|
|
236
|
-
label: t("Is Mobile Query"),
|
|
237
|
-
sx: {
|
|
238
|
-
"& .MuiFormControlLabel-label": {
|
|
239
|
-
fontSize: "14px"
|
|
240
|
-
},
|
|
241
|
-
marginTop: 0,
|
|
242
|
-
paddingTop: 0
|
|
243
|
-
},
|
|
244
|
-
"data-testid": "addeditquerybuilder-is-mobilequery-checkbox"
|
|
245
|
-
}
|
|
246
|
-
)
|
|
247
|
-
}
|
|
248
|
-
) }),
|
|
249
|
-
d.queryBuilder.showClickhouseOption && /* @__PURE__ */ r(s, { size: { xs: 12 }, children: /* @__PURE__ */ r(
|
|
250
|
-
m,
|
|
251
|
-
{
|
|
252
|
-
name: "isClickhouseQuery",
|
|
253
|
-
control: i,
|
|
254
|
-
defaultValue: !1,
|
|
255
|
-
render: ({ field: e }) => /* @__PURE__ */ r(
|
|
256
|
-
u,
|
|
257
|
-
{
|
|
258
|
-
control: /* @__PURE__ */ r(n, { ...e, checked: e.value }),
|
|
259
|
-
label: t("Is Clickhouse Query"),
|
|
260
|
-
sx: {
|
|
261
|
-
"& .MuiFormControlLabel-label": {
|
|
262
|
-
fontSize: "14px"
|
|
263
|
-
},
|
|
264
|
-
marginTop: 0,
|
|
265
|
-
paddingTop: 0
|
|
266
|
-
},
|
|
267
|
-
"data-testid": "addeditquerybuilder-is-clickhousequery-checkbox"
|
|
268
|
-
}
|
|
269
|
-
)
|
|
270
|
-
}
|
|
271
|
-
) })
|
|
272
|
-
] }),
|
|
273
|
-
/* @__PURE__ */ l(Q, { className: "p-3 w-full flex justify-end", children: [
|
|
274
|
-
/* @__PURE__ */ r(
|
|
275
|
-
S,
|
|
276
|
-
{
|
|
277
|
-
size: "small",
|
|
278
|
-
variant: "contained",
|
|
279
|
-
color: "secondary",
|
|
280
|
-
onClick: h,
|
|
281
|
-
"data-testid": "addeditquerybuilder-close-button",
|
|
282
|
-
children: t("Cancel")
|
|
283
|
-
}
|
|
284
|
-
),
|
|
285
|
-
/* @__PURE__ */ r(
|
|
286
|
-
S,
|
|
287
|
-
{
|
|
288
|
-
variant: "contained",
|
|
289
|
-
size: "small",
|
|
290
|
-
color: "primary",
|
|
291
|
-
type: "submit",
|
|
292
|
-
onClick: E(w),
|
|
293
|
-
className: "ml-2.5",
|
|
294
|
-
"data-testid": "addeditquerybuilder-save-button",
|
|
295
|
-
children: t("Save")
|
|
296
|
-
}
|
|
297
|
-
)
|
|
298
|
-
] })
|
|
299
|
-
] })
|
|
300
|
-
}
|
|
301
|
-
);
|
|
302
|
-
}
|
|
303
|
-
G.propTypes = {
|
|
304
|
-
isEditMode: c.any,
|
|
305
|
-
open: c.any,
|
|
306
|
-
close: c.any,
|
|
307
|
-
editRow: c.any,
|
|
308
|
-
loadInitialState: c.any
|
|
309
|
-
};
|
|
310
|
-
export {
|
|
311
|
-
G as default
|
|
312
|
-
};
|
|
313
|
-
//# sourceMappingURL=AddEditQueryBuilder-Brdnm6rQ.js.map
|