@aehrc/smart-forms-renderer 1.2.14 → 1.3.1
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/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.js +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupAccordion.d.ts +10 -0
- package/lib/components/FormComponents/GroupItem/GroupAccordion.js +71 -0
- package/lib/components/FormComponents/GroupItem/GroupAccordion.js.map +1 -0
- package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.d.ts +1 -1
- package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.js +1 -1
- package/lib/components/FormComponents/GroupItem/GroupAccordion.styles.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemView.js +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemView.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableView.js +1 -1
- package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
- package/lib/components/Renderer/FormBodySingleCollapsible.js +1 -1
- package/lib/components/Renderer/FormBodySingleCollapsible.js.map +1 -1
- package/lib/components/Renderer/FormBodyTabbed.js +57 -4
- package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
- package/lib/components/Tabs/FormBodyTabListWrapper.d.ts +1 -0
- package/lib/components/Tabs/FormBodyTabListWrapper.js +2 -2
- package/lib/components/Tabs/FormBodyTabListWrapper.js.map +1 -1
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.js +2 -0
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useValueSetCodings.js +2 -1
- package/lib/hooks/useValueSetCodings.js.map +1 -1
- package/lib/stores/rendererConfigStore.d.ts +7 -0
- package/lib/stores/rendererConfigStore.js +2 -0
- package/lib/stores/rendererConfigStore.js.map +1 -1
- package/lib/stores/smartConfigStore.d.ts +7 -1
- package/lib/stores/smartConfigStore.js +3 -1
- package/lib/stores/smartConfigStore.js.map +1 -1
- package/lib/utils/populateContexts.js +2 -14
- package/lib/utils/populateContexts.js.map +1 -1
- package/lib/utils/valueSet.d.ts +1 -1
- package/lib/utils/valueSet.js +2 -2
- package/lib/utils/valueSet.js.map +1 -1
- package/package.json +3 -3
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +1 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +1 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +1 -1
- package/src/components/FormComponents/GridGroup/GridRow.tsx +6 -1
- package/src/components/FormComponents/GroupItem/GroupAccordion.styles.ts +1 -1
- package/src/components/FormComponents/GroupItem/GroupAccordion.tsx +93 -0
- package/src/components/FormComponents/GroupItem/GroupItemView.tsx +1 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +1 -1
- package/src/components/FormComponents/RepeatGroup/RepeatGroupView.tsx +1 -1
- package/src/components/FormComponents/Tables/GroupTableView.tsx +1 -1
- package/src/components/Renderer/FormBodySingleCollapsible.tsx +2 -1
- package/src/components/Renderer/FormBodyTabbed.tsx +67 -5
- package/src/components/Tabs/FormBodyTabListWrapper.tsx +3 -2
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useValueSetCodings.ts +8 -1
- package/src/stores/rendererConfigStore.ts +8 -0
- package/src/stores/smartConfigStore.ts +11 -2
- package/src/utils/populateContexts.ts +2 -16
- package/src/utils/valueSet.ts +3 -2
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -7
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +0 -26
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js +0 -63
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +0 -53
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.d.ts +0 -7
- package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.js +0 -39
- package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.js.map +0 -1
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -10
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +0 -30
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +0 -1
- package/lib/components/Iconify/Iconify.d.ts +0 -10
- package/lib/components/Iconify/Iconify.js +0 -26
- package/lib/components/Iconify/Iconify.js.map +0 -1
- package/lib/components/Renderer/FormBodyPage.d.ts +0 -9
- package/lib/components/Renderer/FormBodyPage.js +0 -43
- package/lib/components/Renderer/FormBodyPage.js.map +0 -1
- package/lib/components/Renderer/FormTitle.d.ts +0 -7
- package/lib/components/Renderer/FormTitle.js +0 -30
- package/lib/components/Renderer/FormTitle.js.map +0 -1
- package/lib/components/Renderer/FormTopLevelPage.d.ts +0 -9
- package/lib/components/Renderer/FormTopLevelPage.js +0 -29
- package/lib/components/Renderer/FormTopLevelPage.js.map +0 -1
- package/lib/hooks/useBooleanCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useBooleanCalculatedExpression.js +0 -52
- package/lib/hooks/useBooleanCalculatedExpression.js.map +0 -1
- package/lib/hooks/useCalculatedExpressionAnimating.d.ts +0 -1
- package/lib/hooks/useCalculatedExpressionAnimating.js +0 -18
- package/lib/hooks/useCalculatedExpressionAnimating.js.map +0 -1
- package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -13
- package/lib/hooks/useDecimalCalculatedExpression.js +0 -58
- package/lib/hooks/useDecimalCalculatedExpression.js.map +0 -1
- package/lib/hooks/useInitialiseGroupTable.d.ts +0 -4
- package/lib/hooks/useInitialiseGroupTable.js +0 -36
- package/lib/hooks/useInitialiseGroupTable.js.map +0 -1
- package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useIntegerCalculatedExpression.js +0 -55
- package/lib/hooks/useIntegerCalculatedExpression.js.map +0 -1
- package/lib/hooks/useNumberInput.d.ts +0 -3
- package/lib/hooks/useNumberInput.js +0 -31
- package/lib/hooks/useNumberInput.js.map +0 -1
- package/lib/hooks/useRepeatAnswers.d.ts +0 -4
- package/lib/hooks/useRepeatAnswers.js +0 -34
- package/lib/hooks/useRepeatAnswers.js.map +0 -1
- package/lib/hooks/useRepeatGroups.d.ts +0 -4
- package/lib/hooks/useRepeatGroups.js +0 -34
- package/lib/hooks/useRepeatGroups.js.map +0 -1
- package/lib/hooks/useShowFeedback.d.ts +0 -11
- package/lib/hooks/useShowFeedback.js +0 -33
- package/lib/hooks/useShowFeedback.js.map +0 -1
- package/lib/hooks/useStringCalculatedExpression.d.ts +0 -14
- package/lib/hooks/useStringCalculatedExpression.js +0 -69
- package/lib/hooks/useStringCalculatedExpression.js.map +0 -1
- package/lib/hooks/useStringInput.d.ts +0 -3
- package/lib/hooks/useStringInput.js +0 -31
- package/lib/hooks/useStringInput.js.map +0 -1
- package/lib/interfaces/itemPath.interface.d.ts +0 -31
- package/lib/interfaces/itemPath.interface.js +0 -2
- package/lib/interfaces/itemPath.interface.js.map +0 -1
- package/lib/interfaces/repeatItem.interface.d.ts +0 -5
- package/lib/interfaces/repeatItem.interface.js +0 -2
- package/lib/interfaces/repeatItem.interface.js.map +0 -1
- package/lib/stores/rendererStylingStore.d.ts +0 -144
- package/lib/stores/rendererStylingStore.js +0 -68
- package/lib/stores/rendererStylingStore.js.map +0 -1
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.d.ts +0 -30
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js +0 -46
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js.map +0 -1
- package/lib/stories/storybookWrappers/index.d.ts +0 -2
- package/lib/stories/storybookWrappers/index.js +0 -18
- package/lib/stories/storybookWrappers/index.js.map +0 -1
- package/lib/stories/testUtils.d.ts +0 -23
- package/lib/stories/testUtils.js +0 -249
- package/lib/stories/testUtils.js.map +0 -1
- package/lib/theme/Theme.d.ts +0 -44
- package/lib/theme/Theme.js +0 -45
- package/lib/theme/Theme.js.map +0 -1
- package/lib/theme/customGlobalStyles.d.ts +0 -2
- package/lib/theme/customGlobalStyles.js +0 -61
- package/lib/theme/customGlobalStyles.js.map +0 -1
- package/lib/theme/overrides/Accordion.d.ts +0 -14
- package/lib/theme/overrides/Accordion.js +0 -32
- package/lib/theme/overrides/Accordion.js.map +0 -1
- package/lib/theme/overrides/Autocomplete.d.ts +0 -10
- package/lib/theme/overrides/Autocomplete.js +0 -28
- package/lib/theme/overrides/Autocomplete.js.map +0 -1
- package/lib/theme/overrides/Button.d.ts +0 -33
- package/lib/theme/overrides/Button.js +0 -52
- package/lib/theme/overrides/Button.js.map +0 -1
- package/lib/theme/overrides/Card.d.ts +0 -35
- package/lib/theme/overrides/Card.js +0 -49
- package/lib/theme/overrides/Card.js.map +0 -1
- package/lib/theme/overrides/Input.d.ts +0 -64
- package/lib/theme/overrides/Input.js +0 -81
- package/lib/theme/overrides/Input.js.map +0 -1
- package/lib/theme/overrides/Overrides.d.ts +0 -3
- package/lib/theme/overrides/Overrides.js +0 -29
- package/lib/theme/overrides/Overrides.js.map +0 -1
- package/lib/theme/overrides/Paper.d.ts +0 -12
- package/lib/theme/overrides/Paper.js +0 -31
- package/lib/theme/overrides/Paper.js.map +0 -1
- package/lib/theme/overrides/SpeedDial.d.ts +0 -16
- package/lib/theme/overrides/SpeedDial.js +0 -34
- package/lib/theme/overrides/SpeedDial.js.map +0 -1
- package/lib/theme/overrides/Table.d.ts +0 -12
- package/lib/theme/overrides/Table.js +0 -30
- package/lib/theme/overrides/Table.js.map +0 -1
- package/lib/theme/palette.d.ts +0 -27
- package/lib/theme/palette.js +0 -67
- package/lib/theme/palette.js.map +0 -1
- package/lib/theme/shadows.d.ts +0 -2
- package/lib/theme/shadows.js +0 -52
- package/lib/theme/shadows.js.map +0 -1
- package/lib/utils/answerExpression.d.ts +0 -18
- package/lib/utils/answerExpression.js +0 -133
- package/lib/utils/answerExpression.js.map +0 -1
- package/lib/utils/dayjsExtend.d.ts +0 -1
- package/lib/utils/dayjsExtend.js +0 -22
- package/lib/utils/dayjsExtend.js.map +0 -1
- package/lib/utils/dynamicValueSet.d.ts +0 -5
- package/lib/utils/dynamicValueSet.js +0 -96
- package/lib/utils/dynamicValueSet.js.map +0 -1
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.d.ts +0 -14
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js +0 -639
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js.map +0 -1
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.d.ts +0 -3
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.js +0 -41
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.js.map +0 -1
- package/lib/utils/itemControl.d.ts +0 -97
- package/lib/utils/itemControl.js +0 -336
- package/lib/utils/itemControl.js.map +0 -1
- package/lib/utils/itemPath.d.ts +0 -57
- package/lib/utils/itemPath.js +0 -75
- package/lib/utils/itemPath.js.map +0 -1
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -2
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +0 -43
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +0 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -3
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +0 -101
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +0 -1
- package/lib/utils/validateQuestionnaire.d.ts +0 -66
- package/lib/utils/validateQuestionnaire.js +0 -559
- package/lib/utils/validateQuestionnaire.js.map +0 -1
|
@@ -27,6 +27,7 @@ function useValueSetCodings(qItem) {
|
|
|
27
27
|
const patient = useSmartConfigStore.use.patient();
|
|
28
28
|
const user = useSmartConfigStore.use.user();
|
|
29
29
|
const encounter = useSmartConfigStore.use.encounter();
|
|
30
|
+
const resolvedFhirContextReferences = useSmartConfigStore.use.resolvedFhirContextReferences();
|
|
30
31
|
const launchContexts = useQuestionnaireStore.use.launchContexts();
|
|
31
32
|
const processedValueSets = useQuestionnaireStore.use.processedValueSets();
|
|
32
33
|
const cachedValueSetCodings = useQuestionnaireStore.use.cachedValueSetCodings();
|
|
@@ -46,7 +47,7 @@ function useValueSetCodings(qItem) {
|
|
|
46
47
|
// get answer expression resource from launch contexts
|
|
47
48
|
if (launchContexts[variable]) {
|
|
48
49
|
const resourceType = launchContexts[variable].extension[1].valueCode;
|
|
49
|
-
const resource = getResourceFromLaunchContext(resourceType, patient, user, encounter);
|
|
50
|
+
const resource = getResourceFromLaunchContext(resourceType, patient, user, encounter, resolvedFhirContextReferences);
|
|
50
51
|
if (resource) {
|
|
51
52
|
contextMap[variable] = resource;
|
|
52
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useValueSetCodings.js","sourceRoot":"","sources":["../../src/hooks/useValueSetCodings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,wBAAwB,EAAE,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AAOpF,SAAS,kBAAkB,CAAC,KAAwB;IAKlD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useValueSetCodings.js","sourceRoot":"","sources":["../../src/hooks/useValueSetCodings.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,10 @@ import type { Breakpoints } from '@mui/material';
|
|
|
25
25
|
* @property tabListWidthOrResponsive - Configures the width of the tab list, either as a fixed number or responsive breakpoints.
|
|
26
26
|
* - Default: `{ tabListBreakpoints: { xs: 12, sm: 3, md: 3, lg: 2.75 }, tabContentBreakpoints: { xs: 12, sm: 9, md: 9, lg: 9.25 } }`
|
|
27
27
|
*
|
|
28
|
+
* @property tabListStickyTop - The pixel offset from the top of the viewport at which the tab list becomes sticky.
|
|
29
|
+
* Set this to the height of any sticky header in the consuming app so the tab list sticks immediately below it.
|
|
30
|
+
* - Default: `0`
|
|
31
|
+
*
|
|
28
32
|
* @property textFieldWidth - Defines the default width for text input fields (in pixels).
|
|
29
33
|
* - Default: `320`
|
|
30
34
|
*
|
|
@@ -74,6 +78,7 @@ export interface RendererConfig {
|
|
|
74
78
|
tabListBreakpoints: Partial<Breakpoints['values']>;
|
|
75
79
|
tabContentBreakpoints: Partial<Breakpoints['values']>;
|
|
76
80
|
};
|
|
81
|
+
tabListStickyTop?: number;
|
|
77
82
|
textFieldWidth?: number;
|
|
78
83
|
inputsFlexGrow?: boolean;
|
|
79
84
|
reverseBooleanYesNo?: boolean;
|
|
@@ -103,6 +108,7 @@ export interface RendererConfigStoreType {
|
|
|
103
108
|
tabListBreakpoints: Partial<Breakpoints['values']>;
|
|
104
109
|
tabContentBreakpoints: Partial<Breakpoints['values']>;
|
|
105
110
|
};
|
|
111
|
+
tabListStickyTop: number;
|
|
106
112
|
showTabbedFormAt: UseResponsiveProps;
|
|
107
113
|
textFieldWidth: number;
|
|
108
114
|
inputsFlexGrow: boolean;
|
|
@@ -134,6 +140,7 @@ export declare const useRendererConfigStore: import("zustand/vanilla").StoreApi<
|
|
|
134
140
|
tabListBreakpoints: Partial<Breakpoints["values"]>;
|
|
135
141
|
tabContentBreakpoints: Partial<Breakpoints["values"]>;
|
|
136
142
|
};
|
|
143
|
+
tabListStickyTop: () => number;
|
|
137
144
|
showTabbedFormAt: () => UseResponsiveProps;
|
|
138
145
|
textFieldWidth: () => number;
|
|
139
146
|
inputsFlexGrow: () => boolean;
|
|
@@ -32,6 +32,7 @@ export const rendererConfigStore = createStore()((set) => ({
|
|
|
32
32
|
tabListBreakpoints: { xs: 12, sm: 3, md: 3, lg: 2.75 },
|
|
33
33
|
tabContentBreakpoints: { xs: 12, sm: 9, md: 9, lg: 9.25 }
|
|
34
34
|
},
|
|
35
|
+
tabListStickyTop: 0,
|
|
35
36
|
showTabbedFormAt: { query: 'up', start: 'md' },
|
|
36
37
|
textFieldWidth: 320,
|
|
37
38
|
inputsFlexGrow: false,
|
|
@@ -49,6 +50,7 @@ export const rendererConfigStore = createStore()((set) => ({
|
|
|
49
50
|
requiredIndicatorPosition: params.requiredIndicatorPosition ?? state.requiredIndicatorPosition,
|
|
50
51
|
itemResponsive: params.itemResponsive ?? state.itemResponsive,
|
|
51
52
|
tabListWidthOrResponsive: params.tabListWidthOrResponsive ?? state.tabListWidthOrResponsive,
|
|
53
|
+
tabListStickyTop: params.tabListStickyTop ?? state.tabListStickyTop,
|
|
52
54
|
showTabbedFormAt: params.showTabbedFormAt ?? state.showTabbedFormAt,
|
|
53
55
|
textFieldWidth: params.textFieldWidth ?? state.textFieldWidth,
|
|
54
56
|
inputsFlexGrow: params.inputsFlexGrow ?? state.inputsFlexGrow,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendererConfigStore.js","sourceRoot":"","sources":["../../src/stores/rendererConfigStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"rendererConfigStore.js","sourceRoot":"","sources":["../../src/stores/rendererConfigStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Encounter, Patient, Practitioner } from 'fhir/r4';
|
|
1
|
+
import type { Encounter, FhirResource, Patient, Practitioner } from 'fhir/r4';
|
|
2
2
|
import type Client from 'fhirclient/lib/Client';
|
|
3
3
|
import type { FhirContext } from '@aehrc/sdc-populate';
|
|
4
4
|
/**
|
|
@@ -11,11 +11,13 @@ import type { FhirContext } from '@aehrc/sdc-populate';
|
|
|
11
11
|
* @property user - The user resource in context
|
|
12
12
|
* @property encounter - The encounter resource in context
|
|
13
13
|
* @property fhirContext - fhirContext array from SMART App Launch
|
|
14
|
+
* @property resolvedFhirContextReferences - resolved references from fhirContext, keyed by resource type e.g. `{ "PractitionerRole": <PractitionerRole> }`
|
|
14
15
|
* @property setClient - Set the FHIRClient object when launching via SMART App Launch
|
|
15
16
|
* @property setPatient - Set the patient resource in context
|
|
16
17
|
* @property setUser - Set the user resource in context
|
|
17
18
|
* @property setEncounter - Set the encounter resource in context
|
|
18
19
|
* @property setFhirContext - Set the fhirContext array from SMART App Launch
|
|
20
|
+
* @property setResolvedFhirContextReferences - Set the resolvedFhirContextReferences object
|
|
19
21
|
*
|
|
20
22
|
* @author Sean Fong
|
|
21
23
|
*/
|
|
@@ -25,11 +27,13 @@ export interface SmartConfigStoreType {
|
|
|
25
27
|
user: Practitioner | null;
|
|
26
28
|
encounter: Encounter | null;
|
|
27
29
|
fhirContext: FhirContext[] | null;
|
|
30
|
+
resolvedFhirContextReferences: Record<string, FhirResource> | null;
|
|
28
31
|
setClient: (client: Client) => void;
|
|
29
32
|
setPatient: (patient: Patient) => void;
|
|
30
33
|
setUser: (user: Practitioner) => void;
|
|
31
34
|
setEncounter: (encounter: Encounter) => void;
|
|
32
35
|
setFhirContext: (fhirContext: FhirContext[]) => void;
|
|
36
|
+
setResolvedFhirContextReferences: (resolvedFhirContextReferences: Record<string, FhirResource>) => void;
|
|
33
37
|
}
|
|
34
38
|
/**
|
|
35
39
|
* Smart Config state management store. This is only used for answerExpressions.
|
|
@@ -60,10 +64,12 @@ export declare const useSmartConfigStore: import("zustand/vanilla").StoreApi<Sma
|
|
|
60
64
|
user: () => Practitioner | null;
|
|
61
65
|
encounter: () => Encounter | null;
|
|
62
66
|
fhirContext: () => FhirContext[] | null;
|
|
67
|
+
resolvedFhirContextReferences: () => Record<string, FhirResource> | null;
|
|
63
68
|
setClient: () => (client: Client) => void;
|
|
64
69
|
setPatient: () => (patient: Patient) => void;
|
|
65
70
|
setUser: () => (user: Practitioner) => void;
|
|
66
71
|
setEncounter: () => (encounter: Encounter) => void;
|
|
67
72
|
setFhirContext: () => (fhirContext: FhirContext[]) => void;
|
|
73
|
+
setResolvedFhirContextReferences: () => (resolvedFhirContextReferences: Record<string, FhirResource>) => void;
|
|
68
74
|
};
|
|
69
75
|
};
|
|
@@ -32,11 +32,13 @@ export const smartConfigStore = createStore()((set) => ({
|
|
|
32
32
|
user: null,
|
|
33
33
|
encounter: null,
|
|
34
34
|
fhirContext: null,
|
|
35
|
+
resolvedFhirContextReferences: null,
|
|
35
36
|
setClient: (client) => set(() => ({ client: client })),
|
|
36
37
|
setPatient: (patient) => set(() => ({ patient: patient })),
|
|
37
38
|
setUser: (user) => set(() => ({ user: user })),
|
|
38
39
|
setEncounter: (encounter) => set(() => ({ encounter: encounter })),
|
|
39
|
-
setFhirContext: (fhirContext) => set(() => ({ fhirContext: fhirContext }))
|
|
40
|
+
setFhirContext: (fhirContext) => set(() => ({ fhirContext: fhirContext })),
|
|
41
|
+
setResolvedFhirContextReferences: (resolvedFhirContextReferences) => set(() => ({ resolvedFhirContextReferences }))
|
|
40
42
|
}));
|
|
41
43
|
/**
|
|
42
44
|
* Smart Config state management store. This is only used for answerExpressions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartConfigStore.js","sourceRoot":"","sources":["../../src/stores/smartConfigStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"smartConfigStore.js","sourceRoot":"","sources":["../../src/stores/smartConfigStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAwC7C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,EAAwB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,6BAA6B,EAAE,IAAI;IACnC,SAAS,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,UAAU,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,YAAY,EAAE,CAAC,SAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,WAA0B,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;IACzF,gCAAgC,EAAE,CAAC,6BAA2D,EAAE,EAAE,CAChG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,6BAA6B,EAAE,CAAC,CAAC;CACjD,CAAC,CAAC,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -17,20 +17,8 @@
|
|
|
17
17
|
export function isLaunchContext(extension) {
|
|
18
18
|
const hasLaunchContextName = extension.url ===
|
|
19
19
|
'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext' &&
|
|
20
|
-
!!extension.extension?.find((ext) => ext.url === 'name' &&
|
|
21
|
-
|
|
22
|
-
(ext.valueCoding &&
|
|
23
|
-
(ext.valueCoding.code === 'patient' ||
|
|
24
|
-
ext.valueCoding.code === 'encounter' ||
|
|
25
|
-
ext.valueCoding.code === 'location' ||
|
|
26
|
-
ext.valueCoding.code === 'user' ||
|
|
27
|
-
ext.valueCoding.code === 'study' ||
|
|
28
|
-
ext.valueCoding.code === 'sourceQueries'))));
|
|
29
|
-
const hasLaunchContextType = !!extension.extension?.find((ext) => ext.url === 'type' &&
|
|
30
|
-
ext.valueCode &&
|
|
31
|
-
(ext.valueCode === 'Patient' ||
|
|
32
|
-
ext.valueCode === 'Practitioner' ||
|
|
33
|
-
ext.valueCode === 'Encounter'));
|
|
20
|
+
!!extension.extension?.find((ext) => ext.url === 'name' && (ext.valueId || (ext.valueCoding && ext.valueCoding.code)));
|
|
21
|
+
const hasLaunchContextType = !!extension.extension?.find((ext) => ext.url === 'type' && ext.valueCode);
|
|
34
22
|
return (extension.url ===
|
|
35
23
|
'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-launchContext' &&
|
|
36
24
|
hasLaunchContextName &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populateContexts.js","sourceRoot":"","sources":["../../src/utils/populateContexts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,MAAM,oBAAoB,GACxB,SAAS,CAAC,GAAG;QACX,gFAAgF;QAClF,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CACzB,CAAC,GAAG,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"populateContexts.js","sourceRoot":"","sources":["../../src/utils/populateContexts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,MAAM,oBAAoB,GACxB,SAAS,CAAC,GAAG;QACX,gFAAgF;QAClF,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CACzB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAC1F,CAAC;IAEJ,MAAM,oBAAoB,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CACtD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS,CAC7C,CAAC;IAEF,OAAO,CACL,SAAS,CAAC,GAAG;QACX,gFAAgF;QAClF,oBAAoB;QACpB,oBAAoB,CACrB,CAAC;AACJ,CAAC"}
|
package/lib/utils/valueSet.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare function getValueSetCodings(valueSet: ValueSet): Coding[];
|
|
|
19
19
|
*/
|
|
20
20
|
export declare function evaluateAnswerExpressionValueSet(answerExpression: Expression, itemLevelVariables: Expression[], preprocessedCodings: Record<string, Coding[]>): Coding[];
|
|
21
21
|
export declare function createValueSetToXFhirQueryVariableNameMap(variables: Record<string, VariableXFhirQuery>): Record<string, string>;
|
|
22
|
-
export declare function getResourceFromLaunchContext(resourceType: FhirResourceString, patient: Patient | null, user: Practitioner | null, encounter: Encounter | null): FhirResource | null;
|
|
22
|
+
export declare function getResourceFromLaunchContext(resourceType: FhirResourceString, patient: Patient | null, user: Practitioner | null, encounter: Encounter | null, resolvedFhirContextReferences: Record<string, FhirResource> | null): FhirResource | null;
|
|
23
23
|
/**
|
|
24
24
|
* Retrieves the codings for a given answer value set URL.
|
|
25
25
|
*
|
package/lib/utils/valueSet.js
CHANGED
|
@@ -131,7 +131,7 @@ export function createValueSetToXFhirQueryVariableNameMap(variables) {
|
|
|
131
131
|
}
|
|
132
132
|
return valueSetToNameMap;
|
|
133
133
|
}
|
|
134
|
-
export function getResourceFromLaunchContext(resourceType, patient, user, encounter) {
|
|
134
|
+
export function getResourceFromLaunchContext(resourceType, patient, user, encounter, resolvedFhirContextReferences) {
|
|
135
135
|
switch (resourceType) {
|
|
136
136
|
case 'Patient':
|
|
137
137
|
return patient;
|
|
@@ -140,7 +140,7 @@ export function getResourceFromLaunchContext(resourceType, patient, user, encoun
|
|
|
140
140
|
case 'Encounter':
|
|
141
141
|
return encounter;
|
|
142
142
|
}
|
|
143
|
-
return null;
|
|
143
|
+
return resolvedFhirContextReferences?.[resourceType] ?? null;
|
|
144
144
|
}
|
|
145
145
|
/**
|
|
146
146
|
* Retrieves the codings for a given answer value set URL.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueSet.js","sourceRoot":"","sources":["../../src/utils/valueSet.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"valueSet.js","sourceRoot":"","sources":["../../src/utils/valueSet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aehrc/smart-forms-renderer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://github.com/aehrc/smart-forms#readme",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@aehrc/sdc-populate": "^4.
|
|
31
|
+
"@aehrc/sdc-populate": "^4.7.0",
|
|
32
32
|
"@aehrc/sdc-template-extract": "^1.0.15",
|
|
33
33
|
"@emotion/react": "^11.14.0",
|
|
34
34
|
"@emotion/styled": "^11.14.1",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"fast-equals": "^5.2.2",
|
|
46
46
|
"fhir-sdc-helpers": "^0.1.0",
|
|
47
47
|
"fhirclient": "^2.6.3",
|
|
48
|
-
"fhirpath": "
|
|
48
|
+
"fhirpath": "^4.5.0",
|
|
49
49
|
"html-react-parser": "4.2.10",
|
|
50
50
|
"js-base64": "^3.7.8",
|
|
51
51
|
"lodash.debounce": "^4.0.8",
|
|
@@ -98,7 +98,7 @@ function ChoiceAutocompleteField(props: ChoiceAutocompleteFieldsProps) {
|
|
|
98
98
|
textFieldWidth={textFieldWidth}
|
|
99
99
|
isTabled={isTabled}
|
|
100
100
|
size="small"
|
|
101
|
-
placeholder={entryFormat || displayPrompt}
|
|
101
|
+
placeholder={valueCoding ? undefined : entryFormat || displayPrompt}
|
|
102
102
|
slotProps={{
|
|
103
103
|
input: {
|
|
104
104
|
...params.InputProps,
|
|
@@ -124,7 +124,7 @@ function ChoiceSelectAnswerOptionFields(props: ChoiceSelectAnswerOptionFieldsPro
|
|
|
124
124
|
<StandardTextField
|
|
125
125
|
textFieldWidth={textFieldWidth}
|
|
126
126
|
isTabled={isTabled}
|
|
127
|
-
placeholder={entryFormat || displayPrompt}
|
|
127
|
+
placeholder={valueSelect ? undefined : entryFormat || displayPrompt}
|
|
128
128
|
{...params}
|
|
129
129
|
slotProps={{
|
|
130
130
|
input: {
|
|
@@ -88,7 +88,7 @@ function ChoiceSelectAnswerValueSetFields(props: ChoiceSelectAnswerValueSetField
|
|
|
88
88
|
multiline
|
|
89
89
|
textFieldWidth={textFieldWidth}
|
|
90
90
|
isTabled={isTabled}
|
|
91
|
-
placeholder={entryFormat || displayPrompt}
|
|
91
|
+
placeholder={valueCoding ? undefined : entryFormat || displayPrompt}
|
|
92
92
|
{...params}
|
|
93
93
|
slotProps={{
|
|
94
94
|
input: {
|
|
@@ -113,7 +113,12 @@ function GridRow(props: GridRowProps) {
|
|
|
113
113
|
<GridAnswerTableCell
|
|
114
114
|
key={colIndex}
|
|
115
115
|
calculatedWidth={calculatedColumnWidths[colIndex]?.width}>
|
|
116
|
-
<Box
|
|
116
|
+
<Box
|
|
117
|
+
display="flex"
|
|
118
|
+
alignItems="center"
|
|
119
|
+
justifyContent="center"
|
|
120
|
+
data-linkid={cellQItem.linkId}
|
|
121
|
+
data-label={cellQItem.text}>
|
|
117
122
|
<SingleItem
|
|
118
123
|
qItem={cellQItem}
|
|
119
124
|
qrItem={cellQrItem ?? null}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { styled } from '@mui/material/styles';
|
|
2
2
|
import Accordion from '@mui/material/Accordion';
|
|
3
3
|
|
|
4
|
-
export const
|
|
4
|
+
export const StyledGroupAccordion = styled(Accordion, {
|
|
5
5
|
shouldForwardProp: (prop) => prop !== 'elevation'
|
|
6
6
|
})<{ elevation: number }>(({ elevation }) => ({
|
|
7
7
|
paddingTop: '8px',
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import React, { useCallback, useState, useRef } from 'react';
|
|
19
|
+
import type { AccordionProps } from '@mui/material/Accordion';
|
|
20
|
+
import { StyledGroupAccordion } from './GroupAccordion.styles';
|
|
21
|
+
|
|
22
|
+
// Matches the MUI Accordion transition timeout used in GroupItemView/RepeatGroupView
|
|
23
|
+
const TRANSITION_DURATION_MS = 300;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Walk up the DOM to find the nearest element that actually scrolls.
|
|
27
|
+
* The page may not scroll on window — e.g. the smart-forms-app uses a styled
|
|
28
|
+
* `Main` div with `overflow: auto` as the scroll container.
|
|
29
|
+
*/
|
|
30
|
+
function findScrollContainer(el: HTMLElement): HTMLElement | null {
|
|
31
|
+
let node: HTMLElement | null = el.parentElement;
|
|
32
|
+
while (node) {
|
|
33
|
+
const { overflow, overflowY } = window.getComputedStyle(node);
|
|
34
|
+
if (
|
|
35
|
+
overflow === 'auto' ||
|
|
36
|
+
overflow === 'scroll' ||
|
|
37
|
+
overflowY === 'auto' ||
|
|
38
|
+
overflowY === 'scroll'
|
|
39
|
+
) {
|
|
40
|
+
return node;
|
|
41
|
+
}
|
|
42
|
+
node = node.parentElement;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
interface GroupAccordionProps extends Omit<AccordionProps, 'elevation'> {
|
|
48
|
+
elevation: number;
|
|
49
|
+
defaultExpanded?: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* GroupAccordion component.
|
|
54
|
+
*/
|
|
55
|
+
export function GroupAccordion(props: GroupAccordionProps) {
|
|
56
|
+
const { defaultExpanded = false, onChange, children, ...rest } = props;
|
|
57
|
+
|
|
58
|
+
const [expanded, setExpanded] = useState(defaultExpanded);
|
|
59
|
+
const accordionRef = useRef<HTMLDivElement>(null);
|
|
60
|
+
|
|
61
|
+
const handleChange = useCallback(
|
|
62
|
+
(event: React.SyntheticEvent, isExpanded: boolean) => {
|
|
63
|
+
// When the accordion expands, its content is mounted into the DOM (unmountOnExit).
|
|
64
|
+
// The browser's CSS scroll anchoring then adjusts the nearest scrollable ancestor's
|
|
65
|
+
// scrollTop every animation frame to keep anchor elements below the accordion in
|
|
66
|
+
// place — visually making the accordion header appear to jump upward.
|
|
67
|
+
//
|
|
68
|
+
// Fix: temporarily opt the scroll container out of scroll anchoring for the
|
|
69
|
+
// duration of the transition, then restore it.
|
|
70
|
+
const scrollContainer = accordionRef.current
|
|
71
|
+
? findScrollContainer(accordionRef.current)
|
|
72
|
+
: null;
|
|
73
|
+
if (scrollContainer) {
|
|
74
|
+
scrollContainer.style.overflowAnchor = 'none';
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
scrollContainer.style.overflowAnchor = '';
|
|
77
|
+
}, TRANSITION_DURATION_MS);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
setExpanded(isExpanded);
|
|
81
|
+
onChange?.(event, isExpanded);
|
|
82
|
+
},
|
|
83
|
+
[onChange]
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
return (
|
|
87
|
+
<StyledGroupAccordion ref={accordionRef} expanded={expanded} onChange={handleChange} {...rest}>
|
|
88
|
+
{children}
|
|
89
|
+
</StyledGroupAccordion>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export default GroupAccordion;
|
|
@@ -38,10 +38,10 @@ import AccordionDetails from '@mui/material/AccordionDetails';
|
|
|
38
38
|
import Divider from '@mui/material/Divider';
|
|
39
39
|
import { getGroupCollapsible } from '../../../utils/qItem';
|
|
40
40
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
41
|
-
import { GroupAccordion } from './GroupAccordion.styles';
|
|
42
41
|
import PageButtonsWrapper from './PageButtonWrapper';
|
|
43
42
|
import { useParseXhtml } from '../../../hooks/useParseXhtml';
|
|
44
43
|
import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
|
|
44
|
+
import GroupAccordion from './GroupAccordion';
|
|
45
45
|
|
|
46
46
|
interface GroupItemViewProps
|
|
47
47
|
extends PropsWithQrItemChangeHandler,
|
|
@@ -120,7 +120,7 @@ function OpenChoiceSelectAnswerOptionField(props: OpenChoiceSelectAnswerOptionFi
|
|
|
120
120
|
multiline
|
|
121
121
|
textFieldWidth={textFieldWidth}
|
|
122
122
|
isTabled={isTabled}
|
|
123
|
-
placeholder={entryFormat || displayPrompt}
|
|
123
|
+
placeholder={valueSelect ? undefined : entryFormat || displayPrompt}
|
|
124
124
|
{...params}
|
|
125
125
|
slotProps={{
|
|
126
126
|
input: {
|
|
@@ -33,13 +33,13 @@ import AddItemButton from './AddItemButton';
|
|
|
33
33
|
import type { RepeatGroupSingleModel } from '../../../interfaces/repeatGroup.interface';
|
|
34
34
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
35
35
|
import { getGroupCollapsible } from '../../../utils/qItem';
|
|
36
|
-
import { GroupAccordion } from '../GroupItem/GroupAccordion.styles';
|
|
37
36
|
import AccordionSummary from '@mui/material/AccordionSummary';
|
|
38
37
|
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
39
38
|
import AccordionDetails from '@mui/material/AccordionDetails';
|
|
40
39
|
import GroupHeading from '../GroupItem/GroupHeading';
|
|
41
40
|
import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
|
|
42
41
|
import { isGroupAddItemButtonHidden } from '../../../utils/extensions';
|
|
42
|
+
import GroupAccordion from '../GroupItem/GroupAccordion';
|
|
43
43
|
|
|
44
44
|
interface RepeatGroupViewProps
|
|
45
45
|
extends PropsWithParentIsReadOnlyAttribute,
|
|
@@ -36,7 +36,6 @@ import type { GroupTableRowModel } from '../../../interfaces/groupTable.interfac
|
|
|
36
36
|
import GroupTableBody from './GroupTableBody';
|
|
37
37
|
import { useQuestionnaireStore, useRendererConfigStore } from '../../../stores';
|
|
38
38
|
import { getGroupCollapsible } from '../../../utils/qItem';
|
|
39
|
-
import { GroupAccordion } from '../GroupItem/GroupAccordion.styles';
|
|
40
39
|
import AccordionSummary from '@mui/material/AccordionSummary';
|
|
41
40
|
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
42
41
|
import AccordionDetails from '@mui/material/AccordionDetails';
|
|
@@ -45,6 +44,7 @@ import { StandardCheckbox } from '../../Checkbox.styles';
|
|
|
45
44
|
import { Box } from '@mui/material';
|
|
46
45
|
import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
|
|
47
46
|
import { isGroupAddItemButtonHidden } from '../../../utils/extensions';
|
|
47
|
+
import GroupAccordion from '../GroupItem/GroupAccordion';
|
|
48
48
|
|
|
49
49
|
interface GroupTableViewProps
|
|
50
50
|
extends PropsWithIsRepeatedAttribute,
|
|
@@ -56,10 +56,11 @@ const FormBodySingleCollapsible = memo(function FormBodySingleCollapsible(
|
|
|
56
56
|
}}
|
|
57
57
|
data-linkid={qItem.linkId}
|
|
58
58
|
data-label={qItem.text}
|
|
59
|
+
data-test="renderer-accordion"
|
|
59
60
|
onChange={() => onToggleExpand(index)}>
|
|
60
61
|
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
|
61
62
|
<Box display="flex" alignItems="center" justifyContent="space-between" width="100%" mr={3}>
|
|
62
|
-
<Typography>{collapsibleLabel}</Typography>
|
|
63
|
+
<Typography component="h2">{collapsibleLabel}</Typography>
|
|
63
64
|
<Box display="flex" columnGap={0.5}>
|
|
64
65
|
{contextDisplayItems.map((item) => {
|
|
65
66
|
return <ContextDisplayItem key={item.linkId} displayItem={item} />;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import React, { useMemo } from 'react';
|
|
18
|
+
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
19
19
|
import { Grid } from '@mui/material';
|
|
20
20
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
21
21
|
import TabContext from '@mui/lab/TabContext';
|
|
@@ -45,6 +45,45 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
|
|
|
45
45
|
const currentTab = useQuestionnaireStore.use.currentTabIndex();
|
|
46
46
|
|
|
47
47
|
const tabListWidthOrResponsive = useRendererConfigStore.use.tabListWidthOrResponsive();
|
|
48
|
+
const tabListStickyTop = useRendererConfigStore.use.tabListStickyTop() ?? 0;
|
|
49
|
+
|
|
50
|
+
const tabListGridRef = useRef<HTMLDivElement>(null);
|
|
51
|
+
const [tabListMaxHeight, setTabListMaxHeight] = useState<string | undefined>();
|
|
52
|
+
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
const el = tabListGridRef.current;
|
|
55
|
+
if (!el) return;
|
|
56
|
+
|
|
57
|
+
// Walk up the DOM to find the nearest scrollable ancestor (the element that
|
|
58
|
+
// position:sticky sticks relative to). Measure available height directly from
|
|
59
|
+
// the DOM rather than using hardcoded offsets, so it works regardless of what
|
|
60
|
+
// containers the renderer is embedded in.
|
|
61
|
+
const getScrollContainer = (element: HTMLElement): HTMLElement | null => {
|
|
62
|
+
let parent = element.parentElement;
|
|
63
|
+
while (parent && parent !== document.documentElement) {
|
|
64
|
+
const { overflow, overflowY } = getComputedStyle(parent);
|
|
65
|
+
if (/auto|scroll/.test(overflow) || /auto|scroll/.test(overflowY)) return parent;
|
|
66
|
+
parent = parent.parentElement;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const scrollContainer = getScrollContainer(el);
|
|
72
|
+
|
|
73
|
+
const update = () => {
|
|
74
|
+
const containerBottom = scrollContainer
|
|
75
|
+
? scrollContainer.getBoundingClientRect().bottom
|
|
76
|
+
: window.innerHeight;
|
|
77
|
+
const elTop = el.getBoundingClientRect().top;
|
|
78
|
+
setTabListMaxHeight(`${Math.max(containerBottom - elTop, 0) - 16}px`);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
update();
|
|
82
|
+
window.addEventListener('resize', update, { passive: true });
|
|
83
|
+
return () => {
|
|
84
|
+
window.removeEventListener('resize', update);
|
|
85
|
+
};
|
|
86
|
+
}, []);
|
|
48
87
|
|
|
49
88
|
const indexMap: Record<string, number> = useMemo(
|
|
50
89
|
() => mapQItemsIndex(topLevelQItem),
|
|
@@ -69,10 +108,28 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
|
|
|
69
108
|
|
|
70
109
|
// If tabListWidthOrBreakpoints is a number, it is a fixed width of the tab list - set a fixed width and prevent shrinking
|
|
71
110
|
// If tabListWidthOrBreakpoints is an object, it is a MUI Breakpoints object
|
|
111
|
+
// position: sticky + alignSelf: flex-start keeps the tab list visible as the user scrolls the form body.
|
|
112
|
+
// tabListStickyTop should match the height of any sticky header in the consuming app so the tab list
|
|
113
|
+
// sticks immediately below it rather than sliding behind it.
|
|
72
114
|
const tabListWrapperProps: GridProps =
|
|
73
115
|
typeof tabListWidthOrResponsive === 'number'
|
|
74
|
-
? {
|
|
75
|
-
|
|
116
|
+
? {
|
|
117
|
+
sx: {
|
|
118
|
+
width: tabListWidthOrResponsive,
|
|
119
|
+
flexShrink: 0,
|
|
120
|
+
position: 'sticky',
|
|
121
|
+
top: tabListStickyTop,
|
|
122
|
+
alignSelf: 'flex-start'
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
: {
|
|
126
|
+
size: { ...tabListWidthOrResponsive.tabListBreakpoints },
|
|
127
|
+
sx: {
|
|
128
|
+
position: 'sticky',
|
|
129
|
+
top: tabListStickyTop,
|
|
130
|
+
alignSelf: 'flex-start'
|
|
131
|
+
}
|
|
132
|
+
};
|
|
76
133
|
|
|
77
134
|
const qItemTabPanelProps: GridProps =
|
|
78
135
|
typeof tabListWidthOrResponsive === 'number'
|
|
@@ -82,8 +139,13 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
|
|
|
82
139
|
return (
|
|
83
140
|
<Grid container spacing={1.5} sx={{ flexWrap: 'nowrap' }}>
|
|
84
141
|
<TabContext value={currentTab.toString()}>
|
|
85
|
-
<Grid {...tabListWrapperProps}>
|
|
86
|
-
<FormBodyTabListWrapper
|
|
142
|
+
<Grid ref={tabListGridRef} {...tabListWrapperProps}>
|
|
143
|
+
<FormBodyTabListWrapper
|
|
144
|
+
topLevelItems={qItems}
|
|
145
|
+
currentTabIndex={currentTab}
|
|
146
|
+
tabs={tabs}
|
|
147
|
+
maxHeight={tabListMaxHeight}
|
|
148
|
+
/>
|
|
87
149
|
</Grid>
|
|
88
150
|
|
|
89
151
|
<Grid {...qItemTabPanelProps}>
|