@argusoft/medplat-core 1.0.30 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/{AccessRights-xrday-L1.js → AccessRights-DBjTQA1-.js} +395 -390
  2. package/dist/AccessRights-DBjTQA1-.js.map +1 -0
  3. package/dist/{AddFeatures-D1sU8RjY.js → AddFeatures-COj4ZTIM.js} +2 -2
  4. package/dist/{AddFeatures-D1sU8RjY.js.map → AddFeatures-COj4ZTIM.js.map} +1 -1
  5. package/dist/AddMenuConfiguration-Creeib5X.js +11223 -0
  6. package/dist/AddMenuConfiguration-Creeib5X.js.map +1 -0
  7. package/dist/AddMenuConfiguration.css +1 -1
  8. package/dist/{BrandsPage-DmRW5bhm-Bk1szrjI.js → BrandsPage-CdcAvaml-ZtVTX6vX.js} +43 -43
  9. package/dist/{BrandsPage-DmRW5bhm-Bk1szrjI.js.map → BrandsPage-CdcAvaml-ZtVTX6vX.js.map} +1 -1
  10. package/dist/{CategoriesPage-BsS5IQh3-B03lWRY5.js → CategoriesPage-BprQEYJw-CclreTv1.js} +109 -102
  11. package/dist/CategoriesPage-BprQEYJw-CclreTv1.js.map +1 -0
  12. package/dist/{ChangePasswordModalCore-BPsJquTS.js → ChangePasswordModalCore-DZGOkbRY.js} +3 -3
  13. package/dist/{ChangePasswordModalCore-BPsJquTS.js.map → ChangePasswordModalCore-DZGOkbRY.js.map} +1 -1
  14. package/dist/ConditionConfig-Bpm6OoV5.js +408 -0
  15. package/dist/ConditionConfig-Bpm6OoV5.js.map +1 -0
  16. package/dist/{DashboardPage-C3bKc5na-sBd9Yqbi.js → DashboardPage-CTiGSx71-CsYohJ5e.js} +32 -32
  17. package/dist/{DashboardPage-C3bKc5na-sBd9Yqbi.js.map → DashboardPage-CTiGSx71-CsYohJ5e.js.map} +1 -1
  18. package/dist/EntityManagement-BGwJGl9k.js +62 -0
  19. package/dist/EntityManagement-BGwJGl9k.js.map +1 -0
  20. package/dist/EventConfig-BY2cgGyx.js +27 -0
  21. package/dist/{EventConfig-BmLemzX3.js.map → EventConfig-BY2cgGyx.js.map} +1 -1
  22. package/dist/EventConfigurations-B-z7xHh_.js +544 -0
  23. package/dist/EventConfigurations-B-z7xHh_.js.map +1 -0
  24. package/dist/EventConfigurations.css +1 -1
  25. package/dist/EventsExceptionModal-DafomIv6.js +188 -0
  26. package/dist/EventsExceptionModal-DafomIv6.js.map +1 -0
  27. package/dist/EventsUi-Dl_yckSA.js +263 -0
  28. package/dist/EventsUi-Dl_yckSA.js.map +1 -0
  29. package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js +112 -0
  30. package/dist/FacilityPicker-BXa2VF7i-Dab_Jwa5.js.map +1 -0
  31. package/dist/{FeatureMenu-DYJmDt7q.js → FeatureMenu-Kc73yPHH.js} +9 -5
  32. package/dist/FeatureMenu-Kc73yPHH.js.map +1 -0
  33. package/dist/{FhirServerList-DuTwnngN.js → FhirServerList-CrIHMAxz.js} +16 -16
  34. package/dist/{FhirServerList-DuTwnngN.js.map → FhirServerList-CrIHMAxz.js.map} +1 -1
  35. package/dist/{FhirServerProfile-CUOwC6Wb.js → FhirServerProfile-D3aYcpwY.js} +8 -8
  36. package/dist/{FhirServerProfile-CUOwC6Wb.js.map → FhirServerProfile-D3aYcpwY.js.map} +1 -1
  37. package/dist/{FhirServerWizard-DZI8Olku.js → FhirServerWizard-Db6Hm4bQ.js} +15 -15
  38. package/dist/{FhirServerWizard-DZI8Olku.js.map → FhirServerWizard-Db6Hm4bQ.js.map} +1 -1
  39. package/dist/{GrantPermissionModal-BDN66Atn.js → GrantPermissionModal-D7iNZd0M.js} +54 -51
  40. package/dist/GrantPermissionModal-D7iNZd0M.js.map +1 -0
  41. package/dist/ImmunizationConfigurationBase-lKsJZMak.js +8060 -0
  42. package/dist/ImmunizationConfigurationBase-lKsJZMak.js.map +1 -0
  43. package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js +1017 -0
  44. package/dist/InventoryPage-JadYMCzU-CzJQfQ2A.js.map +1 -0
  45. package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js +1344 -0
  46. package/dist/LocationWiseExpectedTargetPage-CjKk1aTF.js.map +1 -0
  47. package/dist/{ManageDynamicFeature-BU0I45dd.js → ManageDynamicFeature-CuyYfx_P.js} +104 -97
  48. package/dist/ManageDynamicFeature-CuyYfx_P.js.map +1 -0
  49. package/dist/ManageEventConfiguration-DqPbn3Oi.js +1216 -0
  50. package/dist/ManageEventConfiguration-DqPbn3Oi.js.map +1 -0
  51. package/dist/ManageEventConfiguration.css +1 -1
  52. package/dist/ManageRole-CyfpySt9.js +981 -0
  53. package/dist/ManageRole-CyfpySt9.js.map +1 -0
  54. package/dist/{ManageUser-DCFkUMV9.js → ManageUser-Dm0l833u.js} +286 -286
  55. package/dist/{ManageUser-DCFkUMV9.js.map → ManageUser-Dm0l833u.js.map} +1 -1
  56. package/dist/{MemberProfileCard-BdUNgHRB-VywqQdFF.js → MemberProfileCard-01d_jz3w-DYHtbgMX.js} +46 -46
  57. package/dist/{MemberProfileCard-BdUNgHRB-VywqQdFF.js.map → MemberProfileCard-01d_jz3w-DYHtbgMX.js.map} +1 -1
  58. package/dist/MobileAnalytics-C9oc2yAo.js +18399 -0
  59. package/dist/MobileAnalytics-C9oc2yAo.js.map +1 -0
  60. package/dist/MobileMenuManagement-BmzTPXy7.js +231 -0
  61. package/dist/MobileMenuManagement-BmzTPXy7.js.map +1 -0
  62. package/dist/MobileTypeEventConfigModal-DodU3beR.js +752 -0
  63. package/dist/MobileTypeEventConfigModal-DodU3beR.js.map +1 -0
  64. package/dist/{NewServerManagement-Cxe0dV0O.js → NewServerManagement-BdayO78D.js} +368 -352
  65. package/dist/NewServerManagement-BdayO78D.js.map +1 -0
  66. package/dist/OtherTypeEventConfigModal-D_9S50aI.js +1414 -0
  67. package/dist/OtherTypeEventConfigModal-D_9S50aI.js.map +1 -0
  68. package/dist/{PaymentCreatePage-CIVe0P0p-25BQVpOX.js → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js} +58 -58
  69. package/dist/{PaymentCreatePage-CIVe0P0p-25BQVpOX.js.map → PaymentCreatePage-D6NZBUC3-DxXf2kvH.js.map} +1 -1
  70. package/dist/{PaymentsPage-BvPe5Q9F-D2gfziwW.js → PaymentsPage-CHieGNrn-BnYCtqHd.js} +37 -37
  71. package/dist/{PaymentsPage-BvPe5Q9F-D2gfziwW.js.map → PaymentsPage-CHieGNrn-BnYCtqHd.js.map} +1 -1
  72. package/dist/{PermissionsModal-CCYkcKlC.js → PermissionsModal-Dxbkkrqe.js} +18 -18
  73. package/dist/PermissionsModal-Dxbkkrqe.js.map +1 -0
  74. package/dist/{PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js} +2 -2
  75. package/dist/{PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js.map → PickupBatchLinesEditor-QPaqFtUO-CY7BShYh.js.map} +1 -1
  76. package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js +801 -0
  77. package/dist/PickupCreatePage-C7_67u_u-OId8-e2a.js.map +1 -0
  78. package/dist/{PickupsPage-Ctpghavs-CUp4uIZq.js → PickupsPage-BWblMlic-CWkgeBw0.js} +132 -132
  79. package/dist/PickupsPage-BWblMlic-CWkgeBw0.js.map +1 -0
  80. package/dist/PmGuard-BvUUbU80-BpYNaDzl.js +641 -0
  81. package/dist/PmGuard-BvUUbU80-BpYNaDzl.js.map +1 -0
  82. package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js +1523 -0
  83. package/dist/ProductEditPage-Dbq4vUAA-BoBmTPPL.js.map +1 -0
  84. package/dist/{ProductsPage-CupVmOD4-D45a_hf-.js → ProductsPage-BI22nPb4-CQBjnc-n.js} +44 -43
  85. package/dist/ProductsPage-BI22nPb4-CQBjnc-n.js.map +1 -0
  86. package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js +724 -0
  87. package/dist/PurchaseCreatePage-C0EK9z4w-BQMTsjE7.js.map +1 -0
  88. package/dist/{PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js → PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js} +428 -418
  89. package/dist/PurchaseRequestDetailPage-DhBuOGHZ-CWZPqzt9.js.map +1 -0
  90. package/dist/{PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js} +65 -65
  91. package/dist/{PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js.map → PurchaseRequestsPage-Bj9HUMxb-B7-AxT8m.js.map} +1 -1
  92. package/dist/{PurchasesPage-It1GHiXl-eH4IsF_U.js → PurchasesPage-Djl1AqD_-DXeYFMrX.js} +55 -55
  93. package/dist/{PurchasesPage-It1GHiXl-eH4IsF_U.js.map → PurchasesPage-Djl1AqD_-DXeYFMrX.js.map} +1 -1
  94. package/dist/{RoleManagement-s8iNx2Mu.js → RoleManagement-DVYufwy-.js} +3 -3
  95. package/dist/{RoleManagement-s8iNx2Mu.js.map → RoleManagement-DVYufwy-.js.map} +1 -1
  96. package/dist/Roles-BoNGJhtR.js +19 -0
  97. package/dist/Roles-BoNGJhtR.js.map +1 -0
  98. package/dist/{SaleCreatePage-C9kFmTvm-B3Y0o4CX.js → SaleCreatePage-DHBLmlBr-BlgjVsq6.js} +39 -39
  99. package/dist/{SaleCreatePage-C9kFmTvm-B3Y0o4CX.js.map → SaleCreatePage-DHBLmlBr-BlgjVsq6.js.map} +1 -1
  100. package/dist/{SalesPage-D18DCseD-BxktGDRQ.js → SalesPage-eF9Yr42z-BQ9FlXC3.js} +61 -61
  101. package/dist/{SalesPage-D18DCseD-BxktGDRQ.js.map → SalesPage-eF9Yr42z-BQ9FlXC3.js.map} +1 -1
  102. package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js +741 -0
  103. package/dist/SettingsPage-Cre-UE3r-9ntnLYsQ.js.map +1 -0
  104. package/dist/{ShowFlywayQuery-D1y_4A1u.js → ShowFlywayQuery-DIOUdYfG.js} +26 -19
  105. package/dist/{ShowFlywayQuery-D1y_4A1u.js.map → ShowFlywayQuery-DIOUdYfG.js.map} +1 -1
  106. package/dist/{StorageUnitsPage-7EqwuMOI-BwUso1Th.js → StorageUnitsPage-CTEVuemZ-B4osG74N.js} +253 -223
  107. package/dist/StorageUnitsPage-CTEVuemZ-B4osG74N.js.map +1 -0
  108. package/dist/{SubMenu-eEDhZUvh.js → SubMenu-OO2zhKiu.js} +5 -3
  109. package/dist/SubMenu-OO2zhKiu.js.map +1 -0
  110. package/dist/{TableDetails-BtafRxXb.js → TableDetails-Cc40dEUs.js} +272 -267
  111. package/dist/TableDetails-Cc40dEUs.js.map +1 -0
  112. package/dist/{TableList-Dpo6dO7S.js → TableList-B5tX4wII.js} +316 -312
  113. package/dist/TableList-B5tX4wII.js.map +1 -0
  114. package/dist/{TransactionsPage-DrH53pVS-BkhIGB6C.js → TransactionsPage-Zuu7sjID-B-ACzvd1.js} +195 -180
  115. package/dist/TransactionsPage-Zuu7sjID-B-ACzvd1.js.map +1 -0
  116. package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js +635 -0
  117. package/dist/TransferCreatePage-DlT0nCDj-B2SdPgYB.js.map +1 -0
  118. package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js +600 -0
  119. package/dist/TransfersPage-DqaSvHda-G2tFa5Jq.js.map +1 -0
  120. package/dist/TypeConfiguration-EaFiOzRE.js +114 -0
  121. package/dist/TypeConfiguration-EaFiOzRE.js.map +1 -0
  122. package/dist/UserList-Cf5B-o_1.js +1904 -0
  123. package/dist/UserList-Cf5B-o_1.js.map +1 -0
  124. package/dist/Users-MC7txo1V.js +43 -0
  125. package/dist/{Users-Bpc4Sazd.js.map → Users-MC7txo1V.js.map} +1 -1
  126. package/dist/VaccineEducation-T_UE57Ef.js +231 -0
  127. package/dist/VaccineEducation-T_UE57Ef.js.map +1 -0
  128. package/dist/VaccineEducation.css +1 -0
  129. package/dist/VaccineEducationConfigurator-CWc20_rv.js +50948 -0
  130. package/dist/VaccineEducationConfigurator-CWc20_rv.js.map +1 -0
  131. package/dist/VaccineEducationConfigurator.css +4 -0
  132. package/dist/VaccineEducationList-Ok7_5EFb.js +334 -0
  133. package/dist/VaccineEducationList-Ok7_5EFb.js.map +1 -0
  134. package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js +457 -0
  135. package/dist/VialsPage-LoDaUqVv-DmMXbK8j.js.map +1 -0
  136. package/dist/{constants-ClZJY2x1-MkSWn6TZ.js → constants-BTpJFQe_-CYPZIqQF.js} +166 -56
  137. package/dist/constants-BTpJFQe_-CYPZIqQF.js.map +1 -0
  138. package/dist/dashboardLayoutUtils--xUnoKPa.js +615 -0
  139. package/dist/dashboardLayoutUtils--xUnoKPa.js.map +1 -0
  140. package/dist/index-mfoqII2U.js +524 -0
  141. package/dist/index-mfoqII2U.js.map +1 -0
  142. package/dist/{index-D9YNFPn9.js → index-o8Pyt1Bt.js} +445 -439
  143. package/dist/index-o8Pyt1Bt.js.map +1 -0
  144. package/dist/index.css +1 -1
  145. package/dist/index.js +1 -1
  146. package/dist/index.lib-BySa9-Z-.js +936 -0
  147. package/dist/index.lib-BySa9-Z-.js.map +1 -0
  148. package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js +43 -0
  149. package/dist/listValueStore-5d4vNGQM-WclZ5nBG.js.map +1 -0
  150. package/package.json +5 -1
  151. package/dist/AccessRights-xrday-L1.js.map +0 -1
  152. package/dist/AddMenuConfiguration-e5BVXhmw.js +0 -8547
  153. package/dist/AddMenuConfiguration-e5BVXhmw.js.map +0 -1
  154. package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js.map +0 -1
  155. package/dist/ConditionConfig-Ddz9halE.js +0 -395
  156. package/dist/ConditionConfig-Ddz9halE.js.map +0 -1
  157. package/dist/ConditionConfig.css +0 -1
  158. package/dist/EntityManagement-CPQL6qBj.js +0 -50
  159. package/dist/EntityManagement-CPQL6qBj.js.map +0 -1
  160. package/dist/EventConfig-BmLemzX3.js +0 -26
  161. package/dist/EventConfigurations-Bzh1qWXU.js +0 -450
  162. package/dist/EventConfigurations-Bzh1qWXU.js.map +0 -1
  163. package/dist/EventsExceptionModal-B2SRrnB1.js +0 -200
  164. package/dist/EventsExceptionModal-B2SRrnB1.js.map +0 -1
  165. package/dist/EventsSkeleton-BIcPks4T.js +0 -61
  166. package/dist/EventsSkeleton-BIcPks4T.js.map +0 -1
  167. package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js +0 -79
  168. package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js.map +0 -1
  169. package/dist/FeatureMenu-DYJmDt7q.js.map +0 -1
  170. package/dist/GrantPermissionModal-BDN66Atn.js.map +0 -1
  171. package/dist/ImmunizationConfigurationBase-Di1KO3oW.js +0 -7639
  172. package/dist/ImmunizationConfigurationBase-Di1KO3oW.js.map +0 -1
  173. package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js +0 -665
  174. package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js.map +0 -1
  175. package/dist/ManageDynamicFeature-BU0I45dd.js.map +0 -1
  176. package/dist/ManageEventConfiguration-CoYcpjR9.js +0 -1085
  177. package/dist/ManageEventConfiguration-CoYcpjR9.js.map +0 -1
  178. package/dist/ManageRole-CNZBRKGU.js +0 -776
  179. package/dist/ManageRole-CNZBRKGU.js.map +0 -1
  180. package/dist/MobileAnalytics-pQoE8cG1.js +0 -16888
  181. package/dist/MobileAnalytics-pQoE8cG1.js.map +0 -1
  182. package/dist/MobileMenuManagement-Cf8IZlla.js +0 -108
  183. package/dist/MobileMenuManagement-Cf8IZlla.js.map +0 -1
  184. package/dist/MobileTypeEventConfigModal-BeveaX0C.js +0 -783
  185. package/dist/MobileTypeEventConfigModal-BeveaX0C.js.map +0 -1
  186. package/dist/NewServerManagement-Cxe0dV0O.js.map +0 -1
  187. package/dist/OtherTypeEventConfigModal-CM6VkdmY.js +0 -2046
  188. package/dist/OtherTypeEventConfigModal-CM6VkdmY.js.map +0 -1
  189. package/dist/PermissionsModal-CCYkcKlC.js.map +0 -1
  190. package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js +0 -783
  191. package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js.map +0 -1
  192. package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js.map +0 -1
  193. package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js +0 -599
  194. package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js.map +0 -1
  195. package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js +0 -1302
  196. package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js.map +0 -1
  197. package/dist/ProductsPage-CupVmOD4-D45a_hf-.js.map +0 -1
  198. package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js +0 -648
  199. package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js.map +0 -1
  200. package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js.map +0 -1
  201. package/dist/Roles-BIyiic67.js +0 -14
  202. package/dist/Roles-BIyiic67.js.map +0 -1
  203. package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js +0 -747
  204. package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js.map +0 -1
  205. package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js.map +0 -1
  206. package/dist/SubMenu-eEDhZUvh.js.map +0 -1
  207. package/dist/TableDetails-BtafRxXb.js.map +0 -1
  208. package/dist/TableList-Dpo6dO7S.js.map +0 -1
  209. package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js.map +0 -1
  210. package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js +0 -315
  211. package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js.map +0 -1
  212. package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js +0 -476
  213. package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js.map +0 -1
  214. package/dist/TypeConfiguration-3O6ABrK-.js +0 -117
  215. package/dist/TypeConfiguration-3O6ABrK-.js.map +0 -1
  216. package/dist/UserList-DgPxsnj2.js +0 -1129
  217. package/dist/UserList-DgPxsnj2.js.map +0 -1
  218. package/dist/Users-Bpc4Sazd.js +0 -41
  219. package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js +0 -321
  220. package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js.map +0 -1
  221. package/dist/constants-ClZJY2x1-MkSWn6TZ.js.map +0 -1
  222. package/dist/dashboardLayoutUtils-D1xCAxp3.js +0 -405
  223. package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +0 -1
  224. package/dist/index-D9YNFPn9.js.map +0 -1
  225. package/dist/index.lib-Dn8PMkeD.js +0 -862
  226. package/dist/index.lib-Dn8PMkeD.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacilityPicker-BXa2VF7i-Dab_Jwa5.js","sources":["../../productManagement/dist/FacilityPicker-BXa2VF7i.js"],"sourcesContent":["import { L as e, at as t, b as n } from \"./settingsStore-Df_wGo55.js\";\nimport { useEffect as r, useMemo as i, useState as a } from \"react\";\nimport { Fragment as o, jsx as s, jsxs as c } from \"react/jsx-runtime\";\nimport { Autocomplete as l, CircularProgress as u, TextField as d } from \"@mui/material\";\n//#region src/components/FacilityPicker.jsx\nfunction f({ value: f, onChange: p, label: m = \"Facility\", scope: h = \"assigned\", required: g = !1, disabled: _ = !1, error: v = !1, helperText: y = \"\", onBlur: b, size: x = \"small\", fullWidth: S = !0 }) {\n\tlet C = h === \"all\", [w, T] = a(!1), [E, D] = a([]), [O, k] = a(!1), [A, j] = a(!1), [M, N] = a(null), [P, F] = a(\"\");\n\tr(() => {\n\t\tif (!f) {\n\t\t\tN(null);\n\t\t\treturn;\n\t\t}\n\t\tif (M?.id === f) return;\n\t\tlet e = E.find((e) => e.id === f);\n\t\tif (e) {\n\t\t\tN(e);\n\t\t\treturn;\n\t\t}\n\t\tlet t = !1;\n\t\treturn (async () => {\n\t\t\ttry {\n\t\t\t\tlet e = await n([f]);\n\t\t\t\t!t && e[0] && N(e[0]);\n\t\t\t} catch {}\n\t\t})(), () => {\n\t\t\tt = !0;\n\t\t};\n\t}, [f]), r(() => {\n\t\tif (C || !w || A) return;\n\t\tlet t = !1;\n\t\treturn k(!0), (async () => {\n\t\t\ttry {\n\t\t\t\tlet n = await e();\n\t\t\t\tt || D(n);\n\t\t\t} catch {\n\t\t\t\tt || D([]);\n\t\t\t} finally {\n\t\t\t\tt || (k(!1), j(!0));\n\t\t\t}\n\t\t})(), () => {\n\t\t\tt = !0;\n\t\t};\n\t}, [\n\t\tC,\n\t\tw,\n\t\tA\n\t]), r(() => {\n\t\tif (!C || !w) return;\n\t\tlet e = !1;\n\t\tk(!0);\n\t\tlet n = setTimeout(() => {\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tlet n = await t(P);\n\t\t\t\t\te || D(n);\n\t\t\t\t} catch {\n\t\t\t\t\te || D([]);\n\t\t\t\t} finally {\n\t\t\t\t\te || (k(!1), j(!0));\n\t\t\t\t}\n\t\t\t})();\n\t\t}, 300);\n\t\treturn () => {\n\t\t\te = !0, clearTimeout(n);\n\t\t};\n\t}, [\n\t\tC,\n\t\tw,\n\t\tP\n\t]);\n\tlet I = i(() => !M || E.some((e) => e.id === M.id) ? E : [M, ...E], [E, M]), L = O ? \"Loading…\" : A && E.length === 0 ? C ? \"No active facilities match\" : \"No facilities assigned to your account\" : \"No matches\", R = C ? \"Any active facility can be chosen. Type to search.\" : \"Only facilities assigned to your account are shown. Type to filter.\";\n\treturn /* @__PURE__ */ s(l, {\n\t\tsize: x,\n\t\tfullWidth: S,\n\t\tdisabled: _,\n\t\topen: w,\n\t\tonOpen: () => T(!0),\n\t\tonClose: () => T(!1),\n\t\tvalue: M,\n\t\tisOptionEqualToValue: (e, t) => e?.id === t?.id,\n\t\tgetOptionLabel: (e) => e?.name ?? \"\",\n\t\toptions: I,\n\t\tloading: O,\n\t\tfilterOptions: C ? (e) => e : void 0,\n\t\tonInputChange: C ? (e, t, n) => {\n\t\t\tn === \"input\" && F(t);\n\t\t} : void 0,\n\t\tonChange: (e, t) => {\n\t\t\tN(t ?? null), p?.(t?.id ?? \"\");\n\t\t},\n\t\tnoOptionsText: L,\n\t\trenderInput: (e) => /* @__PURE__ */ s(d, {\n\t\t\t...e,\n\t\t\trequired: g,\n\t\t\tlabel: m,\n\t\t\terror: v,\n\t\t\thelperText: y || R,\n\t\t\tonBlur: b,\n\t\t\tInputProps: {\n\t\t\t\t...e.InputProps,\n\t\t\t\tendAdornment: /* @__PURE__ */ c(o, { children: [O ? /* @__PURE__ */ s(u, {\n\t\t\t\t\tcolor: \"inherit\",\n\t\t\t\t\tsize: 16\n\t\t\t\t}) : null, e.InputProps.endAdornment] })\n\t\t\t}\n\t\t})\n\t});\n}\n//#endregion\nexport { f as t };\n\n//# sourceMappingURL=FacilityPicker-BXa2VF7i.js.map"],"names":["f","p","m","h","g","_","v","y","b","x","S","C","w","T","a","E","D","O","k","A","j","M","N","P","F","r","e","n","t","I","i","L","R","s","l","d","c","o","u"],"mappings":";;;;AAKA,SAASA,EAAE,EAAE,OAAOA,GAAG,UAAUC,GAAG,OAAOC,IAAI,YAAY,OAAOC,IAAI,YAAY,UAAUC,IAAI,IAAI,UAAUC,IAAI,IAAI,OAAOC,IAAI,IAAI,YAAYC,IAAI,IAAI,QAAQC,GAAG,MAAMC,IAAI,SAAS,WAAWC,IAAI,MAAM;AAC3M,MAAIC,IAAIR,MAAM,OAAO,CAACS,GAAGC,CAAC,IAAIC,EAAE,EAAE,GAAG,CAACC,GAAGC,CAAC,IAAIF,EAAE,CAAA,CAAE,GAAG,CAACG,GAAGC,CAAC,IAAIJ,EAAE,EAAE,GAAG,CAACK,GAAGC,CAAC,IAAIN,EAAE,EAAE,GAAG,CAACO,GAAGC,CAAC,IAAIR,EAAE,IAAI,GAAG,CAACS,GAAGC,CAAC,IAAIV,EAAE,EAAE;AACpHW,EAAAA,EAAE,MAAM;AACP,QAAI,CAACzB,GAAG;AACP,MAAAsB,EAAE,IAAI;AACN;AAAA,IACD;AACA,SAAID,KAAA,gBAAAA,EAAG,QAAOrB,EAAG;AACjB,QAAI,IAAIe,EAAE,KAAK,CAACW,MAAMA,EAAE,OAAO1B,CAAC;AAChC,QAAI,GAAG;AACN,MAAAsB,EAAE,CAAC;AACH;AAAA,IACD;AACA,QAAI,IAAI;AACR,YAAQ,YAAY;AACnB,UAAI;AACH,YAAII,IAAI,MAAMC,EAAE,CAAC3B,CAAC,CAAC;AACnB,SAAC,KAAK0B,EAAE,CAAC,KAAKJ,EAAEI,EAAE,CAAC,CAAC;AAAA,MACrB,QAAQ;AAAA,MAAC;AAAA,IACV,GAAC,GAAK,MAAM;AACX,UAAI;AAAA,IACL;AAAA,EACD,GAAG,CAAC1B,CAAC,CAAC,GAAGyB,EAAE,MAAM;AAChB,QAAId,KAAK,CAACC,KAAKO,EAAG;AAClB,QAAIS,IAAI;AACR,WAAOV,EAAE,EAAE,IAAI,YAAY;AAC1B,UAAI;AACH,YAAIS,IAAI,MAAMD,EAAC;AACf,QAAAE,KAAKZ,EAAEW,CAAC;AAAA,MACT,QAAQ;AACP,QAAAC,KAAKZ,EAAE,EAAE;AAAA,MACV,UAAC;AACA,QAAAY,MAAMV,EAAE,EAAE,GAAGE,EAAE,EAAE;AAAA,MAClB;AAAA,IACD,GAAC,GAAK,MAAM;AACX,MAAAQ,IAAI;AAAA,IACL;AAAA,EACD,GAAG;AAAA,IACFjB;AAAAA,IACAC;AAAA,IACAO;AAAA,EACF,CAAE,GAAGM,EAAE,MAAM;AACX,QAAI,CAACd,KAAK,CAACC,EAAG;AACd,QAAI,IAAI;AACR,IAAAM,EAAE,EAAE;AACJ,QAAIS,IAAI,WAAW,MAAM;AACxB,OAAC,YAAY;AACZ,YAAI;AACH,cAAI,IAAI,MAAMC,EAAEL,CAAC;AACjB,eAAKP,EAAE,CAAC;AAAA,QACT,QAAQ;AACP,eAAKA,EAAE,EAAE;AAAA,QACV,UAAC;AACA,gBAAME,EAAE,EAAE,GAAGE,EAAE,EAAE;AAAA,QAClB;AAAA,MACD,GAAC;AAAA,IACF,GAAG,GAAG;AACN,WAAO,MAAM;AACZ,UAAI,IAAI,aAAaO,CAAC;AAAA,IACvB;AAAA,EACD,GAAG;AAAA,IACFhB;AAAAA,IACAC;AAAA,IACAW;AAAA,EACF,CAAE;AACD,MAAIM,IAAIC,EAAE,MAAM,CAACT,KAAKN,EAAE,KAAK,CAAC,MAAM,EAAE,OAAOM,EAAE,EAAE,IAAIN,IAAI,CAACM,GAAG,GAAGN,CAAC,GAAG,CAACA,GAAGM,CAAC,CAAC,GAAGU,IAAId,IAAI,aAAaE,KAAKJ,EAAE,WAAW,IAAIJ,IAAI,+BAA+B,2CAA2C,cAAcqB,IAAIrB,IAAI,uDAAuD;AACnR,SAAuBsB,gBAAAA,EAAEC,GAAG;AAAA,IAC3B,MAAMzB;AAAAA,IACN,WAAWC;AAAAA,IACX,UAAUL;AAAA,IACV,MAAMO;AAAA,IACN,QAAQ,MAAMC,EAAE,EAAE;AAAA,IAClB,SAAS,MAAMA,EAAE,EAAE;AAAA,IACnB,OAAOQ;AAAA,IACP,sBAAsB,CAAC,GAAG,OAAM,uBAAG,SAAO,uBAAG;AAAA,IAC7C,gBAAgB,CAAC,OAAM,uBAAG,SAAQ;AAAA,IAClC,SAASQ;AAAA,IACT,SAASZ;AAAA,IACT,eAAeN,IAAI,CAAC,MAAM,IAAI;AAAA,IAC9B,eAAeA,IAAI,CAAC,GAAG,GAAG,MAAM;AAC/B,YAAM,WAAWa,EAAE,CAAC;AAAA,IACrB,IAAI;AAAA,IACJ,UAAU,CAAC,GAAG,MAAM;AACnB,MAAAF,EAAE,KAAK,IAAI,GAAGrB,KAAA,QAAAA,GAAI,uBAAG,OAAM;AAAA,IAC5B;AAAA,IACA,eAAe8B;AAAA,IACf,aAAa,CAAC,MAAsBE,gBAAAA,EAAEE,GAAG;AAAA,MACxC,GAAG;AAAA,MACH,UAAU/B;AAAA,MACV,OAAOF;AAAA,MACP,OAAOI;AAAA,MACP,YAAYC,KAAKyB;AAAA,MACjB,QAAQxB;AAAA,MACR,YAAY;AAAA,QACX,GAAG,EAAE;AAAA,QACL,cAA8B4B,gBAAAA,EAAEC,GAAG,EAAE,UAAU,CAACpB,IAAoBgB,gBAAAA,EAAEK,GAAG;AAAA,UACxE,OAAO;AAAA,UACP,MAAM;AAAA,QACX,CAAK,IAAI,MAAM,EAAE,WAAW,YAAY,EAAC,CAAE;AAAA,MAC3C;AAAA,IACA,CAAG;AAAA,EACH,CAAE;AACF;"}
