@argusoft/medplat-core 1.0.19 → 1.0.20

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 (63) hide show
  1. package/dist/{AccessRights-Bvd5Bm5K.js → AccessRights-CupmTG3T.js} +2 -2
  2. package/dist/{AccessRights-Bvd5Bm5K.js.map → AccessRights-CupmTG3T.js.map} +1 -1
  3. package/dist/{AddEditQueryBuilder-Bcjl5mXE.js → AddEditQueryBuilder-C8ZSkOF0.js} +60 -60
  4. package/dist/AddEditQueryBuilder-C8ZSkOF0.js.map +1 -0
  5. package/dist/{AddFeatures-CE5rBxEG.js → AddFeatures-CiZZZ0GL.js} +2 -2
  6. package/dist/{AddFeatures-CE5rBxEG.js.map → AddFeatures-CiZZZ0GL.js.map} +1 -1
  7. package/dist/{AddRoleDrawer-Bc655LQU.js → AddRoleDrawer-CQdzQZLb.js} +36 -36
  8. package/dist/AddRoleDrawer-CQdzQZLb.js.map +1 -0
  9. package/dist/{ConditionConfig-D2hOAa4n.js → ConditionConfig-C3rF2wXU.js} +2 -2
  10. package/dist/{ConditionConfig-D2hOAa4n.js.map → ConditionConfig-C3rF2wXU.js.map} +1 -1
  11. package/dist/{EventConfigurations-D8juDb29.js → EventConfigurations-BGffjVC7.js} +3 -3
  12. package/dist/{EventConfigurations-D8juDb29.js.map → EventConfigurations-BGffjVC7.js.map} +1 -1
  13. package/dist/{EventsExceptionModal-DsvngLi8.js → EventsExceptionModal-D4Bf1ilS.js} +2 -2
  14. package/dist/{EventsExceptionModal-DsvngLi8.js.map → EventsExceptionModal-D4Bf1ilS.js.map} +1 -1
  15. package/dist/EventsSkeleton-8iiETGcf.js +76 -0
  16. package/dist/EventsSkeleton-8iiETGcf.js.map +1 -0
  17. package/dist/{FeatureMenu-CLX8VNZ-.js → FeatureMenu-DUZL32RI.js} +3 -3
  18. package/dist/{FeatureMenu-CLX8VNZ-.js.map → FeatureMenu-DUZL32RI.js.map} +1 -1
  19. package/dist/Features-CObdzJp_.js +13 -0
  20. package/dist/Features-CObdzJp_.js.map +1 -0
  21. package/dist/{ManageDynamicFeature-i6ARKe36.js → ManageDynamicFeature-BhONvfC_.js} +2 -2
  22. package/dist/{ManageDynamicFeature-i6ARKe36.js.map → ManageDynamicFeature-BhONvfC_.js.map} +1 -1
  23. package/dist/{ManageEventConfiguration-CHugu2vQ.js → ManageEventConfiguration-BntUc_YI.js} +5 -5
  24. package/dist/{ManageEventConfiguration-CHugu2vQ.js.map → ManageEventConfiguration-BntUc_YI.js.map} +1 -1
  25. package/dist/{ManageNotification-BUAvg5Ge.js → ManageNotification-CSl02Wq7.js} +2 -2
  26. package/dist/{ManageNotification-BUAvg5Ge.js.map → ManageNotification-CSl02Wq7.js.map} +1 -1
  27. package/dist/{ManageRole-Cbs9dUhc.js → ManageRole-tdzAiCOE.js} +222 -229
  28. package/dist/ManageRole-tdzAiCOE.js.map +1 -0
  29. package/dist/{MobileTypeEventConfigModal-2w0WQ3WY.js → MobileTypeEventConfigModal-BNjZ8pnq.js} +2 -2
  30. package/dist/{MobileTypeEventConfigModal-2w0WQ3WY.js.map → MobileTypeEventConfigModal-BNjZ8pnq.js.map} +1 -1
  31. package/dist/{NotificationList-CUZSWp2J.js → NotificationList-D1U1LYnz.js} +140 -139
  32. package/dist/NotificationList-D1U1LYnz.js.map +1 -0
  33. package/dist/{OtherTypeEventConfigModal-D1p8M39y.js → OtherTypeEventConfigModal-DiVhWDpG.js} +2 -2
  34. package/dist/{OtherTypeEventConfigModal-D1p8M39y.js.map → OtherTypeEventConfigModal-DiVhWDpG.js.map} +1 -1
  35. package/dist/{QueryBuilder-DXexUIe8.js → QueryBuilder-DI0wCJbz.js} +85 -84
  36. package/dist/QueryBuilder-DI0wCJbz.js.map +1 -0
  37. package/dist/{RoleManagement-BThAL5LO.js → RoleManagement-Cg8-EiVr.js} +83 -82
  38. package/dist/RoleManagement-Cg8-EiVr.js.map +1 -0
  39. package/dist/{ShowFlywayQuery-BkyA6QaA.js → ShowFlywayQuery-tj42YQAS.js} +33 -33
  40. package/dist/ShowFlywayQuery-tj42YQAS.js.map +1 -0
  41. package/dist/{SubMenu-BGznOP2a.js → SubMenu-CM_4wNCR.js} +2 -2
  42. package/dist/{SubMenu-BGznOP2a.js.map → SubMenu-CM_4wNCR.js.map} +1 -1
  43. package/dist/{TypeConfiguration-D-3xNcyd.js → TypeConfiguration-CupQxH9Y.js} +28 -28
  44. package/dist/TypeConfiguration-CupQxH9Y.js.map +1 -0
  45. package/dist/{UserList-D7GL7jvO.js → UserList-BzHsbYel.js} +186 -185
  46. package/dist/UserList-BzHsbYel.js.map +1 -0
  47. package/dist/{WidgetList-B3Sm9weK.js → WidgetList-B7X8Awkg.js} +2 -2
  48. package/dist/{WidgetList-B3Sm9weK.js.map → WidgetList-B7X8Awkg.js.map} +1 -1
  49. package/dist/index.js +9 -9
  50. package/package.json +1 -1
  51. package/dist/AddEditQueryBuilder-Bcjl5mXE.js.map +0 -1
  52. package/dist/AddRoleDrawer-Bc655LQU.js.map +0 -1
  53. package/dist/EventsSkeleton-DCXwwPbb.js +0 -76
  54. package/dist/EventsSkeleton-DCXwwPbb.js.map +0 -1
  55. package/dist/Features-Cpf1PDx0.js +0 -13
  56. package/dist/Features-Cpf1PDx0.js.map +0 -1
  57. package/dist/ManageRole-Cbs9dUhc.js.map +0 -1
  58. package/dist/NotificationList-CUZSWp2J.js.map +0 -1
  59. package/dist/QueryBuilder-DXexUIe8.js.map +0 -1
  60. package/dist/RoleManagement-BThAL5LO.js.map +0 -1
  61. package/dist/ShowFlywayQuery-BkyA6QaA.js.map +0 -1
  62. package/dist/TypeConfiguration-D-3xNcyd.js.map +0 -1
  63. package/dist/UserList-D7GL7jvO.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManageRole-tdzAiCOE.js","sources":["../src/views/Roles/Skeletons/ManageRoleSkeleton.jsx","../src/views/Roles/ManageRole.jsx"],"sourcesContent":["import PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { getUseSkeleton } from \"@/store/reducers/SkeletonReducer\";\n\nconst ManageRoleSkeleton = ({ children, isLoading }) => {\n const useSkeleton = useSelector(getUseSkeleton);\n if (!useSkeleton) {\n return children;\n }\n if (!isLoading) return children;\n\n return (\n <div className=\"pt-6 h-[88vh]\">\n {/* Header Skeleton */}\n <div className=\"px-8 pt-2 pb-4 flex items-center justify-between\">\n <div className=\"bg-gray-300 animate-pulse rounded-md w-32 h-8\"></div>\n <div className=\"bg-gray-300 animate-pulse rounded-full w-10 h-10\"></div>\n </div>\n\n {/* Form Content Skeleton */}\n <div className=\"px-8 pb-8 space-y-6 overflow-y-auto max-h-[80vh]\">\n {/* Top Grid: Role Name, Max Position, Max Health Infra */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"h-4 bg-gray-300 rounded w-1/3 mb-2 animate-pulse\"></div>\n <div className=\"h-10 bg-gray-300 rounded animate-pulse w-full\"></div>\n </div>\n ))}\n </div>\n\n {/* Location Required Toggle */}\n <div className=\"flex items-center gap-6 w-full\">\n <div className=\"w-full\">\n <div className=\"h-4 bg-gray-300 rounded w-1/4 mb-2 animate-pulse\"></div>\n <div className=\"h-8 bg-gray-300 rounded-full w-16 animate-pulse\"></div>\n </div>\n </div>\n\n {/* Location Select (Conditional placeholder) & Manage Role */}\n <div className=\"space-y-4\">\n {[1, 2].map((i) => (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"h-4 bg-gray-300 rounded w-1/4 mb-2 animate-pulse\"></div>\n <div className=\"h-10 bg-gray-300 rounded animate-pulse w-full\"></div>\n </div>\n ))}\n\n {/* Middle Grid: Role Type & Manage Team */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {[1, 2].map((i) => (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"h-4 bg-gray-300 rounded w-1/3 mb-2 animate-pulse\"></div>\n <div className=\"h-10 bg-gray-300 rounded animate-pulse w-full\"></div>\n </div>\n ))}\n </div>\n\n {/* Health Infra & Category */}\n {[1, 2].map((i) => (\n <div key={i} className=\"space-y-1.5\">\n <div className=\"h-4 bg-gray-300 rounded w-1/3 mb-2 animate-pulse\"></div>\n <div className=\"h-10 bg-gray-300 rounded animate-pulse w-full\"></div>\n </div>\n ))}\n </div>\n\n {/* Bottom Section: Bank Details & Self Manage */}\n <div className=\"flex items-center gap-6\">\n {/* Bank Details (Toggle style) */}\n <div className=\"w-[60%]\">\n <div className=\"h-4 bg-gray-300 rounded w-1/3 mb-2 animate-pulse\"></div>\n <div className=\"h-8 bg-gray-300 rounded-full w-16 animate-pulse\"></div>\n </div>\n {/* Self Manage (Checkbox style) */}\n <div className=\"w-[40%] flex items-center gap-2\">\n <div className=\"h-5 w-5 bg-gray-300 rounded animate-pulse\"></div>\n <div className=\"h-4 bg-gray-300 rounded w-1/3 animate-pulse\"></div>\n </div>\n </div>\n\n {/* Mandatory Fields Checkboxes */}\n <div className=\"space-y-2\">\n <div className=\"h-4 bg-gray-300 rounded w-1/4 mb-2 animate-pulse\"></div>\n <div className=\"flex flex-wrap gap-4\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"flex items-center gap-2\">\n <div className=\"h-5 w-5 bg-gray-300 rounded animate-pulse\"></div>\n <div className=\"h-4 w-16 bg-gray-300 rounded animate-pulse\"></div>\n </div>\n ))}\n </div>\n </div>\n </div>\n\n {/* Footer Buttons */}\n <div className=\"flex items-center justify-end gap-3 pt-6 px-8 pb-4 border-t border-slate-100\">\n <div className=\"h-9 w-20 bg-gray-300 rounded animate-pulse\"></div>\n <div className=\"h-9 w-24 bg-gray-300 rounded animate-pulse\"></div>\n </div>\n </div>\n );\n};\n\nexport default ManageRoleSkeleton;\n\nManageRoleSkeleton.propTypes = {\n children: PropTypes.any,\n isLoading: PropTypes.any,\n};\n","import { useState, useEffect, useRef } from \"react\";\nimport {\n Box,\n Modal,\n Button,\n FormControl,\n FormGroup,\n IconButton,\n // Tooltip,\n // Typography,\n} from \"@mui/material\";\nimport useTrackEvent from \"@/hooks/useTrackEvent\";\nimport { postRole, putRole, getRoleById } from \"../../services/Roles\";\nimport {\n getLocationTypes,\n execute,\n getRoleList,\n} from \"@/common/services/GlobalApis\";\nimport { showToast } from \"@/common/toaster/toaster\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport \"@/assets/scss/scrollBar.scss\";\n\nimport { FormItem } from \"@/views/custom-components/FormItem.jsx\";\nimport * as Yup from \"yup\";\nimport CustomTextField from \"@/views/custom-components/CustomTextField\";\nimport CustomDropdown from \"@/views/custom-components/CustomDropdown\";\nimport CustomCheckBox from \"@/views/custom-components/CustomCheckBox\";\n// import CustomRadioGroup from \"@/views/custom-components/CustomRadioComponent\";\nimport CustomAutocomplete from \"@/views/custom-components/CustomAutoComplete\";\nimport { useTranslateProvider } from \"@/common/languageTranslator/TranslationContext\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faXmark } from \"@fortawesome/free-solid-svg-icons\";\nimport GeneralUtil from \"@/common/services/util/GeneralUtil\";\nimport implementationConfig from \"@/common/config/implementationConfig\";\nimport PropTypes from \"prop-types\";\nimport CustomToggleSwitch from \"@/views/custom-components/CustomToggleSwitch\";\nimport ManageRoleSkeleton from \"./Skeletons/ManageRoleSkeleton.jsx\";\n\nconst roleTypes = [{ name: \"WEB\" }, { name: \"MOBILE\" }, { name: \"BOTH\" }];\n\n// Two-factor authentication method. Any TOTP authenticator app works (Google, Microsoft, Authy, ...).\nconst twoFactorTypes = [\n { label: \"Authenticator App\", value: \"AUTHENTICATOR_APP\" },\n];\n\n/**\n * ManageRole Component\n * @module ManageRole\n * @param {Object} props - The component props.\n * @param {function} props.setData - A function to update the role data in the parent component.\n * @param {string} props.selectedId - The ID of the currently selected role, used for updates.\n * @param {boolean} props.isUpdate - A flag indicating whether the component is in update mode (true) or create mode (false).\n * @returns {JSX.Element} - The rendered component for managing roles.\n */\n\nconst ManageRole = ({\n selectedId,\n isUpdate,\n open,\n setOpen,\n isRoleListModified,\n}) => {\n const formRef = useRef(null);\n const submitRef = useRef(false);\n const trackEvent = useTrackEvent();\n const [formData, setFormData] = useState({});\n const [isLoading, setIsLoading] = useState(false);\n const validationSchema = Yup.object().shape({\n name: Yup.string().required(\"Enter Role Name\"),\n locationTypes: Yup.array().when(\"isLocationRequired\", {\n is: true,\n then: (schema) =>\n schema.min(1, \"Select Location Type\").required(\"Select Location Type\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n roleType: implementationConfig.role.showRoleType\n ? Yup.string().required(\"Select Role Type\")\n : Yup.string().notRequired(),\n isBankDetailsRequired:\n implementationConfig.role.showBankDetailsRequired\n ? Yup.boolean().nullable().defined(\"Please Select a Value\")\n : Yup.boolean().notRequired(),\n healthInfrastructureIds: Yup.array().when(\"isHealthInfraMandatory\", {\n is: true,\n then: (schema) =>\n schema\n .min(1, \"Select Health Infrastructure Type\")\n .required(\"Select Health Infrastructure Type\"),\n otherwise: (schema) => schema.notRequired(),\n }),\n });\n\n const {\n control,\n handleSubmit,\n formState: { errors, isSubmitting },\n setValue,\n // getValues,\n watch,\n reset,\n } = useForm({\n defaultValues: {\n name: \"\",\n locationTypes: [],\n maxPosition: \"\",\n maxHealthInfra: \"\",\n roleType: \"\",\n isLastNameMandatory: false,\n isAadharNumMandatory: false,\n isEmailMandatory: false,\n isContactNumMandatory: false,\n isConvoxIdMandatory: false,\n isHealthInfraMandatory: false,\n isGeolocationMandatory: false,\n roleIds: [],\n canManageRoleIds: [],\n manageByTeamTypeIds: [],\n canSelfManage: false,\n healthInfrastructureIds: [],\n categoryIds: [],\n isBankDetailsRequired: false,\n isBankDetailsMandatory: false,\n isTwoFactorEnabled: false,\n twoFactorType: \"\",\n id: \"\",\n code: \"\",\n description: \"\",\n createdBy: \"\",\n state: \"\",\n createdOn: \"\",\n assignedFeatureList: \"\",\n assignedFeatures: \"\",\n isSmagTrainedMandatory: \"\",\n isLocationRequired: true,\n isNodalMandatory: false,\n },\n resolver: yupResolver(validationSchema),\n mode: \"onChange\",\n shouldUnregister: false,\n });\n\n const bankDetails = watch(\"isBankDetailsRequired\");\n const isTwoFactorEnabled = watch(\"isTwoFactorEnabled\");\n const roleType = watch(\"roleType\");\n // 2FA (Google Authenticator) only applies to web logins, so it is offered for WEB and BOTH role types.\n const showTwoFactorSetting = roleType === \"WEB\" || roleType === \"BOTH\";\n const locTypes = watch(\"locationTypes\");\n const { translate } = useTranslateProvider();\n const locationDetailsWatcher = watch(\"isLocationRequired\");\n const isHealthInfraMandatory = watch(\"isHealthInfraMandatory\");\n\n const mandatoryFields = [\n { label: \"Email\", value: \"isEmailMandatory\" },\n { label: \"Aadhar Number\", value: \"isAadharNumMandatory\" },\n { label: \"Contact Number\", value: \"isContactNumMandatory\" },\n { label: \"Convox Id\", value: \"isConvoxIdMandatory\" },\n { label: \"Last Name\", value: \"isLastNameMandatory\" },\n { label: \"Health Infrastructure\", value: \"isHealthInfraMandatory\" },\n { label: \"GeoLocation\", value: \"isGeolocationMandatory\" },\n { label: \"Smag Trained\", value: \"isSmagTrainedMandatory\" },\n { label: \"Nodal\", value: \"isNodalMandatory\" },\n ].filter((field) => {\n if (implementationConfig.role.mandatoryFieldsToExclude?.length > 0) {\n return !implementationConfig.role.mandatoryFieldsToExclude.includes(field.value);\n }\n return true;\n });\n /**\n * Closes the form modal and optionally resets the form.\n * @method handleClose\n * @returns {void}\n */\n\n const handleClose = () => {\n setOpen(0);\n reset();\n trackEvent(\"conversion_event\", {\n form: formRef.current,\n form_name: \"Manage Role\",\n submit: submitRef.current,\n });\n trackEvent(\"button_click\", {\n button_name: \"add role close button\",\n button_type: \"cancel\",\n button_id: \"managerole-close-button\",\n });\n };\n\n /**\n * Adds a new field value to the current list of values for a given field.\n * @method handleAddFields\n * @param {Object} value - The new value to be added to the field.\n * @param {string} name - The name of the field to which the new value should be added.\n * @returns {void}\n */\n\n const handleAddFields = (e, value, name) => {\n setValue(name, value);\n };\n\n /**\n * Handles the submission of role data by sending a POST request to create or update a role.\n *\n * @async\n * @function onSubmit\n * @param {Object} params - The role data to be submitted.\n * @param {string} [params.id] - The unique identifier of the role (to be deleted if not an update).\n * @param {string} [params.state] - The state of the role (to be deleted if not an update).\n * @param {string} [params.createdOn] - The creation timestamp of the role (to be deleted if not an update).\n * @param {string} [params.createdBy] - The creator of the role (to be deleted if not an update).\n * @param {string} [params.code] - The code associated with the role (to be deleted if not an update).\n * @param {string} [params.description] - The description of the role (to be deleted if not an update).\n * @param {boolean} [params.assignedFeatures] - Whether features are assigned (to be deleted if not an update).\n * @param {boolean} [params.isSmagTrainedMandatory] - Whether SMAG training is mandatory (to be deleted if not an update).\n * @param {boolean} [params.isBankDetailsRequired] - Whether bank details are required (to be deleted if not an update).\n * @param {boolean} [params.isBankDetailsMandatory] - Whether bank details are mandatory (to be deleted if not an update).\n * @param {Array<Object>} params.roleIds - List of role IDs.\n * @param {Array<Object>} params.manageByTeamTypeIds - List of team type IDs for management.\n * @param {Array<Object>} params.healthInfrastructureIds - List of health infrastructure IDs.\n * @param {Array<Object>} params.categoryIds - List of category IDs.\n *\n * @throws {Error} Throws an error if the role cannot be added.\n *\n * @returns {Promise<void>} - A Promise that resolves when the role has been successfully submitted.\n */\n\n const onSubmit = async (params) => {\n try {\n trackEvent(\"button_click\", {\n button_name: isUpdate ? \"update role button\" : \"add role button\",\n button_type: \"submit\",\n button_id: \"managerole-add-button\",\n });\n\n delete params.bankDetailsRequired;\n delete params.bankDetailsMandatory;\n\n // 2FA only applies to web (WEB/BOTH); a MOBILE-only role must never carry 2FA settings.\n if (params.roleType !== \"WEB\" && params.roleType !== \"BOTH\") {\n params.isTwoFactorEnabled = false;\n }\n // When 2FA is turned off, don't send a stale type selection.\n if (!params.isTwoFactorEnabled) {\n params.twoFactorType = null;\n } else if (!params.twoFactorType) {\n // Only one 2FA method exists (authenticator app); default it when 2FA is enabled.\n params.twoFactorType = \"AUTHENTICATOR_APP\";\n }\n\n if (!isUpdate) {\n delete params.id;\n delete params.state;\n delete params.createdOn;\n delete params.createdBy;\n delete params.code;\n delete params.description;\n delete params.assignedFeatures;\n\n // delete params.isSmagTrainedMandatory;\n delete params.assignedFeatureList;\n }\n params.roleIds = params.roleIds.map((item) => item?.id);\n params.canManageRoleIds = params.canManageRoleIds.map((item) => item?.id);\n params.manageByTeamTypeIds = params.manageByTeamTypeIds.map(\n (item) => item?.id,\n );\n params.healthInfrastructureIds = params.healthInfrastructureIds.map(\n (item) => item?.id,\n );\n // params.maxHealthInfra = parseInt(params.maxHealthInfra) || null;\n // params.maxPosition = parseInt(params.maxPosition) || null;\n params.categoryIds = params.categoryIds.map((item) => item?.id);\n params.locationTypes =\n params.isLocationRequired === true ? params.locationTypes : [];\n delete params.isLocationRequired;\n params.manageByRoleIds = params.roleIds;\n isUpdate ? await putRole(params) : await postRole(params);\n showToast({\n type: \"success\",\n message: `Role ${isUpdate ? \"Updated\" : \"Added\"} Successfully`,\n });\n submitRef.current = true;\n handleClose();\n isRoleListModified();\n } catch (error) {\n showToast({\n type: \"error\",\n message: `Role Cannot be added: ${error?.response?.data?.message}`,\n });\n }\n };\n\n /**\n * Fetches and updates form data based on the selected role ID and initializes additional data needed for the form.\n *\n * This effect runs when the `selectedId` dependency changes. It retrieves role data by ID, updates the form fields\n * with the fetched role data, and sets additional data such as roles, location types, manage team types,\n * categories, and health infrastructure types.\n *\n * @async\n * @function useEffect\n */\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n setIsLoading((cur) => !cur);\n\n const env = GeneralUtil.getEnv();\n\n if (open !== 0) {\n const [roles, locationData, manageTeam, category, healthInfraType] =\n await Promise.all([\n getRoleList(),\n getLocationTypes(),\n execute({\n code: \"team_all_types_for_roles\",\n parameters: {},\n }),\n execute({\n code: \"retrieve_field_values_for_form_field\",\n parameters: {\n form: \"WEB\",\n fieldKey: \"role_catg\",\n },\n }),\n execute({\n code: \"retrieve_field_values_for_form_field\",\n parameters: {\n form: \"WEB\",\n fieldKey: \"infra_type\",\n },\n }),\n ]);\n\n setFormData((cur) => {\n return {\n ...cur,\n roles: roles.data,\n locationData: locationData.data,\n manageTeam: manageTeam?.data?.result,\n category: category?.data?.result,\n healthInfraType: healthInfraType?.data?.result,\n };\n });\n\n if (selectedId) {\n const { data: roleData } = await getRoleById(selectedId);\n setFormData((cur) => {\n return { ...cur, roleData, env };\n });\n Object.keys(roleData).map((key) => setValue(key, roleData[key]));\n setValue(\"isBankDetailsRequired\", roleData.isBankDetailsRequired);\n setValue(\"isBankDetailsMandatory\", roleData.isBankDetailsMandatory);\n const {\n manageByTeamTypeIds,\n healthInfrastructureIds,\n roleIds,\n categoryIds,\n } = roleData;\n setValue(\n \"manageByTeamTypeIds\",\n manageByTeamTypeIds\n ? manageByTeamTypeIds.map((item) =>\n manageTeam.data.result?.find((cur) => cur?.id === item),\n )\n : [],\n );\n setValue(\n \"healthInfrastructureIds\",\n healthInfrastructureIds\n ? healthInfrastructureIds\n .map((item) =>\n healthInfraType.data.result?.find(\n (cur) => cur?.id === item,\n ),\n )\n .filter((item) => item !== undefined)\n : [],\n );\n setValue(\n \"categoryIds\",\n categoryIds\n ? categoryIds.map((item) =>\n category.data.result?.find((cur) => cur?.id === item),\n )\n : [],\n );\n setValue(\n \"roleIds\",\n roleIds\n ? roleIds\n .map((item) => roles.data?.find((cur) => cur?.id === item))\n .filter((role) => role !== undefined)\n : [],\n );\n setValue(\n \"canManageRoleIds\",\n roleData.canManageRoleIds\n ? roleData.canManageRoleIds\n .map((item) => roles.data?.find((cur) => cur?.id === item))\n .filter((role) => role !== undefined)\n : [],\n );\n if (roleData.locationTypes.length > 0) {\n setValue(\"isLocationRequired\", true);\n } else {\n setValue(\"isLocationRequired\", false);\n }\n }\n }\n\n setIsLoading((cur) => !cur);\n } catch (error) {\n showToast({\n message: `Error in manage role :${error?.message}`,\n type: \"error\",\n });\n setIsLoading((cur) => !cur);\n }\n };\n fetchData();\n }, [selectedId, open]);\n\n return (\n <Modal\n open={open !== 0}\n onClose={handleClose}\n data-testid=\"managerole-modal\"\n >\n <div className=\"mt-10 fixed inset-0 z-[100] flex items-center justify-center p-4 animate-in fade-in duration-200\">\n <Box\n className=\"w-full max-w-2xl rounded-[2.5rem] shadow-2xl shadow-blue-900/10 overflow-hidden flex flex-col animate-in zoom-in-95 duration-300\"\n sx={{ bgcolor: (theme) => theme.palette.custom.customBackground }}\n >\n <ManageRoleSkeleton isLoading={isLoading}>\n <div className=\"px-8 pt-8 pb-4 flex items-center justify-between\">\n <div>\n <Box\n component=\"h2\"\n className=\"text-2xl font-bold text-customBlue\"\n sx={{ color: \"text.primary\" }}\n >\n {!isUpdate ? \"Add New Role\" : \"Update Role\"}\n </Box>\n </div>\n <IconButton\n size=\"small\"\n onClick={handleClose}\n className=\"w-10 h-10 rounded-full bg-slate-100 flex items-center justify-center text-slate-400 hover:bg-slate-200 hover:text-slate-600 transition-all\"\n data-testid=\"managerole-close-icon\"\n >\n <FontAwesomeIcon icon={faXmark} size=\"lg\" />\n </IconButton>\n </div>\n <form\n onSubmit={handleSubmit(onSubmit)}\n ref={formRef}\n className=\"px-8 pb-8 space-y-6 overflow-y-auto max-h-[80vh]\"\n >\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <FormControl variant=\"outlined\">\n <div className=\"space-y-1.5\">\n <FormItem label=\"Role Name\">\n <CustomTextField\n placeholder={\"Role Name\"}\n name=\"name\"\n id=\"name\"\n errors={errors}\n control={control}\n dataTestId=\"managerole-role-name-field\"\n />\n </FormItem>\n </div>\n </FormControl>\n <FormControl variant=\"outlined\">\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Max Position\"\n tooltip=\"This is the maximum no of users that can be created at one location of this role type\"\n >\n <CustomTextField\n name=\"maxPosition\"\n id=\"maxPosition\"\n errors={errors}\n control={control}\n rules={{\n maxLength: 3,\n pattern: /^\\d{1,3}$/,\n }}\n inputProps={{\n maxLength: 3,\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n onInput: (e) => {\n e.target.value = e.target.value.replace(/\\D/g, \"\");\n },\n }}\n dataTestId=\"managerole-max-position-field\"\n />\n </FormItem>\n </div>\n </FormControl>\n {implementationConfig.role.showMaxHealthData && (\n <FormControl variant=\"outlined\">\n <div className=\"space-y-1.5\">\n <FormItem label=\"Max Health Infrastructure\">\n <CustomTextField\n name=\"maxHealthInfra\"\n id=\"maxHealthInfra\"\n control={control}\n errors={errors}\n rules={{\n maxLength: 3,\n pattern: /^\\d{1,3}$/,\n }}\n inputProps={{\n maxLength: 3,\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n onInput: (e) => {\n e.target.value = e.target.value.replace(\n /\\D/g,\n \"\",\n );\n },\n }}\n dataTestId=\"managerole-max-health-infra-field\"\n />\n </FormItem>\n </div>\n </FormControl>\n )}\n </div>\n <div className=\"flex items-center gap-6 w-full\">\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-row items-center w-full \"\n >\n <FormItem\n label=\"Location Required\"\n required={true}\n direction={\"row\"}\n >\n <CustomToggleSwitch\n control={control}\n name=\"isLocationRequired\"\n options={[\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ]}\n errors={errors}\n />\n {/* <CustomRadioGroup\n name=\"isLocationRequired\"\n errors={errors}\n control={control}\n options={[\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ]}\n direction=\"row\"\n dataTestId=\"managerole-location-details-radio\"\n className={\"m-0\"}\n /> */}\n </FormItem>\n </FormControl>\n </div>\n <div className=\"space-y-4\">\n {(locationDetailsWatcher === true || isSubmitting) && (\n <>\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Location\"\n required={true}\n tooltip=\"The OU level where users of this role perform their job function\"\n >\n <CustomAutocomplete\n id=\"locationTypes\"\n control={control}\n name=\"locationTypes\"\n options={formData.locationData}\n value={locTypes?.map((locationType) =>\n formData.locationData?.find(\n (location) =>\n location.type === locationType?.type,\n ),\n )}\n errors={errors}\n getOptionLabel={(option) => option?.name}\n dataTestId=\"managerole-location-type-select\"\n checkEquality=\"type\"\n onChange={(e, val) =>\n handleAddFields(e, val, \"locationTypes\")\n }\n />\n </FormItem>\n </div>\n </>\n )}\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Can Manage Role\"\n tooltip=\"Please select the roles that shall be managed by this role\"\n >\n <CustomAutocomplete\n name=\"roleIds\"\n id=\"roleIds\"\n errors={errors}\n control={control}\n dataTestId=\"managerole-manage-role-select\"\n options={formData.roles}\n onChange={(e, val) => handleAddFields(e, val, \"roleIds\")}\n getOptionLabel={(options) => options?.name}\n />\n </FormItem>\n </div>\n {implementationConfig.role.showManagedFrom && (\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Managed From\"\n tooltip=\"Please select the roles that can manage this role\"\n >\n <CustomAutocomplete\n name=\"canManageRoleIds\"\n id=\"canManageRoleIds\"\n errors={errors}\n control={control}\n dataTestId=\"managerole-managed-by-role-select\"\n options={formData.roles}\n onChange={(e, val) =>\n handleAddFields(e, val, \"canManageRoleIds\")\n }\n getOptionLabel={(options) => options?.name}\n />\n </FormItem>\n </div>\n )}\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {implementationConfig.role.showRoleType && (\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Role Type\"\n tooltip=\"Please select Role Type\"\n required={true}\n >\n <CustomDropdown\n control={control}\n id=\"roleType\"\n name=\"roleType\"\n options={roleTypes}\n displayName=\"name\"\n optionValue=\"name\"\n errors={errors}\n dataTestId=\"managerole-role-type-dropdown\"\n />\n </FormItem>\n </div>\n )}\n {implementationConfig.role.showCanManageTeam && (\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Can Manage Team\"\n tooltip=\"Please select the teams that shall be managed by this role\"\n >\n <CustomAutocomplete\n control={control}\n name=\"manageByTeamTypeIds\"\n id=\"manageByTeamTypeIds\"\n errors={errors}\n options={formData.manageTeam}\n dataTestId=\"managerole-manage-team-select\"\n onChange={(e, val) =>\n handleAddFields(e, val, \"manageByTeamTypeIds\")\n }\n getOptionLabel={(options) => options?.type}\n />\n </FormItem>\n </div>\n )}\n </div>\n <div className=\"space-y-4\">\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Select Health Infrastructure type\"\n tooltip=\"Please select the institute to be associated with the role\"\n required={isHealthInfraMandatory}\n >\n <CustomAutocomplete\n options={formData.healthInfraType}\n errors={errors}\n name=\"healthInfrastructureIds\"\n id=\"healthInfrastructureIds\"\n dataTestId=\"managerole-health-infrastructure-select\"\n control={control}\n onChange={(e, val) =>\n handleAddFields(e, val, \"healthInfrastructureIds\")\n }\n getOptionLabel={(option) => option?.value}\n />\n </FormItem>\n </div>\n </div>\n {implementationConfig.role.showCategoryIds && (\n <>\n <div className=\"space-y-4\">\n <div className=\"space-y-1.5\">\n <FormItem\n label=\"Category\"\n tooltip=\"Please select the category to be associated with the role\"\n >\n <CustomAutocomplete\n id=\"categoryIds\"\n name=\"categoryIds\"\n errors={errors}\n options={formData.category}\n dataTestId=\"managerole-role-category-select\"\n control={control}\n onChange={(e, val) =>\n handleAddFields(e, val, \"categoryIds\")\n }\n getOptionLabel={(option) => option?.value}\n />\n </FormItem>\n </div>\n </div>\n </>\n )}\n </div>\n <div className=\"flex items-center gap-6\">\n {implementationConfig.role.showBankDetailsRequired && (\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-row items-center w-[60%] \"\n >\n <FormItem\n label=\"Bank Details Required\"\n tooltip=\"Select if bank details are required for this role\"\n required={true}\n labelWidth=\"50%\"\n childrenWidth=\"50%\"\n direction=\"row\"\n >\n <CustomToggleSwitch\n control={control}\n name=\"isBankDetailsRequired\"\n options={[\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ]}\n errors={errors}\n />\n </FormItem>\n </FormControl>\n )}\n {!isUpdate && (\n <>\n <FormControl variant=\"outlined \" className=\"w-[40%]\">\n <div className=\"flex items-center gap-2\">\n <FormItem\n label=\"Self Manage\"\n labelWidth=\"60%\"\n childrenWidth=\"40%\"\n direction=\"row\"\n >\n <CustomCheckBox\n name=\"canSelfManage\"\n control={control}\n isFullWidth={false}\n data-testid=\"managerole-self-manage-checkbox\"\n />\n </FormItem>\n </div>\n </FormControl>\n </>\n )}\n </div>\n {showTwoFactorSetting && (\n <div className=\"flex items-center gap-6 w-full\">\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-row items-center w-[50%]\"\n >\n <FormItem\n label=\"Two-Factor Authentication\"\n tooltip=\"Require users of this role to use a two-factor authentication app\"\n labelWidth=\"60%\"\n childrenWidth=\"40%\"\n direction=\"row\"\n >\n <CustomToggleSwitch\n control={control}\n name=\"isTwoFactorEnabled\"\n options={[\n { label: \"Yes\", value: true },\n { label: \"No\", value: false },\n ]}\n errors={errors}\n />\n </FormItem>\n </FormControl>\n {isTwoFactorEnabled === true && (\n <FormControl variant=\"outlined\" className=\"w-[50%]\">\n <FormItem\n label=\"Authentication Method\"\n tooltip=\"Select which authentication method users of this role will use\"\n >\n <CustomDropdown\n control={control}\n id=\"twoFactorType\"\n name=\"twoFactorType\"\n options={twoFactorTypes}\n displayName=\"label\"\n optionValue=\"value\"\n errors={errors}\n dataTestId=\"managerole-two-factor-type-dropdown\"\n />\n </FormItem>\n </FormControl>\n )}\n </div>\n )}\n <div className=\"flex items-center gap-6\">\n <FormControl\n variant=\"outlined\"\n className=\"flex flex-col items-start justify-between\"\n >\n <FormItem\n label=\"Mandatory Fields\"\n tooltip=\"These fields are Mandatory when creating users of this role type\"\n >\n <FormGroup row>\n {mandatoryFields?.map((field) => (\n <CustomCheckBox\n key={field.value}\n control={control}\n name={field.value}\n label={field.label}\n isFullWidth={false}\n data-testid={`managerole-mandatory-field-${field.value}`}\n />\n ))}\n {bankDetails === true && (\n <CustomCheckBox\n name=\"isBankDetailsMandatory\"\n control={control}\n label=\"Bank Details\"\n isFullWidth={false}\n data-testid=\"managerole-bank-details-mandatory-checkbox\"\n />\n )}\n </FormGroup>\n </FormItem>\n </FormControl>\n </div>\n <Box\n className=\"flex items-center justify-end gap-3 pt-6 border-t\"\n sx={{ borderColor: \"divider\" }}\n >\n <Button\n variant=\"contained\"\n color=\"secondary\"\n size=\"small\"\n onClick={handleClose}\n data-testid=\"managerole-close-button\"\n >\n {translate(\"Close\")}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n type=\"submit\"\n data-testid=\"managerole-submit-button\"\n >\n {!isUpdate\n ? `${translate(\"Add Role\")}`\n : `${translate(\"Update Role\")}`}\n </Button>\n </Box>\n </form>\n </ManageRoleSkeleton>\n </Box>\n </div>\n </Modal>\n );\n};\n\nexport default ManageRole;\n\nManageRole.propTypes = {\n isUpdate: PropTypes.bool,\n role: PropTypes.object,\n onClose: PropTypes.func,\n open: PropTypes.bool,\n setOpen: PropTypes.func,\n selectedId: PropTypes.string,\n isRoleListModified: PropTypes.bool,\n};\n"],"names":["ManageRoleSkeleton","children","isLoading","useSelector","getUseSkeleton","jsxs","jsx","i","PropTypes","roleTypes","twoFactorTypes","ManageRole","selectedId","isUpdate","open","setOpen","isRoleListModified","formRef","useRef","submitRef","trackEvent","useTrackEvent","formData","setFormData","useState","setIsLoading","validationSchema","Yup","schema","implementationConfig","control","handleSubmit","errors","isSubmitting","setValue","watch","reset","useForm","yupResolver","bankDetails","isTwoFactorEnabled","roleType","showTwoFactorSetting","locTypes","translate","useTranslateProvider","locationDetailsWatcher","isHealthInfraMandatory","mandatoryFields","field","_a","handleClose","handleAddFields","value","name","onSubmit","params","item","putRole","postRole","showToast","error","_b","useEffect","cur","env","GeneralUtil","roles","locationData","manageTeam","category","healthInfraType","getRoleList","getLocationTypes","execute","_c","roleData","getRoleById","key","manageByTeamTypeIds","healthInfrastructureIds","roleIds","categoryIds","role","Modal","Box","theme","IconButton","FontAwesomeIcon","faXmark","FormControl","FormItem","CustomTextField","CustomToggleSwitch","Fragment","CustomAutocomplete","locationType","location","option","val","options","CustomDropdown","CustomCheckBox","FormGroup","Button"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { Modal as le, Typography as O, IconButton as _, Box as c, FormControl as
9
9
  import w from "@/views/custom-components/CustomTextField";
10
10
  import { retrieveAllNotifications as he } from "@/common/services/GlobalApis";
11
11
  import { showToast as pe } from "@/common/toaster/toaster";
12
- import "./ManageEventConfiguration-CHugu2vQ.js";
12
+ import "./ManageEventConfiguration-BntUc_YI.js";
13
13
  import ye from "@/hooks/useTrackEvent";
14
14
  import { useTranslateProvider as ge } from "@/common/languageTranslator/TranslationContext";
15
15
  import { faXmark as ve, faTrash as De } from "@fortawesome/free-solid-svg-icons";
@@ -780,4 +780,4 @@ Fe.propTypes = {
780
780
  export {
781
781
  Fe as default
782
782
  };
783
- //# sourceMappingURL=MobileTypeEventConfigModal-2w0WQ3WY.js.map
783
+ //# sourceMappingURL=MobileTypeEventConfigModal-BNjZ8pnq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MobileTypeEventConfigModal-2w0WQ3WY.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
+ {"version":3,"file":"MobileTypeEventConfigModal-BNjZ8pnq.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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"}