@aehrc/smart-forms-renderer 0.8.0 → 0.9.0
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 +3 -3
- 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 +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +6 -5
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +15 -14
- 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 +15 -14
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +8 -8
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +6 -6
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +6 -5
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +8 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +8 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
- 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 -3
- 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/lib/components/FormComponents/DateItem/DatePickerField.js +24 -0
- package/lib/components/FormComponents/DateItem/DatePickerField.js.map +1 -0
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +3 -3
- 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 +3 -3
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js +7 -7
- 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 +3 -1
- 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/DisplayInstructions.styles.js +0 -1
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -1
- 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 +3 -3
- package/lib/components/FormComponents/GridGroup/GridGroup.js +16 -9
- package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.d.ts +3 -3
- package/lib/components/FormComponents/GridGroup/GridRow.js +4 -4
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridTable.d.ts +3 -2
- 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/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 +3 -4
- package/lib/components/FormComponents/GroupItem/GroupItem.js +7 -5
- 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 +3 -3
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +11 -12
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/IntegerItem.d.ts +3 -3
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js +7 -7
- 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/Item.styles.d.ts +0 -4
- package/lib/components/FormComponents/Item.styles.js +0 -4
- package/lib/components/FormComponents/Item.styles.js.map +1 -1
- 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 +3 -2
- 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/Lists.styles.d.ts +2 -9
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +3 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +2 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +8 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +16 -15
- 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 +6 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +7 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +3 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +7 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +3 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +8 -7
- 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 +20 -7
- 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 +3 -3
- 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 +4 -3
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js +15 -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/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 +4 -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 +20 -15
- 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 +3 -3
- package/lib/components/FormComponents/StringItem/StringItem.js +5 -4
- package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
- package/lib/components/FormComponents/Tables/AddRowButton.d.ts +1 -0
- package/lib/components/FormComponents/Tables/AddRowButton.js +2 -2
- package/lib/components/FormComponents/Tables/AddRowButton.js.map +1 -1
- 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 +4 -3
- package/lib/components/FormComponents/Tables/GroupTable.js +25 -6
- package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +3 -3
- package/lib/components/FormComponents/Tables/GroupTableRow.js +4 -4
- package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
- 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/TextItem/TextItem.d.ts +3 -3
- 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 +3 -3
- 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 +3 -3
- package/lib/components/FormComponents/UrlItem/UrlItem.js +5 -4
- package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
- 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 +2 -9
- 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 +9 -5
- package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
- package/lib/components/Tabs/FormBodySingleTab.js +1 -1
- package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
- package/lib/components/Tabs/ShowCompletedTabsSection.js +1 -1
- package/lib/components/Tabs/ShowCompletedTabsSection.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/useMinimalStringCalculatedExpression.d.ts +11 -0
- package/lib/hooks/useMinimalStringCalculatedExpression.js +37 -0
- package/lib/hooks/useMinimalStringCalculatedExpression.js.map +1 -0
- 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/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/calculatedExpression.interface.d.ts +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 +7 -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 +0 -4
- package/lib/theme/customGlobalStyles.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 +17 -1
- package/lib/utils/calculatedExpression.js +71 -20
- 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/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 +20 -18
- package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +10 -7
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +11 -8
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +46 -35
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +48 -37
- package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +21 -11
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +11 -10
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +12 -9
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +3 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +16 -11
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +3 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +14 -9
- 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/{Typography.styles.ts → CustomDateItem/customDateTimePicker/MuiDatePicker.ts} +4 -7
- 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 +10 -8
- package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +10 -8
- package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +11 -10
- package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +0 -1
- package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +8 -3
- package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +2 -2
- package/src/components/FormComponents/GridGroup/GridGroup.tsx +49 -15
- package/src/components/FormComponents/GridGroup/GridRow.tsx +12 -7
- package/src/components/FormComponents/GridGroup/GridTable.tsx +32 -8
- package/src/components/FormComponents/GridGroup/index.ts +18 -0
- package/src/components/FormComponents/GroupItem/GroupHeading.tsx +12 -6
- package/src/components/FormComponents/GroupItem/GroupItem.tsx +13 -8
- package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +33 -11
- package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +11 -10
- package/src/components/FormComponents/Item.styles.ts +0 -5
- package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +2 -2
- package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +6 -5
- package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +10 -5
- package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +3 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +10 -4
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +15 -9
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +58 -47
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +15 -6
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +13 -10
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +10 -4
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +12 -7
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +10 -4
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +14 -9
- 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 +61 -10
- package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +23 -7
- 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 +33 -9
- package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +44 -7
- package/src/components/FormComponents/RepeatItem/index.ts +18 -0
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +12 -6
- package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +41 -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 +9 -7
- package/src/components/FormComponents/Tables/AddRowButton.tsx +3 -2
- package/src/components/FormComponents/Tables/DeleteRowButton.tsx +3 -2
- package/src/components/FormComponents/Tables/GroupTable.tsx +70 -7
- package/src/components/FormComponents/Tables/GroupTableRow.tsx +12 -7
- package/src/components/FormComponents/TextItem/TextItem.tsx +9 -7
- package/src/components/FormComponents/TimeItem/TimeItem.tsx +10 -8
- package/src/components/FormComponents/UrlItem/UrlItem.tsx +9 -7
- 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 +21 -13
- package/src/components/Tabs/FormBodySingleTab.tsx +1 -1
- package/src/components/Tabs/ShowCompletedTabsSection.tsx +1 -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/useReadOnly.ts +30 -0
- package/src/hooks/useSliderExtensions.ts +50 -0
- package/src/hooks/useTerminologyServerQuery.ts +0 -2
- package/src/index.ts +12 -9
- package/src/interfaces/calculatedExpression.interface.ts +1 -1
- package/src/interfaces/questionnaireStore.interface.ts +1 -0
- package/src/interfaces/renderProps.interface.ts +8 -3
- package/src/stores/useQuestionnaireStore.ts +39 -16
- package/src/theme/customGlobalStyles.tsx +0 -4
- package/src/theme/typography.ts +3 -5
- package/src/utils/calculatedExpression.ts +104 -35
- 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/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/repopulateRepeatGroup.ts +0 -68
|
@@ -30,13 +30,14 @@ interface ChoiceSelectAnswerValueSetFieldsProps extends PropsWithIsTabledAttribu
|
|
|
30
30
|
codings: Coding[];
|
|
31
31
|
valueCoding: Coding | null;
|
|
32
32
|
serverError: Error | null;
|
|
33
|
+
readOnly: boolean;
|
|
33
34
|
onSelectChange: (newValue: Coding | null) => void;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
function ChoiceSelectAnswerValueSetFields(props: ChoiceSelectAnswerValueSetFieldsProps) {
|
|
37
|
-
const { qItem, codings, valueCoding, serverError, isTabled, onSelectChange } = props;
|
|
38
|
+
const { qItem, codings, valueCoding, serverError, readOnly, isTabled, onSelectChange } = props;
|
|
38
39
|
|
|
39
|
-
const { displayUnit, displayPrompt,
|
|
40
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
40
41
|
|
|
41
42
|
if (codings.length > 0) {
|
|
42
43
|
return (
|
|
@@ -26,22 +26,28 @@ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
|
26
26
|
import type {
|
|
27
27
|
PropsWithIsRepeatedAttribute,
|
|
28
28
|
PropsWithIsTabledAttribute,
|
|
29
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
29
30
|
PropsWithQrItemChangeHandler
|
|
30
31
|
} from '../../../interfaces/renderProps.interface';
|
|
31
32
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
32
33
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
33
34
|
import ChoiceSelectAnswerValueSetFields from './ChoiceSelectAnswerValueSetFields';
|
|
35
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
34
36
|
|
|
35
37
|
interface ChoiceSelectAnswerValueSetItemProps
|
|
36
|
-
extends PropsWithQrItemChangeHandler
|
|
38
|
+
extends PropsWithQrItemChangeHandler,
|
|
37
39
|
PropsWithIsRepeatedAttribute,
|
|
38
|
-
PropsWithIsTabledAttribute
|
|
40
|
+
PropsWithIsTabledAttribute,
|
|
41
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
39
42
|
qItem: QuestionnaireItem;
|
|
40
|
-
qrItem: QuestionnaireResponseItem;
|
|
43
|
+
qrItem: QuestionnaireResponseItem | null;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemProps) {
|
|
44
|
-
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);
|
|
45
51
|
|
|
46
52
|
// Init input value
|
|
47
53
|
const qrChoiceSelect = qrItem ?? createEmptyQrItem(qItem);
|
|
@@ -50,9 +56,6 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
50
56
|
valueCoding = qrChoiceSelect.answer[0].valueCoding ?? null;
|
|
51
57
|
}
|
|
52
58
|
|
|
53
|
-
// Get additional rendering extensions
|
|
54
|
-
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
55
|
-
|
|
56
59
|
// Get codings/options from valueSet
|
|
57
60
|
const { codings, serverError } = useValueSetCodings(qItem);
|
|
58
61
|
|
|
@@ -96,6 +99,7 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
96
99
|
codings={codings}
|
|
97
100
|
valueCoding={valueCoding}
|
|
98
101
|
serverError={serverError}
|
|
102
|
+
readOnly={readOnly}
|
|
99
103
|
isTabled={isTabled}
|
|
100
104
|
onSelectChange={handleChange}
|
|
101
105
|
/>
|
|
@@ -106,7 +110,7 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
106
110
|
<FullWidthFormComponentBox data-test="q-item-choice-dropdown-answer-value-set-box">
|
|
107
111
|
<Grid container columnSpacing={6}>
|
|
108
112
|
<Grid item xs={5}>
|
|
109
|
-
<LabelWrapper qItem={qItem} />
|
|
113
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
110
114
|
</Grid>
|
|
111
115
|
<Grid item xs={7}>
|
|
112
116
|
<ChoiceSelectAnswerValueSetFields
|
|
@@ -114,10 +118,11 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
114
118
|
codings={codings}
|
|
115
119
|
valueCoding={valueCoding}
|
|
116
120
|
serverError={serverError}
|
|
121
|
+
readOnly={readOnly}
|
|
117
122
|
isTabled={isTabled}
|
|
118
123
|
onSelectChange={handleChange}
|
|
119
124
|
/>
|
|
120
|
-
<DisplayInstructions displayInstructions={displayInstructions} />
|
|
125
|
+
<DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
|
|
121
126
|
</Grid>
|
|
122
127
|
</Grid>
|
|
123
128
|
</FullWidthFormComponentBox>
|
|
@@ -0,0 +1,140 @@
|
|
|
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, { useState } from 'react';
|
|
19
|
+
import type {
|
|
20
|
+
PropsWithIsRepeatedAttribute,
|
|
21
|
+
PropsWithIsTabledAttribute,
|
|
22
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
23
|
+
PropsWithQrItemChangeHandler
|
|
24
|
+
} from '../../../interfaces/renderProps.interface';
|
|
25
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
26
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
27
|
+
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
28
|
+
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
29
|
+
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
30
|
+
import {
|
|
31
|
+
parseFhirDateToDisplayDate,
|
|
32
|
+
parseInputDateToFhirDate,
|
|
33
|
+
validateInput
|
|
34
|
+
} from './customDateTimePicker/utils/parseDates';
|
|
35
|
+
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
36
|
+
import useDateValidation from '../../../hooks/useDateValidation';
|
|
37
|
+
import CustomDateField from './customDateTimePicker/CustomDateField';
|
|
38
|
+
|
|
39
|
+
interface CustomDateItemProps
|
|
40
|
+
extends PropsWithQrItemChangeHandler,
|
|
41
|
+
PropsWithIsRepeatedAttribute,
|
|
42
|
+
PropsWithIsTabledAttribute,
|
|
43
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
44
|
+
qItem: QuestionnaireItem;
|
|
45
|
+
qrItem: QuestionnaireResponseItem | null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function CustomDateItem(props: CustomDateItemProps) {
|
|
49
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
50
|
+
|
|
51
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
52
|
+
const { displayPrompt, displayInstructions, entryFormat } = useRenderingExtensions(qItem);
|
|
53
|
+
|
|
54
|
+
const qrDate = qrItem ?? createEmptyQrItem(qItem);
|
|
55
|
+
|
|
56
|
+
// Init input value
|
|
57
|
+
let valueDate: string = '';
|
|
58
|
+
if (qrDate.answer) {
|
|
59
|
+
if (qrDate.answer[0].valueDate) {
|
|
60
|
+
valueDate = qrDate.answer[0].valueDate;
|
|
61
|
+
} else if (qrDate.answer[0].valueDateTime) {
|
|
62
|
+
valueDate = qrDate.answer[0].valueDateTime;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const { displayDate, parseFail } = parseFhirDateToDisplayDate(valueDate);
|
|
67
|
+
|
|
68
|
+
const [input, setInput] = useState(displayDate);
|
|
69
|
+
const [focused, setFocused] = useState(false);
|
|
70
|
+
|
|
71
|
+
// Perform validation checks
|
|
72
|
+
const errorFeedback = useDateValidation(input, parseFail);
|
|
73
|
+
|
|
74
|
+
function handleSelectDate(selectedDate: string) {
|
|
75
|
+
setInput(selectedDate);
|
|
76
|
+
onQrItemChange({
|
|
77
|
+
...createEmptyQrItem(qItem),
|
|
78
|
+
answer: [{ valueDate: parseInputDateToFhirDate(selectedDate) }]
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function handleInputChange(newInput: string) {
|
|
83
|
+
setInput(newInput);
|
|
84
|
+
|
|
85
|
+
if (newInput === '') {
|
|
86
|
+
onQrItemChange(createEmptyQrItem(qItem));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (!validateInput(newInput)) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
onQrItemChange({
|
|
94
|
+
...createEmptyQrItem(qItem),
|
|
95
|
+
answer: [{ valueDate: parseInputDateToFhirDate(newInput) }]
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (isRepeated) {
|
|
100
|
+
return (
|
|
101
|
+
<CustomDateField
|
|
102
|
+
linkId={qItem.linkId}
|
|
103
|
+
valueDate={displayDate}
|
|
104
|
+
input={input}
|
|
105
|
+
feedback={errorFeedback ?? ''}
|
|
106
|
+
isFocused={focused}
|
|
107
|
+
displayPrompt={displayPrompt}
|
|
108
|
+
entryFormat={entryFormat}
|
|
109
|
+
readOnly={readOnly}
|
|
110
|
+
isTabled={isTabled}
|
|
111
|
+
setFocused={setFocused}
|
|
112
|
+
onInputChange={handleInputChange}
|
|
113
|
+
onSelectDate={handleSelectDate}
|
|
114
|
+
/>
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return (
|
|
119
|
+
<FullWidthFormComponentBox data-test="q-item-date-box">
|
|
120
|
+
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
|
|
121
|
+
<CustomDateField
|
|
122
|
+
linkId={qItem.linkId}
|
|
123
|
+
valueDate={displayDate}
|
|
124
|
+
input={input}
|
|
125
|
+
feedback={errorFeedback ?? ''}
|
|
126
|
+
isFocused={focused}
|
|
127
|
+
displayPrompt={displayPrompt}
|
|
128
|
+
entryFormat={entryFormat}
|
|
129
|
+
readOnly={readOnly}
|
|
130
|
+
isTabled={isTabled}
|
|
131
|
+
setFocused={setFocused}
|
|
132
|
+
onInputChange={handleInputChange}
|
|
133
|
+
onSelectDate={handleSelectDate}
|
|
134
|
+
/>
|
|
135
|
+
</ItemFieldGrid>
|
|
136
|
+
</FullWidthFormComponentBox>
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export default CustomDateItem;
|
|
@@ -0,0 +1,96 @@
|
|
|
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 type { Dayjs } from 'dayjs';
|
|
19
|
+
import type { ChangeEvent, Dispatch, RefObject, SetStateAction } from 'react';
|
|
20
|
+
import React, { useRef } from 'react';
|
|
21
|
+
import type { PropsWithIsTabledAttribute } from '../../../../interfaces/renderProps.interface';
|
|
22
|
+
import { StandardTextField } from '../../Textfield.styles';
|
|
23
|
+
import DatePicker from './DatePicker';
|
|
24
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
25
|
+
|
|
26
|
+
interface CustomDateFieldProps extends PropsWithIsTabledAttribute {
|
|
27
|
+
linkId: string;
|
|
28
|
+
valueDate: string;
|
|
29
|
+
input: string;
|
|
30
|
+
feedback: string;
|
|
31
|
+
isFocused: boolean;
|
|
32
|
+
displayPrompt: string;
|
|
33
|
+
entryFormat: string;
|
|
34
|
+
readOnly: boolean;
|
|
35
|
+
setFocused: Dispatch<SetStateAction<boolean>>;
|
|
36
|
+
onInputChange: (newInput: string) => void;
|
|
37
|
+
onSelectDate: (newDateValue: string) => void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function CustomDateField(props: CustomDateFieldProps) {
|
|
41
|
+
const {
|
|
42
|
+
linkId,
|
|
43
|
+
valueDate,
|
|
44
|
+
input,
|
|
45
|
+
feedback,
|
|
46
|
+
isFocused,
|
|
47
|
+
displayPrompt,
|
|
48
|
+
entryFormat,
|
|
49
|
+
readOnly,
|
|
50
|
+
isTabled,
|
|
51
|
+
setFocused,
|
|
52
|
+
onInputChange,
|
|
53
|
+
onSelectDate
|
|
54
|
+
} = props;
|
|
55
|
+
|
|
56
|
+
const anchorRef: RefObject<HTMLDivElement> = useRef(null);
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<Tooltip title={isTabled ? feedback : ''}>
|
|
60
|
+
<StandardTextField
|
|
61
|
+
id={linkId}
|
|
62
|
+
ref={anchorRef}
|
|
63
|
+
fullWidth
|
|
64
|
+
isTabled={isTabled}
|
|
65
|
+
value={input}
|
|
66
|
+
error={!!feedback}
|
|
67
|
+
onChange={(e: ChangeEvent<HTMLInputElement>) => onInputChange(e.target.value)}
|
|
68
|
+
label={displayPrompt}
|
|
69
|
+
placeholder={entryFormat !== '' ? entryFormat : 'DD/MM/YYYY'}
|
|
70
|
+
disabled={readOnly}
|
|
71
|
+
size="small"
|
|
72
|
+
focused={isFocused}
|
|
73
|
+
onFocus={() => setFocused(true)}
|
|
74
|
+
onBlur={() => setFocused(false)}
|
|
75
|
+
InputProps={{
|
|
76
|
+
endAdornment: (
|
|
77
|
+
<>
|
|
78
|
+
<DatePicker
|
|
79
|
+
valueString={valueDate}
|
|
80
|
+
readOnly={readOnly}
|
|
81
|
+
anchorEl={anchorRef.current}
|
|
82
|
+
onSelectDate={(valueDayjs: Dayjs) => {
|
|
83
|
+
onSelectDate(valueDayjs.format('DD/MM/YYYY'));
|
|
84
|
+
}}
|
|
85
|
+
onFocus={(focus) => setFocused(focus)}
|
|
86
|
+
/>
|
|
87
|
+
</>
|
|
88
|
+
)
|
|
89
|
+
}}
|
|
90
|
+
helperText={isTabled ? '' : feedback}
|
|
91
|
+
/>
|
|
92
|
+
</Tooltip>
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export default CustomDateField;
|
|
@@ -0,0 +1,81 @@
|
|
|
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, { useState } from 'react';
|
|
19
|
+
import type { Dayjs } from 'dayjs';
|
|
20
|
+
import dayjs from 'dayjs';
|
|
21
|
+
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
|
22
|
+
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
|
|
23
|
+
import MuiDatePicker from './MuiDatePicker';
|
|
24
|
+
// import { DatePicker as MuiDatePicker, LocalizationProvider } from '@mui/x-date-pickers';
|
|
25
|
+
import DatePickerButton from './DatePickerButton';
|
|
26
|
+
|
|
27
|
+
interface DatePickerProps {
|
|
28
|
+
valueString: string;
|
|
29
|
+
readOnly: boolean;
|
|
30
|
+
anchorEl: HTMLElement | null;
|
|
31
|
+
onSelectDate: (newValueDayjs: Dayjs) => void;
|
|
32
|
+
onFocus: (focus: boolean) => void;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function DatePicker(props: DatePickerProps) {
|
|
36
|
+
const { valueString, readOnly, anchorEl, onSelectDate, onFocus } = props;
|
|
37
|
+
|
|
38
|
+
const [open, setOpen] = useState(false);
|
|
39
|
+
|
|
40
|
+
const valueDayJs = valueString ? dayjs(valueString, 'DD/MM/YYYY') : null;
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<LocalizationProvider dateAdapter={AdapterDayjs}>
|
|
44
|
+
<MuiDatePicker
|
|
45
|
+
value={valueDayJs ?? null}
|
|
46
|
+
disabled={readOnly}
|
|
47
|
+
slots={{ field: DatePickerButton }}
|
|
48
|
+
slotProps={{
|
|
49
|
+
field: {
|
|
50
|
+
onOpen: () => {
|
|
51
|
+
setOpen(!open);
|
|
52
|
+
onFocus(true);
|
|
53
|
+
},
|
|
54
|
+
readOnly: readOnly
|
|
55
|
+
} as any,
|
|
56
|
+
textField: {
|
|
57
|
+
size: 'small'
|
|
58
|
+
},
|
|
59
|
+
popper: {
|
|
60
|
+
anchorEl: () => anchorEl as HTMLElement
|
|
61
|
+
}
|
|
62
|
+
}}
|
|
63
|
+
open={open}
|
|
64
|
+
onClose={() => {
|
|
65
|
+
setOpen(false);
|
|
66
|
+
onFocus(false);
|
|
67
|
+
}}
|
|
68
|
+
onChange={(newValue) => {
|
|
69
|
+
if (!newValue) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
onSelectDate(newValue);
|
|
74
|
+
onFocus(false);
|
|
75
|
+
}}
|
|
76
|
+
/>
|
|
77
|
+
</LocalizationProvider>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export default DatePicker;
|
package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.tsx
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type {
|
|
3
|
+
BaseSingleInputFieldProps,
|
|
4
|
+
DateValidationError,
|
|
5
|
+
FieldSection
|
|
6
|
+
} from '@mui/x-date-pickers/models';
|
|
7
|
+
import type { Dayjs } from 'dayjs';
|
|
8
|
+
import IconButton from '@mui/material/IconButton';
|
|
9
|
+
import EventIcon from '@mui/icons-material/Event';
|
|
10
|
+
|
|
11
|
+
interface DatePickerButtonProps
|
|
12
|
+
extends BaseSingleInputFieldProps<Dayjs | null, Dayjs, FieldSection, DateValidationError> {
|
|
13
|
+
onOpen?: () => void;
|
|
14
|
+
readOnly?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function DatePickerButton(props: DatePickerButtonProps) {
|
|
18
|
+
const { onOpen, readOnly } = props;
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<IconButton
|
|
22
|
+
sx={{ height: 24, width: 24 }}
|
|
23
|
+
disabled={readOnly}
|
|
24
|
+
onClick={(e) => {
|
|
25
|
+
e.stopPropagation();
|
|
26
|
+
onOpen?.();
|
|
27
|
+
}}>
|
|
28
|
+
<EventIcon fontSize="small" />
|
|
29
|
+
</IconButton>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default DatePickerButton;
|
|
@@ -15,11 +15,8 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import {
|
|
19
|
-
import Typography from '@mui/material/Typography';
|
|
18
|
+
import { DatePicker } from '@mui/x-date-pickers/DatePicker';
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
fontSize: isTabHeading ? 16 : 15
|
|
25
|
-
}));
|
|
20
|
+
const MuiDatePicker = DatePicker;
|
|
21
|
+
|
|
22
|
+
export default MuiDatePicker;
|
|
@@ -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 * from './utils';
|
|
@@ -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 { parseFhirDateToDisplayDate } from './parseDates';
|
|
@@ -0,0 +1,154 @@
|
|
|
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 dayjs from 'dayjs';
|
|
19
|
+
|
|
20
|
+
const inputMatchRegex = /(\d{4}|\d{3}|\d{2})/g;
|
|
21
|
+
|
|
22
|
+
export function validateInput(input: string) {
|
|
23
|
+
const matches = input.match(inputMatchRegex);
|
|
24
|
+
|
|
25
|
+
if (!matches) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const seperator = input.includes('/') ? '/' : null;
|
|
30
|
+
|
|
31
|
+
if (matches.length === 1) {
|
|
32
|
+
// seperator not supposed to be present if only one match present
|
|
33
|
+
if (seperator) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return matches[0].length === 4;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Invalid if seperator is not present
|
|
41
|
+
if (!seperator) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Invalid if num of slots don't match the number of regex matches
|
|
46
|
+
const slotsMatched = input.split(seperator);
|
|
47
|
+
if (slotsMatched.length != matches.length) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Handle MM/YYYY format
|
|
52
|
+
if (matches.length === 2) {
|
|
53
|
+
return validateTwoMatches(matches[0], matches[1]);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Handle DD/MM/YYYY format
|
|
57
|
+
if (matches.length === 3) {
|
|
58
|
+
return validateThreeMatches(matches[0], matches[1], matches[2]);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function validateTwoMatches(monthInput: string, yearInput: string) {
|
|
65
|
+
const monthNum = parseInt(monthInput, 10);
|
|
66
|
+
if (monthNum < 1 || monthNum > 12) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return (monthInput.length === 1 || monthInput.length === 2) && yearInput.length === 4;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function validateThreeMatches(dayInput: string, monthInput: string, yearInput: string) {
|
|
74
|
+
const dayNum = parseInt(dayInput, 10);
|
|
75
|
+
if (dayNum < 1 || dayNum > 31) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const monthNum = parseInt(monthInput, 10);
|
|
80
|
+
if (monthNum < 1 || monthNum > 12) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return (
|
|
85
|
+
(dayInput.length === 1 || dayInput.length === 2) &&
|
|
86
|
+
(monthInput.length === 1 || monthInput.length === 2) &&
|
|
87
|
+
yearInput.length === 4
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function getNumOfSeparators(valueDate: string, seperator: string) {
|
|
92
|
+
const regex = new RegExp(seperator, 'g');
|
|
93
|
+
return [...valueDate.matchAll(regex)].length;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function parseFhirDateToDisplayDate(fhirDate: string): {
|
|
97
|
+
displayDate: string;
|
|
98
|
+
parseFail?: boolean;
|
|
99
|
+
} {
|
|
100
|
+
if (fhirDate.length === 0) {
|
|
101
|
+
return { displayDate: '' };
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const numOfSeparators = getNumOfSeparators(fhirDate, '-');
|
|
105
|
+
|
|
106
|
+
if (numOfSeparators === 2) {
|
|
107
|
+
const threeMatchesDate = dayjs(fhirDate, `YYYY-MM-DD`);
|
|
108
|
+
if (threeMatchesDate.isValid()) {
|
|
109
|
+
return { displayDate: threeMatchesDate.format('DD/MM/YYYY') };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (numOfSeparators === 1) {
|
|
114
|
+
const twoMatchesDate = dayjs(fhirDate, `YYYY-MM`);
|
|
115
|
+
if (twoMatchesDate.isValid()) {
|
|
116
|
+
return { displayDate: twoMatchesDate.format('MM/YYYY') };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const oneMatchDate = dayjs(fhirDate, `YYYY`);
|
|
121
|
+
if (oneMatchDate.isValid()) {
|
|
122
|
+
return { displayDate: oneMatchDate.format('YYYY') };
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return { displayDate: fhirDate, parseFail: true };
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export function parseInputDateToFhirDate(displayDate: string) {
|
|
129
|
+
const numOfSeparators = getNumOfSeparators(displayDate, '/');
|
|
130
|
+
|
|
131
|
+
if (numOfSeparators === 2) {
|
|
132
|
+
const threeMatchesDate = dayjs(displayDate, `DD/MM/YYYY`);
|
|
133
|
+
if (threeMatchesDate.isValid()) {
|
|
134
|
+
return threeMatchesDate.format('YYYY-MM-DD');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (numOfSeparators === 1) {
|
|
139
|
+
const twoMatchesDate = dayjs(displayDate, `MM/YYYY`);
|
|
140
|
+
if (twoMatchesDate.isValid()) {
|
|
141
|
+
return twoMatchesDate.format('YYYY-MM');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (displayDate.length === 4) {
|
|
146
|
+
const oneMatchDate = dayjs(displayDate, 'YYYY');
|
|
147
|
+
if (oneMatchDate.isValid()) {
|
|
148
|
+
return displayDate;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Default to YYYY-MM-DD format if all else fails
|
|
153
|
+
return dayjs(displayDate).format('YYYY-MM-DD');
|
|
154
|
+
}
|
|
@@ -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 * from './customDateTimePicker';
|