@argusoft/medplat-core 1.0.0

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 (113) hide show
  1. package/dist/AccessRights-sgIhYR30.js +1238 -0
  2. package/dist/AccessRights-sgIhYR30.js.map +1 -0
  3. package/dist/AddEditQueryBuilder-BaZxS2Cm.js +289 -0
  4. package/dist/AddEditQueryBuilder-BaZxS2Cm.js.map +1 -0
  5. package/dist/AddEditQueryBuilder.css +1 -0
  6. package/dist/AddFeatures-BxXCC6ex.js +212 -0
  7. package/dist/AddFeatures-BxXCC6ex.js.map +1 -0
  8. package/dist/AddLabelModal-DE3ploGD.js +734 -0
  9. package/dist/AddLabelModal-DE3ploGD.js.map +1 -0
  10. package/dist/AddMenuConfiguration-QWfpcnuP.js +2237 -0
  11. package/dist/AddMenuConfiguration-QWfpcnuP.js.map +1 -0
  12. package/dist/AddMenuConfiguration.css +1 -0
  13. package/dist/AddRoleDrawer-ZK1eejxI.js +453 -0
  14. package/dist/AddRoleDrawer-ZK1eejxI.js.map +1 -0
  15. package/dist/AppModal-BgZyfrd-.js +428 -0
  16. package/dist/AppModal-BgZyfrd-.js.map +1 -0
  17. package/dist/ChangePasswordModal-MV7g8tkA.js +176 -0
  18. package/dist/ChangePasswordModal-MV7g8tkA.js.map +1 -0
  19. package/dist/ConditionConfig-BqWe0NKO.js +395 -0
  20. package/dist/ConditionConfig-BqWe0NKO.js.map +1 -0
  21. package/dist/ConditionConfig.css +1 -0
  22. package/dist/EntityManagement-D-x6Qzal.js +50 -0
  23. package/dist/EntityManagement-D-x6Qzal.js.map +1 -0
  24. package/dist/EventConfigurations-jGCJ4LqP.js +384 -0
  25. package/dist/EventConfigurations-jGCJ4LqP.js.map +1 -0
  26. package/dist/EventConfigurations.css +1 -0
  27. package/dist/EventsExceptionModal-BF6E1Np7.js +200 -0
  28. package/dist/EventsExceptionModal-BF6E1Np7.js.map +1 -0
  29. package/dist/EventsSkeleton-BN7_0IGs.js +74 -0
  30. package/dist/EventsSkeleton-BN7_0IGs.js.map +1 -0
  31. package/dist/FeatureMenu-BYSRoNm0.js +249 -0
  32. package/dist/FeatureMenu-BYSRoNm0.js.map +1 -0
  33. package/dist/Features-CKMmuqcs.js +11 -0
  34. package/dist/Features-CKMmuqcs.js.map +1 -0
  35. package/dist/FlywayQuery-Cx2sly6g.js +169 -0
  36. package/dist/FlywayQuery-Cx2sly6g.js.map +1 -0
  37. package/dist/ImmunizationConfigurationBase-CdCgDaAl.js +5299 -0
  38. package/dist/ImmunizationConfigurationBase-CdCgDaAl.js.map +1 -0
  39. package/dist/ImmunizationConfigurationBase.css +1 -0
  40. package/dist/ImmunizationConfigurationsList-CQnxWa09.js +335 -0
  41. package/dist/ImmunizationConfigurationsList-CQnxWa09.js.map +1 -0
  42. package/dist/ImmunizationSkeleton-D2tdv5k-.js +186 -0
  43. package/dist/ImmunizationSkeleton-D2tdv5k-.js.map +1 -0
  44. package/dist/LanguagesModal-rk6IGQwY.js +394 -0
  45. package/dist/LanguagesModal-rk6IGQwY.js.map +1 -0
  46. package/dist/ManageDynamicFeature-CeeqiS3K.js +4189 -0
  47. package/dist/ManageDynamicFeature-CeeqiS3K.js.map +1 -0
  48. package/dist/ManageEventConfiguration-BRXh51fc.js +1017 -0
  49. package/dist/ManageEventConfiguration-BRXh51fc.js.map +1 -0
  50. package/dist/ManageEventConfiguration.css +1 -0
  51. package/dist/ManageNotification-B4prX-9Z.js +6819 -0
  52. package/dist/ManageNotification-B4prX-9Z.js.map +1 -0
  53. package/dist/ManageRole-ByqBmjuc.js +699 -0
  54. package/dist/ManageRole-ByqBmjuc.js.map +1 -0
  55. package/dist/ManageTranslation-BTxvSYKb.js +616 -0
  56. package/dist/ManageTranslation-BTxvSYKb.js.map +1 -0
  57. package/dist/ManageTranslation.css +1 -0
  58. package/dist/ManageUser-PHiTNyF8.js +2160 -0
  59. package/dist/ManageUser-PHiTNyF8.js.map +1 -0
  60. package/dist/ManageUser.css +1 -0
  61. package/dist/MobileMenuManagement-DmQU5TTo.js +108 -0
  62. package/dist/MobileMenuManagement-DmQU5TTo.js.map +1 -0
  63. package/dist/MobileTypeEventConfigModal-BCp-SF4-.js +783 -0
  64. package/dist/MobileTypeEventConfigModal-BCp-SF4-.js.map +1 -0
  65. package/dist/NewServerManagement-5YcAtF-g.js +1002 -0
  66. package/dist/NewServerManagement-5YcAtF-g.js.map +1 -0
  67. package/dist/NotificationFlywayQuery-BY8Zzml_.js +244 -0
  68. package/dist/NotificationFlywayQuery-BY8Zzml_.js.map +1 -0
  69. package/dist/NotificationList-BkpOrCpM.js +400 -0
  70. package/dist/NotificationList-BkpOrCpM.js.map +1 -0
  71. package/dist/OtherTypeEventConfigModal-DPB8IYzj.js +2001 -0
  72. package/dist/OtherTypeEventConfigModal-DPB8IYzj.js.map +1 -0
  73. package/dist/QueryBuilder-Cus_mRwZ.js +378 -0
  74. package/dist/QueryBuilder-Cus_mRwZ.js.map +1 -0
  75. package/dist/QueryBuilder.css +1 -0
  76. package/dist/QueryManagement-DXA73N2j.js +671 -0
  77. package/dist/QueryManagement-DXA73N2j.js.map +1 -0
  78. package/dist/QueryManagement.css +1 -0
  79. package/dist/RoleManagement-CLaEJ90J.js +410 -0
  80. package/dist/RoleManagement-CLaEJ90J.js.map +1 -0
  81. package/dist/ServerSyncModal-uNjGCQJz.js +869 -0
  82. package/dist/ServerSyncModal-uNjGCQJz.js.map +1 -0
  83. package/dist/ShowFlywayQuery-DMsAbtOW.js +130 -0
  84. package/dist/ShowFlywayQuery-DMsAbtOW.js.map +1 -0
  85. package/dist/ShowFlywayQuery-DVRCd384.js +259 -0
  86. package/dist/ShowFlywayQuery-DVRCd384.js.map +1 -0
  87. package/dist/ShowQueryHistory-BDN0tzHg.js +190 -0
  88. package/dist/ShowQueryHistory-BDN0tzHg.js.map +1 -0
  89. package/dist/SubMenu-BHcSNSUF.js +187 -0
  90. package/dist/SubMenu-BHcSNSUF.js.map +1 -0
  91. package/dist/TableDetails-DzREeJkm.js +1508 -0
  92. package/dist/TableDetails-DzREeJkm.js.map +1 -0
  93. package/dist/TableList-B9hr05Hs.js +428 -0
  94. package/dist/TableList-B9hr05Hs.js.map +1 -0
  95. package/dist/TypeConfiguration-BYM8PjV9.js +117 -0
  96. package/dist/TypeConfiguration-BYM8PjV9.js.map +1 -0
  97. package/dist/UserList-BxB1tCwM.js +13042 -0
  98. package/dist/UserList-BxB1tCwM.js.map +1 -0
  99. package/dist/UserList.css +1 -0
  100. package/dist/UserListSkeleton-cglK2SaU.js +184 -0
  101. package/dist/UserListSkeleton-cglK2SaU.js.map +1 -0
  102. package/dist/WidgetList-BSApErov.js +188 -0
  103. package/dist/WidgetList-BSApErov.js.map +1 -0
  104. package/dist/_commonjsHelpers-BItOPCY9.js +29 -0
  105. package/dist/_commonjsHelpers-BItOPCY9.js.map +1 -0
  106. package/dist/i18next-CTOWN_jH.js +1394 -0
  107. package/dist/i18next-CTOWN_jH.js.map +1 -0
  108. package/dist/index.js +481 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/manageImmunization-B4swS745.js +1204 -0
  111. package/dist/manageImmunization-B4swS745.js.map +1 -0
  112. package/dist/manageImmunization.css +1 -0
  113. package/package.json +79 -0
