@argusoft/medplat-core 1.0.28 → 1.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/AccessRights-xrday-L1.js +1023 -0
  2. package/dist/AccessRights-xrday-L1.js.map +1 -0
  3. package/dist/AddEditQueryBuilder-D-iQiVIe.js +365 -0
  4. package/dist/AddEditQueryBuilder-D-iQiVIe.js.map +1 -0
  5. package/dist/{AddFeatures-C0Z29oSd.js → AddFeatures-D1sU8RjY.js} +2 -2
  6. package/dist/{AddFeatures-C0Z29oSd.js.map → AddFeatures-D1sU8RjY.js.map} +1 -1
  7. package/dist/AddLabelModal-Bq-wRqv9.js +631 -0
  8. package/dist/AddLabelModal-Bq-wRqv9.js.map +1 -0
  9. package/dist/AddMenuConfiguration-e5BVXhmw.js +8547 -0
  10. package/dist/AddMenuConfiguration-e5BVXhmw.js.map +1 -0
  11. package/dist/{AddRoleDrawer-CQdzQZLb.js → AddRoleDrawer-0gqAK8N0.js} +62 -63
  12. package/dist/AddRoleDrawer-0gqAK8N0.js.map +1 -0
  13. package/dist/AppModal-CCtrQ5Tr.js +394 -0
  14. package/dist/AppModal-CCtrQ5Tr.js.map +1 -0
  15. package/dist/BrandsPage-DmRW5bhm-Bk1szrjI.js +387 -0
  16. package/dist/BrandsPage-DmRW5bhm-Bk1szrjI.js.map +1 -0
  17. package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js +391 -0
  18. package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js.map +1 -0
  19. package/dist/{ChangePasswordModalCore-CDxkeIIM.js → ChangePasswordModalCore-BPsJquTS.js} +1606 -1611
  20. package/dist/ChangePasswordModalCore-BPsJquTS.js.map +1 -0
  21. package/dist/{ConditionConfig-DSsgGEXS.js → ConditionConfig-Ddz9halE.js} +2 -2
  22. package/dist/ConditionConfig-Ddz9halE.js.map +1 -0
  23. package/dist/DashboardPage-C3bKc5na-sBd9Yqbi.js +435 -0
  24. package/dist/DashboardPage-C3bKc5na-sBd9Yqbi.js.map +1 -0
  25. package/dist/{EntityManagement-GaYsBTvf.js → EntityManagement-CPQL6qBj.js} +2 -2
  26. package/dist/{EntityManagement-GaYsBTvf.js.map → EntityManagement-CPQL6qBj.js.map} +1 -1
  27. package/dist/EventConfig-BmLemzX3.js +26 -0
  28. package/dist/EventConfig-BmLemzX3.js.map +1 -0
  29. package/dist/{EventConfigurations-kNtAj_WM.js → EventConfigurations-Bzh1qWXU.js} +31 -30
  30. package/dist/{EventConfigurations-kNtAj_WM.js.map → EventConfigurations-Bzh1qWXU.js.map} +1 -1
  31. package/dist/{EventsExceptionModal-D4Bf1ilS.js → EventsExceptionModal-B2SRrnB1.js} +2 -2
  32. package/dist/{EventsExceptionModal-D4Bf1ilS.js.map → EventsExceptionModal-B2SRrnB1.js.map} +1 -1
  33. package/dist/EventsSkeleton-BIcPks4T.js +61 -0
  34. package/dist/EventsSkeleton-BIcPks4T.js.map +1 -0
  35. package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js +79 -0
  36. package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js.map +1 -0
  37. package/dist/FeatureMenu-DYJmDt7q.js +521 -0
  38. package/dist/FeatureMenu-DYJmDt7q.js.map +1 -0
  39. package/dist/Features-Dne21RWu.js +14 -0
  40. package/dist/Features-Dne21RWu.js.map +1 -0
  41. package/dist/{FhirServerList-Dkq7Kbes.js → FhirServerList-DuTwnngN.js} +19 -19
  42. package/dist/{FhirServerList-Dkq7Kbes.js.map → FhirServerList-DuTwnngN.js.map} +1 -1
  43. package/dist/{FhirServerWizard-Db6Hm4bQ.js → FhirServerWizard-DZI8Olku.js} +15 -15
  44. package/dist/{FhirServerWizard-Db6Hm4bQ.js.map → FhirServerWizard-DZI8Olku.js.map} +1 -1
  45. package/dist/FlywayQuery-CQygj51V.js +179 -0
  46. package/dist/FlywayQuery-CQygj51V.js.map +1 -0
  47. package/dist/{ManageNotification-CaBAOhji.js → Google-DQxMfbaL.js} +1725 -2652
  48. package/dist/{ManageNotification-CaBAOhji.js.map → Google-DQxMfbaL.js.map} +1 -1
  49. package/dist/GrantPermissionModal-BDN66Atn.js +236 -0
  50. package/dist/GrantPermissionModal-BDN66Atn.js.map +1 -0
  51. package/dist/ImmunizationConfigurationBase-Di1KO3oW.js +7639 -0
  52. package/dist/ImmunizationConfigurationBase-Di1KO3oW.js.map +1 -0
  53. package/dist/ImmunizationConfigurationBase.css +1 -1
  54. package/dist/ImmunizationConfigurationsList-TZcLDEci.js +369 -0
  55. package/dist/ImmunizationConfigurationsList-TZcLDEci.js.map +1 -0
  56. package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js +665 -0
  57. package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js.map +1 -0
  58. package/dist/LanguagesModal-B3NTebYT.js +352 -0
  59. package/dist/LanguagesModal-B3NTebYT.js.map +1 -0
  60. package/dist/ManageDynamicFeature-BU0I45dd.js +4475 -0
  61. package/dist/ManageDynamicFeature-BU0I45dd.js.map +1 -0
  62. package/dist/{ManageEventConfiguration-DV3I5POA.js → ManageEventConfiguration-CoYcpjR9.js} +465 -397
  63. package/dist/ManageEventConfiguration-CoYcpjR9.js.map +1 -0
  64. package/dist/ManageNotification-C5MhV77Q.js +934 -0
  65. package/dist/ManageNotification-C5MhV77Q.js.map +1 -0
  66. package/dist/{ManageRole-CGYfglpo.js → ManageRole-CNZBRKGU.js} +32 -30
  67. package/dist/ManageRole-CNZBRKGU.js.map +1 -0
  68. package/dist/ManageTranslation-vRiptUAP.js +833 -0
  69. package/dist/ManageTranslation-vRiptUAP.js.map +1 -0
  70. package/dist/ManageTranslation.css +1 -1
  71. package/dist/{ManageUser-AY1EUDLI.js → ManageUser-DCFkUMV9.js} +1722 -1586
  72. package/dist/ManageUser-DCFkUMV9.js.map +1 -0
  73. package/dist/MemberProfileCard-BdUNgHRB-VywqQdFF.js +272 -0
  74. package/dist/MemberProfileCard-BdUNgHRB-VywqQdFF.js.map +1 -0
  75. package/dist/MobileAnalytics-pQoE8cG1.js +16888 -0
  76. package/dist/MobileAnalytics-pQoE8cG1.js.map +1 -0
  77. package/dist/MobileMenuManagement-Cf8IZlla.js +108 -0
  78. package/dist/MobileMenuManagement-Cf8IZlla.js.map +1 -0
  79. package/dist/{MobileTypeEventConfigModal-BxLympIO.js → MobileTypeEventConfigModal-BeveaX0C.js} +2 -2
  80. package/dist/MobileTypeEventConfigModal-BeveaX0C.js.map +1 -0
  81. package/dist/NotificationFlywayQuery-BAHVjf6N.js +247 -0
  82. package/dist/NotificationFlywayQuery-BAHVjf6N.js.map +1 -0
  83. package/dist/{NotificationList-C3Vb_jKU.js → NotificationList-DEyRZEuM.js} +109 -110
  84. package/dist/NotificationList-DEyRZEuM.js.map +1 -0
  85. package/dist/{OtherTypeEventConfigModal-BeG1GrUi.js → OtherTypeEventConfigModal-CM6VkdmY.js} +570 -478
  86. package/dist/OtherTypeEventConfigModal-CM6VkdmY.js.map +1 -0
  87. package/dist/PaymentCreatePage-CIVe0P0p-25BQVpOX.js +482 -0
  88. package/dist/PaymentCreatePage-CIVe0P0p-25BQVpOX.js.map +1 -0
  89. package/dist/PaymentsPage-BvPe5Q9F-D2gfziwW.js +157 -0
  90. package/dist/PaymentsPage-BvPe5Q9F-D2gfziwW.js.map +1 -0
  91. package/dist/PermissionsModal-CCYkcKlC.js +151 -0
  92. package/dist/PermissionsModal-CCYkcKlC.js.map +1 -0
  93. package/dist/PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js +119 -0
  94. package/dist/PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js.map +1 -0
  95. package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js +783 -0
  96. package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js.map +1 -0
  97. package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js +818 -0
  98. package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js.map +1 -0
  99. package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js +599 -0
  100. package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js.map +1 -0
  101. package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js +1302 -0
  102. package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js.map +1 -0
  103. package/dist/ProductsPage-CupVmOD4-D45a_hf-.js +252 -0
  104. package/dist/ProductsPage-CupVmOD4-D45a_hf-.js.map +1 -0
  105. package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js +648 -0
  106. package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js.map +1 -0
  107. package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js +1577 -0
  108. package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js.map +1 -0
  109. package/dist/PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js +279 -0
  110. package/dist/PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js.map +1 -0
  111. package/dist/PurchasesPage-It1GHiXl-eH4IsF_U.js +293 -0
  112. package/dist/PurchasesPage-It1GHiXl-eH4IsF_U.js.map +1 -0
  113. package/dist/QueryBuilder-CXaBe6sr.js +478 -0
  114. package/dist/QueryBuilder-CXaBe6sr.js.map +1 -0
  115. package/dist/{RoleManagement-BPl2cE27.js → RoleManagement-s8iNx2Mu.js} +131 -142
  116. package/dist/RoleManagement-s8iNx2Mu.js.map +1 -0
  117. package/dist/Roles-BIyiic67.js +14 -0
  118. package/dist/Roles-BIyiic67.js.map +1 -0
  119. package/dist/SaleCreatePage-C9kFmTvm-B3Y0o4CX.js +544 -0
  120. package/dist/SaleCreatePage-C9kFmTvm-B3Y0o4CX.js.map +1 -0
  121. package/dist/SalesPage-D18DCseD-BxktGDRQ.js +315 -0
  122. package/dist/SalesPage-D18DCseD-BxktGDRQ.js.map +1 -0
  123. package/dist/{ServerSyncModal-D_oFpv3C.js → ServerSyncModal-92U3xtqI.js} +84 -85
  124. package/dist/ServerSyncModal-92U3xtqI.js.map +1 -0
  125. package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js +747 -0
  126. package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js.map +1 -0
  127. package/dist/ShowFlywayQuery-D10Olk5Z.js +154 -0
  128. package/dist/ShowFlywayQuery-D10Olk5Z.js.map +1 -0
  129. package/dist/{ShowFlywayQuery-DVRCd384.js → ShowFlywayQuery-D1y_4A1u.js} +161 -121
  130. package/dist/ShowFlywayQuery-D1y_4A1u.js.map +1 -0
  131. package/dist/ShowQueryHistory-DRBKYDKk.js +313 -0
  132. package/dist/ShowQueryHistory-DRBKYDKk.js.map +1 -0
  133. package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js +721 -0
  134. package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js.map +1 -0
  135. package/dist/SubMenu-eEDhZUvh.js +317 -0
  136. package/dist/SubMenu-eEDhZUvh.js.map +1 -0
  137. package/dist/{TableDetails-Cf_YfnY2.js → TableDetails-BtafRxXb.js} +1069 -831
  138. package/dist/TableDetails-BtafRxXb.js.map +1 -0
  139. package/dist/{TableList-D6jnIbnz.js → TableList-Dpo6dO7S.js} +2 -2
  140. package/dist/{TableList-D6jnIbnz.js.map → TableList-Dpo6dO7S.js.map} +1 -1
  141. package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js +746 -0
  142. package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js.map +1 -0
  143. package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js +315 -0
  144. package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js.map +1 -0
  145. package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js +476 -0
  146. package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js.map +1 -0
  147. package/dist/{TypeConfiguration-37wp-gsl.js → TypeConfiguration-3O6ABrK-.js} +2 -2
  148. package/dist/{TypeConfiguration-37wp-gsl.js.map → TypeConfiguration-3O6ABrK-.js.map} +1 -1
  149. package/dist/{UserList-Bc8gYxRL.js → UserList-DgPxsnj2.js} +253 -236
  150. package/dist/{UserList-Bc8gYxRL.js.map → UserList-DgPxsnj2.js.map} +1 -1
  151. package/dist/Users-Bpc4Sazd.js +41 -0
  152. package/dist/Users-Bpc4Sazd.js.map +1 -0
  153. package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js +321 -0
  154. package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js.map +1 -0
  155. package/dist/{WidgetList-Dw_FmbbE.js → WidgetList-D7YuWfDD.js} +2 -2
  156. package/dist/{WidgetList-Dw_FmbbE.js.map → WidgetList-D7YuWfDD.js.map} +1 -1
  157. package/dist/constants-ClZJY2x1-MkSWn6TZ.js +434 -0
  158. package/dist/constants-ClZJY2x1-MkSWn6TZ.js.map +1 -0
  159. package/dist/dashboardLayoutUtils-D1xCAxp3.js +405 -0
  160. package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +1 -0
  161. package/dist/format-UOyOu75i-D0GyylyQ.js +63 -0
  162. package/dist/format-UOyOu75i-D0GyylyQ.js.map +1 -0
  163. package/dist/index.css +1 -1
  164. package/dist/index.js +4 -752
  165. package/dist/index.js.map +1 -1
  166. package/dist/index.lib-Dn8PMkeD.js +862 -0
  167. package/dist/index.lib-Dn8PMkeD.js.map +1 -0
  168. package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js +28 -0
  169. package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js.map +1 -0
  170. package/dist/validation-BzlHnL-r-CCJm2utQ.js +125 -0
  171. package/dist/validation-BzlHnL-r-CCJm2utQ.js.map +1 -0
  172. package/package.json +5 -4
  173. package/dist/AccessRights-CHu27ZOw.js +0 -1262
  174. package/dist/AccessRights-CHu27ZOw.js.map +0 -1
  175. package/dist/AddEditQueryBuilder-Brdnm6rQ.js +0 -313
  176. package/dist/AddEditQueryBuilder-Brdnm6rQ.js.map +0 -1
  177. package/dist/AddLabelModal-DFllBVcd.js +0 -734
  178. package/dist/AddLabelModal-DFllBVcd.js.map +0 -1
  179. package/dist/AddMenuConfiguration-BSQLl88V.js +0 -6570
  180. package/dist/AddMenuConfiguration-BSQLl88V.js.map +0 -1
  181. package/dist/AddRoleDrawer-CQdzQZLb.js.map +0 -1
  182. package/dist/AppModal-CtG2GjD_.js +0 -428
  183. package/dist/AppModal-CtG2GjD_.js.map +0 -1
  184. package/dist/ChangePasswordModalCore-CDxkeIIM.js.map +0 -1
  185. package/dist/ConditionConfig-DSsgGEXS.js.map +0 -1
  186. package/dist/EventsSkeleton-8iiETGcf.js +0 -76
  187. package/dist/EventsSkeleton-8iiETGcf.js.map +0 -1
  188. package/dist/FeatureMenu-jl7-Tk6y.js +0 -265
  189. package/dist/FeatureMenu-jl7-Tk6y.js.map +0 -1
  190. package/dist/Features-CObdzJp_.js +0 -13
  191. package/dist/Features-CObdzJp_.js.map +0 -1
  192. package/dist/FlywayQuery-Cx2sly6g.js +0 -169
  193. package/dist/FlywayQuery-Cx2sly6g.js.map +0 -1
  194. package/dist/ImmunizationConfigurationBase-DZGqwda2.js +0 -5910
  195. package/dist/ImmunizationConfigurationBase-DZGqwda2.js.map +0 -1
  196. package/dist/ImmunizationConfigurationsList-DdSZicTP.js +0 -344
  197. package/dist/ImmunizationConfigurationsList-DdSZicTP.js.map +0 -1
  198. package/dist/LanguagesModal-D6VfaGrl.js +0 -394
  199. package/dist/LanguagesModal-D6VfaGrl.js.map +0 -1
  200. package/dist/ManageDynamicFeature-BhONvfC_.js +0 -4189
  201. package/dist/ManageDynamicFeature-BhONvfC_.js.map +0 -1
  202. package/dist/ManageEventConfiguration-DV3I5POA.js.map +0 -1
  203. package/dist/ManageRole-CGYfglpo.js.map +0 -1
  204. package/dist/ManageTranslation-B4C9-lWD.js +0 -625
  205. package/dist/ManageTranslation-B4C9-lWD.js.map +0 -1
  206. package/dist/ManageUser-AY1EUDLI.js.map +0 -1
  207. package/dist/MobileMenuManagement-CVAKyKDa.js +0 -112
  208. package/dist/MobileMenuManagement-CVAKyKDa.js.map +0 -1
  209. package/dist/MobileTypeEventConfigModal-BxLympIO.js.map +0 -1
  210. package/dist/NotificationFlywayQuery-BY8Zzml_.js +0 -244
  211. package/dist/NotificationFlywayQuery-BY8Zzml_.js.map +0 -1
  212. package/dist/NotificationList-C3Vb_jKU.js.map +0 -1
  213. package/dist/OtherTypeEventConfigModal-BeG1GrUi.js.map +0 -1
  214. package/dist/QueryBuilder-z7eqfd7D.js +0 -383
  215. package/dist/QueryBuilder-z7eqfd7D.js.map +0 -1
  216. package/dist/RoleManagement-BPl2cE27.js.map +0 -1
  217. package/dist/ServerSyncModal-D_oFpv3C.js.map +0 -1
  218. package/dist/ShowFlywayQuery-DVRCd384.js.map +0 -1
  219. package/dist/ShowFlywayQuery-tj42YQAS.js +0 -130
  220. package/dist/ShowFlywayQuery-tj42YQAS.js.map +0 -1
  221. package/dist/ShowQueryHistory-BDN0tzHg.js +0 -190
  222. package/dist/ShowQueryHistory-BDN0tzHg.js.map +0 -1
  223. package/dist/SubMenu-DYxAPH2Z.js +0 -191
  224. package/dist/SubMenu-DYxAPH2Z.js.map +0 -1
  225. package/dist/TableDetails-Cf_YfnY2.js.map +0 -1
  226. package/dist/Users-CsJ08Kjm.js +0 -40
  227. package/dist/Users-CsJ08Kjm.js.map +0 -1
  228. package/dist/dashboardLayoutUtils-Bt5HA96J.js +0 -265
  229. package/dist/dashboardLayoutUtils-Bt5HA96J.js.map +0 -1
