@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,59 @@
|
|
|
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, { memo } from 'react';
|
|
19
|
+
import { Box, Divider } from '@mui/material';
|
|
20
|
+
import { QGroupHeadingTypography } from '../Typography.styles';
|
|
21
|
+
import type { PropsWithIsRepeatedAttribute } from '../../../interfaces/renderProps.interface';
|
|
22
|
+
import type { QuestionnaireItem } from 'fhir/r4';
|
|
23
|
+
import { getContextDisplays } from '../../../utils/tabs';
|
|
24
|
+
import ContextDisplayItem from '../ItemParts/ContextDisplayItem';
|
|
25
|
+
import LabelText from '../ItemParts/ItemLabelText';
|
|
26
|
+
|
|
27
|
+
interface GroupHeadingProps extends PropsWithIsRepeatedAttribute {
|
|
28
|
+
qItem: QuestionnaireItem;
|
|
29
|
+
tabIsMarkedAsComplete?: boolean;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const GroupHeading = memo(function GroupHeading(props: GroupHeadingProps) {
|
|
33
|
+
const { qItem, tabIsMarkedAsComplete, isRepeated } = props;
|
|
34
|
+
|
|
35
|
+
const contextDisplayItems = getContextDisplays(qItem);
|
|
36
|
+
|
|
37
|
+
if (isRepeated) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<>
|
|
43
|
+
<Box display="flex" alignItems="center" justifyContent="space-between">
|
|
44
|
+
<QGroupHeadingTypography variant="h6" isTabHeading={tabIsMarkedAsComplete !== undefined}>
|
|
45
|
+
<LabelText qItem={qItem} />
|
|
46
|
+
</QGroupHeadingTypography>
|
|
47
|
+
|
|
48
|
+
<Box display="flex" columnGap={0.5}>
|
|
49
|
+
{contextDisplayItems.map((item) => {
|
|
50
|
+
return <ContextDisplayItem key={item.linkId} displayItem={item} />;
|
|
51
|
+
})}
|
|
52
|
+
</Box>
|
|
53
|
+
</Box>
|
|
54
|
+
{qItem.text ? <Divider sx={{ mt: 1, mb: 1.5 }} light /> : null}
|
|
55
|
+
</>
|
|
56
|
+
);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
export default GroupHeading;
|
|
@@ -0,0 +1,28 @@
|
|
|
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 { Card, styled } from '@mui/material';
|
|
19
|
+
|
|
20
|
+
export const GroupCard = styled(Card, {
|
|
21
|
+
shouldForwardProp: (prop) => prop !== 'elevation' && prop !== 'isRepeated'
|
|
22
|
+
})<{ elevation: number; isRepeated: boolean }>(({ elevation, isRepeated }) => ({
|
|
23
|
+
paddingTop: '20px',
|
|
24
|
+
paddingBottom: '20px',
|
|
25
|
+
paddingLeft: elevation === 1 ? '26px' : '24px',
|
|
26
|
+
paddingRight: elevation === 1 ? '26px' : '24px',
|
|
27
|
+
marginBottom: isRepeated ? 0 : '28px'
|
|
28
|
+
}));
|
|
@@ -0,0 +1,124 @@
|
|
|
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, { useMemo } from 'react';
|
|
19
|
+
import { getQrItemsIndex, mapQItemsIndex } from '../../../utils/mapItem';
|
|
20
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
21
|
+
import { createQrGroup, updateQrGroup } from '../../../utils/qrItem';
|
|
22
|
+
import { QGroupContainerBox } from '../../Box.styles';
|
|
23
|
+
import type {
|
|
24
|
+
PropsWithIsRepeatedAttribute,
|
|
25
|
+
PropsWithQrItemChangeHandler
|
|
26
|
+
} from '../../../interfaces/renderProps.interface';
|
|
27
|
+
import type { QrRepeatGroup } from '../../../interfaces/repeatGroup.interface';
|
|
28
|
+
import useHidden from '../../../hooks/useHidden';
|
|
29
|
+
import type { Tabs } from '../../../interfaces/tab.interface';
|
|
30
|
+
import GroupHeading from './GroupHeading';
|
|
31
|
+
import { GroupCard } from './GroupItem.styles';
|
|
32
|
+
import NextTabButtonWrapper from './NextTabButtonWrapper';
|
|
33
|
+
import GroupItemSwitcher from './GroupItemSwitcher';
|
|
34
|
+
|
|
35
|
+
interface GroupItemProps
|
|
36
|
+
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
37
|
+
PropsWithIsRepeatedAttribute {
|
|
38
|
+
qItem: QuestionnaireItem;
|
|
39
|
+
qrItem: QuestionnaireResponseItem;
|
|
40
|
+
groupCardElevation: number;
|
|
41
|
+
tabIsMarkedAsComplete?: boolean;
|
|
42
|
+
tabs?: Tabs;
|
|
43
|
+
currentTabIndex?: number;
|
|
44
|
+
goToNextTab?: (nextTabIndex: number) => unknown;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function GroupItem(props: GroupItemProps) {
|
|
48
|
+
const {
|
|
49
|
+
qItem,
|
|
50
|
+
qrItem,
|
|
51
|
+
isRepeated,
|
|
52
|
+
groupCardElevation,
|
|
53
|
+
tabIsMarkedAsComplete,
|
|
54
|
+
tabs,
|
|
55
|
+
currentTabIndex,
|
|
56
|
+
onQrItemChange
|
|
57
|
+
} = props;
|
|
58
|
+
|
|
59
|
+
const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);
|
|
60
|
+
|
|
61
|
+
const itemIsHidden = useHidden(qItem);
|
|
62
|
+
if (itemIsHidden) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const qItems = qItem.item;
|
|
67
|
+
const qrGroup = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);
|
|
68
|
+
const qrItems = qrGroup.item;
|
|
69
|
+
|
|
70
|
+
// Event Handlers
|
|
71
|
+
function handleQrItemChange(newQrItem: QuestionnaireResponseItem) {
|
|
72
|
+
const updatedQrGroup: QuestionnaireResponseItem = { ...qrGroup };
|
|
73
|
+
updateQrGroup(newQrItem, null, updatedQrGroup, qItemsIndexMap);
|
|
74
|
+
onQrItemChange(updatedQrGroup);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function handleQrRepeatGroupChange(qrRepeatGroup: QrRepeatGroup) {
|
|
78
|
+
const updatedQrGroup: QuestionnaireResponseItem = { ...qrGroup };
|
|
79
|
+
updateQrGroup(null, qrRepeatGroup, updatedQrGroup, qItemsIndexMap);
|
|
80
|
+
onQrItemChange(updatedQrGroup);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (!qItems || !qrItems) {
|
|
84
|
+
return <>Unable to load group, something has gone terribly wrong.</>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// If an item has multiple answers, it is a repeat group
|
|
88
|
+
const qrItemsByIndex: (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] =
|
|
89
|
+
getQrItemsIndex(qItems, qrItems, qItemsIndexMap);
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<QGroupContainerBox
|
|
93
|
+
cardElevation={groupCardElevation}
|
|
94
|
+
isRepeated={isRepeated}
|
|
95
|
+
data-test="q-item-group-box">
|
|
96
|
+
<GroupCard elevation={groupCardElevation} isRepeated={isRepeated}>
|
|
97
|
+
<GroupHeading
|
|
98
|
+
qItem={qItem}
|
|
99
|
+
tabIsMarkedAsComplete={tabIsMarkedAsComplete}
|
|
100
|
+
isRepeated={isRepeated}
|
|
101
|
+
/>
|
|
102
|
+
{qItems.map((qItem: QuestionnaireItem, i) => {
|
|
103
|
+
const qrItemOrItems = qrItemsByIndex[i];
|
|
104
|
+
|
|
105
|
+
return (
|
|
106
|
+
<GroupItemSwitcher
|
|
107
|
+
key={qItem.linkId}
|
|
108
|
+
qItem={qItem}
|
|
109
|
+
qrItemOrItems={qrItemOrItems}
|
|
110
|
+
groupCardElevation={groupCardElevation}
|
|
111
|
+
onQrItemChange={handleQrItemChange}
|
|
112
|
+
onQrRepeatGroupChange={handleQrRepeatGroupChange}
|
|
113
|
+
/>
|
|
114
|
+
);
|
|
115
|
+
})}
|
|
116
|
+
|
|
117
|
+
{/* Next tab button at the end of each tab group */}
|
|
118
|
+
<NextTabButtonWrapper currentTabIndex={currentTabIndex} tabs={tabs} />
|
|
119
|
+
</GroupCard>
|
|
120
|
+
</QGroupContainerBox>
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export default GroupItem;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import React from 'react';
|
|
19
|
+
import type {
|
|
20
|
+
PropsWithQrItemChangeHandler,
|
|
21
|
+
PropsWithQrRepeatGroupChangeHandler
|
|
22
|
+
} from '../../../interfaces/renderProps.interface';
|
|
23
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
24
|
+
import { isSpecificItemControl } from '../../../utils/itemControl';
|
|
25
|
+
import QItemGroupTable from '../Tables/QItemGroupTable';
|
|
26
|
+
import RepeatGroup from '../RepeatGroup/RepeatGroup';
|
|
27
|
+
import { isRepeatItemAndNotCheckbox } from '../../../utils/qItem';
|
|
28
|
+
import RepeatItem from '../RepeatItem/RepeatItem';
|
|
29
|
+
import SingleItem from '../SingleItem/SingleItem';
|
|
30
|
+
import useHidden from '../../../hooks/useHidden';
|
|
31
|
+
import GroupItem from './GroupItem';
|
|
32
|
+
import GridGroup from '../GridGroup/GridGroup';
|
|
33
|
+
|
|
34
|
+
interface GroupItemSwitcherProps
|
|
35
|
+
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
36
|
+
PropsWithQrRepeatGroupChangeHandler {
|
|
37
|
+
qItem: QuestionnaireItem;
|
|
38
|
+
qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[];
|
|
39
|
+
groupCardElevation: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function GroupItemSwitcher(props: GroupItemSwitcherProps) {
|
|
43
|
+
const { qItem, qrItemOrItems, groupCardElevation, onQrItemChange, onQrRepeatGroupChange } = props;
|
|
44
|
+
|
|
45
|
+
const itemIsHidden = useHidden(qItem);
|
|
46
|
+
if (itemIsHidden) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// If there are multiple answers
|
|
51
|
+
const hasMultipleAnswers = Array.isArray(qrItemOrItems);
|
|
52
|
+
if (hasMultipleAnswers) {
|
|
53
|
+
const qrItems = qrItemOrItems;
|
|
54
|
+
|
|
55
|
+
// qItem should always be either a repeatGroup or a groupTable item
|
|
56
|
+
// groupTables item have qItem.repeats = true and qItem.type = 'group' as well
|
|
57
|
+
if (!qItem.repeats || qItem.type !== 'group') {
|
|
58
|
+
return <>Something went wrong here</>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (isSpecificItemControl(qItem, 'gtable')) {
|
|
62
|
+
return (
|
|
63
|
+
<QItemGroupTable
|
|
64
|
+
qItem={qItem}
|
|
65
|
+
qrItems={qrItems}
|
|
66
|
+
groupCardElevation={groupCardElevation + 1}
|
|
67
|
+
onQrRepeatGroupChange={onQrRepeatGroupChange}
|
|
68
|
+
/>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return (
|
|
73
|
+
<RepeatGroup
|
|
74
|
+
qItem={qItem}
|
|
75
|
+
qrItems={qrItems}
|
|
76
|
+
groupCardElevation={groupCardElevation + 1}
|
|
77
|
+
onQrRepeatGroupChange={onQrRepeatGroupChange}
|
|
78
|
+
/>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// If there is only one answer
|
|
83
|
+
const qrItem = qrItemOrItems;
|
|
84
|
+
const itemIsGrid = isSpecificItemControl(qItem, 'grid');
|
|
85
|
+
if (itemIsGrid) {
|
|
86
|
+
return (
|
|
87
|
+
<GridGroup
|
|
88
|
+
qItem={qItem}
|
|
89
|
+
qrItem={qrItem}
|
|
90
|
+
groupCardElevation={groupCardElevation}
|
|
91
|
+
onQrItemChange={onQrItemChange}
|
|
92
|
+
/>
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const itemRepeatsAndIsNotCheckbox = isRepeatItemAndNotCheckbox(qItem);
|
|
97
|
+
if (itemRepeatsAndIsNotCheckbox) {
|
|
98
|
+
if (qItem.type === 'group') {
|
|
99
|
+
// If qItem is RepeatGroup or a groupTable item in this decision branch,
|
|
100
|
+
// their qrItem array should always be empty
|
|
101
|
+
if (isSpecificItemControl(qItem, 'gtable')) {
|
|
102
|
+
return (
|
|
103
|
+
<QItemGroupTable
|
|
104
|
+
qItem={qItem}
|
|
105
|
+
qrItems={[]}
|
|
106
|
+
groupCardElevation={groupCardElevation + 1}
|
|
107
|
+
onQrRepeatGroupChange={onQrRepeatGroupChange}
|
|
108
|
+
/>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return (
|
|
113
|
+
<RepeatGroup
|
|
114
|
+
qItem={qItem}
|
|
115
|
+
qrItems={[]}
|
|
116
|
+
groupCardElevation={groupCardElevation + 1}
|
|
117
|
+
onQrRepeatGroupChange={onQrRepeatGroupChange}
|
|
118
|
+
/>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return <RepeatItem qItem={qItem} qrItem={qrItem} onQrItemChange={onQrItemChange} />;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// if qItem is not a repeating question or is a checkbox
|
|
126
|
+
if (qItem.type === 'group') {
|
|
127
|
+
return (
|
|
128
|
+
<GroupItem
|
|
129
|
+
qItem={qItem}
|
|
130
|
+
qrItem={qrItem}
|
|
131
|
+
isRepeated={false}
|
|
132
|
+
groupCardElevation={groupCardElevation + 1}
|
|
133
|
+
onQrItemChange={onQrItemChange}
|
|
134
|
+
/>
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Defaults to a normal QItemSwitcher
|
|
139
|
+
return (
|
|
140
|
+
<SingleItem
|
|
141
|
+
qItem={qItem}
|
|
142
|
+
qrItem={qrItem}
|
|
143
|
+
isRepeated={false}
|
|
144
|
+
isTabled={false}
|
|
145
|
+
onQrItemChange={onQrItemChange}
|
|
146
|
+
/>
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export default GroupItemSwitcher;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import React from 'react';
|
|
19
|
+
import { Button } from '@mui/material';
|
|
20
|
+
import Iconify from '../../Iconify/Iconify';
|
|
21
|
+
|
|
22
|
+
interface NextTabButtonProps {
|
|
23
|
+
isDisabled: boolean;
|
|
24
|
+
onNextTabClick: () => void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function NextTabButton(props: NextTabButtonProps) {
|
|
28
|
+
const { isDisabled, onNextTabClick } = props;
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<Button
|
|
32
|
+
variant="contained"
|
|
33
|
+
size="small"
|
|
34
|
+
endIcon={<Iconify icon="material-symbols:arrow-forward" />}
|
|
35
|
+
disabled={isDisabled}
|
|
36
|
+
color="secondary"
|
|
37
|
+
onClick={onNextTabClick}>
|
|
38
|
+
Next tab
|
|
39
|
+
</Button>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export default NextTabButton;
|
|
@@ -0,0 +1,76 @@
|
|
|
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, { memo } from 'react';
|
|
19
|
+
import { Box } from '@mui/material';
|
|
20
|
+
import { findNumOfVisibleTabs, getNextVisibleTabIndex } from '../../../utils/tabs';
|
|
21
|
+
import type { Tabs } from '../../../interfaces/tab.interface';
|
|
22
|
+
import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
|
|
23
|
+
import NextTabButton from './NextTabButton';
|
|
24
|
+
|
|
25
|
+
interface NextTabButtonWrapperProps {
|
|
26
|
+
currentTabIndex?: number;
|
|
27
|
+
tabs?: Tabs;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const NextTabButtonWrapper = memo(function NextTabWrapper(props: NextTabButtonWrapperProps) {
|
|
31
|
+
const { currentTabIndex, tabs } = props;
|
|
32
|
+
|
|
33
|
+
const enableWhenIsActivated = useQuestionnaireStore((state) => state.enableWhenIsActivated);
|
|
34
|
+
const enableWhenItems = useQuestionnaireStore((state) => state.enableWhenItems);
|
|
35
|
+
const enableWhenExpressions = useQuestionnaireStore((state) => state.enableWhenExpressions);
|
|
36
|
+
const switchTab = useQuestionnaireStore((state) => state.switchTab);
|
|
37
|
+
|
|
38
|
+
const tabsNotDefined = currentTabIndex === undefined || tabs === undefined;
|
|
39
|
+
|
|
40
|
+
function handleNextTabClick() {
|
|
41
|
+
if (tabsNotDefined) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const nextVisibleTabIndex = getNextVisibleTabIndex({
|
|
46
|
+
tabs,
|
|
47
|
+
currentTabIndex,
|
|
48
|
+
enableWhenIsActivated,
|
|
49
|
+
enableWhenItems,
|
|
50
|
+
enableWhenExpressions
|
|
51
|
+
});
|
|
52
|
+
switchTab(nextVisibleTabIndex);
|
|
53
|
+
|
|
54
|
+
// Scroll to top of page
|
|
55
|
+
window.scrollTo(0, 0);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (tabsNotDefined) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (currentTabIndex === Object.keys(tabs).length - 1) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const buttonIsDisabled =
|
|
67
|
+
findNumOfVisibleTabs(tabs, enableWhenIsActivated, enableWhenItems, enableWhenExpressions) <= 1;
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<Box display="flex" flexDirection="row-reverse" mt={3}>
|
|
71
|
+
<NextTabButton isDisabled={buttonIsDisabled} onNextTabClick={handleNextTabClick} />
|
|
72
|
+
</Box>
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
export default NextTabButtonWrapper;
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { InputAdornment } from '@mui/material';
|
|
20
|
+
import { StandardTextField } from '../Textfield.styles';
|
|
21
|
+
import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
|
|
22
|
+
import FadingCheckIcon from '../ItemParts/FadingCheckIcon';
|
|
23
|
+
|
|
24
|
+
interface IntegerFieldProps extends PropsWithIsTabledAttribute {
|
|
25
|
+
linkId: string;
|
|
26
|
+
value: number;
|
|
27
|
+
feedback: string;
|
|
28
|
+
displayPrompt: string;
|
|
29
|
+
displayUnit: string;
|
|
30
|
+
entryFormat: string;
|
|
31
|
+
readOnly: boolean;
|
|
32
|
+
calcExpUpdated: boolean;
|
|
33
|
+
onInputChange: (value: string) => void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function IntegerField(props: IntegerFieldProps) {
|
|
37
|
+
const {
|
|
38
|
+
linkId,
|
|
39
|
+
value,
|
|
40
|
+
feedback,
|
|
41
|
+
displayPrompt,
|
|
42
|
+
displayUnit,
|
|
43
|
+
entryFormat,
|
|
44
|
+
readOnly,
|
|
45
|
+
calcExpUpdated,
|
|
46
|
+
isTabled,
|
|
47
|
+
onInputChange
|
|
48
|
+
} = props;
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
<StandardTextField
|
|
52
|
+
id={linkId}
|
|
53
|
+
value={value.toString()}
|
|
54
|
+
error={!!feedback}
|
|
55
|
+
onChange={(event) => onInputChange(event.target.value)}
|
|
56
|
+
disabled={readOnly}
|
|
57
|
+
label={displayPrompt}
|
|
58
|
+
placeholder={entryFormat}
|
|
59
|
+
fullWidth
|
|
60
|
+
isTabled={isTabled}
|
|
61
|
+
size="small"
|
|
62
|
+
inputProps={{ inputMode: 'numeric', pattern: '[0-9]*' }}
|
|
63
|
+
InputProps={{
|
|
64
|
+
endAdornment: (
|
|
65
|
+
<InputAdornment position={'end'}>
|
|
66
|
+
<FadingCheckIcon fadeIn={calcExpUpdated} />
|
|
67
|
+
{displayUnit}
|
|
68
|
+
</InputAdornment>
|
|
69
|
+
)
|
|
70
|
+
}}
|
|
71
|
+
data-test="q-item-integer-field"
|
|
72
|
+
/>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export default IntegerField;
|
|
@@ -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, { useCallback, useState } from 'react';
|
|
19
|
+
import type {
|
|
20
|
+
PropsWithIsRepeatedAttribute,
|
|
21
|
+
PropsWithIsTabledAttribute,
|
|
22
|
+
PropsWithQrItemChangeHandler
|
|
23
|
+
} from '../../../interfaces/renderProps.interface';
|
|
24
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
25
|
+
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
26
|
+
import useValidationError from '../../../hooks/useValidationError';
|
|
27
|
+
import debounce from 'lodash.debounce';
|
|
28
|
+
import { createEmptyQrItemWithUnit } from '../../../utils/qrItem';
|
|
29
|
+
import { DEBOUNCE_DURATION } from '../../../utils/debounce';
|
|
30
|
+
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
31
|
+
import IntegerField from './IntegerField';
|
|
32
|
+
import useIntegerCalculatedExpression from '../../../hooks/useIntegerCalculatedExpression';
|
|
33
|
+
import { parseValidInteger } from '../../../utils/parseInputs';
|
|
34
|
+
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
35
|
+
|
|
36
|
+
interface IntegerItemProps
|
|
37
|
+
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
38
|
+
PropsWithIsRepeatedAttribute,
|
|
39
|
+
PropsWithIsTabledAttribute {
|
|
40
|
+
qItem: QuestionnaireItem;
|
|
41
|
+
qrItem: QuestionnaireResponseItem;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function IntegerItem(props: IntegerItemProps) {
|
|
45
|
+
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
46
|
+
|
|
47
|
+
// Get additional rendering extensions
|
|
48
|
+
const {
|
|
49
|
+
displayUnit,
|
|
50
|
+
displayPrompt,
|
|
51
|
+
displayInstructions,
|
|
52
|
+
readOnly,
|
|
53
|
+
entryFormat,
|
|
54
|
+
regexValidation,
|
|
55
|
+
maxLength
|
|
56
|
+
} = useRenderingExtensions(qItem);
|
|
57
|
+
|
|
58
|
+
// Init input value
|
|
59
|
+
let valueInteger = 0;
|
|
60
|
+
if (qrItem?.answer) {
|
|
61
|
+
if (qrItem?.answer[0].valueInteger) {
|
|
62
|
+
valueInteger = qrItem.answer[0].valueInteger;
|
|
63
|
+
}
|
|
64
|
+
if (qrItem?.answer[0].valueDecimal) {
|
|
65
|
+
valueInteger = Math.round(qrItem.answer[0].valueDecimal);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const [value, setValue] = useState(valueInteger);
|
|
69
|
+
|
|
70
|
+
// Perform validation checks
|
|
71
|
+
const feedback = useValidationError(value.toString(), regexValidation, maxLength);
|
|
72
|
+
|
|
73
|
+
// Process calculated expressions
|
|
74
|
+
const { calcExpUpdated } = useIntegerCalculatedExpression({
|
|
75
|
+
qItem: qItem,
|
|
76
|
+
inputValue: value,
|
|
77
|
+
displayUnit: displayUnit,
|
|
78
|
+
setInputValue: (newValue) => {
|
|
79
|
+
setValue(newValue);
|
|
80
|
+
},
|
|
81
|
+
onQrItemChange: onQrItemChange
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// Event handlers
|
|
85
|
+
function handleInputChange(newInput: string) {
|
|
86
|
+
const newValue = parseValidInteger(newInput);
|
|
87
|
+
|
|
88
|
+
setValue(newValue);
|
|
89
|
+
updateQrItemWithDebounce(newValue);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
93
|
+
const updateQrItemWithDebounce = useCallback(
|
|
94
|
+
debounce((newValue: number) => {
|
|
95
|
+
onQrItemChange({
|
|
96
|
+
...createEmptyQrItemWithUnit(qItem, displayUnit),
|
|
97
|
+
answer: [{ valueInteger: newValue }]
|
|
98
|
+
});
|
|
99
|
+
}, DEBOUNCE_DURATION),
|
|
100
|
+
[onQrItemChange, qItem, displayUnit]
|
|
101
|
+
); // Dependencies are tested, debounce is causing eslint to not recognise dependencies
|
|
102
|
+
|
|
103
|
+
if (isRepeated) {
|
|
104
|
+
return (
|
|
105
|
+
<IntegerField
|
|
106
|
+
linkId={qItem.linkId}
|
|
107
|
+
value={value}
|
|
108
|
+
feedback={feedback}
|
|
109
|
+
displayPrompt={displayPrompt}
|
|
110
|
+
displayUnit={displayUnit}
|
|
111
|
+
entryFormat={entryFormat}
|
|
112
|
+
readOnly={readOnly}
|
|
113
|
+
calcExpUpdated={calcExpUpdated}
|
|
114
|
+
isTabled={isTabled}
|
|
115
|
+
onInputChange={handleInputChange}
|
|
116
|
+
/>
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return (
|
|
121
|
+
<FullWidthFormComponentBox data-test="q-item-integer-box">
|
|
122
|
+
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
|
|
123
|
+
<IntegerField
|
|
124
|
+
linkId={qItem.linkId}
|
|
125
|
+
value={value}
|
|
126
|
+
feedback={feedback}
|
|
127
|
+
displayPrompt={displayPrompt}
|
|
128
|
+
displayUnit={displayUnit}
|
|
129
|
+
entryFormat={entryFormat}
|
|
130
|
+
readOnly={readOnly}
|
|
131
|
+
calcExpUpdated={calcExpUpdated}
|
|
132
|
+
isTabled={isTabled}
|
|
133
|
+
onInputChange={handleInputChange}
|
|
134
|
+
/>
|
|
135
|
+
</ItemFieldGrid>
|
|
136
|
+
</FullWidthFormComponentBox>
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export default IntegerItem;
|