@aehrc/smart-forms-renderer 1.2.7 → 1.2.9
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/FormComponents/AttachmentItem/AttachmentField.js +3 -2
- package/lib/components/FormComponents/AttachmentItem/AttachmentField.js.map +1 -1
- package/lib/components/FormComponents/BooleanItem/BooleanField.d.ts +2 -1
- package/lib/components/FormComponents/BooleanItem/BooleanField.js +6 -4
- package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +8 -8
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +11 -11
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.js +2 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.js +2 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.js.map +1 -1
- package/lib/components/FormComponents/DecimalItem/DecimalField.js +2 -1
- package/lib/components/FormComponents/DecimalItem/DecimalField.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupHeading.js +1 -1
- package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/IntegerField.js +2 -1
- package/lib/components/FormComponents/IntegerItem/IntegerField.js.map +1 -1
- package/lib/components/FormComponents/Item.styles.d.ts +1 -1
- package/lib/components/FormComponents/Item.styles.js +1 -1
- package/lib/components/FormComponents/ItemParts/AccessibleFeedback.d.ts +7 -0
- package/lib/components/FormComponents/ItemParts/AccessibleFeedback.js +7 -0
- package/lib/components/FormComponents/ItemParts/AccessibleFeedback.js.map +1 -0
- package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.js +4 -2
- package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ClearButtonAdornment.js +12 -12
- package/lib/components/FormComponents/ItemParts/ClearButtonAdornment.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/RadioFormGroup.d.ts +1 -1
- package/lib/components/FormComponents/ItemParts/RadioFormGroup.js +5 -3
- package/lib/components/FormComponents/ItemParts/RadioFormGroup.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +8 -8
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
- package/lib/components/FormComponents/QuantityItem/QuantityField.js +2 -1
- package/lib/components/FormComponents/QuantityItem/QuantityField.js.map +1 -1
- package/lib/components/FormComponents/SliderItem/SliderField.js +4 -2
- package/lib/components/FormComponents/SliderItem/SliderField.js.map +1 -1
- package/lib/components/FormComponents/StringItem/StringField.js +2 -1
- package/lib/components/FormComponents/StringItem/StringField.js.map +1 -1
- package/lib/components/FormComponents/TextItem/TextField.js +2 -1
- package/lib/components/FormComponents/TextItem/TextField.js.map +1 -1
- package/lib/components/FormComponents/UrlItem/UrlField.js +2 -1
- package/lib/components/FormComponents/UrlItem/UrlField.js.map +1 -1
- package/lib/components/Tabs/FormBodySingleTab.js +6 -1
- package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
- package/package.json +4 -4
- package/src/components/FormComponents/AttachmentItem/AttachmentField.tsx +7 -2
- package/src/components/FormComponents/BooleanItem/BooleanField.tsx +12 -3
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +2 -3
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +3 -3
- package/src/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.tsx +2 -1
- package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.tsx +6 -3
- package/src/components/FormComponents/DecimalItem/DecimalField.tsx +2 -1
- package/src/components/FormComponents/GroupItem/GroupHeading.tsx +8 -9
- package/src/components/FormComponents/IntegerItem/IntegerField.tsx +2 -1
- package/src/components/FormComponents/Item.styles.ts +1 -1
- package/src/components/FormComponents/ItemParts/AccessibleFeedback.tsx +35 -0
- package/src/components/FormComponents/ItemParts/CheckboxFormGroup.tsx +10 -2
- package/src/components/FormComponents/ItemParts/ClearButtonAdornment.tsx +22 -23
- package/src/components/FormComponents/ItemParts/RadioFormGroup.tsx +11 -3
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +2 -3
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +2 -3
- package/src/components/FormComponents/QuantityItem/QuantityField.tsx +2 -1
- package/src/components/FormComponents/SliderItem/SliderField.tsx +10 -2
- package/src/components/FormComponents/StringItem/StringField.tsx +2 -1
- package/src/components/FormComponents/TextItem/TextField.tsx +2 -1
- package/src/components/FormComponents/UrlItem/UrlField.tsx +2 -1
- package/src/components/Tabs/FormBodySingleTab.tsx +28 -8
|
@@ -4,28 +4,30 @@ import RadioGroup from '@mui/material/RadioGroup';
|
|
|
4
4
|
import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
|
|
5
5
|
import { useRendererConfigStore } from '../../../stores';
|
|
6
6
|
import { getChoiceOrientation } from '../../../utils/choice';
|
|
7
|
-
import {
|
|
7
|
+
import { StyledFeedbackTypography } from '../Item.styles';
|
|
8
8
|
import ClearInputButton from './ClearInputButton';
|
|
9
9
|
import ExpressionUpdateFadingIcon from './ExpressionUpdateFadingIcon';
|
|
10
10
|
import RadioOptionList from './RadioOptionList';
|
|
11
|
+
import AccessibleFeedback from './AccessibleFeedback';
|
|
11
12
|
function RadioFormGroup(props) {
|
|
12
13
|
const { qItem, options, valueRadio, feedback, readOnly, expressionUpdated, answerOptionsToggleExpressionsMap, isTabled, onCheckedChange, onClear, children } = props;
|
|
13
14
|
const readOnlyVisualStyle = useRendererConfigStore.use.readOnlyVisualStyle();
|
|
14
15
|
const inputsFlexGrow = useRendererConfigStore.use.inputsFlexGrow();
|
|
15
16
|
const orientation = getChoiceOrientation(qItem) ?? ChoiceItemOrientation.Vertical;
|
|
17
|
+
const feedbackId = qItem.type + '-' + qItem.linkId + '-feedback';
|
|
16
18
|
return (_jsxs(_Fragment, { children: [_jsxs(Box, { display: "flex", width: "100%", sx: {
|
|
17
19
|
justifyContent: 'space-between',
|
|
18
20
|
alignItems: { xs: 'start', sm: 'center' },
|
|
19
21
|
flexDirection: { xs: 'column', sm: 'row' }
|
|
20
22
|
}, children: [_jsxs(Box, { display: "flex", alignItems: "center", sx: inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}, children: [_jsxs(RadioGroup, { id: qItem.type + '-' + qItem.linkId, ...(!isTabled
|
|
21
23
|
? { 'aria-labelledby': 'label-' + qItem.linkId }
|
|
22
|
-
: { 'aria-label': qItem.text ?? 'Unnamed radio group' }), "aria-readonly": readOnly && readOnlyVisualStyle === 'readonly', row: orientation === ChoiceItemOrientation.Horizontal, sx: inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}, onChange: (e) => {
|
|
24
|
+
: { 'aria-label': qItem.text ?? 'Unnamed radio group' }), "aria-readonly": readOnly && readOnlyVisualStyle === 'readonly', "aria-describedby": feedback ? feedbackId : undefined, row: orientation === ChoiceItemOrientation.Horizontal, sx: inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}, onChange: (e) => {
|
|
23
25
|
// If item.readOnly=true, do not allow any changes
|
|
24
26
|
if (readOnly) {
|
|
25
27
|
return;
|
|
26
28
|
}
|
|
27
29
|
onCheckedChange(e.target.value);
|
|
28
|
-
}, value: valueRadio, "data-test": "q-item-radio-group", children: [_jsx(RadioOptionList, { options: options, readOnly: readOnly, fullWidth: inputsFlexGrow, answerOptionsToggleExpressionsMap: answerOptionsToggleExpressionsMap }), children] }), _jsx(Box, { flexGrow: 1 }), _jsx(ExpressionUpdateFadingIcon, { fadeIn: expressionUpdated, disabled: readOnly })] }), _jsx(ClearInputButton, { buttonShown: !!valueRadio, readOnly: readOnly, onClear: onClear })] }), feedback ? _jsx(
|
|
30
|
+
}, value: valueRadio, "data-test": "q-item-radio-group", children: [_jsx(RadioOptionList, { options: options, readOnly: readOnly, fullWidth: inputsFlexGrow, answerOptionsToggleExpressionsMap: answerOptionsToggleExpressionsMap }), children] }), _jsx(Box, { flexGrow: 1 }), _jsx(ExpressionUpdateFadingIcon, { fadeIn: expressionUpdated, disabled: readOnly })] }), _jsx(ClearInputButton, { buttonShown: !!valueRadio, readOnly: readOnly, onClear: onClear })] }), feedback ? (_jsx(AccessibleFeedback, { id: feedbackId, children: _jsx(StyledFeedbackTypography, { children: feedback }) })) : null] }));
|
|
29
31
|
}
|
|
30
32
|
export default RadioFormGroup;
|
|
31
33
|
//# sourceMappingURL=RadioFormGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioFormGroup.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/RadioFormGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,eAAe,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"RadioFormGroup.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/RadioFormGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,20 +3,20 @@ import { getAnswerOptionLabel } from '../../../utils/openChoice';
|
|
|
3
3
|
import { StandardTextField } from '../Textfield.styles';
|
|
4
4
|
import Autocomplete from '@mui/material/Autocomplete';
|
|
5
5
|
import { useRendererConfigStore } from '../../../stores';
|
|
6
|
-
import { StyledRequiredTypography } from '../Item.styles';
|
|
7
6
|
import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
7
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
8
8
|
function OpenChoiceSelectAnswerOptionField(props) {
|
|
9
9
|
const { qItem, options, valueSelect, feedback, readOnly, isTabled, renderingExtensions, onValueChange } = props;
|
|
10
10
|
const readOnlyVisualStyle = useRendererConfigStore.use.readOnlyVisualStyle();
|
|
11
11
|
const textFieldWidth = useRendererConfigStore.use.textFieldWidth();
|
|
12
12
|
const { displayUnit, displayPrompt, entryFormat } = renderingExtensions;
|
|
13
|
-
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
return (_jsx(_Fragment, { children: _jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueSelect ?? null, options: options, getOptionLabel: (option) => getAnswerOptionLabel(option), onChange: (_, newValue, reason) => onValueChange(newValue, reason), onInputChange: (_, newValue, reason) => onValueChange(newValue, reason), freeSolo: true, autoHighlight: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', size: "small", renderInput: (params) => (_jsx(StandardTextField, { multiline: true, textFieldWidth: textFieldWidth, isTabled: isTabled, placeholder: entryFormat || displayPrompt, helperText: _jsx(AccessibleFeedback, { children: feedback }), ...params, slotProps: {
|
|
14
|
+
input: {
|
|
15
|
+
...params.InputProps,
|
|
16
|
+
readOnly: readOnly && readOnlyVisualStyle === 'readonly',
|
|
17
|
+
endAdornment: (_jsxs(_Fragment, { children: [params.InputProps.endAdornment, _jsx(DisplayUnitText, { readOnly: readOnly, children: displayUnit })] }))
|
|
18
|
+
}
|
|
19
|
+
} })) }) }));
|
|
20
20
|
}
|
|
21
21
|
export default OpenChoiceSelectAnswerOptionField;
|
|
22
22
|
//# sourceMappingURL=OpenChoiceSelectAnswerOptionField.js.map
|
package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenChoiceSelectAnswerOptionField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAOtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"OpenChoiceSelectAnswerOptionField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAOtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AAiBjE,SAAS,iCAAiC,CAAC,KAA6C;IACtF,MAAM,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC7E,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEnE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC;IAExE,OAAO,CACL,4BACE,KAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,WAAW,IAAI,IAAI,EAC1B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EACxD,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAClE,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EACvE,QAAQ,QACR,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC/E,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,iBAAiB,IAChB,SAAS,QACT,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,IAAI,aAAa,EACzC,UAAU,EAAE,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,KAC3D,MAAM,EACV,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,GAAG,MAAM,CAAC,UAAU;wBACpB,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU;wBACxD,YAAY,EAAE,CACZ,8BACG,MAAM,CAAC,UAAU,CAAC,YAAY,EAC/B,KAAC,eAAe,IAAC,QAAQ,EAAE,QAAQ,YAAG,WAAW,GAAmB,IACnE,CACJ;qBACF;iBACF,GACD,CACH,GACD,GACD,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,iCAAiC,CAAC"}
|
package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js
CHANGED
|
@@ -3,20 +3,20 @@ import Autocomplete from '@mui/material/Autocomplete';
|
|
|
3
3
|
import { StandardTextField } from '../Textfield.styles';
|
|
4
4
|
import Typography from '@mui/material/Typography';
|
|
5
5
|
import { useRendererConfigStore } from '../../../stores';
|
|
6
|
-
import { StyledRequiredTypography } from '../Item.styles';
|
|
7
6
|
import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
7
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
8
8
|
function OpenChoiceSelectAnswerValueSetField(props) {
|
|
9
9
|
const { qItem, options, valueSelect, terminologyError, feedback, readOnly, isTabled, renderingExtensions, onValueChange } = props;
|
|
10
10
|
const readOnlyVisualStyle = useRendererConfigStore.use.readOnlyVisualStyle();
|
|
11
11
|
const textFieldWidth = useRendererConfigStore.use.textFieldWidth();
|
|
12
12
|
const { displayUnit, displayPrompt, entryFormat } = renderingExtensions;
|
|
13
|
-
return (_jsxs(_Fragment, { children: [_jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueSelect ?? null, options: options, getOptionLabel: (option) => typeof option === 'string' ? option : (option.display ?? `${option.code}`), onChange: (_, newValue, reason) => onValueChange(newValue, reason), onInputChange: (_, newValue, reason) => onValueChange(newValue, reason), freeSolo: true, autoHighlight: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', size: "small", renderInput: (params) => (_jsx(StandardTextField, { multiline: true, textFieldWidth: textFieldWidth, isTabled: isTabled, placeholder: entryFormat || displayPrompt, ...params, slotProps: {
|
|
13
|
+
return (_jsxs(_Fragment, { children: [_jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueSelect ?? null, options: options, getOptionLabel: (option) => typeof option === 'string' ? option : (option.display ?? `${option.code}`), onChange: (_, newValue, reason) => onValueChange(newValue, reason), onInputChange: (_, newValue, reason) => onValueChange(newValue, reason), freeSolo: true, autoHighlight: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', size: "small", renderInput: (params) => (_jsx(StandardTextField, { multiline: true, textFieldWidth: textFieldWidth, isTabled: isTabled, placeholder: entryFormat || displayPrompt, helperText: _jsx(AccessibleFeedback, { children: feedback }), ...params, slotProps: {
|
|
14
14
|
input: {
|
|
15
15
|
...params.InputProps,
|
|
16
16
|
readOnly: readOnly && readOnlyVisualStyle === 'readonly',
|
|
17
17
|
endAdornment: (_jsxs(_Fragment, { children: [params.InputProps.endAdornment, _jsx(DisplayUnitText, { readOnly: readOnly, children: displayUnit })] }))
|
|
18
18
|
}
|
|
19
|
-
} })) }), terminologyError.error ? (_jsxs(Typography, { children: ["There was an error fetching options from the terminology server for", ' ', terminologyError.answerValueSet] })) : null
|
|
19
|
+
} })) }), terminologyError.error ? (_jsxs(Typography, { children: ["There was an error fetching options from the terminology server for", ' ', terminologyError.answerValueSet] })) : null] }));
|
|
20
20
|
}
|
|
21
21
|
export default OpenChoiceSelectAnswerValueSetField;
|
|
22
22
|
//# sourceMappingURL=OpenChoiceSelectAnswerValueSetField.js.map
|
package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenChoiceSelectAnswerValueSetField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx"],"names":[],"mappings":";AAmBA,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAQlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"OpenChoiceSelectAnswerValueSetField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx"],"names":[],"mappings":";AAmBA,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAQlD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AAkBjE,SAAS,mCAAmC,CAAC,KAA+C;IAC1F,MAAM,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC7E,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEnE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC;IAExE,OAAO,CACL,8BACE,KAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,WAAW,IAAI,IAAI,EAC1B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CACzB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAE5E,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAClE,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EACvE,QAAQ,QACR,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC/E,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,iBAAiB,IAChB,SAAS,QACT,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,IAAI,aAAa,EACzC,UAAU,EAAE,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,KAC3D,MAAM,EACV,SAAS,EAAE;wBACT,KAAK,EAAE;4BACL,GAAG,MAAM,CAAC,UAAU;4BACpB,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU;4BACxD,YAAY,EAAE,CACZ,8BACG,MAAM,CAAC,UAAU,CAAC,YAAY,EAC/B,KAAC,eAAe,IAAC,QAAQ,EAAE,QAAQ,YAAG,WAAW,GAAmB,IACnE,CACJ;yBACF;qBACF,GACD,CACH,GACD,EACD,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CACxB,MAAC,UAAU,sFAC2D,GAAG,EACtE,gBAAgB,CAAC,cAAc,IACrB,CACd,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,mCAAmC,CAAC"}
|
|
@@ -21,6 +21,7 @@ import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
|
21
21
|
import { ClearButtonAdornment } from '../ItemParts/ClearButtonAdornment';
|
|
22
22
|
import ExpressionUpdateFadingIcon from '../ItemParts/ExpressionUpdateFadingIcon';
|
|
23
23
|
import { StandardTextField } from '../Textfield.styles';
|
|
24
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
24
25
|
function QuantityField(props) {
|
|
25
26
|
const { linkId, itemType, itemText, input, feedback, displayPrompt, displayUnit, entryFormat, readOnly, calcExpUpdated, isTabled, onInputChange } = props;
|
|
26
27
|
const readOnlyVisualStyle = useRendererConfigStore.use.readOnlyVisualStyle();
|
|
@@ -47,7 +48,7 @@ function QuantityField(props) {
|
|
|
47
48
|
onInputChange('');
|
|
48
49
|
} }), _jsx(DisplayUnitText, { readOnly: readOnly, children: displayUnit })] }))
|
|
49
50
|
}
|
|
50
|
-
}, helperText: feedback, "data-test": "q-item-quantity-field" }));
|
|
51
|
+
}, helperText: _jsx(AccessibleFeedback, { children: feedback }), "data-test": "q-item-quantity-field" }));
|
|
51
52
|
}
|
|
52
53
|
export default QuantityField;
|
|
53
54
|
//# sourceMappingURL=QuantityField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuantityField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/QuantityItem/QuantityField.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,0BAA0B,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"QuantityField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/QuantityItem/QuantityField.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,0BAA0B,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AAgBjE,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC7E,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEnE,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,aAAa,EAAE,CAAC;QAClB,eAAe,GAAG,aAAa,CAAC;IAClC,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC;IAEnD,0DAA0D;IAC1D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,EAAE,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAExF,OAAO,CACL,KAAC,iBAAiB,IAChB,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,WAAW,EAAE,eAAe,EAC5B,SAAS,QACT,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE;YACT,SAAS,EAAE;gBACT,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,QAAQ;gBACjB,GAAG,CAAC,SAAS,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;aAC9C;YACD,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU;gBACxD,YAAY,EAAE,CACZ,MAAC,cAAc,IAAC,QAAQ,EAAE,KAAK,aAC7B,KAAC,0BAA0B,IAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAC1E,KAAC,oBAAoB,IACnB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE;gCACZ,aAAa,CAAC,EAAE,CAAC,CAAC;4BACpB,CAAC,GACD,EACF,KAAC,eAAe,IAAC,QAAQ,EAAE,QAAQ,YAAG,WAAW,GAAmB,IACrD,CAClB;aACF;SACF,EACD,UAAU,EAAE,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,eACrD,uBAAuB,GACjC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -4,8 +4,9 @@ import Stack from '@mui/material/Stack';
|
|
|
4
4
|
import SliderLabels from './SliderLabels';
|
|
5
5
|
import SliderDisplayValue from './SliderDisplayValue';
|
|
6
6
|
import { useRendererConfigStore } from '../../../stores';
|
|
7
|
-
import {
|
|
7
|
+
import { StyledFeedbackTypography } from '../Item.styles';
|
|
8
8
|
import { StandardSlider } from './Slider.styles';
|
|
9
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
9
10
|
function SliderField(props) {
|
|
10
11
|
const { linkId, itemType, value, minValue, maxValue, stepValue, minLabel, maxLabel, isInteracted, feedback, readOnly, isTabled, onValueChange } = props;
|
|
11
12
|
const readOnlyVisualStyle = useRendererConfigStore.use.readOnlyVisualStyle();
|
|
@@ -16,6 +17,7 @@ function SliderField(props) {
|
|
|
16
17
|
minWidth: 160
|
|
17
18
|
};
|
|
18
19
|
const hasLabels = !!(minLabel || maxLabel);
|
|
20
|
+
const feedbackId = itemType + '-' + linkId + '-feedback';
|
|
19
21
|
return (_jsxs(_Fragment, { children: [_jsxs(Stack, { sx: { ...sliderSx }, children: [_jsx(SliderDisplayValue, { value: value, hasLabels: hasLabels, isInteracted: isInteracted }), hasLabels ? _jsx(SliderLabels, { minLabel: minLabel, maxLabel: maxLabel }) : null, _jsx(StandardSlider, { id: itemType + '-' + linkId, value: value, min: minValue, max: maxValue, step: stepValue, marks: sliderMarks, sx: { ...sliderSx }, onChange: (_, newValue) => {
|
|
20
22
|
// If item.readOnly=true, do not allow any changes
|
|
21
23
|
if (readOnly) {
|
|
@@ -24,7 +26,7 @@ function SliderField(props) {
|
|
|
24
26
|
if (typeof newValue === 'number') {
|
|
25
27
|
onValueChange(newValue);
|
|
26
28
|
}
|
|
27
|
-
}, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', "aria-readonly": readOnly && readOnlyVisualStyle === 'readonly', valueLabelDisplay: "auto", "data-test": "q-item-slider-field" })] }), feedback ? _jsx(
|
|
29
|
+
}, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', "aria-readonly": readOnly && readOnlyVisualStyle === 'readonly', "aria-describedby": feedback ? feedbackId : undefined, valueLabelDisplay: "auto", "data-test": "q-item-slider-field" })] }), feedback ? (_jsx(AccessibleFeedback, { id: feedbackId, children: _jsx(StyledFeedbackTypography, { children: feedback }) })) : null] }));
|
|
28
30
|
}
|
|
29
31
|
export default SliderField;
|
|
30
32
|
//# sourceMappingURL=SliderField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/SliderItem/SliderField.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"SliderField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/SliderItem/SliderField.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AAiBjE,SAAS,WAAW,CAAC,KAAuB;IAC1C,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC7E,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEnE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEtF,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;QAC3C,QAAQ,EAAE,GAAG;KACd,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,QAAQ,GAAG,GAAG,GAAG,MAAM,GAAG,WAAW,CAAC;IAEzD,OAAO,CACL,8BACE,MAAC,KAAK,IAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,aACxB,KAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAI,EACrF,SAAS,CAAC,CAAC,CAAC,KAAC,YAAY,IAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC,CAAC,IAAI,EAC5E,KAAC,cAAc,IACb,EAAE,EAAE,QAAQ,GAAG,GAAG,GAAG,MAAM,EAC3B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,EAAE,GAAG,QAAQ,EAAE,EACnB,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;4BACxB,kDAAkD;4BAClD,IAAI,QAAQ,EAAE,CAAC;gCACb,OAAO;4BACT,CAAC;4BAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gCACjC,aAAa,CAAC,QAAQ,CAAC,CAAC;4BAC1B,CAAC;wBACH,CAAC,EACD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,mBACzC,QAAQ,IAAI,mBAAmB,KAAK,UAAU,sBAC3C,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACnD,iBAAiB,EAAC,MAAM,eACd,qBAAqB,GAC/B,IACI,EAEP,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,kBAAkB,IAAC,EAAE,EAAE,UAAU,YAChC,KAAC,wBAAwB,cAAE,QAAQ,GAA4B,GAC5C,CACtB,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -22,6 +22,7 @@ import { ClearButtonAdornment } from '../ItemParts/ClearButtonAdornment';
|
|
|
22
22
|
import ExpressionUpdateFadingIcon from '../ItemParts/ExpressionUpdateFadingIcon';
|
|
23
23
|
import ItemRepopulateButton from '../ItemParts/ItemRepopulateButton';
|
|
24
24
|
import { StandardTextField } from '../Textfield.styles';
|
|
25
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
25
26
|
function StringField(props) {
|
|
26
27
|
const { qItem, input, feedback, renderingExtensions, readOnly, isTabled, calcExpUpdated, onInputChange, onRepopulateSync } = props;
|
|
27
28
|
const { displayPrompt, displayUnit, entryFormat, isRepopulatable } = renderingExtensions;
|
|
@@ -34,7 +35,7 @@ function StringField(props) {
|
|
|
34
35
|
onInputChange('');
|
|
35
36
|
} }), _jsx(ItemRepopulateButton, { qItem: qItem, repopulatable: isRepopulatable, onRepopulate: onRepopulateSync }), _jsx(DisplayUnitText, { readOnly: readOnly, children: displayUnit })] }))
|
|
36
37
|
}
|
|
37
|
-
}, helperText: feedback, "data-test": "q-item-string-field" }));
|
|
38
|
+
}, helperText: _jsx(AccessibleFeedback, { children: feedback }), "data-test": "q-item-string-field" }));
|
|
38
39
|
}
|
|
39
40
|
export default StringField;
|
|
40
41
|
//# sourceMappingURL=StringField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/StringItem/StringField.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,0BAA0B,MAAM,yCAAyC,CAAC;AACjF,OAAO,oBAAoB,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"StringField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/StringItem/StringField.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,0BAA0B,MAAM,yCAAyC,CAAC;AACjF,OAAO,oBAAoB,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AAajE,SAAS,WAAW,CAAC,KAAuB;IAC1C,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,mBAAmB,CAAC;IAEzF,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC7E,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEnE,OAAO,CACL,KAAC,iBAAiB,IAChB,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,SAAS,QACT,SAAS,QACT,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,WAAW,EAAE,WAAW,IAAI,aAAa,EACzC,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE;YACT,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU;gBACxD,YAAY,EAAE,CACZ,MAAC,cAAc,IAAC,QAAQ,EAAC,KAAK,aAC5B,KAAC,0BAA0B,IAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAC1E,KAAC,oBAAoB,IACnB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE;gCACZ,aAAa,CAAC,EAAE,CAAC,CAAC;4BACpB,CAAC,GACD,EACF,KAAC,oBAAoB,IACnB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,eAAe,EAC9B,YAAY,EAAE,gBAAgB,GAC9B,EACF,KAAC,eAAe,IAAC,QAAQ,EAAE,QAAQ,YAAG,WAAW,GAAmB,IACrD,CAClB;aACF;SACF,EACD,UAAU,EAAE,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,eACrD,qBAAqB,GAC/B,CACH,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -21,6 +21,7 @@ import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
|
21
21
|
import { useRendererConfigStore } from '../../../stores';
|
|
22
22
|
import ExpressionUpdateFadingIcon from '../ItemParts/ExpressionUpdateFadingIcon';
|
|
23
23
|
import ItemRepopulateButton from '../ItemParts/ItemRepopulateButton';
|
|
24
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
24
25
|
function TextField(props) {
|
|
25
26
|
const { qItem, input, feedback, renderingExtensions, readOnly, calcExpUpdated, onInputChange, onRepopulateSync } = props;
|
|
26
27
|
const { displayPrompt, displayUnit, entryFormat, isRepopulatable } = renderingExtensions;
|
|
@@ -30,7 +31,7 @@ function TextField(props) {
|
|
|
30
31
|
readOnly: readOnly && readOnlyVisualStyle === 'readonly',
|
|
31
32
|
endAdornment: (_jsxs(InputAdornment, { position: "end", children: [_jsx(ExpressionUpdateFadingIcon, { fadeIn: calcExpUpdated, disabled: readOnly }), _jsx(ItemRepopulateButton, { qItem: qItem, repopulatable: isRepopulatable, onRepopulate: onRepopulateSync }), _jsx(DisplayUnitText, { readOnly: readOnly, children: displayUnit })] }))
|
|
32
33
|
}
|
|
33
|
-
}, helperText: feedback, "data-test": "q-item-text-field" }));
|
|
34
|
+
}, helperText: _jsx(AccessibleFeedback, { children: feedback }), "data-test": "q-item-text-field" }));
|
|
34
35
|
}
|
|
35
36
|
export default TextField;
|
|
36
37
|
//# sourceMappingURL=TextField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/TextItem/TextField.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,0BAA0B,MAAM,yCAAyC,CAAC;AAGjF,OAAO,oBAAoB,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/TextItem/TextField.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,0BAA0B,MAAM,yCAAyC,CAAC;AAGjF,OAAO,oBAAoB,MAAM,mCAAmC,CAAC;AACrE,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AAajE,SAAS,SAAS,CAAC,KAAqB;IACtC,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,mBAAmB,CAAC;IAEzF,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAE7E,OAAO,CACL,KAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,WAAW,EAAE,WAAW,IAAI,aAAa,EACzC,SAAS,QACT,SAAS,QACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,CAAC,EACV,SAAS,EAAE;YACT,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU;gBACxD,YAAY,EAAE,CACZ,MAAC,cAAc,IAAC,QAAQ,EAAC,KAAK,aAC5B,KAAC,0BAA0B,IAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAC1E,KAAC,oBAAoB,IACnB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,eAAe,EAC9B,YAAY,EAAE,gBAAgB,GAC9B,EACF,KAAC,eAAe,IAAC,QAAQ,EAAE,QAAQ,YAAG,WAAW,GAAmB,IACrD,CAClB;aACF;SACF,EACD,UAAU,EAAE,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,eACrD,mBAAmB,GAC7B,CACH,CAAC;AACJ,CAAC;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { StandardTextField } from '../Textfield.styles';
|
|
|
4
4
|
import { useRendererConfigStore } from '../../../stores';
|
|
5
5
|
import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
6
6
|
import { ClearButtonAdornment } from '../ItemParts/ClearButtonAdornment';
|
|
7
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
7
8
|
function UrlField(props) {
|
|
8
9
|
const { linkId, itemType, input, feedback, displayPrompt, displayUnit, entryFormat, readOnly, isTabled, onInputChange } = props;
|
|
9
10
|
const readOnlyVisualStyle = useRendererConfigStore.use.readOnlyVisualStyle();
|
|
@@ -15,7 +16,7 @@ function UrlField(props) {
|
|
|
15
16
|
onInputChange('');
|
|
16
17
|
} }), _jsx(DisplayUnitText, { readOnly: readOnly, children: displayUnit })] }))
|
|
17
18
|
}
|
|
18
|
-
}, helperText: feedback, "data-test": "q-item-url-field" }));
|
|
19
|
+
}, helperText: _jsx(AccessibleFeedback, { children: feedback }), "data-test": "q-item-url-field" }));
|
|
19
20
|
}
|
|
20
21
|
export default UrlField;
|
|
21
22
|
//# sourceMappingURL=UrlField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/UrlItem/UrlField.tsx"],"names":[],"mappings":";AAmBA,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"UrlField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/UrlItem/UrlField.tsx"],"names":[],"mappings":";AAmBA,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AAcjE,SAAS,QAAQ,CAAC,KAAoB;IACpC,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC7E,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEnE,OAAO,CACL,KAAC,iBAAiB,IAChB,EAAE,EAAE,QAAQ,GAAG,GAAG,GAAG,MAAM,EAC3B,SAAS,QACT,SAAS,QACT,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,WAAW,EAAE,WAAW,IAAI,aAAa,EACzC,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE;YACT,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU;gBACxD,YAAY,EAAE,CACZ,MAAC,cAAc,IAAC,QAAQ,EAAC,KAAK,aAC5B,KAAC,oBAAoB,IACnB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE;gCACZ,aAAa,CAAC,EAAE,CAAC,CAAC;4BACpB,CAAC,GACD,EACF,KAAC,eAAe,IAAC,QAAQ,EAAE,QAAQ,YAAG,WAAW,GAAmB,IACrD,CAClB;aACF;SACF,EACD,UAAU,EAAE,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,eACrD,kBAAkB,GAC5B,CACH,CAAC;AACJ,CAAC;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -24,10 +24,15 @@ import { useQuestionnaireStore, useRendererConfigStore } from '../../stores';
|
|
|
24
24
|
import ContextDisplayItem from '../FormComponents/ItemParts/ContextDisplayItem';
|
|
25
25
|
import { useFocusTabHeading } from '../../hooks/useFocusTabHeading';
|
|
26
26
|
import useDisplayCqfAndCalculatedExpression from '../../hooks/useDisplayCqfAndCalculatedExpression';
|
|
27
|
+
import RequiredAsterisk from '../FormComponents/ItemParts/RequiredAsterisk';
|
|
28
|
+
import useRenderingExtensions from '../../hooks/useRenderingExtensions';
|
|
27
29
|
const FormBodySingleTab = memo(function FormBodySingleTab(props) {
|
|
28
30
|
const { qItem, contextDisplayItems, selected, tabLabel, listIndex } = props;
|
|
29
31
|
const switchTab = useQuestionnaireStore.use.switchTab();
|
|
30
32
|
const disableHeadingFocusOnTabSwitch = useRendererConfigStore.use.disableHeadingFocusOnTabSwitch();
|
|
33
|
+
const requiredIndicatorPosition = useRendererConfigStore.use.requiredIndicatorPosition();
|
|
34
|
+
const { required } = useRenderingExtensions(qItem);
|
|
35
|
+
const readOnly = qItem.readOnly ?? false;
|
|
31
36
|
const focusHeading = useFocusTabHeading();
|
|
32
37
|
// Get aria-label text if available
|
|
33
38
|
const itemTextAriaLabel = useDisplayCqfAndCalculatedExpression(qItem, 'item._text.aria-label') ?? undefined;
|
|
@@ -41,7 +46,7 @@ const FormBodySingleTab = memo(function FormBodySingleTab(props) {
|
|
|
41
46
|
}, 100); // Small delay to ensure panel is rendered
|
|
42
47
|
}
|
|
43
48
|
}
|
|
44
|
-
return (_jsx(_Fragment, { children: _jsx(ListItemButton, { selected: selected, sx: { my: 0.1, minHeight: '36px' }, onClick: handleTabClick, children: _jsx(ListItemText, { primary: _jsxs(Box, { display: "flex", alignItems: "center", justifyContent: "space-between", children: [_jsx(Typography, { id: `tab-${listIndex}`, component: "span", fontWeight: 600, fontSize: "0.8125rem", "aria-label": itemTextAriaLabel, children: tabLabel }), _jsx(Box, { display: "flex", minHeight: 24, minWidth: 24, ml: 1, children: contextDisplayItems.map((item) => {
|
|
49
|
+
return (_jsx(_Fragment, { children: _jsx(ListItemButton, { selected: selected, sx: { my: 0.1, minHeight: '36px' }, onClick: handleTabClick, children: _jsx(ListItemText, { primary: _jsxs(Box, { display: "flex", alignItems: "center", justifyContent: "space-between", children: [_jsxs(Box, { display: "flex", gap: 0.25, children: [required && requiredIndicatorPosition === 'start' ? (_jsx(RequiredAsterisk, { children: "*" })) : null, _jsx(Typography, { id: `tab-${listIndex}`, component: "span", fontWeight: 600, fontSize: "0.8125rem", "aria-label": itemTextAriaLabel, children: tabLabel }), required && requiredIndicatorPosition === 'end' ? (_jsx(RequiredAsterisk, { readOnly: readOnly, variant: "groupHeading", children: "*" })) : null] }), _jsx(Box, { display: "flex", minHeight: 24, minWidth: 24, ml: 1, children: contextDisplayItems.map((item) => {
|
|
45
50
|
return _jsx(ContextDisplayItem, { displayItem: item }, item.linkId);
|
|
46
51
|
}) })] }) }) }) }));
|
|
47
52
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBodySingleTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/FormBodySingleTab.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAc,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,kBAAkB,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,oCAAoC,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"FormBodySingleTab.js","sourceRoot":"","sources":["../../../src/components/Tabs/FormBodySingleTab.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aehrc/smart-forms-renderer",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.9",
|
|
4
4
|
"description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@mui/lab": "^7.0.0-beta.13",
|
|
40
40
|
"@mui/material": "^7.1.1",
|
|
41
41
|
"@mui/x-date-pickers": "^7.28.3",
|
|
42
|
-
"@tanstack/react-query": "^5.90.
|
|
42
|
+
"@tanstack/react-query": "^5.90.5",
|
|
43
43
|
"dayjs": "^1.11.18",
|
|
44
44
|
"deep-diff": "^1.0.2",
|
|
45
45
|
"fast-equals": "^5.2.2",
|
|
@@ -66,14 +66,14 @@
|
|
|
66
66
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
|
-
"@babel/core": "^7.
|
|
69
|
+
"@babel/core": "^7.28.5",
|
|
70
70
|
"@chromatic-com/storybook": "^4.1.1",
|
|
71
71
|
"@storybook/addon-docs": "^9.1.13",
|
|
72
72
|
"@storybook/addon-links": "^9.1.13",
|
|
73
73
|
"@storybook/addon-onboarding": "^9.1.13",
|
|
74
74
|
"@storybook/addon-themes": "^9.1.13",
|
|
75
75
|
"@storybook/react-vite": "^9.1.13",
|
|
76
|
-
"@storybook/test-runner": "^0.
|
|
76
|
+
"@storybook/test-runner": "^0.24.0",
|
|
77
77
|
"@testing-library/jest-dom": "^6.9.1",
|
|
78
78
|
"@testing-library/react": "^16.3.0",
|
|
79
79
|
"@types/deep-diff": "^1.0.5",
|
|
@@ -25,9 +25,10 @@ import Stack from '@mui/material/Stack';
|
|
|
25
25
|
import type { AttachmentValues } from './AttachmentItem';
|
|
26
26
|
import AttachmentUrlField from './AttachmentUrlField';
|
|
27
27
|
import { useRendererConfigStore } from '../../../stores';
|
|
28
|
-
import {
|
|
28
|
+
import { StyledFeedbackTypography } from '../Item.styles';
|
|
29
29
|
import InputAdornment from '@mui/material/InputAdornment';
|
|
30
30
|
import { ClearButtonAdornment } from '../ItemParts/ClearButtonAdornment';
|
|
31
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
31
32
|
|
|
32
33
|
interface AttachmentFieldProps extends PropsWithIsTabledAttribute {
|
|
33
34
|
linkId: string;
|
|
@@ -132,7 +133,11 @@ function AttachmentField(props: AttachmentFieldProps) {
|
|
|
132
133
|
) : null}
|
|
133
134
|
</Stack>
|
|
134
135
|
|
|
135
|
-
{feedback ?
|
|
136
|
+
{feedback ? (
|
|
137
|
+
<AccessibleFeedback>
|
|
138
|
+
<StyledFeedbackTypography>{feedback}</StyledFeedbackTypography>
|
|
139
|
+
</AccessibleFeedback>
|
|
140
|
+
) : null}
|
|
136
141
|
</>
|
|
137
142
|
);
|
|
138
143
|
}
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { memo } from 'react';
|
|
18
|
+
import React, { memo } from 'react';
|
|
19
19
|
import Box from '@mui/material/Box';
|
|
20
20
|
import RadioGroup from '@mui/material/RadioGroup';
|
|
21
21
|
import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
|
|
22
22
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
23
23
|
import ChoiceRadioSingle from '../ChoiceItems/ChoiceRadioSingle';
|
|
24
|
-
import {
|
|
24
|
+
import { StyledFeedbackTypography } from '../Item.styles';
|
|
25
25
|
import { getChoiceOrientation } from '../../../utils/choice';
|
|
26
26
|
import ExpressionUpdateFadingIcon from '../ItemParts/ExpressionUpdateFadingIcon';
|
|
27
27
|
import FormControlLabel from '@mui/material/FormControlLabel';
|
|
@@ -31,6 +31,7 @@ import { useRendererConfigStore } from '../../../stores';
|
|
|
31
31
|
import { StandardCheckbox } from '../../Checkbox.styles';
|
|
32
32
|
import { ariaCheckedMap } from '../../../utils/checkbox';
|
|
33
33
|
import { SrOnly } from '../SrOnly.styles';
|
|
34
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
34
35
|
|
|
35
36
|
interface BooleanFieldProps {
|
|
36
37
|
qItem: QuestionnaireItem;
|
|
@@ -59,6 +60,8 @@ const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
|
|
|
59
60
|
|
|
60
61
|
const ariaCheckedValue = ariaCheckedMap.get(selection ?? 'false');
|
|
61
62
|
|
|
63
|
+
const feedbackId = `${qItem.type}-${qItem.linkId}-feedback`;
|
|
64
|
+
|
|
62
65
|
return (
|
|
63
66
|
<>
|
|
64
67
|
<Box
|
|
@@ -78,6 +81,7 @@ const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
|
|
|
78
81
|
checked={selection === 'true'}
|
|
79
82
|
readOnly={readOnly && readOnlyVisualStyle === 'readonly'}
|
|
80
83
|
aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
|
|
84
|
+
aria-describedby={feedback ? feedbackId : undefined}
|
|
81
85
|
role="checkbox"
|
|
82
86
|
aria-checked={ariaCheckedValue}
|
|
83
87
|
onChange={() => {
|
|
@@ -109,6 +113,7 @@ const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
|
|
|
109
113
|
row={orientation === ChoiceItemOrientation.Horizontal}
|
|
110
114
|
sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
|
|
111
115
|
aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
|
|
116
|
+
aria-describedby={feedback ? feedbackId : undefined}
|
|
112
117
|
onChange={(e) => {
|
|
113
118
|
// If item.readOnly=true, do not allow any changes
|
|
114
119
|
if (readOnly) {
|
|
@@ -168,7 +173,11 @@ const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
|
|
|
168
173
|
/>
|
|
169
174
|
</Box>
|
|
170
175
|
|
|
171
|
-
{feedback ?
|
|
176
|
+
{feedback ? (
|
|
177
|
+
<AccessibleFeedback id={feedbackId}>
|
|
178
|
+
<StyledFeedbackTypography>{feedback}</StyledFeedbackTypography>
|
|
179
|
+
</AccessibleFeedback>
|
|
180
|
+
) : null}
|
|
172
181
|
</>
|
|
173
182
|
);
|
|
174
183
|
});
|
|
@@ -24,10 +24,10 @@ import type {
|
|
|
24
24
|
import { useRendererConfigStore } from '../../../stores';
|
|
25
25
|
import { compareAnswerOptionValue, isOptionDisabled } from '../../../utils/choice';
|
|
26
26
|
import { getAnswerOptionLabel } from '../../../utils/openChoice';
|
|
27
|
-
import { StyledRequiredTypography } from '../Item.styles';
|
|
28
27
|
import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
29
28
|
import ExpressionUpdateFadingIcon from '../ItemParts/ExpressionUpdateFadingIcon';
|
|
30
29
|
import { StandardTextField } from '../Textfield.styles';
|
|
30
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
31
31
|
|
|
32
32
|
interface ChoiceSelectAnswerOptionFieldsProps
|
|
33
33
|
extends PropsWithIsTabledAttribute,
|
|
@@ -82,6 +82,7 @@ function ChoiceSelectAnswerOptionFields(props: ChoiceSelectAnswerOptionFieldsPro
|
|
|
82
82
|
textFieldWidth={textFieldWidth}
|
|
83
83
|
isTabled={isTabled}
|
|
84
84
|
placeholder={entryFormat || displayPrompt}
|
|
85
|
+
helperText={<AccessibleFeedback>{feedback}</AccessibleFeedback>}
|
|
85
86
|
{...params}
|
|
86
87
|
slotProps={{
|
|
87
88
|
input: {
|
|
@@ -99,8 +100,6 @@ function ChoiceSelectAnswerOptionFields(props: ChoiceSelectAnswerOptionFieldsPro
|
|
|
99
100
|
/>
|
|
100
101
|
)}
|
|
101
102
|
/>
|
|
102
|
-
|
|
103
|
-
{feedback ? <StyledRequiredTypography>{feedback}</StyledRequiredTypography> : null}
|
|
104
103
|
</>
|
|
105
104
|
);
|
|
106
105
|
}
|
|
@@ -28,9 +28,10 @@ import { useRendererConfigStore } from '../../../stores';
|
|
|
28
28
|
import { isCodingDisabled } from '../../../utils/choice';
|
|
29
29
|
import ExpressionUpdateFadingIcon from '../ItemParts/ExpressionUpdateFadingIcon';
|
|
30
30
|
import { StyledAlert } from '../../Alert.styles';
|
|
31
|
-
import { StyledRequiredTypography } from '../Item.styles';
|
|
32
31
|
import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
33
32
|
import { StandardTextField } from '../Textfield.styles';
|
|
33
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
34
|
+
import React from 'react';
|
|
34
35
|
|
|
35
36
|
interface ChoiceSelectAnswerValueSetFieldsProps
|
|
36
37
|
extends PropsWithIsTabledAttribute,
|
|
@@ -89,6 +90,7 @@ function ChoiceSelectAnswerValueSetFields(props: ChoiceSelectAnswerValueSetField
|
|
|
89
90
|
textFieldWidth={textFieldWidth}
|
|
90
91
|
isTabled={isTabled}
|
|
91
92
|
placeholder={entryFormat || displayPrompt}
|
|
93
|
+
helperText={<AccessibleFeedback>{feedback}</AccessibleFeedback>}
|
|
92
94
|
{...params}
|
|
93
95
|
slotProps={{
|
|
94
96
|
input: {
|
|
@@ -113,8 +115,6 @@ function ChoiceSelectAnswerValueSetFields(props: ChoiceSelectAnswerValueSetField
|
|
|
113
115
|
/>
|
|
114
116
|
)}
|
|
115
117
|
/>
|
|
116
|
-
|
|
117
|
-
{feedback ? <StyledRequiredTypography>{feedback}</StyledRequiredTypography> : null}
|
|
118
118
|
</>
|
|
119
119
|
);
|
|
120
120
|
}
|
|
@@ -24,6 +24,7 @@ import { StandardTextField } from '../../Textfield.styles';
|
|
|
24
24
|
import DatePicker from './DatePicker';
|
|
25
25
|
import { useRendererConfigStore } from '../../../../stores';
|
|
26
26
|
import ExpressionUpdateFadingIcon from '../../ItemParts/ExpressionUpdateFadingIcon';
|
|
27
|
+
import AccessibleFeedback from '../../ItemParts/AccessibleFeedback';
|
|
27
28
|
|
|
28
29
|
interface CustomDateFieldProps extends PropsWithIsTabledAttribute {
|
|
29
30
|
linkId: string;
|
|
@@ -119,7 +120,7 @@ function CustomDateField(props: CustomDateFieldProps) {
|
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
122
|
}}
|
|
122
|
-
helperText={feedback}
|
|
123
|
+
helperText={<AccessibleFeedback>{feedback}</AccessibleFeedback>}
|
|
123
124
|
/>
|
|
124
125
|
);
|
|
125
126
|
}
|
|
@@ -25,6 +25,7 @@ import type { PropsWithIsTabledAttribute } from '../../../../interfaces/renderPr
|
|
|
25
25
|
import { useRendererConfigStore } from '../../../../stores';
|
|
26
26
|
import FormControl from '@mui/material/FormControl';
|
|
27
27
|
import MuiTextField from '../../TextItem/MuiTextField';
|
|
28
|
+
import AccessibleFeedback from '../../ItemParts/AccessibleFeedback';
|
|
28
29
|
|
|
29
30
|
interface CustomTimeFieldProps extends PropsWithIsTabledAttribute {
|
|
30
31
|
linkId: string;
|
|
@@ -113,9 +114,11 @@ function CustomTimeField(props: CustomTimeFieldProps) {
|
|
|
113
114
|
</Select>
|
|
114
115
|
</FormControl>
|
|
115
116
|
</Box>
|
|
116
|
-
<
|
|
117
|
-
{
|
|
118
|
-
|
|
117
|
+
<AccessibleFeedback>
|
|
118
|
+
<Typography component="span" variant="caption" color="error" sx={{ ml: 1.75, mt: -0.5 }}>
|
|
119
|
+
{feedback}
|
|
120
|
+
</Typography>
|
|
121
|
+
</AccessibleFeedback>
|
|
119
122
|
</>
|
|
120
123
|
);
|
|
121
124
|
}
|
|
@@ -25,6 +25,7 @@ import ItemRepopulateButton from '../ItemParts/ItemRepopulateButton';
|
|
|
25
25
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
26
26
|
import type { RenderingExtensions } from '../../../hooks/useRenderingExtensions';
|
|
27
27
|
import { StandardTextField } from '../Textfield.styles';
|
|
28
|
+
import AccessibleFeedback from '../ItemParts/AccessibleFeedback';
|
|
28
29
|
|
|
29
30
|
interface DecimalFieldProps extends PropsWithIsTabledAttribute {
|
|
30
31
|
qItem: QuestionnaireItem;
|
|
@@ -74,7 +75,7 @@ function DecimalField(props: DecimalFieldProps) {
|
|
|
74
75
|
id={inputId}
|
|
75
76
|
value={input}
|
|
76
77
|
error={!!feedback}
|
|
77
|
-
helperText={feedback}
|
|
78
|
+
helperText={<AccessibleFeedback>{feedback}</AccessibleFeedback>}
|
|
78
79
|
onChange={(event) => onInputChange(event.target.value)}
|
|
79
80
|
disabled={readOnly && readOnlyVisualStyle === 'disabled'}
|
|
80
81
|
placeholder={placeholderText}
|