@aehrc/smart-forms-renderer 0.7.2 → 0.8.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/Alert.styles.d.ts +2 -7
- package/lib/components/Box.styles.d.ts +6 -21
- package/lib/components/FormComponents/BooleanItem/BooleanItem.d.ts +2 -2
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js +5 -4
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +6 -6
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.d.ts +12 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js +39 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +17 -29
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.d.ts +13 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js +42 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js.map +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +4 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +17 -24
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +3 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +8 -8
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.d.ts +12 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +27 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +14 -29
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.d.ts +14 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +42 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +14 -26
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +11 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +41 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +12 -27
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +13 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +42 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +13 -22
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/DateItem/DateItem.d.ts +2 -1
- package/lib/components/FormComponents/DateItem/DateItem.js +5 -4
- package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -1
- package/lib/components/FormComponents/DateItem/DatePicker.d.ts +2 -0
- package/lib/components/FormComponents/DateItem/DatePicker.js +42 -0
- package/lib/components/FormComponents/DateItem/DatePicker.js.map +1 -0
- package/lib/components/FormComponents/DateItem/DatePickerField.d.ts +8 -0
- package/{src/components/FormComponents/Typography.styles.ts → lib/components/FormComponents/DateItem/DatePickerField.js} +8 -9
- package/lib/components/FormComponents/DateItem/DatePickerField.js.map +1 -0
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +2 -2
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +5 -4
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -1
- package/lib/components/FormComponents/DecimalItem/DecimalItem.d.ts +2 -2
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js +5 -4
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +1 -0
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js +2 -2
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +2 -7
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js +2 -2
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +2 -2
- package/lib/components/FormComponents/GridGroup/GridGroup.js +6 -4
- package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.d.ts +2 -1
- package/lib/components/FormComponents/GridGroup/GridRow.js +2 -2
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridTable.d.ts +2 -1
- package/lib/components/FormComponents/GridGroup/GridTable.js +2 -2
- package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupHeading.d.ts +1 -0
- package/lib/components/FormComponents/GroupItem/GroupHeading.js +6 -5
- package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -3
- package/lib/components/FormComponents/GroupItem/GroupItem.js +5 -3
- package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.styles.d.ts +2 -6
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +12 -12
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/IntegerItem.d.ts +2 -2
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js +5 -4
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
- package/lib/components/FormComponents/Item.styles.d.ts +2 -6
- package/lib/components/FormComponents/Item.styles.js +2 -6
- package/lib/components/FormComponents/Item.styles.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +1 -0
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +3 -3
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +1 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js +4 -6
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +1 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +2 -2
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.d.ts +8 -0
- package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.js +37 -0
- package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/RadioButtons.d.ts +8 -0
- package/lib/components/FormComponents/ItemParts/RadioButtons.js +37 -0
- package/lib/components/FormComponents/ItemParts/RadioButtons.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.d.ts +8 -0
- package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.js +37 -0
- package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.js.map +1 -0
- package/lib/components/FormComponents/Lists.styles.d.ts +2 -9
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +21 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +48 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.d.ts +0 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.js +2 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.js.map +1 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +16 -39
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.d.ts +17 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js +42 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js.map +1 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +27 -39
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +6 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.d.ts +15 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js +29 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +10 -29
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +12 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +14 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.d.ts +0 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.js +2 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.js.map +1 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +23 -27
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +13 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +16 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -0
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +13 -18
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.d.ts +1 -0
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +2 -2
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +1 -0
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +2 -2
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +8 -6
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +5 -3
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/AddItemButton.d.ts +1 -0
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js +2 -2
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +1 -0
- package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js +2 -2
- package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +2 -2
- package/lib/components/FormComponents/RepeatItem/RepeatField.js +5 -3
- package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +2 -2
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js +6 -5
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +4 -18
- package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +2 -2
- package/lib/components/FormComponents/SingleItem/SingleItem.js +4 -2
- package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +12 -12
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/StringItem/StringItem.d.ts +2 -2
- package/lib/components/FormComponents/StringItem/StringItem.js +5 -4
- package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
- package/lib/components/FormComponents/Tables/AddItemButton.d.ts +8 -0
- package/lib/components/FormComponents/Tables/AddItemButton.js +28 -0
- package/lib/components/FormComponents/Tables/AddItemButton.js.map +1 -0
- package/lib/components/FormComponents/Tables/AddRowButton.d.ts +9 -0
- package/lib/components/FormComponents/Tables/AddRowButton.js +28 -0
- package/lib/components/FormComponents/Tables/AddRowButton.js.map +1 -0
- package/lib/components/FormComponents/Tables/DeleteRowButton.d.ts +1 -0
- package/lib/components/FormComponents/Tables/DeleteRowButton.js +2 -2
- package/lib/components/FormComponents/Tables/DeleteRowButton.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTable.d.ts +10 -0
- package/lib/components/FormComponents/Tables/GroupTable.js +110 -0
- package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -0
- package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +11 -0
- package/lib/components/FormComponents/Tables/GroupTableRow.js +46 -0
- package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -0
- package/lib/components/FormComponents/Tables/QItemGroupTable.js +5 -7
- package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -1
- package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +2 -2
- package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -1
- package/lib/components/FormComponents/Tables/index.d.ts +1 -1
- package/lib/components/FormComponents/Tables/index.js +1 -1
- package/lib/components/FormComponents/Tables/index.js.map +1 -1
- package/lib/components/FormComponents/TextItem/TextItem.d.ts +2 -2
- package/lib/components/FormComponents/TextItem/TextItem.js +5 -4
- package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
- package/lib/components/FormComponents/TimeItem/TimeItem.d.ts +2 -2
- package/lib/components/FormComponents/TimeItem/TimeItem.js +5 -4
- package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
- package/lib/components/FormComponents/UrlItem/UrlItem.d.ts +2 -2
- package/lib/components/FormComponents/UrlItem/UrlItem.js +5 -4
- package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
- package/lib/components/Lists.styles.d.ts +2 -9
- package/lib/components/Renderer/FormBodyTabbed.js +1 -1
- package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
- package/lib/components/Renderer/FormTopLevelItem.js +7 -5
- package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
- package/lib/components/Tabs/FormBodySingleTab.js +1 -1
- package/lib/components/Tabs/FormBodyTabList.d.ts +1 -0
- package/lib/components/Tabs/FormBodyTabList.js +3 -4
- package/lib/components/Tabs/FormBodyTabList.js.map +1 -1
- package/lib/components/Tabs/FormBodyTabListWrapper.d.ts +1 -1
- package/lib/components/Tabs/FormBodyTabListWrapper.js +6 -13
- package/lib/components/Tabs/FormBodyTabListWrapper.js.map +1 -1
- package/lib/components/Tabs/ShowCompletedTabsSection.d.ts +7 -0
- package/lib/components/Tabs/ShowCompletedTabsSection.js +34 -0
- package/lib/components/Tabs/ShowCompletedTabsSection.js.map +1 -0
- package/lib/hooks/useContextDisplayItems.d.ts +6 -0
- package/lib/hooks/useContextDisplayItems.js +30 -0
- package/lib/hooks/useContextDisplayItems.js.map +1 -0
- package/lib/hooks/useInitialiseRenderer.js +2 -2
- package/lib/hooks/useInitialiseRenderer.js.map +1 -1
- package/lib/hooks/useInitialiseRepeatGroups.d.ts +1 -1
- package/lib/hooks/useMinimalStringCalculatedExpression.d.ts +11 -0
- package/lib/hooks/useMinimalStringCalculatedExpression.js +37 -0
- package/lib/hooks/useMinimalStringCalculatedExpression.js.map +1 -0
- package/lib/hooks/useNumberInput.d.ts +1 -1
- package/lib/hooks/useNumberInput.js.map +1 -1
- package/lib/hooks/useReadOnly.d.ts +3 -0
- package/lib/hooks/useReadOnly.js +26 -0
- package/lib/hooks/useReadOnly.js.map +1 -0
- package/lib/hooks/useStringInput.d.ts +1 -1
- package/lib/hooks/useStringInput.js.map +1 -1
- package/lib/hooks/useTerminologyServerQuery.js +3 -6
- package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
- package/lib/interfaces/renderProps.interface.d.ts +6 -0
- package/lib/stores/useQuestionnaireResponseStore.d.ts +2 -1
- package/lib/stores/useQuestionnaireResponseStore.js +5 -3
- package/lib/stores/useQuestionnaireResponseStore.js.map +1 -1
- package/lib/theme/overrides/Typography.d.ts +13 -0
- package/lib/theme/overrides/Typography.js +31 -0
- package/lib/theme/overrides/Typography.js.map +1 -0
- package/lib/theme/typography.d.ts +0 -2
- package/lib/theme/typography.js +3 -5
- package/lib/theme/typography.js.map +1 -1
- package/lib/utils/calculatedExpression.d.ts +12 -0
- package/lib/utils/calculatedExpression.js +54 -8
- package/lib/utils/calculatedExpression.js.map +1 -1
- package/lib/utils/qrItem.d.ts +2 -3
- package/lib/utils/qrItem.js +2 -3
- package/lib/utils/qrItem.js.map +1 -1
- package/lib/utils/repopulateIntoResponse.d.ts +2 -2
- package/lib/utils/repopulateItems.js +0 -1
- package/lib/utils/repopulateItems.js.map +1 -1
- package/package.json +15 -15
- package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +8 -5
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +9 -7
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +85 -0
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +48 -60
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.tsx +79 -0
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +50 -52
- package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +24 -9
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +48 -0
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +32 -59
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +83 -0
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +37 -56
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +82 -0
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +30 -60
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +98 -0
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +33 -66
- package/src/components/FormComponents/DateItem/DateItem.tsx +8 -6
- package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +8 -6
- package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +7 -5
- package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +6 -2
- package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +2 -2
- package/src/components/FormComponents/GridGroup/GridGroup.tsx +13 -5
- package/src/components/FormComponents/GridGroup/GridRow.tsx +6 -2
- package/src/components/FormComponents/GridGroup/GridTable.tsx +6 -2
- package/src/components/FormComponents/GroupItem/GroupHeading.tsx +12 -6
- package/src/components/FormComponents/GroupItem/GroupItem.tsx +8 -2
- package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +31 -8
- package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +7 -5
- package/src/components/FormComponents/Item.styles.ts +2 -7
- package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +4 -3
- package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +10 -5
- package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +3 -2
- package/src/components/FormComponents/ItemParts/RadioAnswerOptionButtons.tsx +72 -0
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +137 -0
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +50 -99
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.tsx +112 -0
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +72 -80
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +17 -5
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +72 -0
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +23 -67
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +60 -0
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +50 -69
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +69 -0
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +33 -56
- package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +3 -2
- package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +3 -2
- package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +17 -9
- package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +13 -2
- package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +3 -2
- package/src/components/FormComponents/RepeatItem/DeleteItemButton.tsx +3 -2
- package/src/components/FormComponents/RepeatItem/RepeatField.tsx +21 -3
- package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +13 -6
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +12 -3
- package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +21 -3
- package/src/components/FormComponents/StringItem/StringItem.tsx +7 -5
- package/src/components/FormComponents/Tables/AddRowButton.tsx +50 -0
- package/src/components/FormComponents/Tables/DeleteRowButton.tsx +3 -2
- package/src/components/FormComponents/Tables/{QItemGroupTable.tsx → GroupTable.tsx} +22 -22
- package/src/components/FormComponents/Tables/{QItemGroupTableRow.tsx → GroupTableRow.tsx} +8 -4
- package/src/components/FormComponents/Tables/index.ts +1 -1
- package/src/components/FormComponents/TextItem/TextItem.tsx +7 -5
- package/src/components/FormComponents/TimeItem/TimeItem.tsx +8 -6
- package/src/components/FormComponents/UrlItem/UrlItem.tsx +7 -5
- package/src/components/Renderer/FormBodyTabbed.tsx +1 -1
- package/src/components/Renderer/FormTopLevelItem.tsx +9 -4
- package/src/components/Tabs/FormBodySingleTab.tsx +1 -1
- package/src/components/Tabs/FormBodyTabList.tsx +5 -8
- package/src/components/Tabs/FormBodyTabListWrapper.tsx +15 -26
- package/src/components/Tabs/ShowCompletedTabsSection.tsx +52 -0
- package/src/hooks/useContextDisplayItems.ts +40 -0
- package/src/hooks/useInitialiseRenderer.ts +2 -2
- package/src/hooks/useInitialiseRepeatGroups.ts +1 -1
- package/src/hooks/useNumberInput.ts +2 -1
- package/src/hooks/useReadOnly.ts +30 -0
- package/src/hooks/useStringInput.ts +2 -1
- package/src/hooks/useTerminologyServerQuery.ts +3 -6
- package/src/index.ts +2 -2
- package/src/interfaces/calculatedExpression.interface.ts +1 -1
- package/src/interfaces/renderProps.interface.ts +8 -0
- package/src/stores/useQuestionnaireResponseStore.ts +5 -4
- package/src/theme/typography.ts +3 -5
- package/src/utils/calculatedExpression.ts +68 -12
- package/src/utils/qrItem.ts +4 -3
- package/src/utils/repopulateIntoResponse.ts +2 -2
- package/src/utils/repopulateItems.ts +0 -1
|
@@ -15,56 +15,54 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import type { ChangeEvent } from 'react';
|
|
19
18
|
import React from 'react';
|
|
20
19
|
import Grid from '@mui/material/Grid';
|
|
21
|
-
import
|
|
22
|
-
import {
|
|
23
|
-
import type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
20
|
+
import type { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
|
|
21
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
24
22
|
import { findInAnswerValueSetCodings } from '../../../utils/choice';
|
|
25
|
-
import ChoiceRadioSingle from './ChoiceRadioSingle';
|
|
26
23
|
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
27
|
-
import { QRadioGroup } from '../Item.styles';
|
|
28
24
|
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
29
25
|
import useValueSetCodings from '../../../hooks/useValueSetCodings';
|
|
30
26
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
31
|
-
import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
|
|
32
27
|
import type {
|
|
33
28
|
PropsWithIsRepeatedAttribute,
|
|
29
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
34
30
|
PropsWithQrItemChangeHandler
|
|
35
31
|
} from '../../../interfaces/renderProps.interface';
|
|
36
|
-
import { StyledAlert } from '../../Alert.styles';
|
|
37
32
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
38
33
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
34
|
+
import ChoiceRadioAnswerValueSetFields from './ChoiceRadioAnswerValueSetFields';
|
|
35
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
39
36
|
|
|
40
37
|
interface ChoiceRadioAnswerValueSetItemProps
|
|
41
38
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
42
|
-
PropsWithIsRepeatedAttribute
|
|
39
|
+
PropsWithIsRepeatedAttribute,
|
|
40
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
43
41
|
qItem: QuestionnaireItem;
|
|
44
42
|
qrItem: QuestionnaireResponseItem;
|
|
45
43
|
orientation: ChoiceItemOrientation;
|
|
46
44
|
}
|
|
47
45
|
|
|
48
46
|
function ChoiceRadioAnswerValueSetItem(props: ChoiceRadioAnswerValueSetItemProps) {
|
|
49
|
-
const { qItem, qrItem, isRepeated,
|
|
47
|
+
const { qItem, qrItem, orientation, isRepeated, parentIsReadOnly, onQrItemChange } = props;
|
|
48
|
+
|
|
49
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
50
|
+
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
50
51
|
|
|
51
52
|
// Init input value
|
|
52
53
|
const qrChoiceRadio = qrItem ?? createEmptyQrItem(qItem);
|
|
53
54
|
|
|
54
|
-
let valueRadio: string |
|
|
55
|
+
let valueRadio: string | null = null;
|
|
55
56
|
if (qrChoiceRadio.answer) {
|
|
56
|
-
valueRadio = qrChoiceRadio.answer[0].valueCoding?.code;
|
|
57
|
+
valueRadio = qrChoiceRadio.answer[0].valueCoding?.code ?? null;
|
|
57
58
|
}
|
|
58
59
|
|
|
59
|
-
// Get additional rendering extensions
|
|
60
|
-
const { displayInstructions, readOnly } = useRenderingExtensions(qItem);
|
|
61
|
-
|
|
62
60
|
// Get codings/options from valueSet
|
|
63
61
|
const { codings, serverError } = useValueSetCodings(qItem);
|
|
64
62
|
|
|
65
|
-
function handleChange(
|
|
63
|
+
function handleChange(newValue: string) {
|
|
66
64
|
if (codings.length > 0) {
|
|
67
|
-
const qrAnswer = findInAnswerValueSetCodings(codings,
|
|
65
|
+
const qrAnswer = findInAnswerValueSetCodings(codings, newValue);
|
|
68
66
|
if (qrAnswer) {
|
|
69
67
|
onQrItemChange({
|
|
70
68
|
...createEmptyQrItem(qItem),
|
|
@@ -74,54 +72,37 @@ function ChoiceRadioAnswerValueSetItem(props: ChoiceRadioAnswerValueSetItemProps
|
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
74
|
|
|
77
|
-
const choiceRadio =
|
|
78
|
-
codings.length > 0 ? (
|
|
79
|
-
<QRadioGroup
|
|
80
|
-
row={orientation === ChoiceItemOrientation.Horizontal}
|
|
81
|
-
name={qItem.text}
|
|
82
|
-
id={qItem.id}
|
|
83
|
-
onChange={handleChange}
|
|
84
|
-
value={valueRadio ?? null}>
|
|
85
|
-
{codings.map((coding: Coding) => {
|
|
86
|
-
return (
|
|
87
|
-
<ChoiceRadioSingle
|
|
88
|
-
key={coding.code ?? ''}
|
|
89
|
-
value={coding.code ?? ''}
|
|
90
|
-
label={coding.display ?? `${coding.code}`}
|
|
91
|
-
readOnly={readOnly}
|
|
92
|
-
/>
|
|
93
|
-
);
|
|
94
|
-
})}
|
|
95
|
-
</QRadioGroup>
|
|
96
|
-
) : serverError ? (
|
|
97
|
-
<StyledAlert color="error">
|
|
98
|
-
<ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
|
|
99
|
-
<Typography variant="subtitle2">
|
|
100
|
-
There was an error fetching options from the terminology server
|
|
101
|
-
</Typography>
|
|
102
|
-
</StyledAlert>
|
|
103
|
-
) : (
|
|
104
|
-
<StyledAlert color="error">
|
|
105
|
-
<ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
|
|
106
|
-
<Typography variant="subtitle2">
|
|
107
|
-
Unable to fetch options from the questionnaire or launch context
|
|
108
|
-
</Typography>
|
|
109
|
-
</StyledAlert>
|
|
110
|
-
);
|
|
111
|
-
|
|
112
75
|
if (isRepeated) {
|
|
113
|
-
return
|
|
76
|
+
return (
|
|
77
|
+
<ChoiceRadioAnswerValueSetFields
|
|
78
|
+
qItem={qItem}
|
|
79
|
+
codings={codings}
|
|
80
|
+
valueRadio={valueRadio}
|
|
81
|
+
orientation={orientation}
|
|
82
|
+
readOnly={readOnly}
|
|
83
|
+
serverError={serverError}
|
|
84
|
+
onCheckedChange={handleChange}
|
|
85
|
+
/>
|
|
86
|
+
);
|
|
114
87
|
}
|
|
115
88
|
|
|
116
89
|
return (
|
|
117
90
|
<FullWidthFormComponentBox data-test="q-item-choice-radio-answer-value-set-box">
|
|
118
91
|
<Grid container columnSpacing={6}>
|
|
119
92
|
<Grid item xs={5}>
|
|
120
|
-
<LabelWrapper qItem={qItem} />
|
|
93
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
121
94
|
</Grid>
|
|
122
95
|
<Grid item xs={7}>
|
|
123
|
-
|
|
124
|
-
|
|
96
|
+
<ChoiceRadioAnswerValueSetFields
|
|
97
|
+
qItem={qItem}
|
|
98
|
+
codings={codings}
|
|
99
|
+
valueRadio={valueRadio}
|
|
100
|
+
orientation={orientation}
|
|
101
|
+
readOnly={readOnly}
|
|
102
|
+
serverError={serverError}
|
|
103
|
+
onCheckedChange={handleChange}
|
|
104
|
+
/>
|
|
105
|
+
<DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
|
|
125
106
|
</Grid>
|
|
126
107
|
</Grid>
|
|
127
108
|
</FullWidthFormComponentBox>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 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, { Fragment } from 'react';
|
|
19
|
+
import InputAdornment from '@mui/material/InputAdornment';
|
|
20
|
+
import MenuItem from '@mui/material/MenuItem';
|
|
21
|
+
import Select from '@mui/material/Select';
|
|
22
|
+
import type { QuestionnaireItem } from 'fhir/r4';
|
|
23
|
+
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
24
|
+
import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
|
|
25
|
+
|
|
26
|
+
interface ChoiceSelectAnswerOptionFieldsProps extends PropsWithIsTabledAttribute {
|
|
27
|
+
qItem: QuestionnaireItem;
|
|
28
|
+
valueSelect: string;
|
|
29
|
+
readOnly: boolean;
|
|
30
|
+
onSelectChange: (newValue: string) => void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function ChoiceSelectAnswerOptionFields(props: ChoiceSelectAnswerOptionFieldsProps) {
|
|
34
|
+
const { qItem, valueSelect, readOnly, isTabled, onSelectChange } = props;
|
|
35
|
+
|
|
36
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<Select
|
|
40
|
+
id={qItem.id}
|
|
41
|
+
name={qItem.text}
|
|
42
|
+
value={valueSelect}
|
|
43
|
+
disabled={readOnly}
|
|
44
|
+
fullWidth
|
|
45
|
+
placeholder={entryFormat}
|
|
46
|
+
label={displayPrompt}
|
|
47
|
+
endAdornment={<InputAdornment position={'end'}>{displayUnit}</InputAdornment>}
|
|
48
|
+
sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160 }}
|
|
49
|
+
size="small"
|
|
50
|
+
onChange={(e) => onSelectChange(e.target.value)}>
|
|
51
|
+
{qItem.answerOption?.map((option, index) => {
|
|
52
|
+
if (option['valueCoding']) {
|
|
53
|
+
return (
|
|
54
|
+
<MenuItem key={option.valueCoding.code} value={option.valueCoding.code}>
|
|
55
|
+
{option.valueCoding.display ?? option.valueCoding.code}
|
|
56
|
+
</MenuItem>
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (option['valueString']) {
|
|
61
|
+
return (
|
|
62
|
+
<MenuItem key={option.valueString} value={option.valueString}>
|
|
63
|
+
{option.valueString}
|
|
64
|
+
</MenuItem>
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (option['valueInteger']) {
|
|
69
|
+
return (
|
|
70
|
+
<MenuItem key={option.valueInteger} value={option.valueInteger.toString()}>
|
|
71
|
+
{option.valueInteger}
|
|
72
|
+
</MenuItem>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return <Fragment key={index} />;
|
|
77
|
+
})}
|
|
78
|
+
</Select>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export default ChoiceSelectAnswerOptionFields;
|
|
@@ -15,12 +15,8 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import React
|
|
18
|
+
import React from 'react';
|
|
19
19
|
import Grid from '@mui/material/Grid';
|
|
20
|
-
import InputAdornment from '@mui/material/InputAdornment';
|
|
21
|
-
import MenuItem from '@mui/material/MenuItem';
|
|
22
|
-
import type { SelectChangeEvent } from '@mui/material/Select';
|
|
23
|
-
import Select from '@mui/material/Select';
|
|
24
20
|
|
|
25
21
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
26
22
|
import { findInAnswerOptions, getQrChoiceValue } from '../../../utils/choice';
|
|
@@ -30,21 +26,28 @@ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
|
30
26
|
import type {
|
|
31
27
|
PropsWithIsRepeatedAttribute,
|
|
32
28
|
PropsWithIsTabledAttribute,
|
|
29
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
33
30
|
PropsWithQrItemChangeHandler
|
|
34
31
|
} from '../../../interfaces/renderProps.interface';
|
|
35
32
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
36
33
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
34
|
+
import ChoiceSelectAnswerOptionFields from './ChoiceSelectAnswerOptionFields';
|
|
35
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
37
36
|
|
|
38
37
|
interface ChoiceSelectAnswerOptionItemProps
|
|
39
38
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
40
39
|
PropsWithIsRepeatedAttribute,
|
|
41
|
-
PropsWithIsTabledAttribute
|
|
40
|
+
PropsWithIsTabledAttribute,
|
|
41
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
42
42
|
qItem: QuestionnaireItem;
|
|
43
43
|
qrItem: QuestionnaireResponseItem;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps) {
|
|
47
|
-
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
47
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
48
|
+
|
|
49
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
50
|
+
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
48
51
|
|
|
49
52
|
// Init input value
|
|
50
53
|
const qrChoiceSelect = qrItem ?? createEmptyQrItem(qItem);
|
|
@@ -53,14 +56,10 @@ function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps)
|
|
|
53
56
|
valueSelect = '';
|
|
54
57
|
}
|
|
55
58
|
|
|
56
|
-
// Get additional rendering extensions
|
|
57
|
-
const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =
|
|
58
|
-
useRenderingExtensions(qItem);
|
|
59
|
-
|
|
60
59
|
// Event handlers
|
|
61
|
-
function handleChange(
|
|
60
|
+
function handleChange(newValue: string) {
|
|
62
61
|
if (qItem.answerOption) {
|
|
63
|
-
const qrAnswer = findInAnswerOptions(qItem.answerOption,
|
|
62
|
+
const qrAnswer = findInAnswerOptions(qItem.answerOption, newValue);
|
|
64
63
|
if (qrAnswer) {
|
|
65
64
|
onQrItemChange({ ...createEmptyQrItem(qItem), answer: [qrAnswer] });
|
|
66
65
|
return;
|
|
@@ -69,62 +68,33 @@ function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps)
|
|
|
69
68
|
onQrItemChange(createEmptyQrItem(qItem));
|
|
70
69
|
}
|
|
71
70
|
|
|
72
|
-
const choiceSelectAnswerOption = (
|
|
73
|
-
<Select
|
|
74
|
-
id={qItem.id}
|
|
75
|
-
name={qItem.text}
|
|
76
|
-
value={valueSelect}
|
|
77
|
-
disabled={readOnly}
|
|
78
|
-
fullWidth
|
|
79
|
-
placeholder={entryFormat}
|
|
80
|
-
label={displayPrompt}
|
|
81
|
-
endAdornment={<InputAdornment position={'end'}>{displayUnit}</InputAdornment>}
|
|
82
|
-
sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160 }}
|
|
83
|
-
size="small"
|
|
84
|
-
onChange={handleChange}>
|
|
85
|
-
{qItem.answerOption?.map((option, index) => {
|
|
86
|
-
if (option['valueCoding']) {
|
|
87
|
-
return (
|
|
88
|
-
<MenuItem key={option.valueCoding.code} value={option.valueCoding.code}>
|
|
89
|
-
{option.valueCoding.display ?? option.valueCoding.code}
|
|
90
|
-
</MenuItem>
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (option['valueString']) {
|
|
95
|
-
return (
|
|
96
|
-
<MenuItem key={option.valueString} value={option.valueString}>
|
|
97
|
-
{option.valueString}
|
|
98
|
-
</MenuItem>
|
|
99
|
-
);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (option['valueInteger']) {
|
|
103
|
-
return (
|
|
104
|
-
<MenuItem key={option.valueInteger} value={option.valueInteger.toString()}>
|
|
105
|
-
{option.valueInteger}
|
|
106
|
-
</MenuItem>
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return <Fragment key={index} />;
|
|
111
|
-
})}
|
|
112
|
-
</Select>
|
|
113
|
-
);
|
|
114
|
-
|
|
115
71
|
if (isRepeated) {
|
|
116
|
-
return
|
|
72
|
+
return (
|
|
73
|
+
<ChoiceSelectAnswerOptionFields
|
|
74
|
+
qItem={qItem}
|
|
75
|
+
valueSelect={valueSelect}
|
|
76
|
+
readOnly={readOnly}
|
|
77
|
+
isTabled={isTabled}
|
|
78
|
+
onSelectChange={handleChange}
|
|
79
|
+
/>
|
|
80
|
+
);
|
|
117
81
|
}
|
|
118
82
|
|
|
119
83
|
return (
|
|
120
84
|
<FullWidthFormComponentBox data-test="q-item-choice-select-answer-option-box">
|
|
121
85
|
<Grid container columnSpacing={6}>
|
|
122
86
|
<Grid item xs={5}>
|
|
123
|
-
<LabelWrapper qItem={qItem} />
|
|
87
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
124
88
|
</Grid>
|
|
125
89
|
<Grid item xs={7}>
|
|
126
|
-
|
|
127
|
-
|
|
90
|
+
<ChoiceSelectAnswerOptionFields
|
|
91
|
+
qItem={qItem}
|
|
92
|
+
valueSelect={valueSelect}
|
|
93
|
+
readOnly={readOnly}
|
|
94
|
+
isTabled={isTabled}
|
|
95
|
+
onSelectChange={handleChange}
|
|
96
|
+
/>
|
|
97
|
+
<DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
|
|
128
98
|
</Grid>
|
|
129
99
|
</Grid>
|
|
130
100
|
</FullWidthFormComponentBox>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 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 from 'react';
|
|
19
|
+
import Autocomplete from '@mui/material/Autocomplete';
|
|
20
|
+
import { StandardTextField } from '../Textfield.styles';
|
|
21
|
+
import { StyledAlert } from '../../Alert.styles';
|
|
22
|
+
import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
|
|
23
|
+
import Typography from '@mui/material/Typography';
|
|
24
|
+
import type { Coding, QuestionnaireItem } from 'fhir/r4';
|
|
25
|
+
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
26
|
+
import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
|
|
27
|
+
|
|
28
|
+
interface ChoiceSelectAnswerValueSetFieldsProps extends PropsWithIsTabledAttribute {
|
|
29
|
+
qItem: QuestionnaireItem;
|
|
30
|
+
codings: Coding[];
|
|
31
|
+
valueCoding: Coding | null;
|
|
32
|
+
serverError: Error | null;
|
|
33
|
+
readOnly: boolean;
|
|
34
|
+
onSelectChange: (newValue: Coding | null) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function ChoiceSelectAnswerValueSetFields(props: ChoiceSelectAnswerValueSetFieldsProps) {
|
|
38
|
+
const { qItem, codings, valueCoding, serverError, readOnly, isTabled, onSelectChange } = props;
|
|
39
|
+
|
|
40
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
41
|
+
|
|
42
|
+
if (codings.length > 0) {
|
|
43
|
+
return (
|
|
44
|
+
<Autocomplete
|
|
45
|
+
id={qItem.id}
|
|
46
|
+
options={codings}
|
|
47
|
+
getOptionLabel={(option) => `${option.display}`}
|
|
48
|
+
value={valueCoding ?? null}
|
|
49
|
+
onChange={(_, newValue) => onSelectChange(newValue)}
|
|
50
|
+
openOnFocus
|
|
51
|
+
autoHighlight
|
|
52
|
+
sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}
|
|
53
|
+
size="small"
|
|
54
|
+
disabled={readOnly}
|
|
55
|
+
placeholder={entryFormat}
|
|
56
|
+
renderInput={(params) => (
|
|
57
|
+
<StandardTextField
|
|
58
|
+
isTabled={isTabled}
|
|
59
|
+
label={displayPrompt}
|
|
60
|
+
{...params}
|
|
61
|
+
InputProps={{
|
|
62
|
+
...params.InputProps,
|
|
63
|
+
endAdornment: (
|
|
64
|
+
<>
|
|
65
|
+
{params.InputProps.endAdornment}
|
|
66
|
+
{displayUnit}
|
|
67
|
+
</>
|
|
68
|
+
)
|
|
69
|
+
}}
|
|
70
|
+
data-test="q-item-choice-dropdown-answer-value-set-field"
|
|
71
|
+
/>
|
|
72
|
+
)}
|
|
73
|
+
/>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (serverError) {
|
|
78
|
+
return (
|
|
79
|
+
<StyledAlert color="error">
|
|
80
|
+
<ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
|
|
81
|
+
<Typography variant="subtitle2">
|
|
82
|
+
There was an error fetching options from the terminology server
|
|
83
|
+
</Typography>
|
|
84
|
+
</StyledAlert>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return (
|
|
89
|
+
<StyledAlert color="error">
|
|
90
|
+
<ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
|
|
91
|
+
<Typography variant="subtitle2">
|
|
92
|
+
Unable to fetch options from the questionnaire or launch context
|
|
93
|
+
</Typography>
|
|
94
|
+
</StyledAlert>
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export default ChoiceSelectAnswerValueSetFields;
|
|
@@ -15,50 +15,47 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import type { SyntheticEvent } from 'react';
|
|
19
18
|
import React, { useEffect, useMemo } from 'react';
|
|
20
|
-
import Autocomplete from '@mui/material/Autocomplete';
|
|
21
19
|
import Grid from '@mui/material/Grid';
|
|
22
|
-
import Typography from '@mui/material/Typography';
|
|
23
20
|
|
|
24
21
|
import type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
25
22
|
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
26
|
-
import { StandardTextField } from '../Textfield.styles';
|
|
27
23
|
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
28
24
|
import useValueSetCodings from '../../../hooks/useValueSetCodings';
|
|
29
25
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
30
|
-
import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
|
|
31
26
|
import type {
|
|
32
27
|
PropsWithIsRepeatedAttribute,
|
|
33
28
|
PropsWithIsTabledAttribute,
|
|
29
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
34
30
|
PropsWithQrItemChangeHandler
|
|
35
31
|
} from '../../../interfaces/renderProps.interface';
|
|
36
|
-
import { StyledAlert } from '../../Alert.styles';
|
|
37
32
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
38
33
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
34
|
+
import ChoiceSelectAnswerValueSetFields from './ChoiceSelectAnswerValueSetFields';
|
|
35
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
39
36
|
|
|
40
37
|
interface ChoiceSelectAnswerValueSetItemProps
|
|
41
38
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
42
39
|
PropsWithIsRepeatedAttribute,
|
|
43
|
-
PropsWithIsTabledAttribute
|
|
40
|
+
PropsWithIsTabledAttribute,
|
|
41
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
44
42
|
qItem: QuestionnaireItem;
|
|
45
43
|
qrItem: QuestionnaireResponseItem;
|
|
46
44
|
}
|
|
47
45
|
|
|
48
46
|
function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemProps) {
|
|
49
|
-
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
47
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
48
|
+
|
|
49
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
50
|
+
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
50
51
|
|
|
51
52
|
// Init input value
|
|
52
53
|
const qrChoiceSelect = qrItem ?? createEmptyQrItem(qItem);
|
|
53
|
-
let valueCoding: Coding |
|
|
54
|
+
let valueCoding: Coding | null = null;
|
|
54
55
|
if (qrChoiceSelect.answer) {
|
|
55
|
-
valueCoding = qrChoiceSelect.answer[0].valueCoding;
|
|
56
|
+
valueCoding = qrChoiceSelect.answer[0].valueCoding ?? null;
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
// Get additional rendering extensions
|
|
59
|
-
const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =
|
|
60
|
-
useRenderingExtensions(qItem);
|
|
61
|
-
|
|
62
59
|
// Get codings/options from valueSet
|
|
63
60
|
const { codings, serverError } = useValueSetCodings(qItem);
|
|
64
61
|
|
|
@@ -84,7 +81,7 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
84
81
|
);
|
|
85
82
|
|
|
86
83
|
// Event handlers
|
|
87
|
-
function handleChange(
|
|
84
|
+
function handleChange(newValue: Coding | null) {
|
|
88
85
|
if (newValue) {
|
|
89
86
|
onQrItemChange({
|
|
90
87
|
...createEmptyQrItem(qItem),
|
|
@@ -95,67 +92,37 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
95
92
|
onQrItemChange(createEmptyQrItem(qItem));
|
|
96
93
|
}
|
|
97
94
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}
|
|
109
|
-
size="small"
|
|
110
|
-
disabled={readOnly}
|
|
111
|
-
placeholder={entryFormat}
|
|
112
|
-
renderInput={(params) => (
|
|
113
|
-
<StandardTextField
|
|
114
|
-
isTabled={isTabled}
|
|
115
|
-
label={displayPrompt}
|
|
116
|
-
{...params}
|
|
117
|
-
InputProps={{
|
|
118
|
-
...params.InputProps,
|
|
119
|
-
endAdornment: (
|
|
120
|
-
<>
|
|
121
|
-
{params.InputProps.endAdornment}
|
|
122
|
-
{displayUnit}
|
|
123
|
-
</>
|
|
124
|
-
)
|
|
125
|
-
}}
|
|
126
|
-
data-test="q-item-choice-dropdown-answer-value-set-field"
|
|
127
|
-
/>
|
|
128
|
-
)}
|
|
95
|
+
if (isRepeated) {
|
|
96
|
+
return (
|
|
97
|
+
<ChoiceSelectAnswerValueSetFields
|
|
98
|
+
qItem={qItem}
|
|
99
|
+
codings={codings}
|
|
100
|
+
valueCoding={valueCoding}
|
|
101
|
+
serverError={serverError}
|
|
102
|
+
readOnly={readOnly}
|
|
103
|
+
isTabled={isTabled}
|
|
104
|
+
onSelectChange={handleChange}
|
|
129
105
|
/>
|
|
130
|
-
) : serverError ? (
|
|
131
|
-
<StyledAlert color="error">
|
|
132
|
-
<ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
|
|
133
|
-
<Typography variant="subtitle2">
|
|
134
|
-
There was an error fetching options from the terminology server
|
|
135
|
-
</Typography>
|
|
136
|
-
</StyledAlert>
|
|
137
|
-
) : (
|
|
138
|
-
<StyledAlert color="error">
|
|
139
|
-
<ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
|
|
140
|
-
<Typography variant="subtitle2">
|
|
141
|
-
Unable to fetch options from the questionnaire or launch context
|
|
142
|
-
</Typography>
|
|
143
|
-
</StyledAlert>
|
|
144
106
|
);
|
|
145
|
-
|
|
146
|
-
if (isRepeated) {
|
|
147
|
-
return <>{choiceSelectAnswerValueSet}</>;
|
|
148
107
|
}
|
|
149
108
|
|
|
150
109
|
return (
|
|
151
110
|
<FullWidthFormComponentBox data-test="q-item-choice-dropdown-answer-value-set-box">
|
|
152
111
|
<Grid container columnSpacing={6}>
|
|
153
112
|
<Grid item xs={5}>
|
|
154
|
-
<LabelWrapper qItem={qItem} />
|
|
113
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
155
114
|
</Grid>
|
|
156
115
|
<Grid item xs={7}>
|
|
157
|
-
|
|
158
|
-
|
|
116
|
+
<ChoiceSelectAnswerValueSetFields
|
|
117
|
+
qItem={qItem}
|
|
118
|
+
codings={codings}
|
|
119
|
+
valueCoding={valueCoding}
|
|
120
|
+
serverError={serverError}
|
|
121
|
+
readOnly={readOnly}
|
|
122
|
+
isTabled={isTabled}
|
|
123
|
+
onSelectChange={handleChange}
|
|
124
|
+
/>
|
|
125
|
+
<DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
|
|
159
126
|
</Grid>
|
|
160
127
|
</Grid>
|
|
161
128
|
</FullWidthFormComponentBox>
|
|
@@ -21,6 +21,7 @@ import type {
|
|
|
21
21
|
PropsWithIsTabledAttribute,
|
|
22
22
|
PropsWithQrItemChangeHandler
|
|
23
23
|
} from '../../../interfaces/renderProps.interface';
|
|
24
|
+
import type { PropsWithParentIsReadOnlyAttribute } from '../../../interfaces/renderProps.interface';
|
|
24
25
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
25
26
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
26
27
|
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
@@ -29,21 +30,22 @@ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
|
29
30
|
import DateField from './DateField';
|
|
30
31
|
import type { Dayjs } from 'dayjs';
|
|
31
32
|
import dayjs from 'dayjs';
|
|
33
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
32
34
|
|
|
33
35
|
interface DateItemProps
|
|
34
36
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
35
37
|
PropsWithIsRepeatedAttribute,
|
|
36
|
-
PropsWithIsTabledAttribute
|
|
38
|
+
PropsWithIsTabledAttribute,
|
|
39
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
37
40
|
qItem: QuestionnaireItem;
|
|
38
41
|
qrItem: QuestionnaireResponseItem;
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
function DateItem(props: DateItemProps) {
|
|
42
|
-
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
45
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
const { displayPrompt, displayInstructions,
|
|
46
|
-
useRenderingExtensions(qItem);
|
|
47
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
48
|
+
const { displayPrompt, displayInstructions, entryFormat } = useRenderingExtensions(qItem);
|
|
47
49
|
|
|
48
50
|
// Init input value
|
|
49
51
|
let dateString: string | null = null;
|
|
@@ -83,7 +85,7 @@ function DateItem(props: DateItemProps) {
|
|
|
83
85
|
|
|
84
86
|
return (
|
|
85
87
|
<FullWidthFormComponentBox data-test="q-item-date-box">
|
|
86
|
-
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
|
|
88
|
+
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
|
|
87
89
|
<DateField
|
|
88
90
|
value={dateDayJs}
|
|
89
91
|
displayPrompt={displayPrompt}
|