@argusoft/medplat-core 1.0.17 → 1.0.19

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 (64) hide show
  1. package/dist/{AddMenuConfiguration-QWfpcnuP.js → AddMenuConfiguration-DsnY0Rws.js} +544 -544
  2. package/dist/AddMenuConfiguration-DsnY0Rws.js.map +1 -0
  3. package/dist/{AddRoleDrawer-SvntLdRu.js → AddRoleDrawer-Bc655LQU.js} +17 -17
  4. package/dist/{AddRoleDrawer-SvntLdRu.js.map → AddRoleDrawer-Bc655LQU.js.map} +1 -1
  5. package/dist/ChangePasswordModalCore-50EzprTk.js +5495 -0
  6. package/dist/ChangePasswordModalCore-50EzprTk.js.map +1 -0
  7. package/dist/{ConditionConfig-DB0FqwgG.js → ConditionConfig-D2hOAa4n.js} +2 -2
  8. package/dist/{ConditionConfig-DB0FqwgG.js.map → ConditionConfig-D2hOAa4n.js.map} +1 -1
  9. package/dist/{EntityManagement-DQKXnEzz.js → EntityManagement-D4nG7wUX.js} +2 -2
  10. package/dist/{EntityManagement-DQKXnEzz.js.map → EntityManagement-D4nG7wUX.js.map} +1 -1
  11. package/dist/ImmunizationConfigurationBase-C5wnjI_-.js +5706 -0
  12. package/dist/ImmunizationConfigurationBase-C5wnjI_-.js.map +1 -0
  13. package/dist/ImmunizationConfigurationBase.css +1 -1
  14. package/dist/{ManageDynamicFeature-CsIett5x.js → ManageDynamicFeature-i6ARKe36.js} +2 -2
  15. package/dist/{ManageDynamicFeature-CsIett5x.js.map → ManageDynamicFeature-i6ARKe36.js.map} +1 -1
  16. package/dist/{ManageEventConfiguration-0YBDaxOI.js → ManageEventConfiguration-CHugu2vQ.js} +92 -92
  17. package/dist/ManageEventConfiguration-CHugu2vQ.js.map +1 -0
  18. package/dist/{ManageUser-eBS0yC5k.js → ManageUser-C6dlK-Mr.js} +3 -4
  19. package/dist/{ManageUser-eBS0yC5k.js.map → ManageUser-C6dlK-Mr.js.map} +1 -1
  20. package/dist/{MobileMenuManagement-BmrO-7MN.js → MobileMenuManagement-CV6QCeos.js} +15 -15
  21. package/dist/MobileMenuManagement-CV6QCeos.js.map +1 -0
  22. package/dist/{MobileTypeEventConfigModal-Ltm529jG.js → MobileTypeEventConfigModal-2w0WQ3WY.js} +2 -2
  23. package/dist/{MobileTypeEventConfigModal-Ltm529jG.js.map → MobileTypeEventConfigModal-2w0WQ3WY.js.map} +1 -1
  24. package/dist/{NewServerManagement-5YcAtF-g.js → NewServerManagement-Cxe0dV0O.js} +5 -5
  25. package/dist/NewServerManagement-Cxe0dV0O.js.map +1 -0
  26. package/dist/{OtherTypeEventConfigModal-dXt2qDg_.js → OtherTypeEventConfigModal-D1p8M39y.js} +43 -43
  27. package/dist/{OtherTypeEventConfigModal-dXt2qDg_.js.map → OtherTypeEventConfigModal-D1p8M39y.js.map} +1 -1
  28. package/dist/{QueryManagement-DGHV_-d5.js → QueryManagement-CRykYGum.js} +3 -3
  29. package/dist/QueryManagement-CRykYGum.js.map +1 -0
  30. package/dist/SecurityAuditLogList-Dod711KT.js +874 -0
  31. package/dist/SecurityAuditLogList-Dod711KT.js.map +1 -0
  32. package/dist/{TableDetails-DztbjsIA.js → TableDetails-Cf_YfnY2.js} +235 -235
  33. package/dist/TableDetails-Cf_YfnY2.js.map +1 -0
  34. package/dist/{TableList-DYwotUDO.js → TableList-HGbEN4bv.js} +28 -28
  35. package/dist/TableList-HGbEN4bv.js.map +1 -0
  36. package/dist/{TypeConfiguration-DYbBG_hZ.js → TypeConfiguration-D-3xNcyd.js} +2 -2
  37. package/dist/{TypeConfiguration-DYbBG_hZ.js.map → TypeConfiguration-D-3xNcyd.js.map} +1 -1
  38. package/dist/{UserList-BAeAFeXZ.js → UserList-D7GL7jvO.js} +420 -421
  39. package/dist/UserList-D7GL7jvO.js.map +1 -0
  40. package/dist/{WidgetList-D-fIf3N2.js → WidgetList-B3Sm9weK.js} +2 -2
  41. package/dist/{WidgetList-D-fIf3N2.js.map → WidgetList-B3Sm9weK.js.map} +1 -1
  42. package/dist/index-D9YNFPn9.js +1439 -0
  43. package/dist/index-D9YNFPn9.js.map +1 -0
  44. package/dist/index.css +1 -1
  45. package/dist/index.js +189 -174
  46. package/dist/index.js.map +1 -1
  47. package/dist/{index-BFznsakV.js → pdfmake-Cf-381ou.js} +13951 -15385
  48. package/dist/pdfmake-Cf-381ou.js.map +1 -0
  49. package/package.json +1 -1
  50. package/dist/AddMenuConfiguration-QWfpcnuP.js.map +0 -1
  51. package/dist/ChangePasswordModalCore-ClND1mel.js +0 -181
  52. package/dist/ChangePasswordModalCore-ClND1mel.js.map +0 -1
  53. package/dist/ImmunizationConfigurationBase-VqVvVR57.js +0 -5389
  54. package/dist/ImmunizationConfigurationBase-VqVvVR57.js.map +0 -1
  55. package/dist/ManageEventConfiguration-0YBDaxOI.js.map +0 -1
  56. package/dist/MobileMenuManagement-BmrO-7MN.js.map +0 -1
  57. package/dist/NewServerManagement-5YcAtF-g.js.map +0 -1
  58. package/dist/QueryManagement-DGHV_-d5.js.map +0 -1
  59. package/dist/SecurityAuditLogList-DHTcOtbx.js +0 -748
  60. package/dist/SecurityAuditLogList-DHTcOtbx.js.map +0 -1
  61. package/dist/TableDetails-DztbjsIA.js.map +0 -1
  62. package/dist/TableList-DYwotUDO.js.map +0 -1
  63. package/dist/UserList-BAeAFeXZ.js.map +0 -1
  64. package/dist/index-BFznsakV.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ManageEventConfiguration-0YBDaxOI.js","sources":["../src/views/Events/ManageEventConfiguration.jsx"],"sourcesContent":["import {\n retrieveAllForm,\n retrieveByUUID,\n retrieveManualEvents,\n save,\n update,\n} from \"../../services/EventConfig\";\nimport {\n getReportsList,\n retrieveAllNotifications,\n} from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport CustomTextArea from \"@/views/custom-components/CustomTextArea\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport \"./Styles/ManageEventConfiguration.scss\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport {\n Box,\n Button,\n Card,\n CardActions,\n CardContent,\n CardHeader,\n Divider,\n FormControl,\n MenuItem,\n Paper,\n Select,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport React, { lazy, Suspense, useEffect, useRef, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useNavigate } from \"react-router\";\nimport { useParams } from \"react-router-dom\";\nimport * as Yup from \"yup\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nconst ConditionConfig = lazy(() => import(\"./ConditionConfig\"));\nconst MobileTypeEventConfigModal = lazy(\n () => import(\"./MobileTypeEventConfigModal\")\n);\nconst OtherTypeEventConfigModal = lazy(\n () => import(\"./OtherTypeEventConfigModal\")\n);\nimport { ManageEventConfigurationSkeleton } from \"./Skeletons/EventsSkeleton\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPen, faPlus, faTrash } from \"@fortawesome/free-solid-svg-icons\";\n\n/**\n * ManageEventConfiguration component handles the creation and editing\n * of event configurations, including various notification types and triggers.\n * @module ManageEventConfiguration\n *\n *\n *\n * @component\n */\nfunction ManageEventConfiguration() {\n const { translate } = useTranslateProvider();\n\n const formRef = useRef(null);\n const submitRef = useRef(false);\n const { id } = useParams();\n const navigate = useNavigate();\n const [forms, setForms] = useState(null);\n const [events, setEvents] = useState(null);\n const [notificationTypeMap, setNotificationTypeMap] = useState({});\n const [notificationConfigDetails, setNotificationConfigDetails] = useState(\n []\n );\n const [selectedConfigIndex, setSelectedConfigIndex] = useState(null);\n const [selectedConfig, setSelectedConfig] = useState(null);\n const [selectedCondition, setSelectedCondition] = useState(null);\n const [selectedIndex, setSelectedIndex] = useState(null);\n const [newCondition, setNewCondition] = useState(null);\n const [conditionEditMode, setConditionEditMode] = useState(null);\n const [selectedTypeConfig, setSelectedTypeConfig] = useState(null);\n const [newType, setNewType] = useState(null);\n const [overlayOpen, setOverlayOpen] = useState(false);\n const [typeEditMode, setTypeEditMode] = useState(false);\n const [toggleOtherOpen, setToggleOtherOpen] = useState(false);\n const [typeConfigurationData, setTypeConfigurationData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [reportList, setReportList] = useState([]);\n const bodyLineHeight = window.getComputedStyle(document.body).lineHeight;\n /**\n * Toggles the overlay open/closed state.\n *\n * @function handleOverlayState\n */\n const handleOverlayState = () => setOverlayOpen(!overlayOpen);\n\n const validationSchema = Yup.object().shape({\n name: Yup.string().required(\"Enter Name\"),\n eventType: Yup.string().required(\"Select Event Type\"),\n recursionInterval: Yup.number()\n .typeError(\"Recursion Interval must be a number\")\n .when([], {\n is: () => eventType === \"RECURSION\",\n then: (schema) =>\n schema\n .required(\"Recursion Interval is required\")\n .moreThan(0, \"Recursion Interval must be greater than or equal to 1\")\n .lessThan(1441, \"Recursion Interval must be less than or equal to 1440\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n trigerWhen: Yup.string().test(\n \"is-required\",\n \"trigerWhen is required\",\n function (value) {\n if (eventType === \"TIMMER_BASED\") {\n return !!value;\n }\n return true;\n }\n ),\n day: Yup.string().test(\"is-required\", \"day is required\", function (value) {\n if (\n eventType === \"TIMMER_BASED\" &&\n (trigerWhen === \"AFTER\" || trigerWhen === \"MONTHLY\")\n ) {\n return !!value;\n }\n return true;\n }),\n hour: Yup.string().test(\n \"is-required\",\n \"hour is required\",\n function (value) {\n if (\n eventType === \"TIMMER_BASED\" &&\n (trigerWhen === \"AFTER\" ||\n trigerWhen === \"MONTHLY\" ||\n trigerWhen === \"DAILY\")\n ) {\n return !!value;\n }\n return true;\n }\n ),\n minute: Yup.string().notRequired(),\n // notificationConfigDetails: Yup.array().of(\n // Yup.object().shape({\n // query: Yup.string().required('Query is required'), // Ensure query is present\n // // condition: Yup.string().required('Condition is required'), // Ensure condition is present\n // // action: Yup.string().required('Action is required'), // Ensure action is present\n // })\n // ),\n });\n const {\n control,\n handleSubmit,\n setValue,\n setError,\n clearErrors,\n getValues,\n watch,\n formState: { errors },\n } = useForm({\n defaultValues: {\n name: \"\",\n description: \"\",\n eventType: \"\",\n recursionInterval: 0,\n minute: 0\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n const eventType = watch(\"eventType\");\n let trigerWhen = watch(\"trigerWhen\");\n\n /**\n * Handles form submission.\n *\n * @async\n * @function submit\n * @param {Object} data - The form data to submit.\n */\n\n useEffect(() => {\n let form = formRef.current;\n\n return () => {\n trackEvent(\"conversion_event\", {\n form,\n form_name: \"Manage Event Configuration\",\n submit: submitRef.current,\n }); // Use the current ref value\n };\n }, []);\n const submit = async (data) => {\n try {\n if (notificationConfigDetails.length > 0) {\n data.minute = Number(data.minute || 0);\n data.notificationConfigDetails = notificationConfigDetails;\n\n const isTimerBased = eventType === \"TIMMER_BASED\";\n const isFormSubmitted = eventType === \"FORM_SUBMITTED\";\n const isManual = eventType === \"MANUAL\";\n const isRecursion = eventType === \"RECURSION\";\n if (!isTimerBased) {\n delete data.trigerWhen;\n delete data.day;\n delete data.hour;\n delete data.minute;\n }\n if (!isFormSubmitted) {\n delete data.formTypeId;\n }\n if (!isFormSubmitted && !isManual) {\n delete data.eventTypeDetailCode;\n delete data.eventTypeDetailId;\n }\n if (isRecursion) {\n delete data.formTypeId;\n data.trigerWhen = \"RECURSION\";\n } else {\n delete data.recursionInterval;\n }\n\n const needsDay = [\"AFTER\", \"MONTHLY\", \"WEEKLY\"];\n const needsHour = [\"AFTER\", \"MONTHLY\", \"DAILY\", \"WEEKLY\"];\n if (!needsDay.includes(trigerWhen)) {\n delete data.day;\n }\n if (!needsHour.includes(trigerWhen)) {\n delete data.day;\n delete data.hour;\n }\n if (trigerWhen === \"IMMEDIATELY\") {\n delete data.day;\n delete data.hour;\n delete data.minute;\n }\n const cleanedNotificationConfigDetails = notificationConfigDetails.map(config => ({\n ...config,\n conditions: config.conditions?.map(condition => ({\n ...condition,\n notificaitonConfigsType: condition.notificaitonConfigsType ? condition.notificaitonConfigsType.map(typeConfig => ({\n ...typeConfig,\n queryCode: typeConfig.queryCode === \"\" ? null : typeConfig.queryCode\n })) : condition.notificaitonConfigsType\n }))\n }));\n data.notificationConfigDetails = cleanedNotificationConfigDetails;\n if (id) {\n await update(data);\n } else {\n await save(data);\n }\n\n trackEvent(\"button_click\", {\n button_name: \"manageeventconfiguration-save-button\",\n button_type: \"submit\",\n button_id: \"manageeventconfiguration-save-button\",\n });\n\n showToast({\n message: id\n ? \"Event Configuration Updated successfully\"\n : \"submit successfully\",\n type: \"success\",\n });\n submitRef.current = true;\n navigate(\"/ui/medplat/notification/all\");\n } else {\n showToast({\n message: \"Please add atleast query / condition for the configuration\",\n type: \"warn\",\n });\n }\n } catch {\n showToast({ message: \"submit problem\", type: \"error\" });\n setIsLoading((cur) => !cur);\n }\n };\n\n useEffect(() => {\n loadInitialData();\n }, []);\n\n /**\n * Loads initial data for forms, events, and notification types when the component mounts.\n *\n * @async\n * @function loadInitialData\n */\n const loadInitialData = async () => {\n try {\n setIsLoading((cur) => !cur);\n const res = await retrieveAllForm({ is_active: true });\n setForms(res?.data);\n const manualevent = await retrieveManualEvents();\n\n setEvents(manualevent?.data);\n const notificationtype = await retrieveAllNotifications(true);\n let notificationtypeObject = {};\n notificationtype?.data?.forEach((type) => {\n notificationtypeObject[type?.id] = type?.notificationName;\n });\n setNotificationTypeMap(notificationtypeObject);\n\n const { data: reportList } = await getReportsList(); // doubt for import\n setReportList(reportList || []);\n\n if (id) {\n const responseByid = await retrieveByUUID(id);\n responseByid?.data?.notificationConfigDetails?.forEach((config) => {\n setImplicitParam(config);\n });\n let data = responseByid?.data;\n Object.keys(data)?.forEach((key) => {\n if (data[key] !== undefined && data[key] !== null) {\n setValue(key, data[key]);\n }\n });\n setNotificationConfigDetails(data?.notificationConfigDetails || []);\n }\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n message: \"Error in loading manage events\",\n type: `Error:${error?.message}`,\n });\n setIsLoading((cur) => !cur);\n }\n };\n\n /**\n * Sets implicit parameters for a given notification configuration.\n *\n * @function setImplicitParam\n * @param {Object} config - The notification configuration object.\n */\n const setImplicitParam = (config) => {\n config.implicitParam = [\"#resourceId#\"];\n\n const fromPattern = /\\bFROM\\b/gi;\n const selectPattern = /\\bSELECT\\b/gi;\n\n if (config?.query) {\n const fromCount = (config.query.match(fromPattern) || []).length;\n const selectCount = (config.query.match(selectPattern) || []).length;\n let namedParameters;\n\n if (selectCount > 0) {\n if (fromCount > 1 && fromCount === selectCount) {\n namedParameters = config.query\n .substring(6, config.query.search(/\\bfrom\\b(?!(.|\\n)*(from))/i))\n // eslint-disable-next-line no-useless-escape\n .match(/(\\w*\\(.*?\\) as \\w*|[^\\(\\),]+)(?=\\s*,|\\s*$)/g);\n } else if (fromCount !== selectCount) {\n namedParameters = config.query\n .substring(6)\n // eslint-disable-next-line no-useless-escape\n .match(/(\\w*\\(.*?\\) as \\w*|[^\\(\\),]+)(?=\\s*,|\\s*$)/gi);\n } else if (fromCount === 1 && fromCount === selectCount) {\n namedParameters = config.query\n .substring(6, config.query.toLowerCase().indexOf(\"from\"))\n // eslint-disable-next-line no-useless-escape\n .match(/(\\w*\\(.*?\\) as \\w*|[^\\(\\),]+)(?=\\s*,|\\s*$)/gi);\n } else {\n namedParameters = config.query\n .substring(6)\n // eslint-disable-next-line no-useless-escape\n .match(/(\\w*\\(.*?\\) as \\w*|[^\\(\\),]+)(?=\\s*,|\\s*$)/gi);\n }\n\n const finalParameters = namedParameters?.filter(\n (parameter) => parameter.trim().length > 0\n );\n finalParameters?.forEach((parameter) => {\n let tempParameter = parameter.trim();\n if (tempParameter.toLowerCase().indexOf(\"as\") === 0) {\n tempParameter = parameter;\n }\n if (tempParameter.endsWith(\";\")) {\n tempParameter = tempParameter.slice(0, -1);\n }\n if (tempParameter !== \"*\") {\n const aliasIndex = tempParameter.toLowerCase().lastIndexOf(\" as \");\n if (aliasIndex >= 0) {\n const parameterWithAlias = tempParameter\n .substring(aliasIndex + 4)\n .trim();\n config.implicitParam.push(\"#\" + parameterWithAlias + \"#\");\n } else {\n config.implicitParam.push(\"#\" + tempParameter + \"#\");\n }\n }\n });\n }\n }\n };\n\n /**\n * Handles the deletion of a row in the notification configurations.\n *\n * @function handleDeleteRow\n * @param {number} index - The index of the configuration to delete.\n */\n const handleDeleteRow = (index) => {\n const newRows = notificationConfigDetails?.filter(\n (_, rowIndex) => rowIndex !== index\n );\n setNotificationConfigDetails(newRows);\n };\n\n /**\n * Deletes a specific condition from a configuration.\n *\n * @function deleteCondition\n * @param {number} configIndex - The index of the configuration containing the condition.\n * @param {number} index - The index of the condition to delete.\n */\n\n const deleteCondition = (configIndex, index) => {\n const notificationConfigDetail = [...notificationConfigDetails];\n\n const filteredConditions = notificationConfigDetail[\n configIndex\n ].conditions.filter((_, idx) => idx !== index);\n notificationConfigDetail[configIndex].conditions = filteredConditions;\n setNotificationConfigDetails(notificationConfigDetail);\n };\n /**\n * Opens the condition modal for adding or editing a condition.\n *\n * @async\n * @function openConditionModal\n * @param {Object} config - The configuration object containing the conditions.\n * @param {number} configIndex - The index of the configuration.\n * @param {Object} condition - The condition to be edited (if any).\n * @param {number} index - The index of the condition to be edited.\n */\n const openConditionModal = async (config, configIndex, condition, index) => {\n setSelectedConfig(config);\n setSelectedConfigIndex(configIndex);\n if (condition) {\n setSelectedCondition(condition);\n setConditionEditMode(true);\n setNewCondition(JSON.parse(JSON.stringify(condition)));\n\n setTypeConfigurationData(condition?.notificaitonConfigsType || []);\n setSelectedIndex(index);\n } else {\n setSelectedCondition({});\n setNewCondition({});\n setTypeConfigurationData([]);\n setConditionEditMode(false);\n }\n setNewType({});\n handleOverlayState();\n };\n\n /**\n * Handles changes to the query text in the notification configuration.\n *\n * @function handleTextChange\n * @param {number} index - The index of the configuration being updated.\n * @param {string} value - The new query value.\n */\n const handleTextChange = (index, value) => {\n const newConfig = [...notificationConfigDetails];\n newConfig[index].query = value; // Update the query in the configuration\n setNotificationConfigDetails(newConfig);\n };\n\n /**\n * Adds a new notification configuration to the list.\n *\n * @async\n * @function addConfiguration\n */\n const addConfiguration = async () => {\n let configuration = [...notificationConfigDetails];\n let addconfiguration = true;\n notificationConfigDetails.forEach((notification, index) => {\n if (notification.query === \"\") {\n addconfiguration = false;\n const fieldPath = `notificationConfigDetails.${index}.query`;\n\n setError(fieldPath, { type: \"manual\", message: \"Query Required\" });\n }\n });\n if (addconfiguration) {\n configuration.push({ query: \"\", conditions: [], queryParam: null });\n setNotificationConfigDetails(configuration);\n }\n };\n\n /**\n * Adds or edits a type configuration associated with a condition.\n *\n * @async\n * @function addTypeConfig\n * @param {Object} config - The type configuration configuration.push({ query: '', conditions: [], queryParam: null });\n setNotificationConfigDetails(configuration); to add or edit.\n * @param {number} index - The index of the configuration being edited (if applicable).\n */\n const addTypeConfig = async (config, index) => {\n if (config) {\n config.index = index;\n setSelectedTypeConfig(config);\n setNewType({\n ...JSON.parse(JSON.stringify(config)),\n implicitParam: selectedConfig.implicitParam,\n });\n setTypeEditMode(true);\n } else {\n setNewType({ ...newType, implicitParam: selectedConfig.implicitParam });\n setTypeEditMode(false);\n }\n openAddConfigurationModal();\n };\n\n /**\n * Opens the modal for adding or editing a type configuration.\n *\n * @function openAddConfigurationModal\n */\n const openAddConfigurationModal = () => {\n setToggleOtherOpen((cur) => !cur);\n };\n\n /**\n * Handles the addition of a new type configuration.\n *\n * @function handleOtherTypeConfiguration\n * @param {Object} data - The type configuration data to add.\n */\n const handleOtherTypeConfiguration = (data) => {\n if (typeEditMode) {\n const updatedData = typeConfigurationData.map((item, index) => {\n if (index === data.index) {\n return { ...item, ...data };\n }\n return item;\n });\n setTypeConfigurationData(updatedData);\n } else {\n setTypeConfigurationData([...typeConfigurationData, data]);\n }\n addTypeConfiguration(data);\n };\n\n /**\n * Deletes a specific type configuration from the list.\n *\n * @function handleTypeConfigurationDelete\n * @param {number} index - The index of the type configuration to delete.\n */\n const handleTypeConfigurationDelete = (index) => {\n setTypeConfigurationData((prevData) =>\n prevData.filter((_, i) => i !== index)\n );\n };\n\n /**\n * Initiates the editing of a type configuration by setting it as the selected type configuration.\n *\n * @function handleTypeConfigurationEdit\n * @param {number} index - The index of the type configuration to edit.\n */\n const handleTypeConfigurationEdit = (index) => {\n addTypeConfig(typeConfigurationData[index], index);\n };\n\n /**\n * Adds a type configuration to the new condition being created or edited.\n *\n * @function addTypeConfiguration\n * @param {Object} data - The type configuration data to add.\n */\n const addTypeConfiguration = (data) => {\n let condition = { ...newCondition };\n if (!newCondition.notificaitonConfigsType) {\n condition.notificaitonConfigsType = [];\n }\n if (typeEditMode) {\n condition.notificaitonConfigsType[selectedTypeConfig.index] = data;\n } else {\n condition.notificaitonConfigsType.push(data);\n }\n\n setNewCondition(condition);\n setNewType({});\n };\n\n const trackEvent = useTrackEvent();\n\n /**\n * Updates the new condition data based on the provided input.\n * If in edit mode, it updates an existing condition; otherwise, it adds a new one.\n *\n * @function setNewConditionData\n * @param {Object} data - The data to set for the new condition.\n * @param {boolean} conditionEditMode - A flag indicating if the condition is being edited.\n */\n const setNewConditionData = (data) => {\n if (conditionEditMode) {\n const notificationConfigDetail = [...notificationConfigDetails];\n setNewCondition({ ...newCondition, ...data });\n let conditions = { ...newCondition, ...data };\n notificationConfigDetail[selectedConfigIndex].conditions[selectedIndex] =\n conditions;\n setNotificationConfigDetails(notificationConfigDetail);\n setTypeConfigurationData([]);\n } else {\n const notificationConfigDetail = [...notificationConfigDetails];\n setNewCondition({ ...newCondition, ...data });\n let conditions = { ...newCondition, ...data };\n notificationConfigDetail[selectedConfigIndex].conditions.push(conditions);\n setNotificationConfigDetails(notificationConfigDetail);\n setTypeConfigurationData([]);\n }\n };\n\n /**\n * Updates the new type data based on the provided input.\n *\n * @function setNewTypeData\n * @param {Object} data - The data to set for the new type.\n */\n const setNewTypeData = (data) => {\n setNewType({ ...newType, ...data });\n };\n\n return (\n <>\n <ManageEventConfigurationSkeleton isLoading={isLoading}>\n <Card\n className=\"manage-eventConfiguration-type-body\"\n component=\"form\"\n ref={formRef}\n onSubmit={handleSubmit(submit)}\n data-testid=\"manageeventconfiguration-form\"\n >\n <CardHeader\n className=\"p-2.5 px-5 flex border-b text-customBlue\"\n subheader={translate(\n `${id ? \"UPDATE\" : \"ADD\"} EVENT CONFIGURATION`,\n )}\n slotProps={{\n subheader: { className: \"font-medium text-lg text-customBlue\" },\n }}\n data-testid=\"manageeventconfiguration-cardheader-subheader\"\n />\n <CardContent data-testid=\"manageeventconfiguration-cardcontent\">\n <Grid container spacing={2}>\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-name-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Name\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <Box className=\"w-full\">\n <CustomTextField\n control={control}\n id=\"name\"\n name=\"name\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-name-textfield\"\n />\n </Box>\n </FormControl>\n </Grid>\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-description-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Description\")}\n </Typography>\n <Box className=\"w-full\">\n <CustomTextArea\n control={control}\n id=\"description\"\n name=\"description\"\n errors={errors}\n label=\"\"\n minRows={2}\n data-testid=\"manageeventconfiguration-description-textarea\"\n />\n </Box>\n </FormControl>\n </Grid>\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-eventtype-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Event Type\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <Box className=\"w-full\">\n <Controller\n name=\"eventType\"\n control={control}\n defaultValue=\"\"\n className=\"w-full\"\n render={({ field }) => (\n <Select\n className=\"w-full\"\n labelId=\"event-type-label\"\n id=\"reportgroup\"\n {...field}\n error={errors.eventType}\n size=\"small\"\n data-testid=\"manageeventconfiguration-eventtype-select\"\n >\n <MenuItem value=\"FORM_SUBMITTED\">\n <Typography variant=\"body2\">\n {translate(\"Form Submitted\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"TIMMER_BASED\">\n <Typography variant=\"body2\">\n {translate(\"Timer Based\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"MANUAL\">\n <Typography variant=\"body2\">\n {translate(\"Manual\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"RECURSION\">\n <Typography variant=\"body2\">\n {translate(\"Recursion\")}\n </Typography>\n </MenuItem>\n </Select>\n )}\n />\n {errors?.eventType && (\n <p\n className=\"error-helper-manage-event\"\n data-testid=\"custom-error-message\"\n >\n {errors?.eventType?.message}\n </p>\n )}\n </Box>\n </FormControl>\n </Grid>\n {eventType === \"FORM_SUBMITTED\" && (\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-formtype-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Form Type\")}\n </Typography>\n <Box className=\"w-full\">\n <Controller\n className=\"w-full\"\n name=\"formTypeId\"\n control={control}\n defaultValue=\"\"\n render={({ field }) => (\n <Select\n {...field}\n className=\"w-full\"\n labelId=\"event-type-label\"\n displayEmpty\n size=\"small\"\n onChange={(e) => {\n const selectedId = e.target.value;\n field.onChange(selectedId);\n const selectedData = forms.find(\n (data) => data.id === selectedId,\n );\n setValue(\n \"eventTypeDetailCode\",\n selectedData?.code,\n );\n setValue(\n \"eventTypeDetailId\",\n selectedData?.detaiId || null,\n );\n }}\n data-testid=\"manageeventconfiguration-formtype-select\"\n >\n <MenuItem value=\"\">\n <Typography variant=\"body2\">\n {translate(\"Select\")}\n </Typography>\n </MenuItem>\n {forms?.map((data) => (\n <MenuItem key={data.id} value={data.id}>\n <Typography variant=\"body2\">\n {translate(data.name)}\n </Typography>\n </MenuItem>\n ))}\n </Select>\n )}\n />\n </Box>\n </FormControl>\n </Grid>\n )}\n {eventType === \"TIMMER_BASED\" && (\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-triggerwhen-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Trigger When\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <Box className=\"w-full\">\n <Controller\n name=\"trigerWhen\"\n control={control}\n defaultValue=\"\"\n className=\"w-full\"\n render={({ field }) => (\n <Select\n className=\"w-full\"\n {...field}\n value={field.value}\n error={errors.trigerWhen}\n size=\"small\"\n data-testid=\"manageeventconfiguration-triggerwhen-select\"\n >\n <MenuItem value=\"\">\n <Typography variant=\"body2\">\n {translate(\"Select\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"IMMEDIATELY\">\n <Typography variant=\"body2\">\n {translate(\"Immediately\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"AFTER\">\n <Typography variant=\"body2\">\n {translate(\"After\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"MONTHLY\">\n <Typography variant=\"body2\">\n {translate(\"Monthly\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"WEEKLY\">\n <Typography variant=\"body2\">\n {translate(\"Weekly\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"DAILY\">\n <Typography variant=\"body2\">\n {translate(\"Daily\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"HOURLY\">\n <Typography variant=\"body2\">\n {translate(\"Hourly\")}\n </Typography>\n </MenuItem>\n <MenuItem value=\"MINUTE\">\n <Typography variant=\"body2\">\n {translate(\"Minutely\")}\n </Typography>\n </MenuItem>\n </Select>\n )}\n />\n {errors?.trigerWhen && (\n <p\n className=\"error-helper-manage-event\"\n data-testid=\"custom-error-message\"\n >\n {errors?.trigerWhen?.message}\n </p>\n )}\n </Box>\n </FormControl>\n </Grid>\n )}\n {eventType === \"TIMMER_BASED\" &&\n (trigerWhen === \"AFTER\" ||\n trigerWhen === \"MONTHLY\" ||\n trigerWhen === \"WEEKLY\") && (\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-day-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"day\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <CustomTextField\n control={control}\n id=\"day\"\n name=\"day\"\n errors={errors}\n type=\"number\"\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-day-textfield\"\n />\n </FormControl>\n </Grid>\n )}\n {eventType === \"TIMMER_BASED\" &&\n (trigerWhen === \"AFTER\" ||\n trigerWhen === \"MONTHLY\" ||\n trigerWhen === \"DAILY\" ||\n trigerWhen === \"WEEKLY\") && (\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-hour-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Hour\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <CustomTextField\n control={control}\n id=\"hour\"\n name=\"hour\"\n type=\"number\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-hour-textfield\"\n />\n </FormControl>\n </Grid>\n )}\n {eventType === \"TIMMER_BASED\" &&\n trigerWhen &&\n trigerWhen !== \"IMMEDIATELY\" && (\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-minute-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Minute\")}\n </Typography>\n <CustomTextField\n control={control}\n id=\"minute\"\n name=\"minute\"\n errors={errors}\n type=\"number\"\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-minute-textfield\"\n />\n </FormControl>\n </Grid>\n )}\n {eventType === \"RECURSION\" && (\n <Grid item size={{ xs: 12, sm: 6 }}>\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Recursion Interval (in Minutes)\")}\n <span className=\"text-red-500 ml-1\">*</span>\n </Typography>\n <Box className=\"w-full\">\n <CustomTextField\n type=\"number\"\n control={control}\n id=\"recursionInterval\"\n name=\"recursionInterval\"\n errors={errors}\n label=\"\"\n size=\"small\"\n dataTestId=\"manageeventconfiguration-recursionInterval-textfield\"\n />\n </Box>\n </FormControl>\n </Grid>\n )}\n {(eventType === \"TIMMER_BASED\" || eventType === \"RECURSION\") && (\n <Grid item size={{ xs: 12, sm: 6 }}>\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Reports\")}\n </Typography>\n <Box className=\"w-full\">\n <CustomDropdown\n id=\"reportUUID\"\n name=\"reportUUID\"\n displayName=\"name\"\n optionValue=\"uuid\"\n multiple\n control={control}\n options={reportList}\n />\n </Box>\n </FormControl>\n </Grid>\n )}\n {eventType === \"MANUAL\" && (\n <Grid\n item\n size={{ xs: 12, sm: 6 }}\n data-testid=\"manageeventconfiguration-event-field\"\n >\n <FormControl variant=\"outlined\" className=\"w-full\">\n <Typography variant=\"body2\">\n {translate(\"Event\")}\n </Typography>\n <Box className=\"w-full\">\n <Controller\n name=\"eventTypeDetailCode\"\n control={control}\n className=\"w-full\"\n render={({ field }) => (\n <Select\n className=\"w-full\"\n {...field}\n value={field.value}\n error={errors.eventTypeDetailCode}\n size=\"small\"\n data-testid=\"manageeventconfiguration-eventtype-detail-select\"\n >\n <MenuItem value=\"\">{translate(\"None\")}</MenuItem>\n {events &&\n Object.entries(events).map(([key, data]) => (\n <MenuItem key={key} value={key}>\n {data}\n </MenuItem>\n ))}\n </Select>\n )}\n />\n {errors?.eventTypeDetailCode && (\n <p\n className=\"error-helper-manage-event\"\n data-testid=\"manageeventconfiguration-eventtype-detail-error\"\n >\n {errors?.eventTypeDetailCode?.message}\n </p>\n )}\n </Box>\n </FormControl>\n </Grid>\n )}\n </Grid>\n <Divider className=\"m-[20px_3px]\" />\n <Grid\n container\n spacing={5}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n data-testid=\"manageeventconfiguration-add-configuration\"\n >\n <Grid item>\n <Typography variant=\"body2\">\n {translate(\"Add Configuration\")}\n </Typography>\n </Grid>\n <Grid item>\n <Button\n size=\"small\"\n variant=\"contained\"\n onClick={addConfiguration}\n data-testid=\"manageeventconfiguration-add-button\"\n >\n {translate(\"Add\")}\n </Button>\n </Grid>\n </Grid>\n <Grid container className=\"w-full mt-5\">\n <Grid item className=\"w-full\">\n <TableContainer\n component={Paper}\n className=\"w-full\"\n data-testid=\"manageeventconfiguration-table-container\"\n >\n <Table sx={{ minWidth: 800 }}>\n <TableHead>\n <TableRow\n sx={{\n backgroundColor: (theme) =>\n theme.palette.mode === \"dark\"\n ? theme.palette.custom.tableHeader\n : \"#f5f5f5\",\n }}\n >\n <TableCell\n className=\"border border-gray-300 align-top text-[13px]\"\n data-testid=\"manageeventconfiguration-table-header-query\"\n >\n {translate(\"Query\")}\n </TableCell>\n <TableCell\n className=\"border border-gray-300 align-top text-[13px]\"\n data-testid=\"manageeventconfiguration-table-header-condition\"\n >\n {translate(\"Condition\")}\n </TableCell>\n <TableCell\n className=\"border border-gray-300 align-top text-[13px]\"\n data-testid=\"manageeventconfiguration-table-header-action\"\n >\n {translate(\"Actions\")}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {notificationConfigDetails?.map((row, index) => (\n <TableRow\n key={index + 1}\n sx={{\n backgroundColor: (theme) => {\n const isDark = theme.palette.mode === \"dark\";\n if (index % 2 === 0) {\n // Even rows: White in light mode, deep background in dark mode\n return isDark\n ? theme.palette.background.paper\n : \"#fff\";\n } else {\n // Odd rows: Light gray in light mode, slightly lighter gray/blue in dark mode\n return isDark ? \"#1C2128\" : \"#f9f9f9\";\n }\n },\n // Adding a hover state that works in both modes\n \"&:hover\": {\n backgroundColor: (theme) =>\n theme.palette.mode === \"dark\"\n ? \"#21262D\"\n : \"#f0f0f0\",\n },\n }}\n data-testid={`manageeventconfiguration-table-row-${index}`}\n >\n <TableCell\n className=\"border border-gray-300 align-top\"\n style={{ lineHeight: bodyLineHeight }}\n data-testid={`manageeventconfiguration-table-row-${index}-query`}\n >\n <div className=\"flex flex-col items-start min-w-[300px]\">\n <FormControl\n variant=\"outlined\"\n className=\"w-full\"\n >\n <Box className=\"w-full\">\n <CustomTextArea\n required\n control={control}\n id={`notificationConfigDetails.${index}.query`}\n name={`notificationConfigDetails.${index}.query`}\n errors={errors}\n value={row.query}\n onChange={(e) => {\n setValue(\n `notificationConfigDetails.${index}.query`,\n e.target.value,\n );\n handleTextChange(index, e.target.value);\n const fieldPath = `notificationConfigDetails.${index}.query`;\n if (getValues(fieldPath) === \"\") {\n setError(fieldPath, {\n type: \"manual\",\n message: \"Query Required\",\n });\n } else {\n clearErrors(fieldPath);\n }\n }}\n onBlur={() => {\n const fieldPath = `notificationConfigDetails.${index}.query`;\n if (getValues(fieldPath) === \"\") {\n setError(fieldPath, {\n type: \"manual\",\n message: \"Query Required\",\n });\n } else {\n clearErrors(fieldPath);\n }\n setImplicitParam(row);\n }}\n label=\"\"\n minRows={5}\n maxRows={20}\n data-testid={`manageeventconfiguration-table-row-${index}-query-textarea`}\n />\n </Box>\n </FormControl>\n <td\n style={{\n whiteSpace: \"normal\",\n width: \"100%\",\n overflowWrap: \"break-word\",\n }}\n >\n <b>{row?.implicitParam}</b>\n </td>\n </div>\n </TableCell>\n <TableCell\n className=\"border border-gray-300 align-top\"\n data-testid={`manageeventconfiguration-table-row-${index}-condition`}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n width: \"100%\",\n }}\n >\n {row?.conditions?.length > 0 ? (\n row?.conditions.map(\n (condition, conditionIndex) => (\n <div\n key={conditionIndex + 1}\n style={{ width: \"100%\" }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n }}\n data-testid={\n \"manageeventconfiguration-condition-rows\"\n }\n >\n <Typography\n className=\"mr-1\"\n variant=\"body2\"\n >\n {condition?.condition ||\n \"No condition specified\"}\n </Typography>\n <FontAwesomeIcon\n className=\"bg-[#cecfd0] text-gray-600 rounded-full p-[10px] w-[14px] h-[14px] mx-1 cursor-pointer hover:bg-gray-300 hover:text-[#11B666] transition-all\"\n icon={faPen}\n onClick={() =>\n openConditionModal(\n row,\n index,\n condition,\n conditionIndex,\n )\n }\n data-testid={`manageeventconfiguration-table-row-${index}-condition-edit-${conditionIndex}`}\n />\n <FontAwesomeIcon\n icon={faTrash}\n className=\"bg-[#cecfd0] text-gray-600 rounded-full p-[10px] w-[14px] h-[14px] mx-1 cursor-pointer hover:bg-gray-300 hover:text-[var(--color-error)] transition-all\"\n onClick={() =>\n deleteCondition(\n index,\n conditionIndex,\n )\n }\n data-testid={`manageeventconfiguration-table-row-${index}-condition-delete-${conditionIndex}`}\n />\n {conditionIndex ===\n row?.conditions.length - 1 && (\n <FontAwesomeIcon\n icon={faPlus}\n onClick={() =>\n openConditionModal(row, index)\n }\n className=\"bg-[#cecfd0] text-gray-600 rounded-full p-[10px] w-[14px] h-[14px] mx-1 cursor-pointer hover:bg-gray-300 hover:text-[var(--color-primary)] transition-all\"\n data-testid={`manageeventconfiguration-table-row-${index}-condition-add`}\n />\n )}\n </div>\n {conditionIndex <\n row?.conditions.length - 1 && (\n <Divider className=\"w-full m-[10px_0px]\" />\n )}\n </div>\n ),\n )\n ) : (\n <div\n className=\"flex flex-row items-center justify-between w-full mt-2 sm:mt-0 text-[14px]\"\n >\n <span className=\"mr-3 flex-1\">{translate(\"No Condition Added\")}</span>\n <div className=\"flex items-center gap-3\">\n <FontAwesomeIcon\n icon={faPlus}\n onClick={() =>\n openConditionModal(row, index)\n }\n className=\"bg-gray-200 text-gray-600 rounded-full p-2 w-[16px] h-[16px] cursor-pointer hover:bg-gray-300 hover:text-[var(--color-primary)] transition-all\"\n data-testid={`manageeventconfiguration-table-row-${index}-condition-add-empty`}\n />\n </div>\n </div>\n )}\n </div>\n </TableCell>\n\n <TableCell\n className=\"border border-gray-300 align-top\"\n data-testid={`manageeventconfiguration-table-row-${index}-action`}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n }}\n >\n <Button\n onClick={() => {\n handleDeleteRow(index);\n const fieldPath = `notificationConfigDetails.${index}.query`;\n clearErrors(fieldPath);\n }}\n size=\"small\"\n aria-label=\"delete\"\n data-testid={`manageeventconfiguration-table-row-${index}-action-delete`}\n >\n <FontAwesomeIcon\n icon={faTrash}\n className=\"text-[19px] text-[var(--color-error)]\"\n />\n </Button>\n </div>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </Grid>\n </Grid>\n </CardContent>\n <Divider className=\"m-[8px_0px]\" />\n <CardActions\n className=\"flex flex-col sm:flex-row justify-end gap-2\"\n data-testid=\"manageeventconfiguration-cardactions\"\n >\n <Button\n variant=\"contained\"\n color=\"secondary\"\n type=\"button\"\n size=\"small\"\n className=\"w-full sm:w-auto\"\n onClick={() => {\n trackEvent(\"button_click\", {\n button_name: \"manageeventconfiguration-back-button\",\n button_type: \"cancel\",\n button_id: \"manageeventconfiguration-back-button\",\n });\n navigate(\"/ui/medplat/notification/all\");\n }}\n data-testid=\"manageeventconfiguration-back-button\"\n >\n {translate(\"Cancel\")}\n </Button>\n <Button\n size=\"small\"\n variant=\"contained\"\n type=\"submit\"\n color=\"primary\"\n className=\"w-full sm:w-auto m-0\"\n data-testid=\"manageeventconfiguration-save-button\"\n >\n {translate(`${id ? \"Update\" : \"Save\"}`)}\n </Button>\n </CardActions>\n </Card>\n </ManageEventConfigurationSkeleton>\n <Suspense>\n <ConditionConfig\n selectedConfig={selectedConfig}\n notificationtypeMap={notificationTypeMap}\n selectedCondition={selectedCondition}\n newCondition={newCondition}\n handleTypeConfigurationDelete={handleTypeConfigurationDelete}\n handleTypeConfigurationEdit={handleTypeConfigurationEdit}\n addTypeConfig={addTypeConfig}\n setNewConditionData={setNewConditionData}\n typeConfigurationData={typeConfigurationData}\n setNewTypeData={setNewTypeData}\n overlayOpen={overlayOpen}\n handleOverlayState={handleOverlayState}\n data-testid=\"manageeventconfiguration-conditionconfig\"\n />\n </Suspense>\n <Suspense>\n {newType?.type === \"MOBILE\" ? (\n <MobileTypeEventConfigModal\n type={newType}\n open={toggleOtherOpen}\n notificationtypeMap={notificationTypeMap}\n handleClick={handleOtherTypeConfiguration}\n handleClose={() => {\n setToggleOtherOpen((cur) => !cur);\n setNewType({});\n }}\n data-testid=\"manageeventconfiguration-mobiletypeeventconfigmodal\"\n />\n ) : (\n <OtherTypeEventConfigModal\n type={newType}\n open={toggleOtherOpen}\n handleClick={handleOtherTypeConfiguration}\n handleClose={() => {\n setToggleOtherOpen((cur) => !cur);\n setNewType({});\n }}\n data-testid=\"manageeventconfiguration-othertypeeventconfigmodal\"\n />\n )}\n </Suspense>\n </>\n );\n}\n\nexport default ManageEventConfiguration;\n"],"names":["ConditionConfig","lazy","MobileTypeEventConfigModal","OtherTypeEventConfigModal","ManageEventConfiguration","translate","useTranslateProvider","formRef","useRef","submitRef","id","useParams","navigate","useNavigate","forms","setForms","useState","events","setEvents","notificationTypeMap","setNotificationTypeMap","notificationConfigDetails","setNotificationConfigDetails","selectedConfigIndex","setSelectedConfigIndex","selectedConfig","setSelectedConfig","selectedCondition","setSelectedCondition","selectedIndex","setSelectedIndex","newCondition","setNewCondition","conditionEditMode","setConditionEditMode","selectedTypeConfig","setSelectedTypeConfig","newType","setNewType","overlayOpen","setOverlayOpen","typeEditMode","setTypeEditMode","toggleOtherOpen","setToggleOtherOpen","typeConfigurationData","setTypeConfigurationData","isLoading","setIsLoading","reportList","setReportList","bodyLineHeight","handleOverlayState","validationSchema","Yup","eventType","schema","value","trigerWhen","control","handleSubmit","setValue","setError","clearErrors","getValues","watch","errors","useForm","yupResolver","useEffect","form","trackEvent","submit","data","isTimerBased","isFormSubmitted","isManual","isRecursion","needsDay","needsHour","cleanedNotificationConfigDetails","config","_a","condition","typeConfig","update","save","showToast","cur","loadInitialData","res","retrieveAllForm","manualevent","retrieveManualEvents","notificationtype","retrieveAllNotifications","notificationtypeObject","type","getReportsList","responseByid","retrieveByUUID","_c","_b","setImplicitParam","_d","key","error","fromPattern","selectPattern","fromCount","selectCount","namedParameters","finalParameters","parameter","tempParameter","aliasIndex","parameterWithAlias","handleDeleteRow","index","newRows","_","rowIndex","deleteCondition","configIndex","notificationConfigDetail","filteredConditions","idx","openConditionModal","handleTextChange","newConfig","addConfiguration","configuration","addconfiguration","notification","fieldPath","addTypeConfig","openAddConfigurationModal","handleOtherTypeConfiguration","updatedData","item","addTypeConfiguration","handleTypeConfigurationDelete","prevData","i","handleTypeConfigurationEdit","useTrackEvent","setNewConditionData","conditions","setNewTypeData","jsxs","Fragment","jsx","ManageEventConfigurationSkeleton","Card","CardHeader","CardContent","Grid","FormControl","Typography","Box","CustomTextField","CustomTextArea","Controller","field","Select","MenuItem","e","selectedId","selectedData","CustomDropdown","Divider","Button","TableContainer","Paper","Table","TableHead","TableRow","theme","TableCell","TableBody","row","isDark","conditionIndex","FontAwesomeIcon","faPen","faTrash","faPlus","CardActions","Suspense"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MobileMenuManagement-BmrO-7MN.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';\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 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: '#fff', 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' : '#f9f9f9',\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","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":"NewServerManagement-5YcAtF-g.js","sources":["../src/views/Features/AddServerModal.jsx","../src/views/Features/NewServerManagement.jsx"],"sourcesContent":["/**\n * @author Sanya Srivastava <ssrivastava@argusoft.com>\n * @date 2025-04-23 (Wednesday)\n */\n\nimport {\n addServer,\n addServerMappingList,\n updateServer,\n updateServerMappingList,\n} from \"@/common/services/SyncWithServer\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useDebounceFn } from \"@/hooks/useDebounceFn\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { useTheme } from \"@mui/material/styles\";\nimport \"./Styles/ServerManagement.scss\";\nimport {\n Autocomplete,\n Box,\n Button,\n Chip,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n FormControl,\n FormControlLabel,\n FormHelperText,\n Radio,\n RadioGroup,\n TextField,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport PropTypes from \"prop-types\";\nimport React, { useEffect, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport * as Yup from \"yup\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPen, faPlus } from \"@fortawesome/free-solid-svg-icons\";\n\nexport default function AddServerModal({\n openAddServer,\n openAddServerFunc,\n allServerList,\n reloadPageFunc,\n editServer,\n editServerFunc,\n serverData = {},\n}) {\n const { translate } = useTranslateProvider();\n const [successMessage, setSuccessMessage] = useState(\"\");\n const serverTypes = [\"STAGING\", \"PRODUCTION\"];\n const theme = useTheme();\n const getClassName = (base) =>\n theme.palette.mode === \"light\" ? base : `${base}-dark`;\n\n const validationSchema = Yup.object().shape({\n name: Yup.string().required(\"Name is required\"),\n code: Yup.string().required(\"Code is required\"),\n type: Yup.string().required(\"Type is required\"),\n url: Yup.string()\n .required(\"URL is required\")\n .matches(\n /^https?:\\/\\/(localhost|\\d{1,3}(?:\\.\\d{1,3}){3}|[a-zA-Z0-9.-]+)(:\\d+)?(\\/.*)?$/,\n \"Invalid URL\",\n ),\n isActive: Yup.boolean().required(\"This field is required.\"),\n });\n\n const formCtrl = useForm({\n defaultValues: {\n name: \"\",\n code: \"\",\n type: \"\",\n url: \"\",\n isActive: null,\n canPullServer: [],\n canPushServer: [],\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n });\n\n useEffect(() => {\n if (editServer) {\n formCtrl.reset({\n name: serverData.name,\n code: serverData.code,\n type: serverData.type,\n url: serverData.url,\n isActive: serverData.isActive,\n canPullServer: serverData.canPullServers\n ? serverData.canPullServers\n : [],\n canPushServer: serverData.canPushServers\n ? serverData.canPushServers\n : [],\n });\n }\n }, []);\n\n const handleDialogClose = () => {\n openAddServerFunc(false);\n editServerFunc(false);\n };\n\n const checkAvailability = async (code) => {\n if (allServerList?.find((server) => server.code === code)) {\n formCtrl.setError(\"code\", {\n type: \"manual\",\n message: \"Code already exists\",\n });\n } else {\n setSuccessMessage(`${code} is available`);\n }\n };\n\n const debouncedCheckAvailability = useDebounceFn(checkAvailability, 500);\n\n const onSubmit = async (data) => {\n let serversToAdd = new Map();\n data.canPullServer?.forEach((server) => {\n let obj = {\n canPull: true,\n canPush: false,\n };\n serversToAdd.set(server.code, obj);\n });\n data.canPushServer?.forEach((server) => {\n if (serversToAdd.has(server.code)) {\n serversToAdd.get(server.code).canPush = true;\n } else {\n let obj = {\n canPull: false,\n canPush: true,\n };\n serversToAdd.set(server.code, obj);\n }\n });\n const serverMappingList = [];\n serversToAdd.forEach((value, key) => {\n serverMappingList.push({\n sourceServerCode: data.code,\n destinationServerCode: key,\n canPull: value.canPull,\n canPush: value.canPush,\n });\n serverMappingList.push({\n sourceServerCode: key,\n destinationServerCode: data.code,\n canPull: value.canPush,\n canPush: value.canPull,\n });\n });\n if (!editServer) {\n try {\n const addServerData = {\n name: data.name,\n code: data.code,\n type: data.type,\n url: data.url,\n isActive: data.isActive,\n };\n await addServer(addServerData);\n showToast({\n type: \"success\",\n message: \"Server added successfully\",\n });\n if (serverMappingList.length > 0) {\n try {\n await addServerMappingList(serverMappingList);\n showToast({\n type: \"success\",\n message: \"Server mapping added successfully\",\n });\n } catch (error) {\n showToast({\n type: \"error\",\n message: \"Failed to add server mapping\",\n });\n console.error(\"Error adding server mapping:\", error);\n }\n }\n reloadPageFunc((prev) => !prev);\n openAddServerFunc(false);\n } catch (error) {\n showToast({\n type: \"error\",\n message: \"Failed to add server\",\n });\n console.error(\"Error adding server:\", error);\n }\n } else {\n try {\n if (serversToAdd.size === 0) {\n serverMappingList.push({\n sourceServerCode: data.code,\n destinationServerCode: null,\n canPull: null,\n canPush: null,\n });\n }\n data.uuid = serverData.uuid;\n await updateServer(data);\n showToast({\n type: \"success\",\n message: \"Server updated successfully\",\n });\n if (serverMappingList.length > 0) {\n try {\n await updateServerMappingList(serverMappingList);\n showToast({\n type: \"success\",\n message: \"Server mapping updated successfully\",\n });\n } catch (error) {\n showToast({\n type: \"error\",\n message: \"Failed to update server mapping\",\n });\n console.error(\"Error updating server mapping:\", error);\n }\n }\n reloadPageFunc((prev) => !prev);\n handleDialogClose();\n } catch (error) {\n showToast({\n type: \"error\",\n message: \"Failed to update server\",\n });\n console.error(\"Error updating server:\", error);\n }\n }\n };\n\n // Reusable field row component for consistent layout\n const FieldRow = ({ label, required, children }) => (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 0.75 }}>\n <Typography\n variant=\"body2\"\n sx={{ fontWeight: 600, color: \"text.primary\" }}\n >\n {label}\n {required && (\n <Typography component=\"span\" sx={{ color: \"error.main\", ml: 0.5 }}>\n *\n </Typography>\n )}\n </Typography>\n {children}\n </Box>\n );\n\n FieldRow.propTypes = {\n label: PropTypes.string.isRequired,\n required: PropTypes.bool,\n children: PropTypes.node.isRequired,\n };\n\n return (\n <Dialog\n open={openAddServer}\n fullWidth={true}\n maxWidth={\"sm\"}\n onClose={handleDialogClose}\n className={getClassName(\"add-server-dialog\")}\n PaperProps={{\n sx: {\n borderRadius: 3,\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n \"&::-webkit-scrollbar\": { display: \"none\" },\n \"& .MuiDialogContent-root\": {\n scrollbarWidth: \"none\",\n msOverflowStyle: \"none\",\n \"&::-webkit-scrollbar\": { display: \"none\" },\n },\n },\n }}\n >\n {/* ── Dialog Header ── */}\n <DialogTitle\n sx={{\n px: 3,\n pt: 2.5,\n pb: 2,\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n backgroundColor: \"background.paper\",\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5 }}>\n <Box\n sx={{\n width: 36,\n height: 36,\n borderRadius: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"primary.main\",\n color: \"primary.contrastText\",\n flexShrink: 0,\n }}\n >\n <FontAwesomeIcon\n icon={editServer ? faPen : faPlus}\n style={{ fontSize: \"0.85rem\" }}\n />\n </Box>\n <Box>\n <Typography variant=\"h6\" sx={{ fontWeight: 700, lineHeight: 1.3 }}>\n {editServer\n ? translate(\"Update Server\")\n : translate(\"Add Server\")}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\">\n {editServer\n ? \"Modify server configuration and sync permissions.\"\n : \"Configure a new server connection.\"}\n </Typography>\n </Box>\n </Box>\n </DialogTitle>\n\n <form noValidate onSubmit={formCtrl.handleSubmit(onSubmit)}>\n <DialogContent\n sx={{\n px: 3,\n py: 3,\n scrollbarWidth: \"none\",\n \"&::-webkit-scrollbar\": { display: \"none\" },\n }}\n >\n <Grid container spacing={2.5}>\n {/* ── Server Details Section ── */}\n <Grid size={12}>\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontWeight: 700,\n color: \"text.primary\",\n mb: 0.5,\n textTransform: \"uppercase\",\n fontSize: \"0.7rem\",\n letterSpacing: \"0.05em\",\n }}\n >\n Server Details\n </Typography>\n <Divider />\n </Grid>\n\n {/* Name & Code in a 2-column layout */}\n <Grid size={6}>\n <FieldRow label={translate(\"Name\")} required>\n <CustomTextField\n control={formCtrl.control}\n name=\"name\"\n id=\"name\"\n errors={formCtrl.formState.errors}\n placeholder=\"Enter server name\"\n />\n </FieldRow>\n </Grid>\n\n <Grid size={6}>\n <FieldRow label={translate(\"Code\")} required>\n <CustomTextField\n control={formCtrl.control}\n name=\"code\"\n id=\"code\"\n disabled={editServer}\n errors={formCtrl.formState.errors}\n placeholder=\"Enter server code\"\n successMessage={successMessage}\n onChange={(e) => debouncedCheckAvailability(e.target.value)}\n />\n </FieldRow>\n </Grid>\n\n {/* Type & URL */}\n <Grid size={6}>\n <FieldRow label={translate(\"Type\")} required>\n <Controller\n name=\"type\"\n control={formCtrl.control}\n render={({ field: { onChange, value } }) => {\n return (\n <Autocomplete\n size=\"small\"\n options={serverTypes || []}\n getOptionLabel={(option) => option}\n defaultValue={value}\n onChange={(event, newValue) => {\n onChange(newValue);\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder=\"Select type\"\n variant=\"outlined\"\n error={!!formCtrl.formState.errors?.type}\n />\n )}\n />\n );\n }}\n />\n {formCtrl.formState.errors.type && (\n <FormHelperText error>\n {formCtrl.formState.errors.type?.message}\n </FormHelperText>\n )}\n </FieldRow>\n </Grid>\n\n <Grid size={6}>\n <FieldRow label={translate(\"URL\")} required>\n <CustomTextField\n control={formCtrl.control}\n name=\"url\"\n id=\"url\"\n errors={formCtrl.formState.errors}\n placeholder=\"https://example.com\"\n />\n </FieldRow>\n </Grid>\n\n {/* Active Status */}\n <Grid size={12}>\n <FieldRow label={translate(\"Active\")} required>\n <Controller\n name=\"isActive\"\n control={formCtrl.control}\n rules={{ required: \"This field is required.\" }}\n render={({\n field: { onChange, value },\n fieldState: { error },\n }) => (\n <FormControl component=\"fieldset\" error={!!error}>\n <RadioGroup row value={value} onChange={onChange}>\n <FormControlLabel\n value={true}\n control={<Radio size=\"small\" />}\n label={<Typography variant=\"body2\">Yes</Typography>}\n />\n <FormControlLabel\n value={false}\n control={<Radio size=\"small\" />}\n label={<Typography variant=\"body2\">No</Typography>}\n />\n </RadioGroup>\n {error && (\n <FormHelperText>\n {formCtrl.formState.errors.isActive?.message}\n </FormHelperText>\n )}\n </FormControl>\n )}\n />\n </FieldRow>\n </Grid>\n\n {/* ── Sync Permissions Section ── */}\n <Grid size={12} sx={{ mt: 0.5 }}>\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontWeight: 700,\n color: \"text.primary\",\n mb: 0.5,\n textTransform: \"uppercase\",\n fontSize: \"0.7rem\",\n letterSpacing: \"0.05em\",\n }}\n >\n Sync Permissions\n </Typography>\n <Divider />\n </Grid>\n\n {/* Can Pull From */}\n <Grid size={12}>\n <FieldRow label={translate(\"Can Pull From\")}>\n <Controller\n name=\"canPullServer\"\n control={formCtrl.control}\n render={({ field: { onChange, value } }) => {\n return (\n <Autocomplete\n size=\"small\"\n multiple\n options={allServerList || []}\n getOptionLabel={(option) => option.name || \"\"}\n getOptionKey={(option) => option.code || \"\"}\n getOptionDisabled={(option) =>\n option.code === formCtrl.getValues(\"code\") ||\n formCtrl\n .getValues(\"canPullServer\")\n .some((server) => server.code === option.code)\n }\n value={value}\n onChange={(event, newValue) => {\n onChange(newValue);\n }}\n renderTags={(tagValue, getTagProps) =>\n tagValue.map((option, index) => (\n <Chip\n {...getTagProps({ index })}\n key={option.code}\n label={option.name}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n sx={{ borderRadius: 2, fontWeight: 500 }}\n />\n ))\n }\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder={\n value?.length > 0\n ? \"\"\n : \"Select servers to pull from...\"\n }\n variant=\"outlined\"\n />\n )}\n />\n );\n }}\n />\n </FieldRow>\n </Grid>\n\n {/* Can Push To */}\n <Grid size={12}>\n <FieldRow label={translate(\"Can Push To\")}>\n <Controller\n name=\"canPushServer\"\n control={formCtrl.control}\n render={({ field: { onChange, value } }) => {\n return (\n <Autocomplete\n size=\"small\"\n multiple\n options={allServerList || []}\n getOptionLabel={(option) => option.name || \"\"}\n getOptionKey={(option) => option.code || \"\"}\n getOptionDisabled={(option) =>\n option.code === formCtrl.getValues(\"code\") ||\n formCtrl\n .getValues(\"canPushServer\")\n .some((server) => server.code === option.code)\n }\n value={value}\n onChange={(event, newValue) => {\n onChange(newValue);\n }}\n renderTags={(tagValue, getTagProps) =>\n tagValue.map((option, index) => (\n <Chip\n {...getTagProps({ index })}\n key={option.code}\n label={option.name}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n sx={{ borderRadius: 2, fontWeight: 500 }}\n />\n ))\n }\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder={\n value?.length > 0\n ? \"\"\n : \"Select servers to push to...\"\n }\n variant=\"outlined\"\n />\n )}\n />\n );\n }}\n />\n </FieldRow>\n </Grid>\n </Grid>\n </DialogContent>\n\n {/* ── Dialog Actions ── */}\n <DialogActions\n sx={{\n px: 3,\n py: 2,\n borderTop: \"1px solid\",\n borderColor: \"divider\",\n gap: 1,\n }}\n >\n <Button\n onClick={handleDialogClose}\n size=\"small\"\n variant=\"outlined\"\n sx={{\n borderRadius: 2,\n textTransform: \"none\",\n fontWeight: 600,\n px: 2.5,\n borderColor: \"divider\",\n color: \"text.secondary\",\n \"&:hover\": {\n backgroundColor: \"action.hover\",\n borderColor: \"text.disabled\",\n },\n }}\n >\n {translate(\"Cancel\")}\n </Button>\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n sx={{\n borderRadius: 2,\n textTransform: \"none\",\n fontWeight: 600,\n px: 2.5,\n boxShadow: \"none\",\n }}\n startIcon={\n <FontAwesomeIcon\n icon={editServer ? faPen : faPlus}\n style={{ fontSize: \"0.75rem\" }}\n />\n }\n >\n {editServer ? \"Update Server\" : \"Add Server\"}\n </Button>\n </DialogActions>\n </form>\n </Dialog>\n );\n}\n\nAddServerModal.propTypes = {\n openAddServer: PropTypes.bool,\n openAddServerFunc: PropTypes.func,\n allServerList: PropTypes.array,\n reloadPageFunc: PropTypes.func,\n editServer: PropTypes.bool,\n editServerFunc: PropTypes.func,\n serverData: PropTypes.object,\n};\n","/**\n * @author Sanya Srivastava <ssrivastava@argusoft.com>\n * @date 2025-04-21 (Monday)\n */\n\nimport {\n getAllServer,\n getAllServerDetails,\n} from \"@/common/services/SyncWithServer\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCircleCheck,\n faCircleXmark,\n faPen,\n faPlus,\n faServer,\n faMagnifyingGlass,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { useTheme } from \"@mui/material/styles\";\nimport \"./Styles/ServerManagement.scss\";\nimport {\n Button,\n Chip,\n Divider,\n IconButton,\n InputAdornment,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TextField,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport Grid from \"@mui/material/Grid2\";\nimport { Box } from \"@mui/system\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport AddServerModal from \"./AddServerModal\";\n\nexport default function NewServerManagement() {\n const [allServerList, setAllServerList] = useState([]);\n const [openAddServer, setOpenAddServer] = useState(false);\n const [editServer, setEditServer] = useState(false);\n const [serverData, setServerData] = useState({});\n const [allServerDetails, setAllServerDetails] = useState([]);\n const [reloadPage, setReloadPage] = useState(false);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const theme = useTheme();\n\n useEffect(() => {\n (async () => {\n await fetchServers();\n await fetchAllServerDetails();\n })();\n }, [reloadPage]);\n\n const getClassName = (className) => {\n return theme.palette.mode === \"light\" ? className : `${className}-dark`;\n };\n\n const fetchServers = async () => {\n try {\n const response = (await getAllServer()).data;\n if (response) {\n setAllServerList(\n response.map((item) => {\n let obj = { code: item.code, name: item.name };\n return obj;\n }),\n );\n }\n } catch (error) {\n console.error(\"Error fetching servers:\", error);\n }\n };\n\n const fetchAllServerDetails = async () => {\n try {\n const response = (await getAllServerDetails()).data;\n if (response) {\n response.forEach((item) => {\n let canPull = item.canPullServers\n ? JSON.parse(item.canPullServers)\n : [];\n let canPush = item.canPushServers\n ? JSON.parse(item.canPushServers)\n : [];\n item.canPullServers = JSON.parse(item.canPullServers);\n item.canPushServers = JSON.parse(item.canPushServers);\n item.pullServersName =\n canPull.length > 0 ? canPull.map((server) => server.name) : [];\n item.pushServersName =\n canPush.length > 0 ? canPush.map((server) => server.name) : [];\n });\n setAllServerDetails(response);\n }\n } catch (error) {\n console.error(\"Error fetching servers:\", error);\n }\n };\n\n const handleServerEdit = (item) => {\n setEditServer(true);\n setServerData(item);\n setOpenAddServer(true);\n };\n\n const filteredServers = useMemo(() => {\n if (!searchQuery.trim()) return allServerDetails;\n const q = searchQuery.toLowerCase();\n return allServerDetails.filter(\n (item) =>\n item.name?.toLowerCase().includes(q) ||\n item.code?.toLowerCase().includes(q) ||\n item.url?.toLowerCase().includes(q),\n );\n }, [allServerDetails, searchQuery]);\n\n const activeCount = allServerDetails.filter((s) => s.isActive).length;\n\n const formatDate = (dateString) => {\n if (!dateString) return \"-\";\n const date = new Date(dateString);\n const day = String(date.getDate()).padStart(2, \"0\");\n const monthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n const month = monthNames[date.getMonth()];\n const year = date.getFullYear();\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${day} ${month} ${year}, ${hours}:${minutes}`;\n };\n\n return (\n <Grid pt={2} sx={{ height: \"calc(100vh)\", zoom: \"0.9\" }}>\n <Box sx={{ p: 3 }} className={getClassName(\"server-management-wrapper\")}>\n {/* ── Main Paper Container (ManageAllForms style) ── */}\n <Paper\n elevation={0}\n sx={{\n p: { xs: 2.5, md: 3 },\n border: \"1px solid\",\n borderColor: \"divider\",\n borderRadius: 3,\n backgroundColor: \"background.paper\",\n }}\n >\n {/* ── Header Section ── */}\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 3 }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n flexWrap: \"wrap\",\n gap: 2,\n }}\n >\n <Box sx={{ minWidth: { xs: \"100%\", lg: \"40%\" } }}>\n <Typography\n variant=\"h5\"\n sx={{ fontWeight: 800, color: \"text.primary\", mb: 0.5 }}\n >\n Server Management\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Configure and manage server connections, sync permissions, and\n server details.\n </Typography>\n </Box>\n\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1.5,\n flexWrap: \"wrap\",\n }}\n >\n <Button\n size=\"small\"\n variant=\"contained\"\n sx={{\n borderRadius: 2,\n fontWeight: 600,\n px: 2,\n boxShadow: \"none\",\n textTransform: \"none\",\n }}\n startIcon={<FontAwesomeIcon icon={faPlus} />}\n onClick={() => {\n setOpenAddServer(true);\n }}\n >\n Add Server\n </Button>\n </Box>\n </Box>\n\n {/* ── Search & Stats Bar ── */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: 2,\n backgroundColor: \"action.hover\",\n p: 1.5,\n borderRadius: 2.5,\n border: \"1px solid\",\n borderColor: \"divider\",\n }}\n >\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5 }}>\n <Chip\n icon={\n <FontAwesomeIcon\n icon={faServer}\n style={{ fontSize: \"0.7rem\" }}\n />\n }\n label={`${allServerDetails.length} Total`}\n size=\"small\"\n variant=\"outlined\"\n sx={{\n fontWeight: 600,\n borderRadius: 2,\n px: 0.5,\n borderColor: \"divider\",\n }}\n />\n <Chip\n icon={\n <FontAwesomeIcon\n icon={faCircleCheck}\n style={{ fontSize: \"0.7rem\" }}\n />\n }\n label={`${activeCount} Active`}\n size=\"small\"\n color=\"success\"\n variant=\"filled\"\n sx={{ fontWeight: 700, borderRadius: 2, px: 0.5 }}\n />\n {allServerDetails.length - activeCount > 0 && (\n <Chip\n label={`${allServerDetails.length - activeCount} Inactive`}\n size=\"small\"\n color=\"default\"\n variant=\"outlined\"\n sx={{\n fontWeight: 600,\n borderRadius: 2,\n px: 0.5,\n borderColor: \"divider\",\n }}\n />\n )}\n </Box>\n\n <TextField\n value={searchQuery}\n size=\"small\"\n placeholder=\"Search servers...\"\n onChange={(e) => setSearchQuery(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <FontAwesomeIcon\n icon={faMagnifyingGlass}\n style={{ fontSize: \"0.85rem\", color: \"#999\" }}\n />\n </InputAdornment>\n ),\n sx: {\n backgroundColor: \"background.paper\",\n borderRadius: 2,\n minWidth: 260,\n },\n }}\n />\n </Box>\n </Box>\n\n <Divider sx={{ my: 3 }} />\n\n {/* ── Server Table ── */}\n <TableContainer\n className={getClassName(\"server-table\")}\n component={Paper}\n elevation={0}\n sx={{\n borderRadius: 2.5,\n border: \"1px solid\",\n borderColor: \"divider\",\n overflowY: \"auto\",\n maxHeight: \"calc(100vh - 340px)\",\n }}\n >\n <Table stickyHeader>\n <TableHead>\n <TableRow>\n {[\n \"Sr. No.\",\n \"Name\",\n \"Code\",\n \"Type\",\n \"URL\",\n \"Status\",\n \"Can Pull From\",\n \"Can Push To\",\n \"Modified On\",\n \"Actions\",\n ].map((header, i) => (\n <TableCell\n key={i}\n align={header === \"Actions\" ? \"center\" : \"left\"}\n sx={{\n fontWeight: 700,\n fontSize: \"0.78rem\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n color: \"text.secondary\",\n backgroundColor: \"background.default\",\n borderBottom: \"2px solid\",\n borderColor: \"divider\",\n py: 1.5,\n }}\n >\n {header}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {filteredServers.map((item, index) => (\n <TableRow\n key={index}\n sx={{\n transition: \"background-color 0.15s ease\",\n \"&:hover\": { backgroundColor: \"action.hover\" },\n \"&:last-child td\": { borderBottom: 0 },\n }}\n >\n <TableCell\n sx={{ color: \"text.secondary\", fontWeight: 500 }}\n >\n {index + 1}\n </TableCell>\n <TableCell sx={{ fontWeight: 600 }}>{item.name}</TableCell>\n <TableCell>\n <Chip\n label={item.code}\n size=\"small\"\n variant=\"outlined\"\n sx={{\n fontFamily: \"monospace\",\n fontSize: \"0.75rem\",\n borderRadius: 1.5,\n borderColor: \"divider\",\n }}\n />\n </TableCell>\n <TableCell>{item.type}</TableCell>\n <TableCell\n sx={{\n maxWidth: 200,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n <Tooltip title={item.url || \"\"} arrow placement=\"top\">\n <span>{item.url}</span>\n </Tooltip>\n </TableCell>\n <TableCell>\n {item.isActive ? (\n <Chip\n icon={\n <FontAwesomeIcon\n icon={faCircleCheck}\n style={{ fontSize: \"0.7rem\" }}\n />\n }\n label=\"Active\"\n size=\"small\"\n color=\"success\"\n variant=\"filled\"\n sx={{ fontWeight: 600, borderRadius: 2 }}\n />\n ) : (\n <Chip\n icon={\n <FontAwesomeIcon\n icon={faCircleXmark}\n style={{ fontSize: \"0.7rem\" }}\n />\n }\n label=\"Inactive\"\n size=\"small\"\n color=\"default\"\n variant=\"outlined\"\n sx={{\n fontWeight: 600,\n borderRadius: 2,\n borderColor: \"divider\",\n }}\n />\n )}\n </TableCell>\n <TableCell>\n {Array.isArray(item.pullServersName) &&\n item.pullServersName.length > 0 ? (\n item.pullServersName.map((server, i) => (\n <Chip\n key={i}\n label={server || \"-\"}\n color=\"primary\"\n size=\"small\"\n variant=\"outlined\"\n sx={{\n mr: 0.5,\n mb: 0.5,\n borderRadius: 2,\n fontWeight: 500,\n }}\n />\n ))\n ) : (\n <Typography variant=\"caption\" color=\"text.disabled\">\n —\n </Typography>\n )}\n </TableCell>\n <TableCell>\n {Array.isArray(item.pushServersName) &&\n item.pushServersName.length > 0 ? (\n item.pushServersName.map((server, i) => (\n <Chip\n key={i}\n label={server || \"-\"}\n color=\"primary\"\n size=\"small\"\n variant=\"outlined\"\n sx={{\n mr: 0.5,\n mb: 0.5,\n borderRadius: 2,\n fontWeight: 500,\n }}\n />\n ))\n ) : (\n <Typography variant=\"caption\" color=\"text.disabled\">\n —\n </Typography>\n )}\n </TableCell>\n <TableCell>\n <Typography\n variant=\"caption\"\n sx={{ color: \"text.secondary\" }}\n >\n {formatDate(item.modifiedOn)}\n </Typography>\n </TableCell>\n <TableCell align=\"center\">\n <Tooltip title=\"Edit server\" arrow placement=\"top\">\n <IconButton\n size=\"small\"\n onClick={() => {\n handleServerEdit(item);\n }}\n sx={{\n color: \"primary.main\",\n \"&:hover\": { backgroundColor: \"primary.50\" },\n }}\n >\n <FontAwesomeIcon\n icon={faPen}\n style={{ fontSize: \"0.8rem\" }}\n />\n </IconButton>\n </Tooltip>\n </TableCell>\n </TableRow>\n ))}\n {filteredServers.length === 0 && (\n <TableRow>\n <TableCell colSpan={10} align=\"center\" sx={{ py: 6 }}>\n <FontAwesomeIcon\n icon={faServer}\n style={{\n fontSize: \"2rem\",\n color: \"#ccc\",\n marginBottom: 8,\n display: \"block\",\n margin: \"0 auto 8px\",\n }}\n />\n <Typography variant=\"body2\" color=\"text.secondary\">\n {searchQuery\n ? \"No servers match your search.\"\n : 'No servers found. Click \"Add Server\" to get started.'}\n </Typography>\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </TableContainer>\n </Paper>\n </Box>\n {openAddServer && (\n <AddServerModal\n openAddServer={openAddServer}\n openAddServerFunc={setOpenAddServer}\n allServerList={allServerList}\n reloadPageFunc={setReloadPage}\n editServer={editServer}\n editServerFunc={setEditServer}\n serverData={serverData}\n />\n )}\n </Grid>\n );\n}\n"],"names":["AddServerModal","openAddServer","openAddServerFunc","allServerList","reloadPageFunc","editServer","editServerFunc","serverData","translate","useTranslateProvider","successMessage","setSuccessMessage","useState","serverTypes","theme","useTheme","getClassName","base","validationSchema","Yup","formCtrl","useForm","yupResolver","useEffect","handleDialogClose","debouncedCheckAvailability","useDebounceFn","code","server","onSubmit","data","serversToAdd","_a","obj","_b","serverMappingList","value","key","updateServer","showToast","updateServerMappingList","error","prev","addServerData","addServer","addServerMappingList","FieldRow","label","required","children","jsxs","Box","Typography","jsx","PropTypes","Dialog","DialogTitle","FontAwesomeIcon","faPen","faPlus","DialogContent","Grid","Divider","CustomTextField","e","Controller","onChange","Autocomplete","option","event","newValue","params","TextField","FormHelperText","FormControl","RadioGroup","FormControlLabel","Radio","tagValue","getTagProps","index","createElement","Chip","DialogActions","Button","NewServerManagement","setAllServerList","setOpenAddServer","setEditServer","setServerData","allServerDetails","setAllServerDetails","reloadPage","setReloadPage","searchQuery","setSearchQuery","fetchServers","fetchAllServerDetails","className","response","getAllServer","item","getAllServerDetails","canPull","canPush","handleServerEdit","filteredServers","useMemo","q","_c","activeCount","s","formatDate","dateString","date","day","month","year","hours","minutes","Paper","faServer","faCircleCheck","InputAdornment","faMagnifyingGlass","TableContainer","Table","TableHead","TableRow","header","i","TableCell","TableBody","Tooltip","faCircleXmark","IconButton"],"mappings":"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"}