@aehrc/smart-forms-renderer 0.8.1 → 0.9.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/README.md +4 -2
- package/lib/components/FormComponents/BooleanItem/BooleanItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +12 -12
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +12 -12
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +3 -4
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/CustomDateItem/CustomDateField2.d.ts +18 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js +31 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateItem.d.ts +9 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js +68 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.d.ts +9 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js +75 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.d.ts +9 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js +75 -0
- package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.d.ts +18 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js +33 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.d.ts +11 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js +55 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.d.ts +9 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js +13 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.d.ts +5 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js +20 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.d.ts +5 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js +27 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.d.ts +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js +18 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.d.ts +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js +18 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.d.ts +9 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js +121 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.d.ts +9 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js +71 -0
- package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js.map +1 -0
- package/lib/components/FormComponents/CustomDateItem/index.d.ts +1 -0
- package/lib/components/FormComponents/CustomDateItem/index.js +18 -0
- package/lib/components/FormComponents/CustomDateItem/index.js.map +1 -0
- package/lib/components/FormComponents/DateItem/DateItem.d.ts +3 -4
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +2 -2
- package/lib/components/FormComponents/DecimalItem/DecimalItem.d.ts +2 -2
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js +2 -3
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayBox.d.ts +0 -0
- package/lib/components/FormComponents/DisplayItem/DisplayBox.js +2 -0
- package/lib/components/FormComponents/DisplayItem/DisplayBox.js.map +1 -0
- package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.d.ts +4 -0
- package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js +35 -0
- package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js.map +1 -0
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +2 -1
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js +0 -1
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +3 -3
- package/lib/components/FormComponents/GridGroup/GridGroup.js +13 -8
- package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.d.ts +3 -4
- package/lib/components/FormComponents/GridGroup/GridRow.js +3 -3
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridTable.d.ts +3 -3
- package/lib/components/FormComponents/GridGroup/GridTable.js +9 -4
- package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/index.d.ts +1 -0
- package/lib/components/FormComponents/GridGroup/index.js +18 -0
- package/lib/components/FormComponents/GridGroup/index.js.map +1 -0
- package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -2
- package/lib/components/FormComponents/GroupItem/GroupItem.js +2 -2
- package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.styles.d.ts +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +5 -6
- 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 +2 -3
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/SliderItem.d.ts +9 -0
- package/lib/components/FormComponents/IntegerItem/SliderItem.js +75 -0
- package/lib/components/FormComponents/IntegerItem/SliderItem.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +2 -2
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +2 -2
- package/lib/components/FormComponents/Lists.styles.d.ts +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +12 -12
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +15 -4
- 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 +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +3 -3
- package/lib/components/FormComponents/RepeatItem/RepeatField.js +3 -3
- package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +3 -2
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js +11 -2
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/index.d.ts +1 -0
- package/lib/components/FormComponents/RepeatItem/index.js +18 -0
- package/lib/components/FormComponents/RepeatItem/index.js.map +1 -0
- package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +3 -3
- package/lib/components/FormComponents/SingleItem/SingleItem.js +2 -2
- package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +3 -3
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +12 -7
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/SliderItem/DisplayBox.styles.d.ts +4 -0
- package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js +35 -0
- package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js.map +1 -0
- package/lib/components/FormComponents/SliderItem/Slider.styles.d.ts +6 -0
- package/lib/components/FormComponents/SliderItem/Slider.styles.js +33 -0
- package/lib/components/FormComponents/SliderItem/Slider.styles.js.map +1 -0
- package/lib/components/FormComponents/SliderItem/SliderDisplayValue.d.ts +8 -0
- package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js +28 -0
- package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js.map +1 -0
- package/lib/components/FormComponents/SliderItem/SliderField.d.ts +16 -0
- package/lib/components/FormComponents/SliderItem/SliderField.js +41 -0
- package/lib/components/FormComponents/SliderItem/SliderField.js.map +1 -0
- package/lib/components/FormComponents/SliderItem/SliderItem.d.ts +9 -0
- package/lib/components/FormComponents/SliderItem/SliderItem.js +56 -0
- package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -0
- package/lib/components/FormComponents/SliderItem/SliderLabels.d.ts +7 -0
- package/lib/components/FormComponents/SliderItem/SliderLabels.js +32 -0
- package/lib/components/FormComponents/SliderItem/SliderLabels.js.map +1 -0
- package/lib/components/FormComponents/StringItem/StringItem.d.ts +2 -2
- package/lib/components/FormComponents/Tables/GroupTable.d.ts +3 -2
- package/lib/components/FormComponents/Tables/GroupTable.js +18 -1
- package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +3 -4
- package/lib/components/FormComponents/Tables/GroupTableRow.js +3 -3
- package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
- package/lib/components/FormComponents/TextItem/TextItem.d.ts +2 -2
- package/lib/components/FormComponents/TimeItem/TimeItem.d.ts +2 -2
- package/lib/components/FormComponents/UrlItem/UrlItem.d.ts +2 -2
- package/lib/components/FormComponents/index.d.ts +3 -0
- package/lib/components/FormComponents/index.js +3 -0
- package/lib/components/FormComponents/index.js.map +1 -1
- package/lib/components/Lists.styles.d.ts +1 -1
- package/lib/components/Renderer/BaseRenderer.js +3 -5
- package/lib/components/Renderer/BaseRenderer.js.map +1 -1
- package/lib/components/Renderer/FormBodyCollapsible.d.ts +2 -2
- package/lib/components/Renderer/FormBodyCollapsible.js +6 -5
- package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
- package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.d.ts +2 -2
- package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js.map +1 -1
- package/lib/components/Renderer/FormBodyTabbed.d.ts +2 -2
- package/lib/components/Renderer/FormBodyTabbed.js +6 -5
- package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
- package/lib/components/Renderer/FormTopLevelItem.d.ts +2 -2
- package/lib/components/Renderer/FormTopLevelItem.js +3 -1
- package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
- package/lib/components/Renderer/SmartFormsRenderer.js +1 -1
- package/lib/components/Renderer/SmartFormsRenderer.js.map +1 -1
- package/lib/hooks/useDateSeparatorValidation.d.ts +2 -0
- package/lib/hooks/useDateSeparatorValidation.js +25 -0
- package/lib/hooks/useDateSeparatorValidation.js.map +1 -0
- package/lib/hooks/useDateValidation.d.ts +2 -0
- package/lib/hooks/useDateValidation.js +61 -0
- package/lib/hooks/useDateValidation.js.map +1 -0
- package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -1
- package/lib/hooks/useDecimalCalculatedExpression.js +3 -3
- package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -1
- package/lib/hooks/useInitialiseRepeatAnswers.d.ts +1 -1
- package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
- package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -1
- package/lib/hooks/useIntegerCalculatedExpression.js +3 -3
- package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -1
- package/lib/hooks/useSliderExtensions.d.ts +10 -0
- package/lib/hooks/useSliderExtensions.js +37 -0
- package/lib/hooks/useSliderExtensions.js.map +1 -0
- package/lib/hooks/useTerminologyServerQuery.js +0 -1
- package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +15 -6
- package/lib/index.js.map +1 -1
- package/lib/interfaces/index.d.ts +2 -0
- package/lib/interfaces/index.js +18 -0
- package/lib/interfaces/index.js.map +1 -0
- package/lib/interfaces/questionnaireStore.interface.d.ts +1 -0
- package/lib/interfaces/renderProps.interface.d.ts +4 -3
- package/lib/stores/useQuestionnaireStore.d.ts +1 -0
- package/lib/stores/useQuestionnaireStore.js +28 -12
- package/lib/stores/useQuestionnaireStore.js.map +1 -1
- package/lib/test.d.ts +4 -0
- package/lib/test.js +18 -0
- package/lib/test.js.map +1 -0
- package/lib/theme/customGlobalStyles.js +2 -5
- package/lib/theme/customGlobalStyles.js.map +1 -1
- package/lib/theme/typography.js +9 -9
- package/lib/theme/typography.js.map +1 -1
- package/lib/utils/calculatedExpression.d.ts +5 -1
- package/lib/utils/calculatedExpression.js +21 -16
- package/lib/utils/calculatedExpression.js.map +1 -1
- package/lib/utils/dayjsExtend.d.ts +1 -0
- package/lib/utils/dayjsExtend.js +22 -0
- package/lib/utils/dayjsExtend.js.map +1 -0
- package/lib/utils/enableWhenExpression.d.ts +5 -1
- package/lib/utils/enableWhenExpression.js +26 -21
- package/lib/utils/enableWhenExpression.js.map +1 -1
- package/lib/utils/fhirpath.d.ts +3 -1
- package/lib/utils/fhirpath.js +25 -15
- package/lib/utils/fhirpath.js.map +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +1 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/initialiseForm.d.ts +2 -0
- package/lib/utils/initialiseForm.js +13 -5
- package/lib/utils/initialiseForm.js.map +1 -1
- package/lib/utils/itemControl.d.ts +12 -0
- package/lib/utils/itemControl.js +30 -0
- package/lib/utils/itemControl.js.map +1 -1
- package/lib/utils/launchContext.d.ts +0 -0
- package/lib/utils/launchContext.js +2 -0
- package/lib/utils/launchContext.js.map +1 -0
- package/lib/utils/mapItem.d.ts +1 -1
- package/lib/utils/populateContexts.d.ts +2 -12
- package/lib/utils/populateContexts.js +0 -36
- package/lib/utils/populateContexts.js.map +1 -1
- package/lib/utils/qrItem.d.ts +1 -7
- package/lib/utils/qrItem.js +1 -12
- package/lib/utils/qrItem.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -2
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
- package/lib/utils/removeHidden.js +2 -1
- package/lib/utils/removeHidden.js.map +1 -1
- package/lib/utils/repopulateIntoResponse.js +90 -29
- package/lib/utils/repopulateIntoResponse.js.map +1 -1
- package/lib/utils/repopulateItems.d.ts +14 -1
- package/lib/utils/repopulateItems.js +251 -70
- package/lib/utils/repopulateItems.js.map +1 -1
- package/lib/utils/repopulateRepeatGroup.js +9 -1
- package/lib/utils/repopulateRepeatGroup.js.map +1 -1
- package/lib/utils/slider.d.ts +28 -0
- package/lib/utils/slider.js +89 -0
- package/lib/utils/slider.js.map +1 -0
- package/package.json +18 -15
- package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +2 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +2 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +33 -33
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +35 -35
- package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +8 -8
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +2 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +2 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +2 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +2 -2
- package/src/components/FormComponents/CustomDateItem/CustomDateItem.tsx +140 -0
- package/src/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.tsx +96 -0
- package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.tsx +81 -0
- package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.tsx +33 -0
- package/src/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.ts +22 -0
- package/src/components/FormComponents/CustomDateItem/customDateTimePicker/index.ts +18 -0
- package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.ts +18 -0
- package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.ts +154 -0
- package/src/components/FormComponents/CustomDateItem/index.ts +18 -0
- package/src/components/FormComponents/DateItem/DateItem.tsx +3 -3
- package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +2 -2
- package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +4 -5
- package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +0 -1
- package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +2 -1
- package/src/components/FormComponents/GridGroup/GridGroup.tsx +41 -15
- package/src/components/FormComponents/GridGroup/GridRow.tsx +10 -9
- package/src/components/FormComponents/GridGroup/GridTable.tsx +29 -9
- package/src/components/FormComponents/GridGroup/index.ts +18 -0
- package/src/components/FormComponents/GroupItem/GroupItem.tsx +5 -6
- package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +7 -8
- package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +4 -5
- package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +2 -2
- package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +2 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +2 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +43 -43
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +6 -6
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +2 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +2 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +2 -2
- package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +49 -6
- package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +13 -8
- package/src/components/FormComponents/RepeatItem/RepeatField.tsx +15 -9
- package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +33 -3
- package/src/components/FormComponents/RepeatItem/index.ts +18 -0
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +6 -6
- package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +27 -11
- package/src/components/FormComponents/SliderItem/Slider.styles.ts +34 -0
- package/src/components/FormComponents/SliderItem/SliderDisplayValue.tsx +43 -0
- package/src/components/FormComponents/SliderItem/SliderField.tsx +88 -0
- package/src/components/FormComponents/SliderItem/SliderItem.tsx +115 -0
- package/src/components/FormComponents/SliderItem/SliderLabels.tsx +53 -0
- package/src/components/FormComponents/StringItem/StringItem.tsx +2 -2
- package/src/components/FormComponents/Tables/GroupTable.tsx +55 -3
- package/src/components/FormComponents/Tables/GroupTableRow.tsx +10 -9
- package/src/components/FormComponents/TextItem/TextItem.tsx +2 -2
- package/src/components/FormComponents/TimeItem/TimeItem.tsx +2 -2
- package/src/components/FormComponents/UrlItem/UrlItem.tsx +2 -2
- package/src/components/FormComponents/index.ts +3 -0
- package/src/components/Renderer/BaseRenderer.tsx +5 -12
- package/src/components/Renderer/FormBodyCollapsible.tsx +9 -7
- package/src/components/Renderer/FormBodySingleCollapsibleWrapper.tsx +2 -3
- package/src/components/Renderer/FormBodyTabbed.tsx +9 -7
- package/src/components/Renderer/FormTopLevelItem.tsx +14 -11
- package/src/components/Renderer/SmartFormsRenderer.tsx +2 -1
- package/src/hooks/useDateValidation.tsx +79 -0
- package/src/hooks/useDecimalCalculatedExpression.ts +3 -4
- package/src/hooks/useInitialiseRepeatAnswers.ts +1 -1
- package/src/hooks/useIntegerCalculatedExpression.ts +3 -4
- package/src/hooks/useSliderExtensions.ts +50 -0
- package/src/hooks/useTerminologyServerQuery.ts +0 -2
- package/src/index.ts +12 -9
- package/src/interfaces/questionnaireStore.interface.ts +1 -0
- package/src/interfaces/renderProps.interface.ts +4 -3
- package/src/stores/useQuestionnaireStore.ts +39 -16
- package/src/theme/customGlobalStyles.tsx +2 -5
- package/src/theme/typography.ts +9 -9
- package/src/utils/calculatedExpression.ts +41 -28
- package/src/utils/dayjsExtend.ts +23 -0
- package/src/utils/enableWhenExpression.ts +49 -34
- package/src/utils/fhirpath.ts +50 -31
- package/src/utils/index.ts +1 -0
- package/src/utils/initialiseForm.ts +15 -5
- package/src/utils/itemControl.ts +32 -0
- package/src/utils/mapItem.ts +1 -1
- package/src/utils/populateContexts.ts +2 -61
- package/src/utils/qrItem.ts +1 -16
- package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +4 -2
- package/src/utils/removeHidden.ts +2 -1
- package/src/utils/repopulateIntoResponse.ts +134 -43
- package/src/utils/repopulateItems.ts +379 -101
- package/src/utils/slider.ts +112 -0
- package/src/utils/populateInputParams.ts +0 -242
- package/src/utils/repopulateRepeatGroup.ts +0 -68
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
import React, { useState } from 'react';
|
|
19
19
|
import type {
|
|
20
20
|
PropsWithParentIsReadOnlyAttribute,
|
|
21
|
-
PropsWithQrRepeatGroupChangeHandler
|
|
21
|
+
PropsWithQrRepeatGroupChangeHandler,
|
|
22
|
+
PropsWithShowMinimalViewAttribute
|
|
22
23
|
} from '../../../interfaces/renderProps.interface';
|
|
23
24
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
24
25
|
import useInitialiseRepeatGroups from '../../../hooks/useInitialiseRepeatGroups';
|
|
@@ -38,6 +39,7 @@ import Typography from '@mui/material/Typography';
|
|
|
38
39
|
|
|
39
40
|
interface RepeatGroupProps
|
|
40
41
|
extends PropsWithQrRepeatGroupChangeHandler,
|
|
42
|
+
PropsWithShowMinimalViewAttribute,
|
|
41
43
|
PropsWithParentIsReadOnlyAttribute {
|
|
42
44
|
qItem: QuestionnaireItem;
|
|
43
45
|
qrItems: QuestionnaireResponseItem[];
|
|
@@ -45,7 +47,14 @@ interface RepeatGroupProps
|
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
function RepeatGroup(props: RepeatGroupProps) {
|
|
48
|
-
const {
|
|
50
|
+
const {
|
|
51
|
+
qItem,
|
|
52
|
+
qrItems,
|
|
53
|
+
groupCardElevation,
|
|
54
|
+
showMinimalView,
|
|
55
|
+
parentIsReadOnly,
|
|
56
|
+
onQrRepeatGroupChange
|
|
57
|
+
} = props;
|
|
49
58
|
|
|
50
59
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
51
60
|
|
|
@@ -97,13 +106,47 @@ function RepeatGroup(props: RepeatGroupProps) {
|
|
|
97
106
|
]);
|
|
98
107
|
}
|
|
99
108
|
|
|
109
|
+
if (showMinimalView) {
|
|
110
|
+
return (
|
|
111
|
+
<QGroupContainerBox key={qItem.linkId} cardElevation={groupCardElevation} isRepeated={true}>
|
|
112
|
+
<Card elevation={groupCardElevation} sx={{ p: 2 }}>
|
|
113
|
+
{repeatGroups.map(({ nanoId, qrItem: nullableQrItem }, index) => {
|
|
114
|
+
const answeredQrItem = createEmptyQrItem(qItem);
|
|
115
|
+
if (nullableQrItem) {
|
|
116
|
+
answeredQrItem.item = nullableQrItem.item;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return (
|
|
120
|
+
<RepeatGroupItem
|
|
121
|
+
key={nanoId}
|
|
122
|
+
qItem={qItem}
|
|
123
|
+
answeredQrItem={answeredQrItem}
|
|
124
|
+
nullableQrItem={nullableQrItem}
|
|
125
|
+
numOfRepeatGroups={repeatGroups.length}
|
|
126
|
+
groupCardElevation={groupCardElevation + 1}
|
|
127
|
+
showMinimalView={showMinimalView}
|
|
128
|
+
parentIsReadOnly={parentIsReadOnly}
|
|
129
|
+
onDeleteItem={() => handleDeleteItem(index)}
|
|
130
|
+
onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
|
|
131
|
+
/>
|
|
132
|
+
);
|
|
133
|
+
})}
|
|
134
|
+
</Card>
|
|
135
|
+
</QGroupContainerBox>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
100
139
|
return (
|
|
101
140
|
<QGroupContainerBox key={qItem.linkId} cardElevation={groupCardElevation} isRepeated={true}>
|
|
102
141
|
<Card elevation={groupCardElevation} sx={{ p: 3, py: 2.5, mb: 3.5 }}>
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
142
|
+
{qItem.text ? (
|
|
143
|
+
<>
|
|
144
|
+
<Typography variant="h6" color={readOnly ? 'text.secondary' : 'text.primary'}>
|
|
145
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
146
|
+
</Typography>
|
|
147
|
+
<Divider sx={{ mt: 1, mb: 1.5 }} light />
|
|
148
|
+
</>
|
|
149
|
+
) : null}
|
|
107
150
|
<TransitionGroup>
|
|
108
151
|
{repeatGroups.map(({ nanoId, qrItem: nullableQrItem }, index) => {
|
|
109
152
|
const answeredQrItem = createEmptyQrItem(qItem);
|
|
@@ -21,14 +21,16 @@ import Box from '@mui/material/Box';
|
|
|
21
21
|
import GroupItem from '../GroupItem/GroupItem';
|
|
22
22
|
import type {
|
|
23
23
|
PropsWithParentIsReadOnlyAttribute,
|
|
24
|
-
PropsWithQrItemChangeHandler
|
|
24
|
+
PropsWithQrItemChangeHandler,
|
|
25
|
+
PropsWithShowMinimalViewAttribute
|
|
25
26
|
} from '../../../interfaces/renderProps.interface';
|
|
26
27
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
27
28
|
import DeleteItemButton from './DeleteItemButton';
|
|
28
29
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
29
30
|
|
|
30
31
|
interface RepeatGroupItemProps
|
|
31
|
-
extends PropsWithQrItemChangeHandler
|
|
32
|
+
extends PropsWithQrItemChangeHandler,
|
|
33
|
+
PropsWithShowMinimalViewAttribute,
|
|
32
34
|
PropsWithParentIsReadOnlyAttribute {
|
|
33
35
|
qItem: QuestionnaireItem;
|
|
34
36
|
answeredQrItem: QuestionnaireResponseItem;
|
|
@@ -45,6 +47,7 @@ function RepeatGroupItem(props: RepeatGroupItemProps) {
|
|
|
45
47
|
nullableQrItem,
|
|
46
48
|
numOfRepeatGroups,
|
|
47
49
|
groupCardElevation,
|
|
50
|
+
showMinimalView,
|
|
48
51
|
parentIsReadOnly,
|
|
49
52
|
onDeleteItem,
|
|
50
53
|
onQrItemChange
|
|
@@ -64,12 +67,14 @@ function RepeatGroupItem(props: RepeatGroupItemProps) {
|
|
|
64
67
|
onQrItemChange={onQrItemChange}
|
|
65
68
|
/>
|
|
66
69
|
</Box>
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
{showMinimalView ? null : (
|
|
71
|
+
<DeleteItemButton
|
|
72
|
+
nullableQrItem={nullableQrItem}
|
|
73
|
+
numOfRepeatGroups={numOfRepeatGroups}
|
|
74
|
+
readOnly={readOnly}
|
|
75
|
+
onDeleteItem={onDeleteItem}
|
|
76
|
+
/>
|
|
77
|
+
)}
|
|
73
78
|
</RepeatGroupContainerStack>
|
|
74
79
|
);
|
|
75
80
|
}
|
|
@@ -26,16 +26,18 @@ import type {
|
|
|
26
26
|
} from 'fhir/r4';
|
|
27
27
|
import type {
|
|
28
28
|
PropsWithParentIsReadOnlyAttribute,
|
|
29
|
-
PropsWithQrItemChangeHandler
|
|
29
|
+
PropsWithQrItemChangeHandler,
|
|
30
|
+
PropsWithShowMinimalViewAttribute
|
|
30
31
|
} from '../../../interfaces/renderProps.interface';
|
|
31
32
|
import DeleteItemButton from './DeleteItemButton';
|
|
32
33
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
33
34
|
|
|
34
35
|
interface RepeatFieldProps
|
|
35
|
-
extends PropsWithQrItemChangeHandler
|
|
36
|
+
extends PropsWithQrItemChangeHandler,
|
|
37
|
+
PropsWithShowMinimalViewAttribute,
|
|
36
38
|
PropsWithParentIsReadOnlyAttribute {
|
|
37
39
|
qItem: QuestionnaireItem;
|
|
38
|
-
qrItem: QuestionnaireResponseItem;
|
|
40
|
+
qrItem: QuestionnaireResponseItem | null;
|
|
39
41
|
answer: QuestionnaireResponseItemAnswer | null;
|
|
40
42
|
numOfRepeatAnswers: number;
|
|
41
43
|
onDeleteAnswer: () => void;
|
|
@@ -48,6 +50,7 @@ function RepeatField(props: RepeatFieldProps) {
|
|
|
48
50
|
answer,
|
|
49
51
|
numOfRepeatAnswers,
|
|
50
52
|
parentIsReadOnly,
|
|
53
|
+
showMinimalView,
|
|
51
54
|
onDeleteAnswer,
|
|
52
55
|
onQrItemChange
|
|
53
56
|
} = props;
|
|
@@ -62,16 +65,19 @@ function RepeatField(props: RepeatFieldProps) {
|
|
|
62
65
|
qrItem={qrItem}
|
|
63
66
|
isRepeated={qItem.repeats ?? false}
|
|
64
67
|
isTabled={false}
|
|
68
|
+
showMinimalView={showMinimalView}
|
|
65
69
|
parentIsReadOnly={parentIsReadOnly}
|
|
66
70
|
onQrItemChange={onQrItemChange}
|
|
67
71
|
/>
|
|
68
72
|
</Box>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
{showMinimalView ? null : (
|
|
74
|
+
<DeleteItemButton
|
|
75
|
+
answer={answer}
|
|
76
|
+
numOfRepeatAnswers={numOfRepeatAnswers}
|
|
77
|
+
readOnly={readOnly}
|
|
78
|
+
onDeleteAnswer={onDeleteAnswer}
|
|
79
|
+
/>
|
|
80
|
+
)}
|
|
75
81
|
</RepeatItemContainerStack>
|
|
76
82
|
);
|
|
77
83
|
}
|
|
@@ -20,6 +20,7 @@ import type {
|
|
|
20
20
|
PropsWithParentIsReadOnlyAttribute,
|
|
21
21
|
PropsWithQrItemChangeHandler
|
|
22
22
|
} from '../../../interfaces/renderProps.interface';
|
|
23
|
+
import type { PropsWithShowMinimalViewAttribute } from '../../../interfaces/renderProps.interface';
|
|
23
24
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
24
25
|
import { nanoid } from 'nanoid';
|
|
25
26
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
@@ -34,14 +35,15 @@ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
|
34
35
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
35
36
|
|
|
36
37
|
interface RepeatItemProps
|
|
37
|
-
extends PropsWithQrItemChangeHandler
|
|
38
|
+
extends PropsWithQrItemChangeHandler,
|
|
39
|
+
PropsWithShowMinimalViewAttribute,
|
|
38
40
|
PropsWithParentIsReadOnlyAttribute {
|
|
39
41
|
qItem: QuestionnaireItem;
|
|
40
|
-
qrItem: QuestionnaireResponseItem;
|
|
42
|
+
qrItem: QuestionnaireResponseItem | null;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
function RepeatItem(props: RepeatItemProps) {
|
|
44
|
-
const { qItem, qrItem, parentIsReadOnly, onQrItemChange } = props;
|
|
46
|
+
const { qItem, qrItem, showMinimalView, parentIsReadOnly, onQrItemChange } = props;
|
|
45
47
|
|
|
46
48
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
47
49
|
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
@@ -88,6 +90,33 @@ function RepeatItem(props: RepeatItemProps) {
|
|
|
88
90
|
]);
|
|
89
91
|
}
|
|
90
92
|
|
|
93
|
+
if (showMinimalView) {
|
|
94
|
+
return (
|
|
95
|
+
<>
|
|
96
|
+
{repeatAnswers.map(({ nanoId, answer }, index) => {
|
|
97
|
+
const repeatAnswerQrItem = createEmptyQrItem(qItem);
|
|
98
|
+
if (answer) {
|
|
99
|
+
repeatAnswerQrItem.answer = [answer];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return (
|
|
103
|
+
<RepeatField
|
|
104
|
+
key={nanoId}
|
|
105
|
+
qItem={qItem}
|
|
106
|
+
qrItem={repeatAnswerQrItem}
|
|
107
|
+
answer={answer}
|
|
108
|
+
numOfRepeatAnswers={repeatAnswers.length}
|
|
109
|
+
parentIsReadOnly={parentIsReadOnly}
|
|
110
|
+
showMinimalView={showMinimalView}
|
|
111
|
+
onDeleteAnswer={() => handleDeleteItem(index)}
|
|
112
|
+
onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
|
|
113
|
+
/>
|
|
114
|
+
);
|
|
115
|
+
})}
|
|
116
|
+
</>
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
91
120
|
return (
|
|
92
121
|
<FullWidthFormComponentBox data-test="q-item-repeat-box">
|
|
93
122
|
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
|
|
@@ -106,6 +135,7 @@ function RepeatItem(props: RepeatItemProps) {
|
|
|
106
135
|
answer={answer}
|
|
107
136
|
numOfRepeatAnswers={repeatAnswers.length}
|
|
108
137
|
parentIsReadOnly={parentIsReadOnly}
|
|
138
|
+
showMinimalView={showMinimalView}
|
|
109
139
|
onDeleteAnswer={() => handleDeleteItem(index)}
|
|
110
140
|
onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
|
|
111
141
|
/>
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
export { default as RepeatItem } from './RepeatItem';
|
|
@@ -22,7 +22,7 @@ import type {
|
|
|
22
22
|
PropsWithIsTabledAttribute,
|
|
23
23
|
PropsWithParentIsReadOnlyAttribute,
|
|
24
24
|
PropsWithQrItemChangeHandler,
|
|
25
|
-
|
|
25
|
+
PropsWithShowMinimalViewAttribute
|
|
26
26
|
} from '../../../interfaces/renderProps.interface';
|
|
27
27
|
import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
|
|
28
28
|
import SingleItemSwitcher from './SingleItemSwitcher';
|
|
@@ -30,17 +30,17 @@ import useHidden from '../../../hooks/useHidden';
|
|
|
30
30
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
31
31
|
|
|
32
32
|
interface SingleItemProps
|
|
33
|
-
extends PropsWithQrItemChangeHandler
|
|
33
|
+
extends PropsWithQrItemChangeHandler,
|
|
34
34
|
PropsWithIsRepeatedAttribute,
|
|
35
35
|
PropsWithIsTabledAttribute,
|
|
36
|
-
|
|
36
|
+
PropsWithShowMinimalViewAttribute,
|
|
37
37
|
PropsWithParentIsReadOnlyAttribute {
|
|
38
38
|
qItem: QuestionnaireItem;
|
|
39
|
-
qrItem: QuestionnaireResponseItem;
|
|
39
|
+
qrItem: QuestionnaireResponseItem | null;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
function SingleItem(props: SingleItemProps) {
|
|
43
|
-
const { qItem, qrItem, isRepeated, isTabled,
|
|
43
|
+
const { qItem, qrItem, isRepeated, isTabled, showMinimalView, parentIsReadOnly, onQrItemChange } =
|
|
44
44
|
props;
|
|
45
45
|
|
|
46
46
|
const updateEnableWhenItem = useQuestionnaireStore((state) => state.updateEnableWhenItem);
|
|
@@ -67,7 +67,7 @@ function SingleItem(props: SingleItemProps) {
|
|
|
67
67
|
qrItem={qrItem}
|
|
68
68
|
isRepeated={isRepeated}
|
|
69
69
|
isTabled={isTabled}
|
|
70
|
-
|
|
70
|
+
showMinimalView={showMinimalView}
|
|
71
71
|
parentIsReadOnly={readOnly}
|
|
72
72
|
onQrItemChange={handleQrItemChange}
|
|
73
73
|
/>
|
|
@@ -25,31 +25,33 @@ import type {
|
|
|
25
25
|
PropsWithIsTabledAttribute,
|
|
26
26
|
PropsWithParentIsReadOnlyAttribute,
|
|
27
27
|
PropsWithQrItemChangeHandler,
|
|
28
|
-
|
|
28
|
+
PropsWithShowMinimalViewAttribute
|
|
29
29
|
} from '../../../interfaces/renderProps.interface';
|
|
30
30
|
import StringItem from '../StringItem/StringItem';
|
|
31
31
|
import BooleanItem from '../BooleanItem/BooleanItem';
|
|
32
32
|
import TimeItem from '../TimeItem/TimeItem';
|
|
33
33
|
import DateTimeItem from '../DateTimeItem/DateTimeItem';
|
|
34
|
-
import DateItem from '../DateItem/DateItem';
|
|
35
34
|
import TextItem from '../TextItem/TextItem';
|
|
36
35
|
import DisplayItem from '../DisplayItem/DisplayItem';
|
|
37
|
-
import IntegerItem from '../IntegerItem/IntegerItem';
|
|
38
36
|
import DecimalItem from '../DecimalItem/DecimalItem';
|
|
39
37
|
import UrlItem from '../UrlItem/UrlItem';
|
|
38
|
+
import CustomDateItem from '../CustomDateItem/CustomDateItem';
|
|
39
|
+
import { isSpecificItemControl } from '../../../utils';
|
|
40
|
+
import SliderItem from '../SliderItem/SliderItem';
|
|
41
|
+
import IntegerItem from '../IntegerItem/IntegerItem';
|
|
40
42
|
|
|
41
43
|
interface SingleItemSwitcherProps
|
|
42
|
-
extends PropsWithQrItemChangeHandler
|
|
44
|
+
extends PropsWithQrItemChangeHandler,
|
|
43
45
|
PropsWithIsRepeatedAttribute,
|
|
44
46
|
PropsWithIsTabledAttribute,
|
|
45
|
-
|
|
47
|
+
PropsWithShowMinimalViewAttribute,
|
|
46
48
|
PropsWithParentIsReadOnlyAttribute {
|
|
47
49
|
qItem: QuestionnaireItem;
|
|
48
|
-
qrItem: QuestionnaireResponseItem;
|
|
50
|
+
qrItem: QuestionnaireResponseItem | null;
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
function SingleItemSwitcher(props: SingleItemSwitcherProps) {
|
|
52
|
-
const { qItem, qrItem, isRepeated, isTabled,
|
|
54
|
+
const { qItem, qrItem, isRepeated, isTabled, showMinimalView, parentIsReadOnly, onQrItemChange } =
|
|
53
55
|
props;
|
|
54
56
|
|
|
55
57
|
switch (qItem.type) {
|
|
@@ -88,7 +90,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
|
|
|
88
90
|
);
|
|
89
91
|
case 'date':
|
|
90
92
|
return (
|
|
91
|
-
<
|
|
93
|
+
<CustomDateItem
|
|
92
94
|
qItem={qItem}
|
|
93
95
|
qrItem={qrItem}
|
|
94
96
|
isRepeated={isRepeated}
|
|
@@ -121,6 +123,19 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
|
|
|
121
123
|
case 'display':
|
|
122
124
|
return <DisplayItem qItem={qItem} />;
|
|
123
125
|
case 'integer':
|
|
126
|
+
if (isSpecificItemControl(qItem, 'slider')) {
|
|
127
|
+
return (
|
|
128
|
+
<SliderItem
|
|
129
|
+
qItem={qItem}
|
|
130
|
+
qrItem={qrItem}
|
|
131
|
+
isRepeated={isRepeated}
|
|
132
|
+
isTabled={isTabled}
|
|
133
|
+
parentIsReadOnly={parentIsReadOnly}
|
|
134
|
+
onQrItemChange={onQrItemChange}
|
|
135
|
+
/>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
124
139
|
return (
|
|
125
140
|
<IntegerItem
|
|
126
141
|
qItem={qItem}
|
|
@@ -149,7 +164,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
|
|
|
149
164
|
qrItem={qrItem}
|
|
150
165
|
isRepeated={isRepeated}
|
|
151
166
|
isTabled={isTabled}
|
|
152
|
-
|
|
167
|
+
showMinimalView={showMinimalView}
|
|
153
168
|
parentIsReadOnly={parentIsReadOnly}
|
|
154
169
|
onQrItemChange={onQrItemChange}
|
|
155
170
|
/>
|
|
@@ -161,7 +176,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
|
|
|
161
176
|
qrItem={qrItem}
|
|
162
177
|
isRepeated={isRepeated}
|
|
163
178
|
isTabled={isTabled}
|
|
164
|
-
|
|
179
|
+
showMinimalView={showMinimalView}
|
|
165
180
|
parentIsReadOnly={parentIsReadOnly}
|
|
166
181
|
onQrItemChange={onQrItemChange}
|
|
167
182
|
/>
|
|
@@ -180,7 +195,8 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
|
|
|
180
195
|
default:
|
|
181
196
|
return (
|
|
182
197
|
<Typography>
|
|
183
|
-
Item type not supported yet
|
|
198
|
+
Item type not supported yet, or something has went wrong. If your questionnnaire is not a
|
|
199
|
+
FHIR R4 resource, there might be issues rendering it.
|
|
184
200
|
</Typography>
|
|
185
201
|
);
|
|
186
202
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
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 { alpha, styled } from '@mui/material/styles';
|
|
19
|
+
import { Box } from '@mui/material';
|
|
20
|
+
|
|
21
|
+
export const SliderDisplayBox = styled(Box, {
|
|
22
|
+
shouldForwardProp: (prop) => prop !== 'hasLabels'
|
|
23
|
+
})<{ hasLabels: boolean }>(({ theme, hasLabels }) => ({
|
|
24
|
+
display: 'flex',
|
|
25
|
+
alignItems: 'center',
|
|
26
|
+
justifyContent: 'center',
|
|
27
|
+
margin: '0 auto',
|
|
28
|
+
marginBottom: hasLabels ? -20 : 0,
|
|
29
|
+
padding: theme.spacing(0.5),
|
|
30
|
+
borderRadius: Number(theme.shape.borderRadius) * 0.5,
|
|
31
|
+
border: `1px solid ${alpha(theme.palette.text.disabled, 0.5)}`,
|
|
32
|
+
minWidth: 28,
|
|
33
|
+
height: 18
|
|
34
|
+
}));
|
|
@@ -0,0 +1,43 @@
|
|
|
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 { SliderDisplayBox } from './Slider.styles';
|
|
20
|
+
import Typography from '@mui/material/Typography';
|
|
21
|
+
import { pxToRem } from '../../../theme/typography';
|
|
22
|
+
|
|
23
|
+
interface SliderDisplayValueProps {
|
|
24
|
+
value: number;
|
|
25
|
+
hasLabels: boolean;
|
|
26
|
+
isInteracted: boolean;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function SliderDisplayValue(props: SliderDisplayValueProps) {
|
|
30
|
+
const { value, hasLabels, isInteracted } = props;
|
|
31
|
+
|
|
32
|
+
const valueToDisplay = isInteracted ? value : '-';
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<SliderDisplayBox hasLabels={hasLabels}>
|
|
36
|
+
<Typography textAlign="center" color="text.disabled" fontSize={pxToRem(9.5)}>
|
|
37
|
+
{valueToDisplay}
|
|
38
|
+
</Typography>
|
|
39
|
+
</SliderDisplayBox>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export default SliderDisplayValue;
|
|
@@ -0,0 +1,88 @@
|
|
|
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 type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
|
|
20
|
+
import Slider from '@mui/material/Slider';
|
|
21
|
+
import { getSliderMarks } from '../../../utils/slider';
|
|
22
|
+
import Stack from '@mui/material/Stack';
|
|
23
|
+
import SliderLabels from './SliderLabels';
|
|
24
|
+
import SliderDisplayValue from './SliderDisplayValue';
|
|
25
|
+
|
|
26
|
+
interface SliderFieldProps extends PropsWithIsTabledAttribute {
|
|
27
|
+
linkId: string;
|
|
28
|
+
value: number;
|
|
29
|
+
minValue: number;
|
|
30
|
+
minLabel: string;
|
|
31
|
+
maxValue: number;
|
|
32
|
+
maxLabel: string;
|
|
33
|
+
stepValue: number;
|
|
34
|
+
isInteracted: boolean;
|
|
35
|
+
readOnly: boolean;
|
|
36
|
+
onValueChange: (newValue: number) => void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function SliderField(props: SliderFieldProps) {
|
|
40
|
+
const {
|
|
41
|
+
linkId,
|
|
42
|
+
value,
|
|
43
|
+
minValue,
|
|
44
|
+
maxValue,
|
|
45
|
+
stepValue,
|
|
46
|
+
minLabel,
|
|
47
|
+
maxLabel,
|
|
48
|
+
isInteracted,
|
|
49
|
+
readOnly,
|
|
50
|
+
isTabled,
|
|
51
|
+
onValueChange
|
|
52
|
+
} = props;
|
|
53
|
+
|
|
54
|
+
const sliderMarks = getSliderMarks(minValue, maxValue, minLabel, maxLabel, stepValue);
|
|
55
|
+
|
|
56
|
+
const sliderSx = {
|
|
57
|
+
maxWidth: !isTabled ? 280 : 3000,
|
|
58
|
+
minWidth: 160
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const hasLabels = !!(minLabel || maxLabel);
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<Stack sx={{ ...sliderSx }}>
|
|
65
|
+
<SliderDisplayValue value={value} hasLabels={hasLabels} isInteracted={isInteracted} />
|
|
66
|
+
{hasLabels ? <SliderLabels minLabel={minLabel} maxLabel={maxLabel} /> : null}
|
|
67
|
+
<Slider
|
|
68
|
+
id={linkId}
|
|
69
|
+
value={value}
|
|
70
|
+
min={minValue}
|
|
71
|
+
max={maxValue}
|
|
72
|
+
step={stepValue}
|
|
73
|
+
marks={sliderMarks}
|
|
74
|
+
sx={{ ...sliderSx }}
|
|
75
|
+
onChange={(_, newValue) => {
|
|
76
|
+
if (typeof newValue === 'number') {
|
|
77
|
+
onValueChange(newValue);
|
|
78
|
+
}
|
|
79
|
+
}}
|
|
80
|
+
disabled={readOnly}
|
|
81
|
+
valueLabelDisplay="auto"
|
|
82
|
+
data-test="q-item-slider-field"
|
|
83
|
+
/>
|
|
84
|
+
</Stack>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export default SliderField;
|