@aehrc/smart-forms-renderer 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/Alert.styles.d.ts +2 -7
- package/lib/components/Box.styles.d.ts +6 -21
- package/lib/components/FormComponents/BooleanItem/BooleanItem.d.ts +2 -2
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js +5 -4
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +6 -5
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +7 -6
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +7 -6
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +2 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +8 -8
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +6 -6
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +6 -5
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +8 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +1 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +8 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/DateItem/DateItem.d.ts +2 -1
- package/lib/components/FormComponents/DateItem/DateItem.js +5 -4
- package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -1
- package/lib/components/FormComponents/DateItem/DatePicker.d.ts +2 -0
- package/lib/components/FormComponents/DateItem/DatePicker.js +42 -0
- package/lib/components/FormComponents/DateItem/DatePicker.js.map +1 -0
- package/lib/components/FormComponents/DateItem/DatePickerField.d.ts +8 -0
- package/{src/components/FormComponents/Typography.styles.ts → lib/components/FormComponents/DateItem/DatePickerField.js} +8 -9
- package/lib/components/FormComponents/DateItem/DatePickerField.js.map +1 -0
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +2 -2
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +5 -4
- package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -1
- package/lib/components/FormComponents/DecimalItem/DecimalItem.d.ts +2 -2
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js +5 -4
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +1 -0
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js +2 -2
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +2 -7
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js +2 -2
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +2 -2
- package/lib/components/FormComponents/GridGroup/GridGroup.js +6 -4
- package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.d.ts +2 -1
- package/lib/components/FormComponents/GridGroup/GridRow.js +2 -2
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridTable.d.ts +2 -1
- package/lib/components/FormComponents/GridGroup/GridTable.js +2 -2
- package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupHeading.d.ts +1 -0
- package/lib/components/FormComponents/GroupItem/GroupHeading.js +6 -5
- package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -3
- package/lib/components/FormComponents/GroupItem/GroupItem.js +5 -3
- package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.styles.d.ts +2 -6
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +10 -10
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/IntegerItem.d.ts +2 -2
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js +5 -4
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
- package/lib/components/FormComponents/Item.styles.d.ts +0 -4
- package/lib/components/FormComponents/Item.styles.js +0 -4
- package/lib/components/FormComponents/Item.styles.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +1 -0
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +3 -3
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +1 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js +4 -6
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +1 -0
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +2 -2
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -1
- package/lib/components/FormComponents/Lists.styles.d.ts +2 -9
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +3 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +2 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +8 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +8 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +6 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +7 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +3 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +7 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +3 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +8 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.d.ts +1 -0
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +2 -2
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +1 -0
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +2 -2
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +8 -6
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +5 -3
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/AddItemButton.d.ts +1 -0
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js +2 -2
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +1 -0
- package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js +2 -2
- package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +2 -2
- package/lib/components/FormComponents/RepeatItem/RepeatField.js +5 -3
- package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +2 -2
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js +6 -5
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +4 -18
- package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +2 -2
- package/lib/components/FormComponents/SingleItem/SingleItem.js +4 -2
- package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +12 -12
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/StringItem/StringItem.d.ts +2 -2
- package/lib/components/FormComponents/StringItem/StringItem.js +5 -4
- package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
- package/lib/components/FormComponents/Tables/AddRowButton.d.ts +1 -0
- package/lib/components/FormComponents/Tables/AddRowButton.js +2 -2
- package/lib/components/FormComponents/Tables/AddRowButton.js.map +1 -1
- package/lib/components/FormComponents/Tables/DeleteRowButton.d.ts +1 -0
- package/lib/components/FormComponents/Tables/DeleteRowButton.js +2 -2
- package/lib/components/FormComponents/Tables/DeleteRowButton.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTable.d.ts +2 -2
- package/lib/components/FormComponents/Tables/GroupTable.js +8 -6
- package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +2 -1
- package/lib/components/FormComponents/Tables/GroupTableRow.js +2 -2
- package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
- package/lib/components/FormComponents/Tables/QItemGroupTable.js +5 -7
- package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -1
- package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +2 -2
- package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -1
- package/lib/components/FormComponents/TextItem/TextItem.d.ts +2 -2
- package/lib/components/FormComponents/TextItem/TextItem.js +5 -4
- package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
- package/lib/components/FormComponents/TimeItem/TimeItem.d.ts +2 -2
- package/lib/components/FormComponents/TimeItem/TimeItem.js +5 -4
- package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
- package/lib/components/FormComponents/UrlItem/UrlItem.d.ts +2 -2
- package/lib/components/FormComponents/UrlItem/UrlItem.js +5 -4
- package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
- package/lib/components/Lists.styles.d.ts +2 -9
- package/lib/components/Renderer/FormTopLevelItem.js +7 -5
- package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
- package/lib/components/Tabs/FormBodySingleTab.js +1 -1
- package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
- package/lib/components/Tabs/ShowCompletedTabsSection.js +1 -1
- package/lib/components/Tabs/ShowCompletedTabsSection.js.map +1 -1
- package/lib/hooks/useMinimalStringCalculatedExpression.d.ts +11 -0
- package/lib/hooks/useMinimalStringCalculatedExpression.js +37 -0
- package/lib/hooks/useMinimalStringCalculatedExpression.js.map +1 -0
- package/lib/hooks/useReadOnly.d.ts +3 -0
- package/lib/hooks/useReadOnly.js +26 -0
- package/lib/hooks/useReadOnly.js.map +1 -0
- package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
- package/lib/interfaces/renderProps.interface.d.ts +3 -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/typography.d.ts +0 -2
- package/lib/theme/typography.js +3 -5
- package/lib/theme/typography.js.map +1 -1
- package/lib/utils/calculatedExpression.d.ts +12 -0
- package/lib/utils/calculatedExpression.js +54 -8
- package/lib/utils/calculatedExpression.js.map +1 -1
- package/package.json +12 -12
- package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +8 -5
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +9 -6
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +18 -7
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +18 -7
- package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +17 -7
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +9 -8
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +10 -7
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +3 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +14 -9
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +3 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +12 -7
- package/src/components/FormComponents/DateItem/DateItem.tsx +8 -6
- package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +8 -6
- package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +7 -5
- package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +6 -2
- package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +2 -2
- package/src/components/FormComponents/GridGroup/GridGroup.tsx +13 -5
- package/src/components/FormComponents/GridGroup/GridRow.tsx +6 -2
- package/src/components/FormComponents/GridGroup/GridTable.tsx +6 -2
- package/src/components/FormComponents/GroupItem/GroupHeading.tsx +12 -6
- package/src/components/FormComponents/GroupItem/GroupItem.tsx +8 -2
- package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +27 -4
- package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +7 -5
- package/src/components/FormComponents/Item.styles.ts +0 -5
- package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +4 -3
- package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +10 -5
- package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +3 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +10 -4
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +13 -7
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +20 -9
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +11 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +11 -8
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +10 -4
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +10 -5
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +10 -4
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +12 -7
- package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +3 -2
- package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +3 -2
- package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +17 -9
- package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +13 -2
- package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +3 -2
- package/src/components/FormComponents/RepeatItem/DeleteItemButton.tsx +3 -2
- package/src/components/FormComponents/RepeatItem/RepeatField.tsx +21 -3
- package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +13 -6
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +8 -2
- package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +16 -2
- package/src/components/FormComponents/StringItem/StringItem.tsx +7 -5
- package/src/components/FormComponents/Tables/AddRowButton.tsx +3 -2
- package/src/components/FormComponents/Tables/DeleteRowButton.tsx +3 -2
- package/src/components/FormComponents/Tables/GroupTable.tsx +17 -6
- package/src/components/FormComponents/Tables/GroupTableRow.tsx +6 -2
- package/src/components/FormComponents/TextItem/TextItem.tsx +7 -5
- package/src/components/FormComponents/TimeItem/TimeItem.tsx +8 -6
- package/src/components/FormComponents/UrlItem/UrlItem.tsx +7 -5
- package/src/components/Renderer/FormTopLevelItem.tsx +9 -4
- package/src/components/Tabs/FormBodySingleTab.tsx +1 -1
- package/src/components/Tabs/ShowCompletedTabsSection.tsx +1 -1
- package/src/hooks/useReadOnly.ts +30 -0
- package/src/interfaces/calculatedExpression.interface.ts +1 -1
- package/src/interfaces/renderProps.interface.ts +4 -0
- package/src/theme/typography.ts +3 -5
- package/src/utils/calculatedExpression.ts +68 -12
|
@@ -26,22 +26,28 @@ import useValueSetCodings from '../../../hooks/useValueSetCodings';
|
|
|
26
26
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
27
27
|
import type {
|
|
28
28
|
PropsWithIsRepeatedAttribute,
|
|
29
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
29
30
|
PropsWithQrItemChangeHandler
|
|
30
31
|
} from '../../../interfaces/renderProps.interface';
|
|
31
32
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
32
33
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
33
34
|
import ChoiceRadioAnswerValueSetFields from './ChoiceRadioAnswerValueSetFields';
|
|
35
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
34
36
|
|
|
35
37
|
interface ChoiceRadioAnswerValueSetItemProps
|
|
36
38
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
37
|
-
PropsWithIsRepeatedAttribute
|
|
39
|
+
PropsWithIsRepeatedAttribute,
|
|
40
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
38
41
|
qItem: QuestionnaireItem;
|
|
39
42
|
qrItem: QuestionnaireResponseItem;
|
|
40
43
|
orientation: ChoiceItemOrientation;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
function ChoiceRadioAnswerValueSetItem(props: ChoiceRadioAnswerValueSetItemProps) {
|
|
44
|
-
const { qItem, qrItem, isRepeated,
|
|
47
|
+
const { qItem, qrItem, orientation, isRepeated, parentIsReadOnly, onQrItemChange } = props;
|
|
48
|
+
|
|
49
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
50
|
+
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
45
51
|
|
|
46
52
|
// Init input value
|
|
47
53
|
const qrChoiceRadio = qrItem ?? createEmptyQrItem(qItem);
|
|
@@ -51,9 +57,6 @@ function ChoiceRadioAnswerValueSetItem(props: ChoiceRadioAnswerValueSetItemProps
|
|
|
51
57
|
valueRadio = qrChoiceRadio.answer[0].valueCoding?.code ?? null;
|
|
52
58
|
}
|
|
53
59
|
|
|
54
|
-
// Get additional rendering extensions
|
|
55
|
-
const { displayInstructions, readOnly } = useRenderingExtensions(qItem);
|
|
56
|
-
|
|
57
60
|
// Get codings/options from valueSet
|
|
58
61
|
const { codings, serverError } = useValueSetCodings(qItem);
|
|
59
62
|
|
|
@@ -87,7 +90,7 @@ function ChoiceRadioAnswerValueSetItem(props: ChoiceRadioAnswerValueSetItemProps
|
|
|
87
90
|
<FullWidthFormComponentBox data-test="q-item-choice-radio-answer-value-set-box">
|
|
88
91
|
<Grid container columnSpacing={6}>
|
|
89
92
|
<Grid item xs={5}>
|
|
90
|
-
<LabelWrapper qItem={qItem} />
|
|
93
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
91
94
|
</Grid>
|
|
92
95
|
<Grid item xs={7}>
|
|
93
96
|
<ChoiceRadioAnswerValueSetFields
|
|
@@ -99,7 +102,7 @@ function ChoiceRadioAnswerValueSetItem(props: ChoiceRadioAnswerValueSetItemProps
|
|
|
99
102
|
serverError={serverError}
|
|
100
103
|
onCheckedChange={handleChange}
|
|
101
104
|
/>
|
|
102
|
-
<DisplayInstructions displayInstructions={displayInstructions} />
|
|
105
|
+
<DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
|
|
103
106
|
</Grid>
|
|
104
107
|
</Grid>
|
|
105
108
|
</FullWidthFormComponentBox>
|
|
@@ -26,13 +26,14 @@ import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps
|
|
|
26
26
|
interface ChoiceSelectAnswerOptionFieldsProps extends PropsWithIsTabledAttribute {
|
|
27
27
|
qItem: QuestionnaireItem;
|
|
28
28
|
valueSelect: string;
|
|
29
|
+
readOnly: boolean;
|
|
29
30
|
onSelectChange: (newValue: string) => void;
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
function ChoiceSelectAnswerOptionFields(props: ChoiceSelectAnswerOptionFieldsProps) {
|
|
33
|
-
const { qItem, valueSelect, isTabled, onSelectChange } = props;
|
|
34
|
+
const { qItem, valueSelect, readOnly, isTabled, onSelectChange } = props;
|
|
34
35
|
|
|
35
|
-
const { displayUnit, displayPrompt,
|
|
36
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
36
37
|
|
|
37
38
|
return (
|
|
38
39
|
<Select
|
|
@@ -26,22 +26,28 @@ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
|
26
26
|
import type {
|
|
27
27
|
PropsWithIsRepeatedAttribute,
|
|
28
28
|
PropsWithIsTabledAttribute,
|
|
29
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
29
30
|
PropsWithQrItemChangeHandler
|
|
30
31
|
} from '../../../interfaces/renderProps.interface';
|
|
31
32
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
32
33
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
33
34
|
import ChoiceSelectAnswerOptionFields from './ChoiceSelectAnswerOptionFields';
|
|
35
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
34
36
|
|
|
35
37
|
interface ChoiceSelectAnswerOptionItemProps
|
|
36
38
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
37
39
|
PropsWithIsRepeatedAttribute,
|
|
38
|
-
PropsWithIsTabledAttribute
|
|
40
|
+
PropsWithIsTabledAttribute,
|
|
41
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
39
42
|
qItem: QuestionnaireItem;
|
|
40
43
|
qrItem: QuestionnaireResponseItem;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps) {
|
|
44
|
-
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
47
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
48
|
+
|
|
49
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
50
|
+
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
45
51
|
|
|
46
52
|
// Init input value
|
|
47
53
|
const qrChoiceSelect = qrItem ?? createEmptyQrItem(qItem);
|
|
@@ -50,9 +56,6 @@ function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps)
|
|
|
50
56
|
valueSelect = '';
|
|
51
57
|
}
|
|
52
58
|
|
|
53
|
-
// Get additional rendering extensions
|
|
54
|
-
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
55
|
-
|
|
56
59
|
// Event handlers
|
|
57
60
|
function handleChange(newValue: string) {
|
|
58
61
|
if (qItem.answerOption) {
|
|
@@ -70,8 +73,9 @@ function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps)
|
|
|
70
73
|
<ChoiceSelectAnswerOptionFields
|
|
71
74
|
qItem={qItem}
|
|
72
75
|
valueSelect={valueSelect}
|
|
73
|
-
|
|
76
|
+
readOnly={readOnly}
|
|
74
77
|
isTabled={isTabled}
|
|
78
|
+
onSelectChange={handleChange}
|
|
75
79
|
/>
|
|
76
80
|
);
|
|
77
81
|
}
|
|
@@ -80,16 +84,17 @@ function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps)
|
|
|
80
84
|
<FullWidthFormComponentBox data-test="q-item-choice-select-answer-option-box">
|
|
81
85
|
<Grid container columnSpacing={6}>
|
|
82
86
|
<Grid item xs={5}>
|
|
83
|
-
<LabelWrapper qItem={qItem} />
|
|
87
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
84
88
|
</Grid>
|
|
85
89
|
<Grid item xs={7}>
|
|
86
90
|
<ChoiceSelectAnswerOptionFields
|
|
87
91
|
qItem={qItem}
|
|
88
92
|
valueSelect={valueSelect}
|
|
89
|
-
|
|
93
|
+
readOnly={readOnly}
|
|
90
94
|
isTabled={isTabled}
|
|
95
|
+
onSelectChange={handleChange}
|
|
91
96
|
/>
|
|
92
|
-
<DisplayInstructions displayInstructions={displayInstructions} />
|
|
97
|
+
<DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
|
|
93
98
|
</Grid>
|
|
94
99
|
</Grid>
|
|
95
100
|
</FullWidthFormComponentBox>
|
|
@@ -30,13 +30,14 @@ interface ChoiceSelectAnswerValueSetFieldsProps extends PropsWithIsTabledAttribu
|
|
|
30
30
|
codings: Coding[];
|
|
31
31
|
valueCoding: Coding | null;
|
|
32
32
|
serverError: Error | null;
|
|
33
|
+
readOnly: boolean;
|
|
33
34
|
onSelectChange: (newValue: Coding | null) => void;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
function ChoiceSelectAnswerValueSetFields(props: ChoiceSelectAnswerValueSetFieldsProps) {
|
|
37
|
-
const { qItem, codings, valueCoding, serverError, isTabled, onSelectChange } = props;
|
|
38
|
+
const { qItem, codings, valueCoding, serverError, readOnly, isTabled, onSelectChange } = props;
|
|
38
39
|
|
|
39
|
-
const { displayUnit, displayPrompt,
|
|
40
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
40
41
|
|
|
41
42
|
if (codings.length > 0) {
|
|
42
43
|
return (
|
|
@@ -26,22 +26,28 @@ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
|
26
26
|
import type {
|
|
27
27
|
PropsWithIsRepeatedAttribute,
|
|
28
28
|
PropsWithIsTabledAttribute,
|
|
29
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
29
30
|
PropsWithQrItemChangeHandler
|
|
30
31
|
} from '../../../interfaces/renderProps.interface';
|
|
31
32
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
32
33
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
33
34
|
import ChoiceSelectAnswerValueSetFields from './ChoiceSelectAnswerValueSetFields';
|
|
35
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
34
36
|
|
|
35
37
|
interface ChoiceSelectAnswerValueSetItemProps
|
|
36
38
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
37
39
|
PropsWithIsRepeatedAttribute,
|
|
38
|
-
PropsWithIsTabledAttribute
|
|
40
|
+
PropsWithIsTabledAttribute,
|
|
41
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
39
42
|
qItem: QuestionnaireItem;
|
|
40
43
|
qrItem: QuestionnaireResponseItem;
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemProps) {
|
|
44
|
-
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
47
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
48
|
+
|
|
49
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
50
|
+
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
45
51
|
|
|
46
52
|
// Init input value
|
|
47
53
|
const qrChoiceSelect = qrItem ?? createEmptyQrItem(qItem);
|
|
@@ -50,9 +56,6 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
50
56
|
valueCoding = qrChoiceSelect.answer[0].valueCoding ?? null;
|
|
51
57
|
}
|
|
52
58
|
|
|
53
|
-
// Get additional rendering extensions
|
|
54
|
-
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
55
|
-
|
|
56
59
|
// Get codings/options from valueSet
|
|
57
60
|
const { codings, serverError } = useValueSetCodings(qItem);
|
|
58
61
|
|
|
@@ -96,6 +99,7 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
96
99
|
codings={codings}
|
|
97
100
|
valueCoding={valueCoding}
|
|
98
101
|
serverError={serverError}
|
|
102
|
+
readOnly={readOnly}
|
|
99
103
|
isTabled={isTabled}
|
|
100
104
|
onSelectChange={handleChange}
|
|
101
105
|
/>
|
|
@@ -106,7 +110,7 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
106
110
|
<FullWidthFormComponentBox data-test="q-item-choice-dropdown-answer-value-set-box">
|
|
107
111
|
<Grid container columnSpacing={6}>
|
|
108
112
|
<Grid item xs={5}>
|
|
109
|
-
<LabelWrapper qItem={qItem} />
|
|
113
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
110
114
|
</Grid>
|
|
111
115
|
<Grid item xs={7}>
|
|
112
116
|
<ChoiceSelectAnswerValueSetFields
|
|
@@ -114,10 +118,11 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
|
|
|
114
118
|
codings={codings}
|
|
115
119
|
valueCoding={valueCoding}
|
|
116
120
|
serverError={serverError}
|
|
121
|
+
readOnly={readOnly}
|
|
117
122
|
isTabled={isTabled}
|
|
118
123
|
onSelectChange={handleChange}
|
|
119
124
|
/>
|
|
120
|
-
<DisplayInstructions displayInstructions={displayInstructions} />
|
|
125
|
+
<DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
|
|
121
126
|
</Grid>
|
|
122
127
|
</Grid>
|
|
123
128
|
</FullWidthFormComponentBox>
|
|
@@ -21,6 +21,7 @@ import type {
|
|
|
21
21
|
PropsWithIsTabledAttribute,
|
|
22
22
|
PropsWithQrItemChangeHandler
|
|
23
23
|
} from '../../../interfaces/renderProps.interface';
|
|
24
|
+
import type { PropsWithParentIsReadOnlyAttribute } from '../../../interfaces/renderProps.interface';
|
|
24
25
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
25
26
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
26
27
|
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
@@ -29,21 +30,22 @@ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
|
29
30
|
import DateField from './DateField';
|
|
30
31
|
import type { Dayjs } from 'dayjs';
|
|
31
32
|
import dayjs from 'dayjs';
|
|
33
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
32
34
|
|
|
33
35
|
interface DateItemProps
|
|
34
36
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
35
37
|
PropsWithIsRepeatedAttribute,
|
|
36
|
-
PropsWithIsTabledAttribute
|
|
38
|
+
PropsWithIsTabledAttribute,
|
|
39
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
37
40
|
qItem: QuestionnaireItem;
|
|
38
41
|
qrItem: QuestionnaireResponseItem;
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
function DateItem(props: DateItemProps) {
|
|
42
|
-
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
45
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
const { displayPrompt, displayInstructions,
|
|
46
|
-
useRenderingExtensions(qItem);
|
|
47
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
48
|
+
const { displayPrompt, displayInstructions, entryFormat } = useRenderingExtensions(qItem);
|
|
47
49
|
|
|
48
50
|
// Init input value
|
|
49
51
|
let dateString: string | null = null;
|
|
@@ -83,7 +85,7 @@ function DateItem(props: DateItemProps) {
|
|
|
83
85
|
|
|
84
86
|
return (
|
|
85
87
|
<FullWidthFormComponentBox data-test="q-item-date-box">
|
|
86
|
-
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
|
|
88
|
+
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
|
|
87
89
|
<DateField
|
|
88
90
|
value={dateDayJs}
|
|
89
91
|
displayPrompt={displayPrompt}
|
|
@@ -19,6 +19,7 @@ import React from 'react';
|
|
|
19
19
|
import type {
|
|
20
20
|
PropsWithIsRepeatedAttribute,
|
|
21
21
|
PropsWithIsTabledAttribute,
|
|
22
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
22
23
|
PropsWithQrItemChangeHandler
|
|
23
24
|
} from '../../../interfaces/renderProps.interface';
|
|
24
25
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
@@ -29,21 +30,22 @@ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
|
29
30
|
import DateTimeField from './DateTimeField';
|
|
30
31
|
import type { Dayjs } from 'dayjs';
|
|
31
32
|
import dayjs from 'dayjs';
|
|
33
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
32
34
|
|
|
33
35
|
interface DateTimeItemProps
|
|
34
36
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
35
37
|
PropsWithIsRepeatedAttribute,
|
|
36
|
-
PropsWithIsTabledAttribute
|
|
38
|
+
PropsWithIsTabledAttribute,
|
|
39
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
37
40
|
qItem: QuestionnaireItem;
|
|
38
41
|
qrItem: QuestionnaireResponseItem;
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
function DateTimeItem(props: DateTimeItemProps) {
|
|
42
|
-
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
45
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
const { displayPrompt, displayInstructions,
|
|
46
|
-
useRenderingExtensions(qItem);
|
|
47
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
48
|
+
const { displayPrompt, displayInstructions, entryFormat } = useRenderingExtensions(qItem);
|
|
47
49
|
|
|
48
50
|
// Init input value
|
|
49
51
|
let dateTimeString: string | null = null;
|
|
@@ -81,7 +83,7 @@ function DateTimeItem(props: DateTimeItemProps) {
|
|
|
81
83
|
|
|
82
84
|
return (
|
|
83
85
|
<FullWidthFormComponentBox data-test="q-item-date-time-box">
|
|
84
|
-
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
|
|
86
|
+
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
|
|
85
87
|
<DateTimeField
|
|
86
88
|
value={dateTimeDayJs}
|
|
87
89
|
displayPrompt={displayPrompt}
|
|
@@ -19,6 +19,7 @@ import React, { useCallback } from 'react';
|
|
|
19
19
|
import type {
|
|
20
20
|
PropsWithIsRepeatedAttribute,
|
|
21
21
|
PropsWithIsTabledAttribute,
|
|
22
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
22
23
|
PropsWithQrItemChangeHandler
|
|
23
24
|
} from '../../../interfaces/renderProps.interface';
|
|
24
25
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
@@ -37,25 +38,26 @@ import {
|
|
|
37
38
|
import { getDecimalPrecision } from '../../../utils/itemControl';
|
|
38
39
|
import useDecimalCalculatedExpression from '../../../hooks/useDecimalCalculatedExpression';
|
|
39
40
|
import useStringInput from '../../../hooks/useStringInput';
|
|
41
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
40
42
|
|
|
41
43
|
interface DecimalItemProps
|
|
42
44
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
43
45
|
PropsWithIsRepeatedAttribute,
|
|
44
|
-
PropsWithIsTabledAttribute
|
|
46
|
+
PropsWithIsTabledAttribute,
|
|
47
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
45
48
|
qItem: QuestionnaireItem;
|
|
46
49
|
qrItem: QuestionnaireResponseItem;
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
function DecimalItem(props: DecimalItemProps) {
|
|
50
|
-
const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
|
|
53
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
51
54
|
|
|
52
|
-
|
|
55
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
53
56
|
const precision = getDecimalPrecision(qItem);
|
|
54
57
|
const {
|
|
55
58
|
displayUnit,
|
|
56
59
|
displayPrompt,
|
|
57
60
|
displayInstructions,
|
|
58
|
-
readOnly,
|
|
59
61
|
entryFormat,
|
|
60
62
|
regexValidation,
|
|
61
63
|
maxLength
|
|
@@ -132,7 +134,7 @@ function DecimalItem(props: DecimalItemProps) {
|
|
|
132
134
|
|
|
133
135
|
return (
|
|
134
136
|
<FullWidthFormComponentBox data-test="q-item-decimal-box">
|
|
135
|
-
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
|
|
137
|
+
<ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
|
|
136
138
|
<DecimalField
|
|
137
139
|
linkId={qItem.linkId}
|
|
138
140
|
input={input}
|
|
@@ -21,14 +21,18 @@ import { DisplayInstructionsWrapper } from './DisplayInstructions.styles';
|
|
|
21
21
|
|
|
22
22
|
interface DisplayInstructionsProps {
|
|
23
23
|
displayInstructions: string;
|
|
24
|
+
readOnly: boolean;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
const DisplayInstructions = memo(function DisplayInstructions(props: DisplayInstructionsProps) {
|
|
27
|
-
const { displayInstructions } = props;
|
|
28
|
+
const { displayInstructions, readOnly } = props;
|
|
28
29
|
|
|
29
30
|
return displayInstructions ? (
|
|
30
31
|
<DisplayInstructionsWrapper>
|
|
31
|
-
<Typography
|
|
32
|
+
<Typography
|
|
33
|
+
variant="caption"
|
|
34
|
+
fontSize={10.5}
|
|
35
|
+
color={readOnly ? 'text.secondary' : 'text.primary'}>
|
|
32
36
|
{displayInstructions}
|
|
33
37
|
</Typography>
|
|
34
38
|
</DisplayInstructionsWrapper>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import React, { memo } from 'react';
|
|
19
19
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
20
20
|
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
21
|
-
import { isSpecificItemControl } from '../../../utils
|
|
21
|
+
import { isSpecificItemControl } from '../../../utils';
|
|
22
22
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
23
23
|
|
|
24
24
|
interface DisplayItemProps {
|
|
@@ -35,7 +35,7 @@ const DisplayItem = memo(function DisplayItem(props: DisplayItemProps) {
|
|
|
35
35
|
|
|
36
36
|
return (
|
|
37
37
|
<FullWidthFormComponentBox>
|
|
38
|
-
<LabelWrapper qItem={qItem} />
|
|
38
|
+
<LabelWrapper qItem={qItem} readOnly={false} />
|
|
39
39
|
</FullWidthFormComponentBox>
|
|
40
40
|
);
|
|
41
41
|
});
|
|
@@ -17,7 +17,10 @@
|
|
|
17
17
|
|
|
18
18
|
import React, { useMemo } from 'react';
|
|
19
19
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
20
|
-
import type {
|
|
20
|
+
import type {
|
|
21
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
22
|
+
PropsWithQrItemChangeHandler
|
|
23
|
+
} from '../../../interfaces/renderProps.interface';
|
|
21
24
|
import { createQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
|
|
22
25
|
import useHidden from '../../../hooks/useHidden';
|
|
23
26
|
import { QGroupContainerBox } from '../../Box.styles';
|
|
@@ -28,15 +31,18 @@ import Typography from '@mui/material/Typography';
|
|
|
28
31
|
import { mapQItemsIndex } from '../../../utils/mapItem';
|
|
29
32
|
import GridTable from './GridTable';
|
|
30
33
|
import LabelWrapper from '../ItemParts/ItemLabelWrapper';
|
|
34
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
31
35
|
|
|
32
|
-
interface GridGroupProps
|
|
36
|
+
interface GridGroupProps
|
|
37
|
+
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
38
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
33
39
|
qItem: QuestionnaireItem;
|
|
34
40
|
qrItem: QuestionnaireResponseItem;
|
|
35
41
|
groupCardElevation: number;
|
|
36
42
|
}
|
|
37
43
|
|
|
38
44
|
function GridGroup(props: GridGroupProps) {
|
|
39
|
-
const { qItem, qrItem, groupCardElevation, onQrItemChange } = props;
|
|
45
|
+
const { qItem, qrItem, groupCardElevation, parentIsReadOnly, onQrItemChange } = props;
|
|
40
46
|
|
|
41
47
|
const qRowItems = qItem.item;
|
|
42
48
|
const qrGroup = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);
|
|
@@ -49,6 +55,7 @@ function GridGroup(props: GridGroupProps) {
|
|
|
49
55
|
[qRowItems]
|
|
50
56
|
);
|
|
51
57
|
|
|
58
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
52
59
|
const itemIsHidden = useHidden(qItem);
|
|
53
60
|
if (itemIsHidden) {
|
|
54
61
|
return null;
|
|
@@ -73,8 +80,8 @@ function GridGroup(props: GridGroupProps) {
|
|
|
73
80
|
return (
|
|
74
81
|
<>
|
|
75
82
|
<QGroupContainerBox cardElevation={groupCardElevation} isRepeated={false} py={3}>
|
|
76
|
-
<Typography fontSize={13} variant="h6">
|
|
77
|
-
<LabelWrapper qItem={qItem} />
|
|
83
|
+
<Typography fontSize={13} variant="h6" color={readOnly ? 'text.secondary' : 'text.primary'}>
|
|
84
|
+
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
78
85
|
</Typography>
|
|
79
86
|
<Divider sx={{ my: 1 }} light />
|
|
80
87
|
|
|
@@ -84,6 +91,7 @@ function GridGroup(props: GridGroupProps) {
|
|
|
84
91
|
qrItems={qrRowItems}
|
|
85
92
|
qItemsIndexMap={qItemsIndexMap}
|
|
86
93
|
columnLabels={columnLabels}
|
|
94
|
+
parentIsReadOnly={parentIsReadOnly}
|
|
87
95
|
onQrItemChange={handleRowChange}
|
|
88
96
|
/>
|
|
89
97
|
</TableContainer>
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import React, { useMemo } from 'react';
|
|
19
19
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
20
20
|
import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
|
|
21
|
+
import type { PropsWithParentIsReadOnlyAttribute } from '../../../interfaces/renderProps.interface';
|
|
21
22
|
import { createQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
|
|
22
23
|
import { GridAnswerTableCell, GridTextTableCell } from '../Tables/Table.styles';
|
|
23
24
|
import SingleItem from '../SingleItem/SingleItem';
|
|
@@ -25,7 +26,9 @@ import { getQrItemsIndex, mapQItemsIndex } from '../../../utils/mapItem';
|
|
|
25
26
|
import Typography from '@mui/material/Typography';
|
|
26
27
|
import useHidden from '../../../hooks/useHidden';
|
|
27
28
|
|
|
28
|
-
interface GridRowProps
|
|
29
|
+
interface GridRowProps
|
|
30
|
+
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
31
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
29
32
|
qItem: QuestionnaireItem;
|
|
30
33
|
qrItem: QuestionnaireResponseItem;
|
|
31
34
|
columnLabels: string[];
|
|
@@ -33,7 +36,7 @@ interface GridRowProps extends PropsWithQrItemChangeHandler<QuestionnaireRespons
|
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
function GridRow(props: GridRowProps) {
|
|
36
|
-
const { qItem, qrItem, columnLabels, numOfColumns, onQrItemChange } = props;
|
|
39
|
+
const { qItem, qrItem, columnLabels, numOfColumns, parentIsReadOnly, onQrItemChange } = props;
|
|
37
40
|
|
|
38
41
|
const rowQItems = qItem.item;
|
|
39
42
|
const row = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);
|
|
@@ -82,6 +85,7 @@ function GridRow(props: GridRowProps) {
|
|
|
82
85
|
qrItem={cellQrItem}
|
|
83
86
|
isRepeated={true}
|
|
84
87
|
isTabled={true}
|
|
88
|
+
parentIsReadOnly={parentIsReadOnly}
|
|
85
89
|
onQrItemChange={handleQrRowItemChange}
|
|
86
90
|
/>
|
|
87
91
|
</GridAnswerTableCell>
|
|
@@ -26,8 +26,11 @@ import GridRow from './GridRow';
|
|
|
26
26
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
27
27
|
import { getQrItemsIndex } from '../../../utils/mapItem';
|
|
28
28
|
import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
|
|
29
|
+
import type { PropsWithParentIsReadOnlyAttribute } from '../../../interfaces/renderProps.interface';
|
|
29
30
|
|
|
30
|
-
interface GridTableProps
|
|
31
|
+
interface GridTableProps
|
|
32
|
+
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
33
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
31
34
|
qItems: QuestionnaireItem[];
|
|
32
35
|
qrItems: QuestionnaireResponseItem[];
|
|
33
36
|
qItemsIndexMap: Record<string, number>;
|
|
@@ -35,7 +38,7 @@ interface GridTableProps extends PropsWithQrItemChangeHandler<QuestionnaireRespo
|
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
function GridTable(props: GridTableProps) {
|
|
38
|
-
const { qItems, qrItems, qItemsIndexMap, columnLabels, onQrItemChange } = props;
|
|
41
|
+
const { qItems, qrItems, qItemsIndexMap, columnLabels, parentIsReadOnly, onQrItemChange } = props;
|
|
39
42
|
|
|
40
43
|
const qrItemsByIndex: (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] =
|
|
41
44
|
getQrItemsIndex(qItems, qrItems, qItemsIndexMap);
|
|
@@ -68,6 +71,7 @@ function GridTable(props: GridTableProps) {
|
|
|
68
71
|
qrItem={qrItem}
|
|
69
72
|
columnLabels={columnLabels}
|
|
70
73
|
numOfColumns={numOfColumns}
|
|
74
|
+
parentIsReadOnly={parentIsReadOnly}
|
|
71
75
|
onQrItemChange={onQrItemChange}
|
|
72
76
|
/>
|
|
73
77
|
</TableRow>
|
|
@@ -18,20 +18,21 @@
|
|
|
18
18
|
import React, { memo } from 'react';
|
|
19
19
|
import Box from '@mui/material/Box';
|
|
20
20
|
import Divider from '@mui/material/Divider';
|
|
21
|
-
import
|
|
21
|
+
import Typography from '@mui/material/Typography';
|
|
22
22
|
import type { PropsWithIsRepeatedAttribute } from '../../../interfaces/renderProps.interface';
|
|
23
23
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
24
24
|
import { getContextDisplays } from '../../../utils/tabs';
|
|
25
25
|
import ContextDisplayItem from '../ItemParts/ContextDisplayItem';
|
|
26
|
-
import
|
|
26
|
+
import ItemLabelText from '../ItemParts/ItemLabelText';
|
|
27
27
|
|
|
28
28
|
interface GroupHeadingProps extends PropsWithIsRepeatedAttribute {
|
|
29
29
|
qItem: QuestionnaireItem;
|
|
30
|
+
readOnly: boolean;
|
|
30
31
|
tabIsMarkedAsComplete?: boolean;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
const GroupHeading = memo(function GroupHeading(props: GroupHeadingProps) {
|
|
34
|
-
const { qItem, tabIsMarkedAsComplete, isRepeated } = props;
|
|
35
|
+
const { qItem, readOnly, tabIsMarkedAsComplete, isRepeated } = props;
|
|
35
36
|
|
|
36
37
|
const contextDisplayItems = getContextDisplays(qItem);
|
|
37
38
|
|
|
@@ -39,12 +40,17 @@ const GroupHeading = memo(function GroupHeading(props: GroupHeadingProps) {
|
|
|
39
40
|
return null;
|
|
40
41
|
}
|
|
41
42
|
|
|
43
|
+
const isTabHeading = tabIsMarkedAsComplete !== undefined;
|
|
44
|
+
|
|
42
45
|
return (
|
|
43
46
|
<>
|
|
44
47
|
<Box display="flex" alignItems="center" justifyContent="space-between">
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
<Typography
|
|
49
|
+
variant="h6"
|
|
50
|
+
fontSize={isTabHeading ? 16 : 15}
|
|
51
|
+
color={readOnly && !isTabHeading ? 'text.secondary' : 'text.primary'}>
|
|
52
|
+
<ItemLabelText qItem={qItem} />
|
|
53
|
+
</Typography>
|
|
48
54
|
|
|
49
55
|
<Box display="flex" columnGap={0.5}>
|
|
50
56
|
{contextDisplayItems.map((item) => {
|
|
@@ -22,6 +22,7 @@ import { createQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
|
|
|
22
22
|
import { QGroupContainerBox } from '../../Box.styles';
|
|
23
23
|
import type {
|
|
24
24
|
PropsWithIsRepeatedAttribute,
|
|
25
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
25
26
|
PropsWithQrItemChangeHandler
|
|
26
27
|
} from '../../../interfaces/renderProps.interface';
|
|
27
28
|
import type { QrRepeatGroup } from '../../../interfaces/repeatGroup.interface';
|
|
@@ -31,17 +32,18 @@ import GroupHeading from './GroupHeading';
|
|
|
31
32
|
import { GroupCard } from './GroupItem.styles';
|
|
32
33
|
import NextTabButtonWrapper from './NextTabButtonWrapper';
|
|
33
34
|
import GroupItemSwitcher from './GroupItemSwitcher';
|
|
35
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
34
36
|
|
|
35
37
|
interface GroupItemProps
|
|
36
38
|
extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
|
|
37
|
-
PropsWithIsRepeatedAttribute
|
|
39
|
+
PropsWithIsRepeatedAttribute,
|
|
40
|
+
PropsWithParentIsReadOnlyAttribute {
|
|
38
41
|
qItem: QuestionnaireItem;
|
|
39
42
|
qrItem: QuestionnaireResponseItem;
|
|
40
43
|
groupCardElevation: number;
|
|
41
44
|
tabIsMarkedAsComplete?: boolean;
|
|
42
45
|
tabs?: Tabs;
|
|
43
46
|
currentTabIndex?: number;
|
|
44
|
-
goToNextTab?: (nextTabIndex: number) => unknown;
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
function GroupItem(props: GroupItemProps) {
|
|
@@ -53,11 +55,13 @@ function GroupItem(props: GroupItemProps) {
|
|
|
53
55
|
tabIsMarkedAsComplete,
|
|
54
56
|
tabs,
|
|
55
57
|
currentTabIndex,
|
|
58
|
+
parentIsReadOnly,
|
|
56
59
|
onQrItemChange
|
|
57
60
|
} = props;
|
|
58
61
|
|
|
59
62
|
const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);
|
|
60
63
|
|
|
64
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
61
65
|
const itemIsHidden = useHidden(qItem);
|
|
62
66
|
if (itemIsHidden) {
|
|
63
67
|
return null;
|
|
@@ -96,6 +100,7 @@ function GroupItem(props: GroupItemProps) {
|
|
|
96
100
|
<GroupCard elevation={groupCardElevation} isRepeated={isRepeated}>
|
|
97
101
|
<GroupHeading
|
|
98
102
|
qItem={qItem}
|
|
103
|
+
readOnly={readOnly}
|
|
99
104
|
tabIsMarkedAsComplete={tabIsMarkedAsComplete}
|
|
100
105
|
isRepeated={isRepeated}
|
|
101
106
|
/>
|
|
@@ -108,6 +113,7 @@ function GroupItem(props: GroupItemProps) {
|
|
|
108
113
|
qItem={qItem}
|
|
109
114
|
qrItemOrItems={qrItemOrItems}
|
|
110
115
|
groupCardElevation={groupCardElevation}
|
|
116
|
+
parentIsReadOnly={readOnly}
|
|
111
117
|
onQrItemChange={handleQrItemChange}
|
|
112
118
|
onQrRepeatGroupChange={handleQrRepeatGroupChange}
|
|
113
119
|
/>
|