@argusoft/medplat-core 1.0.27 → 1.0.29

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 (97) hide show
  1. package/dist/AccessRights-Zm8Obm4N.js +1284 -0
  2. package/dist/AccessRights-Zm8Obm4N.js.map +1 -0
  3. package/dist/{AddFeatures-C0Z29oSd.js → AddFeatures-v3TmGQee.js} +2 -2
  4. package/dist/{AddFeatures-C0Z29oSd.js.map → AddFeatures-v3TmGQee.js.map} +1 -1
  5. package/dist/AddMenuConfiguration-Ce91MhnU.js +8547 -0
  6. package/dist/AddMenuConfiguration-Ce91MhnU.js.map +1 -0
  7. package/dist/{AddRoleDrawer-CQdzQZLb.js → AddRoleDrawer-0gqAK8N0.js} +62 -63
  8. package/dist/AddRoleDrawer-0gqAK8N0.js.map +1 -0
  9. package/dist/{ChangePasswordModalCore-CDxkeIIM.js → ChangePasswordModalCore-DutQAZOx.js} +2 -2
  10. package/dist/{ChangePasswordModalCore-CDxkeIIM.js.map → ChangePasswordModalCore-DutQAZOx.js.map} +1 -1
  11. package/dist/{ConditionConfig-DSsgGEXS.js → ConditionConfig-B4Ffpgj3.js} +2 -2
  12. package/dist/ConditionConfig-B4Ffpgj3.js.map +1 -0
  13. package/dist/{EntityManagement-GaYsBTvf.js → EntityManagement-CPQL6qBj.js} +2 -2
  14. package/dist/{EntityManagement-GaYsBTvf.js.map → EntityManagement-CPQL6qBj.js.map} +1 -1
  15. package/dist/{EventConfigurations-kNtAj_WM.js → EventConfigurations-BJcURufo.js} +3 -3
  16. package/dist/{EventConfigurations-kNtAj_WM.js.map → EventConfigurations-BJcURufo.js.map} +1 -1
  17. package/dist/{EventsExceptionModal-D4Bf1ilS.js → EventsExceptionModal-BlZtBQoR.js} +2 -2
  18. package/dist/{EventsExceptionModal-D4Bf1ilS.js.map → EventsExceptionModal-BlZtBQoR.js.map} +1 -1
  19. package/dist/{EventsSkeleton-8iiETGcf.js → EventsSkeleton-DK6JDKAK.js} +26 -19
  20. package/dist/EventsSkeleton-DK6JDKAK.js.map +1 -0
  21. package/dist/{FeatureMenu-jl7-Tk6y.js → FeatureMenu-C3503UIX.js} +3 -3
  22. package/dist/{FeatureMenu-jl7-Tk6y.js.map → FeatureMenu-C3503UIX.js.map} +1 -1
  23. package/dist/Features-Dne21RWu.js +14 -0
  24. package/dist/Features-Dne21RWu.js.map +1 -0
  25. package/dist/FileSaver.min-CN9EpL2h.js.map +1 -1
  26. package/dist/{ManageNotification-CaBAOhji.js → Google-DQxMfbaL.js} +1725 -2652
  27. package/dist/Google-DQxMfbaL.js.map +1 -0
  28. package/dist/ImmunizationConfigurationBase-DLQVSNnt.js +5895 -0
  29. package/dist/ImmunizationConfigurationBase-DLQVSNnt.js.map +1 -0
  30. package/dist/ImmunizationConfigurationBase.css +1 -1
  31. package/dist/ImmunizationSkeleton-D2tdv5k-.js.map +1 -1
  32. package/dist/{ManageDynamicFeature-BhONvfC_.js → ManageDynamicFeature-dt096fyj.js} +2 -2
  33. package/dist/{ManageDynamicFeature-BhONvfC_.js.map → ManageDynamicFeature-dt096fyj.js.map} +1 -1
  34. package/dist/{ManageEventConfiguration-DV3I5POA.js → ManageEventConfiguration-BpSJszSX.js} +5 -5
  35. package/dist/{ManageEventConfiguration-DV3I5POA.js.map → ManageEventConfiguration-BpSJszSX.js.map} +1 -1
  36. package/dist/ManageNotification-CfhHlfxA.js +934 -0
  37. package/dist/ManageNotification-CfhHlfxA.js.map +1 -0
  38. package/dist/{ManageRole-CGYfglpo.js → ManageRole-4Y2PP4dQ.js} +32 -30
  39. package/dist/ManageRole-4Y2PP4dQ.js.map +1 -0
  40. package/dist/{ManageUser-AY1EUDLI.js → ManageUser-DDzyd9jm.js} +1728 -1592
  41. package/dist/ManageUser-DDzyd9jm.js.map +1 -0
  42. package/dist/MobileMenuManagement-Cf8IZlla.js +108 -0
  43. package/dist/MobileMenuManagement-Cf8IZlla.js.map +1 -0
  44. package/dist/{MobileTypeEventConfigModal-BxLympIO.js → MobileTypeEventConfigModal-DUkUYACe.js} +2 -2
  45. package/dist/MobileTypeEventConfigModal-DUkUYACe.js.map +1 -0
  46. package/dist/{NotificationList-C3Vb_jKU.js → NotificationList-BMFpNUJG.js} +109 -110
  47. package/dist/NotificationList-BMFpNUJG.js.map +1 -0
  48. package/dist/{OtherTypeEventConfigModal-BeG1GrUi.js → OtherTypeEventConfigModal-CYBfr2XE.js} +570 -478
  49. package/dist/OtherTypeEventConfigModal-CYBfr2XE.js.map +1 -0
  50. package/dist/{RoleManagement-BPl2cE27.js → RoleManagement-DEiBNfT8.js} +100 -101
  51. package/dist/RoleManagement-DEiBNfT8.js.map +1 -0
  52. package/dist/{ServerSyncModal-D_oFpv3C.js → ServerSyncModal-92U3xtqI.js} +84 -85
  53. package/dist/ServerSyncModal-92U3xtqI.js.map +1 -0
  54. package/dist/{SubMenu-DYxAPH2Z.js → SubMenu-B072oEGb.js} +3 -3
  55. package/dist/{SubMenu-DYxAPH2Z.js.map → SubMenu-B072oEGb.js.map} +1 -1
  56. package/dist/{TableDetails-Cf_YfnY2.js → TableDetails-BtafRxXb.js} +1069 -831
  57. package/dist/TableDetails-BtafRxXb.js.map +1 -0
  58. package/dist/{TableList-D6jnIbnz.js → TableList-Dpo6dO7S.js} +2 -2
  59. package/dist/{TableList-D6jnIbnz.js.map → TableList-Dpo6dO7S.js.map} +1 -1
  60. package/dist/{TypeConfiguration-37wp-gsl.js → TypeConfiguration-C3xoP2Nb.js} +2 -2
  61. package/dist/{TypeConfiguration-37wp-gsl.js.map → TypeConfiguration-C3xoP2Nb.js.map} +1 -1
  62. package/dist/{WidgetList-Dw_FmbbE.js → WidgetList-D7YuWfDD.js} +2 -2
  63. package/dist/{WidgetList-Dw_FmbbE.js.map → WidgetList-D7YuWfDD.js.map} +1 -1
  64. package/dist/dashboardLayoutUtils-D1xCAxp3.js +405 -0
  65. package/dist/dashboardLayoutUtils-D1xCAxp3.js.map +1 -0
  66. package/dist/i18next-CTOWN_jH.js.map +1 -1
  67. package/dist/index.css +1 -1
  68. package/dist/index.js +4 -752
  69. package/dist/index.js.map +1 -1
  70. package/dist/index.lib-C3fwoM3y.js +820 -0
  71. package/dist/index.lib-C3fwoM3y.js.map +1 -0
  72. package/dist/xlsx.min-D1LFqt_b.js.map +1 -1
  73. package/package.json +2 -2
  74. package/dist/AccessRights-CHu27ZOw.js +0 -1262
  75. package/dist/AccessRights-CHu27ZOw.js.map +0 -1
  76. package/dist/AddMenuConfiguration-BSQLl88V.js +0 -6570
  77. package/dist/AddMenuConfiguration-BSQLl88V.js.map +0 -1
  78. package/dist/AddRoleDrawer-CQdzQZLb.js.map +0 -1
  79. package/dist/ConditionConfig-DSsgGEXS.js.map +0 -1
  80. package/dist/EventsSkeleton-8iiETGcf.js.map +0 -1
  81. package/dist/Features-CObdzJp_.js +0 -13
  82. package/dist/Features-CObdzJp_.js.map +0 -1
  83. package/dist/ImmunizationConfigurationBase-BevKZx_l.js +0 -5910
  84. package/dist/ImmunizationConfigurationBase-BevKZx_l.js.map +0 -1
  85. package/dist/ManageNotification-CaBAOhji.js.map +0 -1
  86. package/dist/ManageRole-CGYfglpo.js.map +0 -1
  87. package/dist/ManageUser-AY1EUDLI.js.map +0 -1
  88. package/dist/MobileMenuManagement-CVAKyKDa.js +0 -112
  89. package/dist/MobileMenuManagement-CVAKyKDa.js.map +0 -1
  90. package/dist/MobileTypeEventConfigModal-BxLympIO.js.map +0 -1
  91. package/dist/NotificationList-C3Vb_jKU.js.map +0 -1
  92. package/dist/OtherTypeEventConfigModal-BeG1GrUi.js.map +0 -1
  93. package/dist/RoleManagement-BPl2cE27.js.map +0 -1
  94. package/dist/ServerSyncModal-D_oFpv3C.js.map +0 -1
  95. package/dist/TableDetails-Cf_YfnY2.js.map +0 -1
  96. package/dist/dashboardLayoutUtils-Bt5HA96J.js +0 -265
  97. package/dist/dashboardLayoutUtils-Bt5HA96J.js.map +0 -1
