@openmrs/esm-form-engine-lib 4.2.2-pre.2546 → 4.2.2-pre.2552
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.
- package/dist/components/inputs/multi-select/multi-select.scss +1 -1
- package/dist/components/inputs/text/text.scss +1 -1
- package/dist/components/processor-factory/form-processor-factory.component.js +111 -39
- package/dist/components/renderer/custom-hooks-renderer.component.js +2 -2
- package/dist/components/renderer/page/page.renderer.scss +1 -1
- package/dist/hooks/useFormFieldValidators.js +22 -12
- package/dist/hooks/useFormFieldValueAdapters.js +22 -15
- package/dist/hooks/useFormFields.js +35 -42
- package/dist/hooks/useInitialValues.js +12 -5
- package/dist/hooks/useProcessorDependencies.js +2 -2
- package/dist/processors/encounter/encounter-form-processor.js +10 -20
- package/dist/processors/form-processor.js +4 -1
- package/dist/src/components/processor-factory/form-processor-factory.component.d.ts.map +1 -1
- package/dist/src/components/renderer/custom-hooks-renderer.component.d.ts +5 -8
- package/dist/src/components/renderer/custom-hooks-renderer.component.d.ts.map +1 -1
- package/dist/src/hooks/useFormFieldValidators.d.ts.map +1 -1
- package/dist/src/hooks/useFormFieldValueAdapters.d.ts.map +1 -1
- package/dist/src/hooks/useFormFields.d.ts.map +1 -1
- package/dist/src/hooks/useInitialValues.d.ts.map +1 -1
- package/dist/src/hooks/useProcessorDependencies.d.ts +2 -2
- package/dist/src/hooks/useProcessorDependencies.d.ts.map +1 -1
- package/dist/src/processors/encounter/encounter-form-processor.d.ts +6 -3
- package/dist/src/processors/encounter/encounter-form-processor.d.ts.map +1 -1
- package/dist/src/processors/form-processor.d.ts +21 -2
- package/dist/src/processors/form-processor.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/inputs/multi-select/multi-select.scss +1 -1
- package/src/components/inputs/text/text.scss +1 -1
- package/src/components/processor-factory/form-processor-factory.component.tsx +151 -35
- package/src/components/renderer/custom-hooks-renderer.component.tsx +6 -8
- package/src/components/renderer/page/page.renderer.scss +1 -1
- package/src/hooks/useFormFieldValidators.ts +23 -13
- package/src/hooks/useFormFieldValueAdapters.ts +23 -16
- package/src/hooks/useFormFields.ts +28 -41
- package/src/hooks/useInitialValues.ts +15 -6
- package/src/hooks/useProcessorDependencies.ts +4 -3
- package/src/processors/encounter/encounter-form-processor.ts +12 -21
- package/src/processors/form-processor.ts +27 -1
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
import { evaluateAsyncExpression, type FormNode } from '../../utils/expression-runner';
|
|
25
25
|
import { extractErrorMessagesFromResponse } from '../../utils/error-utils';
|
|
26
26
|
import { extractObsValueAndDisplay } from '../../utils/form-helper';
|
|
27
|
-
import { FormProcessor } from '../form-processor';
|
|
27
|
+
import { FormProcessor, type FormProcessorContextSetters } from '../form-processor';
|
|
28
28
|
import { getPreviousEncounter, saveEncounter } from '../../api';
|
|
29
29
|
import { hasRendering } from '../../utils/common-utils';
|
|
30
30
|
import { isEmpty } from '../../validators/form-validator';
|
|
@@ -50,19 +50,14 @@ function useCustomHooks(context: Partial<FormProcessorContextProps>) {
|
|
|
50
50
|
data: { encounter, patientPrograms, encounterRole },
|
|
51
51
|
isLoading,
|
|
52
52
|
error: null,
|
|
53
|
-
updateContext: (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
patientPrograms: patientPrograms,
|
|
62
|
-
defaultEncounterRole: encounterRole,
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
});
|
|
53
|
+
updateContext: (_setContext, { setDomainObjectValue, setCustomDependencies }) => {
|
|
54
|
+
context.processor.domainObjectValue = encounter as OpenmrsResource;
|
|
55
|
+
setDomainObjectValue(encounter as OpenmrsResource);
|
|
56
|
+
setCustomDependencies((previous) => ({
|
|
57
|
+
...previous,
|
|
58
|
+
patientPrograms: patientPrograms,
|
|
59
|
+
defaultEncounterRole: encounterRole,
|
|
60
|
+
}));
|
|
66
61
|
},
|
|
67
62
|
};
|
|
68
63
|
}
|
|
@@ -344,16 +339,12 @@ export class EncounterFormProcessor extends FormProcessor {
|
|
|
344
339
|
|
|
345
340
|
async loadDependencies(
|
|
346
341
|
context: FormContextProps,
|
|
347
|
-
|
|
342
|
+
_setContext: React.Dispatch<React.SetStateAction<FormProcessorContextProps>>,
|
|
343
|
+
{ setPreviousDomainObjectValue }: FormProcessorContextSetters,
|
|
348
344
|
) {
|
|
349
345
|
const { patient, formJson } = context;
|
|
350
346
|
const encounter = await getPreviousEncounter(patient?.id, formJson.encounterType);
|
|
351
|
-
|
|
352
|
-
return {
|
|
353
|
-
...context,
|
|
354
|
-
previousDomainObjectValue: encounter,
|
|
355
|
-
};
|
|
356
|
-
});
|
|
347
|
+
setPreviousDomainObjectValue(encounter);
|
|
357
348
|
return context;
|
|
358
349
|
}
|
|
359
350
|
|
|
@@ -4,12 +4,33 @@ import { type ValueAndDisplay, type FormField, type FormSchema, type FormProcess
|
|
|
4
4
|
|
|
5
5
|
export type FormProcessorConstructor = new (...args: ConstructorParameters<typeof FormProcessor>) => FormProcessor;
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* The setters a processor uses to feed its results back into the processor context. These are the
|
|
9
|
+
* only three properties it can change; the rest of {@link FormProcessorContextProps} is derived by
|
|
10
|
+
* the FormProcessorFactory. They supersede the `setContext` passed alongside them, which is shaped
|
|
11
|
+
* like a `setState` over the whole context but silently discards everything else.
|
|
12
|
+
*/
|
|
13
|
+
export interface FormProcessorContextSetters {
|
|
14
|
+
setDomainObjectValue: (value: OpenmrsResource) => void;
|
|
15
|
+
setPreviousDomainObjectValue: (value: OpenmrsResource) => void;
|
|
16
|
+
setCustomDependencies: (
|
|
17
|
+
dependencies: Record<string, any> | ((previous: Record<string, any>) => Record<string, any>),
|
|
18
|
+
) => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
7
21
|
export type GetCustomHooksResponse = {
|
|
8
22
|
useCustomHooks: (context: Partial<FormProcessorContextProps>) => {
|
|
9
23
|
data: any;
|
|
10
24
|
isLoading: boolean;
|
|
11
25
|
error: any;
|
|
12
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Called once the hook has finished loading, to merge its results into the processor context.
|
|
28
|
+
* `setContext` is deprecated; use `setters`.
|
|
29
|
+
*/
|
|
30
|
+
updateContext: (
|
|
31
|
+
setContext: React.Dispatch<React.SetStateAction<FormProcessorContextProps>>,
|
|
32
|
+
setters: FormProcessorContextSetters,
|
|
33
|
+
) => void;
|
|
13
34
|
};
|
|
14
35
|
};
|
|
15
36
|
|
|
@@ -25,9 +46,14 @@ export abstract class FormProcessor {
|
|
|
25
46
|
return this.domainObjectValue;
|
|
26
47
|
}
|
|
27
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Loads whatever the processor needs before the form can render, merging the results into the
|
|
51
|
+
* processor context. `setContext` is deprecated; use `setters`.
|
|
52
|
+
*/
|
|
28
53
|
async loadDependencies(
|
|
29
54
|
context: Partial<FormProcessorContextProps>,
|
|
30
55
|
setContext: React.Dispatch<React.SetStateAction<FormProcessorContextProps>>,
|
|
56
|
+
setters: FormProcessorContextSetters,
|
|
31
57
|
): Promise<Record<string, any>> {
|
|
32
58
|
return Promise.resolve({});
|
|
33
59
|
}
|