@@ -1 +1 @@
1
- @import"https://fonts.googleapis.com/css2?family=Mulish:wght@400;500;600;700;800&display=swap";.immunization-landing{min-height:calc(100vh - 100px);padding:40px 20px;display:flex;justify-content:center;align-items:flex-start;background-color:#fbfcff;font-family:Mulish,sans-serif!important;overflow:hidden;position:relative}.immunization-landing:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:.4;pointer-events:none;background-image:url(https://www.transparenttextures.com/patterns/white-wall.png);z-index:0}.immunization-landing .content-wrapper{width:80%;max-width:1200px;z-index:1;display:flex;flex-direction:column;align-items:center}@media(max-width:900px){.immunization-landing .content-wrapper{width:95%}}@media(min-width:2500px){.immunization-landing .content-wrapper{max-width:1800px}}.immunization-landing .header-text{text-align:center;margin-bottom:30px}@media(min-width:2500px){.immunization-landing .header-text{margin-bottom:60px}}.immunization-landing .header-text .page-title{font-size:25px!important;font-weight:800!important;color:#1a1a1a;margin-bottom:12px!important}@media(max-width:600px){.immunization-landing .header-text .page-title{font-size:24px!important}}@media(min-width:2500px){.immunization-landing .header-text .page-title{font-size:42px!important}}.immunization-landing .header-text .page-subtitle{font-size:12px!important;font-weight:500!important;color:#717171;max-width:600px;margin:0 auto}@media(max-width:600px){.immunization-landing .header-text .page-subtitle{font-size:14px!important}}@media(min-width:2500px){.immunization-landing .header-text .page-subtitle{font-size:18px!important;max-width:1000px}}.immunization-landing .search-filter-section{width:100%;max-width:850px;display:flex;gap:16px;margin-bottom:40px}@media(max-width:600px){.immunization-landing .search-filter-section{flex-direction:column;margin-bottom:40px}}.immunization-landing .search-filter-section .search-field{flex-grow:1}.immunization-landing .search-filter-section .search-field .MuiOutlinedInput-root{border-radius:12px;background-color:#fff;height:40px}.immunization-landing .search-filter-section .search-field .MuiOutlinedInput-root fieldset{border-color:#e0e0e0;border-width:1.5px}.immunization-landing .search-filter-section .search-field .MuiOutlinedInput-root:hover fieldset{border-color:#bdbdbd}.immunization-landing .search-filter-section .search-field .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#11b666}.immunization-landing .search-filter-section .search-field .search-icon{color:#9e9e9e;margin-right:8px}.immunization-landing .search-filter-section .filter-button{height:40px;padding:0 24px;border-radius:12px;border:1.5px solid #e0e0e0;color:#555;font-weight:700;text-transform:none;font-size:16px;margin-top:8px}.immunization-landing .search-filter-section .filter-button:hover{background-color:#f5f5f5;border-color:#bdbdbd}.immunization-landing .template-grid{width:100%;max-width:1200px;justify-content:center}.immunization-landing .custom-template-slot{display:flex;justify-content:center;width:100%}.immunization-landing .template-card{background:#fff;border:1.5px solid #e0e0e0;border-radius:20px;padding:24px;display:flex;flex-direction:column;transition:all .3s ease;height:95%;width:100%}.immunization-landing .template-card:hover{box-shadow:0 12px 24px #0000000d;transform:translateY(-4px)}.immunization-landing .template-card.custom-card{border:2px solid #607080;max-width:560px}.immunization-landing .template-card .card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.immunization-landing .template-card .card-header .icon-wrapper{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.immunization-landing .template-card .card-header .icon-wrapper .main-icon{font-size:20px}.immunization-landing .template-card .card-header .info-btn{color:#bdbdbd;padding:4px}.immunization-landing .template-card .card-header .info-btn:hover{color:#757575}.immunization-landing .template-card .card-title{font-size:22px!important;font-weight:800!important;color:#333;margin-top:30px!important;margin-bottom:45px!important;flex-grow:1}@media(max-width:1200px){.immunization-landing .template-card .card-title{font-size:20px!important}}.immunization-landing .template-card .card-btn{height:52px;border-radius:12px;text-transform:none;font-weight:700;font-size:16px}.immunization-landing .template-card .card-btn.secondary-btn{background-color:#f1f4f9;color:#434d5b}.immunization-landing .template-card .card-btn.secondary-btn:hover{background-color:#e5ebf3}.immunization-landing .template-card .card-btn.primary-btn{background-color:#4c5e70;color:#fff;box-shadow:0 4px 12px #11b66633}.immunization-landing .template-card .card-btn.primary-btn:hover{background-color:#394d61;box-shadow:0 6px 16px #11b6664d}.immunization-landing .template-card .card-btn .MuiButton-endIcon{margin-left:12px}.add-custom-vaccine-dialog .MuiBackdrop-root{background-color:#0f172a66;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.add-custom-vaccine-dialog .dialog-header{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 18px 12px}.add-custom-vaccine-dialog .dialog-header .header-content{display:flex;align-items:center;gap:12px}.add-custom-vaccine-dialog .dialog-header .header-content .icon-box{width:33px;height:33px;background-color:#e7f7ef;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#4c5e70;font-size:14px}.add-custom-vaccine-dialog .dialog-header .header-content .text-wrap .title{font-size:15px!important;font-weight:800!important;color:#1a1a1a;line-height:1.2}.add-custom-vaccine-dialog .dialog-header .header-content .text-wrap .subtitle{font-size:10px!important;color:#717171;font-weight:500!important}.add-custom-vaccine-dialog .dialog-header .close-button{color:#94a3b8}.add-custom-vaccine-dialog .dialog-header .close-button:hover{background-color:#f1f5f9;color:#64748b}.add-custom-vaccine-dialog .dialog-content{padding:0 18px 18px}.add-custom-vaccine-dialog .dialog-content .input-group:last-child{margin-bottom:0}.add-custom-vaccine-dialog .dialog-content .input-group .input-label{font-size:11px!important;font-weight:700!important;color:#334155}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root{border-radius:9px;background-color:#f8fafc;height:39px;transition:all .2s ease;font-size:12px}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root fieldset{border-color:#e2e8f0;border-width:1.5px}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root:hover fieldset{border-color:#cbd5e1}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#4c5e70}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root input{font-weight:500;color:#1e293b}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root input::placeholder{color:#94a3b8;opacity:1}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .input-icon{color:#94a3b8;font-size:12px;margin-right:3px}.add-custom-vaccine-dialog .dialog-actions{padding:0 24px 24px;flex-direction:column;gap:9px}.add-custom-vaccine-dialog .dialog-actions .add-btn{background-color:#4c5e70;color:#fff;height:39px;border-radius:9px;text-transform:none;font-weight:700;font-size:12px;box-shadow:0 4px 12px #11b66633;margin:0!important}.add-custom-vaccine-dialog .dialog-actions .add-btn:hover{background-color:#394d61;box-shadow:0 6px 16px #11b6664d}.add-custom-vaccine-dialog .dialog-actions .add-btn:disabled{background-color:#7e807f;color:#fff}.add-custom-vaccine-dialog .dialog-actions .cancel-btn{background-color:#f1f5f9;color:#64748b;height:39px;border-radius:9px;text-transform:none;font-weight:700;font-size:12px;margin:0!important}.add-custom-vaccine-dialog .dialog-actions .cancel-btn:hover{background-color:#e2e8f0;color:#475569}.immunization-schedule-config{min-height:calc(100vh - 100px);padding:30px 15px;background-color:#fbfcff;font-family:Mulish,sans-serif!important;position:relative}.immunization-schedule-config:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:.4;pointer-events:none;background-image:url(https://www.transparenttextures.com/patterns/white-wall.png);z-index:0}.immunization-schedule-config .content-wrapper{position:relative;z-index:1;max-width:1100px;margin:0 auto}@media(min-width:2500px){.immunization-schedule-config .content-wrapper{max-width:1800px}}.immunization-schedule-config .main-config-card{background:#fff;border:1px solid #eef2f6;border-radius:20px;padding:18px 25px;box-shadow:0 4px 20px #00000005}@media(max-width:600px){.immunization-schedule-config .main-config-card{padding:12px 16px}}.immunization-schedule-config .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}@media(max-width:900px){.immunization-schedule-config .section-header{flex-direction:column;align-items:flex-start;gap:20px}}.immunization-schedule-config .section-header .title-group{display:flex;align-items:center;gap:14px}.immunization-schedule-config .section-header .title-group .icon-box{width:40px;height:40px;background-color:#e7f7ef;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#394d61;font-size:18px}.immunization-schedule-config .section-header .title-group .text-wrap .title{font-size:20px!important;font-weight:800!important;color:#1a1a1a}.immunization-schedule-config .section-header .title-group .text-wrap .subtitle{font-size:14px!important;color:#717171;font-weight:500!important}.immunization-schedule-config .section-header .search-box{width:100%;max-width:400px}.immunization-schedule-config .section-header .search-box .MuiOutlinedInput-root{border-radius:12px;background-color:#f8fafc;height:40px;font-size:14px}.immunization-schedule-config .section-header .search-box .MuiOutlinedInput-root fieldset{border-color:#eef2f6}.immunization-schedule-config .section-header .search-box .MuiOutlinedInput-root:hover fieldset{border-color:#e2e8f0}.immunization-schedule-config .section-header .search-box .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#394d61}.immunization-schedule-config .section-header .search-box .search-icon{color:#94a3b8}.immunization-schedule-config .vaccine-grid{margin-bottom:24px;display:grid!important;grid-template-columns:repeat(6,1fr)!important;gap:12px}@media(max-width:1200px){.immunization-schedule-config .vaccine-grid{grid-template-columns:repeat(4,1fr)!important}}@media(max-width:900px){.immunization-schedule-config .vaccine-grid{grid-template-columns:repeat(3,1fr)!important}}@media(max-width:768px){.immunization-schedule-config .vaccine-grid{grid-template-columns:repeat(2,1fr)!important}}@media(max-width:480px){.immunization-schedule-config .vaccine-grid{grid-template-columns:1fr!important}}@media(min-width:2500px){.immunization-schedule-config .vaccine-grid{grid-template-columns:repeat(8,1fr)!important;gap:20px}}.immunization-schedule-config .vaccine-grid .vaccine-card{background:#fff;border:1.5px solid #edf2f7;border-radius:12px;padding:16px 20px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:12px;cursor:pointer;transition:all .25s ease;height:100%;min-height:142px}.immunization-schedule-config .vaccine-grid .vaccine-card:hover{border-color:#394d61;background-color:#f0fdf4;transform:translateY(-2px)}.immunization-schedule-config .vaccine-grid .vaccine-card.selected{background-color:#4c5e70;border-color:#394d61;color:#fff}.immunization-schedule-config .vaccine-grid .vaccine-card.selected .icon-container{background-color:#fff3;color:#fff}.immunization-schedule-config .vaccine-grid .vaccine-card.selected .vaccine-name{color:#fff!important}.immunization-schedule-config .vaccine-grid .vaccine-card.selected .vaccine-cat{color:#fffc!important}.immunization-schedule-config .vaccine-grid .vaccine-card.custom-vaccine{border-style:dashed;color:#4c5e70;justify-content:center;align-items:flex-start}.immunization-schedule-config .vaccine-grid .vaccine-card.custom-vaccine .icon-container{background-color:#e7f7ef;color:#4c5e70}.immunization-schedule-config .vaccine-grid .vaccine-card.custom-vaccine .vaccine-name{color:#4c5e70!important;font-weight:700!important;font-size:15px!important}.immunization-schedule-config .vaccine-grid .vaccine-card .icon-container{width:40px;height:40px;min-width:40px;background-color:#f1f5f9;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#64748b;font-size:18px;transition:all .2s ease}.immunization-schedule-config .vaccine-grid .vaccine-card .text-container{width:100%}.immunization-schedule-config .vaccine-grid .vaccine-card .text-container .vaccine-name{font-size:15px!important;font-weight:800!important;color:#334155;letter-spacing:.5px;line-height:1.35!important;white-space:normal;overflow-wrap:anywhere}.immunization-schedule-config .vaccine-grid .vaccine-card .text-container .vaccine-cat{font-size:12px!important;font-weight:600!important;color:#94a3b8;text-transform:uppercase;line-height:1.5!important;margin-top:6px!important;white-space:normal;overflow-wrap:anywhere}.immunization-schedule-config .selection-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:0 4px}.immunization-schedule-config .selection-info .selected-count{display:flex;align-items:center;gap:8px;font-weight:700!important;color:#717171;font-size:14px}.immunization-schedule-config .selection-info .selected-count span{color:#4c5e70;font-size:16px}.immunization-schedule-config .selection-info .select-btn{background-color:#4c5e70;color:#fff;padding:8px 20px;border-radius:8px;text-transform:none;font-weight:700;box-shadow:0 4px 12px #11b66633;font-size:14px}.immunization-schedule-config .selection-info .select-btn:hover{background-color:#4c5e70}.immunization-schedule-config .selection-info .select-btn:disabled{background-color:#e2e8f0;color:#94a3b8;box-shadow:none;cursor:not-allowed}.immunization-schedule-config .table-container{border-radius:20px;border:1px solid #edf2f7;overflow:hidden}.immunization-schedule-config .table-container .MuiTableHead-root{background-color:#f8fafc}.immunization-schedule-config .table-container .MuiTableHead-root .MuiTableCell-head{font-weight:700!important;color:#94a3b8;padding:8px 16px;border-bottom:1px solid #edf2f7;font-size:11px}.immunization-schedule-config .table-container .MuiTableBody-root .MuiTableRow-root:last-child .MuiTableCell-root{border-bottom:none}.immunization-schedule-config .table-container .MuiTableBody-root .MuiTableRow-root .MuiTableCell-root{padding:10px 16px;border-bottom:1px solid #f1f5f9}.immunization-schedule-config .table-container .no-records{padding:40px!important;text-align:center;color:#94a3b8;font-weight:600;font-size:14px}.immunization-summary{padding:12px;background-color:#f5f7fa;min-height:calc(100vh - 100px);height:calc(100vh - 100px);display:flex;flex-direction:column;overflow:hidden}.immunization-summary .header-section{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:12px;flex-shrink:0}.immunization-summary .header-section .home-btn{color:#11b666;padding:8px;transition:all .2s}.immunization-summary .header-section .home-btn:hover{background-color:#11b66614;transform:scale(1.1)}.immunization-summary .header-section .title-group .page-title{font-size:15px;font-weight:800;color:#1a1a1a;margin-bottom:2px}.immunization-summary .header-section .title-group .page-subtitle{color:#475569;font-size:11px;font-weight:600}.immunization-summary .table-container{flex:1;min-height:0;max-height:100%;border-radius:10px;box-shadow:0 3px 10px #0000000d;background-color:#fff;overflow:auto}.immunization-summary .table-container>table{table-layout:fixed;width:100%}.immunization-summary .table-container>table>thead>tr>.header-cell{background-color:#fff;color:#394d61;font-weight:800;font-size:11px;letter-spacing:.4px;text-transform:uppercase;border-bottom:1px solid #f0f0f0;padding:6px 12px}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(1){margin-left:5px;width:5%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(2){width:30%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(3){width:30%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(4){width:25%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(5){width:7%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(6){width:60px}.immunization-summary .table-container .table-row{transition:background-color .2s}.immunization-summary .table-container .table-row:hover{background-color:#f9fafb}.immunization-summary .table-container .table-row.expanded-row{background-color:#e7f7ef}.immunization-summary .table-container .table-row.expanded-row .MuiTableCell-root{border-bottom:none}.immunization-summary .table-container .table-row .MuiTableCell-root{padding:6px 12px;border-bottom:1px solid #f0f0f0;color:#1a1a1a;font-weight:500;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.immunization-summary .table-container .table-row .vaccine-name-input input{font-weight:700;padding:6px 10px;font-size:12px}.immunization-summary .table-container .table-row .vaccine-name{font-weight:700;color:#1a1a1a;font-size:13px}.immunization-summary .table-container .table-row .eligibility-cell{font-style:italic;color:#1a1a1a;font-size:11px}.immunization-summary .table-container .table-row .eligibility-cell strong{font-weight:700;font-style:normal}.immunization-summary .table-container .table-row .action-btn{margin-left:6px;padding:6px}.immunization-summary .table-container .table-row .action-btn.edit{color:#394d61}.immunization-summary .table-container .table-row .action-btn.edit:hover{background-color:#11b66614}.immunization-summary .table-container .table-row .action-btn.collapse-btn{background-color:#e7f7ef!important;color:#394d61!important;width:24px!important;height:24px!important;border-radius:50%!important;display:inline-flex!important;align-items:center;justify-content:center;padding:0!important;transition:background-color .2s}.immunization-summary .table-container .table-row .action-btn.collapse-btn:hover{background-color:#bcecd0!important}.immunization-summary .table-container .table-row .action-btn.collapse-btn svg,.immunization-summary .table-container .table-row .action-btn.collapse-btn .svg-inline--fa{font-size:12px!important}.immunization-summary .table-container .table-row .action-btn.delete{color:#f44336}.immunization-summary .table-container .table-row .action-btn.delete:hover{background-color:#f4433614}.immunization-summary .table-container .expanded-content-cell{padding:0!important;background-color:#f9fafb;border:none!important;line-height:0;height:0}.immunization-summary .table-container .expansion-container{display:flex;gap:18px;padding:12px;border-top:1px solid rgba(17,182,102,.2);line-height:normal}@media(max-width:900px){.immunization-summary .table-container .expansion-container{flex-direction:column;gap:24px}}@media(min-width:2500px){.immunization-summary .table-container .expansion-container{gap:40px;padding:24px}}.immunization-summary .table-container .expansion-container .left-panel{flex:1.44}@media(max-width:900px){.immunization-summary .table-container .expansion-container .left-panel{width:100%}}.immunization-summary .table-container .expansion-container .right-panel{flex:1;display:flex;flex-direction:column;gap:12px}@media(max-width:900px){.immunization-summary .table-container .expansion-container .right-panel{width:100%}}@media(min-width:2500px){.immunization-summary .table-container .expansion-container .right-panel{gap:24px}}.immunization-summary .table-container .expansion-container .section-label{color:#394d61;font-weight:800;font-size:11px;text-transform:uppercase;margin-bottom:8px;display:block}.immunization-summary .table-container .expansion-container .dose-type-toggle{display:flex;align-items:center;gap:8px}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-label{font-size:11px;color:#394d61;font-weight:800;text-transform:uppercase}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-container{display:flex;background:#f0f0f0;padding:4px;border-radius:12px;border:1px solid #e0e0e0}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-container .toggle-option{padding:9px 8px;font-size:12px;font-weight:700;border-radius:10px;cursor:pointer;transition:all .2s;color:#717171;text-transform:uppercase}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-container .toggle-option.active{background:#4f6172;color:#fff;box-shadow:0 1px 3px #0000001a}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-container .toggle-option:hover:not(.active){background:#e0e0e0}.immunization-summary .table-container .expansion-container .dose-table{background:#fff;border-radius:6px;border:1px solid #e0e0e0}.immunization-summary .table-container .expansion-container .dose-table .header-cell{font-size:10px;font-weight:800;color:#394d61;padding:6px 8px;text-transform:uppercase}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root{height:28px;border-radius:6px!important}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root fieldset,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root fieldset{border-radius:6px!important}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root:hover fieldset,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root:hover fieldset{border-color:#11b666!important}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root.Mui-focused,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root.Mui-focused{z-index:2}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root.Mui-focused fieldset,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#11b666!important}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-input{padding:4px 8px;font-size:11px;font-weight:600}.immunization-summary .table-container .expansion-container .dose-table .dose-input.error-input .MuiOutlinedInput-notchedOutline{border-color:#f44336}.immunization-summary .table-container .expansion-container .dose-table .error-msg{color:#f44336;font-size:9px;font-weight:600;display:flex;align-items:flex-start;gap:2px;line-height:1.1;margin-top:2px}.immunization-summary .table-container .expansion-container .side-card{background:#fff;border-radius:6px;border:1px solid #e0e0e0;padding:10px}.immunization-summary .table-container .expansion-container .side-card .card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:6px;flex-wrap:wrap;line-height:1.2}.immunization-summary .table-container .expansion-container .side-card .card-header .add-link{color:#657584;font-weight:700;font-size:10px;cursor:pointer;text-transform:uppercase;line-height:1.2;white-space:nowrap}.immunization-summary .table-container .expansion-container .side-card .card-header .add-link:hover{color:#243a50}.immunization-summary .table-container .expansion-container .side-card .region-item{display:flex;justify-content:space-between;align-items:center;padding:6px;background:#f9fafb;border-radius:5px;border:1px solid #f0f0f0}.immunization-summary .table-container .expansion-container .side-card .region-item .region-path{font-size:12px;font-weight:500}.immunization-summary .table-container .expansion-container .side-card .region-item .region-actions{color:#11b666}.immunization-summary .table-container .expansion-container .side-card .region-item .region-actions .delete{color:#f44336}.immunization-summary .table-container .expansion-container .side-card .dependency-hint{padding:10px;background:#f9fafb;border-radius:5px;border:1px solid #f0f0f0;color:#444;font-size:11px;font-weight:500;line-height:1.35;white-space:normal;overflow-wrap:anywhere;word-break:normal;min-height:38px;display:flex;align-items:center;justify-content:center}.immunization-summary .table-container .expansion-container .side-card .dependency-item .dependency-inputs{display:flex;gap:6px;margin-bottom:6px}.immunization-summary .table-container .expansion-footer{display:flex;justify-content:flex-end;gap:12px;margin:5px 12px 15px 0}.immunization-summary .table-container .expansion-footer .discard-btn{border-color:#f44336;color:#f22e1f;padding:5px 16px;font-weight:700;font-size:11px;border-radius:6px}.immunization-summary .table-container .expansion-footer .discard-btn:hover{border-color:#d32f2f;background-color:#fef2f2}.immunization-summary .table-container .expansion-footer .save-btn{background-color:#394d61;color:#fff;padding:5px 16px;font-weight:700;font-size:11px;border-radius:6px}.immunization-summary .table-container .expansion-footer .save-btn:hover{background-color:#243a50}@media(max-width:900px){.immunization-summary{height:auto;min-height:calc(100vh - 100px)}}
1
+ @import"https://fonts.googleapis.com/css2?family=Mulish:wght@400;500;600;700;800&display=swap";.immunization-landing{min-height:calc(100vh - 100px);padding:40px 20px;display:flex;justify-content:center;align-items:flex-start;background-color:#fbfcff;font-family:Mulish,sans-serif!important;overflow:hidden;position:relative}.immunization-landing:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:.4;pointer-events:none;background-image:url(https://www.transparenttextures.com/patterns/white-wall.png);z-index:0}.immunization-landing .content-wrapper{width:80%;max-width:1200px;z-index:1;display:flex;flex-direction:column;align-items:center}@media(max-width:900px){.immunization-landing .content-wrapper{width:95%}}@media(min-width:2500px){.immunization-landing .content-wrapper{max-width:1800px}}.immunization-landing .header-text{text-align:center;margin-bottom:30px}@media(min-width:2500px){.immunization-landing .header-text{margin-bottom:60px}}.immunization-landing .header-text .page-title{font-size:25px!important;font-weight:800!important;color:#1a1a1a;margin-bottom:12px!important}@media(max-width:600px){.immunization-landing .header-text .page-title{font-size:24px!important}}@media(min-width:2500px){.immunization-landing .header-text .page-title{font-size:42px!important}}.immunization-landing .header-text .page-subtitle{font-size:12px!important;font-weight:500!important;color:#717171;max-width:600px;margin:0 auto}@media(max-width:600px){.immunization-landing .header-text .page-subtitle{font-size:14px!important}}@media(min-width:2500px){.immunization-landing .header-text .page-subtitle{font-size:18px!important;max-width:1000px}}.immunization-landing .search-filter-section{width:100%;max-width:850px;display:flex;gap:16px;margin-bottom:40px}@media(max-width:600px){.immunization-landing .search-filter-section{flex-direction:column;margin-bottom:40px}}.immunization-landing .search-filter-section .search-field{flex-grow:1}.immunization-landing .search-filter-section .search-field .MuiOutlinedInput-root{border-radius:12px;background-color:#fff;height:40px}.immunization-landing .search-filter-section .search-field .MuiOutlinedInput-root fieldset{border-color:#e0e0e0;border-width:1.5px}.immunization-landing .search-filter-section .search-field .MuiOutlinedInput-root:hover fieldset{border-color:#bdbdbd}.immunization-landing .search-filter-section .search-field .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#11b666}.immunization-landing .search-filter-section .search-field .search-icon{color:#9e9e9e;margin-right:8px}.immunization-landing .search-filter-section .filter-button{height:40px;padding:0 24px;border-radius:12px;border:1.5px solid #e0e0e0;color:#555;font-weight:700;text-transform:none;font-size:16px;margin-top:8px}.immunization-landing .search-filter-section .filter-button:hover{background-color:#f5f5f5;border-color:#bdbdbd}.immunization-landing .template-grid{width:100%;max-width:1200px;justify-content:center}.immunization-landing .custom-template-slot{display:flex;justify-content:center;width:100%}.immunization-landing .template-card{background:#fff;border:1.5px solid #e0e0e0;border-radius:20px;padding:24px;display:flex;flex-direction:column;transition:all .3s ease;height:95%;width:100%}.immunization-landing .template-card:hover{box-shadow:0 12px 24px #0000000d;transform:translateY(-4px)}.immunization-landing .template-card.custom-card{border:2px solid #607080;max-width:560px}.immunization-landing .template-card .card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.immunization-landing .template-card .card-header .icon-wrapper{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.immunization-landing .template-card .card-header .icon-wrapper .main-icon{font-size:20px}.immunization-landing .template-card .card-header .info-btn{color:#bdbdbd;padding:4px}.immunization-landing .template-card .card-header .info-btn:hover{color:#757575}.immunization-landing .template-card .card-title{font-size:22px!important;font-weight:800!important;color:#333;margin-top:30px!important;margin-bottom:45px!important;flex-grow:1}@media(max-width:1200px){.immunization-landing .template-card .card-title{font-size:20px!important}}.immunization-landing .template-card .card-btn{height:52px;border-radius:12px;text-transform:none;font-weight:700;font-size:16px}.immunization-landing .template-card .card-btn.secondary-btn{background-color:#f1f4f9;color:#434d5b}.immunization-landing .template-card .card-btn.secondary-btn:hover{background-color:#e5ebf3}.immunization-landing .template-card .card-btn.primary-btn{background-color:#4c5e70;color:#fff;box-shadow:0 4px 12px #11b66633}.immunization-landing .template-card .card-btn.primary-btn:hover{background-color:#394d61;box-shadow:0 6px 16px #11b6664d}.immunization-landing .template-card .card-btn .MuiButton-endIcon{margin-left:12px}.add-custom-vaccine-dialog .MuiBackdrop-root{background-color:#0f172a66;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.add-custom-vaccine-dialog .dialog-header{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 18px 12px}.add-custom-vaccine-dialog .dialog-header .header-content{display:flex;align-items:center;gap:12px}.add-custom-vaccine-dialog .dialog-header .header-content .icon-box{width:33px;height:33px;background-color:#e7f7ef;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#4c5e70;font-size:14px}.add-custom-vaccine-dialog .dialog-header .header-content .text-wrap .title{font-size:15px!important;font-weight:800!important;color:#1a1a1a;line-height:1.2}.add-custom-vaccine-dialog .dialog-header .header-content .text-wrap .subtitle{font-size:10px!important;color:#717171;font-weight:500!important}.add-custom-vaccine-dialog .dialog-header .close-button{color:#94a3b8}.add-custom-vaccine-dialog .dialog-header .close-button:hover{background-color:#f1f5f9;color:#64748b}.add-custom-vaccine-dialog .dialog-content{padding:0 18px 18px}.add-custom-vaccine-dialog .dialog-content .input-group:last-child{margin-bottom:0}.add-custom-vaccine-dialog .dialog-content .input-group .input-label{font-size:11px!important;font-weight:700!important;color:#334155}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root{border-radius:9px;background-color:#f8fafc;height:39px;transition:all .2s ease;font-size:12px}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root fieldset{border-color:#e2e8f0;border-width:1.5px}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root:hover fieldset{border-color:#cbd5e1}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#4c5e70}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root input{font-weight:500;color:#1e293b}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .MuiOutlinedInput-root input::placeholder{color:#94a3b8;opacity:1}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .input-icon{color:#94a3b8;font-size:12px;margin-right:3px}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .code-action-button{color:#94a3b8;font-size:11px;padding:5px}.add-custom-vaccine-dialog .dialog-content .input-group .custom-textfield .code-action-button:hover{color:#4c5e70;background-color:#e2e8f0}.add-custom-vaccine-dialog .dialog-content .input-group .read-only-textfield .MuiOutlinedInput-root{background-color:#f1f5f9}.add-custom-vaccine-dialog .dialog-content .input-group .read-only-textfield .MuiOutlinedInput-root:hover fieldset{border-color:#e2e8f0}.add-custom-vaccine-dialog .dialog-content .input-group .read-only-textfield .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#e2e8f0;border-width:1.5px}.add-custom-vaccine-dialog .dialog-content .input-group .read-only-textfield .MuiOutlinedInput-root.Mui-error fieldset,.add-custom-vaccine-dialog .dialog-content .input-group .read-only-textfield .MuiOutlinedInput-root.Mui-error:hover fieldset,.add-custom-vaccine-dialog .dialog-content .input-group .read-only-textfield .MuiOutlinedInput-root.Mui-error.Mui-focused fieldset{border-color:#d32f2f}.add-custom-vaccine-dialog .dialog-content .input-group .read-only-textfield .MuiOutlinedInput-root input{color:#475569;letter-spacing:.3px;cursor:default}.add-custom-vaccine-dialog .dialog-actions{padding:0 24px 24px;flex-direction:column;gap:9px}.add-custom-vaccine-dialog .dialog-actions .add-btn{background-color:#4c5e70;color:#fff;height:39px;border-radius:9px;text-transform:none;font-weight:700;font-size:12px;box-shadow:0 4px 12px #11b66633;margin:0!important}.add-custom-vaccine-dialog .dialog-actions .add-btn:hover{background-color:#394d61;box-shadow:0 6px 16px #11b6664d}.add-custom-vaccine-dialog .dialog-actions .add-btn:disabled{background-color:#7e807f;color:#fff}.add-custom-vaccine-dialog .dialog-actions .cancel-btn{background-color:#f1f5f9;color:#64748b;height:39px;border-radius:9px;text-transform:none;font-weight:700;font-size:12px;margin:0!important}.add-custom-vaccine-dialog .dialog-actions .cancel-btn:hover{background-color:#e2e8f0;color:#475569}.immunization-schedule-config{min-height:calc(100vh - 100px);padding:30px 15px;background-color:#fbfcff;font-family:Mulish,sans-serif!important;position:relative}.immunization-schedule-config:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:.4;pointer-events:none;background-image:url(https://www.transparenttextures.com/patterns/white-wall.png);z-index:0}.immunization-schedule-config .content-wrapper{position:relative;z-index:1;max-width:1100px;margin:0 auto}@media(min-width:2500px){.immunization-schedule-config .content-wrapper{max-width:1800px}}.immunization-schedule-config .main-config-card{background:#fff;border:1px solid #eef2f6;border-radius:20px;padding:18px 25px;box-shadow:0 4px 20px #00000005}@media(max-width:600px){.immunization-schedule-config .main-config-card{padding:12px 16px}}.immunization-schedule-config .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}@media(max-width:900px){.immunization-schedule-config .section-header{flex-direction:column;align-items:flex-start;gap:20px}}.immunization-schedule-config .section-header .title-group{display:flex;align-items:center;gap:14px}.immunization-schedule-config .section-header .title-group .icon-box{width:40px;height:40px;background-color:#e7f7ef;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#394d61;font-size:18px}.immunization-schedule-config .section-header .title-group .text-wrap .title{font-size:20px!important;font-weight:800!important;color:#1a1a1a}.immunization-schedule-config .section-header .title-group .text-wrap .subtitle{font-size:14px!important;color:#717171;font-weight:500!important}.immunization-schedule-config .section-header .search-box{width:100%;max-width:400px}.immunization-schedule-config .section-header .search-box .MuiOutlinedInput-root{border-radius:12px;background-color:#f8fafc;height:40px;font-size:14px}.immunization-schedule-config .section-header .search-box .MuiOutlinedInput-root fieldset{border-color:#eef2f6}.immunization-schedule-config .section-header .search-box .MuiOutlinedInput-root:hover fieldset{border-color:#e2e8f0}.immunization-schedule-config .section-header .search-box .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#394d61}.immunization-schedule-config .section-header .search-box .search-icon{color:#94a3b8}.immunization-schedule-config .vaccine-grid{margin-bottom:24px;display:grid!important;grid-template-columns:repeat(6,1fr)!important;gap:12px}@media(max-width:1200px){.immunization-schedule-config .vaccine-grid{grid-template-columns:repeat(4,1fr)!important}}@media(max-width:900px){.immunization-schedule-config .vaccine-grid{grid-template-columns:repeat(3,1fr)!important}}@media(max-width:768px){.immunization-schedule-config .vaccine-grid{grid-template-columns:repeat(2,1fr)!important}}@media(max-width:480px){.immunization-schedule-config .vaccine-grid{grid-template-columns:1fr!important}}@media(min-width:2500px){.immunization-schedule-config .vaccine-grid{grid-template-columns:repeat(8,1fr)!important;gap:20px}}.immunization-schedule-config .vaccine-grid .vaccine-card{background:#fff;border:1.5px solid #edf2f7;border-radius:12px;padding:16px 20px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:12px;cursor:pointer;transition:all .25s ease;height:100%;min-height:142px}.immunization-schedule-config .vaccine-grid .vaccine-card:hover{border-color:#394d61;background-color:#f0fdf4;transform:translateY(-2px)}.immunization-schedule-config .vaccine-grid .vaccine-card.selected{background-color:#4c5e70;border-color:#394d61;color:#fff}.immunization-schedule-config .vaccine-grid .vaccine-card.selected .icon-container{background-color:#fff3;color:#fff}.immunization-schedule-config .vaccine-grid .vaccine-card.selected .vaccine-name{color:#fff!important}.immunization-schedule-config .vaccine-grid .vaccine-card.selected .vaccine-cat{color:#fffc!important}.immunization-schedule-config .vaccine-grid .vaccine-card.custom-vaccine{border-style:dashed;color:#4c5e70;justify-content:center;align-items:flex-start}.immunization-schedule-config .vaccine-grid .vaccine-card.custom-vaccine .icon-container{background-color:#e7f7ef;color:#4c5e70}.immunization-schedule-config .vaccine-grid .vaccine-card.custom-vaccine .vaccine-name{color:#4c5e70!important;font-weight:700!important;font-size:15px!important}.immunization-schedule-config .vaccine-grid .vaccine-card.disabled{opacity:.5;cursor:not-allowed}.immunization-schedule-config .vaccine-grid .vaccine-card.disabled:hover{border-color:#edf2f7;background-color:#fff;transform:none}.immunization-schedule-config .vaccine-grid .vaccine-card.disabled.selected:hover{border-color:#394d61;background-color:#4c5e70}.immunization-schedule-config .vaccine-grid .vaccine-card .icon-container{width:40px;height:40px;min-width:40px;background-color:#f1f5f9;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#64748b;font-size:18px;transition:all .2s ease}.immunization-schedule-config .vaccine-grid .vaccine-card .text-container{width:100%}.immunization-schedule-config .vaccine-grid .vaccine-card .text-container .vaccine-name{font-size:15px!important;font-weight:800!important;color:#334155;letter-spacing:.5px;line-height:1.35!important;white-space:normal;overflow-wrap:anywhere}.immunization-schedule-config .vaccine-grid .vaccine-card .text-container .vaccine-cat{font-size:12px!important;font-weight:600!important;color:#94a3b8;text-transform:uppercase;line-height:1.5!important;margin-top:6px!important;white-space:normal;overflow-wrap:anywhere}.immunization-schedule-config .selection-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:0 4px}.immunization-schedule-config .selection-info .selected-count{display:flex;align-items:center;gap:8px;font-weight:700!important;color:#717171;font-size:14px}.immunization-schedule-config .selection-info .selected-count span{color:#4c5e70;font-size:16px}.immunization-schedule-config .selection-info .select-btn{background-color:#4c5e70;color:#fff;padding:8px 20px;border-radius:8px;text-transform:none;font-weight:700;box-shadow:0 4px 12px #11b66633;font-size:14px}.immunization-schedule-config .selection-info .select-btn:hover{background-color:#4c5e70}.immunization-schedule-config .selection-info .select-btn:disabled{background-color:#e2e8f0;color:#94a3b8;box-shadow:none;cursor:not-allowed}.immunization-schedule-config .table-container{border-radius:20px;border:1px solid #edf2f7;overflow:hidden}.immunization-schedule-config .table-container .MuiTableHead-root{background-color:#f8fafc}.immunization-schedule-config .table-container .MuiTableHead-root .MuiTableCell-head{font-weight:700!important;color:#94a3b8;padding:8px 16px;border-bottom:1px solid #edf2f7;font-size:11px}.immunization-schedule-config .table-container .MuiTableBody-root .MuiTableRow-root:last-child .MuiTableCell-root{border-bottom:none}.immunization-schedule-config .table-container .MuiTableBody-root .MuiTableRow-root .MuiTableCell-root{padding:10px 16px;border-bottom:1px solid #f1f5f9}.immunization-schedule-config .table-container .no-records{padding:40px!important;text-align:center;color:#94a3b8;font-weight:600;font-size:14px}.immunization-summary{padding:12px;background-color:#f5f7fa;min-height:calc(100vh - 100px);height:calc(100vh - 100px);display:flex;flex-direction:column;overflow:hidden}.immunization-summary .header-section{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:12px;flex-shrink:0}.immunization-summary .header-section .home-btn{color:#11b666;padding:8px;transition:all .2s}.immunization-summary .header-section .home-btn:hover{background-color:#11b66614;transform:scale(1.1)}.immunization-summary .header-section .title-group .page-title{font-size:15px;font-weight:800;color:#1a1a1a;margin-bottom:2px}.immunization-summary .header-section .title-group .page-subtitle{color:#475569;font-size:11px;font-weight:600}.immunization-summary .table-container{flex:1;min-height:0;max-height:100%;border-radius:10px;box-shadow:0 3px 10px #0000000d;background-color:#fff;overflow:auto}.immunization-summary .table-container>table{table-layout:fixed;width:100%}.immunization-summary .table-container>table>thead>tr>.header-cell{background-color:#fff;color:#394d61;font-weight:800;font-size:11px;letter-spacing:.4px;text-transform:uppercase;border-bottom:1px solid #f0f0f0;padding:6px 12px}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(1){margin-left:5px;width:5%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(2){width:30%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(3){width:55%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(4){width:7%}.immunization-summary .table-container>table>thead>tr>.header-cell:nth-child(5){width:60px}.immunization-summary .table-container .table-row{transition:background-color .2s}.immunization-summary .table-container .table-row:hover{background-color:#f9fafb}.immunization-summary .table-container .table-row.expanded-row{background-color:#e7f7ef}.immunization-summary .table-container .table-row.expanded-row .MuiTableCell-root{border-bottom:none}.immunization-summary .table-container .table-row .MuiTableCell-root{padding:6px 12px;border-bottom:1px solid #f0f0f0;color:#1a1a1a;font-weight:500;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.immunization-summary .table-container .table-row .vaccine-name-input input{font-weight:700;padding:6px 10px;font-size:12px}.immunization-summary .table-container .table-row .vaccine-name{font-weight:700;color:#1a1a1a;font-size:13px}.immunization-summary .table-container .table-row .action-btn{margin-left:6px;padding:6px}.immunization-summary .table-container .table-row .action-btn.edit{color:#394d61}.immunization-summary .table-container .table-row .action-btn.edit:hover{background-color:#11b66614}.immunization-summary .table-container .table-row .action-btn.collapse-btn{background-color:#e7f7ef!important;color:#394d61!important;width:24px!important;height:24px!important;border-radius:50%!important;display:inline-flex!important;align-items:center;justify-content:center;padding:0!important;transition:background-color .2s}.immunization-summary .table-container .table-row .action-btn.collapse-btn:hover{background-color:#bcecd0!important}.immunization-summary .table-container .table-row .action-btn.collapse-btn svg,.immunization-summary .table-container .table-row .action-btn.collapse-btn .svg-inline--fa{font-size:12px!important}.immunization-summary .table-container .table-row .action-btn.delete{color:#f44336}.immunization-summary .table-container .table-row .action-btn.delete:hover{background-color:#f4433614}.immunization-summary .table-container .expanded-content-cell{padding:0!important;background-color:#f9fafb;border:none!important;line-height:0;height:0}.immunization-summary .table-container .expansion-container{display:flex;gap:18px;padding:12px;border-top:1px solid rgba(17,182,102,.2);line-height:normal}@media(max-width:900px){.immunization-summary .table-container .expansion-container{flex-direction:column;gap:24px}}@media(min-width:2500px){.immunization-summary .table-container .expansion-container{gap:40px;padding:24px}}.immunization-summary .table-container .expansion-container .left-panel{flex:1.44}@media(max-width:900px){.immunization-summary .table-container .expansion-container .left-panel{width:100%}}.immunization-summary .table-container .expansion-container .right-panel{flex:1;display:flex;flex-direction:column;gap:12px}@media(max-width:900px){.immunization-summary .table-container .expansion-container .right-panel{width:100%}}@media(min-width:2500px){.immunization-summary .table-container .expansion-container .right-panel{gap:24px}}.immunization-summary .table-container .expansion-container .section-label{color:#394d61;font-weight:800;font-size:11px;text-transform:uppercase;margin-bottom:8px;display:block}.immunization-summary .table-container .expansion-container .dose-type-toggle{display:flex;align-items:center;gap:8px}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-label{font-size:11px;color:#394d61;font-weight:800;text-transform:uppercase}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-container{display:flex;background:#f0f0f0;padding:4px;border-radius:12px;border:1px solid #e0e0e0}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-container .toggle-option{padding:9px 8px;font-size:12px;font-weight:700;border-radius:10px;cursor:pointer;transition:all .2s;color:#717171;text-transform:uppercase}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-container .toggle-option.active{background:#4f6172;color:#fff;box-shadow:0 1px 3px #0000001a}.immunization-summary .table-container .expansion-container .dose-type-toggle .toggle-container .toggle-option:hover:not(.active){background:#e0e0e0}.immunization-summary .table-container .expansion-container .dose-table{background:#fff;border-radius:6px;border:1px solid #e0e0e0}.immunization-summary .table-container .expansion-container .dose-table .header-cell{font-size:10px;font-weight:800;color:#394d61;padding:6px 8px;text-transform:uppercase}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root{height:28px;border-radius:6px!important}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root fieldset,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root fieldset{border-radius:6px!important}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root:hover fieldset,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root:hover fieldset{border-color:#11b666!important}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root.Mui-focused,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root.Mui-focused{z-index:2}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-root.Mui-focused fieldset,.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiOutlinedInput-root.Mui-focused fieldset{border-color:#11b666!important}.immunization-summary .table-container .expansion-container .dose-table .dose-input .MuiInputBase-input{padding:4px 8px;font-size:11px;font-weight:600}.immunization-summary .table-container .expansion-container .dose-table .dose-input.error-input .MuiOutlinedInput-notchedOutline{border-color:#f44336}.immunization-summary .table-container .expansion-container .dose-table .error-msg{color:#f44336;font-size:9px;font-weight:600;display:flex;align-items:flex-start;gap:2px;line-height:1.1;margin-top:2px}.immunization-summary .table-container .expansion-container .side-card{background:#fff;border-radius:6px;border:1px solid #e0e0e0;padding:10px}.immunization-summary .table-container .expansion-container .side-card .card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:6px;flex-wrap:wrap;line-height:1.2}.immunization-summary .table-container .expansion-container .side-card .card-header .add-link{color:#657584;font-weight:700;font-size:10px;cursor:pointer;text-transform:uppercase;line-height:1.2;white-space:nowrap}.immunization-summary .table-container .expansion-container .side-card .card-header .add-link:hover{color:#243a50}.immunization-summary .table-container .expansion-container .side-card .region-item{display:flex;justify-content:space-between;align-items:center;padding:6px;background:#f9fafb;border-radius:5px;border:1px solid #f0f0f0}.immunization-summary .table-container .expansion-container .side-card .region-item .region-path{font-size:12px;font-weight:500}.immunization-summary .table-container .expansion-container .side-card .region-item .region-actions{color:#11b666}.immunization-summary .table-container .expansion-container .side-card .region-item .region-actions .delete{color:#f44336}.immunization-summary .table-container .expansion-container .side-card .dependency-hint{padding:10px;background:#f9fafb;border-radius:5px;border:1px solid #f0f0f0;color:#444;font-size:11px;font-weight:500;line-height:1.35;white-space:normal;overflow-wrap:anywhere;word-break:normal;min-height:38px;display:flex;align-items:center;justify-content:center}.immunization-summary .table-container .expansion-container .side-card .dependency-item .dependency-inputs{display:flex;gap:6px;margin-bottom:6px}.immunization-summary .table-container .expansion-footer{display:flex;justify-content:flex-end;gap:12px;margin:5px 12px 15px 0}.immunization-summary .table-container .expansion-footer .discard-btn{border-color:#f44336;color:#f22e1f;padding:5px 16px;font-weight:700;font-size:11px;border-radius:6px}.immunization-summary .table-container .expansion-footer .discard-btn:hover{border-color:#d32f2f;background-color:#fef2f2}.immunization-summary .table-container .expansion-footer .save-btn{background-color:#394d61;color:#fff;padding:5px 16px;font-weight:700;font-size:11px;border-radius:6px}.immunization-summary .table-container .expansion-footer .save-btn:hover{background-color:#243a50}@media(max-width:900px){.immunization-summary{height:auto;min-height:calc(100vh - 100px)}}
@@ -0,0 +1,369 @@
1
+ import { jsxs as f, Fragment as oe, jsx as a } from "react/jsx-runtime";
2
+ import { useState as r, useCallback as ne, useEffect as _, useRef as ie } from "react";
3
+ import { Dialog as se, DialogTitle as re, Box as q, Typography as U, IconButton as le, DialogContent as ce, DialogActions as de, Button as S, Card as me, TextField as ue } from "@mui/material";
4
+ import { showToast as h } from "@/common/toaster/toaster";
5
+ import { execute as G } from "@/common/services/GlobalApis";
6
+ import j from "@mui/material/Grid2";
7
+ import { useNavigate as ye } from "react-router";
8
+ import { u as fe, I as pe } from "./ImmunizationSkeleton-D2tdv5k-.js";
9
+ import A from "prop-types";
10
+ import M from "@/common/fontAwesomeIcons/FontAwesomeIcons";
11
+ import he from "@/views/custom-components/PostgresEditor";
12
+ import J from "@/views/custom-components/CustomConfirmationModal";
13
+ import ge from "@/hooks/useTrackEvent";
14
+ import { useTranslateProvider as Ce } from "@/common/languageTranslator/TranslationContext";
15
+ import be from "@/views/custom-components/CustomizedTable/CustomizedTableV2";
16
+ import { FontAwesomeIcon as H } from "@fortawesome/react-fontawesome";
17
+ import { faPen as we, faTrash as ve } from "@fortawesome/free-solid-svg-icons";
18
+ import { getAssignedFeatures as Ie } from "@/utils/feature";
19
+ import F from "@/common/services/util/GeneralUtil.js";
20
+ const V = ({ configuredQuery: g, open: b, onClose: p, dataTestId: k }) => {
21
+ const [w, v] = r(""), { translate: c } = Ce(), [O, y] = r(!1), L = ne(() => {
22
+ let n = JSON.parse(JSON.stringify(g));
23
+ if (n.forEach((s) => {
24
+ delete s.id, delete s.created_at, delete s.updated_at;
25
+ }), !Array.isArray(n) || n.length === 0) {
26
+ h({ message: "No data to generate", type: "error" });
27
+ return;
28
+ }
29
+ const m = Object.keys(n[0]), C = n.map((s) => `(${m.map(($) => {
30
+ const t = s[$];
31
+ return typeof t == "string" ? `'${t.replace(/'/g, "''")}'` : t == null ? "NULL" : typeof t == "boolean" ? t ? "TRUE" : "FALSE" : t;
32
+ }).join(", ")})`).join(`,
33
+ `), N = `${m.filter((s) => s !== "code").map((s) => `${s} = EXCLUDED.${s}`).join(", ")}, updated_at = CURRENT_TIMESTAMP`, E = `INSERT INTO rch_immunization_configuration (${m.join(", ")})
34
+ VALUES
35
+ ${C}
36
+ ON CONFLICT (code) DO UPDATE SET
37
+ ${N};
38
+ `;
39
+ v(E);
40
+ }, [g]), I = () => {
41
+ var n;
42
+ (n = navigator == null ? void 0 : navigator.clipboard) == null || n.writeText(w).then(() => {
43
+ h({ message: "Query Copied", type: "success" }), p();
44
+ });
45
+ }, R = () => {
46
+ x(), y((n) => !n);
47
+ }, T = ge(), x = () => {
48
+ const n = new Blob([w], { type: "text/plain" }), m = (n.size / 1024).toFixed(2), C = URL.createObjectURL(n), d = document.createElement("a");
49
+ d.href = C, d.download = `V${(/* @__PURE__ */ new Date()).getTime()}__CHANGE_IN_IMMUNIZATION_TABLE}.sql`, document.body.appendChild(d), d.click(), T("file_download", {
50
+ file_type: "sql",
51
+ file_name: d.download,
52
+ file_size: `${m} KB`,
53
+ download_status: "success"
54
+ }), document.body.removeChild(d), URL.revokeObjectURL(C), h({ message: "Query Downloaded SuccessFully", type: "success" }), p();
55
+ }, z = () => {
56
+ x();
57
+ };
58
+ return _(() => {
59
+ g && L();
60
+ }, [g]), /* @__PURE__ */ f(oe, { children: [
61
+ /* @__PURE__ */ a(
62
+ J,
63
+ {
64
+ description: "This Flyway contains keyword 'public'. Are you sure you want to download?",
65
+ title: "CONFIRM ACTION",
66
+ handleClick: R,
67
+ open: O,
68
+ handleClose: () => y((n) => !n),
69
+ dataTestId: "showflywayquery-customconfirmationmodal-confirmation-modal"
70
+ }
71
+ ),
72
+ /* @__PURE__ */ f(se, { open: b, onClose: p, fullWidth: !0, maxWidth: "md", "data-testid": k, children: [
73
+ /* @__PURE__ */ f(
74
+ re,
75
+ {
76
+ sx: {
77
+ display: "flex",
78
+ alignItems: "flex-start",
79
+ justifyContent: "space-between",
80
+ gap: 2,
81
+ py: 1.5,
82
+ borderBottom: "1px solid",
83
+ borderColor: "divider"
84
+ },
85
+ children: [
86
+ /* @__PURE__ */ f(q, { children: [
87
+ /* @__PURE__ */ a(U, { variant: "subtitle1", component: "span", sx: { fontWeight: 700, display: "block" }, children: c("Flyway Query") }),
88
+ /* @__PURE__ */ a(U, { variant: "body2", color: "text.secondary", children: c("Copy or download this migration to recreate this configuration on another environment.") })
89
+ ] }),
90
+ /* @__PURE__ */ a(
91
+ le,
92
+ {
93
+ size: "small",
94
+ onClick: p,
95
+ "aria-label": c("Close"),
96
+ "data-testid": "showflywayquery-close-icon",
97
+ children: /* @__PURE__ */ a(M, { iconName: "faXmark" })
98
+ }
99
+ )
100
+ ]
101
+ }
102
+ ),
103
+ /* @__PURE__ */ a(ce, { children: /* @__PURE__ */ a(
104
+ q,
105
+ {
106
+ "data-testid": "showflywayquery-textfield-query-display",
107
+ role: "region",
108
+ "aria-label": c("Flyway Query"),
109
+ sx: {
110
+ mt: 2,
111
+ overflow: "hidden",
112
+ borderRadius: (n) => `${n.shape.borderRadius}px`,
113
+ border: "1px solid",
114
+ borderColor: "divider"
115
+ },
116
+ children: /* @__PURE__ */ a(he, { mode: "READ_ONLY", height: "45vh", defaultValue: w })
117
+ }
118
+ ) }),
119
+ /* @__PURE__ */ f(de, { sx: { px: 3, py: 2, borderTop: "1px solid", borderColor: "divider" }, children: [
120
+ /* @__PURE__ */ a(
121
+ S,
122
+ {
123
+ onClick: p,
124
+ variant: "outlined",
125
+ color: "inherit",
126
+ size: "small",
127
+ "data-testid": "showflywayquery-button-cancel-action",
128
+ children: c("Close")
129
+ }
130
+ ),
131
+ /* @__PURE__ */ a(
132
+ S,
133
+ {
134
+ onClick: I,
135
+ variant: "outlined",
136
+ color: "primary",
137
+ size: "small",
138
+ startIcon: /* @__PURE__ */ a(M, { iconName: "faCopy" }),
139
+ "data-testid": "showflywayquery-button-copyquery-action",
140
+ children: c("Copy Query")
141
+ }
142
+ ),
143
+ /* @__PURE__ */ a(
144
+ S,
145
+ {
146
+ onClick: z,
147
+ variant: "contained",
148
+ color: "primary",
149
+ size: "small",
150
+ startIcon: /* @__PURE__ */ a(M, { iconName: "faDownload" }),
151
+ "data-testid": "showflywayquery-button-download-action",
152
+ children: c("Download")
153
+ }
154
+ )
155
+ ] })
156
+ ] })
157
+ ] });
158
+ };
159
+ V.propTypes = {
160
+ configuredQuery: A.any,
161
+ open: A.any,
162
+ onClose: A.any,
163
+ dataTestId: A.any
164
+ };
165
+ const Be = () => {
166
+ const g = ye(), { t: b } = fe(), [p, k] = r([]), [w, v] = r([]), [c, O] = r([]), [y, L] = r(""), [I, R] = r(!1), [T, x] = r(!1), [z, n] = r([]), [m, C] = r([]), [d, N] = r(!1), [E, s] = r(!1), [B, $] = r({}), [t, W] = r(null), Y = ie(t);
167
+ _(() => {
168
+ Y.current = t;
169
+ }, [t]), _(() => {
170
+ C(() => p.filter(
171
+ (o) => z.some((l) => l.id === o.id)
172
+ ));
173
+ }, [z]);
174
+ const K = [
175
+ { field: "Sr. No.", label: "#", align: "left" },
176
+ // { field: 'code', label: 'Code', align: 'left', isBold: true },
177
+ { field: "name", label: "Name", align: "left" },
178
+ { field: "fromAgeDays", label: "Eligible From" },
179
+ { field: "toAgeDays", label: "Eligible To" },
180
+ { field: "base_date", label: "Base Date" },
181
+ { field: "Actions", label: "Actions" }
182
+ ], X = [
183
+ F.hasCheckRights(t == null ? void 0 : t["update.manage.manageImmunization"]) && {
184
+ label: "Fill Form",
185
+ icon: /* @__PURE__ */ a(H, { icon: we }),
186
+ onClick: (e) => {
187
+ g(`/ui/medplat/manage/manageImmunization/${e == null ? void 0 : e.id}`);
188
+ }
189
+ },
190
+ F.hasCheckRights(t == null ? void 0 : t["update.manage.manageImmunization"]) && {
191
+ label: "",
192
+ icon: /* @__PURE__ */ a(H, { icon: ve }),
193
+ onClick: (e) => {
194
+ s(!0), $(e);
195
+ }
196
+ }
197
+ ];
198
+ _(() => {
199
+ P();
200
+ }, []);
201
+ const Z = (e) => {
202
+ const o = JSON.parse(e);
203
+ return o.dependencies && o.dependencies.length > 0 ? o.dependencies[0].message : "NA";
204
+ }, Q = (e) => {
205
+ if (typeof e != "number" || e <= 0) return "-";
206
+ const o = Math.floor(e / 365), l = e % 365, u = Math.floor(l / 30), D = l % 30, i = [];
207
+ return o > 0 && i.push(`${o} ${o === 1 ? "year" : "years"}`), u > 0 && i.push(`${u} ${u === 1 ? "month" : "months"}`), (D > 0 || o === 0 && u === 0) && i.push(`${D} ${D === 1 ? "day" : "days"}`), i.join(" ") || "0 days";
208
+ }, P = async () => {
209
+ var e, o;
210
+ try {
211
+ N((i) => !i);
212
+ const l = await G({
213
+ code: "get_immunization_detail",
214
+ parameters: {}
215
+ });
216
+ k((e = l == null ? void 0 : l.data) == null ? void 0 : e.result);
217
+ const u = (o = l == null ? void 0 : l.data) == null ? void 0 : o.result.filter((i) => i.is_active === !0).map((i) => ({
218
+ ...i,
219
+ fromAgeDays: Q(i.from_age_days),
220
+ toAgeDays: Q(i.to_age_days),
221
+ validationMessage: i.validations ? Z(i.validations) : "NA"
222
+ })), { data: D } = await Ie(
223
+ "techo.manage.immunizationConfiguratorList"
224
+ );
225
+ W(JSON.parse(D)), v(u), O(u), N((i) => !i);
226
+ } catch (l) {
227
+ console.error(l), h({ message: "Error in loading immunization", type: "error" }), N((u) => !u);
228
+ }
229
+ }, ee = (e) => {
230
+ L(e.target.value);
231
+ };
232
+ _(() => {
233
+ if (!y) {
234
+ v(c);
235
+ return;
236
+ }
237
+ const e = c.filter(
238
+ (o) => o.code.toLowerCase().includes(y.toLowerCase()) || o.name.toLowerCase().includes(y.toLowerCase())
239
+ );
240
+ v(e);
241
+ }, [y, c]);
242
+ const te = () => {
243
+ (m == null ? void 0 : m.length) > 0 ? x(!0) : h({ message: "Select atleast one row", type: "info" });
244
+ }, ae = async (e) => {
245
+ try {
246
+ let o = {
247
+ id: parseInt(e.id),
248
+ code: e.code,
249
+ name: e.name,
250
+ isrecursive: e.is_recursive || !1,
251
+ fromAgeDays: e.from_age_days,
252
+ toAgeDays: e.to_age_days,
253
+ basedate: e.base_date,
254
+ validations: e.validations,
255
+ recursiveobject: e.recursive_object,
256
+ locations: e.locations || "[]",
257
+ active: !1
258
+ };
259
+ s(!1), await G({
260
+ code: "update_immunization",
261
+ parameters: { ...o }
262
+ }), P(), h({
263
+ message: "Immunization status changed Successfully!",
264
+ type: "success"
265
+ });
266
+ } catch (o) {
267
+ console.error(o), h({ type: "error", message: "error toggling status" });
268
+ }
269
+ };
270
+ return !d && t !== null && !F.hasCheckRights(t == null ? void 0 : t["view.manage.manageImmunization"]) ? /* @__PURE__ */ a(q, { className: "flex justify-center items-center w-full h-[80vh]", children: /* @__PURE__ */ a(
271
+ me,
272
+ {
273
+ className: "h-80 w-150 flex justify-center items-center",
274
+ children: /* @__PURE__ */ a(U, { variant: "h5", className: "text-customBlue", children: "You dont have permission to view Manage Immunization" })
275
+ }
276
+ ) }) : /* @__PURE__ */ f(j, { container: !0, justifyContent: "flex-end", className: "mt-5 mr-5", children: [
277
+ T && /* @__PURE__ */ a(
278
+ V,
279
+ {
280
+ configuredQuery: m,
281
+ open: T,
282
+ onClose: () => {
283
+ x((e) => !e);
284
+ },
285
+ dataTestId: "eventconfiguration-query-showflywayquery"
286
+ }
287
+ ),
288
+ /* @__PURE__ */ f(pe, { isLoading: d, children: [
289
+ /* @__PURE__ */ f(j, { item: !0, children: [
290
+ /* @__PURE__ */ a(
291
+ ue,
292
+ {
293
+ className: "bg-white p-0 m-0",
294
+ placeholder: "Search code",
295
+ sx: {
296
+ "& .MuiInputBase-root": { height: "35px" },
297
+ // Controls the overall input height
298
+ "& .MuiInputBase-input": { padding: "6px 12px" }
299
+ // Adjust text padding inside input
300
+ },
301
+ value: y,
302
+ onChange: ee
303
+ }
304
+ ),
305
+ F.hasCheckRights(t == null ? void 0 : t["view.manage.manageImmunization.flywayQuery"], t == null ? void 0 : t.canGenerateFlyway) && /* @__PURE__ */ a(
306
+ S,
307
+ {
308
+ className: "mb-4 ml-4",
309
+ variant: "contained",
310
+ onClick: () => {
311
+ R((e) => !e);
312
+ },
313
+ size: "small",
314
+ "data-testid": "immunizationList-button-add",
315
+ children: b(I ? "Hide Selection" : "Select Immunization")
316
+ }
317
+ ),
318
+ I && !T && /* @__PURE__ */ a(
319
+ S,
320
+ {
321
+ className: "mb-4 ml-4",
322
+ variant: "contained",
323
+ onClick: () => {
324
+ te();
325
+ },
326
+ size: "small",
327
+ "data-testid": "immunizationList-button-add",
328
+ children: b("Show Flyway")
329
+ }
330
+ )
331
+ ] }),
332
+ /* @__PURE__ */ a(j, { size: { xs: 12 }, children: /* @__PURE__ */ a(
333
+ be,
334
+ {
335
+ dataTestId: "Immunization-configurator-customizedtable",
336
+ columns: K,
337
+ tableData: w,
338
+ paginationConfig: {
339
+ pagination: !0,
340
+ rowsPerPageInTable: 20
341
+ },
342
+ actions: X,
343
+ rowSelectionConfig: {
344
+ rowSelectionEnabled: I,
345
+ selectedRows: z,
346
+ setSelectedRows: n
347
+ },
348
+ styleConfig: { tableStyle: { maxHeight: 45 } },
349
+ isLoading: d,
350
+ strip: !0
351
+ }
352
+ ) })
353
+ ] }),
354
+ /* @__PURE__ */ a(
355
+ J,
356
+ {
357
+ open: E,
358
+ description: "Are you sure you want to change the state of this Immunization ?",
359
+ title: "CONFIRM ACTION",
360
+ handleClick: () => ae(B),
361
+ handleClose: () => s(!1)
362
+ }
363
+ )
364
+ ] });
365
+ };
366
+ export {
367
+ Be as default
368
+ };
369
+ //# sourceMappingURL=ImmunizationConfigurationsList-TZcLDEci.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImmunizationConfigurationsList-TZcLDEci.js","sources":["../src/views/Immunization/ShowFlywayQuery.jsx","../src/views/Immunization/ImmunizationConfigurationsList.jsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { Box, Dialog, DialogActions, DialogContent, DialogTitle, Button, IconButton, Typography } from '@mui/material';\nimport FontAwesomeIcons from '@/common/fontAwesomeIcons/FontAwesomeIcons';\nimport PostgresEditor from '@/views/custom-components/PostgresEditor';\nimport { showToast } from '@/common/toaster/toaster';\nimport CustomConfirmationModal from '@/views/custom-components/CustomConfirmationModal';\n// import moment from 'moment/moment';\nimport useTrackEvent from '@/hooks/useTrackEvent';\nimport { useTranslateProvider } from '@/common/languageTranslator/TranslationContext';\n\n/**\n * A React functional component that displays a configured Flyway query.\n * @module ShowFlywayQuery\n * @param {Object} props - Component properties.\n * @param {Object} props.configuredQuery - The query configuration object to display.\n * @param {boolean} props.open - Boolean flag indicating if the component should be visible.\n * @param {function} props.onClose - Callback function to close the component.\n */\n\nconst ShowFlywayQuery = ({ configuredQuery, open, onClose, dataTestId }) => {\n const [text, setText] = useState('');\n // const [isPublicKeyword, setIsPublicKeyword] = useState(false);\n const { translate } = useTranslateProvider();\n\n const [openConfirm, setOpenConfirm] = useState(false);\n\n /**\n *\n * Generates a SQL query string based on the `configuredQuery` object.\n * @function generateQueryText\n * @param {Object} configuredQuery - The query configuration object used to generate the SQL query.\n * @param {string} configuredQuery.code - The unique code for the query.\n * @param {string} configuredQuery.uuid - The unique identifier for the query.\n * @param {number} configuredQuery.createdBy - The ID of the user who created the query.\n * @param {string} [configuredQuery.params] - The parameters for the query.\n * @param {string} configuredQuery.query - The actual SQL query text.\n * @param {string} [configuredQuery.description] - A description of the query.\n * @param {boolean} [configuredQuery.returnsResultSet] - Flag indicating if the query returns a result set.\n * @param {string} [configuredQuery.state] - The state of the query (e.g., 'ACTIVE').\n * @returns {void}\n */\n\n const generateQueryText = useCallback(() => {\n // Ensure configuredQuery is a non-empty array\n // if (!Array.isArray(configuredQuery) || configuredQuery.length === 0) {\n // throw new Error('configuredQuery should be a non-empty array of objects.');\n // }\n\n // Remove 'id', 'created_at', and 'updated_at' properties from each object\n let queryList = JSON.parse(JSON.stringify(configuredQuery));\n queryList.forEach((obj) => {\n delete obj.id;\n delete obj.created_at;\n delete obj.updated_at;\n });\n\n // Extract column names from the first object\n if (!Array.isArray(queryList) || queryList.length === 0) {\n showToast({ message: 'No data to generate', type: 'error' });\n return;\n }\n\n // Extract column names from the first object\n const columns = Object.keys(queryList[0]);\n\n // Map over queryList to create a string of values for each object\n const values = queryList\n .map((row) => {\n const valueString = columns\n .map((col) => {\n const value = row[col];\n if (typeof value === 'string') {\n // Escape single quotes in strings and enclose in single quotes\n return `'${value.replace(/'/g, \"''\")}'`;\n } else if (value === null || value === undefined) {\n // Handle null or undefined values\n return 'NULL';\n } else if (typeof value === 'boolean') {\n // Convert boolean to PostgreSQL boolean literals\n return value ? 'TRUE' : 'FALSE';\n }\n // For numbers and other types, return as is\n return value;\n })\n .join(', ');\n return `(${valueString})`;\n })\n .join(',\\n');\n\n // Construct the ON CONFLICT clause to update all columns except the primary key\n const updateClause = columns\n .filter((col) => col !== 'code') // Assuming 'code' is the primary key\n .map((col) => `${col} = EXCLUDED.${col}`)\n .join(', ');\n const finalUpdateClause = `${updateClause}, updated_at = CURRENT_TIMESTAMP`;\n\n // Construct the final INSERT statement with ON CONFLICT DO UPDATE\n\n // Construct the final INSERT statement with ON CONFLICT DO UPDATE\n const query = `INSERT INTO rch_immunization_configuration (${columns.join(', ')}) \\nVALUES\\n${values}\\nON CONFLICT (code) DO UPDATE SET\\n${finalUpdateClause};\n `;\n\n // return query;\n setText(query);\n\n // const publicKeyword = configuredQuery?.configJson?.includes('public');\n // setIsPublicKeyword(publicKeyword);\n // // Delete existing event configuration\n // let queryText = `DELETE FROM EVENT_CONFIGURATION WHERE uuid = '${configuredQuery.uuid}';\\n\\n`;\n\n // // Insert new event configuration\n // queryText += `INSERT INTO EVENT_CONFIGURATION (created_by, created_on, modified_by, modified_on, day, description, event_type, event_type_detail_id, form_type_id, hour, minute, name, config_json, state, trigger_when, event_type_detail_code, uuid)\\nVALUES (\\n`;\n // queryText += `${configuredQuery.createdBy}, current_date, ${configuredQuery.createdBy}, current_date, `;\n\n // queryText +=\n // configuredQuery.day !== undefined && configuredQuery.day !== null ? `${configuredQuery.day}, ` : 'null, ';\n // queryText += configuredQuery.description ? `'${configuredQuery.description.replace(/'/g, \"''\")}', ` : 'null, ';\n // queryText += `'${configuredQuery.eventType}', `;\n // queryText +=\n // configuredQuery.eventTypeDetailId !== undefined && configuredQuery.eventTypeDetailId !== null\n // ? `${configuredQuery.eventTypeDetailId}, `\n // : 'null, ';\n // queryText +=\n // configuredQuery.formTypeId !== undefined && configuredQuery.formTypeId !== null\n // ? `${configuredQuery.formTypeId}, `\n // : 'null, ';\n // queryText +=\n // configuredQuery.hour !== undefined && configuredQuery.hour !== null ? `${configuredQuery.hour}, ` : 'null, ';\n // queryText +=\n // configuredQuery.minute !== undefined && configuredQuery.minute !== null\n // ? `${configuredQuery.minute}, `\n // : 'null, ';\n // queryText += `'${configuredQuery.name.replace(/'/g, \"''\")}', `;\n // queryText += `'${configuredQuery.configJson.replace(/'/g, \"''\")}', `;\n // queryText += `'${configuredQuery.state}', `;\n // queryText +=\n // configuredQuery.trigerWhen !== undefined && configuredQuery.trigerWhen !== null\n // ? `'${configuredQuery.trigerWhen}', `\n // : 'null, ';\n // queryText +=\n // configuredQuery.eventTypeDetailCode !== undefined && configuredQuery.eventTypeDetailCode !== null\n // ? `${configuredQuery.eventTypeDetailCode}, `\n // : 'null, ';\n // queryText += `'${configuredQuery.uuid}');\\n`;\n\n // if (configuredQuery.eventType === 'TIMMER_BASED' && configuredQuery.state !== 'INACTIVE') {\n // let nextDate = moment();\n // switch (configuredQuery.trigerWhen) {\n // case 'MONTHLY':\n // nextDate.add(1, 'months').set({\n // date: configuredQuery.day,\n // hour: configuredQuery.hour || 0,\n // minute: configuredQuery.minute || 0,\n // second: 0,\n // });\n // break;\n // case 'DAILY':\n // nextDate\n // .add(getNextDate(configuredQuery), 'days')\n // .set({ hour: configuredQuery.hour || 0, minute: configuredQuery.minute || 0, second: 0 });\n // break;\n // case 'HOURLY':\n // nextDate.add(1, 'hours').set({ minute: getNextDate(configuredQuery), second: 0 });\n // break;\n // case 'MINUTE':\n // nextDate.add(configuredQuery.minute, 'minutes').set({ second: 0 });\n // break;\n // default:\n // }\n\n // queryText += `\\nDELETE FROM TIMER_EVENT WHERE event_config_uuid = '${configuredQuery.uuid}' AND status = 'NEW';\\n\\n`;\n // queryText += `INSERT INTO timer_event (event_config_uuid, processed, status, type, system_trigger_on)\\nVALUES (\\n`;\n // queryText += `'${configuredQuery.uuid}', false, 'NEW', 'TIMER_EVENT', '${nextDate.format('MM-DD-yyyy HH:mm:ss')}');\\n`;\n // }\n\n // // Handle notification configurations\n // if (configuredQuery.configJson !== null) {\n // const notificationConfigs = JSON.parse(configuredQuery.configJson);\n // let firstDelete = true;\n\n // notificationConfigs.forEach((config) => {\n // if (config.conditions !== null && config.conditions.length > 0) {\n // config.conditions.forEach((condition) => {\n // if (condition.notificaitonConfigsType !== null && condition.notificaitonConfigsType.length > 0) {\n // if (firstDelete) {\n // queryText += `\\nDELETE FROM EVENT_CONFIGURATION_TYPE WHERE event_config_uuid = '${configuredQuery.uuid}';\\n`;\n // firstDelete = false;\n // }\n // condition.notificaitonConfigsType.forEach((configType) => {\n // queryText += `\\nINSERT INTO EVENT_CONFIGURATION_TYPE (id, base_date_field_name, event_config_uuid, day, email_subject, email_subject_parameter, hour, minute, mobile_notification_type, template, template_parameter, triger_when, type, user_field_name, family_field_name, member_field_name, query_master_id, query_master_param_json, query_code, sms_config_json, push_notification_config_json)\\nVALUES (\\n`;\n // queryText += `'${configType.id}', `;\n // queryText += configType.baseDateFieldName ? `'${configType.baseDateFieldName}', ` : 'null, ';\n // queryText += `'${configuredQuery.uuid}', `;\n // queryText += configType.day !== undefined && configType.day !== null ? `${configType.day}, ` : 'null, ';\n // queryText += configType.emailSubject ? `'${configType.emailSubject.replace(/'/g, \"''\")}', ` : 'null, ';\n // queryText += configType.emailSubjectParameter ? `'${configType.emailSubjectParameter}', ` : 'null, ';\n // queryText +=\n // configType.hour !== undefined && configType.hour !== null ? `${configType.hour}, ` : 'null, ';\n // queryText +=\n // configType.miniute !== undefined && configType.miniute !== null\n // ? `${configType.miniute}, `\n // : 'null, ';\n // queryText +=\n // configType.mobileNotificationType !== undefined && configType.mobileNotificationType !== null\n // ? `${configType.mobileNotificationType}, `\n // : 'null, ';\n // queryText += configType.template ? `'${configType.template.replace(/'/g, \"''\")}', ` : 'null, ';\n // queryText += configType.templateParameter\n // ? `'${configType.templateParameter.replace(/'/g, \"''\")}', `\n // : 'null, ';\n // queryText += configType.trigerWhen ? `'${configType.trigerWhen}', ` : 'null, ';\n // queryText += configType.type ? `'${configType.type}', ` : 'null, ';\n // queryText += configType.userFieldName ? `'${configType.userFieldName}', ` : 'null, ';\n // queryText += configType.familyFieldName ? `'${configType.familyFieldName}', ` : 'null, ';\n // queryText += configType.memberFieldName ? `'${configType.memberFieldName}', ` : 'null, ';\n // queryText +=\n // configType.queryMasterId !== undefined && configType.queryMasterId !== null\n // ? `${configType.queryMasterId}, `\n // : 'null, ';\n // queryText +=\n // configType.queryMasterParamJson !== undefined && configType.queryMasterParamJson !== null\n // ? `'${JSON.stringify(configType.queryMasterParamJson).replace(/'/g, \"''\")}', `\n // : 'null, ';\n // queryText += configType.queryCode ? `'${configType.queryCode}', ` : 'null, ';\n // queryText +=\n // configType.smsConfigJson !== undefined && configType.smsConfigJson !== null\n // ? `'${JSON.stringify(configType.smsConfigJson).replace(/'/g, \"''\")}', `\n // : 'null, ';\n // queryText +=\n // configType.pushNotificationConfigJson !== undefined && configType.pushNotificationConfigJson !== null\n // ? `'${JSON.stringify(configType.pushNotificationConfigJson).replace(/'/g, \"''\")}'`\n // : 'null';\n // queryText += ');\\n';\n\n // // Handle mobile notification configs\n // if (configType.mobileNotificationConfigs && configType.mobileNotificationConfigs.length > 0) {\n // queryText += `\\nDELETE FROM EVENT_MOBILE_CONFIGURATION WHERE notification_type_config_id = '${configType.id}';\\n`;\n // configType.mobileNotificationConfigs.forEach((mobileConfig) => {\n // queryText += `\\nINSERT INTO EVENT_MOBILE_CONFIGURATION (id, notification_code, notification_type_config_id, number_of_days_added_for_due_date, number_of_days_added_for_expiry_date, number_of_days_added_for_on_date)\\nVALUES (\\n`;\n // queryText += `'${mobileConfig.id}', '${mobileConfig.notificationCode}', '${mobileConfig.notificationTypeConfigId}', ${mobileConfig.numberOfDaysAddedForDueDate}, ${mobileConfig.numberOfDaysAddedForExpiryDate}, ${mobileConfig.numberOfDaysAddedForOnDate});\\n`;\n // });\n // }\n // });\n // }\n // });\n // }\n // });\n // }\n\n // // Insert sync system configuration master\n // let eventConfigObj = {\n // id: configuredQuery.id,\n // name: configuredQuery.name,\n // description: configuredQuery.description,\n // eventType: configuredQuery.eventType,\n // eventTypeDetailId: configuredQuery.eventTypeDetailId,\n // formTypeId: configuredQuery.formTypeId,\n // eventTypeDetailCode: configuredQuery.eventTypeDetailCode,\n // trigerWhen: configuredQuery.trigerWhen,\n // day: configuredQuery.day,\n // hour: configuredQuery.hour,\n // minute: configuredQuery.minute,\n // state: configuredQuery.state,\n // createdBy: configuredQuery.createdBy,\n // createdOn: moment().valueOf(),\n // notificationConfigDetails: JSON.parse(configuredQuery.configJson),\n // status: null,\n // completionTime: null,\n // configJson: null,\n // uuid: configuredQuery.uuid,\n // };\n\n // queryText += `\\nINSERT INTO SYNC_SYSTEM_CONFIGURATION_MASTER (feature_type, config_json, created_on, created_by, feature_uuid, feature_name)\\nVALUES (\\n`;\n // queryText += `'EVENT_BUILDER', '${JSON.stringify(eventConfigObj).replace(/'/g, \"''\")}', current_date, ${configuredQuery.createdBy}, '${configuredQuery.uuid}', '${configuredQuery.name}');\\n`;\n // setText(queryText);\n }, [configuredQuery]);\n\n /**\n *\n * Copies the generated query text to the clipboard and displays a success message.\n * @function copyQuery\n * @returns {void}\n */\n\n // const getNextDate = function (eventObj) {\n // const now = new Date();\n // const eventDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), eventObj.hour, eventObj.minute);\n\n // if (eventDate > now) {\n // return 0;\n // } else {\n // return 1;\n // }\n // };\n\n const copyQuery = () => {\n navigator?.clipboard?.writeText(text).then(() => {\n showToast({ message: 'Query Copied', type: 'success' });\n onClose();\n });\n };\n\n /**\n * Triggers a download operation and toggles the confirmation dialog visibility.\n * The function assumes that `download` and `setOpenConfirm` are available in the current scope.\n * @function askForConfirmation\n * @returns {void}\n */\n\n const askForConfirmation = () => {\n download();\n setOpenConfirm((cur) => !cur);\n };\n\n const trackEvent = useTrackEvent();\n\n /**\n * Creates and triggers a download of a text file containing the query text.\n *\n * @function download\n * @returns {void}\n */\n\n const download = () => {\n const blob = new Blob([text], { type: 'text/plain' });\n const blobSizeInKB = (blob.size / 1024).toFixed(2);\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `V${new Date().getTime()}__CHANGE_IN_IMMUNIZATION_TABLE}.sql`;\n document.body.appendChild(a);\n a.click();\n\n trackEvent('file_download', {\n file_type: 'sql',\n file_name: a.download,\n file_size: `${blobSizeInKB} KB`,\n download_status: 'success',\n });\n\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n\n showToast({ message: 'Query Downloaded SuccessFully', type: 'success' });\n\n onClose();\n };\n\n /**\n *\n * Handles the download process based on the presence of a public keyword in the query text.\n * @function handleDownload\n * @returns {void}\n */\n\n const handleDownload = () => {\n download();\n // if (isPublicKeyword) {\n // setOpenConfirm((cur) => !cur);\n // } else {\n // download();\n // }\n };\n\n /**\n * `useEffect` Hook to Generate Query Text\n *\n * This effect hook is used to generate the SQL query text whenever the `configuredQuery` dependency changes.\n *\n * @function useEffect\n * @param {Object} configuredQuery - The query configuration object used to generate the SQL query text.\n * @param {function} generateQueryText - A function that generates the query text based on `configuredQuery`.\n */\n\n useEffect(() => {\n if (configuredQuery) {\n generateQueryText();\n }\n }, [configuredQuery]);\n return (\n <>\n <CustomConfirmationModal\n description={\"This Flyway contains keyword 'public'. Are you sure you want to download?\"}\n title={'CONFIRM ACTION'}\n handleClick={askForConfirmation}\n open={openConfirm}\n handleClose={() => setOpenConfirm((cur) => !cur)}\n dataTestId=\"showflywayquery-customconfirmationmodal-confirmation-modal\"\n />\n <Dialog open={open} onClose={onClose} fullWidth maxWidth=\"md\" data-testid={dataTestId}>\n <DialogTitle\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 2,\n py: 1.5,\n borderBottom: '1px solid',\n borderColor: 'divider',\n }}\n >\n <Box>\n <Typography variant=\"subtitle1\" component=\"span\" sx={{ fontWeight: 700, display: 'block' }}>\n {translate('Flyway Query')}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate('Copy or download this migration to recreate this configuration on another environment.')}\n </Typography>\n </Box>\n <IconButton\n size=\"small\"\n onClick={onClose}\n aria-label={translate('Close')}\n data-testid=\"showflywayquery-close-icon\"\n >\n <FontAwesomeIcons iconName=\"faXmark\" />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <Box\n data-testid=\"showflywayquery-textfield-query-display\"\n role=\"region\"\n aria-label={translate('Flyway Query')}\n sx={{\n mt: 2,\n overflow: 'hidden',\n borderRadius: (t) => `${t.shape.borderRadius}px`,\n border: '1px solid',\n borderColor: 'divider',\n }}\n >\n <PostgresEditor mode=\"READ_ONLY\" height=\"45vh\" defaultValue={text} />\n </Box>\n </DialogContent>\n <DialogActions sx={{ px: 3, py: 2, borderTop: '1px solid', borderColor: 'divider' }}>\n <Button\n onClick={onClose}\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n data-testid=\"showflywayquery-button-cancel-action\"\n >\n {translate('Close')}\n </Button>\n <Button\n onClick={copyQuery}\n variant=\"outlined\"\n color=\"primary\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faCopy\" />}\n data-testid=\"showflywayquery-button-copyquery-action\"\n >\n {translate('Copy Query')}\n </Button>\n <Button\n onClick={handleDownload}\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faDownload\" />}\n data-testid=\"showflywayquery-button-download-action\"\n >\n {translate('Download')}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n};\n\nShowFlywayQuery.propTypes = {\n configuredQuery: PropTypes.any,\n open: PropTypes.any,\n onClose: PropTypes.any,\n dataTestId: PropTypes.any,\n};\n\nexport default ShowFlywayQuery;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { Button, TextField, Box, Card, Typography } from \"@mui/material\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { execute } from \"@/common/services/GlobalApis\";\nimport Grid from \"@mui/material/Grid2\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router\";\nimport { ImmunizationConfigurationsListSkeleton } from \"./Skeletons/ImmunizationSkeleton\";\nimport ShowFlywayQuery from \"./ShowFlywayQuery.jsx\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPen, faTrash } from \"@fortawesome/free-solid-svg-icons\";\nimport { getAssignedFeatures } from \"@/utils/feature\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil.js\";\n\nconst ImmunizationConfigurationsList = () => {\n const navigate = useNavigate();\n const { t } = useTranslation();\n const [immunizationData, setImmunizationData] = useState([]);\n const [tableData, setTableData] = useState([]);\n const [originalData, setOriginalData] = useState([]);\n const [search, setSearch] = useState(\"\");\n const [openSelectColumn, setOpenSelectColumn] = useState(false);\n const [openFlywayQuery, setOpenFlywayQuery] = useState(false);\n const [selectedRows, setSelectedRows] = useState([]);\n const [configuredQueryList, setConfiguredQueryList] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [rowData, setRowData] = useState({});\n const [rights, setRights] = useState(null);\n const rightsRef = useRef(rights);\n\n useEffect(() => {\n rightsRef.current = rights;\n }, [rights]);\n\n\n useEffect(() => {\n setConfiguredQueryList(() => {\n const filteredImmunization = immunizationData.filter((item) =>\n selectedRows.some((selected) => selected.id === item.id)\n );\n return filteredImmunization;\n });\n }, [selectedRows]);\n\n const tableFields = [\n { field: \"Sr. No.\", label: \"#\", align: \"left\" },\n // { field: 'code', label: 'Code', align: 'left', isBold: true },\n { field: \"name\", label: \"Name\", align: \"left\" },\n { field: \"fromAgeDays\", label: \"Eligible From\" },\n { field: \"toAgeDays\", label: \"Eligible To\" },\n { field: \"base_date\", label: \"Base Date\" },\n { field: \"Actions\", label: \"Actions\" },\n ];\n\n const actions = [\n GeneralUtil.hasCheckRights(rights?.['update.manage.manageImmunization']) &&\n {\n label: \"Fill Form\",\n icon: <FontAwesomeIcon icon={faPen} />,\n onClick: (row) => {\n navigate(`/ui/medplat/manage/manageImmunization/${row?.id}`);\n },\n },\n GeneralUtil.hasCheckRights(rights?.['update.manage.manageImmunization']) &&\n {\n label: \"\",\n icon: <FontAwesomeIcon icon={faTrash} />,\n onClick: (row) => {\n setOpen(true);\n setRowData(row);\n },\n },\n ];\n\n useEffect(() => {\n loadInitial();\n }, []);\n\n const getValidationMessage = (validations) => {\n const validationsObj = JSON.parse(validations);\n return validationsObj.dependencies && validationsObj.dependencies.length > 0\n ? validationsObj.dependencies[0].message\n : \"NA\";\n };\n\n const convertDaysToHumanReadable = (days) => {\n if (typeof days !== \"number\" || days <= 0) return \"-\";\n\n const years = Math.floor(days / 365);\n const remainingDaysAfterYears = days % 365;\n const months = Math.floor(remainingDaysAfterYears / 30);\n const remainingDays = remainingDaysAfterYears % 30;\n\n const parts = [];\n if (years > 0) {\n parts.push(`${years} ${years === 1 ? \"year\" : \"years\"}`);\n }\n if (months > 0) {\n parts.push(`${months} ${months === 1 ? \"month\" : \"months\"}`);\n }\n if (remainingDays > 0 || (years === 0 && months === 0)) {\n parts.push(`${remainingDays} ${remainingDays === 1 ? \"day\" : \"days\"}`);\n }\n\n return parts.join(\" \") || \"0 days\";\n };\n\n const loadInitial = async () => {\n try {\n setIsLoading((cur) => !cur);\n const res = await execute({\n code: \"get_immunization_detail\",\n parameters: {},\n });\n setImmunizationData(res?.data?.result);\n const immunizations = res?.data?.result\n .filter((el) => el.is_active === true)\n .map((el) => {\n return {\n ...el,\n fromAgeDays: convertDaysToHumanReadable(el.from_age_days),\n toAgeDays: convertDaysToHumanReadable(el.to_age_days),\n validationMessage: el.validations\n ? getValidationMessage(el.validations)\n : \"NA\",\n };\n });\n const { data: assignedFeatures } = await getAssignedFeatures(\n \"techo.manage.immunizationConfiguratorList\"\n );\n setRights(JSON.parse(assignedFeatures));\n setTableData(immunizations);\n setOriginalData(immunizations);\n setIsLoading((cur) => !cur);\n } catch (error) {\n console.error(error);\n showToast({ message: \"Error in loading immunization\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n const handleSearch = (e) => {\n setSearch(e.target.value);\n };\n\n useEffect(() => {\n if (!search) {\n setTableData(originalData); // Reset to original data if search is empty\n return;\n }\n\n const filteredData = originalData.filter(\n (item) =>\n item.code.toLowerCase().includes(search.toLowerCase()) ||\n item.name.toLowerCase().includes(search.toLowerCase())\n );\n\n setTableData(filteredData);\n }, [search, originalData]);\n\n const handleFlywayOpen = () => {\n if (configuredQueryList?.length > 0) {\n setOpenFlywayQuery(true);\n } else {\n showToast({ message: \"Select atleast one row\", type: \"info\" });\n }\n };\n\n const handleOpenStatusModal = async (row) => {\n try {\n let formData = {\n id: parseInt(row.id),\n code: row.code,\n name: row.name,\n isrecursive: row.is_recursive || false,\n fromAgeDays: row.from_age_days,\n toAgeDays: row.to_age_days,\n basedate: row.base_date,\n validations: row.validations,\n recursiveobject: row.recursive_object,\n locations: row.locations || \"[]\",\n active: false,\n };\n setOpen(false);\n await execute({\n code: \"update_immunization\",\n parameters: { ...formData },\n });\n loadInitial();\n showToast({\n message: \"Immunization status changed Successfully!\",\n type: \"success\",\n });\n } catch (error) {\n console.error(error);\n showToast({ type: \"error\", message: \"error toggling status\" });\n }\n };\n\n return !isLoading && rights !== null && !GeneralUtil.hasCheckRights(rights?.[\"view.manage.manageImmunization\"]) ? (\n <Box className=\"flex justify-center items-center w-full h-[80vh]\">\n <Card\n className=\"h-80 w-150 flex justify-center items-center\"\n >\n <Typography variant=\"h5\" className=\"text-customBlue\">\n You dont have permission to view Manage Immunization\n </Typography>\n </Card>\n </Box>\n ) : (\n <Grid container justifyContent=\"flex-end\" className=\"mt-5 mr-5\">\n {openFlywayQuery && (\n <ShowFlywayQuery\n configuredQuery={configuredQueryList}\n open={openFlywayQuery}\n onClose={() => {\n setOpenFlywayQuery((cur) => !cur);\n }}\n dataTestId=\"eventconfiguration-query-showflywayquery\"\n />\n )}\n <ImmunizationConfigurationsListSkeleton isLoading={isLoading}>\n <Grid item>\n <TextField\n className=\"bg-white p-0 m-0\"\n placeholder=\"Search code\"\n sx={{\n \"& .MuiInputBase-root\": { height: \"35px\" }, // Controls the overall input height\n \"& .MuiInputBase-input\": { padding: \"6px 12px\" }, // Adjust text padding inside input\n }}\n value={search}\n onChange={handleSearch}\n />\n {GeneralUtil.hasCheckRights(rights?.['view.manage.manageImmunization.flywayQuery'], rights?.canGenerateFlyway) && (\n <Button\n className=\"mb-4 ml-4\"\n variant=\"contained\"\n onClick={() => {\n setOpenSelectColumn((curr) => !curr);\n }}\n size=\"small\"\n data-testid=\"immunizationList-button-add\"\n >\n {!openSelectColumn\n ? t(\"Select Immunization\")\n : t(\"Hide Selection\")}\n </Button>\n )}\n {openSelectColumn && !openFlywayQuery && (\n <Button\n className=\"mb-4 ml-4\"\n variant=\"contained\"\n onClick={() => {\n handleFlywayOpen();\n }}\n size=\"small\"\n data-testid=\"immunizationList-button-add\"\n >\n {t(\"Show Flyway\")}\n </Button>\n )}\n {/* <Button\n className=\"mb-4 ml-4\"\n variant=\"contained\"\n onClick={() => {\n navigate(\"/ui/medplat/manage/manageImmunization\");\n }}\n size=\"small\"\n data-testid=\"immunizationList-button-add\"\n >\n {t(\"Add Immunization\")}\n </Button> */}\n </Grid>\n <Grid size={{ xs: 12 }}>\n <CustomizedTable\n dataTestId=\"Immunization-configurator-customizedtable\"\n columns={tableFields}\n tableData={tableData}\n paginationConfig={{\n pagination: true,\n rowsPerPageInTable: 20,\n }}\n actions={actions}\n rowSelectionConfig={{\n rowSelectionEnabled: openSelectColumn,\n selectedRows,\n setSelectedRows,\n }}\n styleConfig={{ tableStyle: { maxHeight: 45 } }}\n isLoading={isLoading}\n strip={true}\n />\n </Grid>\n </ImmunizationConfigurationsListSkeleton>\n <CustomConfirmationModal\n open={open}\n description={\n \"Are you sure you want to change the state of this Immunization ?\"\n }\n title={\"CONFIRM ACTION\"}\n handleClick={() => handleOpenStatusModal(rowData)}\n handleClose={() => setOpen(false)}\n />\n </Grid>\n );\n};\n\nexport default ImmunizationConfigurationsList;\n"],"names":["ShowFlywayQuery","configuredQuery","open","onClose","dataTestId","text","setText","useState","translate","useTranslateProvider","openConfirm","setOpenConfirm","generateQueryText","useCallback","queryList","obj","showToast","columns","values","row","col","value","finalUpdateClause","query","copyQuery","_a","askForConfirmation","download","cur","trackEvent","useTrackEvent","blob","blobSizeInKB","url","a","handleDownload","useEffect","jsxs","Fragment","jsx","CustomConfirmationModal","Dialog","DialogTitle","Box","Typography","IconButton","FontAwesomeIcons","DialogContent","t","PostgresEditor","DialogActions","Button","PropTypes","ImmunizationConfigurationsList","navigate","useNavigate","useTranslation","immunizationData","setImmunizationData","tableData","setTableData","originalData","setOriginalData","search","setSearch","openSelectColumn","setOpenSelectColumn","openFlywayQuery","setOpenFlywayQuery","selectedRows","setSelectedRows","configuredQueryList","setConfiguredQueryList","isLoading","setIsLoading","setOpen","rowData","setRowData","rights","setRights","rightsRef","useRef","item","selected","tableFields","actions","GeneralUtil","FontAwesomeIcon","faPen","faTrash","loadInitial","getValidationMessage","validations","validationsObj","convertDaysToHumanReadable","days","years","remainingDaysAfterYears","months","remainingDays","parts","res","execute","immunizations","_b","el","assignedFeatures","getAssignedFeatures","error","handleSearch","filteredData","handleFlywayOpen","handleOpenStatusModal","formData","Card","Grid","ImmunizationConfigurationsListSkeleton","TextField","curr","CustomizedTable"],"mappings":"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"}