@@ -1,112 +0,0 @@
1
- import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
- import { api as T } from "@/common/interceptors/AxiosInterceptor";
3
- import { showToast as A } from "@/common/toaster/toaster";
4
- import { Typography as w, TextField as k, Button as F, TableContainer as R, Paper as j, Table as E, TableHead as P, TableRow as m, TableCell as a, TableBody as I, IconButton as W } from "@mui/material";
5
- import h from "@mui/material/Grid2";
6
- import { Box as q } from "@mui/system";
7
- import { useState as g, useEffect as B } from "react";
8
- import { useNavigate as z } from "react-router";
9
- import D from "@/common/fontAwesomeIcons/FontAwesomeIcons";
10
- import { c as J } from "./dashboardLayoutUtils-Bt5HA96J.js";
11
- const O = "/mobilemenu/v2", H = {
12
- getMobileMenuList: () => T.get(O + "/list")
13
- };
14
- function oe() {
15
- const [M, x] = g([]), [C, v] = g(""), [d, p] = g([]), b = z(), N = (r, n, s) => {
16
- const c = `addMenuConfiguration?${new URLSearchParams({ id: r }).toString()}`;
17
- b(c, { state: { mobileMenuList: d[s], roleId: n } });
18
- };
19
- B(() => {
20
- (async () => await S())();
21
- }, []);
22
- const S = async () => {
23
- try {
24
- const s = ((await H.getMobileMenuList()).data || []).map((l) => {
25
- const c = JSON.parse(l.configJson);
26
- let u = [];
27
- Object.values(c).forEach((t) => {
28
- let f = [];
29
- t.features && Array.isArray(t.features) ? f = t.features : t.layout && Array.isArray(t.layout) && (u.push(...J(t.layout)), f = t.layout.flatMap((o) => o.type === "SECTION" && o.features && Array.isArray(o.features) ? o.features : [])), f.forEach((o) => {
30
- o.menuName && !o.menus && u.push(o.menuName), o.menus && Array.isArray(o.menus) && o.menus.forEach((y) => {
31
- y.menuName && u.push(y.menuName);
32
- });
33
- });
34
- });
35
- const L = [...new Set(u)].join(", ");
36
- return {
37
- id: l.id,
38
- roleId: l.roleId,
39
- name: l.roleName,
40
- features: L,
41
- configJson: c
42
- };
43
- });
44
- x(s), p(s);
45
- } catch (r) {
46
- A({ message: r, type: "error" });
47
- }
48
- };
49
- return /* @__PURE__ */ e(h, { children: /* @__PURE__ */ i(q, { sx: { p: 3, backgroundColor: "background.default" }, children: [
50
- /* @__PURE__ */ i(h, { container: !0, sx: { justifyContent: "space-between", alignItems: "center", mb: 2 }, children: [
51
- /* @__PURE__ */ e(w, { variant: "h5", sx: { mb: 2, fontWeight: "bold" }, children: "Mobile Menu Management" }),
52
- /* @__PURE__ */ e(
53
- k,
54
- {
55
- size: "small",
56
- placeholder: "Search Role",
57
- variant: "outlined",
58
- value: C,
59
- onChange: (r) => {
60
- const n = r.target.value.toLowerCase();
61
- v(n), p(M.filter((s) => s.name.toLowerCase().includes(n)));
62
- },
63
- sx: { mb: 2, backgroundColor: "var(--color-background2)", borderRadius: 1 }
64
- }
65
- )
66
- ] }),
67
- /* @__PURE__ */ e(h, { sx: { justifyContent: "center", alignItems: "center", mb: 2 }, children: /* @__PURE__ */ e(
68
- F,
69
- {
70
- sx: { float: "right", mb: 2 },
71
- size: "small",
72
- variant: "contained",
73
- color: "success",
74
- onClick: () => {
75
- b("addMenuConfiguration");
76
- },
77
- children: "Add configuration"
78
- }
79
- ) }),
80
- /* @__PURE__ */ e(R, { component: j, elevation: 1, sx: { borderRadius: 2, maxHeight: 700 }, children: /* @__PURE__ */ i(E, { children: [
81
- /* @__PURE__ */ e(P, { children: /* @__PURE__ */ i(m, { sx: { backgroundColor: "#f2f2f2" }, children: [
82
- /* @__PURE__ */ e(a, { sx: { fontWeight: "bold" }, children: "Sr. No." }),
83
- /* @__PURE__ */ e(a, { sx: { fontWeight: "bold" }, children: "Role Name" }),
84
- /* @__PURE__ */ e(a, { sx: { fontWeight: "bold" }, children: "Features" }),
85
- /* @__PURE__ */ e(a, { align: "center", sx: { fontWeight: "bold" }, children: "Actions" })
86
- ] }) }),
87
- /* @__PURE__ */ i(I, { children: [
88
- d.map((r, n) => /* @__PURE__ */ i(
89
- m,
90
- {
91
- sx: {
92
- backgroundColor: n % 2 === 0 ? "#fff" : "var(--color-gray4)",
93
- "&:hover": { backgroundColor: "#e9f3ff" }
94
- },
95
- children: [
96
- /* @__PURE__ */ e(a, { children: n + 1 }),
97
- /* @__PURE__ */ e(a, { children: r.name }),
98
- /* @__PURE__ */ e(a, { children: r.features }),
99
- /* @__PURE__ */ e(a, { align: "center", children: /* @__PURE__ */ e(W, { color: "primary", onClick: () => N(r.id, r.roleId, n), children: /* @__PURE__ */ e(D, { iconName: "faPen", size: "sm" }) }) })
100
- ]
101
- },
102
- n
103
- )),
104
- d.length === 0 && /* @__PURE__ */ e(m, { children: /* @__PURE__ */ e(a, { colSpan: 4, align: "center", sx: { py: 4, color: "gray" }, children: "No roles found." }) })
105
- ] })
106
- ] }) })
107
- ] }) });
108
- }
109
- export {
110
- oe as default
111
- };
112
- //# sourceMappingURL=MobileMenuManagement-CVAKyKDa.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MobileMenuManagement-CVAKyKDa.js","sources":["../src/services/MobileMenuService.js","../src/views/MobileMenuManagement/MobileMenuManagement.jsx"],"sourcesContent":["import { api } from '@/common/interceptors/AxiosInterceptor';\n\nconst basePath = '/mobilemenu/v2';\n\nexport const MobileMenuService = {\n getMobileMenuList: () => api.get(basePath + '/list'),\n};\n","/**\n * @author Sanya Srivastava <ssrivastava@argusoft.com>\n * @date 2025-03-24 (Monday)\n */\n\nimport { MobileMenuService } from '../../services/MobileMenuService';\nimport { showToast } from '@/common/toaster/toaster';\nimport {\n Button,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Typography,\n} from '@mui/material';\nimport Grid from '@mui/material/Grid2';\nimport { Box } from '@mui/system';\nimport React, { useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router';\nimport FontAwesomeIcons from '@/common/fontAwesomeIcons/FontAwesomeIcons';\nimport { collectFeatureNamesFromLayout } from './dashboardLayoutUtils';\n\nexport default function MobileMenuManagement() {\n const [mobileMenuList, setMobileMenuList] = useState([]);\n const [searchText, setSearchText] = useState('');\n const [filteredList, setFilteredList] = useState([]);\n\n const navigate = useNavigate();\n\n const handleEdit = (id, roleId, index) => {\n const queryParams = new URLSearchParams({ id: id }).toString();\n const url = `addMenuConfiguration?${queryParams}`;\n navigate(url, { state: { mobileMenuList: filteredList[index], roleId: roleId } });\n };\n\n useEffect(() => {\n (async () => {\n await fetchMenuRelations();\n })();\n }, []);\n\n const fetchMenuRelations = async () => {\n try {\n const response = await MobileMenuService.getMobileMenuList();\n const menuData = response.data || [];\n const formattedData = menuData.map((item) => {\n const config = JSON.parse(item.configJson);\n let allFeatureNames = [];\n\n Object.values(config).forEach((tab) => {\n let topLevelItems = [];\n\n if (tab.features && Array.isArray(tab.features)) {\n topLevelItems = tab.features;\n } else if (tab.layout && Array.isArray(tab.layout)) {\n allFeatureNames.push(...collectFeatureNamesFromLayout(tab.layout));\n topLevelItems = tab.layout.flatMap((layoutItem) => {\n if (layoutItem.type === 'SECTION' && layoutItem.features && Array.isArray(layoutItem.features)) {\n return layoutItem.features;\n }\n return [];\n });\n }\n\n topLevelItems.forEach((item) => {\n if (item.menuName && !item.menus) {\n allFeatureNames.push(item.menuName);\n }\n\n if (item.menus && Array.isArray(item.menus)) {\n item.menus.forEach((menuItem) => {\n if (menuItem.menuName) {\n allFeatureNames.push(menuItem.menuName);\n }\n });\n }\n });\n });\n\n const uniqueNames = [...new Set(allFeatureNames)];\n const featureSummary = uniqueNames.join(', ');\n\n return {\n id: item.id,\n roleId: item.roleId,\n name: item.roleName,\n features: featureSummary,\n configJson: config,\n };\n });\n setMobileMenuList(formattedData);\n setFilteredList(formattedData);\n } catch (error) {\n showToast({ message: error, type: 'error' });\n }\n };\n\n const handleSearch = (e) => {\n const value = e.target.value.toLowerCase();\n setSearchText(value);\n setFilteredList(mobileMenuList.filter((item) => item.name.toLowerCase().includes(value)));\n };\n\n return (\n <Grid>\n <Box sx={{ p: 3, backgroundColor: 'background.default' }}>\n <Grid container sx={{ justifyContent: 'space-between', alignItems: 'center', mb: 2 }}>\n <Typography variant=\"h5\" sx={{ mb: 2, fontWeight: 'bold' }}>\n Mobile Menu Management\n </Typography>\n <TextField\n size=\"small\"\n placeholder=\"Search Role\"\n variant=\"outlined\"\n value={searchText}\n onChange={handleSearch}\n sx={{ mb: 2, backgroundColor: 'var(--color-background2)', borderRadius: 1 }}\n />\n </Grid>\n\n <Grid sx={{ justifyContent: 'center', alignItems: 'center', mb: 2 }}>\n <Button\n sx={{ float: 'right', mb: 2 }}\n size=\"small\"\n variant=\"contained\"\n color=\"success\"\n onClick={() => {\n navigate('addMenuConfiguration');\n }}\n >\n Add configuration\n </Button>\n </Grid>\n\n <TableContainer component={Paper} elevation={1} sx={{ borderRadius: 2, maxHeight: 700 }}>\n <Table>\n <TableHead>\n <TableRow sx={{ backgroundColor: '#f2f2f2' }}>\n <TableCell sx={{ fontWeight: 'bold' }}>Sr. No.</TableCell>\n <TableCell sx={{ fontWeight: 'bold' }}>Role Name</TableCell>\n <TableCell sx={{ fontWeight: 'bold' }}>Features</TableCell>\n <TableCell align=\"center\" sx={{ fontWeight: 'bold' }}>\n Actions\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {filteredList.map((item, index) => (\n <TableRow\n key={index}\n sx={{\n backgroundColor: index % 2 === 0 ? '#fff' : 'var(--color-gray4)',\n '&:hover': { backgroundColor: '#e9f3ff' },\n }}\n >\n <TableCell>{index + 1}</TableCell>\n <TableCell>{item.name}</TableCell>\n <TableCell>{item.features}</TableCell>\n <TableCell align=\"center\">\n <IconButton color=\"primary\" onClick={() => handleEdit(item.id, item.roleId, index)}>\n <FontAwesomeIcons iconName=\"faPen\" size=\"sm\" />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n {filteredList.length === 0 && (\n <TableRow>\n <TableCell colSpan={4} align=\"center\" sx={{ py: 4, color: 'gray' }}>\n No roles found.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Box>\n </Grid>\n );\n}\n"],"names":["basePath","MobileMenuService","api","MobileMenuManagement","mobileMenuList","setMobileMenuList","useState","searchText","setSearchText","filteredList","setFilteredList","navigate","useNavigate","handleEdit","id","roleId","index","url","useEffect","fetchMenuRelations","formattedData","item","config","allFeatureNames","tab","topLevelItems","collectFeatureNamesFromLayout","layoutItem","menuItem","featureSummary","error","showToast","jsx","Grid","jsxs","Box","Typography","TextField","e","value","Button","TableContainer","Paper","Table","TableHead","TableRow","TableCell","TableBody","IconButton","FontAwesomeIcons"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MobileTypeEventConfigModal-BxLympIO.js","sources":["../src/views/Events/MobileTypeEventConfigModal.jsx"],"sourcesContent":["import React, { useEffect, useState, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useForm, Controller } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport Grid from \"@mui/material/Grid2\";\nimport * as Yup from \"yup\";\nimport {\n Button,\n IconButton,\n Modal,\n Box,\n FormControl,\n MenuItem,\n Select,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Typography,\n Paper,\n Stack,\n} from \"@mui/material\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport { retrieveAllNotifications } from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport \"./Styles/ManageEventConfiguration.scss\";\n// import { useTracking } from \"useranalytics/dist/index.es\";\\\n\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { faTrash, faXmark } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n// Define the validation schema using Yup\n\n/**\n * Modal component for configuring mobile type event notifications.\n * @module MobileTypeEventConfigModal\n * @param {Object} props - The props for the component.\n * @param {boolean} props.open - Whether the modal is open or not.\n * @param {Function} props.handleClose - Function to close the modal.\n * @param {Function} props.handleClick - Function to handle submission of the modal form.\n * @param {Object} props.type - Configuration type object passed to the modal.\n *\n * @returns {JSX.Element} The rendered modal component.\n */\nconst MobileTypeEventConfigModal = ({\n open,\n handleClose,\n handleClick,\n type,\n}) => {\n const formRef = useRef(null);\n const submitRef = useRef(false);\n const trackEvent = useTrackEvent();\n const [notificationTypes, setNotificationTypes] = useState([]);\n const [mobileNotification, setMobileNotification] = useState(null);\n const [mobileNotificationConfigs, setMobileNotificationConfigs] = useState(\n [],\n );\n const [mobileConfigLength, setmobileConfigLength] = useState(0);\n const { translate } = useTranslateProvider();\n\n /**\n * @function handleDelete\n * Deletes a mobile notification configuration at the specified index.\n *\n * @param {number} index - The index of the configuration to delete.\n */\n const handleDeleteConfig = (index) => {\n if (mobileNotificationConfigs) {\n mobileNotificationConfigs.forEach((data, i) => {\n setValue(`notificationCode${i}`, \"\"); // or set it to a default value\n setValue(`numberOfDaysAddedForOnDate${i}`, 0);\n setValue(`numberOfDaysAddedForExpiryDate${i}`, 0);\n setValue(`numberOfDaysAddedForDueDate${i}`, 0);\n });\n }\n\n setMobileNotificationConfigs((prev) => {\n const newConfigs = prev.filter((_, i) => i !== index);\n\n // Reset form values after deleting\n newConfigs.forEach((data, i) => {\n setValue(`notificationCode${i}`, data.notificationCode); // or set it to a default value\n setValue(\n `numberOfDaysAddedForOnDate${i}`,\n data.numberOfDaysAddedForOnDate,\n );\n setValue(\n `numberOfDaysAddedForExpiryDate${i}`,\n data.numberOfDaysAddedForExpiryDate,\n );\n setValue(\n `numberOfDaysAddedForDueDate${i}`,\n data.numberOfDaysAddedForDueDate,\n );\n });\n\n return newConfigs;\n });\n };\n\n /**\n * Updates the specified field of a mobile notification configuration.\n * @function handleChange\n * @param {number} index - The index of the configuration to update.\n * @param {string} field - The field name to update.\n * @param {*} value - The new value to set for the specified field.\n */\n const handleChange = (index, field, value) => {\n const newConfigs = [...mobileNotificationConfigs];\n newConfigs[index][field] = value;\n setMobileNotificationConfigs(newConfigs);\n };\n\n const validationSchema = Yup.object().shape({\n mobileNotificationType: Yup.string().required(\"Select notification type\"),\n baseDateFieldName: Yup.string().required(\"Enter base date field\"),\n familyFieldName: Yup.string().test(\n \"is-required\",\n \"family name is required\",\n function (value) {\n if (\n mobileNotification?.notificationFor === \"FAMILY\" ||\n mobileNotification?.notificationFor === \"MEMBER\"\n ) {\n return !!value;\n }\n return true;\n },\n ),\n memberFieldName: Yup.string().test(\n \"is-required\",\n \"member name is required\",\n function (value) {\n if (mobileNotification?.notificationFor === \"MEMBER\") {\n return !!value;\n }\n return true;\n },\n ),\n userFieldName: Yup.string().test(\n \"is-required\",\n \"user name is required\",\n function (value) {\n if (mobileNotification?.notificationFor === \"USER\") {\n return !!value;\n }\n return true;\n },\n ),\n });\n\n const {\n control,\n handleSubmit,\n reset,\n setValue,\n setError,\n clearErrors,\n getValues,\n formState: { errors },\n } = useForm({\n defaultValues: {},\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n useEffect(() => {\n if (type && notificationTypes.length > 0) {\n Object.keys(type)?.forEach((key) => {\n if (key === \"index\") {\n setValue(key, type[key]);\n }\n if (key === \"mobileNotificationType\") {\n const notification = notificationTypes.filter(\n (data) => data.id === parseInt(type[key]),\n );\n setMobileNotification(...notification);\n }\n if (key === \"mobileNotificationConfigs\" && type[key]) {\n setMobileNotificationConfigs(type[key] || []);\n setmobileConfigLength(type[key]?.length);\n } else if (type[key]) {\n setValue(key, type[key]);\n }\n });\n }\n }, [type, notificationTypes]);\n\n useEffect(() => {\n loadInitialState();\n }, []);\n\n const close = () => {\n trackEvent(\"conversion_event\", {\n form: formRef.current,\n form_name: \"Add Mobile Type Configuration\",\n submit: submitRef.current,\n }); // Use the current ref value\n\n handleClose();\n };\n\n // useEffect(() => {\n // if (formRef.current) {\n // let form = formRef.current;\n\n // return () => {\n // };\n // }\n // }, [formRef.current]);\n\n /**\n * @async\n * @function loadInitialState\n * Loads the initial state by retrieving notification types.\n * If an error occurs during retrieval, a toast message is displayed.\n */\n const loadInitialState = async () => {\n try {\n const res = await retrieveAllNotifications(true);\n setNotificationTypes(res?.data);\n } catch {\n showToast({ message: \"Error in retrieving notification\", type: \"error\" });\n }\n };\n\n /**\n * @function addMobileNotification\n * Adds a new mobile notification configuration to the state.\n */\n const addMobileNotification = () => {\n let addconfig = true;\n mobileNotificationConfigs?.forEach((config, index) => {\n if (config.notificationCode === \"\") {\n addconfig = false;\n const fieldPath = `notificationCode${index}`;\n\n setError(fieldPath, {\n type: \"manual\",\n message: \"Enter # of days to add\",\n });\n }\n });\n if (addconfig) {\n setmobileConfigLength((prev) => prev + 1);\n setMobileNotificationConfigs([\n ...mobileNotificationConfigs,\n {\n notificationCode: \"\",\n numberOfDaysAddedForOnDate: 0,\n numberOfDaysAddedForDueDate: 0,\n numberOfDaysAddedForExpiryDate: 0,\n },\n ]);\n }\n };\n\n /**\n * @function onSubmit\n * Handles form submission and processes the input data.\n *\n * @param {Object} data - The form data submitted by the user.\n * @param {Array} mobileNotificationConfigs - An array of mobile notification configurations.\n * @param {Object} type - The selected type configuration.\n *\n * This function performs the following actions:\n * 1. Deletes specific properties from the submitted data object.\n * 2. Adds the mobile notification configurations to the data object.\n * 3. Sets the type property in the data object.\n * 4. Calls handleClick with the processed data.\n * 5. Closes the form and resets the form state.\n */\n\n const onSubmit = (data) => {\n data = JSON.parse(JSON.stringify(data));\n for (let i = 0; i < mobileConfigLength; i++) {\n delete data[`notificationCode${i}`];\n delete data[`numberOfDaysAddedForOnDate${i}`];\n delete data[`numberOfDaysAddedForExpiryDate${i}`];\n delete data[`numberOfDaysAddedForDueDate${i}`];\n }\n\n data.mobileNotificationConfigs = mobileNotificationConfigs;\n data.type = type?.type;\n handleClick(data);\n submitRef.current = true;\n close();\n reset();\n };\n\n return (\n <Modal\n data-testid=\"mobiletypeeventconfigmodal-modal\"\n open={open}\n className=\"flex items-center justify-center\"\n onClose={() => {\n close();\n reset();\n }}\n sx={{\n \"& .MuiBackdrop-root\": {\n backgroundColor: \"rgba(0, 0, 0, 0.1)\",\n },\n }}\n >\n <Grid\n container\n className=\"w-[90%] md:w-[80%] shadow-md flex flex-col\"\n sx={{\n // 1. Theme-aware background\n backgroundColor: (theme) => theme.palette.background.paper,\n\n // 2. Dynamic Border/Shadow for Dark Mode\n border: (theme) =>\n theme.palette.mode === \"dark\"\n ? `1px solid ${theme.palette.divider}`\n : \"none\",\n\n // 3. GitHub-style shadow (Soft in light, Deep in dark)\n boxShadow: (theme) =>\n theme.palette.mode === \"dark\"\n ? \"0 8px 24px rgba(0,0,0,0.4)\"\n : theme.shadows[2], // Standard MUI shadow for light mode\n\n borderRadius: \"12px\", // Matches your MuiCard configuration\n transition: \"all 0.3s ease-in-out\",\n // Keeps children inside the rounded corners\n }}\n >\n <Grid\n className=\"manageeventconfiguration-modal-header p-2.5 px-5 flex border-b\"\n data-testid=\"mobiletypeeventconfigmodal-header\"\n >\n <Typography variant=\"body1\" className=\"font-medium text-lg text-customBlue\">\n {translate(\"Add\")} {translate(type?.type)}{\" \"}\n {translate(\"Configuration\")}\n </Typography>\n <IconButton\n size=\"small\"\n onClick={() => {\n close();\n reset();\n }}\n data-testid=\"mobiletypeeventconfigmodal-close-button\"\n >\n <FontAwesomeIcon icon={faXmark} />\n </IconButton>\n </Grid>\n <form\n onSubmit={handleSubmit(onSubmit)}\n className=\"w-full\"\n data-testid=\"mobiletypeeventconfigmodal-form\"\n ref={formRef}\n >\n <Grid\n container\n className=\"px-[40px] max-h-[60vh] overflow-y-auto w-full\"\n >\n <Grid\n container\n spacing={2}\n className=\"w-full flex flex-col md:flex-row items-start\"\n >\n <Grid\n item\n className=\"border-b border-gray-300 p-2.5 flex flex-col items-start w-full \"\n size={{ sm: 12 }}\n data-testid=\"mobiletypeeventconfigmodal-implicit-params\"\n >\n <Box className=\"whitespace-normal w-full break-words\">\n <strong>{translate(\"Available Implicit Parameters\")}</strong>:{\" \"}\n {type?.implicitParam}\n </Box>\n </Grid>\n <Grid item className=\"w-[90%] sm:w-1/4\">\n <FormControl\n variant=\"outlined\"\n className=\"w-full\"\n data-testid=\"mobiletypeeventconfigmodal-notification-type\"\n >\n <div>\n {translate(\"Notification\")} {translate(\"Type\")}\n </div>\n <Box className=\"w-full\">\n <Controller\n name=\"mobileNotificationType\"\n control={control}\n defaultValue=\"\"\n render={({ field }) => (\n <Select\n {...field}\n size=\"small\"\n error={!!errors.mobileNotificationType}\n onChange={(e) => {\n field.onChange(e.target.value);\n const notification = notificationTypes.filter(\n (data) => data.id === e.target.value,\n );\n setMobileNotification(...notification);\n }}\n className=\"w-full\"\n data-testid=\"mobiletypeeventconfigmodal-notification-select\"\n >\n <MenuItem value=\"\">\n <Typography variant=\"body2\">\n {translate(\"None\")}\n </Typography>\n </MenuItem>\n {notificationTypes?.map((data, index) => (\n <MenuItem key={index + 1} value={data.id}>\n <Typography variant=\"body2\">\n {data.notificationName}\n </Typography>\n </MenuItem>\n ))}\n </Select>\n )}\n />\n {errors?.mobileNotificationType && (\n <p\n className=\"error-helper\"\n data-testid=\"mobiletypeeventconfigmodal-notification-error\"\n >\n {errors?.mobileNotificationType?.message}\n </p>\n )}\n </Box>\n </FormControl>\n </Grid>\n <Grid item sm={4} size={{ sm: 4 }}>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n data-testid=\"mobiletypeeventconfigmodal-base-date-field\"\n >\n <div>\n {translate(\"Base\")} {translate(\"Date\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n <span style={{ color: \"red\", marginLeft: 4 }}>*</span>\n </div>\n <Box className=\" w-full\">\n <CustomTextField\n control={control}\n id=\"baseDateFieldName\"\n name=\"baseDateFieldName\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-base-date-input\"\n />\n </Box>\n </FormControl>\n </Grid>\n <Grid item sm={4} size={{ sm: 4 }}>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n data-testid=\"mobiletypeeventconfigmodal-ref-code-field\"\n >\n <div>\n {translate(\"Ref\")} {translate(\"Code\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n </div>\n <Box className=\" w-full\">\n <CustomTextField\n control={control}\n id=\"refCode\"\n name=\"refCode\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-ref-code-input\"\n />\n </Box>\n </FormControl>\n </Grid>\n {mobileNotification?.notificationFor === \"USER\" && (\n <Grid item size={{ xs: 4 }}>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n data-testid=\"mobiletypeeventconfigmodal-user-field\"\n >\n <div>\n {translate(\"User\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n <span style={{ color: \"red\", marginLeft: 4 }}>*</span>\n </div>\n <Box className=\" w-full\">\n <CustomTextField\n control={control}\n id=\"userFieldName\"\n name=\"userFieldName\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-user-input\"\n />\n </Box>\n </FormControl>\n </Grid>\n )}\n {mobileNotification?.notificationFor === \"MEMBER\" && (\n <Grid item size={{ sm: 4 }}>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n data-testid=\"mobiletypeeventconfigmodal-member-field\"\n >\n <div>\n {translate(\"Member\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n <span style={{ color: \"red\", marginLeft: 4 }}>*</span>\n </div>\n <Box className=\" w-full\">\n <CustomTextField\n control={control}\n id=\"memberFieldName\"\n name=\"memberFieldName\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-member-input\"\n />\n </Box>\n </FormControl>\n </Grid>\n )}\n {(mobileNotification?.notificationFor === \"FAMILY\" ||\n mobileNotification?.notificationFor === \"MEMBER\") && (\n <Grid item sm={4} size={{ sm: 4 }}>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n data-testid=\"mobiletypeeventconfigmodal-family-field\"\n >\n <div>\n {translate(\"Family\")} {translate(\"Field\")}{\" \"}\n {translate(\"Name\")}\n <span style={{ color: \"red\", marginLeft: 4 }}>*</span>\n </div>\n <Box className=\" w-full\">\n <CustomTextField\n control={control}\n id=\"familyFieldName\"\n name=\"familyFieldName\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"mobiletypeeventconfigmodal-family-input\"\n />\n </Box>\n </FormControl>\n </Grid>\n )}\n </Grid>\n <Grid container className=\"mt-2.5 w-full\">\n <Grid item size={{ xs: 12 }}>\n <Button\n variant=\"contained\"\n onClick={addMobileNotification}\n data-testid=\"mobiletypeeventconfigmodal-add-configuration\"\n >\n {translate(\"Add\")} {translate(\"Configuration\")}\n </Button>\n </Grid>\n <Grid size={{ xs: 12 }}>\n <TableContainer\n component={Paper}\n className=\"m-2.5 w-full mobile-type-event-config-table-container\"\n data-testid=\"mobiletypeeventconfigmodal-table\"\n >\n <Table\n size=\"small\"\n className=\"mobile-type-event-config-table\"\n aria-label=\"mobile notification configuration table\"\n >\n <TableHead>\n <TableRow>\n <TableCell>{translate(\"Code\")}</TableCell>\n <TableCell>\n {translate(\"Added\")} {translate(\"Days\")}{\" \"}\n {translate(\"For\")} {translate(\"Schedule\")}\n </TableCell>\n <TableCell>\n {translate(\"Added\")} {translate(\"Days\")}{\" \"}\n {translate(\"For\")} {translate(\"Due\")}\n </TableCell>\n <TableCell>\n {translate(\"Added\")} {translate(\"Days\")}{\" \"}\n {translate(\"For\")} {translate(\"Expiry\")}\n </TableCell>\n <TableCell>{translate(\"Actions\")}</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {mobileNotificationConfigs.length > 0 ? (\n mobileNotificationConfigs.map((config, index) => (\n <TableRow key={index + 1}>\n <TableCell>\n <Box>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n >\n <Box className=\" w-full\">\n <Controller\n control={control}\n name={`notificationCode${index}`}\n defaultValue={config.notificationCode}\n render={({ field }) => (\n <TextField\n required\n variant=\"outlined\"\n size=\"small\"\n {...field}\n error={Boolean(\n errors[`notificationCode${index}`],\n )}\n onChange={(e) => {\n setValue(\n `notificationCode${index}`,\n e.target.value,\n );\n handleChange(\n index,\n \"notificationCode\",\n e.target.value,\n );\n const fieldPath = `notificationCode${index}`;\n if (getValues(fieldPath) === \"\") {\n setError(fieldPath, {\n type: \"manual\",\n message:\n \"Enter # of days to add\",\n });\n } else {\n clearErrors(fieldPath);\n }\n }}\n placeholder=\"Enter # of days to add\"\n onBlur={() => {\n if (field.value === \"\") {\n setError(\n `notificationCode${index}`,\n {\n type: \"manual\",\n message:\n \"Enter # of days to add\",\n },\n );\n } else {\n clearErrors(\n `notificationCode${index}`,\n );\n }\n }}\n data-testid={`mobiletypeeventconfigmodal-notification-code-input-${index}`}\n />\n )}\n />\n {errors[`notificationCode${index}`] && (\n <p\n className=\"error-helper-table\"\n data-testid={`mobiletypeeventconfigmodal-notification-code-error-${index}`}\n >\n {\n errors[`notificationCode${index}`]\n ?.message\n }\n </p>\n )}\n </Box>\n </FormControl>\n </Box>\n </TableCell>\n <TableCell>\n <Box>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n >\n <Box className=\" w-full\">\n <Controller\n control={control}\n name={`numberOfDaysAddedForOnDate${index}`}\n defaultValue={\n config.numberOfDaysAddedForOnDate\n }\n render={({ field }) => (\n <TextField\n required\n type=\"number\"\n variant=\"outlined\"\n size=\"small\"\n {...field}\n error={Boolean(\n errors[\n `numberOfDaysAddedForOnDate${index}`\n ],\n )}\n onChange={(e) => {\n setValue(\n `numberOfDaysAddedForOnDate${index}`,\n e.target.value,\n );\n handleChange(\n index,\n \"numberOfDaysAddedForOnDate\",\n Number(e.target.value),\n );\n const fieldPath = `numberOfDaysAddedForOnDate${index}`;\n if (getValues(fieldPath) === \"\") {\n setError(fieldPath, {\n type: \"manual\",\n message:\n \"Enter # of days to add\",\n });\n } else {\n clearErrors(fieldPath);\n }\n }}\n placeholder=\"Enter # of days to add\"\n onBlur={() => {\n if (field.value === \"\") {\n setError(\n `numberOfDaysAddedForOnDate${index}`,\n {\n type: \"manual\",\n message:\n \"Enter # of days to add\",\n },\n );\n } else {\n clearErrors(\n `numberOfDaysAddedForOnDate${index}`,\n );\n }\n }}\n data-testid={`mobiletypeeventconfigmodal-on-date-input-${index}`}\n />\n )}\n />\n {errors[\n `numberOfDaysAddedForOnDate${index}`\n ] && (\n <p\n className=\"error-helper-table\"\n data-testid={`mobiletypeeventconfigmodal-on-date-error-${index}`}\n >\n {\n errors[\n `numberOfDaysAddedForOnDate${index}`\n ]?.message\n }\n </p>\n )}\n </Box>\n </FormControl>\n </Box>\n </TableCell>\n <TableCell>\n <Box>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n >\n <Box className=\" w-full\">\n <Controller\n control={control}\n name={`numberOfDaysAddedForDueDate${index}`}\n defaultValue={\n config.numberOfDaysAddedForDueDate\n }\n render={({ field }) => (\n <TextField\n variant=\"outlined\"\n size=\"small\"\n type=\"number\"\n {...field}\n onChange={(e) => {\n setValue(\n `numberOfDaysAddedForDueDate${index}`,\n e.target.value,\n );\n handleChange(\n index,\n \"numberOfDaysAddedForDueDate\",\n Number(e.target.value),\n );\n }}\n data-testid={`mobiletypeeventconfigmodal-due-date-input-${index}`}\n />\n )}\n />\n </Box>\n </FormControl>\n </Box>\n </TableCell>\n <TableCell>\n <Box>\n <FormControl\n variant=\"outlined\"\n className=\" w-full\"\n >\n <Box className=\" w-full\">\n <Controller\n control={control}\n name={`numberOfDaysAddedForExpiryDate${index}`}\n defaultValue={\n config.numberOfDaysAddedForExpiryDate\n }\n render={({ field }) => (\n <TextField\n variant=\"outlined\"\n type=\"number\"\n size=\"small\"\n {...field}\n onChange={(e) => {\n setValue(\n `numberOfDaysAddedForExpiryDate${index}`,\n e.target.value,\n );\n handleChange(\n index,\n \"numberOfDaysAddedForExpiryDate\",\n Number(e.target.value),\n );\n }}\n data-testid={`mobiletypeeventconfigmodal-expiry-date-input-${index}`}\n />\n )}\n />\n </Box>\n </FormControl>\n </Box>\n </TableCell>\n <TableCell>\n <IconButton\n color=\"error\"\n onClick={() => handleDeleteConfig(index)}\n data-testid={`mobiletypeeventconfigmodal-delete-button-${index}`}\n >\n <FontAwesomeIcon icon={faTrash} />\n </IconButton>\n </TableCell>\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={5}>\n <Typography\n align=\"center\"\n data-testid=\"mobiletypeeventconfigmodal-no-config\"\n >\n No Mobile Configuration added\n </Typography>\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Grid>\n </Grid>\n </Grid>\n <Stack\n direction=\"row\"\n className=\"mr-5\"\n spacing={2}\n justifyContent=\"flex-end\"\n mt={1}\n mb={1}\n >\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => {\n close();\n reset();\n }}\n data-testid=\"mobiletypeeventconfigmodal-close-button\"\n >\n <Typography variant=\"body2\">{translate(\"Cancel\")}</Typography>\n </Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n data-testid=\"mobiletypeeventconfigmodal-submit-button\"\n >\n {translate(\"Submit\")}\n </Button>\n </Stack>\n </form>\n </Grid>\n </Modal>\n );\n};\n\nMobileTypeEventConfigModal.propTypes = {\n open: PropTypes.any,\n handleClose: PropTypes.any,\n handleClick: PropTypes.any,\n type: PropTypes.any,\n};\n\nexport default MobileTypeEventConfigModal;\n"],"names":["MobileTypeEventConfigModal","open","handleClose","handleClick","type","formRef","useRef","submitRef","trackEvent","useTrackEvent","notificationTypes","setNotificationTypes","useState","mobileNotification","setMobileNotification","mobileNotificationConfigs","setMobileNotificationConfigs","mobileConfigLength","setmobileConfigLength","translate","useTranslateProvider","handleDeleteConfig","index","data","i","setValue","prev","newConfigs","_","handleChange","field","value","validationSchema","Yup","control","handleSubmit","reset","setError","clearErrors","getValues","errors","useForm","yupResolver","useEffect","_a","key","notification","loadInitialState","close","res","retrieveAllNotifications","showToast","addMobileNotification","addconfig","config","fieldPath","onSubmit","jsx","Modal","jsxs","Grid","theme","Typography","IconButton","FontAwesomeIcon","faXmark","Box","FormControl","Controller","Select","e","MenuItem","CustomTextField","Button","TableContainer","Paper","Table","TableHead","TableRow","TableCell","TableBody","TextField","_b","faTrash","Stack","PropTypes"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NotificationList-C3Vb_jKU.js","sources":["../src/services/Notifications.js","../src/views/Notifications/Skeletons/NotificationsSkeletons.jsx","../src/views/Notifications/NotificationList.jsx"],"sourcesContent":["import { api } from \"@/common/interceptors/AxiosInterceptor\";\nimport implementationConfig from \"@/common/config/implementationConfig\";\nexport const toggleActiveState = ({ id, state }) =>\n api.put(\n implementationConfig.api.useQueryParamStyle ? `notificationtype/toggleActive?id=${id}&is_active=${state === \"INACTIVE\" ? \"true\" : \"false\"}` : `notificationtype/${id}?is_active=${state === \"INACTIVE\" ? \"true\" : \"false\"}`\n );\n\nexport const createNotification = (params) =>\n api.post(implementationConfig.api.useQueryParamStyle ? \"notificationtype/create\" : \"notificationtype\", params);\n\nexport const updateNotification = (params) =>\n api.post(implementationConfig.api.useQueryParamStyle ? \"notificationtype/update\" : \"notificationtype\", params);\n","import PropTypes from \"prop-types\";\nimport React from \"react\";\n\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nexport const NotificationListSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex space-between justify-between m-[0px]\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[130px] h-[40px]\"></div>\n <div className=\"flex\">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[150px] h-[40px] mx-[5px]\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-[100px] h-[40px]\"></div>\n </div>\n </div>\n\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-full h-100\"></div>\n </div>\n );\n};\n\nNotificationListSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n\nexport const ManageNotificationSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) {\n return children;\n }\n\n return (\n <div className=\"flex flex-col w-full md:w-[650px] bg-white \">\n <div className=\"px-2 py-2 flex items-center \">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-60 h-10\"></div>\n </div>\n <hr></hr>\n <div className=\"flex flex-col w-full space-y-2 p-2\">\n <div className=\"flex flex-col space-y-2\">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n <div className=\"flex flex-col space-y-2 \">\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-40 h-5 mr-[100px]\"></button>\n <button className=\"bg-gray-300 animate-pulse rounded-sm w-full h-10 \"></button>\n </div>\n </div>\n <hr></hr>\n <div className=\"px-2 py-2 w-full flex space-x-3 items-center justify-end \">\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-20 h-10\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-sm w-20 h-10\"></div>\n </div>\n </div>\n );\n};\n\nManageNotificationSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import {\n lazy,\n default as React,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { toggleActiveState } from \"../../services/Notifications\";\nimport { getAllRoleList, getNotifications } from \"@/common/services/GlobalApis\";\nimport SyncWithServerDialog from \"@/common/syncWithServer/SyncWithServerDialog\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport CustomConfirmationModal from \"@/views/custom-components/CustomConfirmationModal\";\nconst ManageNotification = lazy(() => import(\"./ManageNotification\"));\nconst NotificationFlywayQuery = lazy(() => import(\"./NotificationFlywayQuery\"));\nimport { Box, Button, Card, Checkbox, debounce, FormControlLabel, TextField, Typography } from \"@mui/material\";\nimport { Grid } from \"@mui/system\";\nimport { NotificationListSkeleton } from \"./Skeletons/NotificationsSkeletons\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport CustomizedTable from \"@/views/custom-components/CustomizedTable/CustomizedTableV2\";\nimport { faBars, faPen } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport { getAssignedFeatures } from \"@/utils/feature\";\n\n/**\n *\n * @module NotificationList\n * @returns {JSX.element}\n *\n */\nexport default function NotificationList() {\n const trackEvent = useTrackEvent();\n const [search, setSearch] = useState(\"\");\n const [notifications, setNotifications] = useState([]);\n const [filteredNotifications, setFilteredNotifications] = useState([]);\n const [openModal, setOpenModal] = useState(\"\");\n const [rowData, setRowData] = useState({});\n const [roleData, setRoleData] = useState([]);\n const { translate } = useTranslateProvider();\n const [featureUuid, setFeatureUuid] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [rights, setRights] = useState({});\n const defaultColumns = [\n {\n field: \"notificationName\",\n label: \"Name\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n {\n field: \"code\",\n label: \"Code\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n {\n field: \"notificationType\",\n label: \"Type\",\n align: \"left\",\n render: (row) => {\n return <Typography mt={0.5}>{row.notificationType === 'WEB' ? 'WEB' : 'MOBILE'}</Typography>;\n }\n },\n {\n field: \"state\",\n label: \"State\",\n sortable: true,\n sortOrder: \"asc\",\n align: \"left\",\n },\n { field: \"Actions\", label: \"Actions\", align: \"left\" },\n ];\n const [columns, setColumns] = useState(defaultColumns);\n const [isActive, setisActive] = useState(true);\n const [isMobile, setisMobile] = useState(true);\n\n const isActiveRef = useRef(isActive);\n const isMobileRef = useRef(isMobile);\n\n useEffect(() => {\n isActiveRef.current = isActive;\n }, [isActive]);\n\n useEffect(() => {\n isMobileRef.current = isMobile;\n }, [isMobile]);\n\n /**\n * Toggles the active/inactive status of a notification.\n * @async\n * @function toggleActiveStatus\n * @returns {Promise<void>} A promise that resolves when the active status has been toggled and notifications reloaded.\n */\n const toggleActiveStatus = async () => {\n try {\n setIsLoading((cur) => !cur);\n await toggleActiveState({ id: rowData.id, state: rowData.state });\n setOpenModal(\"\");\n const { data } = await getNotifications();\n setNotifications(data);\n setFilteredNotifications(data);\n showToast({\n type: \"success\",\n message: `State succesfully changed from ${rowData?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${rowData?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`,\n });\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Error ${error}`,\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n const actions = useMemo(() => (row) => {\n const list = [];\n\n if (GeneralUtil.hasCheckRights(rights?.['update.manage.notificationlist'])) {\n list.push({\n label: \"\",\n icon: (\n <FontAwesomeIcon\n icon={faPen}\n data-testid=\"notificationlist-button-edit\"\n />\n ),\n onClick: (e) => {\n setOpenModal(1);\n setRowData(e);\n },\n });\n }\n\n const currentMenuItems = [];\n if (GeneralUtil.hasCheckRights(rights?.['update.manage.notificationlist'])) {\n currentMenuItems.push({\n label: translate(\n row.state === \"ACTIVE\" ? \"Mark as Inactive\" : \"Mark as Active\"\n ),\n onClick: (e) => {\n setRowData(e);\n setOpenModal(2);\n },\n });\n currentMenuItems.push({\n label: translate(\"Sync With Server\"),\n onClick: (e) => {\n if (!e.uuid) {\n showToast({\n type: \"info\",\n message: `No configuration found. Please open the respective feature item and save it.`,\n });\n return;\n }\n setOpenModal(4);\n setFeatureUuid(e?.uuid);\n setRowData(e);\n },\n });\n currentMenuItems.push({\n label: translate(\"Show Flyway Query\"),\n onClick: (e) => {\n setOpenModal(3);\n setRowData(e);\n },\n });\n }\n\n if (currentMenuItems.length > 0) {\n list.push({\n label: \"\",\n icon: (\n <FontAwesomeIcon\n icon={faBars}\n data-testid=\"notificationlist-button-menu\"\n />\n ),\n menuItems: currentMenuItems,\n });\n }\n\n return list;\n }, [rights, translate]);\n\n const debouncedFilter = useCallback(\n debounce((searchValue) => {\n const filteredData = notifications.filter(d =>\n d.notificationName?.toLowerCase().includes(searchValue) &&\n d.state === (isActiveRef.current ? 'ACTIVE' : 'INACTIVE') &&\n d.notificationType === (isMobileRef.current ? 'MO' : 'WEB')\n );\n trackEvent(\"search_tracking\", {\n searchTerm: searchValue,\n results_count: filteredData.length,\n search_type: \"Page Search\",\n });\n setFilteredNotifications(filteredData);\n }, 500),\n [notifications, trackEvent]\n );\n\n /**\n * Handles the search input to filter notifications by name.\n * @function handleSearch\n * @param {Object} e - The event object from the input field.\n * @param {string} e.target.value - The current value in the search input field.\n */\n const handleSearch = (e) => {\n const searchValue = e.target.value.toLowerCase();\n setSearch(searchValue);\n debouncedFilter(searchValue);\n };\n\n /**\n * Handles sorting of the notification list based on the specified column.\n * @function handleSort\n */\n const handleSort = (column) => {\n const order = column.sortOrder === \"asc\" ? \"desc\" : \"asc\";\n setColumns((prev) =>\n prev.map((col) => {\n if (col.field === column.field) {\n return { ...col, sortOrder: order };\n }\n return col;\n })\n );\n\n const sortedData = [...filteredNotifications].sort((a, b) => {\n const valA = a[column.field]?.toString().toLowerCase();\n const valB = b[column.field]?.toString().toLowerCase();\n\n if (valA < valB) {\n return order === \"asc\" ? -1 : 1;\n }\n if (valA > valB) {\n return order === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n setFilteredNotifications(sortedData);\n };\n\n /**\n * Loads initial data for notifications and roles when the component is mounted or when `openModal` changes.\n * @function useEffect\n * @param {boolean} openModal - The state that controls whether a modal is open. Triggers the hook to reload data when it changes.\n */\n\n const loadInitialData = async () => {\n try {\n setIsLoading((cur) => !cur);\n const { data } = await getNotifications();\n setNotifications(data);\n const filteredData = data.filter(d => d.notificationType === 'MO' && d.state === 'ACTIVE');\n setFilteredNotifications(filteredData);\n if (!roleData.length) {\n const { data: roleData } = await getAllRoleList();\n setRoleData(roleData);\n }\n const { data: assignedFeatures } = await getAssignedFeatures(\"techo.manage.notification\");\n setRights(JSON.parse(assignedFeatures));\n setIsLoading((cur) => !cur);\n setSearch('');\n } catch (error) {\n console.error(\"error\", error);\n setIsLoading((cur) => !cur);\n }\n };\n\n useEffect(() => {\n loadInitialData();\n }, []);\n\n const handleFilter = (value, filterType) => {\n const nextIsActive =\n filterType === 'status' ? value : isActive;\n\n const nextIsMobile =\n filterType === 'notificationType' ? value : isMobile;\n\n setisActive(nextIsActive);\n setisMobile(nextIsMobile);\n\n if (search) {\n debouncedFilter(search);\n } else {\n setFilteredNotifications(\n notifications.filter(d =>\n d.state === (nextIsActive ? 'ACTIVE' : 'INACTIVE') &&\n d.notificationType === (nextIsMobile ? 'MO' : 'WEB')\n )\n );\n }\n };\n\n return (\n <Card\n variant=\"elevation\"\n container\n className=\"mt-6 p-3 flex flex-col space-y-3 shadow-xl\"\n >\n <Suspense>\n <ManageNotification\n open={openModal === 1 || openModal === 5}\n handleClose={() => setOpenModal(\"\")}\n data={openModal === 1 ? rowData : null}\n roleData={roleData}\n setNotifications={loadInitialData}\n data-testid=\"notification-list-managenotification-dialog\"\n />\n </Suspense>\n <Suspense>\n <NotificationFlywayQuery\n open={openModal === 3}\n handleClose={() => setOpenModal(\"\")}\n data={rowData}\n roleData={roleData}\n />\n </Suspense>\n <CustomConfirmationModal\n title={\"CONFIRM ACTION\"}\n open={openModal === 2}\n description={`Are you sure you want to change the state ${rowData?.state === \"INACTIVE\" ? \"inactive\" : \"active\"} to ${rowData?.state === \"INACTIVE\" ? \"active\" : \"inactive\"}`}\n handleClick={toggleActiveStatus}\n handleClose={() => setOpenModal(\"\")}\n dataTestId=\"notification-list-customconfirmationmodal-dialog\"\n />\n <SyncWithServerDialog\n isOpen={Boolean(featureUuid)}\n handleClose={() => setFeatureUuid(() => null)}\n featureUUID={featureUuid}\n dataTestId=\"notification-list-syncwithserverdialog-dialog\"\n />\n <NotificationListSkeleton isLoading={isLoading}>\n <Grid container className=\"flex justify-between\">\n <Grid>\n <Typography\n variant=\"body2\"\n className=\"font-bold font-sans text-lg text-customBlue uppercase\"\n data-testid=\"notification-list-typography-title\"\n >\n {translate(\"Notification Configuration\")}\n </Typography>\n </Grid>\n <Box className=\"flex flex-col sm:flex-row sm:items-center gap-3 w-full sm:w-auto\">\n <Box className=\"flex items-center gap-3\">\n <FormControlLabel\n control={\n <Checkbox\n checked={isActive}\n onChange={(e) =>\n handleFilter(e.target.checked, 'status')\n }\n data-testid=\"notifications-checkbox-include-active\"\n />\n }\n label={translate(\"Active\")}\n slotProps={{\n typography: {\n className: \"custom-label\",\n },\n }}\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={isMobile}\n onChange={(e) =>\n handleFilter(e.target.checked, 'notificationType')\n }\n data-testid=\"notifications-checkbox-include-mobile\"\n />\n }\n label={translate(\"Mobile\")}\n slotProps={{\n typography: {\n className: \"custom-label\",\n },\n }}\n />\n </Box>\n <Box className=\"flex items-center gap-3 w-full sm:w-auto\">\n <TextField\n id=\"searchQuery\"\n placeholder=\"Search Text\"\n size=\"small\"\n onChange={handleSearch}\n className=\"m-0 p-0 bg-white\"\n value={search}\n data-testid=\"notification-list-textfield-search\"\n sx={{\n \"& .MuiInputBase-root\": {\n height: \"2.4em\",\n width: { xs: \"100%\", sm: \"190px\" },\n },\n flex: { xs: 1, sm: 1 }\n }}\n />\n {GeneralUtil.hasCheckRights(rights?.['create.manage.notificationlist']) && (\n <Button\n size=\"small\"\n variant=\"contained\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"notification-list-add-button\",\n button_type: \"navigate\",\n button_id: \"notification-list-button-add\",\n });\n setOpenModal(5);\n }}\n data-testid=\"notification-list-button-add\"\n sx={{ whiteSpace: 'nowrap' }}\n >\n {translate(\"Add\")}\n </Button>\n )}\n </Box>\n </Box>\n </Grid>\n <Grid size={{ xs: 12 }}>\n <CustomizedTable\n columns={columns}\n actions={actions}\n tableData={filteredNotifications}\n paginationConfig={{\n pagination: false,\n }}\n styleConfig={{\n tableStyle: {\n maxHeight: 40,\n },\n }}\n handleSort={handleSort}\n isLoading={isLoading}\n dataTestId=\"notification-list-customizedtable\"\n />\n </Grid>\n </NotificationListSkeleton>\n </Card>\n );\n}\n"],"names":["toggleActiveState","id","state","api","implementationConfig","createNotification","params","updateNotification","NotificationListSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","PropTypes","ManageNotificationSkeleton","ManageNotification","lazy","NotificationFlywayQuery","NotificationList","trackEvent","useTrackEvent","search","setSearch","useState","notifications","setNotifications","filteredNotifications","setFilteredNotifications","openModal","setOpenModal","rowData","setRowData","roleData","setRoleData","translate","useTranslateProvider","featureUuid","setFeatureUuid","setIsLoading","rights","setRights","defaultColumns","row","Typography","columns","setColumns","isActive","setisActive","isMobile","setisMobile","isActiveRef","useRef","isMobileRef","useEffect","toggleActiveStatus","cur","data","getNotifications","showToast","error","actions","useMemo","list","GeneralUtil","FontAwesomeIcon","faPen","e","currentMenuItems","faBars","debouncedFilter","useCallback","debounce","searchValue","filteredData","_a","d","handleSearch","handleSort","column","order","prev","col","sortedData","b","valA","valB","_b","loadInitialData","getAllRoleList","assignedFeatures","getAssignedFeatures","handleFilter","value","filterType","nextIsActive","nextIsMobile","Card","Suspense","CustomConfirmationModal","SyncWithServerDialog","Grid","Box","FormControlLabel","Checkbox","TextField","Button","CustomizedTable"],"mappings":"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"}