@aehrc/smart-forms-renderer 0.3.0 → 0.5.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/.storybook/main.ts +28 -0
- package/.storybook/preview.ts +34 -0
- package/__mocks__/zustand.ts +60 -0
- package/jest.config.ts +16 -0
- package/lib/api/populate.js +63 -0
- package/lib/api/populate.js.map +1 -0
- package/{dist → lib}/components/Alert.styles.d.ts +5 -5
- package/lib/components/Alert.styles.js +40 -0
- package/lib/components/Alert.styles.js.map +1 -0
- package/lib/components/BackToTopButton/BackToTopButton.js +32 -0
- package/lib/components/BackToTopButton/BackToTopButton.js.map +1 -0
- package/{dist → lib}/components/Box.styles.d.ts +15 -15
- package/lib/components/Box.styles.js +30 -0
- package/lib/components/Box.styles.js.map +1 -0
- package/lib/components/FormComponents/BooleanItem/BooleanField.js +24 -0
- package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -0
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js +49 -0
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -0
- package/lib/components/FormComponents/DateItem/DateField.js +31 -0
- package/lib/components/FormComponents/DateItem/DateField.js.map +1 -0
- package/lib/components/FormComponents/DateItem/DateItem.js +52 -0
- package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -0
- package/lib/components/FormComponents/DateTimeItem/DateTimeField.js +33 -0
- package/lib/components/FormComponents/DateTimeItem/DateTimeField.js.map +1 -0
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +52 -0
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -0
- package/lib/components/FormComponents/DecimalItem/DecimalField.js +30 -0
- package/lib/components/FormComponents/DecimalItem/DecimalField.js.map +1 -0
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js +80 -0
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -0
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js +26 -0
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -0
- package/{dist → lib}/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +5 -5
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js +23 -0
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -0
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js +31 -0
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -0
- package/{dist → lib}/components/FormComponents/GridGroup/GridGroup.d.ts +1 -1
- package/lib/components/FormComponents/GridGroup/GridGroup.js +58 -0
- package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -0
- package/{dist → lib}/components/FormComponents/GridGroup/GridRow.d.ts +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.js +55 -0
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -0
- package/lib/components/FormComponents/GridGroup/GridTable.js +42 -0
- package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -0
- package/lib/components/FormComponents/GroupItem/GroupHeading.js +39 -0
- package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -0
- package/{dist → lib}/components/FormComponents/GroupItem/GroupItem.d.ts +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.js +62 -0
- package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -0
- package/{dist → lib}/components/FormComponents/GroupItem/GroupItem.styles.d.ts +5 -5
- package/lib/components/FormComponents/GroupItem/GroupItem.styles.js +27 -0
- package/lib/components/FormComponents/GroupItem/GroupItem.styles.js.map +1 -0
- package/{dist → lib}/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +73 -0
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -0
- package/lib/components/FormComponents/GroupItem/NextTabButton.js +25 -0
- package/lib/components/FormComponents/GroupItem/NextTabButton.js.map +1 -0
- package/lib/components/FormComponents/GroupItem/NextTabButtonWrapper.js +55 -0
- package/lib/components/FormComponents/GroupItem/NextTabButtonWrapper.js.map +1 -0
- package/lib/components/FormComponents/IntegerItem/IntegerField.js +30 -0
- package/lib/components/FormComponents/IntegerItem/IntegerField.js.map +1 -0
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js +73 -0
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -0
- package/lib/components/FormComponents/Item.styles.d.ts +6 -0
- package/lib/components/FormComponents/Item.styles.js +27 -0
- package/lib/components/FormComponents/Item.styles.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/ContextDisplayItem.js +29 -0
- package/lib/components/FormComponents/ItemParts/ContextDisplayItem.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +26 -0
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +31 -0
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js +45 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +32 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/QItemCheckboxSingle.js +24 -0
- package/lib/components/FormComponents/ItemParts/QItemCheckboxSingle.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.js +33 -0
- package/lib/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.js +31 -0
- package/lib/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.js.map +1 -0
- package/{dist → lib}/components/FormComponents/Lists.styles.d.ts +5 -5
- package/lib/components/FormComponents/Lists.styles.js +38 -0
- package/lib/components/FormComponents/Lists.styles.js.map +1 -0
- package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoice.d.ts +1 -1
- package/lib/components/FormComponents/QItemChoice/QItemChoice.js +61 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoice.js.map +1 -0
- package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.d.ts +1 -1
- package/lib/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.js +85 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.js.map +1 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.js +70 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.js.map +1 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.js +66 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.js.map +1 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.js +70 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.js.map +1 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.js +70 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.js.map +1 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.js +24 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.js.map +1 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.js +70 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.js.map +1 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.js +80 -0
- package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.js.map +1 -0
- package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoice.d.ts +1 -1
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoice.js +49 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoice.js.map +1 -0
- package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.d.ts +1 -1
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.js +104 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.js.map +1 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.js +105 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.js.map +1 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.js +116 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.js.map +1 -0
- package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.d.ts +1 -1
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.js +74 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.js.map +1 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.js +66 -0
- package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.js.map +1 -0
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +27 -0
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -0
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +30 -0
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -0
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +81 -0
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -0
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +30 -0
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -0
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js +27 -0
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -0
- package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js +30 -0
- package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js.map +1 -0
- package/lib/components/FormComponents/RepeatItem/RepeatField.js +31 -0
- package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -0
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js +69 -0
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -0
- package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +22 -0
- package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.js +29 -0
- package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.js.map +1 -0
- package/lib/components/FormComponents/SingleItem/SingleItem.js +32 -0
- package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -0
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +63 -0
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -0
- package/lib/components/FormComponents/StringItem/StringField.js +30 -0
- package/lib/components/FormComponents/StringItem/StringField.js.map +1 -0
- package/lib/components/FormComponents/StringItem/StringItem.js +71 -0
- package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -0
- package/lib/components/FormComponents/Tables/DeleteRowButton.js +31 -0
- package/lib/components/FormComponents/Tables/DeleteRowButton.js.map +1 -0
- package/{dist → lib}/components/FormComponents/Tables/QItemGroupTable.d.ts +1 -1
- package/lib/components/FormComponents/Tables/QItemGroupTable.js +99 -0
- package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -0
- package/{dist → lib}/components/FormComponents/Tables/QItemGroupTableRow.d.ts +1 -1
- package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +46 -0
- package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -0
- package/lib/components/FormComponents/Tables/Table.styles.js +46 -0
- package/lib/components/FormComponents/Tables/Table.styles.js.map +1 -0
- package/lib/components/FormComponents/TextItem/TextField.js +29 -0
- package/lib/components/FormComponents/TextItem/TextField.js.map +1 -0
- package/lib/components/FormComponents/TextItem/TextItem.js +71 -0
- package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -0
- package/{dist → lib}/components/FormComponents/Textfield.styles.d.ts +1 -1
- package/lib/components/FormComponents/Textfield.styles.js +27 -0
- package/lib/components/FormComponents/Textfield.styles.js.map +1 -0
- package/lib/components/FormComponents/TimeItem/TimeField.js +30 -0
- package/lib/components/FormComponents/TimeItem/TimeField.js.map +1 -0
- package/lib/components/FormComponents/TimeItem/TimeItem.js +52 -0
- package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -0
- package/lib/components/FormComponents/Typography.styles.d.ts +6 -0
- package/lib/components/FormComponents/Typography.styles.js +23 -0
- package/lib/components/FormComponents/Typography.styles.js.map +1 -0
- package/lib/components/FormComponents/UrlItem/UrlField.js +25 -0
- package/lib/components/FormComponents/UrlItem/UrlField.js.map +1 -0
- package/lib/components/FormComponents/UrlItem/UrlItem.js +61 -0
- package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -0
- package/lib/components/FormRenderer/BaseRenderer.js +54 -0
- package/lib/components/FormRenderer/BaseRenderer.js.map +1 -0
- package/lib/components/FormRenderer/FormBodyCollapsible.js +57 -0
- package/lib/components/FormRenderer/FormBodyCollapsible.js.map +1 -0
- package/lib/components/FormRenderer/FormBodySingleCollapsible.js +39 -0
- package/lib/components/FormRenderer/FormBodySingleCollapsible.js.map +1 -0
- package/{dist → lib}/components/FormRenderer/FormBodySingleCollapsibleWrapper.d.ts +1 -1
- package/lib/components/FormRenderer/FormBodySingleCollapsibleWrapper.js +31 -0
- package/lib/components/FormRenderer/FormBodySingleCollapsibleWrapper.js.map +1 -0
- package/lib/components/FormRenderer/FormBodyTabbed.js +60 -0
- package/lib/components/FormRenderer/FormBodyTabbed.js.map +1 -0
- package/lib/components/FormRenderer/FormRenderer.js +54 -0
- package/lib/components/FormRenderer/FormRenderer.js.map +1 -0
- package/lib/components/FormRenderer/FormTitle.js +30 -0
- package/lib/components/FormRenderer/FormTitle.js.map +1 -0
- package/lib/components/FormRenderer/FormTopLevelItem.js +45 -0
- package/lib/components/FormRenderer/FormTopLevelItem.js.map +1 -0
- package/lib/components/FormRenderer/SmartFormsRenderer.js +39 -0
- package/lib/components/FormRenderer/SmartFormsRenderer.js.map +1 -0
- package/lib/components/FormRenderer/index.js +19 -0
- package/lib/components/FormRenderer/index.js.map +1 -0
- package/lib/components/Iconify/Iconify.js +26 -0
- package/lib/components/Iconify/Iconify.js.map +1 -0
- package/{dist → lib}/components/Lists.styles.d.ts +6 -6
- package/lib/components/Lists.styles.js +38 -0
- package/lib/components/Lists.styles.js.map +1 -0
- package/lib/components/Tabs/CompleteTabButton.js +29 -0
- package/lib/components/Tabs/CompleteTabButton.js.map +1 -0
- package/lib/components/Tabs/FormBodySingleTab.js +39 -0
- package/lib/components/Tabs/FormBodySingleTab.js.map +1 -0
- package/lib/components/Tabs/FormBodyTabList.js +52 -0
- package/lib/components/Tabs/FormBodyTabList.js.map +1 -0
- package/lib/components/index.js +18 -0
- package/lib/components/index.js.map +1 -0
- package/lib/hooks/index.js +2 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/hooks/useBackToTop.js +26 -0
- package/lib/hooks/useBackToTop.js.map +1 -0
- package/lib/hooks/useDebounce.js +38 -0
- package/lib/hooks/useDebounce.js.map +1 -0
- package/lib/hooks/useDecimalCalculatedExpression.js +50 -0
- package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -0
- package/lib/hooks/useHidden.js +35 -0
- package/lib/hooks/useHidden.js.map +1 -0
- package/lib/hooks/useInitialiseGroupTable.js +36 -0
- package/lib/hooks/useInitialiseGroupTable.js.map +1 -0
- package/lib/hooks/useInitialiseRenderer.js +49 -0
- package/lib/hooks/useInitialiseRenderer.js.map +1 -0
- package/lib/hooks/useInitialiseRepeatAnswers.js +36 -0
- package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -0
- package/lib/hooks/useInitialiseRepeatGroups.js +36 -0
- package/lib/hooks/useInitialiseRepeatGroups.js.map +1 -0
- package/lib/hooks/useIntegerCalculatedExpression.js +44 -0
- package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -0
- package/lib/hooks/useQueryClient.js +29 -0
- package/lib/hooks/useQueryClient.js.map +1 -0
- package/lib/hooks/useRenderingExtensions.js +30 -0
- package/lib/hooks/useRenderingExtensions.js.map +1 -0
- package/lib/hooks/useResponsive.js +37 -0
- package/lib/hooks/useResponsive.js.map +1 -0
- package/lib/hooks/useStringCalculatedExpression.js +44 -0
- package/lib/hooks/useStringCalculatedExpression.js.map +1 -0
- package/lib/hooks/useTerminologyServerQuery.js +73 -0
- package/lib/hooks/useTerminologyServerQuery.js.map +1 -0
- package/lib/hooks/useValidationError.js +38 -0
- package/lib/hooks/useValidationError.js.map +1 -0
- package/{dist → lib}/hooks/useValueSetCodings.d.ts +1 -1
- package/lib/hooks/useValueSetCodings.js +125 -0
- package/lib/hooks/useValueSetCodings.js.map +1 -0
- package/lib/index.d.ts +89 -0
- package/lib/index.js +153 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces/answerExpression.interface.js +18 -0
- package/lib/interfaces/answerExpression.interface.js.map +1 -0
- package/lib/interfaces/calculatedExpression.interface.js +2 -0
- package/lib/interfaces/calculatedExpression.interface.js.map +1 -0
- package/lib/interfaces/choice.enum.js +41 -0
- package/lib/interfaces/choice.enum.js.map +1 -0
- package/lib/interfaces/enableWhen.interface.js +18 -0
- package/lib/interfaces/enableWhen.interface.js.map +1 -0
- package/lib/interfaces/groupTable.interface.js +18 -0
- package/lib/interfaces/groupTable.interface.js.map +1 -0
- package/lib/interfaces/populate.interface.js +18 -0
- package/lib/interfaces/populate.interface.js.map +1 -0
- package/lib/interfaces/questionnaireStore.interface.js +18 -0
- package/lib/interfaces/questionnaireStore.interface.js.map +1 -0
- package/lib/interfaces/regex.interface.js +18 -0
- package/lib/interfaces/regex.interface.js.map +1 -0
- package/{dist → lib}/interfaces/renderProps.interface.d.ts +1 -1
- package/lib/interfaces/renderProps.interface.js +18 -0
- package/lib/interfaces/renderProps.interface.js.map +1 -0
- package/lib/interfaces/repeatGroup.interface.js +18 -0
- package/lib/interfaces/repeatGroup.interface.js.map +1 -0
- package/lib/interfaces/repeatItem.interface.js +2 -0
- package/lib/interfaces/repeatItem.interface.js.map +1 -0
- package/lib/interfaces/tab.interface.js +2 -0
- package/lib/interfaces/tab.interface.js.map +1 -0
- package/lib/interfaces/valueSet.interface.js +18 -0
- package/lib/interfaces/valueSet.interface.js.map +1 -0
- package/lib/interfaces/variables.interface.js +18 -0
- package/lib/interfaces/variables.interface.js.map +1 -0
- package/lib/stores/useConfigStore.js +17 -0
- package/lib/stores/useConfigStore.js.map +1 -0
- package/lib/stores/useQuestionnaireResponseStore.js +39 -0
- package/lib/stores/useQuestionnaireResponseStore.js.map +1 -0
- package/lib/stores/useQuestionnaireStore.js +151 -0
- package/lib/stores/useQuestionnaireStore.js.map +1 -0
- package/lib/theme/Theme.d.ts +38 -0
- package/lib/theme/Theme.js +39 -0
- package/lib/theme/Theme.js.map +1 -0
- package/lib/theme/globalStyles.d.ts +2 -0
- package/lib/theme/globalStyles.js +64 -0
- package/lib/theme/globalStyles.js.map +1 -0
- package/lib/theme/overrides/Accordion.d.ts +14 -0
- package/lib/theme/overrides/Accordion.js +32 -0
- package/lib/theme/overrides/Accordion.js.map +1 -0
- package/lib/theme/overrides/Autocomplete.d.ts +10 -0
- package/lib/theme/overrides/Autocomplete.js +28 -0
- package/lib/theme/overrides/Autocomplete.js.map +1 -0
- package/lib/theme/overrides/Backdrop.d.ts +13 -0
- package/lib/theme/overrides/Backdrop.js +32 -0
- package/lib/theme/overrides/Backdrop.js.map +1 -0
- package/lib/theme/overrides/Button.d.ts +33 -0
- package/lib/theme/overrides/Button.js +52 -0
- package/lib/theme/overrides/Button.js.map +1 -0
- package/lib/theme/overrides/Card.d.ts +35 -0
- package/lib/theme/overrides/Card.js +49 -0
- package/lib/theme/overrides/Card.js.map +1 -0
- package/lib/theme/overrides/Input.d.ts +64 -0
- package/lib/theme/overrides/Input.js +81 -0
- package/lib/theme/overrides/Input.js.map +1 -0
- package/lib/theme/overrides/Overrides.d.ts +3 -0
- package/lib/theme/overrides/Overrides.js +31 -0
- package/lib/theme/overrides/Overrides.js.map +1 -0
- package/lib/theme/overrides/Paper.d.ts +12 -0
- package/lib/theme/overrides/Paper.js +31 -0
- package/lib/theme/overrides/Paper.js.map +1 -0
- package/lib/theme/overrides/SpeedDial.d.ts +16 -0
- package/lib/theme/overrides/SpeedDial.js +34 -0
- package/lib/theme/overrides/SpeedDial.js.map +1 -0
- package/lib/theme/overrides/Table.d.ts +11 -0
- package/lib/theme/overrides/Table.js +29 -0
- package/lib/theme/overrides/Table.js.map +1 -0
- 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/palette.d.ts +28 -0
- package/lib/theme/palette.js +67 -0
- package/lib/theme/palette.js.map +1 -0
- package/lib/theme/shadows.d.ts +2 -0
- package/lib/theme/shadows.js +52 -0
- package/lib/theme/shadows.js.map +1 -0
- package/lib/theme/typography.d.ts +139 -0
- package/lib/theme/typography.js +80 -0
- package/lib/theme/typography.js.map +1 -0
- package/lib/utils/calculatedExpression.js +180 -0
- package/lib/utils/calculatedExpression.js.map +1 -0
- package/lib/utils/choice.js +160 -0
- package/lib/utils/choice.js.map +1 -0
- package/lib/utils/debounce.js +19 -0
- package/lib/utils/debounce.js.map +1 -0
- package/lib/utils/emptyResource.js +25 -0
- package/lib/utils/emptyResource.js.map +1 -0
- package/lib/utils/enableWhen.js +228 -0
- package/lib/utils/enableWhen.js.map +1 -0
- package/lib/utils/enableWhenExpression.js +76 -0
- package/lib/utils/enableWhenExpression.js.map +1 -0
- package/lib/utils/fhirpath.js +98 -0
- package/lib/utils/fhirpath.js.map +1 -0
- package/lib/utils/initialiseForm.js +45 -0
- package/lib/utils/initialiseForm.js.map +1 -0
- package/lib/utils/itemControl.js +299 -0
- package/lib/utils/itemControl.js.map +1 -0
- package/lib/utils/mapItem.js +80 -0
- package/lib/utils/mapItem.js.map +1 -0
- package/lib/utils/openChoice.js +150 -0
- package/lib/utils/openChoice.js.map +1 -0
- package/lib/utils/parseInputs.js +49 -0
- package/lib/utils/parseInputs.js.map +1 -0
- package/lib/utils/populate.js +78 -0
- package/lib/utils/populate.js.map +1 -0
- package/lib/utils/populateCallback.js +40 -0
- package/lib/utils/populateCallback.js.map +1 -0
- package/lib/utils/populateContexts.js +76 -0
- package/lib/utils/populateContexts.js.map +1 -0
- package/lib/utils/populateInputParams.js +193 -0
- package/lib/utils/populateInputParams.js.map +1 -0
- package/lib/utils/qItem.js +73 -0
- package/lib/utils/qItem.js.map +1 -0
- package/lib/utils/qrItem.js +221 -0
- package/lib/utils/qrItem.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +43 -0
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +79 -0
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js +59 -0
- package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js +18 -0
- package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +174 -0
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/extractTabs.js +31 -0
- package/lib/utils/questionnaireStoreUtils/extractTabs.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/extractVariables.js +63 -0
- package/lib/utils/questionnaireStoreUtils/extractVariables.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/resolveValueSets.js +58 -0
- package/lib/utils/questionnaireStoreUtils/resolveValueSets.js.map +1 -0
- package/lib/utils/removeHidden.js +104 -0
- package/lib/utils/removeHidden.js.map +1 -0
- package/lib/utils/tabs.js +190 -0
- package/lib/utils/tabs.js.map +1 -0
- package/lib/utils/valueSet.js +126 -0
- package/lib/utils/valueSet.js.map +1 -0
- package/package.json +19 -27
- package/src/api/populate.ts +70 -0
- package/src/components/Alert.styles.ts +45 -0
- package/src/components/BackToTopButton/BackToTopButton.tsx +47 -0
- package/src/components/Box.styles.ts +33 -0
- package/src/components/FormComponents/BooleanItem/BooleanField.tsx +44 -0
- package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +82 -0
- package/src/components/FormComponents/DateItem/DateField.tsx +56 -0
- package/src/components/FormComponents/DateItem/DateItem.tsx +95 -0
- package/src/components/FormComponents/DateTimeItem/DateTimeField.tsx +58 -0
- package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +94 -0
- package/src/components/FormComponents/DecimalItem/DecimalField.tsx +76 -0
- package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +152 -0
- package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +24 -0
- package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +38 -0
- package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +43 -0
- package/src/components/FormComponents/GridGroup/GridGroup.tsx +92 -0
- package/src/components/FormComponents/GridGroup/GridRow.tsx +88 -0
- package/src/components/FormComponents/GridGroup/GridTable.tsx +77 -0
- package/src/components/FormComponents/GroupItem/GroupHeading.tsx +59 -0
- package/src/components/FormComponents/GroupItem/GroupItem.styles.ts +28 -0
- package/src/components/FormComponents/GroupItem/GroupItem.tsx +124 -0
- package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +150 -0
- package/src/components/FormComponents/GroupItem/NextTabButton.tsx +43 -0
- package/src/components/FormComponents/GroupItem/NextTabButtonWrapper.tsx +76 -0
- package/src/components/FormComponents/IntegerItem/IntegerField.tsx +76 -0
- package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +140 -0
- package/src/components/FormComponents/Item.styles.ts +30 -0
- package/src/components/FormComponents/ItemParts/ContextDisplayItem.tsx +38 -0
- package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +36 -0
- package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +47 -0
- package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +58 -0
- package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +47 -0
- package/src/components/FormComponents/ItemParts/QItemCheckboxSingle.tsx +44 -0
- package/src/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.tsx +62 -0
- package/src/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.tsx +54 -0
- package/src/components/FormComponents/Lists.styles.ts +39 -0
- package/src/components/FormComponents/QItemChoice/QItemChoice.tsx +130 -0
- package/src/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.tsx +178 -0
- package/src/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.tsx +131 -0
- package/src/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.tsx +126 -0
- package/src/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.tsx +125 -0
- package/src/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.tsx +129 -0
- package/src/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.tsx +41 -0
- package/src/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.tsx +130 -0
- package/src/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.tsx +162 -0
- package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoice.tsx +104 -0
- package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.tsx +207 -0
- package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.tsx +194 -0
- package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.tsx +190 -0
- package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.tsx +149 -0
- package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.tsx +138 -0
- package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +47 -0
- package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +46 -0
- package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +125 -0
- package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +66 -0
- package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +47 -0
- package/src/components/FormComponents/RepeatItem/DeleteItemButton.tsx +46 -0
- package/src/components/FormComponents/RepeatItem/RepeatField.tsx +61 -0
- package/src/components/FormComponents/RepeatItem/RepeatItem.styles.tsx +32 -0
- package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +116 -0
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +62 -0
- package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +171 -0
- package/src/components/FormComponents/StringItem/StringField.tsx +76 -0
- package/src/components/FormComponents/StringItem/StringItem.tsx +131 -0
- package/src/components/FormComponents/Tables/DeleteRowButton.tsx +47 -0
- package/src/components/FormComponents/Tables/QItemGroupTable.tsx +171 -0
- package/src/components/FormComponents/Tables/QItemGroupTableRow.tsx +77 -0
- package/src/components/FormComponents/Tables/Table.styles.tsx +51 -0
- package/src/components/FormComponents/TextItem/TextField.tsx +74 -0
- package/src/components/FormComponents/TextItem/TextItem.tsx +128 -0
- package/src/components/FormComponents/Textfield.styles.ts +28 -0
- package/src/components/FormComponents/TimeItem/TimeField.tsx +54 -0
- package/src/components/FormComponents/TimeItem/TimeItem.tsx +94 -0
- package/src/components/FormComponents/Typography.styles.ts +24 -0
- package/src/components/FormComponents/UrlItem/UrlField.tsx +66 -0
- package/src/components/FormComponents/UrlItem/UrlItem.tsx +118 -0
- package/src/components/FormRenderer/BaseRenderer.tsx +82 -0
- package/src/components/FormRenderer/FormBodyCollapsible.tsx +96 -0
- package/src/components/FormRenderer/FormBodySingleCollapsible.tsx +76 -0
- package/src/components/FormRenderer/FormBodySingleCollapsibleWrapper.tsx +60 -0
- package/src/components/FormRenderer/FormBodyTabbed.tsx +106 -0
- package/src/components/FormRenderer/FormTitle.tsx +44 -0
- package/src/components/FormRenderer/FormTopLevelItem.tsx +93 -0
- package/src/components/FormRenderer/SmartFormsRenderer.tsx +62 -0
- package/src/components/FormRenderer/index.ts +19 -0
- package/src/components/Iconify/Iconify.tsx +38 -0
- package/src/components/Lists.styles.ts +39 -0
- package/src/components/Tabs/CompleteTabButton.tsx +42 -0
- package/src/components/Tabs/FormBodySingleTab.tsx +67 -0
- package/src/components/Tabs/FormBodyTabList.tsx +83 -0
- package/src/components/index.ts +18 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useBackToTop.ts +29 -0
- package/src/hooks/useDebounce.ts +45 -0
- package/src/hooks/useDecimalCalculatedExpression.ts +80 -0
- package/src/hooks/useHidden.ts +40 -0
- package/src/hooks/useInitialiseGroupTable.ts +42 -0
- package/src/hooks/useInitialiseRenderer.ts +62 -0
- package/src/hooks/useInitialiseRepeatAnswers.ts +42 -0
- package/src/hooks/useInitialiseRepeatGroups.ts +42 -0
- package/src/hooks/useIntegerCalculatedExpression.ts +72 -0
- package/src/hooks/useQueryClient.ts +31 -0
- package/src/hooks/useRenderingExtensions.ts +52 -0
- package/src/hooks/useResponsive.ts +51 -0
- package/src/hooks/useStringCalculatedExpression.ts +71 -0
- package/src/hooks/useTerminologyServerQuery.ts +98 -0
- package/src/hooks/useValidationError.ts +48 -0
- package/src/hooks/useValueSetCodings.ts +150 -0
- package/src/index.ts +163 -0
- package/src/interfaces/answerExpression.interface.ts +23 -0
- package/src/interfaces/calculatedExpression.interface.ts +4 -0
- package/src/interfaces/choice.enum.ts +40 -0
- package/src/interfaces/enableWhen.interface.ts +40 -0
- package/src/interfaces/groupTable.interface.ts +23 -0
- package/src/interfaces/populate.interface.ts +218 -0
- package/src/interfaces/questionnaireStore.interface.ts +36 -0
- package/src/interfaces/regex.interface.ts +21 -0
- package/src/interfaces/renderProps.interface.ts +34 -0
- package/src/interfaces/repeatGroup.interface.ts +28 -0
- package/src/interfaces/repeatItem.interface.ts +6 -0
- package/src/interfaces/tab.interface.ts +18 -0
- package/src/interfaces/valueSet.interface.ts +23 -0
- package/src/interfaces/variables.interface.ts +28 -0
- package/src/stores/useConfigStore.ts +36 -0
- package/src/stores/useQuestionnaireResponseStore.ts +58 -0
- package/src/stores/useQuestionnaireStore.ts +232 -0
- package/src/stories/SmartFormsRenderer.stories.ts +104 -0
- package/src/stories/assets/Q715.json +15086 -0
- package/src/stories/assets/QTestGrid.json +166 -0
- package/src/stories/assets/R715.json +311 -0
- package/src/stories/assets/RTestGrid.json +34 -0
- package/src/theme/Theme.tsx +107 -0
- package/src/theme/globalStyles.tsx +68 -0
- package/src/theme/overrides/Accordion.ts +34 -0
- package/src/theme/overrides/Autocomplete.ts +30 -0
- package/src/theme/overrides/Backdrop.ts +34 -0
- package/src/theme/overrides/Button.ts +54 -0
- package/src/theme/overrides/Card.ts +51 -0
- package/src/theme/overrides/Input.ts +83 -0
- package/src/theme/overrides/Overrides.ts +45 -0
- package/src/theme/overrides/Paper.ts +31 -0
- package/src/theme/overrides/SpeedDial.ts +36 -0
- package/src/theme/overrides/Table.ts +31 -0
- package/src/theme/overrides/Typography.ts +33 -0
- package/src/theme/palette.ts +100 -0
- package/src/theme/shadows.ts +54 -0
- package/src/theme/typography.ts +114 -0
- package/src/utils/calculatedExpression.ts +299 -0
- package/src/utils/choice.ts +194 -0
- package/src/utils/debounce.ts +20 -0
- package/src/utils/emptyResource.ts +28 -0
- package/src/utils/enableWhen.ts +303 -0
- package/src/utils/enableWhenExpression.ts +123 -0
- package/src/utils/fhirpath.ts +164 -0
- package/src/utils/initialiseForm.ts +81 -0
- package/src/utils/itemControl.ts +367 -0
- package/src/utils/mapItem.ts +97 -0
- package/src/utils/openChoice.ts +179 -0
- package/src/utils/parseInputs.ts +58 -0
- package/src/utils/populate.ts +117 -0
- package/src/utils/populateCallback.ts +53 -0
- package/src/utils/populateContexts.ts +112 -0
- package/src/utils/populateInputParams.ts +242 -0
- package/src/utils/qItem.ts +103 -0
- package/src/utils/qrItem.ts +250 -0
- package/src/utils/questionnaireStoreUtils/addAdditionalVariables.ts +52 -0
- package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +96 -0
- package/src/utils/questionnaireStoreUtils/extractContainedValueSets.ts +74 -0
- package/src/utils/questionnaireStoreUtils/extractLaunchContext.ts +21 -0
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +239 -0
- package/src/utils/questionnaireStoreUtils/extractTabs.ts +37 -0
- package/src/utils/questionnaireStoreUtils/extractVariables.ts +77 -0
- package/src/utils/questionnaireStoreUtils/resolveValueSets.ts +68 -0
- package/src/utils/removeHidden.ts +162 -0
- package/src/utils/tabs.ts +255 -0
- package/src/utils/valueSet.ts +159 -0
- package/tsconfig.json +21 -0
- package/dist/components/FormComponents/Item.styles.d.ts +0 -6
- package/dist/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +0 -22
- package/dist/components/FormComponents/Typography.styles.d.ts +0 -6
- package/dist/components/FormRenderer/BaseFormRenderer.d.ts +0 -3
- package/dist/components/FormRenderer/Form.d.ts +0 -3
- package/dist/index.d.ts +0 -16
- package/dist/index.esm.js +0 -10650
- package/dist/index.esm.js.map +0 -1
- package/dist/index.js +0 -10710
- package/dist/index.js.map +0 -1
- package/dist/stories/SmartFormsRenderer.stories.d.ts +0 -14
- /package/{dist → lib}/api/populate.d.ts +0 -0
- /package/{dist → lib}/components/BackToTopButton/BackToTopButton.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/BooleanItem/BooleanField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/BooleanItem/BooleanItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/DateItem/DateField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/DateItem/DateItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/DateTimeItem/DateTimeField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/DecimalItem/DecimalField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/DecimalItem/DecimalItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/DisplayItem/DisplayItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/GridGroup/GridTable.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/GroupItem/GroupHeading.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/GroupItem/NextTabButton.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/GroupItem/NextTabButtonWrapper.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/IntegerItem/IntegerField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/IntegerItem/IntegerItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/ItemParts/ContextDisplayItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/ItemParts/QItemCheckboxSingle.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/RepeatGroup/AddItemButton.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/RepeatItem/AddItemButton.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/RepeatItem/RepeatField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/RepeatItem/RepeatItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/SingleItem/SingleItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/StringItem/StringField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/StringItem/StringItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/Tables/DeleteRowButton.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/Tables/Table.styles.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/TextItem/TextField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/TextItem/TextItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/TimeItem/TimeField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/TimeItem/TimeItem.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/UrlItem/UrlField.d.ts +0 -0
- /package/{dist → lib}/components/FormComponents/UrlItem/UrlItem.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/BaseRenderer.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/FormBodyCollapsible.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/FormBodySingleCollapsible.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/FormBodyTabbed.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/FormRenderer.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/FormTitle.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/FormTopLevelItem.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/SmartFormsRenderer.d.ts +0 -0
- /package/{dist → lib}/components/FormRenderer/index.d.ts +0 -0
- /package/{dist → lib}/components/Iconify/Iconify.d.ts +0 -0
- /package/{dist → lib}/components/Tabs/CompleteTabButton.d.ts +0 -0
- /package/{dist → lib}/components/Tabs/FormBodySingleTab.d.ts +0 -0
- /package/{dist → lib}/components/Tabs/FormBodyTabList.d.ts +0 -0
- /package/{dist → lib}/components/index.d.ts +0 -0
- /package/{dist → lib}/hooks/index.d.ts +0 -0
- /package/{dist → lib}/hooks/useBackToTop.d.ts +0 -0
- /package/{dist → lib}/hooks/useDebounce.d.ts +0 -0
- /package/{dist → lib}/hooks/useDecimalCalculatedExpression.d.ts +0 -0
- /package/{dist → lib}/hooks/useHidden.d.ts +0 -0
- /package/{dist → lib}/hooks/useInitialiseGroupTable.d.ts +0 -0
- /package/{dist → lib}/hooks/useInitialiseRenderer.d.ts +0 -0
- /package/{dist → lib}/hooks/useInitialiseRepeatAnswers.d.ts +0 -0
- /package/{dist → lib}/hooks/useInitialiseRepeatGroups.d.ts +0 -0
- /package/{dist → lib}/hooks/useIntegerCalculatedExpression.d.ts +0 -0
- /package/{dist → lib}/hooks/useQueryClient.d.ts +0 -0
- /package/{dist → lib}/hooks/useRenderingExtensions.d.ts +0 -0
- /package/{dist → lib}/hooks/useResponsive.d.ts +0 -0
- /package/{dist → lib}/hooks/useStringCalculatedExpression.d.ts +0 -0
- /package/{dist → lib}/hooks/useTerminologyServerQuery.d.ts +0 -0
- /package/{dist → lib}/hooks/useValidationError.d.ts +0 -0
- /package/{dist → lib}/interfaces/answerExpression.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/calculatedExpression.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/choice.enum.d.ts +0 -0
- /package/{dist → lib}/interfaces/enableWhen.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/groupTable.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/populate.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/questionnaireStore.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/regex.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/repeatGroup.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/repeatItem.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/tab.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/valueSet.interface.d.ts +0 -0
- /package/{dist → lib}/interfaces/variables.interface.d.ts +0 -0
- /package/{dist → lib}/stores/useConfigStore.d.ts +0 -0
- /package/{dist → lib}/stores/useQuestionnaireResponseStore.d.ts +0 -0
- /package/{dist → lib}/stores/useQuestionnaireStore.d.ts +0 -0
- /package/{dist → lib}/utils/calculatedExpression.d.ts +0 -0
- /package/{dist → lib}/utils/choice.d.ts +0 -0
- /package/{dist → lib}/utils/debounce.d.ts +0 -0
- /package/{dist → lib}/utils/emptyResource.d.ts +0 -0
- /package/{dist → lib}/utils/enableWhen.d.ts +0 -0
- /package/{dist → lib}/utils/enableWhenExpression.d.ts +0 -0
- /package/{dist → lib}/utils/fhirpath.d.ts +0 -0
- /package/{dist → lib}/utils/initialiseForm.d.ts +0 -0
- /package/{dist → lib}/utils/itemControl.d.ts +0 -0
- /package/{dist → lib}/utils/mapItem.d.ts +0 -0
- /package/{dist → lib}/utils/openChoice.d.ts +0 -0
- /package/{dist → lib}/utils/parseInputs.d.ts +0 -0
- /package/{dist → lib}/utils/populate.d.ts +0 -0
- /package/{dist → lib}/utils/populateCallback.d.ts +0 -0
- /package/{dist → lib}/utils/populateContexts.d.ts +0 -0
- /package/{dist → lib}/utils/populateInputParams.d.ts +0 -0
- /package/{dist → lib}/utils/qItem.d.ts +0 -0
- /package/{dist → lib}/utils/qrItem.d.ts +0 -0
- /package/{dist → lib}/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -0
- /package/{dist → lib}/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -0
- /package/{dist → lib}/utils/questionnaireStoreUtils/extractContainedValueSets.d.ts +0 -0
- /package/{dist → lib}/utils/questionnaireStoreUtils/extractLaunchContext.d.ts +0 -0
- /package/{dist → lib}/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +0 -0
- /package/{dist → lib}/utils/questionnaireStoreUtils/extractTabs.d.ts +0 -0
- /package/{dist → lib}/utils/questionnaireStoreUtils/extractVariables.d.ts +0 -0
- /package/{dist → lib}/utils/questionnaireStoreUtils/resolveValueSets.d.ts +0 -0
- /package/{dist → lib}/utils/removeHidden.d.ts +0 -0
- /package/{dist → lib}/utils/tabs.d.ts +0 -0
- /package/{dist → lib}/utils/valueSet.d.ts +0 -0
- /package/{dist/setup-jest.d.ts → src/setup-jest.ts} +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
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 { Box, Button } from '@mui/material';
|
|
20
|
+
import AddIcon from '@mui/icons-material/Add';
|
|
21
|
+
import type { RepeatGroupSingle } from '../../../interfaces/repeatGroup.interface';
|
|
22
|
+
|
|
23
|
+
interface AddItemButtonProps {
|
|
24
|
+
repeatGroups: RepeatGroupSingle[];
|
|
25
|
+
onAddItem: () => void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function AddItemButton(props: AddItemButtonProps) {
|
|
29
|
+
const { repeatGroups, onAddItem } = props;
|
|
30
|
+
|
|
31
|
+
const isDisabled = repeatGroups[repeatGroups.length - 1].qrItem === null;
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<Box display="flex" flexDirection="row-reverse">
|
|
35
|
+
<Button
|
|
36
|
+
variant="contained"
|
|
37
|
+
startIcon={<AddIcon />}
|
|
38
|
+
disabled={isDisabled}
|
|
39
|
+
onClick={onAddItem}
|
|
40
|
+
data-test="button-add-repeat-item">
|
|
41
|
+
Add Item
|
|
42
|
+
</Button>
|
|
43
|
+
</Box>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default AddItemButton;
|
|
@@ -0,0 +1,46 @@
|
|
|
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 { RepeatDeleteTooltip } from '../RepeatItem/RepeatItem.styles';
|
|
20
|
+
import { IconButton } from '@mui/material';
|
|
21
|
+
import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';
|
|
22
|
+
import type { QuestionnaireResponseItem } from 'fhir/r4';
|
|
23
|
+
|
|
24
|
+
interface DeleteItemButtonProps {
|
|
25
|
+
nullableQrItem: QuestionnaireResponseItem | null;
|
|
26
|
+
numOfRepeatGroups: number;
|
|
27
|
+
onDeleteItem: () => void;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function DeleteItemButton(props: DeleteItemButtonProps) {
|
|
31
|
+
const { nullableQrItem, numOfRepeatGroups, onDeleteItem } = props;
|
|
32
|
+
|
|
33
|
+
const isDisabled = nullableQrItem === null || numOfRepeatGroups === 1;
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<RepeatDeleteTooltip className="repeat-group-delete" title="Delete item">
|
|
37
|
+
<span>
|
|
38
|
+
<IconButton size="small" color="error" disabled={isDisabled} onClick={onDeleteItem}>
|
|
39
|
+
<RemoveCircleOutlineIcon />
|
|
40
|
+
</IconButton>
|
|
41
|
+
</span>
|
|
42
|
+
</RepeatDeleteTooltip>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default DeleteItemButton;
|
|
@@ -0,0 +1,125 @@
|
|
|
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 { PropsWithQrRepeatGroupChangeHandler } from '../../../interfaces/renderProps.interface';
|
|
20
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
21
|
+
import useInitialiseRepeatGroups from '../../../hooks/useInitialiseRepeatGroups';
|
|
22
|
+
import { QGroupContainerBox } from '../../Box.styles';
|
|
23
|
+
import { Card, Collapse, Divider } from '@mui/material';
|
|
24
|
+
import { QGroupHeadingTypography } from '../Typography.styles';
|
|
25
|
+
import { TransitionGroup } from 'react-transition-group';
|
|
26
|
+
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
27
|
+
import { nanoid } from 'nanoid';
|
|
28
|
+
import RepeatGroupItem from './RepeatGroupItem';
|
|
29
|
+
import AddItemButton from './AddItemButton';
|
|
30
|
+
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
31
|
+
|
|
32
|
+
interface RepeatGroupProps extends PropsWithQrRepeatGroupChangeHandler {
|
|
33
|
+
qItem: QuestionnaireItem;
|
|
34
|
+
qrItems: QuestionnaireResponseItem[];
|
|
35
|
+
groupCardElevation: number;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function RepeatGroup(props: RepeatGroupProps) {
|
|
39
|
+
const { qItem, qrItems, groupCardElevation, onQrRepeatGroupChange } = props;
|
|
40
|
+
|
|
41
|
+
const initialRepeatGroups = useInitialiseRepeatGroups(qrItems);
|
|
42
|
+
|
|
43
|
+
const [repeatGroups, setRepeatGroups] = useState(initialRepeatGroups);
|
|
44
|
+
|
|
45
|
+
function handleAnswerChange(newQrItem: QuestionnaireResponseItem, index: number) {
|
|
46
|
+
const updatedRepeatGroups = [...repeatGroups];
|
|
47
|
+
|
|
48
|
+
if (newQrItem.item) {
|
|
49
|
+
updatedRepeatGroups[index].qrItem = {
|
|
50
|
+
linkId: newQrItem.linkId,
|
|
51
|
+
text: newQrItem.text,
|
|
52
|
+
item: newQrItem.item
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
setRepeatGroups(updatedRepeatGroups);
|
|
57
|
+
onQrRepeatGroupChange({
|
|
58
|
+
linkId: qItem.linkId,
|
|
59
|
+
qrItems: updatedRepeatGroups.flatMap((singleGroup) =>
|
|
60
|
+
singleGroup.qrItem ? [singleGroup.qrItem] : []
|
|
61
|
+
)
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function handleDeleteItem(index: number) {
|
|
66
|
+
const updatedRepeatGroups = [...repeatGroups];
|
|
67
|
+
|
|
68
|
+
updatedRepeatGroups.splice(index, 1);
|
|
69
|
+
|
|
70
|
+
setRepeatGroups(updatedRepeatGroups);
|
|
71
|
+
onQrRepeatGroupChange({
|
|
72
|
+
linkId: qItem.linkId,
|
|
73
|
+
qrItems: updatedRepeatGroups.flatMap((singleGroup) =>
|
|
74
|
+
singleGroup.qrItem ? [singleGroup.qrItem] : []
|
|
75
|
+
)
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function handleAddItem() {
|
|
80
|
+
setRepeatGroups([
|
|
81
|
+
...repeatGroups,
|
|
82
|
+
{
|
|
83
|
+
nanoId: nanoid(),
|
|
84
|
+
qrItem: null
|
|
85
|
+
}
|
|
86
|
+
]);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<QGroupContainerBox key={qItem.linkId} cardElevation={groupCardElevation} isRepeated={true}>
|
|
91
|
+
<Card elevation={groupCardElevation} sx={{ p: 3, py: 2.5, mb: 3.5 }}>
|
|
92
|
+
<QGroupHeadingTypography variant="h6">
|
|
93
|
+
<LabelWrapper qItem={qItem} />
|
|
94
|
+
</QGroupHeadingTypography>
|
|
95
|
+
<Divider sx={{ mt: 1, mb: 1.5 }} light />
|
|
96
|
+
<TransitionGroup>
|
|
97
|
+
{repeatGroups.map(({ nanoId, qrItem: nullableQrItem }, index) => {
|
|
98
|
+
const answeredQrItem = createEmptyQrItem(qItem);
|
|
99
|
+
if (nullableQrItem) {
|
|
100
|
+
answeredQrItem.item = nullableQrItem.item;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return (
|
|
104
|
+
<Collapse key={nanoId} timeout={200}>
|
|
105
|
+
<RepeatGroupItem
|
|
106
|
+
qItem={qItem}
|
|
107
|
+
answeredQrItem={answeredQrItem}
|
|
108
|
+
nullableQrItem={nullableQrItem}
|
|
109
|
+
numOfRepeatGroups={repeatGroups.length}
|
|
110
|
+
groupCardElevation={groupCardElevation + 1}
|
|
111
|
+
onDeleteItem={() => handleDeleteItem(index)}
|
|
112
|
+
onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
|
|
113
|
+
/>
|
|
114
|
+
</Collapse>
|
|
115
|
+
);
|
|
116
|
+
})}
|
|
117
|
+
</TransitionGroup>
|
|
118
|
+
|
|
119
|
+
<AddItemButton repeatGroups={repeatGroups} onAddItem={handleAddItem} />
|
|
120
|
+
</Card>
|
|
121
|
+
</QGroupContainerBox>
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export default RepeatGroup;
|
|
@@ -0,0 +1,66 @@
|
|
|
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 { RepeatGroupContainerStack } from '../RepeatItem/RepeatItem.styles';
|
|
20
|
+
import { Box } from '@mui/material';
|
|
21
|
+
import GroupItem from '../GroupItem/GroupItem';
|
|
22
|
+
import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
|
|
23
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
24
|
+
import DeleteItemButton from './DeleteItemButton';
|
|
25
|
+
|
|
26
|
+
interface RepeatGroupItemProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
|
|
27
|
+
qItem: QuestionnaireItem;
|
|
28
|
+
answeredQrItem: QuestionnaireResponseItem;
|
|
29
|
+
nullableQrItem: QuestionnaireResponseItem | null;
|
|
30
|
+
numOfRepeatGroups: number;
|
|
31
|
+
groupCardElevation: number;
|
|
32
|
+
onDeleteItem: () => void;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function RepeatGroupItem(props: RepeatGroupItemProps) {
|
|
36
|
+
const {
|
|
37
|
+
qItem,
|
|
38
|
+
answeredQrItem,
|
|
39
|
+
nullableQrItem,
|
|
40
|
+
numOfRepeatGroups,
|
|
41
|
+
groupCardElevation,
|
|
42
|
+
onDeleteItem,
|
|
43
|
+
onQrItemChange
|
|
44
|
+
} = props;
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<RepeatGroupContainerStack direction="row" justifyContent="end">
|
|
48
|
+
<Box sx={{ flexGrow: 1 }}>
|
|
49
|
+
<GroupItem
|
|
50
|
+
qItem={qItem}
|
|
51
|
+
qrItem={answeredQrItem}
|
|
52
|
+
isRepeated={true}
|
|
53
|
+
groupCardElevation={groupCardElevation + 1}
|
|
54
|
+
onQrItemChange={onQrItemChange}
|
|
55
|
+
/>
|
|
56
|
+
</Box>
|
|
57
|
+
<DeleteItemButton
|
|
58
|
+
nullableQrItem={nullableQrItem}
|
|
59
|
+
numOfRepeatGroups={numOfRepeatGroups}
|
|
60
|
+
onDeleteItem={onDeleteItem}
|
|
61
|
+
/>
|
|
62
|
+
</RepeatGroupContainerStack>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export default RepeatGroupItem;
|
|
@@ -0,0 +1,47 @@
|
|
|
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 { Box, Button } from '@mui/material';
|
|
20
|
+
import AddIcon from '@mui/icons-material/Add';
|
|
21
|
+
import type { RepeatAnswer } from '../../../interfaces/repeatItem.interface';
|
|
22
|
+
|
|
23
|
+
interface AddItemButtonProps {
|
|
24
|
+
repeatAnswers: RepeatAnswer[];
|
|
25
|
+
onAddItem: () => void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function AddItemButton(props: AddItemButtonProps) {
|
|
29
|
+
const { repeatAnswers, onAddItem } = props;
|
|
30
|
+
|
|
31
|
+
const isDisabled = repeatAnswers[repeatAnswers.length - 1].answer === null;
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<Box display="flex" flexDirection="row-reverse">
|
|
35
|
+
<Button
|
|
36
|
+
variant="contained"
|
|
37
|
+
startIcon={<AddIcon />}
|
|
38
|
+
disabled={isDisabled}
|
|
39
|
+
onClick={onAddItem}
|
|
40
|
+
data-test="button-add-repeat-item">
|
|
41
|
+
Add Item
|
|
42
|
+
</Button>
|
|
43
|
+
</Box>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default AddItemButton;
|
|
@@ -0,0 +1,46 @@
|
|
|
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 { RepeatDeleteTooltip } from './RepeatItem.styles';
|
|
20
|
+
import { IconButton } from '@mui/material';
|
|
21
|
+
import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';
|
|
22
|
+
import type { QuestionnaireResponseItemAnswer } from 'fhir/r4';
|
|
23
|
+
|
|
24
|
+
interface DeleteItemButtonProps {
|
|
25
|
+
answer: QuestionnaireResponseItemAnswer | null;
|
|
26
|
+
numOfRepeatAnswers: number;
|
|
27
|
+
onDeleteAnswer: () => void;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function DeleteItemButton(props: DeleteItemButtonProps) {
|
|
31
|
+
const { answer, numOfRepeatAnswers, onDeleteAnswer } = props;
|
|
32
|
+
|
|
33
|
+
const isDisabled = answer === null || numOfRepeatAnswers === 1;
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<RepeatDeleteTooltip className="repeat-item-delete" title="Delete item">
|
|
37
|
+
<span>
|
|
38
|
+
<IconButton size="small" color="error" disabled={isDisabled} onClick={onDeleteAnswer}>
|
|
39
|
+
<RemoveCircleOutlineIcon fontSize="small" />
|
|
40
|
+
</IconButton>
|
|
41
|
+
</span>
|
|
42
|
+
</RepeatDeleteTooltip>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default DeleteItemButton;
|
|
@@ -0,0 +1,61 @@
|
|
|
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 { Box } from '@mui/material';
|
|
20
|
+
import { RepeatItemContainerStack } from './RepeatItem.styles';
|
|
21
|
+
import SingleItem from '../SingleItem/SingleItem';
|
|
22
|
+
import type {
|
|
23
|
+
QuestionnaireItem,
|
|
24
|
+
QuestionnaireResponseItem,
|
|
25
|
+
QuestionnaireResponseItemAnswer
|
|
26
|
+
} from 'fhir/r4';
|
|
27
|
+
import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
|
|
28
|
+
import DeleteItemButton from './DeleteItemButton';
|
|
29
|
+
|
|
30
|
+
interface RepeatFieldProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
|
|
31
|
+
qItem: QuestionnaireItem;
|
|
32
|
+
qrItem: QuestionnaireResponseItem;
|
|
33
|
+
answer: QuestionnaireResponseItemAnswer | null;
|
|
34
|
+
numOfRepeatAnswers: number;
|
|
35
|
+
onDeleteAnswer: () => void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function RepeatField(props: RepeatFieldProps) {
|
|
39
|
+
const { qItem, qrItem, answer, numOfRepeatAnswers, onDeleteAnswer, onQrItemChange } = props;
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<RepeatItemContainerStack direction="row">
|
|
43
|
+
<Box sx={{ flexGrow: 1 }}>
|
|
44
|
+
<SingleItem
|
|
45
|
+
qItem={qItem}
|
|
46
|
+
qrItem={qrItem}
|
|
47
|
+
isRepeated={qItem.repeats ?? false}
|
|
48
|
+
isTabled={false}
|
|
49
|
+
onQrItemChange={onQrItemChange}
|
|
50
|
+
/>
|
|
51
|
+
</Box>
|
|
52
|
+
<DeleteItemButton
|
|
53
|
+
answer={answer}
|
|
54
|
+
numOfRepeatAnswers={numOfRepeatAnswers}
|
|
55
|
+
onDeleteAnswer={onDeleteAnswer}
|
|
56
|
+
/>
|
|
57
|
+
</RepeatItemContainerStack>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default RepeatField;
|
|
@@ -0,0 +1,32 @@
|
|
|
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 { Stack, styled, Tooltip } from '@mui/material';
|
|
19
|
+
|
|
20
|
+
export const RepeatDeleteTooltip = styled(Tooltip)(() => ({
|
|
21
|
+
marginLeft: 8
|
|
22
|
+
}));
|
|
23
|
+
|
|
24
|
+
export const RepeatItemContainerStack = styled(Stack)(() => ({
|
|
25
|
+
alignItems: 'center',
|
|
26
|
+
paddingBottom: 8
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
export const RepeatGroupContainerStack = styled(Stack)(() => ({
|
|
30
|
+
alignItems: 'center',
|
|
31
|
+
paddingBottom: 16
|
|
32
|
+
}));
|
|
@@ -0,0 +1,116 @@
|
|
|
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 { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
|
|
20
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
21
|
+
import { nanoid } from 'nanoid';
|
|
22
|
+
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
23
|
+
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
24
|
+
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
25
|
+
import AddItemButton from './AddItemButton';
|
|
26
|
+
import { TransitionGroup } from 'react-transition-group';
|
|
27
|
+
import RepeatField from './RepeatField';
|
|
28
|
+
import { Collapse } from '@mui/material';
|
|
29
|
+
import useInitialiseRepeatAnswers from '../../../hooks/useInitialiseRepeatAnswers';
|
|
30
|
+
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
31
|
+
|
|
32
|
+
interface RepeatItemProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
|
|
33
|
+
qItem: QuestionnaireItem;
|
|
34
|
+
qrItem: QuestionnaireResponseItem;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function RepeatItem(props: RepeatItemProps) {
|
|
38
|
+
const { qItem, qrItem, onQrItemChange } = props;
|
|
39
|
+
|
|
40
|
+
// Get additional rendering extensions
|
|
41
|
+
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
42
|
+
|
|
43
|
+
const initialRepeatAnswers = useInitialiseRepeatAnswers(qrItem);
|
|
44
|
+
|
|
45
|
+
const [repeatAnswers, setRepeatAnswers] = useState(initialRepeatAnswers);
|
|
46
|
+
|
|
47
|
+
// Event Handlers
|
|
48
|
+
function handleAnswerChange(newQrItem: QuestionnaireResponseItem, index: number) {
|
|
49
|
+
const updatedRepeatAnswers = [...repeatAnswers];
|
|
50
|
+
updatedRepeatAnswers[index].answer = newQrItem.answer ? newQrItem.answer[0] : null;
|
|
51
|
+
|
|
52
|
+
setRepeatAnswers(updatedRepeatAnswers);
|
|
53
|
+
onQrItemChange({
|
|
54
|
+
...createEmptyQrItem(qItem),
|
|
55
|
+
answer: updatedRepeatAnswers.flatMap((repeatAnswer) =>
|
|
56
|
+
repeatAnswer.answer ? [repeatAnswer.answer] : []
|
|
57
|
+
)
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function handleDeleteItem(index: number) {
|
|
62
|
+
const updatedRepeatAnswers = [...repeatAnswers];
|
|
63
|
+
|
|
64
|
+
updatedRepeatAnswers.splice(index, 1);
|
|
65
|
+
|
|
66
|
+
setRepeatAnswers(updatedRepeatAnswers);
|
|
67
|
+
onQrItemChange({
|
|
68
|
+
...createEmptyQrItem(qItem),
|
|
69
|
+
answer: updatedRepeatAnswers.flatMap((repeatAnswer) =>
|
|
70
|
+
repeatAnswer.answer ? [repeatAnswer.answer] : []
|
|
71
|
+
)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function handleAddItem() {
|
|
76
|
+
setRepeatAnswers([
|
|
77
|
+
...repeatAnswers,
|
|
78
|
+
{
|
|
79
|
+
nanoId: nanoid(),
|
|
80
|
+
answer: null
|
|
81
|
+
}
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<FullWidthFormComponentBox data-test="q-item-repeat-box">
|
|
87
|
+
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
|
|
88
|
+
<TransitionGroup>
|
|
89
|
+
{repeatAnswers.map(({ nanoId, answer }, index) => {
|
|
90
|
+
const repeatAnswerQrItem = createEmptyQrItem(qItem);
|
|
91
|
+
if (answer) {
|
|
92
|
+
repeatAnswerQrItem.answer = [answer];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return (
|
|
96
|
+
<Collapse key={nanoId} timeout={200}>
|
|
97
|
+
<RepeatField
|
|
98
|
+
qItem={qItem}
|
|
99
|
+
qrItem={repeatAnswerQrItem}
|
|
100
|
+
answer={answer}
|
|
101
|
+
numOfRepeatAnswers={repeatAnswers.length}
|
|
102
|
+
onDeleteAnswer={() => handleDeleteItem(index)}
|
|
103
|
+
onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
|
|
104
|
+
/>
|
|
105
|
+
</Collapse>
|
|
106
|
+
);
|
|
107
|
+
})}
|
|
108
|
+
</TransitionGroup>
|
|
109
|
+
</ItemFieldGrid>
|
|
110
|
+
|
|
111
|
+
<AddItemButton repeatAnswers={repeatAnswers} onAddItem={handleAddItem} />
|
|
112
|
+
</FullWidthFormComponentBox>
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export default RepeatItem;
|
|
@@ -0,0 +1,62 @@
|
|
|
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, { useCallback } from 'react';
|
|
19
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
20
|
+
import type {
|
|
21
|
+
PropsWithIsRepeatedAttribute,
|
|
22
|
+
PropsWithIsTabledAttribute,
|
|
23
|
+
PropsWithQrItemChangeHandler
|
|
24
|
+
} from '../../../interfaces/renderProps.interface';
|
|
25
|
+
import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
|
|
26
|
+
import SingleItemSwitcher from './SingleItemSwitcher';
|
|
27
|
+
|
|
28
|
+
interface SingleItemProps
|
|
29
|
+
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
30
|
+
PropsWithIsRepeatedAttribute,
|
|
31
|
+
PropsWithIsTabledAttribute {
|
|
32
|
+
qItem: QuestionnaireItem;
|
|
33
|
+
qrItem: QuestionnaireResponseItem;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function SingleItem(props: SingleItemProps) {
|
|
37
|
+
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
38
|
+
|
|
39
|
+
const updateEnableWhenItem = useQuestionnaireStore((state) => state.updateEnableWhenItem);
|
|
40
|
+
|
|
41
|
+
const handleQrItemChange = useCallback(
|
|
42
|
+
(newQrItem: QuestionnaireResponseItem) => {
|
|
43
|
+
if (newQrItem.answer) {
|
|
44
|
+
updateEnableWhenItem(qItem.linkId, newQrItem.answer);
|
|
45
|
+
}
|
|
46
|
+
onQrItemChange(newQrItem);
|
|
47
|
+
},
|
|
48
|
+
[updateEnableWhenItem, onQrItemChange, qItem.linkId]
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<SingleItemSwitcher
|
|
53
|
+
qItem={qItem}
|
|
54
|
+
qrItem={qrItem}
|
|
55
|
+
isRepeated={isRepeated}
|
|
56
|
+
isTabled={isTabled}
|
|
57
|
+
onQrItemChange={handleQrItemChange}
|
|
58
|
+
/>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export default SingleItem;
|