Skip to content

Commit e17f180

Browse files
Muppasanipraneethdenniskigen
andauthoredMar 17, 2025
(fix) O3 4541 : Fix identifier deletion modal handling in registration form (#1528)
* fix: Refactor identifier deletion modal handling in IdentifierInput component * fix: Update delete identifier modal to use closeModal function instead of deleteIdentifier for cancel action * Fixup --------- Co-authored-by: Dennis Kigen <kigen.work@gmail.com>
1 parent 000959d commit e17f180

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed
 

‎packages/esm-patient-registration-app/src/patient-registration/input/custom-input/identifier/identifier-input.component.tsx

+12-10
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ import { useTranslation } from 'react-i18next';
33
import { useField } from 'formik';
44
import { Button } from '@carbon/react';
55
import { TrashCan, Edit, Reset } from '@carbon/react/icons';
6-
import { ResourcesContext } from '../../../../offline.resources';
6+
import { type RegistrationConfig } from '../../../../config-schema';
77
import { showModal, useConfig, UserHasAccess } from '@openmrs/esm-framework';
8-
import { shouldBlockPatientIdentifierInOfflineMode } from './utils';
98
import { deleteIdentifierType, setIdentifierSource } from '../../../field/id/id-field.component';
10-
import { type PatientIdentifierValue } from '../../../patient-registration.types';
11-
import { PatientRegistrationContext } from '../../../patient-registration-context';
129
import { Input } from '../../basic-input/input/input.component';
10+
import { PatientRegistrationContext } from '../../../patient-registration-context';
11+
import { ResourcesContext } from '../../../../offline.resources';
12+
import { shouldBlockPatientIdentifierInOfflineMode } from './utils';
13+
import { type PatientIdentifierValue } from '../../../patient-registration.types';
1314
import styles from '../../input.scss';
1415

1516
interface IdentifierInputProps {
@@ -19,7 +20,7 @@ interface IdentifierInputProps {
1920

2021
const IdentifierInput: React.FC<IdentifierInputProps> = ({ patientIdentifier, fieldName }) => {
2122
const { t } = useTranslation();
22-
const { defaultPatientIdentifierTypes } = useConfig();
23+
const { defaultPatientIdentifierTypes } = useConfig<RegistrationConfig>();
2324
const { identifierTypes } = useContext(ResourcesContext);
2425
const { isOffline, values, setFieldValue } = useContext(PatientRegistrationContext);
2526
const identifierType = useMemo(
@@ -70,15 +71,16 @@ const IdentifierInput: React.FC<IdentifierInputProps> = ({ patientIdentifier, fi
7071
*/
7172

7273
if (initialValue) {
73-
const confirmDeleteIdentifierModal = showModal('delete-identifier-confirmation-modal', {
74-
deleteIdentifier: (deleteIdentifier) => {
75-
if (deleteIdentifier) {
74+
const dispose = showModal('delete-identifier-confirmation-modal', {
75+
closeModal: () => dispose(),
76+
deleteIdentifier: (isConfirmed) => {
77+
if (isConfirmed) {
7678
setFieldValue('identifiers', deleteIdentifierType(values.identifiers, fieldName));
7779
}
78-
confirmDeleteIdentifierModal();
80+
dispose();
7981
},
8082
identifierName,
81-
initialValue,
83+
identifierValue: initialValue,
8284
});
8385
} else {
8486
setFieldValue('identifiers', deleteIdentifierType(values.identifiers, fieldName));

‎packages/esm-patient-registration-app/src/widgets/delete-identifier-confirmation.modal.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const DeleteIdentifierConfirmationModal: React.FC<DeleteIdentifierConfirmationMo
3636
</p>
3737
</ModalBody>
3838
<ModalFooter>
39-
<Button kind="secondary" size="lg" onClick={() => deleteIdentifier(false)}>
39+
<Button kind="secondary" size="lg" onClick={closeModal}>
4040
{t('cancel', 'Cancel')}
4141
</Button>
4242
<Button kind="danger" size="lg" onClick={() => deleteIdentifier(true)}>

‎packages/esm-patient-registration-app/src/widgets/delete-identifier-confirmation.test.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import DeleteIdentifierConfirmationModal from './delete-identifier-confirmation.
55

66
describe('DeleteIdentifierConfirmationModal', () => {
77
const mockDeleteIdentifier = jest.fn();
8+
const closeModal = jest.fn();
89
const mockIdentifierName = 'Identifier Name';
910
const mockIdentifierValue = 'Identifier Value';
1011

@@ -13,7 +14,7 @@ describe('DeleteIdentifierConfirmationModal', () => {
1314

1415
render(
1516
<DeleteIdentifierConfirmationModal
16-
closeModal={jest.fn()}
17+
closeModal={closeModal}
1718
deleteIdentifier={mockDeleteIdentifier}
1819
identifierName={mockIdentifierName}
1920
identifierValue={mockIdentifierValue}
@@ -22,7 +23,7 @@ describe('DeleteIdentifierConfirmationModal', () => {
2223

2324
const cancelButton = screen.getByRole('button', { name: /cancel/i });
2425
await user.click(cancelButton);
25-
expect(mockDeleteIdentifier).toHaveBeenCalledWith(false);
26+
expect(closeModal).toHaveBeenCalledTimes(1);
2627

2728
const removeButton = screen.getByRole('button', { name: /remove identifier/i });
2829
await user.click(removeButton);

0 commit comments

Comments
 (0)
Failed to load comments.