@@ -61,7 +61,7 @@ ne.propTypes = {
61
61
  children: b.any,
62
62
  isLoading: b.any
63
63
  };
64
- const Me = ae(() => import("./AccessRights-xrday-L1.js")), Fe = ae(() => import("./SubMenu-eEDhZUvh.js")), D = (n) => n ? n.length <= 4 && !/[\s_-]/.test(n) ? n.toUpperCase() : n.split(/[\s_-]+/).map((d) => d.charAt(0).toUpperCase() + d.slice(1)).join(" ") : "";
64
+ const Me = ae(() => import("./AccessRights-DBjTQA1-.js")), Fe = ae(() => import("./SubMenu-OO2zhKiu.js")), D = (n) => n ? n.length <= 4 && !/[\s_-]/.test(n) ? n.toUpperCase() : n.split(/[\s_-]+/).map((d) => d.charAt(0).toUpperCase() + d.slice(1)).join(" ") : "";
65
65
  function Re() {
66
66
  const n = we(), { getCachedData: d } = Ie(), [u, $] = I([]), [N, G] = Ne(), m = y((e) => {
67
67
  var t;
@@ -209,11 +209,15 @@ function Re() {
209
209
  i
210
210
  ]
211
211
  ), me = _.hasCheckRights(
212
- i == null ? void 0 : i["update.manage.featurelist"]
212
+ i == null ? void 0 : i["update.manage.featurelist"],
213
+ void 0,
214
+ !0
213
215
  ), pe = _.hasCheckRights(
214
- i == null ? void 0 : i["create.manage.featurelist"]
216
+ i == null ? void 0 : i["create.manage.featurelist"],
217
+ void 0,
218
+ !0
215
219
  );
216
- return !w && i !== null && !_.hasCheckRights(i == null ? void 0 : i["view.manage.featurelist"]) ? /* @__PURE__ */ a(
220
+ return !w && i !== null && !_.hasCheckRights(i == null ? void 0 : i["view.manage.featurelist"], void 0, !0) ? /* @__PURE__ */ a(
217
221
  s,
218
222
  {
219
223
  sx: {
@@ -518,4 +522,4 @@ export {
518
522
  Ye as F,
519
523
  re as S
520
524
  };
521
- //# sourceMappingURL=FeatureMenu-DYJmDt7q.js.map
525
+ //# sourceMappingURL=FeatureMenu-Kc73yPHH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureMenu-Kc73yPHH.js","sources":["../src/views/Features/Skeletons/FeatureSkeletons.jsx","../src/views/Features/FeatureMenu.jsx"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\n/**\n * Skeleton block style shared by every placeholder in this file.\n * Matches the app-wide convention: pulsing neutral block, small radius.\n */\nconst BLOCK = \"bg-gray-300 animate-pulse rounded-sm\";\n\nexport const FeatureMenuSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children ?? null;\n }\n if (!isLoading) return children ?? null;\n return (\n <div className=\"flex flex-col gap-6\" aria-busy=\"true\">\n {/* title + subtitle + actions */}\n <div className=\"flex flex-row flex-wrap justify-between gap-4\">\n <div className=\"flex flex-col gap-2\">\n <div className={`${BLOCK} h-[28px] w-[220px]`}></div>\n <div className={`${BLOCK} h-[16px] w-[340px] max-w-full`}></div>\n </div>\n <div className=\"flex flex-row gap-2 items-start\">\n <div className={`${BLOCK} h-[32px] w-[150px]`}></div>\n <div className={`${BLOCK} h-[32px] w-[120px]`}></div>\n </div>\n </div>\n {/* tab strip */}\n <div className=\"flex flex-row flex-wrap gap-2\">\n <div className={`${BLOCK} h-[36px] w-[85px]`}></div>\n <div className={`${BLOCK} h-[36px] w-[85px]`}></div>\n <div className={`${BLOCK} h-[36px] w-[85px]`}></div>\n <div className={`${BLOCK} h-[36px] w-[85px]`}></div>\n <div className={`${BLOCK} h-[36px] w-[85px]`}></div>\n </div>\n </div>\n );\n};\n\nFeatureMenuSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const ManageFeatureSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children ?? null;\n }\n if (!isLoading) return children ?? null;\n\n return (\n <div className=\"mt-8 ml-4\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[150px] h-[35px]\"></div>\n <div className=\"flex flex-col gap-4 my-3\">\n <div className=\"flex justify-between w-[870px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[520px] h-[40px]\"></div>\n </div>\n <div className=\"flex justify-between w-[870px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[520px] h-[40px]\"></div>\n </div>\n <div className=\"flex justify-between w-[870px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[200px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[30px] h-[40px]\"></div>\n </div>\n <div className=\"flex justify-between w-[870px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[520px] h-[40px] ml-8\"></div>\n </div>\n </div>\n <div className=\"flex justify-end gap-5 m-7\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[64px] h-[40px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[64px] h-[40px]\"></div>\n </div>\n </div>\n );\n};\n\nManageFeatureSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\n/**\n * Master pane placeholder — header bar, search box, then a run of list rows,\n * sized to approximate the real sub-menu list so the swap doesn't jump.\n */\nexport const SubMenuSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children ?? null;\n }\n if (!isLoading) return children ?? null;\n\n return (\n <div className=\"w-full flex flex-col gap-2 p-3\" aria-busy=\"true\">\n <div className={`${BLOCK} h-[20px] w-[140px]`}></div>\n <div className={`${BLOCK} h-[38px] w-full`}></div>\n <div className=\"flex flex-col gap-1.5 pt-1\">\n {Array.from({ length: 7 }).map((_, index) => (\n <div key={index} className={`${BLOCK} h-[36px] w-full`}></div>\n ))}\n </div>\n </div>\n );\n};\n\nSubMenuSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\n/**\n * Detail pane placeholder — toolbar row, then a stack of collapsed\n * role/user rows matching the accordion list underneath.\n */\nexport const AccessRightsSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children ?? null;\n }\n if (!isLoading) return children ?? null;\n\n return (\n <div className=\"w-full flex flex-col gap-3 p-3\" aria-busy=\"true\">\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-center\">\n <div className={`${BLOCK} h-[38px] w-full sm:w-[220px]`}></div>\n <div className={`${BLOCK} h-[38px] w-full sm:flex-1`}></div>\n <div className={`${BLOCK} h-[38px] w-full sm:w-[90px]`}></div>\n </div>\n <div className=\"flex flex-col gap-1.5\">\n {Array.from({ length: 5 }).map((_, index) => (\n <div key={index} className={`${BLOCK} h-[52px] w-full`}></div>\n ))}\n </div>\n </div>\n );\n};\n\nAccessRightsSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import React, {\n lazy,\n Suspense,\n useEffect,\n useMemo,\n useRef,\n useState,\n startTransition,\n useCallback,\n} from \"react\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { getFeatureName } from \"../../services/Features\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nconst AccessRights = lazy(() => import(\"./AccessRights\"));\nconst SubMenu = lazy(() => import(\"./SubMenu\"));\nimport { Box, Button, Paper, Typography } from \"@mui/material\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate, useSearchParams } from \"react-router-dom\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport SegmentedTabs from \"@/views/custom-components/SegmentedTabs\";\nimport { featureModuleIcon } from \"@/common/constants/FeatureModuleIcons\";\nimport {\n AccessRightsSkeleton,\n FeatureMenuSkeleton,\n SubMenuSkeleton,\n} from \"./Skeletons/FeatureSkeletons\";\nimport {\n setSubMenuId,\n setSubMenuGroupName,\n setSubMenuFeatureVal,\n} from \"@/store/reducers/FeatureReducer\";\nimport { getAssignedFeatures } from \"@/utils/feature\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport useCaching from \"@/hooks/useCaching\";\n\n/**\n * Turns a raw feature-module key into a human label. Short keys are domain\n * acronyms (`fhs`, `ncd`, `mch`) and stay upper-cased; longer keys are\n * title-cased. Tab labels are never shouted — see the MEDplat tab rules.\n * @param {string} key - The feature module key from `user.features`.\n * @returns {string} The label to render on the tab.\n */\nconst formatModuleLabel = (key) => {\n if (!key) return \"\";\n if (key.length <= 4 && !/[\\s_-]/.test(key)) return key.toUpperCase();\n return key\n .split(/[\\s_-]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n};\n\n/**\n * The `FeatureMenu` component renders a menu or list of features in the application.\n * @module FeatureMenu\n * @returns {JSX.Element} The rendered `FeatureMenu` component.\n */\n\nexport default function FeatureMenu() {\n const dispatch = useDispatch();\n const { getCachedData } = useCaching();\n const [Data, setData] = useState([]);\n const [searchParams, setSearchParams] = useSearchParams();\n const subMenuId = useSelector((state) => {\n return state?.FeatureReducer?.subMenuId;\n });\n const subMenuGroupName = useSelector(\n (state) => state?.FeatureReducer?.subMenuGroupName,\n );\n const subMenuFeatureVal = useSelector(\n (state) => state?.FeatureReducer?.subMenuFeatureVal,\n );\n // Read inside the module-load effect without making the selection a\n // dependency of it — that would refetch the whole list every time the user\n // picks a different sub menu.\n const subMenuIdRef = useRef(subMenuId);\n subMenuIdRef.current = subMenuId;\n\n /**\n * Clears the selected menu config so the detail pane shows its empty state\n * instead of a config belonging to a module that is no longer active.\n * @returns {void}\n */\n const clearSelection = useCallback(() => {\n dispatch(setSubMenuId(null));\n dispatch(setSubMenuGroupName(null));\n dispatch(setSubMenuFeatureVal(null));\n }, [dispatch]);\n\n const navigate = useNavigate();\n const { user } = useSelector((state) => state.Authenticate);\n const { translate } = useTranslateProvider();\n const [isLoading, setIsLoading] = useState(false);\n const trackEvent = useTrackEvent();\n const [isNewAPI, setIsNewAPI] = useState({});\n const [rights, setRights] = useState(null);\n const features = user?.features || {};\n const featureNames = useMemo(\n () => Object.keys(features).filter((key) => key !== \"mch\"),\n [features],\n );\n\n // The active module lives in the URL (`?module=fhs`) so a refresh, a browser\n // back, or a shared link lands on the same tab instead of resetting to the first.\n const moduleParam = searchParams.get(\"module\");\n const selectedId = useMemo(() => {\n const index = featureNames.indexOf(moduleParam);\n return index >= 0 ? index : 0;\n }, [featureNames, moduleParam]);\n const selectedModule = featureNames[selectedId];\n\n // The menu config currently open in the detail pane, so the pane header can\n // name exactly which one's rights are being edited.\n const selectedSubMenu = useMemo(\n () => Data?.find((item) => item?.id === subMenuId) || null,\n [Data, subMenuId],\n );\n\n // Module › group › sub group › menu name. Non-navigational — this is a\n // context label identifying the record, not a breadcrumb trail to click.\n const menuConfigTrail = useMemo(\n () =>\n selectedSubMenu\n ? [\n formatModuleLabel(selectedModule),\n selectedSubMenu.groupName,\n selectedSubMenu.subGroupName,\n selectedSubMenu.name,\n ].filter(Boolean)\n : [],\n [selectedSubMenu, selectedModule],\n );\n\n const moduleTabs = useMemo(\n () =>\n featureNames.map((feat, index) => ({\n value: feat,\n label: formatModuleLabel(feat),\n icon: featureModuleIcon(feat),\n id: `feature-tab-${index}`,\n dataTestId: `featuremenu-button-${index}`,\n })),\n [featureNames],\n );\n\n // 🧠 handle tab switch\n const handleTabChange = useCallback(\n (event, nextModule) => {\n if (!nextModule) return;\n setSearchParams(\n (prev) => {\n const next = new URLSearchParams(prev);\n next.set(\"module\", nextModule);\n return next;\n },\n { replace: true },\n );\n },\n [setSearchParams],\n );\n\n /**\n * Navigates to the '/ui/addfeature' route when called.\n * @function handleClick\n * @returns {void} This function does not return a value.\n */\n\n const handleFeature = useCallback(() => {\n trackEvent(\"button_click\", {\n button_name: \"featuremenu-add-button\",\n button_type: \"navigate\",\n button_id: \"featuremenu-add-button\",\n });\n navigate(\"addDynamicFeature\");\n }, [navigate, trackEvent]);\n\n // 📦 fetch feature data\n /**\n * Effect hook that runs when `selectedId` changes to load and set initial feature data.\n * @effect\n * @returns {void} This effect does not return a value.\n */\n useEffect(() => {\n async function getFeatures() {\n // The user's rights for this screen don't change mid-session; without a\n // cache this fires on every visit to Features.\n const data = await getCachedData({\n cacheKey: [\"assignedFeatures\", \"techo.manage.menu\"],\n fetchFn: async () =>\n (await getAssignedFeatures(\"techo.manage.menu\")).data,\n staleTime: 5 * 60 * 1000,\n cacheTime: 30 * 60 * 1000,\n });\n const parsedRights = JSON.parse(data);\n setRights(parsedRights);\n }\n getFeatures();\n }, []);\n\n useEffect(() => {\n const loadInitialData = async () => {\n if (!featureNames.length || selectedId >= featureNames.length) return;\n\n try {\n setIsLoading(true);\n const { data } = await getFeatureName(featureNames[selectedId]);\n const filterData = data.sort((a, b) => a.name?.localeCompare(b.name));\n startTransition(() => {\n setData(filterData);\n // The selected menu config lives in Redux, so it outlives a module\n // switch. Without this the detail pane keeps rendering the previous\n // module's access rights even though that config isn't in the list\n // any more. Drop the selection whenever it doesn't belong to the\n // module that just loaded — the pane then falls back to its\n // \"No sub menu selected\" state.\n if (\n subMenuIdRef.current &&\n !filterData.some((item) => item?.id === subMenuIdRef.current)\n ) {\n clearSelection();\n }\n setIsLoading(false);\n });\n } catch (error) {\n showToast({\n message: `Error : ${error?.response?.data?.message}`,\n type: \"error\",\n });\n // The module did change, so keeping the previous module's list and\n // selection on screen would misrepresent which module is active.\n startTransition(() => {\n setData([]);\n clearSelection();\n setIsLoading(false);\n });\n }\n };\n\n loadInitialData();\n }, [selectedId, featureNames, clearSelection]);\n\n // 🧠 Memoized SubMenu\n const SubMenuContent = useMemo(\n () => (\n <Suspense fallback={<SubMenuSkeleton isLoading />}>\n <SubMenu\n data-testid=\"featuremenu-submenu\"\n data={Data}\n subMenuId={subMenuId}\n setSubMenuId={(id) => {\n dispatch(setSubMenuId(id));\n }}\n setSubMenuGroupName={(name) => {\n dispatch(setSubMenuGroupName(name));\n }}\n setSubMenuFeatureVal={(val) => {\n dispatch(setSubMenuFeatureVal(val));\n }}\n type={featureNames[selectedId]}\n isLoading={isLoading}\n isNewAPI={isNewAPI}\n subMenuGroupName={subMenuGroupName}\n rights={rights}\n />\n </Suspense>\n ),\n [Data, subMenuId, selectedId, isLoading, featureNames, isNewAPI, rights],\n );\n\n // 🧠 Memoized AccessRights\n const AccessRightsContent = useMemo(\n () => (\n <Suspense fallback={<AccessRightsSkeleton isLoading />}>\n <AccessRights\n data-testid=\"featuremenu-access-rights\"\n subMenuId={subMenuId}\n subMenuGroupName={subMenuGroupName}\n subMenuFeatureVal={subMenuFeatureVal}\n selectedTab={featureNames[selectedId]}\n parentLoading={isLoading}\n onNewAPIChange={setIsNewAPI}\n rights={rights}\n />\n </Suspense>\n ),\n // `selectedTab`, `subMenuGroupName` and `subMenuFeatureVal` were read but\n // not declared, so this could hand AccessRights a menu config from one\n // module labelled with another module's tab.\n [\n subMenuId,\n subMenuGroupName,\n subMenuFeatureVal,\n featureNames,\n selectedId,\n isLoading,\n rights,\n ],\n );\n\n const canManageGroups = GeneralUtil.hasCheckRights(\n rights?.[\"update.manage.featurelist\"],\n undefined,\n true,\n );\n const canCreateFeature = GeneralUtil.hasCheckRights(\n rights?.[\"create.manage.featurelist\"],\n undefined,\n true,\n );\n\n return !isLoading &&\n rights !== null &&\n !GeneralUtil.hasCheckRights(rights?.[\"view.manage.featurelist\"], undefined, true) ? (\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n minHeight: \"70vh\",\n }}\n >\n <Paper\n elevation={0}\n sx={{\n p: { xs: 3, md: 5 },\n maxWidth: 520,\n textAlign: \"center\",\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.cardRadius}px`,\n backgroundColor: \"background.paper\",\n }}\n >\n <Box sx={{ color: \"text.disabled\", mb: 2 }}>\n <FontAwesomeIcons iconName=\"faLock\" size=\"2x\" />\n </Box>\n <Typography\n variant=\"h6\"\n component=\"h1\"\n sx={{ fontWeight: 700, mb: 1, color: \"text.primary\" }}\n >\n {translate(\"You don't have permission to view features\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Ask an administrator to grant you access to the feature list.\",\n )}\n </Typography>\n </Paper>\n </Box>\n ) : (\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\n mt: 2,\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 <FeatureMenuSkeleton isLoading={isLoading}>\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2.5 }}>\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(\"Feature Access\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {selectedModule\n ? `${translate(\"Manage access for the\")} ${formatModuleLabel(selectedModule)} ${translate(\"module. Choose a sub menu, then grant or revoke its rights for roles and users.\")}`\n : translate(\n \"Pick a module, choose one of its sub menus, then grant or revoke that sub menu's rights for roles and users.\",\n )}\n </Typography>\n </Box>\n\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n {canManageGroups && (\n <Button\n size=\"small\"\n variant=\"outlined\"\n onClick={() => navigate(\"/ui/medplat/report/all/groups\")}\n startIcon={<FontAwesomeIcons iconName=\"faLayerGroup\" />}\n >\n {translate(\"Manage\")} {translate(\"Menu\")}{\" \"}\n {translate(\"Group\")}\n </Button>\n )}\n {canCreateFeature && (\n <Button\n size=\"small\"\n data-testid=\"featuremenu-add-button\"\n variant=\"contained\"\n onClick={handleFeature}\n startIcon={<FontAwesomeIcons iconName=\"faPlus\" />}\n >\n {translate(\"Add\")} {translate(\"Feature\")}\n </Button>\n )}\n </Box>\n </Box>\n\n {/* ── Module tabs ── */}\n <SegmentedTabs\n tabs={moduleTabs}\n value={selectedModule}\n onChange={handleTabChange}\n ariaLabel={translate(\"Feature modules\")}\n panelId=\"feature-tabpanel\"\n dataTestId=\"featuremenu-tabs\"\n // Module names are short and there are only a handful of them,\n // so every tab can carry its label. Hover-to-reveal made the\n // unselected modules a row of unlabelled icons.\n collapseLabels={false}\n // With labels always on, the rail is wide enough to run past the\n // pane on smaller screens. Wrapping to a second row reads better\n // than a horizontal scrollbar for a control this short.\n sx={{ flexWrap: \"wrap\" }}\n />\n </Box>\n </FeatureMenuSkeleton>\n\n {/* ── Master (sub menu list) + detail (access rights) ── */}\n <Box\n role=\"tabpanel\"\n id=\"feature-tabpanel\"\n aria-labelledby={`feature-tab-${selectedId}`}\n sx={{\n display: \"flex\",\n flexDirection: { xs: \"column\", md: \"row\" },\n alignItems: \"stretch\",\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n overflow: \"hidden\",\n minHeight: 420,\n }}\n >\n <Box\n sx={{\n width: { xs: \"100%\", md: 280, lg: 320 },\n flexShrink: 0,\n borderBottom: { xs: \"1px solid\", md: \"none\" },\n borderRight: { xs: \"none\", md: \"1px solid\" },\n borderColor: \"divider\",\n display: \"flex\",\n }}\n >\n {SubMenuContent}\n </Box>\n\n <Box\n sx={{\n flex: 1,\n minWidth: 0,\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 0.25,\n px: 2,\n py: 1.5,\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\n <Box sx={{ color: \"text.secondary\", display: \"flex\" }}>\n <FontAwesomeIcons iconName=\"faGear\" />\n </Box>\n <Typography variant=\"body2\" sx={{ fontWeight: 700 }}>\n {translate(\"Access Rights\")}\n </Typography>\n </Box>\n\n {menuConfigTrail.length > 0 && (\n <Box\n data-testid=\"featuremenu-selected-menu-config\"\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: 0.75,\n pl: 3,\n minWidth: 0,\n }}\n >\n {menuConfigTrail.map((part, index) => {\n const isLast = index === menuConfigTrail.length - 1;\n return (\n <React.Fragment key={`${part}-${index}`}>\n {index > 0 && (\n <Box\n component=\"span\"\n aria-hidden=\"true\"\n sx={{ color: \"text.disabled\", fontSize: \"0.75rem\" }}\n >\n ›\n </Box>\n )}\n <Typography\n variant=\"caption\"\n sx={{\n color: isLast ? \"text.primary\" : \"text.secondary\",\n fontWeight: isLast ? 700 : 400,\n // Feature names have no spaces to break on, so\n // without this a long one overflows the trail.\n overflowWrap: \"anywhere\",\n }}\n >\n {part}\n </Typography>\n </React.Fragment>\n );\n })}\n {selectedSubMenu?.navigationState && (\n <Typography\n variant=\"caption\"\n sx={{\n ml: 0.5,\n px: 0.75,\n borderRadius: (t) => `${t.shape.chipRadius}px`,\n backgroundColor: \"action.hover\",\n color: \"text.secondary\",\n fontFamily: \"monospace\",\n overflowWrap: \"anywhere\",\n }}\n >\n {selectedSubMenu.navigationState}\n </Typography>\n )}\n </Box>\n )}\n </Box>\n\n {subMenuId ? (\n AccessRightsContent\n ) : (\n <Box\n data-testid=\"featuremenu-no-feature-selected\"\n sx={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n gap: 1,\n p: 4,\n }}\n >\n <Box sx={{ color: \"text.disabled\" }}>\n <FontAwesomeIcons iconName=\"faListCheck\" size=\"2x\" />\n </Box>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 700 }}>\n {translate(\"No sub menu selected\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Select a sub menu from the list to view and manage its access rights.\",\n )}\n </Typography>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n </Paper>\n );\n}\n"],"names":["BLOCK","FeatureMenuSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","SubMenuSkeleton","_","index","AccessRightsSkeleton","AccessRights","lazy","SubMenu","formatModuleLabel","key","word","FeatureMenu","dispatch","useDispatch","getCachedData","useCaching","Data","setData","useState","searchParams","setSearchParams","useSearchParams","subMenuId","state","_a","subMenuGroupName","subMenuFeatureVal","subMenuIdRef","useRef","clearSelection","useCallback","setSubMenuId","setSubMenuGroupName","setSubMenuFeatureVal","navigate","useNavigate","user","translate","useTranslateProvider","setIsLoading","trackEvent","useTrackEvent","isNewAPI","setIsNewAPI","rights","setRights","features","featureNames","useMemo","moduleParam","selectedId","selectedModule","selectedSubMenu","item","menuConfigTrail","moduleTabs","feat","featureModuleIcon","handleTabChange","event","nextModule","prev","next","handleFeature","useEffect","getFeatures","data","getAssignedFeatures","parsedRights","getFeatureName","filterData","a","b","startTransition","error","showToast","_b","SubMenuContent","Suspense","id","name","val","AccessRightsContent","canManageGroups","GeneralUtil","canCreateFeature","Box","Paper","t","FontAwesomeIcons","Typography","Button","SegmentedTabs","part","isLast","React"],"mappings":"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"}
@@ -1,34 +1,34 @@
1
1
  import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
- import { useState as y, useCallback as C, useEffect as R } from "react";
2
+ import { useState as y, useCallback as R, useEffect as C } from "react";
3
3
  import { useNavigate as w } from "react-router";
4
- import { Box as u, Stack as c, Button as o, Grid as m, Skeleton as F, Card as S, Typography as l, CardContent as k, Chip as p, Divider as A, CardActions as z } from "@mui/material";
4
+ import { Box as u, Stack as c, Button as o, Grid as m, Skeleton as F, Card as I, Typography as l, CardContent as k, Chip as p, Divider as A, CardActions as z } from "@mui/material";
5
5
  import b from "@mui/icons-material/AddRounded";
6
6
  import H from "@mui/icons-material/RefreshRounded";
7
7
  import T from "@mui/icons-material/SyncRounded";
8
8
  import N from "@mui/icons-material/InboxRounded";
9
9
  import D from "@mui/icons-material/OpenInNewRounded";
10
- import v from "@mui/icons-material/DnsRounded";
10
+ import S from "@mui/icons-material/DnsRounded";
11
11
  import L from "@mui/icons-material/LockRounded";
12
- import O from "@mui/icons-material/LockOpenRounded";
13
- import W from "moment";
14
- import { showToast as E } from "@/common/toaster/toaster";
12
+ import W from "@mui/icons-material/LockOpenRounded";
13
+ import E from "moment";
14
+ import { showToast as O } from "@/common/toaster/toaster";
15
15
  import { u as $, r as j, F as G, a as P, S as V, M as B } from "./permissions-DEWACxJN.js";
16
16
  import { S as M } from "./SyncDialog-BRGpHOE4.js";
17
17
  function U({ server: n, onOpen: a, onSync: d, onStaging: f, canManage: g }) {
18
18
  var r;
19
19
  const s = n.authType && n.authType !== "NONE";
20
- return /* @__PURE__ */ i(S, { variant: "outlined", sx: { height: "100%", borderRadius: 2, display: "flex", flexDirection: "column" }, children: [
20
+ return /* @__PURE__ */ i(I, { variant: "outlined", sx: { height: "100%", borderRadius: 2, display: "flex", flexDirection: "column" }, children: [
21
21
  /* @__PURE__ */ i(k, { sx: { flexGrow: 1 }, children: [
22
22
  /* @__PURE__ */ i(c, { direction: "row", justifyContent: "space-between", alignItems: "flex-start", children: [
23
23
  /* @__PURE__ */ i(c, { direction: "row", spacing: 1, alignItems: "center", children: [
24
- /* @__PURE__ */ e(u, { sx: { width: 36, height: 36, borderRadius: 1.5, bgcolor: "primary.main", color: "#fff", display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ e(v, { fontSize: "small" }) }),
24
+ /* @__PURE__ */ e(u, { sx: { width: 36, height: 36, borderRadius: 1.5, bgcolor: "primary.main", color: "#fff", display: "flex", alignItems: "center", justifyContent: "center" }, children: /* @__PURE__ */ e(S, { fontSize: "small" }) }),
25
25
  /* @__PURE__ */ i(u, { children: [
26
26
  /* @__PURE__ */ e(l, { variant: "subtitle1", sx: { fontWeight: 800, lineHeight: 1.1 }, children: n.name }),
27
27
  /* @__PURE__ */ e(
28
28
  p,
29
29
  {
30
30
  size: "small",
31
- icon: s ? /* @__PURE__ */ e(L, {}) : /* @__PURE__ */ e(O, {}),
31
+ icon: s ? /* @__PURE__ */ e(L, {}) : /* @__PURE__ */ e(W, {}),
32
32
  label: s ? n.authType : "Public",
33
33
  variant: "outlined",
34
34
  sx: { height: 20, mt: 0.5 }
@@ -47,7 +47,7 @@ function U({ server: n, onOpen: a, onSync: d, onStaging: f, canManage: g }) {
47
47
  ] }) : /* @__PURE__ */ e(l, { variant: "caption", color: "text.disabled", children: "Capability not discovered" }),
48
48
  n.capabilitySyncedAt && /* @__PURE__ */ i(l, { variant: "caption", color: "text.secondary", display: "block", sx: { mt: 1 }, children: [
49
49
  "synced ",
50
- W(n.capabilitySyncedAt).fromNow()
50
+ E(n.capabilitySyncedAt).fromNow()
51
51
  ] })
52
52
  ] }),
53
53
  /* @__PURE__ */ i(z, { sx: { px: 2, pb: 2, pt: 0, gap: 1, flexWrap: "wrap" }, children: [
@@ -58,18 +58,18 @@ function U({ server: n, onOpen: a, onSync: d, onStaging: f, canManage: g }) {
58
58
  ] });
59
59
  }
60
60
  function ce() {
61
- const n = w(), { canManage: a } = $(), [d, f] = y([]), [g, s] = y(!1), [r, x] = y(null), h = C(async () => {
61
+ const n = w(), { canManage: a } = $(), [d, f] = y([]), [g, s] = y(!1), [r, x] = y(null), h = R(async () => {
62
62
  s(!0);
63
63
  try {
64
64
  const t = await j();
65
65
  f((t == null ? void 0 : t.data) ?? []);
66
66
  } catch {
67
- E({ type: "error", message: "Failed to load FHIR servers." });
67
+ O({ type: "error", message: "Failed to load FHIR servers." });
68
68
  } finally {
69
69
  s(!1);
70
70
  }
71
71
  }, []);
72
- return R(() => {
72
+ return C(() => {
73
73
  h();
74
74
  }, [h]), /* @__PURE__ */ e(G, { children: /* @__PURE__ */ i(u, { sx: { p: { xs: 2, md: 3 } }, children: [
75
75
  /* @__PURE__ */ e(
@@ -84,8 +84,8 @@ function ce() {
84
84
  ] })
85
85
  }
86
86
  ),
87
- g ? /* @__PURE__ */ e(m, { container: !0, spacing: 2, children: Array.from({ length: 3 }).map((t, I) => /* @__PURE__ */ e(m, { item: !0, xs: 12, sm: 6, md: 4, children: /* @__PURE__ */ e(F, { variant: "rounded", height: 220 }) }, I)) }) : d.length === 0 ? /* @__PURE__ */ e(S, { variant: "outlined", sx: { borderRadius: 2, p: 5, textAlign: "center" }, children: /* @__PURE__ */ i(c, { alignItems: "center", spacing: 1.5, children: [
88
- /* @__PURE__ */ e(v, { sx: { fontSize: 48, color: "text.disabled" } }),
87
+ g ? /* @__PURE__ */ e(m, { container: !0, spacing: 2, children: Array.from({ length: 3 }).map((t, v) => /* @__PURE__ */ e(m, { item: !0, xs: 12, sm: 6, md: 4, children: /* @__PURE__ */ e(F, { variant: "rounded", height: 220 }) }, v)) }) : d.length === 0 ? /* @__PURE__ */ e(I, { variant: "outlined", sx: { borderRadius: 2, p: 5, textAlign: "center" }, children: /* @__PURE__ */ i(c, { alignItems: "center", spacing: 1.5, children: [
88
+ /* @__PURE__ */ e(S, { sx: { fontSize: 48, color: "text.disabled" } }),
89
89
  /* @__PURE__ */ e(l, { variant: "h6", sx: { fontWeight: 700 }, children: "No FHIR servers yet" }),
90
90
  /* @__PURE__ */ e(l, { variant: "body2", color: "text.secondary", sx: { maxWidth: 420 }, children: "Connect a FHIR server by its base URL. We’ll guide you through discovering its capabilities and syncing resources." }),
91
91
  a && /* @__PURE__ */ e(o, { variant: "contained", startIcon: /* @__PURE__ */ e(b, {}), onClick: () => n("/ui/medplat/admin/fhirResource/new"), children: "Connect your first server" })
@@ -113,4 +113,4 @@ function ce() {
113
113
  export {
114
114
  ce as default
115
115
  };
116
- //# sourceMappingURL=FhirServerList-DuTwnngN.js.map
116
+ //# sourceMappingURL=FhirServerList-CrIHMAxz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FhirServerList-DuTwnngN.js","sources":["../src/views/FhirResource/FhirServerList.jsx"],"sourcesContent":["import { useEffect, useState, useCallback } from \"react\";\nimport { useNavigate } from \"react-router\";\nimport {\n Box, Button, Stack, Typography, Skeleton, Chip, Grid,\n Card, CardContent, CardActions, Divider,\n} from \"@mui/material\";\nimport AddRoundedIcon from \"@mui/icons-material/AddRounded\";\nimport RefreshRoundedIcon from \"@mui/icons-material/RefreshRounded\";\nimport SyncRoundedIcon from \"@mui/icons-material/SyncRounded\";\nimport InboxRoundedIcon from \"@mui/icons-material/InboxRounded\";\nimport OpenInNewRoundedIcon from \"@mui/icons-material/OpenInNewRounded\";\nimport DnsRoundedIcon from \"@mui/icons-material/DnsRounded\";\nimport LockRoundedIcon from \"@mui/icons-material/LockRounded\";\nimport LockOpenRoundedIcon from \"@mui/icons-material/LockOpenRounded\";\nimport moment from \"moment\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { retrieveAllServers } from \"../../services/FhirResource\";\nimport { FhirPageHeader, StatusChip, MonoText } from \"./components/FhirUi\";\nimport { FhirGuard, useFhirPermissions } from \"./components/permissions\";\nimport SyncDialog from \"./SyncDialog\";\n\nfunction ServerCard({ server, onOpen, onSync, onStaging, canManage }) {\n const secured = server.authType && server.authType !== \"NONE\";\n return (\n <Card variant=\"outlined\" sx={{ height: \"100%\", borderRadius: 2, display: \"flex\", flexDirection: \"column\" }}>\n <CardContent sx={{ flexGrow: 1 }}>\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <Box sx={{ width: 36, height: 36, borderRadius: 1.5, bgcolor: \"primary.main\", color: \"#fff\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <DnsRoundedIcon fontSize=\"small\" />\n </Box>\n <Box>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 800, lineHeight: 1.1 }}>{server.name}</Typography>\n <Chip\n size=\"small\"\n icon={secured ? <LockRoundedIcon /> : <LockOpenRoundedIcon />}\n label={secured ? server.authType : \"Public\"}\n variant=\"outlined\"\n sx={{ height: 20, mt: 0.5 }}\n />\n </Box>\n </Stack>\n <StatusChip value={server.isActive ? \"ACTIVE\" : \"INACTIVE\"} />\n </Stack>\n\n <Box sx={{ mt: 1.5 }}><MonoText muted>{server.baseUrl}</MonoText></Box>\n\n <Divider sx={{ my: 1.5 }} />\n\n {server.capabilitySyncedAt ? (\n <Stack direction=\"row\" spacing={0.75} flexWrap=\"wrap\" useFlexGap>\n {server.fhirVersion ? <Chip size=\"small\" label={`FHIR ${server.fhirVersion}`} sx={{ height: 22 }} /> : null}\n <Chip size=\"small\" label={`${server.supportedResources?.length ?? 0} resources`} sx={{ height: 22 }} />\n {server.supportsExpand ? <Chip size=\"small\" color=\"success\" label=\"$expand\" sx={{ height: 22 }} /> : null}\n </Stack>\n ) : (\n <Typography variant=\"caption\" color=\"text.disabled\">Capability not discovered</Typography>\n )}\n {server.capabilitySyncedAt && (\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\" sx={{ mt: 1 }}>\n synced {moment(server.capabilitySyncedAt).fromNow()}\n </Typography>\n )}\n </CardContent>\n <CardActions sx={{ px: 2, pb: 2, pt: 0, gap: 1, flexWrap: \"wrap\" }}>\n <Button size=\"small\" variant=\"contained\" startIcon={<OpenInNewRoundedIcon />} onClick={onOpen}>Open</Button>\n {canManage && (\n <Button size=\"small\" variant=\"outlined\" startIcon={<SyncRoundedIcon />} onClick={onSync}>Sync</Button>\n )}\n <Button size=\"small\" variant=\"outlined\" startIcon={<InboxRoundedIcon />} onClick={onStaging}>Staging</Button>\n </CardActions>\n </Card>\n );\n}\n\nfunction FhirServerList() {\n const navigate = useNavigate();\n const { canManage } = useFhirPermissions();\n const [servers, setServers] = useState([]);\n const [loading, setLoading] = useState(false);\n const [syncServer, setSyncServer] = useState(null);\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const res = await retrieveAllServers();\n setServers(res?.data ?? []);\n } catch {\n showToast({ type: \"error\", message: \"Failed to load FHIR servers.\" });\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => { load(); }, [load]);\n\n return (\n <FhirGuard>\n <Box sx={{ p: { xs: 2, md: 3 } }}>\n <FhirPageHeader\n title=\"FHIR Sync\"\n subtitle=\"Connect any FHIR-compliant server by its base URL, discover what it supports, then sync resources into the staging inbox and process them into the system.\"\n chips={[\"Sync\", \"Raw Storage\", \"Processing\"]}\n actions={\n <Stack direction=\"row\" spacing={1}>\n <Button variant=\"outlined\" startIcon={<RefreshRoundedIcon />} onClick={load}>Refresh</Button>\n {canManage && (\n <Button variant=\"contained\" startIcon={<AddRoundedIcon />} onClick={() => navigate(\"/ui/medplat/admin/fhirResource/new\")}>\n Connect Server\n </Button>\n )}\n </Stack>\n }\n />\n\n {loading ? (\n <Grid container spacing={2}>\n {Array.from({ length: 3 }).map((_, i) => (\n <Grid item xs={12} sm={6} md={4} key={i}><Skeleton variant=\"rounded\" height={220} /></Grid>\n ))}\n </Grid>\n ) : servers.length === 0 ? (\n <Card variant=\"outlined\" sx={{ borderRadius: 2, p: 5, textAlign: \"center\" }}>\n <Stack alignItems=\"center\" spacing={1.5}>\n <DnsRoundedIcon sx={{ fontSize: 48, color: \"text.disabled\" }} />\n <Typography variant=\"h6\" sx={{ fontWeight: 700 }}>No FHIR servers yet</Typography>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ maxWidth: 420 }}>\n Connect a FHIR server by its base URL. We’ll guide you through discovering its capabilities and syncing resources.\n </Typography>\n {canManage && (\n <Button variant=\"contained\" startIcon={<AddRoundedIcon />} onClick={() => navigate(\"/ui/medplat/admin/fhirResource/new\")}>\n Connect your first server\n </Button>\n )}\n </Stack>\n </Card>\n ) : (\n <Grid container spacing={2}>\n {servers.map((s) => (\n <Grid item xs={12} sm={6} md={4} key={s.id}>\n <ServerCard\n server={s}\n canManage={canManage}\n onOpen={() => navigate(`/ui/medplat/admin/fhirResource/${s.id}`)}\n onSync={() => setSyncServer(s)}\n onStaging={() => navigate(`/ui/medplat/admin/fhirResource/${s.id}/staging`)}\n />\n </Grid>\n ))}\n </Grid>\n )}\n\n {syncServer && (\n <SyncDialog\n open={Boolean(syncServer)}\n server={syncServer}\n onClose={() => setSyncServer(null)}\n onDone={load}\n />\n )}\n </Box>\n </FhirGuard>\n );\n}\n\nexport default FhirServerList;\n"],"names":["ServerCard","server","onOpen","onSync","onStaging","canManage","secured","jsxs","Card","CardContent","Stack","jsx","Box","DnsRoundedIcon","Typography","Chip","LockRoundedIcon","LockOpenRoundedIcon","StatusChip","MonoText","Divider","_a","moment","CardActions","Button","OpenInNewRoundedIcon","SyncRoundedIcon","InboxRoundedIcon","FhirServerList","navigate","useNavigate","useFhirPermissions","servers","setServers","useState","loading","setLoading","syncServer","setSyncServer","load","useCallback","res","retrieveAllServers","showToast","useEffect","FhirGuard","FhirPageHeader","RefreshRoundedIcon","AddRoundedIcon","Grid","_","i","Skeleton","s","SyncDialog"],"mappings":"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"}
1
+ {"version":3,"file":"FhirServerList-CrIHMAxz.js","sources":["../src/views/FhirResource/FhirServerList.jsx"],"sourcesContent":["import { useEffect, useState, useCallback } from \"react\";\nimport { useNavigate } from \"react-router\";\nimport {\n Box, Button, Stack, Typography, Skeleton, Chip, Grid,\n Card, CardContent, CardActions, Divider,\n} from \"@mui/material\";\nimport AddRoundedIcon from \"@mui/icons-material/AddRounded\";\nimport RefreshRoundedIcon from \"@mui/icons-material/RefreshRounded\";\nimport SyncRoundedIcon from \"@mui/icons-material/SyncRounded\";\nimport InboxRoundedIcon from \"@mui/icons-material/InboxRounded\";\nimport OpenInNewRoundedIcon from \"@mui/icons-material/OpenInNewRounded\";\nimport DnsRoundedIcon from \"@mui/icons-material/DnsRounded\";\nimport LockRoundedIcon from \"@mui/icons-material/LockRounded\";\nimport LockOpenRoundedIcon from \"@mui/icons-material/LockOpenRounded\";\nimport moment from \"moment\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { retrieveAllServers } from \"../../services/FhirResource\";\nimport { FhirPageHeader, StatusChip, MonoText } from \"./components/FhirUi\";\nimport { FhirGuard, useFhirPermissions } from \"./components/permissions\";\nimport SyncDialog from \"./SyncDialog\";\n\nfunction ServerCard({ server, onOpen, onSync, onStaging, canManage }) {\n const secured = server.authType && server.authType !== \"NONE\";\n return (\n <Card variant=\"outlined\" sx={{ height: \"100%\", borderRadius: 2, display: \"flex\", flexDirection: \"column\" }}>\n <CardContent sx={{ flexGrow: 1 }}>\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <Box sx={{ width: 36, height: 36, borderRadius: 1.5, bgcolor: \"primary.main\", color: \"#fff\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}>\n <DnsRoundedIcon fontSize=\"small\" />\n </Box>\n <Box>\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 800, lineHeight: 1.1 }}>{server.name}</Typography>\n <Chip\n size=\"small\"\n icon={secured ? <LockRoundedIcon /> : <LockOpenRoundedIcon />}\n label={secured ? server.authType : \"Public\"}\n variant=\"outlined\"\n sx={{ height: 20, mt: 0.5 }}\n />\n </Box>\n </Stack>\n <StatusChip value={server.isActive ? \"ACTIVE\" : \"INACTIVE\"} />\n </Stack>\n\n <Box sx={{ mt: 1.5 }}><MonoText muted>{server.baseUrl}</MonoText></Box>\n\n <Divider sx={{ my: 1.5 }} />\n\n {server.capabilitySyncedAt ? (\n <Stack direction=\"row\" spacing={0.75} flexWrap=\"wrap\" useFlexGap>\n {server.fhirVersion ? <Chip size=\"small\" label={`FHIR ${server.fhirVersion}`} sx={{ height: 22 }} /> : null}\n <Chip size=\"small\" label={`${server.supportedResources?.length ?? 0} resources`} sx={{ height: 22 }} />\n {server.supportsExpand ? <Chip size=\"small\" color=\"success\" label=\"$expand\" sx={{ height: 22 }} /> : null}\n </Stack>\n ) : (\n <Typography variant=\"caption\" color=\"text.disabled\">Capability not discovered</Typography>\n )}\n {server.capabilitySyncedAt && (\n <Typography variant=\"caption\" color=\"text.secondary\" display=\"block\" sx={{ mt: 1 }}>\n synced {moment(server.capabilitySyncedAt).fromNow()}\n </Typography>\n )}\n </CardContent>\n <CardActions sx={{ px: 2, pb: 2, pt: 0, gap: 1, flexWrap: \"wrap\" }}>\n <Button size=\"small\" variant=\"contained\" startIcon={<OpenInNewRoundedIcon />} onClick={onOpen}>Open</Button>\n {canManage && (\n <Button size=\"small\" variant=\"outlined\" startIcon={<SyncRoundedIcon />} onClick={onSync}>Sync</Button>\n )}\n <Button size=\"small\" variant=\"outlined\" startIcon={<InboxRoundedIcon />} onClick={onStaging}>Staging</Button>\n </CardActions>\n </Card>\n );\n}\n\nfunction FhirServerList() {\n const navigate = useNavigate();\n const { canManage } = useFhirPermissions();\n const [servers, setServers] = useState([]);\n const [loading, setLoading] = useState(false);\n const [syncServer, setSyncServer] = useState(null);\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const res = await retrieveAllServers();\n setServers(res?.data ?? []);\n } catch {\n showToast({ type: \"error\", message: \"Failed to load FHIR servers.\" });\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => { load(); }, [load]);\n\n return (\n <FhirGuard>\n <Box sx={{ p: { xs: 2, md: 3 } }}>\n <FhirPageHeader\n title=\"FHIR Sync\"\n subtitle=\"Connect any FHIR-compliant server by its base URL, discover what it supports, then sync resources into the staging inbox and process them into the system.\"\n chips={[\"Sync\", \"Raw Storage\", \"Processing\"]}\n actions={\n <Stack direction=\"row\" spacing={1}>\n <Button variant=\"outlined\" startIcon={<RefreshRoundedIcon />} onClick={load}>Refresh</Button>\n {canManage && (\n <Button variant=\"contained\" startIcon={<AddRoundedIcon />} onClick={() => navigate(\"/ui/medplat/admin/fhirResource/new\")}>\n Connect Server\n </Button>\n )}\n </Stack>\n }\n />\n\n {loading ? (\n <Grid container spacing={2}>\n {Array.from({ length: 3 }).map((_, i) => (\n <Grid item xs={12} sm={6} md={4} key={i}><Skeleton variant=\"rounded\" height={220} /></Grid>\n ))}\n </Grid>\n ) : servers.length === 0 ? (\n <Card variant=\"outlined\" sx={{ borderRadius: 2, p: 5, textAlign: \"center\" }}>\n <Stack alignItems=\"center\" spacing={1.5}>\n <DnsRoundedIcon sx={{ fontSize: 48, color: \"text.disabled\" }} />\n <Typography variant=\"h6\" sx={{ fontWeight: 700 }}>No FHIR servers yet</Typography>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ maxWidth: 420 }}>\n Connect a FHIR server by its base URL. We’ll guide you through discovering its capabilities and syncing resources.\n </Typography>\n {canManage && (\n <Button variant=\"contained\" startIcon={<AddRoundedIcon />} onClick={() => navigate(\"/ui/medplat/admin/fhirResource/new\")}>\n Connect your first server\n </Button>\n )}\n </Stack>\n </Card>\n ) : (\n <Grid container spacing={2}>\n {servers.map((s) => (\n <Grid item xs={12} sm={6} md={4} key={s.id}>\n <ServerCard\n server={s}\n canManage={canManage}\n onOpen={() => navigate(`/ui/medplat/admin/fhirResource/${s.id}`)}\n onSync={() => setSyncServer(s)}\n onStaging={() => navigate(`/ui/medplat/admin/fhirResource/${s.id}/staging`)}\n />\n </Grid>\n ))}\n </Grid>\n )}\n\n {syncServer && (\n <SyncDialog\n open={Boolean(syncServer)}\n server={syncServer}\n onClose={() => setSyncServer(null)}\n onDone={load}\n />\n )}\n </Box>\n </FhirGuard>\n );\n}\n\nexport default FhirServerList;\n"],"names":["ServerCard","server","onOpen","onSync","onStaging","canManage","secured","jsxs","Card","CardContent","Stack","jsx","Box","DnsRoundedIcon","Typography","Chip","LockRoundedIcon","LockOpenRoundedIcon","StatusChip","MonoText","Divider","_a","moment","CardActions","Button","OpenInNewRoundedIcon","SyncRoundedIcon","InboxRoundedIcon","FhirServerList","navigate","useNavigate","useFhirPermissions","servers","setServers","useState","loading","setLoading","syncServer","setSyncServer","load","useCallback","res","retrieveAllServers","showToast","useEffect","FhirGuard","FhirPageHeader","RefreshRoundedIcon","AddRoundedIcon","Grid","_","i","Skeleton","s","SyncDialog"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs as i, jsx as e, Fragment as $ } from "react/jsx-runtime";
2
2
  import { useState as d, useEffect as U, useCallback as j } from "react";
3
3
  import { useParams as z, useNavigate as L } from "react-router";
4
- import { Dialog as M, DialogTitle as P, DialogContent as V, DialogActions as G, Button as D, Box as g, Stack as y, Tooltip as q, IconButton as J, Paper as K, Skeleton as Q, Typography as h, Chip as E, Divider as X, Grid as s, Card as Y, CardActionArea as Z, CardContent as _ } from "@mui/material";
4
+ import { Dialog as M, DialogTitle as P, DialogContent as V, DialogActions as G, Button as D, Box as g, Stack as y, Tooltip as q, IconButton as J, Paper as K, Skeleton as Q, Typography as h, Chip as N, Divider as X, Grid as s, Card as Y, CardActionArea as Z, CardContent as _ } from "@mui/material";
5
5
  import ee from "@mui/icons-material/ArrowBackRounded";
6
6
  import te from "@mui/icons-material/SyncRounded";
7
7
  import re from "@mui/icons-material/CloudSyncRounded";
@@ -86,7 +86,7 @@ function I({ icon: n, title: r, description: u, color: t = "primary", onClick: o
86
86
  ] }) }) }) });
87
87
  }
88
88
  function Le() {
89
- var N, A;
89
+ var A, E;
90
90
  const { serverId: n } = z(), r = L(), { canManage: u } = he(), [t, o] = d(null), [c, f] = d(!1), [T, b] = d(!1), [v, x] = d(!1), [k, S] = d(!1), [w, C] = d(null), l = j(async () => {
91
91
  f(!0);
92
92
  try {
@@ -139,7 +139,7 @@ function Le() {
139
139
  /* @__PURE__ */ e(h, { variant: "h6", sx: { fontWeight: 800 }, children: t.name }),
140
140
  /* @__PURE__ */ e(fe, { value: t.isActive ? "ACTIVE" : "INACTIVE" }),
141
141
  /* @__PURE__ */ e(
142
- E,
142
+ N,
143
143
  {
144
144
  size: "small",
145
145
  icon: t.authType && t.authType !== "NONE" ? /* @__PURE__ */ e(se, {}) : /* @__PURE__ */ e(oe, {}),
@@ -153,9 +153,9 @@ function Le() {
153
153
  /* @__PURE__ */ e(X, {}),
154
154
  /* @__PURE__ */ i(s, { container: !0, spacing: 3, children: [
155
155
  /* @__PURE__ */ e(s, { item: !0, xs: 6, md: 3, children: /* @__PURE__ */ e(F, { label: "FHIR Version", children: /* @__PURE__ */ e(h, { variant: "body2", sx: { fontWeight: 700 }, children: t.fhirVersion ?? "—" }) }) }),
156
- /* @__PURE__ */ e(s, { item: !0, xs: 6, md: 3, children: /* @__PURE__ */ e(F, { label: "Resource Types", children: /* @__PURE__ */ e(h, { variant: "body2", sx: { fontWeight: 700 }, children: ((N = t.supportedResources) == null ? void 0 : N.length) ?? 0 }) }) }),
156
+ /* @__PURE__ */ e(s, { item: !0, xs: 6, md: 3, children: /* @__PURE__ */ e(F, { label: "Resource Types", children: /* @__PURE__ */ e(h, { variant: "body2", sx: { fontWeight: 700 }, children: ((A = t.supportedResources) == null ? void 0 : A.length) ?? 0 }) }) }),
157
157
  /* @__PURE__ */ e(s, { item: !0, xs: 6, md: 3, children: /* @__PURE__ */ e(F, { label: "$expand", children: /* @__PURE__ */ e(
158
- E,
158
+ N,
159
159
  {
160
160
  size: "small",
161
161
  label: t.supportsExpand ? "Supported" : "Not supported",
@@ -166,9 +166,9 @@ function Le() {
166
166
  ) }) }),
167
167
  /* @__PURE__ */ e(s, { item: !0, xs: 6, md: 3, children: /* @__PURE__ */ e(F, { label: "Capability Synced", children: /* @__PURE__ */ e(h, { variant: "body2", children: t.capabilitySyncedAt ? ce(t.capabilitySyncedAt).fromNow() : "Never" }) }) })
168
168
  ] }),
169
- (A = t.supportedResources) != null && A.length ? /* @__PURE__ */ i(g, { children: [
169
+ (E = t.supportedResources) != null && E.length ? /* @__PURE__ */ i(g, { children: [
170
170
  /* @__PURE__ */ e(h, { variant: "overline", color: "text.secondary", sx: { fontWeight: 700 }, children: "Supported Resources" }),
171
- /* @__PURE__ */ e(y, { direction: "row", spacing: 0.75, flexWrap: "wrap", useFlexGap: !0, sx: { mt: 0.75 }, children: t.supportedResources.map((a) => /* @__PURE__ */ e(E, { size: "small", label: a }, a)) })
171
+ /* @__PURE__ */ e(y, { direction: "row", spacing: 0.75, flexWrap: "wrap", useFlexGap: !0, sx: { mt: 0.75 }, children: t.supportedResources.map((a) => /* @__PURE__ */ e(N, { size: "small", label: a }, a)) })
172
172
  ] }) : /* @__PURE__ */ e(h, { variant: "body2", color: "text.secondary", children: "Capability not discovered yet — use “Refresh Capability” to learn what this server supports." })
173
173
  ] }) : null }),
174
174
  t && /* @__PURE__ */ i(s, { container: !0, spacing: 2, children: [
@@ -250,4 +250,4 @@ function Le() {
250
250
  export {
251
251
  Le as default
252
252
  };
253
- //# sourceMappingURL=FhirServerProfile-CUOwC6Wb.js.map
253
+ //# sourceMappingURL=FhirServerProfile-D3aYcpwY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FhirServerProfile-CUOwC6Wb.js","sources":["../src/views/FhirResource/AddEditFhirServerModal.jsx","../src/views/FhirResource/FhirServerProfile.jsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport {\n Dialog, DialogTitle, DialogContent, DialogActions, Button,\n} from \"@mui/material\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { createServer, updateServer } from \"../../services/FhirResource\";\nimport ServerFormFields, { validateServerForm } from \"./components/ServerFormFields\";\n\nconst emptyForm = () => ({\n name: \"\", baseUrl: \"\", authType: \"NONE\",\n authUsername: \"\", authHeaderName: \"\", authSecret: \"\", isActive: true, hasSecret: false,\n});\n\nfunction AddEditFhirServerModal({ open, server, onClose, onSaved }) {\n const isEdit = Boolean(server?.id);\n const [form, setForm] = useState(emptyForm());\n const [errors, setErrors] = useState({});\n const [busy, setBusy] = useState(false);\n\n useEffect(() => {\n if (server) {\n setForm({\n name: server.name ?? \"\",\n baseUrl: server.baseUrl ?? \"\",\n authType: server.authType ?? \"NONE\",\n authUsername: server.authUsername ?? \"\",\n authHeaderName: server.authHeaderName ?? \"\",\n authSecret: \"\",\n hasSecret: Boolean(server.hasSecret),\n isActive: server.isActive ?? true,\n });\n } else {\n setForm(emptyForm());\n }\n setErrors({});\n }, [server, open]);\n\n const handleSave = async () => {\n const errs = validateServerForm(form, { isEdit });\n setErrors(errs);\n if (Object.keys(errs).length) return;\n setBusy(true);\n try {\n if (isEdit) {\n await updateServer(server.id, form);\n showToast({ type: \"success\", message: \"Server updated.\" });\n } else {\n await createServer(form);\n showToast({ type: \"success\", message: \"Server created.\" });\n }\n onSaved?.();\n onClose();\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Failed to save server.\" });\n } finally {\n setBusy(false);\n }\n };\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>{isEdit ? \"Edit FHIR Server\" : \"Add FHIR Server\"}</DialogTitle>\n <DialogContent dividers>\n <ServerFormFields value={form} onChange={setForm} isEdit={isEdit} errors={errors} />\n </DialogContent>\n <DialogActions sx={{ px: 3, pb: 2 }}>\n <Button onClick={onClose} disabled={busy}>Cancel</Button>\n <Button variant=\"contained\" onClick={handleSave} disabled={busy}>\n {isEdit ? \"Update\" : \"Save\"}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\nexport default AddEditFhirServerModal;\n","import { useEffect, useState, useCallback } from \"react\";\nimport { useParams, useNavigate } from \"react-router\";\nimport {\n Box, Stack, Typography, Skeleton, Chip, Paper, Divider, IconButton, Tooltip,\n Card, CardActionArea, CardContent, Grid,\n} from \"@mui/material\";\nimport ArrowBackRoundedIcon from \"@mui/icons-material/ArrowBackRounded\";\nimport SyncRoundedIcon from \"@mui/icons-material/SyncRounded\";\nimport CloudSyncRoundedIcon from \"@mui/icons-material/CloudSyncRounded\";\nimport InboxRoundedIcon from \"@mui/icons-material/InboxRounded\";\nimport EditRoundedIcon from \"@mui/icons-material/EditRounded\";\nimport DeleteOutlineRoundedIcon from \"@mui/icons-material/DeleteOutlineRounded\";\nimport LockRoundedIcon from \"@mui/icons-material/LockRounded\";\nimport LockOpenRoundedIcon from \"@mui/icons-material/LockOpenRounded\";\nimport moment from \"moment\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { retrieveServerById, refreshCapability, deleteServer } from \"../../services/FhirResource\";\nimport { FhirPageHeader, StatusChip, MonoText, ConfirmModal } from \"./components/FhirUi\";\nimport { FhirGuard, useFhirPermissions } from \"./components/permissions\";\nimport AddEditFhirServerModal from \"./AddEditFhirServerModal\";\nimport SyncDialog from \"./SyncDialog\";\n\nfunction InfoTile({ label, children }) {\n return (\n <Box>\n <Typography variant=\"overline\" color=\"text.secondary\" sx={{ fontWeight: 700, lineHeight: 1 }}>{label}</Typography>\n <Box sx={{ mt: 0.5 }}>{children}</Box>\n </Box>\n );\n}\n\nfunction ActionCard({ icon, title, description, color = \"primary\", onClick, disabled }) {\n return (\n <Card variant=\"outlined\" sx={{ height: \"100%\", borderRadius: 1.5, opacity: disabled ? 0.6 : 1 }}>\n <CardActionArea onClick={onClick} disabled={disabled} sx={{ height: \"100%\", p: 0.5 }}>\n <CardContent>\n <Stack direction=\"row\" spacing={1.5} alignItems=\"flex-start\">\n <Box sx={{\n width: 40, height: 40, borderRadius: 1.5, flexShrink: 0,\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n bgcolor: `${color}.main`, color: \"#fff\",\n }}>\n {icon}\n </Box>\n <Box>\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 800 }}>{title}</Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">{description}</Typography>\n </Box>\n </Stack>\n </CardContent>\n </CardActionArea>\n </Card>\n );\n}\n\nfunction FhirServerProfile() {\n const { serverId } = useParams();\n const navigate = useNavigate();\n const { canManage } = useFhirPermissions();\n\n const [server, setServer] = useState(null);\n const [loading, setLoading] = useState(false);\n const [busy, setBusy] = useState(false);\n const [editOpen, setEditOpen] = useState(false);\n const [syncOpen, setSyncOpen] = useState(false);\n const [confirm, setConfirm] = useState(null);\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const res = await retrieveServerById(serverId);\n setServer(res?.data);\n } catch {\n showToast({ type: \"error\", message: \"Failed to load server.\" });\n } finally {\n setLoading(false);\n }\n }, [serverId]);\n\n useEffect(() => { load(); }, [load]);\n\n const handleRefreshCapability = async () => {\n setBusy(true);\n try {\n await refreshCapability(serverId);\n showToast({ type: \"success\", message: \"Capability refreshed.\" });\n load();\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Could not reach /metadata.\" });\n } finally {\n setBusy(false);\n }\n };\n\n const askDelete = () => setConfirm({\n title: \"Delete FHIR Server\",\n description: `Delete \"${server.name}\" (${server.baseUrl})? All of its staged resources will also be removed. This cannot be undone.`,\n onConfirm: async () => {\n try {\n await deleteServer(serverId);\n showToast({ type: \"success\", message: `Server \"${server.name}\" deleted.` });\n navigate(\"/ui/medplat/admin/fhirResource\");\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Failed to delete server.\" });\n }\n },\n });\n\n const authLabel = server?.authType && server.authType !== \"NONE\"\n ? `${server.authType}${server.hasSecret ? \"\" : \" (no secret)\"}`\n : \"None (public)\";\n\n return (\n <FhirGuard>\n <Box sx={{ p: { xs: 2, md: 3 } }}>\n <FhirPageHeader\n title={\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Tooltip title=\"Back to servers\">\n <IconButton size=\"small\" onClick={() => navigate(\"/ui/medplat/admin/fhirResource\")}>\n <ArrowBackRoundedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <span>{server ? server.name : \"Server\"}</span>\n </Stack>\n }\n subtitle=\"Server profile — connection, discovered capability, and everything you can do with it.\"\n />\n\n {/* Rich detail card */}\n <Paper variant=\"outlined\" sx={{ p: 3, mb: 3, borderRadius: 2 }}>\n {loading ? (\n <Skeleton height={120} />\n ) : server ? (\n <Stack spacing={2.5}>\n <Stack direction={{ xs: \"column\", md: \"row\" }} justifyContent=\"space-between\" spacing={2}>\n <Stack direction=\"row\" spacing={1.5} alignItems=\"center\">\n <Typography variant=\"h6\" sx={{ fontWeight: 800 }}>{server.name}</Typography>\n <StatusChip value={server.isActive ? \"ACTIVE\" : \"INACTIVE\"} />\n <Chip\n size=\"small\"\n icon={server.authType && server.authType !== \"NONE\" ? <LockRoundedIcon /> : <LockOpenRoundedIcon />}\n label={authLabel}\n variant=\"outlined\"\n sx={{ height: 24 }}\n />\n </Stack>\n </Stack>\n\n <MonoText muted>{server.baseUrl}</MonoText>\n\n <Divider />\n\n <Grid container spacing={3}>\n <Grid item xs={6} md={3}>\n <InfoTile label=\"FHIR Version\">\n <Typography variant=\"body2\" sx={{ fontWeight: 700 }}>{server.fhirVersion ?? \"—\"}</Typography>\n </InfoTile>\n </Grid>\n <Grid item xs={6} md={3}>\n <InfoTile label=\"Resource Types\">\n <Typography variant=\"body2\" sx={{ fontWeight: 700 }}>{server.supportedResources?.length ?? 0}</Typography>\n </InfoTile>\n </Grid>\n <Grid item xs={6} md={3}>\n <InfoTile label=\"$expand\">\n <Chip size=\"small\" label={server.supportsExpand ? \"Supported\" : \"Not supported\"}\n color={server.supportsExpand ? \"success\" : \"default\"} variant=\"outlined\" sx={{ height: 22 }} />\n </InfoTile>\n </Grid>\n <Grid item xs={6} md={3}>\n <InfoTile label=\"Capability Synced\">\n <Typography variant=\"body2\">\n {server.capabilitySyncedAt ? moment(server.capabilitySyncedAt).fromNow() : \"Never\"}\n </Typography>\n </InfoTile>\n </Grid>\n </Grid>\n\n {server.supportedResources?.length ? (\n <Box>\n <Typography variant=\"overline\" color=\"text.secondary\" sx={{ fontWeight: 700 }}>Supported Resources</Typography>\n <Stack direction=\"row\" spacing={0.75} flexWrap=\"wrap\" useFlexGap sx={{ mt: 0.75 }}>\n {server.supportedResources.map((r) => <Chip key={r} size=\"small\" label={r} />)}\n </Stack>\n </Box>\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n Capability not discovered yet — use “Refresh Capability” to learn what this server supports.\n </Typography>\n )}\n </Stack>\n ) : null}\n </Paper>\n\n {/* Action cards */}\n {server && (\n <Grid container spacing={2}>\n {canManage && (\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<SyncRoundedIcon />} color=\"primary\"\n title=\"Sync Resources\"\n description=\"Sync resources from this server into the staging inbox (by type, or a single resource by id).\"\n onClick={() => setSyncOpen(true)}\n />\n </Grid>\n )}\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<InboxRoundedIcon />} color=\"info\"\n title=\"Staging Inbox\"\n description=\"View synced raw resources and their processing status; process or reprocess into the system.\"\n onClick={() => navigate(`/ui/medplat/admin/fhirResource/${serverId}/staging`)}\n />\n </Grid>\n {canManage && (\n <>\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<CloudSyncRoundedIcon />} color=\"secondary\"\n title=\"Refresh Capability\"\n description=\"Re-query GET /metadata to refresh the FHIR version and supported resources/operations.\"\n onClick={handleRefreshCapability} disabled={busy}\n />\n </Grid>\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<EditRoundedIcon />} color=\"warning\"\n title=\"Edit Server\"\n description=\"Update the base URL, authentication credentials, or active status of this server.\"\n onClick={() => setEditOpen(true)}\n />\n </Grid>\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<DeleteOutlineRoundedIcon />} color=\"error\"\n title=\"Delete Server\"\n description=\"Remove this server and all of its staged resources. This action cannot be undone.\"\n onClick={askDelete}\n />\n </Grid>\n </>\n )}\n </Grid>\n )}\n\n {editOpen && (\n <AddEditFhirServerModal\n open={editOpen}\n server={server}\n onClose={() => setEditOpen(false)}\n onSaved={load}\n />\n )}\n\n {syncOpen && (\n <SyncDialog\n open={syncOpen}\n server={server}\n onClose={() => setSyncOpen(false)}\n onDone={load}\n />\n )}\n\n <ConfirmModal confirm={confirm} onClose={() => setConfirm(null)} />\n </Box>\n </FhirGuard>\n );\n}\n\nexport default FhirServerProfile;\n"],"names":["emptyForm","AddEditFhirServerModal","open","server","onClose","onSaved","isEdit","form","setForm","useState","errors","setErrors","busy","setBusy","useEffect","Dialog","jsx","DialogTitle","DialogContent","ServerFormFields","jsxs","DialogActions","Button","errs","validateServerForm","updateServer","showToast","createServer","err","_b","_a","InfoTile","label","children","Box","Typography","ActionCard","icon","title","description","color","onClick","disabled","Card","CardActionArea","CardContent","Stack","FhirServerProfile","serverId","useParams","navigate","useNavigate","canManage","useFhirPermissions","setServer","loading","setLoading","editOpen","setEditOpen","syncOpen","setSyncOpen","confirm","setConfirm","load","useCallback","res","retrieveServerById","handleRefreshCapability","refreshCapability","askDelete","deleteServer","authLabel","FhirGuard","FhirPageHeader","Tooltip","IconButton","ArrowBackRoundedIcon","Paper","Skeleton","StatusChip","Chip","LockRoundedIcon","LockOpenRoundedIcon","MonoText","Divider","Grid","moment","r","SyncRoundedIcon","InboxRoundedIcon","Fragment","CloudSyncRoundedIcon","EditRoundedIcon","DeleteOutlineRoundedIcon","SyncDialog","ConfirmModal"],"mappings":"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"}
1
+ {"version":3,"file":"FhirServerProfile-D3aYcpwY.js","sources":["../src/views/FhirResource/AddEditFhirServerModal.jsx","../src/views/FhirResource/FhirServerProfile.jsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport {\n Dialog, DialogTitle, DialogContent, DialogActions, Button,\n} from \"@mui/material\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { createServer, updateServer } from \"../../services/FhirResource\";\nimport ServerFormFields, { validateServerForm } from \"./components/ServerFormFields\";\n\nconst emptyForm = () => ({\n name: \"\", baseUrl: \"\", authType: \"NONE\",\n authUsername: \"\", authHeaderName: \"\", authSecret: \"\", isActive: true, hasSecret: false,\n});\n\nfunction AddEditFhirServerModal({ open, server, onClose, onSaved }) {\n const isEdit = Boolean(server?.id);\n const [form, setForm] = useState(emptyForm());\n const [errors, setErrors] = useState({});\n const [busy, setBusy] = useState(false);\n\n useEffect(() => {\n if (server) {\n setForm({\n name: server.name ?? \"\",\n baseUrl: server.baseUrl ?? \"\",\n authType: server.authType ?? \"NONE\",\n authUsername: server.authUsername ?? \"\",\n authHeaderName: server.authHeaderName ?? \"\",\n authSecret: \"\",\n hasSecret: Boolean(server.hasSecret),\n isActive: server.isActive ?? true,\n });\n } else {\n setForm(emptyForm());\n }\n setErrors({});\n }, [server, open]);\n\n const handleSave = async () => {\n const errs = validateServerForm(form, { isEdit });\n setErrors(errs);\n if (Object.keys(errs).length) return;\n setBusy(true);\n try {\n if (isEdit) {\n await updateServer(server.id, form);\n showToast({ type: \"success\", message: \"Server updated.\" });\n } else {\n await createServer(form);\n showToast({ type: \"success\", message: \"Server created.\" });\n }\n onSaved?.();\n onClose();\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Failed to save server.\" });\n } finally {\n setBusy(false);\n }\n };\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>{isEdit ? \"Edit FHIR Server\" : \"Add FHIR Server\"}</DialogTitle>\n <DialogContent dividers>\n <ServerFormFields value={form} onChange={setForm} isEdit={isEdit} errors={errors} />\n </DialogContent>\n <DialogActions sx={{ px: 3, pb: 2 }}>\n <Button onClick={onClose} disabled={busy}>Cancel</Button>\n <Button variant=\"contained\" onClick={handleSave} disabled={busy}>\n {isEdit ? \"Update\" : \"Save\"}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\nexport default AddEditFhirServerModal;\n","import { useEffect, useState, useCallback } from \"react\";\nimport { useParams, useNavigate } from \"react-router\";\nimport {\n Box, Stack, Typography, Skeleton, Chip, Paper, Divider, IconButton, Tooltip,\n Card, CardActionArea, CardContent, Grid,\n} from \"@mui/material\";\nimport ArrowBackRoundedIcon from \"@mui/icons-material/ArrowBackRounded\";\nimport SyncRoundedIcon from \"@mui/icons-material/SyncRounded\";\nimport CloudSyncRoundedIcon from \"@mui/icons-material/CloudSyncRounded\";\nimport InboxRoundedIcon from \"@mui/icons-material/InboxRounded\";\nimport EditRoundedIcon from \"@mui/icons-material/EditRounded\";\nimport DeleteOutlineRoundedIcon from \"@mui/icons-material/DeleteOutlineRounded\";\nimport LockRoundedIcon from \"@mui/icons-material/LockRounded\";\nimport LockOpenRoundedIcon from \"@mui/icons-material/LockOpenRounded\";\nimport moment from \"moment\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { retrieveServerById, refreshCapability, deleteServer } from \"../../services/FhirResource\";\nimport { FhirPageHeader, StatusChip, MonoText, ConfirmModal } from \"./components/FhirUi\";\nimport { FhirGuard, useFhirPermissions } from \"./components/permissions\";\nimport AddEditFhirServerModal from \"./AddEditFhirServerModal\";\nimport SyncDialog from \"./SyncDialog\";\n\nfunction InfoTile({ label, children }) {\n return (\n <Box>\n <Typography variant=\"overline\" color=\"text.secondary\" sx={{ fontWeight: 700, lineHeight: 1 }}>{label}</Typography>\n <Box sx={{ mt: 0.5 }}>{children}</Box>\n </Box>\n );\n}\n\nfunction ActionCard({ icon, title, description, color = \"primary\", onClick, disabled }) {\n return (\n <Card variant=\"outlined\" sx={{ height: \"100%\", borderRadius: 1.5, opacity: disabled ? 0.6 : 1 }}>\n <CardActionArea onClick={onClick} disabled={disabled} sx={{ height: \"100%\", p: 0.5 }}>\n <CardContent>\n <Stack direction=\"row\" spacing={1.5} alignItems=\"flex-start\">\n <Box sx={{\n width: 40, height: 40, borderRadius: 1.5, flexShrink: 0,\n display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n bgcolor: `${color}.main`, color: \"#fff\",\n }}>\n {icon}\n </Box>\n <Box>\n <Typography variant=\"subtitle2\" sx={{ fontWeight: 800 }}>{title}</Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">{description}</Typography>\n </Box>\n </Stack>\n </CardContent>\n </CardActionArea>\n </Card>\n );\n}\n\nfunction FhirServerProfile() {\n const { serverId } = useParams();\n const navigate = useNavigate();\n const { canManage } = useFhirPermissions();\n\n const [server, setServer] = useState(null);\n const [loading, setLoading] = useState(false);\n const [busy, setBusy] = useState(false);\n const [editOpen, setEditOpen] = useState(false);\n const [syncOpen, setSyncOpen] = useState(false);\n const [confirm, setConfirm] = useState(null);\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const res = await retrieveServerById(serverId);\n setServer(res?.data);\n } catch {\n showToast({ type: \"error\", message: \"Failed to load server.\" });\n } finally {\n setLoading(false);\n }\n }, [serverId]);\n\n useEffect(() => { load(); }, [load]);\n\n const handleRefreshCapability = async () => {\n setBusy(true);\n try {\n await refreshCapability(serverId);\n showToast({ type: \"success\", message: \"Capability refreshed.\" });\n load();\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Could not reach /metadata.\" });\n } finally {\n setBusy(false);\n }\n };\n\n const askDelete = () => setConfirm({\n title: \"Delete FHIR Server\",\n description: `Delete \"${server.name}\" (${server.baseUrl})? All of its staged resources will also be removed. This cannot be undone.`,\n onConfirm: async () => {\n try {\n await deleteServer(serverId);\n showToast({ type: \"success\", message: `Server \"${server.name}\" deleted.` });\n navigate(\"/ui/medplat/admin/fhirResource\");\n } catch (err) {\n showToast({ type: \"error\", message: err?.response?.data?.message ?? \"Failed to delete server.\" });\n }\n },\n });\n\n const authLabel = server?.authType && server.authType !== \"NONE\"\n ? `${server.authType}${server.hasSecret ? \"\" : \" (no secret)\"}`\n : \"None (public)\";\n\n return (\n <FhirGuard>\n <Box sx={{ p: { xs: 2, md: 3 } }}>\n <FhirPageHeader\n title={\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <Tooltip title=\"Back to servers\">\n <IconButton size=\"small\" onClick={() => navigate(\"/ui/medplat/admin/fhirResource\")}>\n <ArrowBackRoundedIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n <span>{server ? server.name : \"Server\"}</span>\n </Stack>\n }\n subtitle=\"Server profile — connection, discovered capability, and everything you can do with it.\"\n />\n\n {/* Rich detail card */}\n <Paper variant=\"outlined\" sx={{ p: 3, mb: 3, borderRadius: 2 }}>\n {loading ? (\n <Skeleton height={120} />\n ) : server ? (\n <Stack spacing={2.5}>\n <Stack direction={{ xs: \"column\", md: \"row\" }} justifyContent=\"space-between\" spacing={2}>\n <Stack direction=\"row\" spacing={1.5} alignItems=\"center\">\n <Typography variant=\"h6\" sx={{ fontWeight: 800 }}>{server.name}</Typography>\n <StatusChip value={server.isActive ? \"ACTIVE\" : \"INACTIVE\"} />\n <Chip\n size=\"small\"\n icon={server.authType && server.authType !== \"NONE\" ? <LockRoundedIcon /> : <LockOpenRoundedIcon />}\n label={authLabel}\n variant=\"outlined\"\n sx={{ height: 24 }}\n />\n </Stack>\n </Stack>\n\n <MonoText muted>{server.baseUrl}</MonoText>\n\n <Divider />\n\n <Grid container spacing={3}>\n <Grid item xs={6} md={3}>\n <InfoTile label=\"FHIR Version\">\n <Typography variant=\"body2\" sx={{ fontWeight: 700 }}>{server.fhirVersion ?? \"—\"}</Typography>\n </InfoTile>\n </Grid>\n <Grid item xs={6} md={3}>\n <InfoTile label=\"Resource Types\">\n <Typography variant=\"body2\" sx={{ fontWeight: 700 }}>{server.supportedResources?.length ?? 0}</Typography>\n </InfoTile>\n </Grid>\n <Grid item xs={6} md={3}>\n <InfoTile label=\"$expand\">\n <Chip size=\"small\" label={server.supportsExpand ? \"Supported\" : \"Not supported\"}\n color={server.supportsExpand ? \"success\" : \"default\"} variant=\"outlined\" sx={{ height: 22 }} />\n </InfoTile>\n </Grid>\n <Grid item xs={6} md={3}>\n <InfoTile label=\"Capability Synced\">\n <Typography variant=\"body2\">\n {server.capabilitySyncedAt ? moment(server.capabilitySyncedAt).fromNow() : \"Never\"}\n </Typography>\n </InfoTile>\n </Grid>\n </Grid>\n\n {server.supportedResources?.length ? (\n <Box>\n <Typography variant=\"overline\" color=\"text.secondary\" sx={{ fontWeight: 700 }}>Supported Resources</Typography>\n <Stack direction=\"row\" spacing={0.75} flexWrap=\"wrap\" useFlexGap sx={{ mt: 0.75 }}>\n {server.supportedResources.map((r) => <Chip key={r} size=\"small\" label={r} />)}\n </Stack>\n </Box>\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n Capability not discovered yet — use “Refresh Capability” to learn what this server supports.\n </Typography>\n )}\n </Stack>\n ) : null}\n </Paper>\n\n {/* Action cards */}\n {server && (\n <Grid container spacing={2}>\n {canManage && (\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<SyncRoundedIcon />} color=\"primary\"\n title=\"Sync Resources\"\n description=\"Sync resources from this server into the staging inbox (by type, or a single resource by id).\"\n onClick={() => setSyncOpen(true)}\n />\n </Grid>\n )}\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<InboxRoundedIcon />} color=\"info\"\n title=\"Staging Inbox\"\n description=\"View synced raw resources and their processing status; process or reprocess into the system.\"\n onClick={() => navigate(`/ui/medplat/admin/fhirResource/${serverId}/staging`)}\n />\n </Grid>\n {canManage && (\n <>\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<CloudSyncRoundedIcon />} color=\"secondary\"\n title=\"Refresh Capability\"\n description=\"Re-query GET /metadata to refresh the FHIR version and supported resources/operations.\"\n onClick={handleRefreshCapability} disabled={busy}\n />\n </Grid>\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<EditRoundedIcon />} color=\"warning\"\n title=\"Edit Server\"\n description=\"Update the base URL, authentication credentials, or active status of this server.\"\n onClick={() => setEditOpen(true)}\n />\n </Grid>\n <Grid item xs={12} sm={6} md={4}>\n <ActionCard\n icon={<DeleteOutlineRoundedIcon />} color=\"error\"\n title=\"Delete Server\"\n description=\"Remove this server and all of its staged resources. This action cannot be undone.\"\n onClick={askDelete}\n />\n </Grid>\n </>\n )}\n </Grid>\n )}\n\n {editOpen && (\n <AddEditFhirServerModal\n open={editOpen}\n server={server}\n onClose={() => setEditOpen(false)}\n onSaved={load}\n />\n )}\n\n {syncOpen && (\n <SyncDialog\n open={syncOpen}\n server={server}\n onClose={() => setSyncOpen(false)}\n onDone={load}\n />\n )}\n\n <ConfirmModal confirm={confirm} onClose={() => setConfirm(null)} />\n </Box>\n </FhirGuard>\n );\n}\n\nexport default FhirServerProfile;\n"],"names":["emptyForm","AddEditFhirServerModal","open","server","onClose","onSaved","isEdit","form","setForm","useState","errors","setErrors","busy","setBusy","useEffect","Dialog","jsx","DialogTitle","DialogContent","ServerFormFields","jsxs","DialogActions","Button","errs","validateServerForm","updateServer","showToast","createServer","err","_b","_a","InfoTile","label","children","Box","Typography","ActionCard","icon","title","description","color","onClick","disabled","Card","CardActionArea","CardContent","Stack","FhirServerProfile","serverId","useParams","navigate","useNavigate","canManage","useFhirPermissions","setServer","loading","setLoading","editOpen","setEditOpen","syncOpen","setSyncOpen","confirm","setConfirm","load","useCallback","res","retrieveServerById","handleRefreshCapability","refreshCapability","askDelete","deleteServer","authLabel","FhirGuard","FhirPageHeader","Tooltip","IconButton","ArrowBackRoundedIcon","Paper","Skeleton","StatusChip","Chip","LockRoundedIcon","LockOpenRoundedIcon","MonoText","Divider","Grid","moment","r","SyncRoundedIcon","InboxRoundedIcon","Fragment","CloudSyncRoundedIcon","EditRoundedIcon","DeleteOutlineRoundedIcon","SyncDialog","ConfirmModal"],"mappings":"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"}
@@ -9,9 +9,9 @@ import { showToast as f } from "@/common/toaster/toaster";
9
9
  import { F as de, b as pe, a as he, c as E, d as ue, e as ye, f as me, s as ge } from "./permissions-DEWACxJN.js";
10
10
  import { S as Se, v as fe } from "./ServerFormFields-SLghoZ2z.js";
11
11
  const Ce = ["Server Details", "Discover Capability", "Sync Resources"], be = ["ValueSet", "CodeSystem", "Organization", "Location", "HealthcareService"];
12
- function Ie() {
12
+ function Ae() {
13
13
  var L, U, z, G;
14
- const C = ee(), [y, b] = c(0), [x, M] = c({ name: "", baseUrl: "", authType: "NONE", isActive: !0 }), [V, Y] = c({}), [t, T] = c(null), [d, m] = c(!1), [v, w] = c("idle"), [_, P] = c(""), [h, A] = c({}), [I, q] = c(!0), [j, W] = c(null), $ = () => C("/ui/medplat/admin/fhirResource"), J = async () => {
14
+ const C = ee(), [y, b] = c(0), [x, M] = c({ name: "", baseUrl: "", authType: "NONE", isActive: !0 }), [V, Y] = c({}), [t, T] = c(null), [d, m] = c(!1), [v, k] = c("idle"), [_, P] = c(""), [h, I] = c({}), [A, q] = c(!0), [j, W] = c(null), $ = () => C("/ui/medplat/admin/fhirResource"), J = async () => {
15
15
  var a, s;
16
16
  const r = fe(x);
17
17
  if (Y(r), !Object.keys(r).length) {
@@ -27,25 +27,25 @@ function Ie() {
27
27
  }
28
28
  }, B = async (r) => {
29
29
  var a, s;
30
- w("loading"), P("");
30
+ k("loading"), P("");
31
31
  try {
32
32
  const o = await me(r);
33
- T(o.data), w("done");
33
+ T(o.data), k("done");
34
34
  } catch (o) {
35
- w("error"), P(((s = (a = o == null ? void 0 : o.response) == null ? void 0 : a.data) == null ? void 0 : s.message) ?? "Could not reach the server's /metadata endpoint.");
35
+ k("error"), P(((s = (a = o == null ? void 0 : o.response) == null ? void 0 : a.data) == null ? void 0 : s.message) ?? "Could not reach the server's /metadata endpoint.");
36
36
  }
37
- }, u = (L = t == null ? void 0 : t.supportedResources) != null && L.length ? t.supportedResources : be, k = Object.keys(h).filter((r) => h[r]), D = u.length > 0 && u.every((r) => h[r]), K = u.some((r) => h[r]), Q = (r) => {
38
- A(Object.fromEntries(u.map((a) => [a, r])));
37
+ }, u = (L = t == null ? void 0 : t.supportedResources) != null && L.length ? t.supportedResources : be, w = Object.keys(h).filter((r) => h[r]), D = u.length > 0 && u.every((r) => h[r]), K = u.some((r) => h[r]), Q = (r) => {
38
+ I(Object.fromEntries(u.map((a) => [a, r])));
39
39
  }, X = async () => {
40
40
  var r, a;
41
- if (k.length === 0) {
41
+ if (w.length === 0) {
42
42
  f({ type: "error", message: "Select at least one resource type, or skip this step." });
43
43
  return;
44
44
  }
45
45
  m(!0);
46
46
  try {
47
- const s = await ge(t.id, k, {
48
- alsoProcess: I,
47
+ const s = await ge(t.id, w, {
48
+ alsoProcess: A,
49
49
  onProgress: W
50
50
  });
51
51
  f({ type: "success", message: `Synced ${s} resource(s).` }), C(`/ui/medplat/admin/fhirResource/${t.id}`);
@@ -134,7 +134,7 @@ function Ie() {
134
134
  /* @__PURE__ */ e(i, { children: u.map((r) => /* @__PURE__ */ e(
135
135
  R,
136
136
  {
137
- control: /* @__PURE__ */ e(F, { checked: !!h[r], onChange: (a) => A((s) => ({ ...s, [r]: a.target.checked })) }),
137
+ control: /* @__PURE__ */ e(F, { checked: !!h[r], onChange: (a) => I((s) => ({ ...s, [r]: a.target.checked })) }),
138
138
  label: r
139
139
  },
140
140
  r
@@ -143,19 +143,19 @@ function Ie() {
143
143
  R,
144
144
  {
145
145
  sx: { mt: 1 },
146
- control: /* @__PURE__ */ e(F, { checked: I, onChange: (r) => q(r.target.checked) }),
146
+ control: /* @__PURE__ */ e(F, { checked: A, onChange: (r) => q(r.target.checked) }),
147
147
  label: /* @__PURE__ */ e(p, { variant: "body2", children: "Process into the system after sync" })
148
148
  }
149
149
  )
150
150
  ] }),
151
151
  /* @__PURE__ */ n(i, { direction: "row", spacing: 1, justifyContent: "flex-end", sx: { mt: 3 }, children: [
152
152
  !d && /* @__PURE__ */ e(l, { onClick: O, children: "Skip" }),
153
- /* @__PURE__ */ e(l, { variant: "contained", onClick: X, disabled: d, children: d ? "Syncing…" : `Sync ${k.length || ""} Selected` })
153
+ /* @__PURE__ */ e(l, { variant: "contained", onClick: X, disabled: d, children: d ? "Syncing…" : `Sync ${w.length || ""} Selected` })
154
154
  ] })
155
155
  ] }) })
156
156
  ] }) });
157
157
  }
158
158
  export {
159
- Ie as default
159
+ Ae as default
160
160
  };
161
- //# sourceMappingURL=FhirServerWizard-DZI8Olku.js.map
161
+ //# sourceMappingURL=FhirServerWizard-Db6Hm4bQ.js.map