@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManageTranslation-vRiptUAP.js","sources":["../src/services/TranslationService.js","../src/views/Translation/Skeletons/ManageTranslationSkeleton.jsx","../src/views/Translation/components/TranslationUi.jsx","../src/views/Translation/ManageTranslation.jsx"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\nimport { execute } from \"@/common/services/GlobalApis\";\n\nexport const createLanguage = (languageDto) =>\n api.post(\"/translation/languages\", languageDto);\n\nexport const createOrUpdateLanguages = (languageList) =>\n api.post(\"/translation/languages\", languageList);\n\nexport const updateLanguage = (languageDto) =>\n api.put(\"/translation/languages\", languageDto);\n\nexport const getAllLanguages = () => api.get(\"/translation/languages\");\n\nexport const createApp = (appDto) => api.post(\"/translation/apps\", appDto);\n\nexport const updateApp = (appDto) => api.post(\"/translation/apps\", appDto);\n\nexport const getAllApps = () => api.get(\"/translation/apps\");\n\nexport const creatingLabel = (dtoList) =>\n api.post(\"/translation/labels\", dtoList);\n\nexport const translationMap = (dtoList) =>\n api.post(\"/translation/map\", dtoList);\n\nexport const addtranslationMap = (dtoList) =>\n api.post(\"/translation/mapUpdate\", dtoList);\n\nexport const getAppsById = (ids) =>\n api.get(\"/translation/apps-selected\", { params: { ids } });\n\nexport const getLanguagesById = (ids) =>\n api.get(\"/translation/languages-selected\", { params: { ids } });\n\nexport const toggleActive = (key, isActive, app) => {\n const params = new URLSearchParams({\n key,\n isActive,\n app,\n }).toString();\n return api.put(`/translation/toggleActive?${params}`, { key, isActive, app });\n};\n\nexport const getAvailableLanguages = () =>\n api.get(\"/translation/languages-available\");\n\nexport const translateText = (targetLangs, englishText) =>\n api.get(\"/translation/translate\", { params: { targetLangs, englishText } });\n\nexport const getTranslation = async (preferredLanguage) => {\n try {\n const { data: languages } = await getAllLanguages();\n const preferredLanguageId = languages.find(\n (lang) =>\n lang.active &&\n preferredLanguage !== \"en\" &&\n lang.languageKey === preferredLanguage\n )?.id;\n\n const { data: response } = await execute({\n code: \"translation_from_language_key\",\n parameters: {\n languageId: Number(preferredLanguageId),\n appId: 2,\n },\n });\n\n const translations = response.result.reduce((acc, translation) => {\n acc[translation.key] = translation.value;\n return acc;\n }, {});\n\n return translations;\n } catch (error) {\n console.error(\"API call failed:\", error);\n throw error;\n }\n};\n\nexport const getTranslationByKey = (formCode) =>\n api.get(\"/translation/getTranslationsByFormcode\", { params: { formCode } });\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\n/**\n * Skeleton for the Translations screen header and filter row. The table below\n * it renders its own loading state, so this only stands in for the chrome.\n */\nexport const ManageTranslationSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col gap-6 w-full\">\n {/* Title block + header actions */}\n <div className=\"flex w-full flex-wrap items-start justify-between gap-4\">\n <div className=\"flex flex-col gap-2 w-full lg:w-2/5\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-56 h-7\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full max-w-140 h-4\"></div>\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-32 h-9\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-36 h-9\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-28 h-9\"></div>\n </div>\n </div>\n\n {/* Filters */}\n <div className=\"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-4 w-full\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10\"></div>\n </div>\n\n {/* Starts-with letter strip */}\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-8\"></div>\n </div>\n );\n};\n\nManageTranslationSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\n/**\n * Skeleton for the label modal's body. It renders inside the dialog, so it\n * only stands in for the stacked field rows.\n */\nexport const AddLabelSkeleton = ({ children, isLoading = true }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col gap-4 w-full\">\n {[1, 2, 3, 4].map((row) => (\n <div\n key={row}\n className=\"flex flex-col sm:flex-row gap-2 sm:gap-4 w-full\"\n >\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full sm:w-1/3 h-5\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10\"></div>\n </div>\n ))}\n </div>\n );\n};\n\nAddLabelSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const AppModalSkeleton = ({ children, isLoading = true }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[32px] w-[100px]\"></div>\n );\n};\n\nAppModalSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const LabelEditModalSkeleton = ({ children, isLoading = true }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"bg-gray-300 animate-pulse rounded-sm h-[32px] w-[120px]\"></div>\n );\n};\n\nLabelEditModalSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const LabelEditFormSkeleton = ({ children, isLoading = true }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"w-full flex flex-col gap-2\">\n <div className=\"flex flex-col sm:flex-row justify-between gap-4 w-full\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[35px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full sm:w-[350px] h-[35px]\"></div>\n </div>\n <div className=\"flex flex-col sm:flex-row gap-4 w-full\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[65px] h-[35px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[75px] h-[35px]\"></div>\n </div>\n </div>\n );\n};\n\nLabelEditFormSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, Chip, Typography } from \"@mui/material\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\n\n/**\n * @module TranslationUi\n * @description Shared presentational pieces for the Translation screens, so\n * the main screen and its modals show state and emptiness the same way\n * instead of each re-inventing it.\n */\n\n/**\n * Single state mapping for everything under Translation (labels, apps,\n * languages). Active is a healthy state, Inactive is deliberately\n * unremarkable rather than an error.\n */\nexport const STATE_META = {\n Active: { label: \"Active\", color: \"success\" },\n Inactive: { label: \"Inactive\", color: \"default\" },\n};\n\n/**\n * @method StateChip\n * @description Renders a record's active state as a labelled chip. Colour is\n * never the only signal, and an unknown/missing state renders a placeholder\n * rather than nothing.\n */\nexport const StateChip = ({ state, translate = (value) => value }) => {\n const meta = STATE_META[state];\n\n if (!meta) {\n return <Chip size=\"small\" variant=\"outlined\" label=\"—\" />;\n }\n\n return (\n <Chip\n size=\"small\"\n label={translate(meta.label)}\n color={meta.color}\n variant={meta.color === \"default\" ? \"outlined\" : \"filled\"}\n data-testid={`translation-state-chip-${meta.label.toLowerCase()}`}\n />\n );\n};\n\nStateChip.propTypes = {\n state: PropTypes.string,\n translate: PropTypes.func,\n};\n\n/**\n * @method EmptyState\n * @description Centred icon + title + explanation + optional action, used for\n * \"nothing here yet\", \"nothing matches your filters\" and \"no permission\".\n */\nexport const EmptyState = ({ icon, title, body, action, dataTestId }) => (\n <Box\n data-testid={dataTestId}\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n gap: 1,\n px: 3,\n py: 8,\n }}\n >\n <Box sx={{ color: \"text.disabled\" }}>\n <FontAwesomeIcons iconName={icon} size=\"2x\" />\n </Box>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 700 }}>\n {title}\n </Typography>\n {body && (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ maxWidth: 440 }}>\n {body}\n </Typography>\n )}\n {action}\n </Box>\n);\n\nEmptyState.propTypes = {\n icon: PropTypes.string,\n title: PropTypes.node,\n body: PropTypes.node,\n action: PropTypes.node,\n dataTestId: PropTypes.string,\n};\n\n/**\n * @method ModalFieldRow\n * @description A form row inside the Translation modals: label on the left on\n * desktop, stacked above the control on mobile, so long language lists stay\n * scannable without every modal hand-rolling its own flex row.\n */\nexport const ModalFieldRow = ({ label, required = false, hint, children }) => (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: { xs: \"column\", sm: \"row\" },\n alignItems: { xs: \"stretch\", sm: \"flex-start\" },\n gap: { xs: 0.5, sm: 2 },\n width: \"100%\",\n }}\n >\n <Box\n sx={{\n width: { xs: \"100%\", sm: \"32%\" },\n flexShrink: 0,\n pt: { xs: 0, sm: 1 },\n }}\n >\n <Typography variant=\"body2\" sx={{ fontWeight: 600 }} component=\"span\">\n {label}\n {required && (\n <Box component=\"span\" sx={{ color: \"error.main\", ml: 0.5 }}>\n *\n </Box>\n )}\n </Typography>\n {hint && (\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\">\n {hint}\n </Typography>\n )}\n </Box>\n <Box sx={{ flexGrow: 1, minWidth: 0 }}>{children}</Box>\n </Box>\n);\n\nModalFieldRow.propTypes = {\n label: PropTypes.node,\n required: PropTypes.bool,\n hint: PropTypes.node,\n children: PropTypes.node,\n};\n","import React, {\n lazy,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n getAllApps,\n getAllLanguages,\n toggleActive,\n} from \"../../services/TranslationService\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport Grid from \"@mui/material/Grid2\";\nimport \"./Styles/ManageTranslation.scss\";\nimport { getAssignedFeatures } from \"@/utils/feature\";\nimport {\n Typography,\n Box,\n Paper,\n Button,\n FormControlLabel,\n InputAdornment,\n IconButton,\n ToggleButton,\n ToggleButtonGroup,\n} from \"@mui/material\";\nimport { useForm, useWatch } from \"react-hook-form\";\nimport { executeQuery, execute } from \"@/common/services/GlobalApis\";\nimport usePagination from \"@/hooks/usePagination\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nconst AppModal = lazy(() => import(\"./AppModal\"));\nconst LanguagesModal = lazy(() => import(\"./LanguagesModal\"));\nconst AddLabelModal = lazy(() => import(\"./AddLabelModal\"));\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { ManageTranslationSkeleton } from \"./Skeletons/ManageTranslationSkeleton\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/VirtualCustomizedTableV2\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport CustomSwitch from \"@/views/custom-components/CustomSwitch\";\nimport DebouncedSearchInput from \"@/views/custom-components/DebouncedSearchInput\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { EmptyState, StateChip } from \"./components/TranslationUi\";\n\nconst ALPHABET = Array.from({ length: 26 }, (_, index) =>\n String.fromCharCode(65 + index),\n);\n\n/**\n * @module ManageTranslation\n * @description This component handles the management of translations, including handling app selection, language management, label management, and toggling active states.\n */\n\nfunction ManageTranslation() {\n const { translate } = useTranslateProvider();\n const isInitialPage = useRef(false);\n const [apps, setApps] = useState([]);\n const [appList, setAppList] = useState([]);\n const [addAppFlag, setaddAppFlag] = useState(false);\n const [fieldsData, setFieldsData] = useState(null);\n const [loadingEditLabel, setLoadingEditLabel] = useState(false);\n\n const [tableData, setTableData] = useState([]);\n const [appModal, setAppModal] = useState(false);\n const [languageModal, setLanguageModal] = useState(false);\n\n const [hasMore, setHasMore] = useState(true);\n const [languages, setLanguages] = useState([]);\n\n const [addLabel, setAddLabel] = useState(false);\n const [editLabel, setEditLabel] = useState(null);\n const [searchInput, setSearchInput] = useState(\"\");\n const [searchValue, setSearchValue] = useState(\"\");\n const [startsWith, setStartsWith] = useState(\"\");\n const [inactive, setInactive] = useState(false);\n const [rights, setRights] = useState(null);\n const rightsRef = useRef(rights);\n\n useEffect(() => {\n rightsRef.current = rights;\n }, [rights]);\n\n const [toggleOpen, setToggleOpen] = useState(false);\n\n const [clickedRow, setClickedRow] = useState({});\n\n const [labelEdit, setLabelEdit] = useState(false);\n const [labelKey, setLabelKey] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [addNameSpaceFlag, setaddNameSpaceFlag] = useState(false);\n const [isPageLoaded, setIsPageLoaded] = useState(false);\n const [loadingTable, setLoadingTable] = useState(false);\n\n const [namespaceslist, setNameSpaceList] = useState([]);\n\n // Filters reuse the same field components as forms, so they need a form\n // context of their own. Values are read back through useWatch.\n const { control: filterControl, reset: resetFilterForm } = useForm({\n defaultValues: { appId: \"\", namespaces: [] },\n });\n const selectedApp = useWatch({ control: filterControl, name: \"appId\" }) || \"\";\n const watchedNameSpace = useWatch({\n control: filterControl,\n name: \"namespaces\",\n });\n const selectedNameSpace = useMemo(\n () => watchedNameSpace || [],\n [watchedNameSpace],\n );\n\n const getnamespace = async () => {\n try {\n const res = await execute({\n code: \"get_distinct_namespce\",\n parameters: {},\n });\n setNameSpaceList(res?.data?.result);\n } catch (e) {\n console.error(e);\n }\n };\n\n useEffect(() => {\n init();\n getnamespace();\n }, []);\n\n /**\n * @method init\n * @description Initializes the translation management page by fetching necessary data, such as apps and languages, and setting user rights.\n */\n const init = async () => {\n try {\n await refresh();\n const { data: assignedFeatures } = await getAssignedFeatures(\n \"techo.manage.manageTranslation\",\n );\n setRights(JSON.parse(assignedFeatures));\n } catch (error) {\n console.error(error);\n showToast({\n message: \"Could not load translations. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n /**\n * @method refresh\n * @description Refreshes the list of apps and languages.\n */\n const refresh = async () => {\n try {\n let res = await getAllApps();\n const activeApps = res?.data?.filter((app) => {\n return app.isActive === true;\n });\n setApps(activeApps);\n\n res = await getAllLanguages();\n const activeLanguages = res?.data?.filter((lang) => {\n return lang.active === true;\n });\n setLanguages(activeLanguages);\n } catch (error) {\n console.error(error);\n showToast({\n message: \"Could not load apps and languages. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n /**\n * @method handleSearch\n * @description Applies the debounced search term. A term with an unclosed\n * placeholder brace is held back until the user closes it, so an\n * in-progress `{count` never runs as a query.\n * @param {string} search - The debounced search term.\n */\n const handleSearch = useCallback((search) => {\n setSearchInput(search);\n const openBraces = (search.match(/{/g) || []).length;\n const closeBraces = (search.match(/}/g) || []).length;\n if (openBraces > closeBraces) return;\n setSearchValue(search);\n }, []);\n\n /**\n * @method handleLetterClick\n * @description Handles clicking on a letter to filter results that start with that letter.\n * @param {string} letter - The clicked letter.\n */\n const handleLetterClick = (letter) => {\n setStartsWith(letter);\n };\n\n const cols = useMemo(\n () => [\n { field: \"Sr. No.\", label: `Sr.No`, align: \"left\", minWidth: 80 },\n { field: \"Actions\", label: translate(\"Actions\"), minWidth: 120 },\n { field: \"key\", label: translate(\"Key\"), align: \"left\", minWidth: 260 },\n { field: \"app\", label: translate(\"App\"), align: \"left\", minWidth: 130 },\n {\n field: \"state\",\n label: translate(\"State\"),\n align: \"left\",\n minWidth: 110,\n render: (row) => <StateChip state={row?.state} translate={translate} />,\n },\n ...(languages || []).map((language) => ({\n field: language?.languageValue?.toLowerCase(),\n label: language?.languageValue,\n align: \"left\",\n minWidth: 220,\n })),\n ],\n [languages, translate],\n );\n\n // Every row-menu handler takes the row it was invoked on. Reading it from\n // state instead would go stale: a virtualized row is not re-rendered when\n // the parent's state changes, so its menu keeps the closure it was built\n // with.\n const clickedRowActive = clickedRow?.state === \"Active\";\n const toggleLabel = clickedRowActive ? \"Mark as Inactive\" : \"Mark as Active\";\n const toggleDescription = clickedRowActive\n ? `\"${clickedRow?.key}\" will stop showing in ${clickedRow?.app} for every language. You can turn it back on from this screen.`\n : `\"${clickedRow?.key}\" will start showing in ${clickedRow?.app} again for every language.`;\n\n const handleToggle = (row) => {\n if (row) setClickedRow(row);\n setToggleOpen((curr) => !curr);\n };\n\n /**\n * @method handleAddNameSpace\n * @description Opens the modal for adding a namespace to the label.\n */\n const handleAddNameSpace = async (row) => {\n try {\n setFieldsData({ key: row?.key });\n setaddNameSpaceFlag(true);\n setAddLabel((curr) => !curr);\n } catch (error) {\n console.error(error);\n showToast({\n message: \"Could not open the namespace form. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n const handleAddApp = async (row) => {\n try {\n let key = row?.key?.replace(/'/g, \"''\");\n let dto = {\n code: \"labels_selected_apps_for_editing\",\n parameters: { key },\n };\n const res = await executeQuery(dto);\n let editApp = res?.data?.result;\n setEditLabel(res?.data?.result);\n let queryDto = {\n code: \"labels_app_data_for_prepopulating\",\n parameters: {\n key: row?.key,\n appValue: row?.app,\n },\n };\n\n let editAppIds = editApp.map((item) => {\n return item.app;\n });\n let appList = apps.filter((app) => {\n return editAppIds.indexOf(app.id) === -1;\n });\n\n if (appList.length > 0) {\n const result = await executeQuery(queryDto);\n setFieldsData(result?.data?.result);\n setAppList(appList);\n\n setaddAppFlag(true);\n setAddLabel((curr) => !curr);\n } else {\n showToast({\n message: \"This label is already in every app.\",\n type: \"info\",\n });\n }\n } catch (error) {\n console.error(error);\n showToast({\n message: \"Could not open the app form. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n const handleToggleState = async () => {\n try {\n let isActive = clickedRow?.state === \"Active\";\n await toggleActive(clickedRow?.key, !isActive, clickedRow?.appId);\n refetch();\n setToggleOpen((cur) => !cur);\n showToast({\n message: isActive ? \"Label marked inactive\" : \"Label marked active\",\n type: \"success\",\n });\n } catch (error) {\n console.error(error);\n showToast({\n message: \"Could not change the label state. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n /**\n * @method handleEdit\n * @description Handles the edit action for a label.\n * @param {object} row - The row data for the label to be edited.\n */\n const handleEdit = async (row) => {\n try {\n setLoadingEditLabel(true);\n setAddLabel((curr) => !curr);\n setLabelEdit((curr) => !curr);\n let key = row?.key.replace(/'/g, \"''\");\n setLabelKey(key);\n let dto = {\n code: \"labels_selected_apps_for_editing\",\n parameters: { key },\n };\n const res = await executeQuery(dto);\n setEditLabel(res?.data?.result);\n setLoadingEditLabel(false);\n } catch (error) {\n console.error(error);\n showToast({\n message: \"Could not open this label for editing. Please try again.\",\n type: \"error\",\n });\n setLoadingEditLabel(false);\n }\n };\n\n const handleInactive = (row) => {\n return row?.state !== \"Inactive\";\n };\n\n const actions = useCallback(\n (row) => {\n const list = [];\n if (GeneralUtil.hasCheckRights(rights?.['update.manage.manageTranslation'])) {\n list.push({\n label: \"\",\n icon: <FontAwesomeIcons iconName=\"faPen\" />,\n onClick: handleEdit,\n condition: handleInactive,\n ariaLabel: translate(\"Edit label\"),\n dataTestId: \"manage-translation-edit-icon\",\n });\n }\n\n const currentMenuItems = [];\n if (GeneralUtil.hasCheckRights(rights?.['update.manage.manageTranslation'])) {\n currentMenuItems.push({\n label: translate(\n row?.state === \"Active\" ? \"Mark as Inactive\" : \"Mark as Active\",\n ),\n onClick: handleToggle,\n });\n }\n if (GeneralUtil.hasCheckRights(rights?.['create.manage.manageTranslation'])) {\n currentMenuItems.push({ label: translate(\"Add app\"), onClick: handleAddApp });\n currentMenuItems.push({ label: translate(\"Add Namespace\"), onClick: handleAddNameSpace });\n }\n\n if (currentMenuItems.length > 0) {\n list.push({\n label: \"\",\n icon: <FontAwesomeIcons iconName=\"faBars\" />,\n ariaLabel: translate(\"More label actions\"),\n dataTestId: \"manage-translation-menu-icon\",\n menuItems: currentMenuItems,\n });\n }\n\n return list;\n },\n [rights, translate],\n );\n\n const manageApps = () => {\n setAppModal((cur) => !cur);\n };\n const manageLanguages = () => {\n setLanguageModal((curr) => !curr);\n };\n const addLabelTranslation = () => {\n setAddLabel((curr) => !curr);\n setAppList(apps);\n };\n\n const escapeSql = (val) => {\n if (val === null || val === undefined) return val;\n return val.replace(/'/g, \"''\");\n };\n\n const loadData = async (pageParam, isInitial) => {\n try {\n if (isInitial && !isPageLoaded) {\n isInitialPage.current = true;\n setIsLoading(true);\n } else if (isInitial && isPageLoaded) {\n // This is a refetch, not truly the first load\n setLoadingTable(true);\n }\n let queryDto = {\n code: \"fetch_labels_translation_translation_master\",\n parameters: {\n appId: selectedApp || null,\n searchString: escapeSql(searchValue || \"\"),\n startsWith: escapeSql(startsWith || \"\"),\n namespaceArray:\n selectedNameSpace.length > 0\n ? selectedNameSpace.map((v) => escapeSql(v)).join(\",\")\n : \"\",\n showInactive: inactive || false,\n limit: pageParam?.limit || 100,\n offset: pageParam?.offset || 0,\n },\n };\n const res = await executeQuery(queryDto);\n return res?.data?.result;\n } catch (error) {\n isInitialPage.current = false;\n console.error(error);\n setLoadingTable(false);\n setIsLoading(false);\n showToast({\n message: \"Could not load labels. Please try again.\",\n type: \"error\",\n });\n }\n };\n\n const isClearDisabled = useMemo(() => {\n return (\n searchValue === \"\" &&\n startsWith === \"\" &&\n inactive === false &&\n selectedApp === \"\" &&\n selectedNameSpace.length === 0\n );\n }, [searchValue, startsWith, inactive, selectedApp, selectedNameSpace]);\n\n const stableKey = useMemo(\n () => [\n \"translation\",\n selectedApp,\n searchValue,\n startsWith,\n inactive,\n selectedNameSpace,\n ],\n [selectedApp, searchValue, startsWith, inactive, selectedNameSpace],\n );\n\n const {\n data: pageData,\n fetchNextPage,\n hasNextPage,\n refetch,\n } = usePagination({\n key: stableKey,\n queryFn: ({ pageParam }) => {\n const isFirstLoad = !isPageLoaded; // first time ever\n const isFirstPage = !pageParam?.offset || pageParam?.offset === 0;\n const isInitial = isFirstPage && isFirstLoad; // only first load is \"initial\"\n return loadData(pageParam, isInitial);\n },\n limit: 100,\n });\n\n useEffect(() => {\n if (pageData) {\n let actualData = pageData?.pages?.flat() || [];\n\n const groupedArray = Object.values(\n actualData?.reduce((acc, element) => {\n const combinedKey = element?.key + \"-\" + element?.app; // Create a unique key combining `key` and `app`\n if (!acc[combinedKey]) {\n acc[combinedKey] = {\n rowKey: combinedKey,\n appId: element?.appid,\n key: element?.key,\n app: element?.app,\n state: element?.is_active ? \"Active\" : \"Inactive\",\n };\n }\n\n acc[combinedKey][element?.language.toLowerCase()] = element?.value; // Add the `value` to the group's `values` array\n if (element?.is_active) {\n acc[combinedKey].state = \"Active\";\n }\n return acc;\n }, {}),\n );\n setHasMore(hasNextPage);\n setTableData(groupedArray);\n if (isInitialPage.current) {\n if (!isPageLoaded) {\n setIsLoading(false); // explicitly stop\n setIsPageLoaded(true);\n } else {\n setLoadingTable(false); // explicitly stop\n }\n isInitialPage.current = false;\n }\n }\n }, [pageData]);\n\n const handleClearFilters = () => {\n setSearchInput(\"\");\n setSearchValue(\"\");\n setStartsWith(\"\");\n setInactive(false);\n resetFilterForm({ appId: \"\", namespaces: [] });\n };\n\n const canCreate = GeneralUtil.hasCheckRights(\n rights?.[\"create.manage.manageTranslation\"],\n );\n const canManage = GeneralUtil.hasCheckRights(\n rights?.[\"create.manage.manageTranslation\"],\n rights?.canManage,\n );\n const isDenied =\n !isLoading &&\n rights !== null &&\n !GeneralUtil.hasCheckRights(rights?.[\"view.manage.manageTranslation\"]);\n const isTableBusy = isLoading || loadingTable;\n const hasRows = tableData?.length > 0;\n\n return (\n <Grid container mt={3} spacing={2}>\n <Suspense>\n {appModal && (\n <AppModal\n open={appModal}\n handleClose={() => setAppModal((curr) => !curr)}\n languages={languages}\n refresh={refresh}\n refetch={refetch}\n selectedApp={selectedApp}\n setSelectedApp={() => resetFilterForm({ appId: \"\", namespaces: selectedNameSpace })}\n />\n )}\n </Suspense>\n\n <Suspense>\n {languageModal && (\n <LanguagesModal\n open={languageModal}\n handleClose={() => {\n setLanguageModal((curr) => !curr);\n }}\n refresh={refresh}\n refetch={refetch}\n />\n )}\n </Suspense>\n\n <Suspense>\n {addLabel && (\n <AddLabelModal\n open={addLabel}\n handleClose={() => {\n setAddLabel((curr) => !curr);\n setaddAppFlag(false);\n setaddNameSpaceFlag(false);\n setEditLabel(null);\n setFieldsData(null);\n setLabelEdit(false);\n setLabelKey(null);\n }}\n apps={appList}\n addAppFlag={addAppFlag}\n addNameSpaceFlag={addNameSpaceFlag}\n languageList={languages}\n editLabel={editLabel}\n fieldsData={fieldsData}\n editLabelFlag={labelEdit}\n labelKey={labelKey}\n refetch={refetch}\n isLoading={loadingEditLabel}\n />\n )}\n </Suspense>\n\n <CustomConfirmationModal\n description={toggleDescription}\n title={translate(toggleLabel)}\n handleClick={handleToggleState}\n open={toggleOpen}\n handleClose={() => {\n setToggleOpen((cur) => !cur);\n }}\n data-testid=\"manageTranslation-modal-customconfirmation\"\n />\n\n <Grid size={{ xs: 12 }}>\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\n mb: 3,\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n backgroundColor: \"background.paper\",\n }}\n >\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n <ManageTranslationSkeleton isLoading={isLoading}>\n {/* ── Header: title block (left) + actions (right) ── */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n >\n <Box sx={{ minWidth: { xs: \"100%\", lg: \"40%\" } }}>\n <Typography\n variant=\"h5\"\n component=\"h1\"\n sx={{ fontWeight: 800, color: \"text.primary\", mb: 0.5 }}\n >\n {translate(\"Translations\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Every label the apps display, in every language. Edit a translation here and the apps using that label pick it up.\",\n )}\n </Typography>\n </Box>\n\n {!isDenied && (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n {canManage && (\n <Button\n size=\"small\"\n variant=\"outlined\"\n data-testid=\"manageTranslation-manage-apps-button\"\n color=\"primary\"\n onClick={manageApps}\n >\n {translate(\"Manage Apps\")}\n </Button>\n )}\n {canManage && (\n <Button\n size=\"small\"\n variant=\"outlined\"\n color=\"primary\"\n data-testid=\"managetranslation-manage-language-button\"\n onClick={manageLanguages}\n >\n {translate(\"Manage Language\")}\n </Button>\n )}\n {canCreate && (\n <Button\n size=\"small\"\n variant=\"contained\"\n data-testid=\"manageTranalation-add-label-button\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={addLabelTranslation}\n >\n {translate(\"Add Label\")}\n </Button>\n )}\n </Box>\n )}\n </Box>\n\n {!isDenied && (\n <>\n {/* ── Filters ── */}\n <Grid container spacing={2} alignItems=\"flex-start\">\n <Grid size={{ xs: 12, sm: 6, md: 3 }}>\n <CustomDropdown\n control={filterControl}\n name=\"appId\"\n label={translate(\"App\")}\n options={apps || []}\n displayName=\"appValue\"\n optionValue=\"id\"\n isNullSelectDisabled={false}\n placeholder={translate(\"All apps\")}\n dataTestId=\"managetranslation-app-dropdown\"\n />\n </Grid>\n <Grid size={{ xs: 12, sm: 6, md: 3 }}>\n <CustomDropdown\n control={filterControl}\n name=\"namespaces\"\n label={translate(\"Name Spaces\")}\n options={namespaceslist || []}\n displayName=\"label\"\n optionValue=\"value\"\n multiple\n dataTestId=\"autocomplete-namespace\"\n />\n </Grid>\n <Grid size={{ xs: 12, sm: 6, md: 3 }}>\n <DebouncedSearchInput\n value={searchInput}\n onChange={handleSearch}\n placeholder={translate(\"Search labels\")}\n label={translate(\"Search For\")}\n autoFocus={false}\n fullWidth\n size=\"small\"\n data-testid=\"managetranslation-search-textfield\"\n slotProps={{\n htmlInput: {\n \"aria-label\": translate(\"Search labels\"),\n },\n // The search icon adornment would otherwise sit\n // under the resting label.\n inputLabel: { shrink: true },\n }}\n inputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <Box\n sx={{ color: \"text.disabled\", display: \"flex\" }}\n >\n <FontAwesomeIcons\n iconName=\"faMagnifyingGlass\"\n size=\"sm\"\n />\n </Box>\n </InputAdornment>\n ),\n endAdornment: searchInput ? (\n <InputAdornment position=\"end\">\n <IconButton\n size=\"small\"\n aria-label={translate(\"Clear search\")}\n onClick={() => handleSearch(\"\")}\n >\n <FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n />\n </Grid>\n <Grid\n size={{ xs: 12, sm: 6, md: 3 }}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: { xs: \"flex-start\", md: \"flex-end\" },\n gap: 1,\n flexWrap: \"wrap\",\n minHeight: 40,\n }}\n >\n <FormControlLabel\n className=\"translation-inactive\"\n control={\n <CustomSwitch\n checked={inactive}\n onChange={(event) =>\n setInactive(event.target.checked)\n }\n inputProps={{\n \"aria-label\": translate(\"Show Inactive\"),\n }}\n />\n }\n label={translate(\"Show Inactive\")}\n labelPlacement=\"end\"\n />\n <Button\n size=\"small\"\n variant=\"text\"\n disabled={isClearDisabled}\n startIcon={<FontAwesomeIcons iconName=\"faXmark\" size=\"sm\" />}\n onClick={handleClearFilters}\n data-testid=\"managetranslation-clear-filters\"\n >\n {translate(\"Clear filters\")}\n </Button>\n </Grid>\n </Grid>\n\n {/* ── Starts-with letter strip ── */}\n <Box>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ display: \"block\", mb: 0.5 }}\n >\n {translate(\"Starts With\")}\n </Typography>\n <Box sx={{ overflowX: \"auto\", pb: 0.5 }}>\n <ToggleButtonGroup\n exclusive\n size=\"small\"\n value={startsWith}\n onChange={(event, letter) =>\n handleLetterClick(letter ?? \"\")\n }\n aria-label={translate(\"Starts With\")}\n sx={{ flexWrap: \"nowrap\" }}\n >\n <ToggleButton\n value=\"\"\n aria-label={translate(\"All letters\")}\n sx={{ px: 1.5 }}\n >\n {translate(\"All\")}\n </ToggleButton>\n {ALPHABET.map((letter) => (\n <ToggleButton\n key={letter}\n value={letter}\n aria-label={letter}\n sx={{ px: 1.25 }}\n >\n {letter}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </Box>\n </Box>\n </>\n )}\n </ManageTranslationSkeleton>\n\n {isDenied ? (\n <EmptyState\n icon=\"faLock\"\n title={translate(\"You don't have access to Translations\")}\n body={translate(\n \"Your role doesn't include permission to view translations. Ask an administrator to grant the view right for this module.\",\n )}\n dataTestId=\"no-permission-message\"\n />\n ) : isPageLoaded && !isTableBusy && !hasRows && !isClearDisabled ? (\n <EmptyState\n icon=\"faMagnifyingGlass\"\n title={translate(\"No labels match these filters\")}\n body={translate(\n \"Try a shorter search term, another app or namespace, or turn on Show Inactive to include labels that are switched off.\",\n )}\n action={\n <Button variant=\"text\" size=\"small\" onClick={handleClearFilters}>\n {translate(\"Clear filters\")}\n </Button>\n }\n dataTestId=\"managetranslation-no-results\"\n />\n ) : isPageLoaded && !isTableBusy && !hasRows ? (\n <EmptyState\n icon=\"faLanguage\"\n title={translate(\"No labels yet\")}\n body={translate(\n \"Add a label to give every app the text it displays, in each active language.\",\n )}\n action={\n canCreate ? (\n <Button\n variant=\"contained\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n onClick={addLabelTranslation}\n >\n {translate(\"Add Label\")}\n </Button>\n ) : null\n }\n dataTestId=\"managetranslation-no-labels\"\n />\n ) : (\n <CustomizedTable\n columns={cols}\n tableData={tableData}\n actions={actions}\n paginationConfig={{\n pagination: true,\n paginationType: \"infinite-scroll\",\n loadMore: () =>\n hasMore && fetchNextPage({ cancelRefetch: false }),\n hasMore: hasMore,\n }}\n dataTestId=\"manageTranslation-table\"\n isLoading={isTableBusy}\n showScrollArrows\n rowUniqueKey=\"rowKey\"\n // Label values are user-entered text, not markup: rendering\n // them as HTML is an injection surface and costs two extra\n // innerHTML writes per cell.\n disableHtml\n // Clamp each cell to one line: uniform row heights are what\n // keep the virtualized scroll from jittering, and the full\n // value is still available in the cell tooltip.\n showFullContent={false}\n styleConfig={{ tableStyle: { maxHeight: 180 } }}\n />\n )}\n </Box>\n </Paper>\n </Grid>\n </Grid>\n );\n}\n\nexport default ManageTranslation;\n"],"names":["createLanguage","languageDto","api","updateLanguage","getAllLanguages","createApp","appDto","updateApp","getAllApps","creatingLabel","dtoList","translationMap","addtranslationMap","toggleActive","key","isActive","app","params","translateText","targetLangs","englishText","ManageTranslationSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","AddLabelSkeleton","row","AppModalSkeleton","LabelEditModalSkeleton","STATE_META","StateChip","state","translate","value","meta","Chip","EmptyState","icon","title","body","action","dataTestId","Box","FontAwesomeIcons","Typography","ModalFieldRow","label","required","hint","AppModal","lazy","LanguagesModal","AddLabelModal","ALPHABET","_","index","ManageTranslation","useTranslateProvider","isInitialPage","useRef","apps","setApps","useState","appList","setAppList","addAppFlag","setaddAppFlag","fieldsData","setFieldsData","loadingEditLabel","setLoadingEditLabel","tableData","setTableData","appModal","setAppModal","languageModal","setLanguageModal","hasMore","setHasMore","languages","setLanguages","addLabel","setAddLabel","editLabel","setEditLabel","searchInput","setSearchInput","searchValue","setSearchValue","startsWith","setStartsWith","inactive","setInactive","rights","setRights","rightsRef","useEffect","toggleOpen","setToggleOpen","clickedRow","setClickedRow","labelEdit","setLabelEdit","labelKey","setLabelKey","setIsLoading","addNameSpaceFlag","setaddNameSpaceFlag","isPageLoaded","setIsPageLoaded","loadingTable","setLoadingTable","namespaceslist","setNameSpaceList","filterControl","resetFilterForm","useForm","selectedApp","useWatch","watchedNameSpace","selectedNameSpace","useMemo","getnamespace","res","execute","_a","e","init","refresh","assignedFeatures","getAssignedFeatures","error","showToast","activeApps","activeLanguages","_b","lang","handleSearch","useCallback","search","openBraces","closeBraces","handleLetterClick","letter","cols","language","clickedRowActive","toggleLabel","toggleDescription","handleToggle","curr","handleAddNameSpace","handleAddApp","dto","executeQuery","editApp","_c","queryDto","editAppIds","item","result","_d","handleToggleState","refetch","cur","handleEdit","handleInactive","actions","list","GeneralUtil","currentMenuItems","manageApps","manageLanguages","addLabelTranslation","escapeSql","val","loadData","pageParam","isInitial","v","isClearDisabled","stableKey","pageData","fetchNextPage","hasNextPage","usePagination","isFirstLoad","actualData","groupedArray","acc","element","combinedKey","handleClearFilters","canCreate","canManage","isDenied","isTableBusy","hasRows","Grid","Suspense","CustomConfirmationModal","Paper","t","Button","Fragment","CustomDropdown","DebouncedSearchInput","InputAdornment","IconButton","FormControlLabel","CustomSwitch","event","ToggleButtonGroup","ToggleButton","CustomizedTable"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
.translation-modal .MuiBackdrop-root{background-color:#0f172a73;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.translation-inactive{margin:0!important}.translation-inactive .MuiFormControlLabel-label{font-size:13px}.label-edit-tabs{border-bottom:1px solid;border-color:#94a3b833}
|