@aehrc/smart-forms-renderer 1.0.0-alpha.48.dev1 → 1.0.0-alpha.48.dev2

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.
Files changed (99) hide show
  1. package/lib/components/Checkbox.styles.js +11 -0
  2. package/lib/components/Checkbox.styles.js.map +1 -1
  3. package/lib/components/FormComponents/AttachmentItem/AttachmentField.js +0 -1
  4. package/lib/components/FormComponents/AttachmentItem/AttachmentField.js.map +1 -1
  5. package/lib/components/FormComponents/BooleanItem/BooleanField.js +4 -2
  6. package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -1
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +6 -10
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js +1 -1
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -1
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.d.ts +0 -0
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.js +2 -0
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.js.map +1 -0
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.d.ts +0 -0
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.js +2 -0
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.js.map +1 -0
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +2 -1
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -1
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +2 -1
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -1
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.d.ts +14 -0
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.js +29 -0
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.js.map +1 -0
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js +2 -1
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js.map +1 -1
  26. package/lib/components/FormComponents/ItemParts/CheckboxSingle.js +1 -1
  27. package/lib/components/FormComponents/ItemParts/CheckboxSingle.js.map +1 -1
  28. package/lib/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.js +1 -1
  29. package/lib/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.js.map +1 -1
  30. package/lib/components/FormComponents/ItemParts/ItemLabel.js +1 -5
  31. package/lib/components/FormComponents/ItemParts/ItemLabel.js.map +1 -1
  32. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +5 -8
  33. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
  34. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js +2 -1
  35. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -1
  36. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.js +2 -1
  37. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.js.map +1 -1
  38. package/lib/components/FormComponents/Tables/GroupTableRow.js +2 -2
  39. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
  40. package/lib/components/FormComponents/Tables/GroupTableView.js +5 -2
  41. package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
  42. package/lib/components/FormComponents/Tables/SelectRowButton.d.ts +1 -1
  43. package/lib/components/FormComponents/Tables/SelectRowButton.js +2 -2
  44. package/lib/components/FormComponents/Tables/SelectRowButton.js.map +1 -1
  45. package/lib/components/Radio.styles.js +11 -0
  46. package/lib/components/Radio.styles.js.map +1 -1
  47. package/lib/hooks/useAnswerOptionsToggleExpressions.d.ts +7 -0
  48. package/lib/hooks/useAnswerOptionsToggleExpressions.js +67 -0
  49. package/lib/hooks/useAnswerOptionsToggleExpressions.js.map +1 -0
  50. package/lib/interfaces/answerOptionsToggleExpression.interface.d.ts +9 -0
  51. package/lib/interfaces/answerOptionsToggleExpression.interface.js +2 -0
  52. package/lib/interfaces/answerOptionsToggleExpression.interface.js.map +1 -0
  53. package/lib/stores/extractOperationStore.d.ts +26 -0
  54. package/lib/stores/extractOperationStore.js +20 -0
  55. package/lib/stores/extractOperationStore.js.map +1 -0
  56. package/lib/templates/bloodPressureTemplate.d.ts +23 -0
  57. package/lib/templates/bloodPressureTemplate.js +80 -0
  58. package/lib/templates/bloodPressureTemplate.js.map +1 -0
  59. package/lib/tests/test-data/bloodPressureSample.d.ts +3 -0
  60. package/lib/tests/test-data/bloodPressureSample.js +250 -0
  61. package/lib/tests/test-data/bloodPressureSample.js.map +1 -0
  62. package/lib/tests/test-data/complexTemplateSample.d.ts +3 -0
  63. package/lib/tests/test-data/complexTemplateSample.js +578 -0
  64. package/lib/tests/test-data/complexTemplateSample.js.map +1 -0
  65. package/lib/utils/answerOptionsToggleExpressions.d.ts +24 -0
  66. package/lib/utils/answerOptionsToggleExpressions.js +144 -0
  67. package/lib/utils/answerOptionsToggleExpressions.js.map +1 -0
  68. package/lib/utils/checkbox.d.ts +2 -0
  69. package/lib/utils/checkbox.js +6 -0
  70. package/lib/utils/checkbox.js.map +1 -0
  71. package/lib/utils/extractTemplate.d.ts +44 -0
  72. package/lib/utils/extractTemplate.js +809 -0
  73. package/lib/utils/extractTemplate.js.map +1 -0
  74. package/lib/utils/questionnaireStoreUtils/extractAnswerOptionsToggleExpressions.d.ts +3 -0
  75. package/lib/utils/questionnaireStoreUtils/extractAnswerOptionsToggleExpressions.js +6 -0
  76. package/lib/utils/questionnaireStoreUtils/extractAnswerOptionsToggleExpressions.js.map +1 -0
  77. package/lib/utils/templateMatching.d.ts +15 -0
  78. package/lib/utils/templateMatching.js +62 -0
  79. package/lib/utils/templateMatching.js.map +1 -0
  80. package/package.json +2 -2
  81. package/src/components/Checkbox.styles.ts +14 -0
  82. package/src/components/FormComponents/AttachmentItem/AttachmentField.tsx +0 -3
  83. package/src/components/FormComponents/BooleanItem/BooleanField.tsx +7 -1
  84. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +6 -10
  85. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +0 -2
  86. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +2 -1
  87. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +2 -1
  88. package/src/components/FormComponents/ChoiceItems/ChoiceRadioSingle.tsx +2 -1
  89. package/src/components/FormComponents/ItemParts/CheckboxSingle.tsx +3 -0
  90. package/src/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.tsx +3 -0
  91. package/src/components/FormComponents/ItemParts/ItemLabel.tsx +0 -5
  92. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +5 -8
  93. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +2 -1
  94. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.tsx +2 -1
  95. package/src/components/FormComponents/Tables/GroupTableRow.tsx +2 -2
  96. package/src/components/FormComponents/Tables/GroupTableView.tsx +14 -6
  97. package/src/components/FormComponents/Tables/SelectRowButton.tsx +6 -3
  98. package/src/components/Radio.styles.tsx +13 -0
  99. package/src/utils/checkbox.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractTemplate.js","sourceRoot":"","sources":["../../src/utils/extractTemplate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Extension } from 'fhir/r4';
