@argusoft/medplat-core 1.0.29 → 1.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AccessRights-xrday-L1.js +1023 -0
- package/dist/AccessRights-xrday-L1.js.map +1 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js +365 -0
- package/dist/AddEditQueryBuilder-D-iQiVIe.js.map +1 -0
- package/dist/{AddFeatures-v3TmGQee.js → AddFeatures-D1sU8RjY.js} +2 -2
- package/dist/{AddFeatures-v3TmGQee.js.map → AddFeatures-D1sU8RjY.js.map} +1 -1
- package/dist/AddLabelModal-Bq-wRqv9.js +631 -0
- package/dist/AddLabelModal-Bq-wRqv9.js.map +1 -0
- package/dist/{AddMenuConfiguration-Ce91MhnU.js → AddMenuConfiguration-e5BVXhmw.js} +2 -2
- package/dist/{AddMenuConfiguration-Ce91MhnU.js.map → AddMenuConfiguration-e5BVXhmw.js.map} +1 -1
- package/dist/AppModal-CCtrQ5Tr.js +394 -0
- package/dist/AppModal-CCtrQ5Tr.js.map +1 -0
- package/dist/BrandsPage-DmRW5bhm-Bk1szrjI.js +387 -0
- package/dist/BrandsPage-DmRW5bhm-Bk1szrjI.js.map +1 -0
- package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js +391 -0
- package/dist/CategoriesPage-BsS5IQh3-B03lWRY5.js.map +1 -0
- package/dist/{ChangePasswordModalCore-DutQAZOx.js → ChangePasswordModalCore-BPsJquTS.js} +1606 -1611
- package/dist/ChangePasswordModalCore-BPsJquTS.js.map +1 -0
- package/dist/{ConditionConfig-B4Ffpgj3.js → ConditionConfig-Ddz9halE.js} +2 -2
- package/dist/{ConditionConfig-B4Ffpgj3.js.map → ConditionConfig-Ddz9halE.js.map} +1 -1
- package/dist/DashboardPage-C3bKc5na-sBd9Yqbi.js +435 -0
- package/dist/DashboardPage-C3bKc5na-sBd9Yqbi.js.map +1 -0
- package/dist/EventConfig-BmLemzX3.js +26 -0
- package/dist/EventConfig-BmLemzX3.js.map +1 -0
- package/dist/{EventConfigurations-BJcURufo.js → EventConfigurations-Bzh1qWXU.js} +31 -30
- package/dist/{EventConfigurations-BJcURufo.js.map → EventConfigurations-Bzh1qWXU.js.map} +1 -1
- package/dist/{EventsExceptionModal-BlZtBQoR.js → EventsExceptionModal-B2SRrnB1.js} +2 -2
- package/dist/{EventsExceptionModal-BlZtBQoR.js.map → EventsExceptionModal-B2SRrnB1.js.map} +1 -1
- package/dist/EventsSkeleton-BIcPks4T.js +61 -0
- package/dist/EventsSkeleton-BIcPks4T.js.map +1 -0
- package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js +79 -0
- package/dist/FacilityPicker-BiZeupmP-CyPHmj6b.js.map +1 -0
- package/dist/FeatureMenu-DYJmDt7q.js +521 -0
- package/dist/FeatureMenu-DYJmDt7q.js.map +1 -0
- package/dist/{FhirServerList-Dkq7Kbes.js → FhirServerList-DuTwnngN.js} +19 -19
- package/dist/{FhirServerList-Dkq7Kbes.js.map → FhirServerList-DuTwnngN.js.map} +1 -1
- package/dist/{FhirServerWizard-Db6Hm4bQ.js → FhirServerWizard-DZI8Olku.js} +15 -15
- package/dist/{FhirServerWizard-Db6Hm4bQ.js.map → FhirServerWizard-DZI8Olku.js.map} +1 -1
- package/dist/FlywayQuery-CQygj51V.js +179 -0
- package/dist/FlywayQuery-CQygj51V.js.map +1 -0
- package/dist/GrantPermissionModal-BDN66Atn.js +236 -0
- package/dist/GrantPermissionModal-BDN66Atn.js.map +1 -0
- package/dist/ImmunizationConfigurationBase-Di1KO3oW.js +7639 -0
- package/dist/ImmunizationConfigurationBase-Di1KO3oW.js.map +1 -0
- package/dist/ImmunizationConfigurationBase.css +1 -1
- package/dist/ImmunizationConfigurationsList-TZcLDEci.js +369 -0
- package/dist/ImmunizationConfigurationsList-TZcLDEci.js.map +1 -0
- package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js +665 -0
- package/dist/InventoryPage-C_AxSy7A-QLvlL4rE.js.map +1 -0
- package/dist/LanguagesModal-B3NTebYT.js +352 -0
- package/dist/LanguagesModal-B3NTebYT.js.map +1 -0
- package/dist/ManageDynamicFeature-BU0I45dd.js +4475 -0
- package/dist/ManageDynamicFeature-BU0I45dd.js.map +1 -0
- package/dist/{ManageEventConfiguration-BpSJszSX.js → ManageEventConfiguration-CoYcpjR9.js} +465 -397
- package/dist/ManageEventConfiguration-CoYcpjR9.js.map +1 -0
- package/dist/{ManageNotification-CfhHlfxA.js → ManageNotification-C5MhV77Q.js} +2 -2
- package/dist/{ManageNotification-CfhHlfxA.js.map → ManageNotification-C5MhV77Q.js.map} +1 -1
- package/dist/{ManageRole-4Y2PP4dQ.js → ManageRole-CNZBRKGU.js} +2 -2
- package/dist/{ManageRole-4Y2PP4dQ.js.map → ManageRole-CNZBRKGU.js.map} +1 -1
- package/dist/ManageTranslation-vRiptUAP.js +833 -0
- package/dist/ManageTranslation-vRiptUAP.js.map +1 -0
- package/dist/ManageTranslation.css +1 -1
- package/dist/{ManageUser-DDzyd9jm.js → ManageUser-DCFkUMV9.js} +131 -131
- package/dist/{ManageUser-DDzyd9jm.js.map → ManageUser-DCFkUMV9.js.map} +1 -1
- package/dist/MemberProfileCard-BdUNgHRB-VywqQdFF.js +272 -0
- package/dist/MemberProfileCard-BdUNgHRB-VywqQdFF.js.map +1 -0
- package/dist/MobileAnalytics-pQoE8cG1.js +16888 -0
- package/dist/MobileAnalytics-pQoE8cG1.js.map +1 -0
- package/dist/{MobileTypeEventConfigModal-DUkUYACe.js → MobileTypeEventConfigModal-BeveaX0C.js} +2 -2
- package/dist/{MobileTypeEventConfigModal-DUkUYACe.js.map → MobileTypeEventConfigModal-BeveaX0C.js.map} +1 -1
- package/dist/NotificationFlywayQuery-BAHVjf6N.js +247 -0
- package/dist/NotificationFlywayQuery-BAHVjf6N.js.map +1 -0
- package/dist/{NotificationList-BMFpNUJG.js → NotificationList-DEyRZEuM.js} +2 -2
- package/dist/{NotificationList-BMFpNUJG.js.map → NotificationList-DEyRZEuM.js.map} +1 -1
- package/dist/{OtherTypeEventConfigModal-CYBfr2XE.js → OtherTypeEventConfigModal-CM6VkdmY.js} +3 -3
- package/dist/OtherTypeEventConfigModal-CM6VkdmY.js.map +1 -0
- package/dist/PaymentCreatePage-CIVe0P0p-25BQVpOX.js +482 -0
- package/dist/PaymentCreatePage-CIVe0P0p-25BQVpOX.js.map +1 -0
- package/dist/PaymentsPage-BvPe5Q9F-D2gfziwW.js +157 -0
- package/dist/PaymentsPage-BvPe5Q9F-D2gfziwW.js.map +1 -0
- package/dist/PermissionsModal-CCYkcKlC.js +151 -0
- package/dist/PermissionsModal-CCYkcKlC.js.map +1 -0
- package/dist/PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js +119 -0
- package/dist/PickupBatchLinesEditor-DHmcAG23-DL2p6IKJ.js.map +1 -0
- package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js +783 -0
- package/dist/PickupCreatePage-CB0Sl0Hb-Mmj7zESG.js.map +1 -0
- package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js +818 -0
- package/dist/PickupsPage-Ctpghavs-CUp4uIZq.js.map +1 -0
- package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js +599 -0
- package/dist/PmGuard-b10TGXEi-G3N0G_Wg.js.map +1 -0
- package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js +1302 -0
- package/dist/ProductEditPage-C1thoKHu-URQaZ6st.js.map +1 -0
- package/dist/ProductsPage-CupVmOD4-D45a_hf-.js +252 -0
- package/dist/ProductsPage-CupVmOD4-D45a_hf-.js.map +1 -0
- package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js +648 -0
- package/dist/PurchaseCreatePage-YD3NmhPQ-2j4etSjM.js.map +1 -0
- package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js +1577 -0
- package/dist/PurchaseRequestDetailPage-Dg_MRY_N-D1bgTEAn.js.map +1 -0
- package/dist/PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js +279 -0
- package/dist/PurchaseRequestsPage-DPAPzpmm-mDH2IrTl.js.map +1 -0
- package/dist/PurchasesPage-It1GHiXl-eH4IsF_U.js +293 -0
- package/dist/PurchasesPage-It1GHiXl-eH4IsF_U.js.map +1 -0
- package/dist/QueryBuilder-CXaBe6sr.js +478 -0
- package/dist/QueryBuilder-CXaBe6sr.js.map +1 -0
- package/dist/{RoleManagement-DEiBNfT8.js → RoleManagement-s8iNx2Mu.js} +145 -155
- package/dist/RoleManagement-s8iNx2Mu.js.map +1 -0
- package/dist/Roles-BIyiic67.js +14 -0
- package/dist/Roles-BIyiic67.js.map +1 -0
- package/dist/SaleCreatePage-C9kFmTvm-B3Y0o4CX.js +544 -0
- package/dist/SaleCreatePage-C9kFmTvm-B3Y0o4CX.js.map +1 -0
- package/dist/SalesPage-D18DCseD-BxktGDRQ.js +315 -0
- package/dist/SalesPage-D18DCseD-BxktGDRQ.js.map +1 -0
- package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js +747 -0
- package/dist/SettingsPage-VsxI-ano-DcmtUUEj.js.map +1 -0
- package/dist/ShowFlywayQuery-D10Olk5Z.js +154 -0
- package/dist/ShowFlywayQuery-D10Olk5Z.js.map +1 -0
- package/dist/{ShowFlywayQuery-DVRCd384.js → ShowFlywayQuery-D1y_4A1u.js} +161 -121
- package/dist/ShowFlywayQuery-D1y_4A1u.js.map +1 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js +313 -0
- package/dist/ShowQueryHistory-DRBKYDKk.js.map +1 -0
- package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js +721 -0
- package/dist/StorageUnitsPage-7EqwuMOI-BwUso1Th.js.map +1 -0
- package/dist/SubMenu-eEDhZUvh.js +317 -0
- package/dist/SubMenu-eEDhZUvh.js.map +1 -0
- package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js +746 -0
- package/dist/TransactionsPage-DrH53pVS-BkhIGB6C.js.map +1 -0
- package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js +315 -0
- package/dist/TransferCreatePage-CuvoMrYH-DTTfHjz-.js.map +1 -0
- package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js +476 -0
- package/dist/TransfersPage-Cf701t8s-BBbN7cBf.js.map +1 -0
- package/dist/{TypeConfiguration-C3xoP2Nb.js → TypeConfiguration-3O6ABrK-.js} +2 -2
- package/dist/{TypeConfiguration-C3xoP2Nb.js.map → TypeConfiguration-3O6ABrK-.js.map} +1 -1
- package/dist/{UserList-Bc8gYxRL.js → UserList-DgPxsnj2.js} +253 -236
- package/dist/{UserList-Bc8gYxRL.js.map → UserList-DgPxsnj2.js.map} +1 -1
- package/dist/Users-Bpc4Sazd.js +41 -0
- package/dist/Users-Bpc4Sazd.js.map +1 -0
- package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js +321 -0
- package/dist/VialsPage-8oAc1yFv-Cl3FUXBJ.js.map +1 -0
- package/dist/constants-ClZJY2x1-MkSWn6TZ.js +434 -0
- package/dist/constants-ClZJY2x1-MkSWn6TZ.js.map +1 -0
- package/dist/format-UOyOu75i-D0GyylyQ.js +63 -0
- package/dist/format-UOyOu75i-D0GyylyQ.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/index.lib-Dn8PMkeD.js +862 -0
- package/dist/index.lib-Dn8PMkeD.js.map +1 -0
- package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js +28 -0
- package/dist/useFieldErrors-hDG8ox_x-DbSAzrGo.js.map +1 -0
- package/dist/validation-BzlHnL-r-CCJm2utQ.js +125 -0
- package/dist/validation-BzlHnL-r-CCJm2utQ.js.map +1 -0
- package/package.json +4 -3
- package/dist/AccessRights-Zm8Obm4N.js +0 -1284
- package/dist/AccessRights-Zm8Obm4N.js.map +0 -1
- package/dist/AddEditQueryBuilder-Brdnm6rQ.js +0 -313
- package/dist/AddEditQueryBuilder-Brdnm6rQ.js.map +0 -1
- package/dist/AddLabelModal-DFllBVcd.js +0 -734
- package/dist/AddLabelModal-DFllBVcd.js.map +0 -1
- package/dist/AppModal-CtG2GjD_.js +0 -428
- package/dist/AppModal-CtG2GjD_.js.map +0 -1
- package/dist/ChangePasswordModalCore-DutQAZOx.js.map +0 -1
- package/dist/EventsSkeleton-DK6JDKAK.js +0 -83
- package/dist/EventsSkeleton-DK6JDKAK.js.map +0 -1
- package/dist/FeatureMenu-C3503UIX.js +0 -265
- package/dist/FeatureMenu-C3503UIX.js.map +0 -1
- package/dist/FlywayQuery-Cx2sly6g.js +0 -169
- package/dist/FlywayQuery-Cx2sly6g.js.map +0 -1
- package/dist/ImmunizationConfigurationBase-DLQVSNnt.js +0 -5895
- package/dist/ImmunizationConfigurationBase-DLQVSNnt.js.map +0 -1
- package/dist/ImmunizationConfigurationsList-DdSZicTP.js +0 -344
- package/dist/ImmunizationConfigurationsList-DdSZicTP.js.map +0 -1
- package/dist/LanguagesModal-D6VfaGrl.js +0 -394
- package/dist/LanguagesModal-D6VfaGrl.js.map +0 -1
- package/dist/ManageDynamicFeature-dt096fyj.js +0 -4189
- package/dist/ManageDynamicFeature-dt096fyj.js.map +0 -1
- package/dist/ManageEventConfiguration-BpSJszSX.js.map +0 -1
- package/dist/ManageTranslation-B4C9-lWD.js +0 -625
- package/dist/ManageTranslation-B4C9-lWD.js.map +0 -1
- package/dist/NotificationFlywayQuery-BY8Zzml_.js +0 -244
- package/dist/NotificationFlywayQuery-BY8Zzml_.js.map +0 -1
- package/dist/OtherTypeEventConfigModal-CYBfr2XE.js.map +0 -1
- package/dist/QueryBuilder-z7eqfd7D.js +0 -383
- package/dist/QueryBuilder-z7eqfd7D.js.map +0 -1
- package/dist/RoleManagement-DEiBNfT8.js.map +0 -1
- package/dist/ShowFlywayQuery-DVRCd384.js.map +0 -1
- package/dist/ShowFlywayQuery-tj42YQAS.js +0 -130
- package/dist/ShowFlywayQuery-tj42YQAS.js.map +0 -1
- package/dist/ShowQueryHistory-BDN0tzHg.js +0 -190
- package/dist/ShowQueryHistory-BDN0tzHg.js.map +0 -1
- package/dist/SubMenu-B072oEGb.js +0 -191
- package/dist/SubMenu-B072oEGb.js.map +0 -1
- package/dist/Users-CsJ08Kjm.js +0 -40
- package/dist/Users-CsJ08Kjm.js.map +0 -1
- package/dist/index.lib-C3fwoM3y.js +0 -820
- package/dist/index.lib-C3fwoM3y.js.map +0 -1
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { jsxs as s, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslateProvider as h } from "@/common/languageTranslator/TranslationContext";
|
|
3
|
+
import { showToast as w } from "@/common/toaster/toaster";
|
|
4
|
+
import v from "@/hooks/useTrackEvent";
|
|
5
|
+
import { generateUUID as U } from "@/utils/UUIDgenerator";
|
|
6
|
+
import d from "@/common/fontAwesomeIcons/FontAwesomeIcons";
|
|
7
|
+
import { Dialog as D, DialogTitle as C, Box as x, Typography as f, IconButton as I, DialogContent as N, DialogActions as T, Button as c } from "@mui/material";
|
|
8
|
+
import E from "@/views/custom-components/PostgresEditor";
|
|
9
|
+
import a from "prop-types";
|
|
10
|
+
import { useMemo as k } from "react";
|
|
11
|
+
function q({ open: y, handleClose: i, data: t, type: m }) {
|
|
12
|
+
const { translate: l } = h(), g = v(), p = k(() => {
|
|
13
|
+
const r = U();
|
|
14
|
+
let e = {};
|
|
15
|
+
t != null && t.featureJson && (t == null ? void 0 : t.featureJson) != null ? e.featureJson = t == null ? void 0 : t.featureJson : e.featureJson = null;
|
|
16
|
+
let n = "";
|
|
17
|
+
e.groupName = t == null ? void 0 : t.groupName, e.menuName = t == null ? void 0 : t.name, e.subgroupName = t == null ? void 0 : t.subgroupName, e.navigationState = t == null ? void 0 : t.navigationState, e.menuType = m, e.uuid = r, e.groupName && e.groupName != null ? (n = "select id from menu_group mg where group_name = '" + e.groupName + "'", e.groupUUID = r) : (n = null, e.groupUUID = null);
|
|
18
|
+
let u;
|
|
19
|
+
return e.subgroupName && e.subgroupName != null ? (u = "select sub_group_id from menu_config mc where menu_name = '" + e.subgroupName + "'", e.subgroupUUID = r) : (u = null, e.subgroupUUID = null), e.text = "insert into menu_config (feature_json, group_id, active, is_dynamic_report, menu_name, navigation_state, sub_group_id,", e.text += `
|
|
20
|
+
`, e.text += 'menu_type,"uuid", group_name_uuid, sub_group_uuid)', e.text += `
|
|
21
|
+
`, e.text += "values(", e.featureJson != null ? e.text += "'" + e.featureJson + "'" : e.text += "null", e.text += `
|
|
22
|
+
`, e.text += ",", n != null ? e.text += "(" + n + ")" : e.text += "null", e.text += ",", e.text += "true, false,", e.text += "'" + e.menuName + "'", e.text += ",", e.text += `
|
|
23
|
+
`, e.text += "'" + e.navigationState + "'", e.text += ",", u != null ? e.text += "(" + u + ")" : e.text += "null", e.text += ",", e.text += "'" + e.menuType + "'", e.text += ",", e.text += "'" + e.uuid + "'", e.text += ",", e.groupUUID != null ? e.text += "'" + e.groupUUID + "'" : e.text += "null", e.text += ",", e.subgroupUUID != null ? e.text += "'" + e.subgroupUUID + "'" : e.text += "null", e.text += ")", e.text += `
|
|
24
|
+
`, e.text += "on conflict(navigation_state,active) do update", e.text += `
|
|
25
|
+
`, e.text += "SET feature_json = excluded.feature_json,", e.text += `
|
|
26
|
+
`, e.text += " group_id= excluded.group_id,", e.text += `
|
|
27
|
+
`, e.text += " menu_name = excluded.menu_name,", e.text += `
|
|
28
|
+
`, e.text += " sub_group_id= excluded.sub_group_id,", e.text += `
|
|
29
|
+
`, e.text += " menu_type= excluded.menu_type;", e.text;
|
|
30
|
+
}, [t, m]), _ = () => {
|
|
31
|
+
const r = new Blob([p], { type: "text/plain" }), e = (r.size / 1024).toFixed(2), n = document.createElement("a");
|
|
32
|
+
n.href = URL.createObjectURL(r), n.download = "V" + (/* @__PURE__ */ new Date()).getTime() + "__CREATED_OR_UPDATED_feature_" + m + ".sql", document.body.appendChild(n), n.click(), document.body.removeChild(n), g("file_download", {
|
|
33
|
+
file_type: "sql",
|
|
34
|
+
file_name: n.download,
|
|
35
|
+
file_size: `${e} KB`,
|
|
36
|
+
download_status: "success"
|
|
37
|
+
}), i();
|
|
38
|
+
}, b = () => {
|
|
39
|
+
navigator.clipboard.writeText(p).then(
|
|
40
|
+
() => {
|
|
41
|
+
w({
|
|
42
|
+
message: "Query copied",
|
|
43
|
+
type: "success"
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
(r) => {
|
|
47
|
+
console.error("Could not copy text: ", r);
|
|
48
|
+
}
|
|
49
|
+
), i();
|
|
50
|
+
};
|
|
51
|
+
return /* @__PURE__ */ s(
|
|
52
|
+
D,
|
|
53
|
+
{
|
|
54
|
+
"data-testid": "flywayquery-modal",
|
|
55
|
+
open: y,
|
|
56
|
+
onClose: i,
|
|
57
|
+
fullWidth: !0,
|
|
58
|
+
maxWidth: "md",
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ s(
|
|
61
|
+
C,
|
|
62
|
+
{
|
|
63
|
+
sx: {
|
|
64
|
+
display: "flex",
|
|
65
|
+
alignItems: "flex-start",
|
|
66
|
+
justifyContent: "space-between",
|
|
67
|
+
gap: 2,
|
|
68
|
+
py: 1.5,
|
|
69
|
+
borderBottom: "1px solid",
|
|
70
|
+
borderColor: "divider"
|
|
71
|
+
},
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ s(x, { children: [
|
|
74
|
+
/* @__PURE__ */ o(
|
|
75
|
+
f,
|
|
76
|
+
{
|
|
77
|
+
variant: "subtitle1",
|
|
78
|
+
component: "span",
|
|
79
|
+
sx: { fontWeight: 700, display: "block" },
|
|
80
|
+
children: l("FLYWAY QUERY")
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
/* @__PURE__ */ o(f, { variant: "body2", color: "text.secondary", children: l(
|
|
84
|
+
"Copy or download this migration to recreate this menu entry on another environment."
|
|
85
|
+
) })
|
|
86
|
+
] }),
|
|
87
|
+
/* @__PURE__ */ o(
|
|
88
|
+
I,
|
|
89
|
+
{
|
|
90
|
+
size: "small",
|
|
91
|
+
onClick: i,
|
|
92
|
+
"aria-label": l("Close"),
|
|
93
|
+
"data-testid": "flywayquery-close-button",
|
|
94
|
+
children: /* @__PURE__ */ o(d, { iconName: "faXmark" })
|
|
95
|
+
}
|
|
96
|
+
)
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
/* @__PURE__ */ o(N, { children: /* @__PURE__ */ o(
|
|
101
|
+
x,
|
|
102
|
+
{
|
|
103
|
+
"data-testid": "flywayquery-textfield-query-display",
|
|
104
|
+
role: "region",
|
|
105
|
+
"aria-label": l("FLYWAY QUERY"),
|
|
106
|
+
sx: {
|
|
107
|
+
mt: 2,
|
|
108
|
+
overflow: "hidden",
|
|
109
|
+
borderRadius: (r) => `${r.shape.borderRadius}px`,
|
|
110
|
+
border: "1px solid",
|
|
111
|
+
borderColor: "divider"
|
|
112
|
+
},
|
|
113
|
+
children: /* @__PURE__ */ o(
|
|
114
|
+
E,
|
|
115
|
+
{
|
|
116
|
+
mode: "READ_ONLY",
|
|
117
|
+
height: "45vh",
|
|
118
|
+
defaultValue: p
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
) }),
|
|
123
|
+
/* @__PURE__ */ s(
|
|
124
|
+
T,
|
|
125
|
+
{
|
|
126
|
+
sx: { px: 3, py: 2, borderTop: "1px solid", borderColor: "divider" },
|
|
127
|
+
children: [
|
|
128
|
+
/* @__PURE__ */ o(
|
|
129
|
+
c,
|
|
130
|
+
{
|
|
131
|
+
"data-testid": "flywayquery-close-button-action",
|
|
132
|
+
variant: "outlined",
|
|
133
|
+
color: "inherit",
|
|
134
|
+
size: "small",
|
|
135
|
+
onClick: i,
|
|
136
|
+
children: l("Close")
|
|
137
|
+
}
|
|
138
|
+
),
|
|
139
|
+
/* @__PURE__ */ o(
|
|
140
|
+
c,
|
|
141
|
+
{
|
|
142
|
+
"data-testid": "flywayquery-copy-button",
|
|
143
|
+
variant: "outlined",
|
|
144
|
+
size: "small",
|
|
145
|
+
color: "primary",
|
|
146
|
+
startIcon: /* @__PURE__ */ o(d, { iconName: "faCopy" }),
|
|
147
|
+
onClick: b,
|
|
148
|
+
children: l("Copy")
|
|
149
|
+
}
|
|
150
|
+
),
|
|
151
|
+
/* @__PURE__ */ o(
|
|
152
|
+
c,
|
|
153
|
+
{
|
|
154
|
+
"data-testid": "flywayquery-download-button",
|
|
155
|
+
variant: "contained",
|
|
156
|
+
color: "primary",
|
|
157
|
+
size: "small",
|
|
158
|
+
startIcon: /* @__PURE__ */ o(d, { iconName: "faDownload" }),
|
|
159
|
+
onClick: _,
|
|
160
|
+
children: l("Download")
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
)
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
q.propTypes = {
|
|
171
|
+
open: a.any,
|
|
172
|
+
handleClose: a.any,
|
|
173
|
+
data: a.any,
|
|
174
|
+
type: a.any
|
|
175
|
+
};
|
|
176
|
+
export {
|
|
177
|
+
q as default
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=FlywayQuery-CQygj51V.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlywayQuery-CQygj51V.js","sources":["../src/views/Features/FlywayQuery.jsx"],"sourcesContent":["import { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { generateUUID } from \"@/utils/UUIDgenerator\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport PostgresEditor from \"@/views/custom-components/PostgresEditor\";\nimport PropTypes from \"prop-types\";\nimport React, { useMemo } from \"react\";\n\n/**\n * A functional component that renders a Flyway query interface.\n * @module FlywayQuery\n * @param {Object} props - The props object.\n * @param {boolean} props.open - Controls the visibility of the component.\n * @param {Function} props.handleClose - Callback function to handle closing the component.\n * @param {Object} props.data - Data to be used or displayed within the component.\n * @param {string} props.type - Determines the type of query or functionality.\n * @returns {JSX.Element} The rendered component.\n */\nexport default function FlywayQuery({ open, handleClose, data, type }) {\n const { translate } = useTranslateProvider();\n const trackEvent = useTrackEvent();\n\n // Derived, not effect-then-setState: PostgresEditor creates its Monaco\n // instance asynchronously and captures `defaultValue` at that moment, so a\n // query that only lands on the second render never reaches the editor.\n const queryText = useMemo(() => {\n const uuid = generateUUID();\n let temp = {};\n if (data?.featureJson && data?.featureJson != null) {\n temp.featureJson = data?.featureJson;\n } else {\n temp.featureJson = null;\n }\n let groupIdString = \"\";\n temp.groupName = data?.groupName;\n temp.menuName = data?.name;\n temp.subgroupName = data?.subgroupName;\n temp.navigationState = data?.navigationState;\n temp.menuType = type;\n temp.uuid = uuid;\n temp.groupUUID;\n temp.subgroupUUID;\n\n if (temp.groupName && temp.groupName != null) {\n groupIdString =\n \"select id from menu_group mg where group_name = '\" +\n temp.groupName +\n \"'\";\n temp.groupUUID = uuid;\n } else {\n groupIdString = null;\n temp.groupUUID = null;\n }\n let subgroupIdString;\n if (temp.subgroupName && temp.subgroupName != null) {\n subgroupIdString =\n \"select sub_group_id from menu_config mc where menu_name = '\" +\n temp.subgroupName +\n \"'\";\n temp.subgroupUUID = uuid;\n } else {\n subgroupIdString = null;\n temp.subgroupUUID = null;\n }\n\n temp.text =\n \"insert into menu_config (feature_json, group_id, active, is_dynamic_report, menu_name, navigation_state, sub_group_id,\";\n temp.text += \"\\n\";\n temp.text += 'menu_type,\"uuid\", group_name_uuid, sub_group_uuid)';\n temp.text += \"\\n\";\n temp.text += \"values(\";\n if (temp.featureJson != null) {\n temp.text += \"'\" + temp.featureJson + \"'\";\n } else {\n temp.text += \"null\";\n }\n temp.text += \"\\n\";\n temp.text += \",\";\n if (groupIdString != null) {\n temp.text += \"(\" + groupIdString + \")\";\n } else {\n temp.text += \"null\";\n }\n temp.text += \",\";\n temp.text += \"true, false,\";\n temp.text += \"'\" + temp.menuName + \"'\";\n temp.text += \",\";\n temp.text += \"\\n\";\n temp.text += \"'\" + temp.navigationState + \"'\";\n temp.text += \",\";\n if (subgroupIdString != null) {\n temp.text += \"(\" + subgroupIdString + \")\";\n } else {\n temp.text += \"null\";\n }\n temp.text += \",\";\n temp.text += \"'\" + temp.menuType + \"'\";\n temp.text += \",\";\n temp.text += \"'\" + temp.uuid + \"'\";\n temp.text += \",\";\n if (temp.groupUUID != null) {\n temp.text += \"'\" + temp.groupUUID + \"'\";\n } else {\n temp.text += \"null\";\n }\n temp.text += \",\";\n if (temp.subgroupUUID != null) {\n temp.text += \"'\" + temp.subgroupUUID + \"'\";\n } else {\n temp.text += \"null\";\n }\n temp.text += \")\";\n temp.text += \"\\n\";\n temp.text += \"on conflict(navigation_state,active) do update\";\n temp.text += \"\\n\";\n temp.text += \"SET feature_json = excluded.feature_json,\";\n temp.text += \"\\n\";\n temp.text += \"\tgroup_id= excluded.group_id,\";\n temp.text += \"\\n\";\n temp.text += \" \tmenu_name = excluded.menu_name,\";\n temp.text += \"\\n\";\n temp.text += \"\tsub_group_id= excluded.sub_group_id,\";\n temp.text += \"\\n\";\n temp.text += \" \tmenu_type= excluded.menu_type;\";\n\n return temp.text;\n }, [data, type]);\n\n /**\n * Handles the download of a SQL file with the query text.\n * @function handleDownload\n * @returns {void}\n */\n\n const handleDownload = () => {\n const blob = new Blob([queryText], { type: \"text/plain\" });\n const blobSizeInKB = (blob.size / 1024).toFixed(2);\n const link = document.createElement(\"a\");\n link.href = URL.createObjectURL(blob);\n link.download =\n \"V\" +\n new Date().getTime() +\n \"__CREATED_OR_UPDATED_feature_\" +\n type +\n \".sql\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n trackEvent(\"file_download\", {\n file_type: \"sql\",\n file_name: link.download,\n file_size: `${blobSizeInKB} KB`,\n download_status: \"success\",\n });\n handleClose();\n };\n\n /**\n * Copies the query text to the clipboard and displays a success message.\n * @function handleCopy\n * @returns {void}\n */\n\n const handleCopy = () => {\n navigator.clipboard.writeText(queryText).then(\n () => {\n showToast({\n message: \"Query copied\",\n type: \"success\",\n });\n },\n (err) => {\n console.error(\"Could not copy text: \", err);\n },\n );\n handleClose();\n };\n\n return (\n <Dialog\n data-testid=\"flywayquery-modal\"\n open={open}\n onClose={handleClose}\n fullWidth\n maxWidth=\"md\"\n >\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\n variant=\"subtitle1\"\n component=\"span\"\n sx={{ fontWeight: 700, display: \"block\" }}\n >\n {translate(\"FLYWAY QUERY\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Copy or download this migration to recreate this menu entry on another environment.\",\n )}\n </Typography>\n </Box>\n <IconButton\n size=\"small\"\n onClick={handleClose}\n aria-label={translate(\"Close\")}\n data-testid=\"flywayquery-close-button\"\n >\n <FontAwesomeIcons iconName=\"faXmark\" />\n </IconButton>\n </DialogTitle>\n\n <DialogContent>\n <Box\n data-testid=\"flywayquery-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\n mode=\"READ_ONLY\"\n height=\"45vh\"\n defaultValue={queryText}\n />\n </Box>\n </DialogContent>\n\n <DialogActions\n sx={{ px: 3, py: 2, borderTop: \"1px solid\", borderColor: \"divider\" }}\n >\n <Button\n data-testid=\"flywayquery-close-button-action\"\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n onClick={handleClose}\n >\n {translate(\"Close\")}\n </Button>\n <Button\n data-testid=\"flywayquery-copy-button\"\n variant=\"outlined\"\n size=\"small\"\n color=\"primary\"\n startIcon={<FontAwesomeIcons iconName=\"faCopy\" />}\n onClick={handleCopy}\n >\n {translate(\"Copy\")}\n </Button>\n <Button\n data-testid=\"flywayquery-download-button\"\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n startIcon={<FontAwesomeIcons iconName=\"faDownload\" />}\n onClick={handleDownload}\n >\n {translate(\"Download\")}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n\nFlywayQuery.propTypes = {\n open: PropTypes.any,\n handleClose: PropTypes.any,\n data: PropTypes.any,\n type: PropTypes.any,\n};\n"],"names":["FlywayQuery","open","handleClose","data","type","translate","useTranslateProvider","trackEvent","useTrackEvent","queryText","useMemo","uuid","generateUUID","temp","groupIdString","subgroupIdString","handleDownload","blob","blobSizeInKB","link","handleCopy","showToast","err","jsxs","Dialog","DialogTitle","Box","jsx","Typography","IconButton","FontAwesomeIcons","DialogContent","t","PostgresEditor","DialogActions","Button","PropTypes"],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { jsx as t, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { Dialog as M, DialogTitle as W, Box as m, Typography as w, IconButton as j, DialogContent as A, DialogActions as F, Button as g } from "@mui/material";
|
|
4
|
+
import P from "@/common/fontAwesomeIcons/FontAwesomeIcons";
|
|
5
|
+
import { useForm as q } from "react-hook-form";
|
|
6
|
+
import { yupResolver as N } from "@hookform/resolvers/yup";
|
|
7
|
+
import * as s from "yup";
|
|
8
|
+
import h from "@/views/custom-components/CustomCheckBox";
|
|
9
|
+
import k from "@/views/custom-components/CustomDatePicker";
|
|
10
|
+
import r from "prop-types";
|
|
11
|
+
import { a as z } from "./Features-Dne21RWu.js";
|
|
12
|
+
import { showToast as B } from "@/common/toaster/toaster";
|
|
13
|
+
import { execute as V } from "@/common/services/GlobalApis.js";
|
|
14
|
+
import { useTranslateProvider as L } from "@/common/languageTranslator/TranslationContext";
|
|
15
|
+
const R = s.object().shape({
|
|
16
|
+
noStartDate: s.boolean().default(!0),
|
|
17
|
+
noEndDate: s.boolean().default(!0),
|
|
18
|
+
startDate: s.date().nullable().when("noStartDate", {
|
|
19
|
+
is: !1,
|
|
20
|
+
then: (a) => a.required("Start date is required")
|
|
21
|
+
}),
|
|
22
|
+
endDate: s.date().nullable().when("noEndDate", {
|
|
23
|
+
is: !1,
|
|
24
|
+
then: (a) => a.required("End date is required")
|
|
25
|
+
}).test(
|
|
26
|
+
"endAfterStart",
|
|
27
|
+
"End date must be after start date",
|
|
28
|
+
function(a) {
|
|
29
|
+
const { startDate: n, noEndDate: e } = this.parent;
|
|
30
|
+
return !a || e || !n ? !0 : new Date(a) >= new Date(n);
|
|
31
|
+
}
|
|
32
|
+
),
|
|
33
|
+
isBackendOnly: s.boolean().default(!1)
|
|
34
|
+
});
|
|
35
|
+
function X({
|
|
36
|
+
isOpen: a,
|
|
37
|
+
onClose: n,
|
|
38
|
+
pendingGrant: e,
|
|
39
|
+
subMenuId: E,
|
|
40
|
+
newApiData: I
|
|
41
|
+
}) {
|
|
42
|
+
const { translate: l } = L(), {
|
|
43
|
+
handleSubmit: v,
|
|
44
|
+
control: i,
|
|
45
|
+
reset: p,
|
|
46
|
+
watch: u,
|
|
47
|
+
formState: { errors: f },
|
|
48
|
+
trigger: b
|
|
49
|
+
} = q({
|
|
50
|
+
resolver: N(R),
|
|
51
|
+
defaultValues: {
|
|
52
|
+
noStartDate: !0,
|
|
53
|
+
noEndDate: !0,
|
|
54
|
+
startDate: null,
|
|
55
|
+
endDate: null,
|
|
56
|
+
isBackendOnly: !1
|
|
57
|
+
},
|
|
58
|
+
mode: "onChange"
|
|
59
|
+
}), T = u("noStartDate"), Y = u("noEndDate"), x = u("startDate"), y = u("endDate"), O = async (d) => {
|
|
60
|
+
var S, C;
|
|
61
|
+
if (e) {
|
|
62
|
+
try {
|
|
63
|
+
await V({
|
|
64
|
+
code: "grant_permission",
|
|
65
|
+
parameters: {
|
|
66
|
+
featureName: e.id,
|
|
67
|
+
roleIds: e != null && e.designationId ? String(e == null ? void 0 : e.designationId) : null,
|
|
68
|
+
userIds: e != null && e.userId ? String(e.userId) : null,
|
|
69
|
+
startDate: d.noStartDate ? null : d.startDate,
|
|
70
|
+
endDate: d.noEndDate ? null : d.endDate,
|
|
71
|
+
isBackendOnly: d.isBackendOnly
|
|
72
|
+
}
|
|
73
|
+
}), B({
|
|
74
|
+
type: "success",
|
|
75
|
+
message: "Permission Granted Successfully"
|
|
76
|
+
});
|
|
77
|
+
const { data: c } = await z(E);
|
|
78
|
+
I(c);
|
|
79
|
+
} catch (c) {
|
|
80
|
+
B({
|
|
81
|
+
type: "error",
|
|
82
|
+
message: `Error granting permission: ${(C = (S = c == null ? void 0 : c.response) == null ? void 0 : S.data) == null ? void 0 : C.message}`
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
p(), n();
|
|
86
|
+
}
|
|
87
|
+
}, D = () => {
|
|
88
|
+
p(), n();
|
|
89
|
+
};
|
|
90
|
+
return /* @__PURE__ */ t(M, { open: !!a, onClose: D, fullWidth: !0, maxWidth: "sm", children: /* @__PURE__ */ o("form", { onSubmit: v(O), children: [
|
|
91
|
+
/* @__PURE__ */ o(
|
|
92
|
+
W,
|
|
93
|
+
{
|
|
94
|
+
sx: {
|
|
95
|
+
display: "flex",
|
|
96
|
+
alignItems: "flex-start",
|
|
97
|
+
justifyContent: "space-between",
|
|
98
|
+
gap: 2,
|
|
99
|
+
py: 1.5,
|
|
100
|
+
borderBottom: "1px solid",
|
|
101
|
+
borderColor: "divider"
|
|
102
|
+
},
|
|
103
|
+
children: [
|
|
104
|
+
/* @__PURE__ */ o(m, { children: [
|
|
105
|
+
/* @__PURE__ */ t(
|
|
106
|
+
w,
|
|
107
|
+
{
|
|
108
|
+
variant: "subtitle1",
|
|
109
|
+
component: "span",
|
|
110
|
+
sx: { fontWeight: 700, display: "block" },
|
|
111
|
+
children: l("Set Access Window")
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
/* @__PURE__ */ t(w, { variant: "body2", color: "text.secondary", children: l(
|
|
115
|
+
"Leave both dates off to grant access that never expires."
|
|
116
|
+
) })
|
|
117
|
+
] }),
|
|
118
|
+
/* @__PURE__ */ t(
|
|
119
|
+
j,
|
|
120
|
+
{
|
|
121
|
+
size: "small",
|
|
122
|
+
onClick: D,
|
|
123
|
+
"aria-label": l("Close"),
|
|
124
|
+
"data-testid": "grantpermission-close-button",
|
|
125
|
+
children: /* @__PURE__ */ t(P, { iconName: "faXmark" })
|
|
126
|
+
}
|
|
127
|
+
)
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
),
|
|
131
|
+
/* @__PURE__ */ o(A, { children: [
|
|
132
|
+
/* @__PURE__ */ o(
|
|
133
|
+
m,
|
|
134
|
+
{
|
|
135
|
+
sx: {
|
|
136
|
+
display: "flex",
|
|
137
|
+
flexDirection: { xs: "column", sm: "row" },
|
|
138
|
+
gap: 3,
|
|
139
|
+
pt: 2
|
|
140
|
+
},
|
|
141
|
+
children: [
|
|
142
|
+
/* @__PURE__ */ o(m, { sx: { flex: 1, minWidth: 0 }, children: [
|
|
143
|
+
/* @__PURE__ */ t(
|
|
144
|
+
h,
|
|
145
|
+
{
|
|
146
|
+
defaultChecked: !0,
|
|
147
|
+
label: "No Start Date",
|
|
148
|
+
control: i,
|
|
149
|
+
errors: f,
|
|
150
|
+
name: "noStartDate",
|
|
151
|
+
onChange: () => b("startDate")
|
|
152
|
+
}
|
|
153
|
+
),
|
|
154
|
+
/* @__PURE__ */ t(
|
|
155
|
+
k,
|
|
156
|
+
{
|
|
157
|
+
control: i,
|
|
158
|
+
name: "startDate",
|
|
159
|
+
errors: f,
|
|
160
|
+
disabled: T,
|
|
161
|
+
format: "DD/MM/YYYY",
|
|
162
|
+
maxDate: y || void 0
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
] }),
|
|
166
|
+
/* @__PURE__ */ o(m, { sx: { flex: 1, minWidth: 0 }, children: [
|
|
167
|
+
/* @__PURE__ */ t(
|
|
168
|
+
h,
|
|
169
|
+
{
|
|
170
|
+
label: "No End Date",
|
|
171
|
+
control: i,
|
|
172
|
+
name: "noEndDate",
|
|
173
|
+
errors: f,
|
|
174
|
+
onChange: () => b("endDate")
|
|
175
|
+
}
|
|
176
|
+
),
|
|
177
|
+
/* @__PURE__ */ t(
|
|
178
|
+
k,
|
|
179
|
+
{
|
|
180
|
+
control: i,
|
|
181
|
+
name: "endDate",
|
|
182
|
+
errors: f,
|
|
183
|
+
disabled: Y,
|
|
184
|
+
format: "DD/MM/YYYY",
|
|
185
|
+
minDate: x || void 0
|
|
186
|
+
}
|
|
187
|
+
)
|
|
188
|
+
] })
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
),
|
|
192
|
+
/* @__PURE__ */ t(m, { sx: { mt: 1 }, children: /* @__PURE__ */ t(
|
|
193
|
+
h,
|
|
194
|
+
{
|
|
195
|
+
label: "Is Backend Only?",
|
|
196
|
+
control: i,
|
|
197
|
+
name: "isBackendOnly"
|
|
198
|
+
}
|
|
199
|
+
) })
|
|
200
|
+
] }),
|
|
201
|
+
/* @__PURE__ */ o(
|
|
202
|
+
F,
|
|
203
|
+
{
|
|
204
|
+
sx: { px: 3, py: 2, borderTop: "1px solid", borderColor: "divider" },
|
|
205
|
+
children: [
|
|
206
|
+
/* @__PURE__ */ t(
|
|
207
|
+
g,
|
|
208
|
+
{
|
|
209
|
+
variant: "outlined",
|
|
210
|
+
color: "inherit",
|
|
211
|
+
size: "small",
|
|
212
|
+
onClick: D,
|
|
213
|
+
type: "button",
|
|
214
|
+
children: l("Close")
|
|
215
|
+
}
|
|
216
|
+
),
|
|
217
|
+
/* @__PURE__ */ t(g, { variant: "contained", color: "primary", size: "small", type: "submit", children: l("Submit") })
|
|
218
|
+
]
|
|
219
|
+
}
|
|
220
|
+
)
|
|
221
|
+
] }) });
|
|
222
|
+
}
|
|
223
|
+
X.propTypes = {
|
|
224
|
+
isOpen: r.bool,
|
|
225
|
+
onClose: r.func,
|
|
226
|
+
pendingGrant: r.object,
|
|
227
|
+
execute: r.func,
|
|
228
|
+
getFeatureDataV2: r.func,
|
|
229
|
+
subMenuId: r.string,
|
|
230
|
+
newApiData: r.func,
|
|
231
|
+
showToast: r.func
|
|
232
|
+
};
|
|
233
|
+
export {
|
|
234
|
+
X as default
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=GrantPermissionModal-BDN66Atn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrantPermissionModal-BDN66Atn.js","sources":["../src/views/Features/GrantPermissionModal.jsx"],"sourcesContent":["import React from \"react\";\nimport {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from \"@mui/material\";\nimport FontAwesomeIcons from \"@/common/fontAwesomeIcons/FontAwesomeIcons\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as Yup from \"yup\";\nimport CustomCheckBox from \"@/views/custom-components/CustomCheckBox\";\nimport CustomDatePicker from \"@/views/custom-components/CustomDatePicker\";\nimport PropTypes from \"prop-types\";\nimport { getFeatureDataV2 } from \"../../services/Features\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { execute } from \"@/common/services/GlobalApis.js\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\n\nconst schema = Yup.object().shape({\n noStartDate: Yup.boolean().default(true),\n noEndDate: Yup.boolean().default(true),\n startDate: Yup.date()\n .nullable()\n .when(\"noStartDate\", {\n is: false,\n then: (schema) => schema.required(\"Start date is required\"),\n }),\n endDate: Yup.date()\n .nullable()\n .when(\"noEndDate\", {\n is: false,\n then: (schema) => schema.required(\"End date is required\"),\n })\n .test(\n \"endAfterStart\",\n \"End date must be after start date\",\n function (value) {\n const { startDate, noEndDate } = this.parent;\n if (!value || noEndDate || !startDate) return true;\n return new Date(value) >= new Date(startDate);\n }\n ),\n isBackendOnly: Yup.boolean().default(false),\n});\n\nexport default function GrantPermissionModal({\n isOpen,\n onClose,\n pendingGrant,\n subMenuId,\n newApiData,\n}) {\n const { translate } = useTranslateProvider();\n const {\n handleSubmit,\n control,\n reset,\n watch,\n formState: { errors },\n trigger,\n } = useForm({\n resolver: yupResolver(schema),\n defaultValues: {\n noStartDate: true,\n noEndDate: true,\n startDate: null,\n endDate: null,\n isBackendOnly: false,\n },\n mode: \"onChange\",\n });\n\n const noStartDate = watch(\"noStartDate\");\n const noEndDate = watch(\"noEndDate\");\n const startDate = watch(\"startDate\");\n const endDate = watch(\"endDate\");\n\n const handleFormSubmit = async (values) => {\n if (!pendingGrant) return;\n\n try {\n await execute({\n code: \"grant_permission\",\n parameters: {\n featureName: pendingGrant.id,\n roleIds: pendingGrant?.designationId\n ? String(pendingGrant?.designationId)\n : null,\n userIds: pendingGrant?.userId ? String(pendingGrant.userId) : null,\n startDate: values.noStartDate ? null : values.startDate,\n endDate: values.noEndDate ? null : values.endDate,\n isBackendOnly: values.isBackendOnly,\n },\n });\n\n showToast({\n type: \"success\",\n message: \"Permission Granted Successfully\",\n });\n\n // refresh data\n const { data: val } = await getFeatureDataV2(subMenuId);\n newApiData(val);\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error granting permission: ${error?.response?.data?.message}`,\n });\n }\n\n // cleanup\n reset();\n onClose();\n };\n\n const handleClose = () => {\n reset();\n onClose();\n };\n\n return (\n <Dialog open={Boolean(isOpen)} onClose={handleClose} fullWidth maxWidth=\"sm\">\n <form onSubmit={handleSubmit(handleFormSubmit)}>\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\n variant=\"subtitle1\"\n component=\"span\"\n sx={{ fontWeight: 700, display: \"block\" }}\n >\n {translate(\"Set Access Window\")}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {translate(\n \"Leave both dates off to grant access that never expires.\",\n )}\n </Typography>\n </Box>\n <IconButton\n size=\"small\"\n onClick={handleClose}\n aria-label={translate(\"Close\")}\n data-testid=\"grantpermission-close-button\"\n >\n <FontAwesomeIcons iconName=\"faXmark\" />\n </IconButton>\n </DialogTitle>\n\n <DialogContent>\n <Box\n sx={{\n display: \"flex\",\n flexDirection: { xs: \"column\", sm: \"row\" },\n gap: 3,\n pt: 2,\n }}\n >\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <CustomCheckBox\n defaultChecked={true}\n label={\"No Start Date\"}\n control={control}\n errors={errors}\n name={\"noStartDate\"}\n onChange={() => trigger(\"startDate\")}\n />\n <CustomDatePicker\n control={control}\n name={\"startDate\"}\n errors={errors}\n disabled={noStartDate}\n format=\"DD/MM/YYYY\"\n maxDate={endDate ? endDate : undefined}\n />\n </Box>\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <CustomCheckBox\n label={\"No End Date\"}\n control={control}\n name={\"noEndDate\"}\n errors={errors}\n onChange={() => trigger(\"endDate\")}\n />\n <CustomDatePicker\n control={control}\n name={\"endDate\"}\n errors={errors}\n disabled={noEndDate}\n format=\"DD/MM/YYYY\"\n minDate={startDate ? startDate : undefined}\n />\n </Box>\n </Box>\n\n <Box sx={{ mt: 1 }}>\n <CustomCheckBox\n label={\"Is Backend Only?\"}\n control={control}\n name={\"isBackendOnly\"}\n />\n </Box>\n </DialogContent>\n\n <DialogActions\n sx={{ px: 3, py: 2, borderTop: \"1px solid\", borderColor: \"divider\" }}\n >\n <Button\n variant=\"outlined\"\n color=\"inherit\"\n size=\"small\"\n onClick={handleClose}\n type=\"button\"\n >\n {translate(\"Close\")}\n </Button>\n <Button variant=\"contained\" color=\"primary\" size=\"small\" type=\"submit\">\n {translate(\"Submit\")}\n </Button>\n </DialogActions>\n </form>\n </Dialog>\n );\n}\n\nGrantPermissionModal.propTypes = {\n isOpen: PropTypes.bool,\n onClose: PropTypes.func,\n pendingGrant: PropTypes.object,\n execute: PropTypes.func,\n getFeatureDataV2: PropTypes.func,\n subMenuId: PropTypes.string,\n newApiData: PropTypes.func,\n showToast: PropTypes.func,\n};\n"],"names":["schema","Yup","value","startDate","noEndDate","GrantPermissionModal","isOpen","onClose","pendingGrant","subMenuId","newApiData","translate","useTranslateProvider","handleSubmit","control","reset","watch","errors","trigger","useForm","yupResolver","noStartDate","endDate","handleFormSubmit","values","execute","showToast","val","getFeatureDataV2","error","_b","_a","handleClose","Dialog","jsxs","DialogTitle","Box","jsx","Typography","IconButton","FontAwesomeIcons","DialogContent","CustomCheckBox","CustomDatePicker","DialogActions","Button","PropTypes"],"mappings":"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"}
|