@@ -0,0 +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::-moz-placeholder{color:#94a3b8;opacity:1}.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 .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 .header-cell:nth-child(1){margin-left:5px;width:5%}.immunization-summary .table-container .header-cell:nth-child(2){width:30%}.immunization-summary .table-container .header-cell:nth-child(3){width:30%}.immunization-summary .table-container .header-cell:nth-child(4){width:25%}.immunization-summary .table-container .header-cell:nth-child(5){width:7%}.immunization-summary .table-container .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)}@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.2}@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:10px;font-weight:700;display:flex;align-items:center;gap:3px;margin-top:3px}.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}.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}.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-item .dependency-inputs{display:flex;gap:6px;margin-bottom:6px}.immunization-summary .table-container .expansion-container .side-card .dependency-item .dependency-hint{padding:10px;background:#f9fafb;border-radius:5px;border:1px solid #f0f0f0;font-size:11px;font-weight:500;color:#444}.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,335 @@
1
+ import { jsxs as C, Fragment as Z, jsx as o } from "react/jsx-runtime";
2
+ import { useState as s, useCallback as ee, useEffect as x } from "react";
3
+ import { Dialog as te, DialogTitle as ae, DialogContent as ne, TextField as P, DialogActions as oe, Button as N } from "@mui/material";
4
+ import { showToast as f } from "@/common/toaster/toaster";
5
+ import { execute as U } from "@/common/services/GlobalApis";
6
+ import M from "@mui/material/Grid2";
7
+ import { useNavigate as ie } from "react-router";
8
+ import { u as se, I as re } from "./ImmunizationSkeleton-D2tdv5k-.js";
9
+ import A from "prop-types";
10
+ import Q from "@/views/custom-components/CustomConfirmationModal";
11
+ import le from "@/hooks/useTrackEvent";
12
+ import { useTranslateProvider as ce } from "@/common/languageTranslator/TranslationContext";
13
+ import de from "@/views/custom-components/CustomizedTable/CustomizedTableV2";
14
+ import { FontAwesomeIcon as B } from "@fortawesome/react-fontawesome";
15
+ import { faPen as ue, faTrash as me } from "@fortawesome/free-solid-svg-icons";
16
+ import { getAssignedFeatures as ye } from "@/utils/feature";
17
+ const H = ({ configuredQuery: p, open: b, onClose: g, dataTestId: O }) => {
18
+ const [w, I] = s(""), { translate: m } = ce(), [F, y] = s(!1), L = ee(() => {
19
+ let a = JSON.parse(JSON.stringify(p));
20
+ if (a.forEach((i) => {
21
+ delete i.id, delete i.created_at, delete i.updated_at;
22
+ }), !Array.isArray(a) || a.length === 0) {
23
+ f({ message: "No data to generate", type: "error" });
24
+ return;
25
+ }
26
+ const c = Object.keys(a[0]), h = a.map((i) => `(${c.map(($) => {
27
+ const l = i[$];
28
+ return typeof l == "string" ? `'${l.replace(/'/g, "''")}'` : l == null ? "NULL" : typeof l == "boolean" ? l ? "TRUE" : "FALSE" : l;
29
+ }).join(", ")})`).join(`,
30
+ `), _ = `${c.filter((i) => i !== "code").map((i) => `${i} = EXCLUDED.${i}`).join(", ")}, updated_at = CURRENT_TIMESTAMP`, k = `INSERT INTO rch_immunization_configuration (${c.join(", ")})
31
+ VALUES
32
+ ${h}
33
+ ON CONFLICT (code) DO UPDATE SET
34
+ ${_};
35
+ `;
36
+ I(k);
37
+ }, [p]), v = () => {
38
+ var a;
39
+ (a = navigator == null ? void 0 : navigator.clipboard) == null || a.writeText(w).then(() => {
40
+ f({ message: "Query Copied", type: "success" }), g();
41
+ });
42
+ }, E = () => {
43
+ S(), y((a) => !a);
44
+ }, T = le(), S = () => {
45
+ const a = new Blob([w], { type: "text/plain" }), c = (a.size / 1024).toFixed(2), h = URL.createObjectURL(a), d = document.createElement("a");
46
+ d.href = h, d.download = `V${(/* @__PURE__ */ new Date()).getTime()}__CHANGE_IN_IMMUNIZATION_TABLE}.sql`, document.body.appendChild(d), d.click(), T("file_download", {
47
+ file_type: "sql",
48
+ file_name: d.download,
49
+ file_size: `${c} KB`,
50
+ download_status: "success"
51
+ }), document.body.removeChild(d), URL.revokeObjectURL(h), f({ message: "Query Downloaded SuccessFully", type: "success" }), g();
52
+ }, D = () => {
53
+ S();
54
+ };
55
+ return x(() => {
56
+ p && L();
57
+ }, [p]), /* @__PURE__ */ C(Z, { children: [
58
+ /* @__PURE__ */ o(
59
+ Q,
60
+ {
61
+ description: "This Flyway contains keyword 'public'. Are you sure you want to download?",
62
+ title: "CONFIRM ACTION",
63
+ handleClick: E,
64
+ open: F,
65
+ handleClose: () => y((a) => !a),
66
+ dataTestId: "showflywayquery-customconfirmationmodal-confirmation-modal"
67
+ }
68
+ ),
69
+ /* @__PURE__ */ C(te, { open: b, onClose: g, fullWidth: !0, maxWidth: "md", "data-testid": O, children: [
70
+ /* @__PURE__ */ o(ae, { className: "p-2.5 px-5 flex border-b font-medium text-lg", children: m("Flyway Query") }),
71
+ /* @__PURE__ */ o(ne, { children: /* @__PURE__ */ o(
72
+ P,
73
+ {
74
+ multiline: !0,
75
+ rows: 10,
76
+ variant: "outlined",
77
+ fullWidth: !0,
78
+ value: w,
79
+ sx: {
80
+ "& .MuiInputBase-input": {
81
+ fontSize: "14px"
82
+ },
83
+ "& .MuiOutlinedInput-root": {
84
+ borderRadius: "5px"
85
+ }
86
+ },
87
+ slotProps: {
88
+ input: {
89
+ readOnly: !0
90
+ }
91
+ },
92
+ "data-testid": "showflywayquery-textfield-query-display"
93
+ }
94
+ ) }),
95
+ /* @__PURE__ */ C(oe, { children: [
96
+ /* @__PURE__ */ o(
97
+ N,
98
+ {
99
+ onClick: D,
100
+ variant: "contained",
101
+ size: "small",
102
+ color: "primary",
103
+ "data-testid": "showflywayquery-button-download-action",
104
+ children: m("Download")
105
+ }
106
+ ),
107
+ /* @__PURE__ */ o(
108
+ N,
109
+ {
110
+ onClick: v,
111
+ variant: "contained",
112
+ size: "small",
113
+ color: "primary",
114
+ "data-testid": "showflywayquery-button-copyquery-action",
115
+ children: m("Copy Query")
116
+ }
117
+ ),
118
+ /* @__PURE__ */ o(
119
+ N,
120
+ {
121
+ onClick: g,
122
+ variant: "contained",
123
+ color: "secondary",
124
+ size: "small",
125
+ "data-testid": "showflywayquery-button-cancel-action",
126
+ children: m("Cancel")
127
+ }
128
+ )
129
+ ] })
130
+ ] })
131
+ ] });
132
+ };
133
+ H.propTypes = {
134
+ configuredQuery: A.any,
135
+ open: A.any,
136
+ onClose: A.any,
137
+ dataTestId: A.any
138
+ };
139
+ const xe = () => {
140
+ const p = ie(), { t: b } = se(), [g, O] = s([]), [w, I] = s([]), [m, F] = s([]), [y, L] = s(""), [v, E] = s(!1), [T, S] = s(!1), [D, a] = s([]), [c, h] = s([]), [d, _] = s(!1), [k, i] = s(!1), [R, $] = s({}), [l, J] = s({});
141
+ x(() => {
142
+ h(() => g.filter(
143
+ (t) => D.some((r) => r.id === t.id)
144
+ ));
145
+ }, [D]);
146
+ const G = [
147
+ { field: "Sr. No.", label: "#", align: "left" },
148
+ // { field: 'code', label: 'Code', align: 'left', isBold: true },
149
+ { field: "name", label: "Name", align: "left" },
150
+ { field: "fromAgeDays", label: "Eligible From" },
151
+ { field: "toAgeDays", label: "Eligible To" },
152
+ { field: "base_date", label: "Base Date" },
153
+ { field: "Actions", label: "Actions" }
154
+ ], V = [
155
+ {
156
+ label: "Fill Form",
157
+ icon: /* @__PURE__ */ o(B, { icon: ue }),
158
+ onClick: (e) => {
159
+ p(`/ui/medplat/manage/manageImmunization/${e == null ? void 0 : e.id}`);
160
+ }
161
+ },
162
+ {
163
+ label: "",
164
+ icon: /* @__PURE__ */ o(B, { icon: me }),
165
+ onClick: (e) => {
166
+ i(!0), $(e);
167
+ }
168
+ }
169
+ ];
170
+ x(() => {
171
+ j();
172
+ }, []);
173
+ const W = (e) => {
174
+ const t = JSON.parse(e);
175
+ return t.dependencies && t.dependencies.length > 0 ? t.dependencies[0].message : "NA";
176
+ }, q = (e) => {
177
+ if (typeof e != "number" || e <= 0) return "-";
178
+ const t = Math.floor(e / 365), r = e % 365, u = Math.floor(r / 30), z = r % 30, n = [];
179
+ return t > 0 && n.push(`${t} ${t === 1 ? "year" : "years"}`), u > 0 && n.push(`${u} ${u === 1 ? "month" : "months"}`), (z > 0 || t === 0 && u === 0) && n.push(`${z} ${z === 1 ? "day" : "days"}`), n.join(" ") || "0 days";
180
+ }, j = async () => {
181
+ var e, t;
182
+ try {
183
+ _((n) => !n);
184
+ const r = await U({
185
+ code: "get_immunization_detail",
186
+ parameters: {}
187
+ });
188
+ O((e = r == null ? void 0 : r.data) == null ? void 0 : e.result);
189
+ const u = (t = r == null ? void 0 : r.data) == null ? void 0 : t.result.filter((n) => n.is_active === !0).map((n) => ({
190
+ ...n,
191
+ fromAgeDays: q(n.from_age_days),
192
+ toAgeDays: q(n.to_age_days),
193
+ validationMessage: n.validations ? W(n.validations) : "NA"
194
+ })), { data: z } = await ye(
195
+ "techo.manage.immunizationConfiguratorList"
196
+ );
197
+ J(JSON.parse(z)), I(u), F(u), _((n) => !n);
198
+ } catch (r) {
199
+ console.error(r), f({ message: "Error in loading immunization", type: "error" }), _((u) => !u);
200
+ }
201
+ }, K = (e) => {
202
+ L(e.target.value);
203
+ };
204
+ x(() => {
205
+ if (!y) {
206
+ I(m);
207
+ return;
208
+ }
209
+ const e = m.filter(
210
+ (t) => t.code.toLowerCase().includes(y.toLowerCase()) || t.name.toLowerCase().includes(y.toLowerCase())
211
+ );
212
+ I(e);
213
+ }, [y, m]);
214
+ const X = () => {
215
+ (c == null ? void 0 : c.length) > 0 ? S(!0) : f({ message: "Select atleast one row", type: "info" });
216
+ }, Y = async (e) => {
217
+ try {
218
+ let t = {
219
+ id: parseInt(e.id),
220
+ code: e.code,
221
+ name: e.name,
222
+ isrecursive: e.is_recursive || !1,
223
+ fromAgeDays: e.from_age_days,
224
+ toAgeDays: e.to_age_days,
225
+ basedate: e.base_date,
226
+ validations: e.validations,
227
+ recursiveobject: e.recursive_object,
228
+ locations: e.locations || "[]",
229
+ active: !1
230
+ };
231
+ i(!1), await U({
232
+ code: "update_immunization",
233
+ parameters: { ...t }
234
+ }), j(), f({
235
+ message: "Immunization status changed Successfully!",
236
+ type: "success"
237
+ });
238
+ } catch (t) {
239
+ console.error(t), f({ type: "error", message: "error toggling status" });
240
+ }
241
+ };
242
+ return /* @__PURE__ */ C(M, { container: !0, justifyContent: "flex-end", className: "mt-5 mr-5", children: [
243
+ T && /* @__PURE__ */ o(
244
+ H,
245
+ {
246
+ configuredQuery: c,
247
+ open: T,
248
+ onClose: () => {
249
+ S((e) => !e);
250
+ },
251
+ dataTestId: "eventconfiguration-query-showflywayquery"
252
+ }
253
+ ),
254
+ /* @__PURE__ */ C(re, { isLoading: d, children: [
255
+ /* @__PURE__ */ C(M, { item: !0, children: [
256
+ /* @__PURE__ */ o(
257
+ P,
258
+ {
259
+ className: "bg-white p-0 m-0",
260
+ placeholder: "Search code",
261
+ sx: {
262
+ "& .MuiInputBase-root": { height: "35px" },
263
+ // Controls the overall input height
264
+ "& .MuiInputBase-input": { padding: "6px 12px" }
265
+ // Adjust text padding inside input
266
+ },
267
+ value: y,
268
+ onChange: K
269
+ }
270
+ ),
271
+ (l == null ? void 0 : l.canGenerateFlyway) && /* @__PURE__ */ o(
272
+ N,
273
+ {
274
+ className: "mb-4 ml-4",
275
+ variant: "contained",
276
+ onClick: () => {
277
+ E((e) => !e);
278
+ },
279
+ size: "small",
280
+ "data-testid": "immunizationList-button-add",
281
+ children: b(v ? "Hide Selection" : "Select Immunization")
282
+ }
283
+ ),
284
+ v && !T && /* @__PURE__ */ o(
285
+ N,
286
+ {
287
+ className: "mb-4 ml-4",
288
+ variant: "contained",
289
+ onClick: () => {
290
+ X();
291
+ },
292
+ size: "small",
293
+ "data-testid": "immunizationList-button-add",
294
+ children: b("Show Flyway")
295
+ }
296
+ )
297
+ ] }),
298
+ /* @__PURE__ */ o(M, { size: { xs: 12 }, children: /* @__PURE__ */ o(
299
+ de,
300
+ {
301
+ dataTestId: "Immunization-configurator-customizedtable",
302
+ columns: G,
303
+ tableData: w,
304
+ paginationConfig: {
305
+ pagination: !0,
306
+ rowsPerPageInTable: 20
307
+ },
308
+ actions: V,
309
+ rowSelectionConfig: {
310
+ rowSelectionEnabled: v,
311
+ selectedRows: D,
312
+ setSelectedRows: a
313
+ },
314
+ styleConfig: { tableStyle: { maxHeight: 45 } },
315
+ isLoading: d,
316
+ strip: !0
317
+ }
318
+ ) })
319
+ ] }),
320
+ /* @__PURE__ */ o(
321
+ Q,
322
+ {
323
+ open: k,
324
+ description: "Are you sure you want to change the state of this Immunization ?",
325
+ title: "CONFIRM ACTION",
326
+ handleClick: () => Y(R),
327
+ handleClose: () => i(!1)
328
+ }
329
+ )
330
+ ] });
331
+ };
332
+ export {
333
+ xe as default
334
+ };
335
+ //# sourceMappingURL=ImmunizationConfigurationsList-CQnxWa09.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImmunizationConfigurationsList-CQnxWa09.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 { Dialog, DialogActions, DialogContent, DialogTitle, Button, TextField } from '@mui/material';\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 className=\"p-2.5 px-5 flex border-b font-medium text-lg\">{translate('Flyway Query')}</DialogTitle>\n <DialogContent>\n <TextField\n multiline\n rows={10}\n variant=\"outlined\"\n fullWidth\n value={text}\n sx={{\n '& .MuiInputBase-input': {\n fontSize: '14px',\n },\n '& .MuiOutlinedInput-root': {\n borderRadius: '5px',\n },\n }}\n slotProps={{\n input: {\n readOnly: true,\n },\n }}\n data-testid=\"showflywayquery-textfield-query-display\"\n />\n </DialogContent>\n <DialogActions>\n <Button\n onClick={handleDownload}\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n data-testid=\"showflywayquery-button-download-action\"\n >\n {translate('Download')}\n </Button>\n <Button\n onClick={copyQuery}\n variant=\"contained\"\n size=\"small\"\n color=\"primary\"\n data-testid=\"showflywayquery-button-copyquery-action\"\n >\n {translate('Copy Query')}\n </Button>\n <Button\n onClick={onClose}\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n data-testid=\"showflywayquery-button-cancel-action\"\n >\n {translate('Cancel')}\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 } from \"react\";\nimport { Button, TextField } 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\";\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({});\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 {\n label: \"Fill Form\",\n icon: <FontAwesomeIcon icon={faPen} />,\n onClick: (row) => {\n navigate(`/ui/medplat/manage/manageImmunization/${row?.id}`);\n },\n },\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 (\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 {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","DialogContent","TextField","DialogActions","Button","PropTypes","ImmunizationConfigurationsList","navigate","useNavigate","t","useTranslation","immunizationData","setImmunizationData","tableData","setTableData","originalData","setOriginalData","search","setSearch","openSelectColumn","setOpenSelectColumn","openFlywayQuery","setOpenFlywayQuery","selectedRows","setSelectedRows","configuredQueryList","setConfiguredQueryList","isLoading","setIsLoading","setOpen","rowData","setRowData","rights","setRights","item","selected","tableFields","actions","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","Grid","ImmunizationConfigurationsListSkeleton","curr","CustomizedTable"],"mappings":"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"}