Skip to content

Commit 410335f

Browse files
committed
pr changes
1 parent dcf6b95 commit 410335f

4 files changed

Lines changed: 31 additions & 3 deletions

File tree

src/components/renderer/field/fieldLogic.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { type FormContextProps } from '../../../provider/form-provider';
33
import { type FormFieldValidator, type SessionMode, type ValidationResult, type FormField } from '../../../types';
44
import { hasRendering } from '../../../utils/common-utils';
55
import { evaluateAsyncExpression, evaluateExpression } from '../../../utils/expression-runner';
6-
import { evalConditionalRequired, evaluateDisabled, evaluateHide } from '../../../utils/form-helper';
6+
import { evalConditionalRequired, evaluateDisabled, evaluateHide, findFieldSection } from '../../../utils/form-helper';
77
import { isEmpty } from '../../../validators/form-validator';
88
import { reportError } from '../../../utils/error-utils';
99

@@ -90,6 +90,9 @@ function evaluateFieldDependents(field: FormField, values: any, context: FormCon
9090
}
9191
// evaluate hide
9292
if (dependent.hide) {
93+
const targetSection = findFieldSection(formJson, dependent);
94+
// console.log('targetSection', targetSection);
95+
9396
evaluateHide(
9497
{ value: dependent, type: 'field' },
9598
formFields,
@@ -99,6 +102,15 @@ function evaluateFieldDependents(field: FormField, values: any, context: FormCon
99102
evaluateExpression,
100103
updateFormField,
101104
);
105+
// console.log('dependent', dependent);
106+
let hasVisibleFields = targetSection?.questions.some((question) => !question.isHidden);
107+
// console.log('hasVisibleFields', hasVisibleFields);
108+
// console.log('dependent.isHidden', dependent.isHidden);
109+
if (!hasVisibleFields && !dependent.isHidden) {
110+
// console.log('FORCE RE-RENDER');
111+
targetSection.isHidden = false;
112+
shouldUpdateForm = true;
113+
}
102114
}
103115
// evaluate disabled
104116
if (typeof dependent.disabled === 'object' && dependent.disabled.disableWhenExpression) {
@@ -189,7 +201,8 @@ function evaluateFieldDependents(field: FormField, values: any, context: FormCon
189201
},
190202
);
191203
}
192-
shouldUpdateForm = true;
204+
// shouldUpdateForm = true;
205+
// console.log('shouldUpdateForm', shouldUpdateForm);
193206
updateFormField(dependent);
194207
});
195208
}
@@ -234,6 +247,7 @@ function evaluateFieldDependents(field: FormField, values: any, context: FormCon
234247
}
235248

236249
if (shouldUpdateForm) {
250+
// console.log('updating form', formJson);
237251
setForm(formJson);
238252
}
239253
}

src/components/renderer/page/page.renderer.component.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ interface CollapsibleSectionContainerProps {
2525
function PageRenderer({ page, isFormExpanded }: PageRendererProps) {
2626
const { t } = useTranslation();
2727
const [isCollapsed, setIsCollapsed] = useState(false);
28+
// console.log('page.sections', page.sections);
2829

2930
const visibleSections = useMemo(
3031
() =>

src/hooks/useFormStateHelpers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export function useFormStateHelpers(dispatch: Dispatch<Action>, formFields: Form
5151
}, []);
5252

5353
const setForm = useCallback((formJson: FormSchema) => {
54+
// console.log('useFormStateHelpers setForm', formJson);
5455
dispatch({ type: 'SET_FORM_JSON', value: updateFormSectionReferences(formJson) });
5556
}, []);
5657

src/utils/form-helper.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { type LayoutType } from '@openmrs/esm-framework';
2-
import type { FormField, FormPage, FormSection, SessionMode, FHIRObsResource, RenderType } from '../types';
2+
import type { FormField, FormPage, FormSection, SessionMode, FHIRObsResource, RenderType, FormSchema } from '../types';
33
import { isEmpty } from '../validators/form-validator';
44
import { parseToLocalDateTime } from './common-utils';
55
import dayjs from 'dayjs';
@@ -102,6 +102,8 @@ export function evaluateHide(
102102
mode: sessionMode,
103103
patient,
104104
});
105+
// console.log('node', node.value.label);
106+
// console.log('isHidden', isHidden);
105107
node.value.isHidden = isHidden;
106108
if (type == 'field' && node.value?.questions?.length) {
107109
node.value?.questions.forEach((question) => {
@@ -271,3 +273,13 @@ function extractFHIRObsValue(fhirObs: FHIRObsResource, rendering: RenderType) {
271273
return fhirObs.valueString;
272274
}
273275
}
276+
277+
/**
278+
* Find formField section
279+
* @param formJson FormSchema
280+
* @param field FormField
281+
*/
282+
export function findFieldSection(formJson: FormSchema, field: FormField) {
283+
let page = formJson.pages.find((page) => field.meta.pageId === page.id);
284+
return page.sections.find((section) => section.questions.find((question) => question.id === field.id));
285+
}

0 commit comments

Comments
 (0)