2
+ import type { RestrictedAnswerOption } from '../../interfaces/answerOptionsToggleExpression.interface';
3
+ export declare function optionIsAnswerOptionsToggleExpressionOption(optionExtension: Extension): optionExtension is Extension & RestrictedAnswerOption;
@@ -0,0 +1,6 @@
1
+ export function optionIsAnswerOptionsToggleExpressionOption(optionExtension) {
2
+ return (optionExtension.valueCoding !== undefined ||
3
+ optionExtension.valueString !== undefined ||
4
+ optionExtension.valueInteger !== undefined);
5
+ }
6
+ //# sourceMappingURL=extractAnswerOptionsToggleExpressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractAnswerOptionsToggleExpressions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractAnswerOptionsToggleExpressions.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,2CAA2C,CACzD,eAA0B;IAE1B,OAAO,CACL,eAAe,CAAC,WAAW,KAAK,SAAS;QACzC,eAAe,CAAC,WAAW,KAAK,SAAS;QACzC,eAAe,CAAC,YAAY,KAAK,SAAS,CAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { QuestionnaireItem } from 'fhir/r4';
2
+ /**
3
+ * Constants for template extraction extensions
4
+ */
5
+ export declare const FHIR_TEMPLATE_EXTRACT_EXTENSION = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract";
6
+ /**
7
+ * Finds a matching questionnaire item for a given template, with enhanced support for BP templates
8
+ *
9
+ * @param items - Questionnaire items to search through
10
+ * @param templateId - ID of the template to match
11
+ * @param templateResourceType - Resource type of the template
12
+ * @param templateCoding - Coding array from template.code
13
+ * @returns Matched questionnaire item or null if no match found
14
+ */
15
+ export declare function findMatchingItem(items: QuestionnaireItem[] | undefined, templateId: string, templateResourceType: string, templateCoding: any[] | undefined): QuestionnaireItem | null;
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Constants for template extraction extensions
3
+ */
4
+ export const FHIR_TEMPLATE_EXTRACT_EXTENSION = 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtract';
5
+ /**
6
+ * Finds a matching questionnaire item for a given template, with enhanced support for BP templates
7
+ *
8
+ * @param items - Questionnaire items to search through
9
+ * @param templateId - ID of the template to match
10
+ * @param templateResourceType - Resource type of the template
11
+ * @param templateCoding - Coding array from template.code
12
+ * @returns Matched questionnaire item or null if no match found
13
+ */
14
+ export function findMatchingItem(items, templateId, templateResourceType, templateCoding) {
15
+ var _a;
16
+ if (!items)
17
+ return null;
18
+ for (const item of items) {
19
+ // Check for direct template reference first - this is the standard way
20
+ const templateRef = (_a = item.extension) === null || _a === void 0 ? void 0 : _a.find(ext => {
21
+ var _a;
22
+ return ext.url === FHIR_TEMPLATE_EXTRACT_EXTENSION &&
23
+ ((_a = ext.extension) === null || _a === void 0 ? void 0 : _a.some(subExt => {
24
+ var _a;
25
+ return subExt.url === 'template' &&
26
+ ((_a = subExt.valueReference) === null || _a === void 0 ? void 0 : _a.reference) === `#${templateId}`;
27
+ }));
28
+ });
29
+ if (templateRef) {
30
+ console.log(`Found direct template reference match for ${templateId}: ${item.linkId}`);
31
+ return item;
32
+ }
33
+ // Special handling for blood pressure templates
34
+ if (templateResourceType === 'Observation' && templateCoding && templateCoding.length > 0) {
35
+ // Check if this is a BP template
36
+ const isSystolic = templateCoding.some(c => c.code === '8480-6' ||
37
+ (c.display && c.display.toLowerCase().includes('systolic')));
38
+ const isDiastolic = templateCoding.some(c => c.code === '8462-4' ||
39
+ (c.display && c.display.toLowerCase().includes('diastolic')));
40
+ if (isSystolic || isDiastolic) {
41
+ // Match BP templates to items by text or linkId
42
+ const itemHasSystolicText = item.text && item.text.toLowerCase().includes('systolic');
43
+ const itemHasSystolicLinkId = item.linkId.toLowerCase().includes('systolic');
44
+ const itemHasDiastolicText = item.text && item.text.toLowerCase().includes('diastolic');
45
+ const itemHasDiastolicLinkId = item.linkId.toLowerCase().includes('diastolic');
46
+ if ((isSystolic && (itemHasSystolicText || itemHasSystolicLinkId)) ||
47
+ (isDiastolic && (itemHasDiastolicText || itemHasDiastolicLinkId))) {
48
+ console.log(`Found match for BP template ${templateId} with item ${item.linkId}`);
49
+ return item;
50
+ }
51
+ }
52
+ }
53
+ // Recursively check child items
54
+ if (item.item) {
55
+ const found = findMatchingItem(item.item, templateId, templateResourceType, templateCoding);
56
+ if (found)
57
+ return found;
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ //# sourceMappingURL=templateMatching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateMatching.js","sourceRoot":"","sources":["../../src/utils/templateMatching.ts"],"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.0.0-alpha.48.dev1",
3
+ "version": "1.0.0-alpha.48.dev2",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -18,7 +18,7 @@
18
18
  "type": "git",
19
19
  "url": "git+https://github.com/aehrc/smart-forms.git"
20
20
  },
21
- "author": {
21
+ "author": {
22
22
  "name": "AEHRC"
23
23
  },
24
24
  "license": "Apache-2.0",
@@ -5,6 +5,20 @@ export const StandardCheckbox = styled(Checkbox, {
5
5
  shouldForwardProp: (prop) => prop !== 'readOnly'
6
6
  })<{ readOnly: boolean }>(({ theme, readOnly }) => ({
7
7
  ...(readOnly && {
8
+ // Remove 'pointer' cursor when readOnly
9
+ cursor: 'default',
10
+
11
+ // Hide the ripple effect when readOnly
12
+ '.MuiTouchRipple-root': {
13
+ display: 'none'
14
+ },
15
+
16
+ // Show grey background when focused (via keyboard)
17
+ '&.Mui-focusVisible': {
18
+ backgroundColor: theme.palette.action.hover
19
+ },
20
+
21
+ // Use grey stylings when it's readOnly
8
22
  '&.MuiButtonBase-root': {
9
23
  '&.MuiCheckbox-root': {
10
24
  // Use text.disabled colour (same as disabled field) here because text.secondary is too dark, and 'rgb(220, 223, 228)' is too light
@@ -58,9 +58,6 @@ function AttachmentField(props: AttachmentFieldProps) {
58
58
 
59
59
  const { uploadedFile, url, fileName } = attachmentValues;
60
60
 
61
- // TODO: Consider accessible items for attachment fields too if #1096 is fixed.
62
-
63
-
64
61
  return (
65
62
  <>
66
63
  <Stack rowGap={1} id={itemType + '-' + linkId}>
@@ -28,6 +28,7 @@ import { isSpecificItemControl } from '../../../utils';
28
28
  import ClearInputButton from '../ItemParts/ClearInputButton';
29
29
  import { useRendererStylingStore } from '../../../stores';
30
30
  import { StandardCheckbox } from '../../Checkbox.styles';
31
+ import { ariaCheckedMap } from '../../../utils/checkbox';
31
32
 
32
33
  interface BooleanFieldProps {
33
34
  qItem: QuestionnaireItem;
@@ -55,6 +56,8 @@ const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
55
56
 
56
57
  const selection = valueBoolean === undefined ? null : valueBoolean.toString();
57
58
 
59
+ const ariaCheckedValue = ariaCheckedMap.get(selection ?? 'false');
60
+
58
61
  return (
59
62
  <>
60
63
  <Box
@@ -74,6 +77,9 @@ const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
74
77
  size="small"
75
78
  checked={selection === 'true'}
76
79
  readOnly={readOnly && readOnlyVisualStyle === 'readonly'}
80
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
81
+ role="checkbox"
82
+ aria-checked={ariaCheckedValue}
77
83
  onChange={() => {
78
84
  // If item.readOnly=true, do not allow any changes
79
85
  if (readOnly) {
@@ -99,9 +105,9 @@ const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
99
105
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}>
100
106
  <StyledRadioGroup
101
107
  id={qItem.type + '-' + qItem.linkId}
102
- aria-labelledby={'label-' + qItem.linkId}
103
108
  row={orientation === ChoiceItemOrientation.Horizontal}
104
109
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
110
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
105
111
  onChange={(e) => {
106
112
  // If item.readOnly=true, do not allow any changes
107
113
  if (readOnly) {
@@ -22,11 +22,7 @@ import Fade from '@mui/material/Fade';
22
22
  import Tooltip from '@mui/material/Tooltip';
23
23
  import type { Coding, QuestionnaireItem } from 'fhir/r4';
24
24
  import { StandardTextField } from '../Textfield.styles';
25
- import SearchIcon from '@mui/icons-material/Search';
26
- import InfoIcon from '@mui/icons-material/Info';
27
- import WarningAmberIcon from '@mui/icons-material/WarningAmber';
28
- import DoneIcon from '@mui/icons-material/Done';
29
- import ErrorIcon from '@mui/icons-material/Error';
25
+ import { Done, Error, Info, Search, WarningAmber } from '@mui/icons-material';
30
26
  import type {
31
27
  PropsWithIsTabledRequiredAttribute,
32
28
  PropsWithParentIsReadOnlyAttribute,
@@ -100,7 +96,7 @@ function ChoiceAutocompleteField(props: ChoiceAutocompleteFieldsProps) {
100
96
  readOnly: readOnly && readOnlyVisualStyle === 'readonly',
101
97
  startAdornment: (
102
98
  <>
103
- {!valueCoding ? <SearchIcon fontSize="small" sx={{ ml: 0.5 }} /> : null}
99
+ {!valueCoding ? <Search fontSize="small" sx={{ ml: 0.5 }} /> : null}
104
100
  {params.InputProps.startAdornment}
105
101
  </>
106
102
  ),
@@ -113,10 +109,10 @@ function ChoiceAutocompleteField(props: ChoiceAutocompleteFieldsProps) {
113
109
  <Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>
114
110
  {
115
111
  {
116
- info: <InfoIcon fontSize="small" color="info" />,
117
- warning: <WarningAmberIcon fontSize="small" color="warning" />,
118
- success: <DoneIcon fontSize="small" color="success" />,
119
- error: <ErrorIcon fontSize="small" color="error" />
112
+ info: <Info fontSize="small" color="info" />,
113
+ warning: <WarningAmber fontSize="small" color="warning" />,
114
+ success: <Done fontSize="small" color="success" />,
115
+ error: <Error fontSize="small" color="error" />
120
116
  }[feedback.color]
121
117
  }
122
118
  </Tooltip>
@@ -46,8 +46,6 @@ function ChoiceCheckboxAnswerOptionFields(props: ChoiceCheckboxAnswerOptionField
46
46
  <Box id={qItem.type + '-' + qItem.linkId}>
47
47
  <StyledFormGroup row={orientation === ChoiceItemOrientation.Horizontal}>
48
48
  <CheckboxOptionList
49
- aria-labelledby={'label-' + qItem.linkId}
50
-
51
49
  options={options}
52
50
  answers={answers}
53
51
  readOnly={readOnly}
@@ -49,6 +49,7 @@ function ChoiceRadioAnswerOptionFields(props: ChoiceRadioAnswerOptionFieldsProps
49
49
  onClear
50
50
  } = props;
51
51
 
52
+ const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
52
53
  const inputsFlexGrow = useRendererStylingStore.use.inputsFlexGrow();
53
54
  const hideClearButton = useRendererStylingStore.use.hideClearButton();
54
55
 
@@ -69,9 +70,9 @@ function ChoiceRadioAnswerOptionFields(props: ChoiceRadioAnswerOptionFieldsProps
69
70
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}>
70
71
  <StyledRadioGroup
71
72
  id={qItem.type + '-' + qItem.linkId}
72
- aria-labelledby={'label-' + qItem.linkId}
73
73
  row={orientation === ChoiceItemOrientation.Horizontal}
74
74
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
75
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
75
76
  onChange={(e) => {
76
77
  // If item.readOnly=true, do not allow any changes
77
78
  if (readOnly) {
@@ -55,6 +55,7 @@ function ChoiceRadioAnswerValueSetFields(props: ChoiceRadioAnswerValueSetFieldsP
55
55
  onClear
56
56
  } = props;
57
57
 
58
+ const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
58
59
  const inputsFlexGrow = useRendererStylingStore.use.inputsFlexGrow();
59
60
  const hideClearButton = useRendererStylingStore.use.hideClearButton();
60
61
 
@@ -76,9 +77,9 @@ function ChoiceRadioAnswerValueSetFields(props: ChoiceRadioAnswerValueSetFieldsP
76
77
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}>
77
78
  <StyledRadioGroup
78
79
  id={qItem.type + '-' + qItem.linkId}
79
- aria-labelledby={'label-' + qItem.linkId}
80
80
  row={orientation === ChoiceItemOrientation.Horizontal}
81
81
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
82
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
82
83
  onChange={(e) => {
83
84
  // If item.readOnly=true, do not allow any changes
84
85
  if (readOnly) {
@@ -37,7 +37,8 @@ function ChoiceRadioSingle(props: ChoiceRadioSingleProps) {
37
37
  sx={{
38
38
  width: fullWidth ? '100%' : 'unset',
39
39
  ...(readOnly && {
40
- color: readOnlyVisualStyle === 'readonly' ? 'text.secondary' : undefined
40
+ color: readOnlyVisualStyle === 'readonly' ? 'text.secondary' : undefined,
41
+ cursor: 'default'
41
42
  })
42
43
  }}
43
44
  disabled={readOnly && readOnlyVisualStyle === 'disabled'}
@@ -42,6 +42,9 @@ function CheckboxSingle(props: Props) {
42
42
  size="small"
43
43
  checked={isChecked}
44
44
  readOnly={readOnly && readOnlyVisualStyle === 'readonly'}
45
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
46
+ role="checkbox"
47
+ aria-checked={isChecked}
45
48
  onChange={() => {
46
49
  // If item.readOnly=true, do not allow any changes
47
50
  if (readOnly) {
@@ -51,6 +51,9 @@ function CheckboxSingleWithOpenLabel(props: Props) {
51
51
  size="small"
52
52
  checked={isChecked}
53
53
  readOnly={readOnly && readOnlyVisualStyle === 'readonly'}
54
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
55
+ role="checkbox"
56
+ aria-checked={isChecked}
54
57
  onChange={handleCheckedChange}
55
58
  />
56
59
  }
@@ -69,14 +69,9 @@ const ItemLabel = memo(function ItemLabel(props: ItemLabelProps) {
69
69
  {/* Added 0.5 marginTop (4px) because item labels doesn't look in line with their fields */}
70
70
  {/* flexGrow: 1 is important if xhtml and markdown rendering has width: 100% */}
71
71
  <Typography
72
- id={'label-' + qItem.linkId}
73
72
  component={component}
74
73
  variant={variant}
75
- // TODO: Delete this section later after testing.
76
- // based on the qItem type if it is choice, or open-choice, boolean then don't display the htmlFor
77
- // htmlFor={qItem.type === 'choice' || qItem.type === 'open-choice' || qItem.type === 'boolean' ? undefined : qItem.type + '-' + qItem.linkId}
78
74
  htmlFor={qItem.type + '-' + qItem.linkId}
79
-
80
75
  color={textColor}
81
76
  sx={{ mt: 0.5, flexGrow: 1, ...(parentStyles || {}) }}>
82
77
  <ItemTextSwitcher qItem={qItem} />
@@ -24,10 +24,7 @@ import SearchIcon from '@mui/icons-material/Search';
24
24
  import CircularProgress from '@mui/material/CircularProgress';
25
25
  import Fade from '@mui/material/Fade';
26
26
  import Tooltip from '@mui/material/Tooltip';
27
- import InfoIcon from '@mui/icons-material/Info';
28
- import WarningAmberIcon from '@mui/icons-material/WarningAmber';
29
- import DoneIcon from '@mui/icons-material/Done';
30
- import ErrorIcon from '@mui/icons-material/Error';
27
+ import { Done, Error, Info, WarningAmber } from '@mui/icons-material';
31
28
  import type { Coding, QuestionnaireItem } from 'fhir/r4';
32
29
  import type {
33
30
  PropsWithIsTabledRequiredAttribute,
@@ -124,10 +121,10 @@ function OpenChoiceAutocompleteField(props: OpenChoiceAutocompleteFieldProps) {
124
121
  <Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>
125
122
  {
126
123
  {
127
- info: <InfoIcon fontSize="small" color="info" />,
128
- warning: <WarningAmberIcon fontSize="small" color="warning" />,
129
- success: <DoneIcon fontSize="small" color="success" />,
130
- error: <ErrorIcon fontSize="small" color="error" />
124
+ info: <Info fontSize="small" color="info" />,
125
+ warning: <WarningAmber fontSize="small" color="warning" />,
126
+ success: <Done fontSize="small" color="success" />,
127
+ error: <Error fontSize="small" color="error" />
131
128
  }[feedback.color]
132
129
  }
133
130
  </Tooltip>
@@ -50,6 +50,7 @@ function OpenChoiceRadioAnswerOptionFields(props: OpenChoiceRadioAnswerOptionFie
50
50
  onValueChange
51
51
  } = props;
52
52
 
53
+ const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
53
54
  const inputsFlexGrow = useRendererStylingStore.use.inputsFlexGrow();
54
55
 
55
56
  const orientation = getChoiceOrientation(qItem) ?? ChoiceItemOrientation.Vertical;
@@ -58,9 +59,9 @@ function OpenChoiceRadioAnswerOptionFields(props: OpenChoiceRadioAnswerOptionFie
58
59
  <>
59
60
  <StyledRadioGroup
60
61
  id={qItem.type + '-' + qItem.linkId}
61
- aria-labelledby={'label-' + qItem.linkId}
62
62
  row={orientation === ChoiceItemOrientation.Horizontal}
63
63
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
64
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
64
65
  onChange={(e: ChangeEvent<HTMLInputElement>) => {
65
66
  // If item.readOnly=true, do not allow any changes
66
67
  if (readOnly) {
@@ -56,6 +56,7 @@ function OpenChoiceRadioAnswerValueSetFields(props: OpenChoiceRadioAnswerValueSe
56
56
  onValueChange
57
57
  } = props;
58
58
 
59
+ const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
59
60
  const inputsFlexGrow = useRendererStylingStore.use.inputsFlexGrow();
60
61
 
61
62
  const orientation = getChoiceOrientation(qItem) ?? ChoiceItemOrientation.Vertical;
@@ -65,9 +66,9 @@ function OpenChoiceRadioAnswerValueSetFields(props: OpenChoiceRadioAnswerValueSe
65
66
  <>
66
67
  <StyledRadioGroup
67
68
  id={qItem.type + '-' + qItem.linkId}
68
- aria-labelledby={'label-' + qItem.linkId}
69
69
  row={orientation === ChoiceItemOrientation.Horizontal}
70
70
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
71
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
71
72
  onChange={(e: ChangeEvent<HTMLInputElement>) => {
72
73
  // If item.readOnly=true, do not allow any changes
73
74
  if (readOnly) {
@@ -104,7 +104,7 @@ function GroupTableRow(props: GroupTableRowProps) {
104
104
  </Box>
105
105
  </TableCell>
106
106
  <SelectRowButton
107
- isSelected={itemIsSelected}
107
+ isChecked={itemIsSelected}
108
108
  readOnly={readOnly}
109
109
  onSelectItem={() => onSelectRow(rowId)}
110
110
  />
@@ -148,7 +148,7 @@ function GroupTableRow(props: GroupTableRowProps) {
148
148
  </Box>
149
149
  </TableCell>
150
150
  <SelectRowButton
151
- isSelected={itemIsSelected}
151
+ isChecked={itemIsSelected}
152
152
  readOnly={readOnly}
153
153
  onSelectItem={() => onSelectRow(rowId)}
154
154
  />
@@ -91,6 +91,10 @@ function GroupTableView(props: GroupTableViewProps) {
91
91
 
92
92
  const groupCollapsibleValue = getGroupCollapsible(qItem);
93
93
 
94
+ const indeterminateValue = selectedIds.length > 0 && selectedIds.length < tableRows.length;
95
+ const checkedValue = tableRows.length > 0 && selectedIds.length === tableRows.length;
96
+ const ariaCheckedValue = indeterminateValue ? 'mixed' : checkedValue ? 'true' : 'false';
97
+
94
98
  // If the table is collapsible, wrap it in an accordion
95
99
  if (groupCollapsibleValue) {
96
100
  const isDefaultOpen = groupCollapsibleValue === 'default-open';
@@ -178,12 +182,13 @@ function GroupTableView(props: GroupTableViewProps) {
178
182
  <StandardCheckbox
179
183
  color="primary"
180
184
  size="small"
181
- indeterminate={
182
- selectedIds.length > 0 && selectedIds.length < tableRows.length
183
- }
184
- checked={tableRows.length > 0 && selectedIds.length === tableRows.length}
185
+ indeterminate={indeterminateValue}
186
+ checked={checkedValue}
185
187
  disabled={readOnly && readOnlyVisualStyle === 'disabled'}
186
188
  readOnly={readOnly && readOnlyVisualStyle === 'readonly'}
189
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
190
+ role="checkbox"
191
+ aria-checked={ariaCheckedValue}
187
192
  onChange={onSelectAll}
188
193
  />
189
194
  </HeaderTableCell>
@@ -285,10 +290,13 @@ function GroupTableView(props: GroupTableViewProps) {
285
290
  <StandardCheckbox
286
291
  color="primary"
287
292
  size="small"
288
- indeterminate={selectedIds.length > 0 && selectedIds.length < tableRows.length}
289
- checked={tableRows.length > 0 && selectedIds.length === tableRows.length}
293
+ indeterminate={indeterminateValue}
294
+ checked={checkedValue}
290
295
  disabled={readOnly && readOnlyVisualStyle === 'disabled'}
291
296
  readOnly={readOnly && readOnlyVisualStyle === 'readonly'}
297
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
298
+ role="checkbox"
299
+ aria-checked={ariaCheckedValue}
292
300
  onChange={onSelectAll}
293
301
  />
294
302
  </HeaderTableCell>
@@ -21,13 +21,13 @@ import { StandardCheckbox } from '../../Checkbox.styles';
21
21
  import { useRendererStylingStore } from '../../../stores';
22
22
 
23
23
  interface SelectRowButtonProps {
24
- isSelected: boolean;
24
+ isChecked: boolean;
25
25
  readOnly: boolean;
26
26
  onSelectItem: () => void;
27
27
  }
28
28
 
29
29
  function SelectRowButton(props: SelectRowButtonProps) {
30
- const { isSelected, readOnly, onSelectItem } = props;
30
+ const { isChecked, readOnly, onSelectItem } = props;
31
31
 
32
32
  const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
33
33
 
@@ -36,9 +36,12 @@ function SelectRowButton(props: SelectRowButtonProps) {
36
36
  <StandardCheckbox
37
37
  color="primary"
38
38
  size="small"
39
- checked={isSelected}
39
+ checked={isChecked}
40
40
  disabled={readOnly && readOnlyVisualStyle === 'disabled'}
41
41
  readOnly={readOnly && readOnlyVisualStyle === 'readonly'}
42
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
43
+ role="checkbox"
44
+ aria-checked={isChecked}
42
45
  onChange={onSelectItem}
43
46
  />
44
47
  </TableCell>
@@ -5,6 +5,19 @@ export const StandardRadio = styled(Radio, {
5
5
  shouldForwardProp: (prop) => prop !== 'readOnly'
6
6
  })<{ readOnly: boolean }>(({ theme, readOnly }) => ({
7
7
  ...(readOnly && {
8
+ // Remove 'pointer' cursor when readOnly
9
+ cursor: 'default',
10
+
11
+ // Hide the ripple effect when readOnly, show a grey background when its focused
12
+ '.MuiTouchRipple-root': {
13
+ display: 'none'
14
+ },
15
+ // Your grey border wrapper effect
16
+ '&.Mui-focusVisible': {
17
+ backgroundColor: theme.palette.action.hover
18
+ },
19
+
20
+ // Use grey stylings when it's readOnly
8
21
  '&.MuiButtonBase-root': {
9
22
  '&.MuiRadio-root': {
10
23
  // Use text.disabled colour (same as disabled field) here because text.secondary is too dark, and 'rgb(220, 223, 228)' is too light
@@ -0,0 +1,7 @@
1
+ export type AriaCheckedAttributes = 'true' | 'false' | 'mixed';
2
+
3
+ export const ariaCheckedMap: Map<string, AriaCheckedAttributes> = new Map([
4
+ ['true', 'true'],
5
+ ['false', 'false'],
6
+ ['intermediate', 'mixed']
7
+ ]);