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

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 (108) 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/BooleanItem/BooleanField.js +4 -2
  4. package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -1
  5. package/lib/components/FormComponents/ChoiceItems/CheckboxFormGroup.d.ts +16 -0
  6. package/lib/components/FormComponents/ChoiceItems/CheckboxFormGroup.js +24 -0
  7. package/lib/components/FormComponents/ChoiceItems/CheckboxFormGroup.js.map +1 -0
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +6 -10
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxFormGroup.d.ts +16 -0
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxFormGroup.js +24 -0
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxFormGroup.js.map +1 -0
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.d.ts +0 -0
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.js +2 -0
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.js.map +1 -0
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.d.ts +0 -0
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.js +2 -0
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.js.map +1 -0
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +2 -1
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -1
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +2 -1
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -1
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.d.ts +16 -0
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.js +29 -0
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.js.map +1 -0
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js +2 -1
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js.map +1 -1
  28. package/lib/components/FormComponents/ChoiceItems/RadioFormGroup.d.ts +16 -0
  29. package/lib/components/FormComponents/ChoiceItems/RadioFormGroup.js +29 -0
  30. package/lib/components/FormComponents/ChoiceItems/RadioFormGroup.js.map +1 -0
  31. package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.d.ts +16 -0
  32. package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.js +24 -0
  33. package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.js.map +1 -0
  34. package/lib/components/FormComponents/ItemParts/CheckboxSingle.js +1 -1
  35. package/lib/components/FormComponents/ItemParts/CheckboxSingle.js.map +1 -1
  36. package/lib/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.js +1 -1
  37. package/lib/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.js.map +1 -1
  38. package/lib/components/FormComponents/ItemParts/RadioFormGroup.d.ts +16 -0
  39. package/lib/components/FormComponents/ItemParts/RadioFormGroup.js +29 -0
  40. package/lib/components/FormComponents/ItemParts/RadioFormGroup.js.map +1 -0
  41. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +5 -8
  42. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
  43. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js +2 -1
  44. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -1
  45. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.js +2 -1
  46. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.js.map +1 -1
  47. package/lib/components/FormComponents/Tables/GroupTableRow.js +2 -2
  48. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
  49. package/lib/components/FormComponents/Tables/GroupTableView.js +5 -2
  50. package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
  51. package/lib/components/FormComponents/Tables/SelectRowButton.d.ts +1 -1
  52. package/lib/components/FormComponents/Tables/SelectRowButton.js +2 -2
  53. package/lib/components/FormComponents/Tables/SelectRowButton.js.map +1 -1
  54. package/lib/components/Radio.styles.js +11 -0
  55. package/lib/components/Radio.styles.js.map +1 -1
  56. package/lib/hooks/useAnswerOptionsToggleExpressions.d.ts +7 -0
  57. package/lib/hooks/useAnswerOptionsToggleExpressions.js +67 -0
  58. package/lib/hooks/useAnswerOptionsToggleExpressions.js.map +1 -0
  59. package/lib/interfaces/answerOptionsToggleExpression.interface.d.ts +9 -0
  60. package/lib/interfaces/answerOptionsToggleExpression.interface.js +2 -0
  61. package/lib/interfaces/answerOptionsToggleExpression.interface.js.map +1 -0
  62. package/lib/stores/extractOperationStore.d.ts +26 -0
  63. package/lib/stores/extractOperationStore.js +20 -0
  64. package/lib/stores/extractOperationStore.js.map +1 -0
  65. package/lib/templates/bloodPressureTemplate.d.ts +23 -0
  66. package/lib/templates/bloodPressureTemplate.js +80 -0
  67. package/lib/templates/bloodPressureTemplate.js.map +1 -0
  68. package/lib/tests/test-data/bloodPressureSample.d.ts +3 -0
  69. package/lib/tests/test-data/bloodPressureSample.js +250 -0
  70. package/lib/tests/test-data/bloodPressureSample.js.map +1 -0
  71. package/lib/tests/test-data/complexTemplateSample.d.ts +3 -0
  72. package/lib/tests/test-data/complexTemplateSample.js +578 -0
  73. package/lib/tests/test-data/complexTemplateSample.js.map +1 -0
  74. package/lib/utils/answerOptionsToggleExpressions.d.ts +24 -0
  75. package/lib/utils/answerOptionsToggleExpressions.js +144 -0
  76. package/lib/utils/answerOptionsToggleExpressions.js.map +1 -0
  77. package/lib/utils/calculatedExpression.js +8 -5
  78. package/lib/utils/calculatedExpression.js.map +1 -1
  79. package/lib/utils/checkbox.d.ts +2 -0
  80. package/lib/utils/checkbox.js +6 -0
  81. package/lib/utils/checkbox.js.map +1 -0
  82. package/lib/utils/extractTemplate.d.ts +44 -0
  83. package/lib/utils/extractTemplate.js +809 -0
  84. package/lib/utils/extractTemplate.js.map +1 -0
  85. package/lib/utils/questionnaireStoreUtils/extractAnswerOptionsToggleExpressions.d.ts +3 -0
  86. package/lib/utils/questionnaireStoreUtils/extractAnswerOptionsToggleExpressions.js +6 -0
  87. package/lib/utils/questionnaireStoreUtils/extractAnswerOptionsToggleExpressions.js.map +1 -0
  88. package/lib/utils/templateMatching.d.ts +15 -0
  89. package/lib/utils/templateMatching.js +62 -0
  90. package/lib/utils/templateMatching.js.map +1 -0
  91. package/package.json +2 -2
  92. package/src/components/Checkbox.styles.ts +14 -0
  93. package/src/components/FormComponents/BooleanItem/BooleanField.tsx +7 -0
  94. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +6 -10
  95. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +2 -0
  96. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +2 -0
  97. package/src/components/FormComponents/ChoiceItems/ChoiceRadioSingle.tsx +2 -1
  98. package/src/components/FormComponents/ItemParts/CheckboxSingle.tsx +3 -0
  99. package/src/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.tsx +3 -0
  100. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +5 -8
  101. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +2 -0
  102. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.tsx +2 -0
  103. package/src/components/FormComponents/Tables/GroupTableRow.tsx +2 -2
  104. package/src/components/FormComponents/Tables/GroupTableView.tsx +14 -6
  105. package/src/components/FormComponents/Tables/SelectRowButton.tsx +6 -3
  106. package/src/components/Radio.styles.tsx +13 -0
  107. package/src/utils/calculatedExpression.ts +13 -5
  108. 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.49",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -96,6 +96,6 @@
96
96
  "ts-jest": "^29.2.6",
97
97
  "tslib": "^2.8.1",
98
98
  "tsup": "^8.4.0",
99
- "typescript": "^5.8.2"
99
+ "typescript": "^5.8.3"
100
100
  }
101
101
  }
@@ -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
@@ -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) {
@@ -102,6 +108,7 @@ const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
102
108
  aria-labelledby={'label-' + qItem.linkId}
103
109
  row={orientation === ChoiceItemOrientation.Horizontal}
104
110
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
111
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
105
112
  onChange={(e) => {
106
113
  // If item.readOnly=true, do not allow any changes
107
114
  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>
@@ -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
 
@@ -72,6 +73,7 @@ function ChoiceRadioAnswerOptionFields(props: ChoiceRadioAnswerOptionFieldsProps
72
73
  aria-labelledby={'label-' + qItem.linkId}
73
74
  row={orientation === ChoiceItemOrientation.Horizontal}
74
75
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
76
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
75
77
  onChange={(e) => {
76
78
  // If item.readOnly=true, do not allow any changes
77
79
  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
 
@@ -79,6 +80,7 @@ function ChoiceRadioAnswerValueSetFields(props: ChoiceRadioAnswerValueSetFieldsP
79
80
  aria-labelledby={'label-' + qItem.linkId}
80
81
  row={orientation === ChoiceItemOrientation.Horizontal}
81
82
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
83
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
82
84
  onChange={(e) => {
83
85
  // If item.readOnly=true, do not allow any changes
84
86
  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
  }
@@ -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;
@@ -61,6 +62,7 @@ function OpenChoiceRadioAnswerOptionFields(props: OpenChoiceRadioAnswerOptionFie
61
62
  aria-labelledby={'label-' + qItem.linkId}
62
63
  row={orientation === ChoiceItemOrientation.Horizontal}
63
64
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
65
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
64
66
  onChange={(e: ChangeEvent<HTMLInputElement>) => {
65
67
  // If item.readOnly=true, do not allow any changes
66
68
  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;
@@ -68,6 +69,7 @@ function OpenChoiceRadioAnswerValueSetFields(props: OpenChoiceRadioAnswerValueSe
68
69
  aria-labelledby={'label-' + qItem.linkId}
69
70
  row={orientation === ChoiceItemOrientation.Horizontal}
70
71
  sx={inputsFlexGrow ? { width: '100%', flexWrap: 'nowrap' } : {}}
72
+ aria-readonly={readOnly && readOnlyVisualStyle === 'readonly'}
71
73
  onChange={(e: ChangeEvent<HTMLInputElement>) => {
72
74
  // If item.readOnly=true, do not allow any changes
73
75
  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
@@ -242,7 +242,7 @@ function initialiseItemCalculatedExpressionValueRecursive(
242
242
  );
243
243
  return constructGroupItem(
244
244
  qItem,
245
- updatedQrItems
245
+ updatedQrItems && updatedQrItems.length > 0
246
246
  ? {
247
247
  linkId: qItem.linkId,
248
248
  text: qItem.text,
@@ -256,8 +256,11 @@ function initialiseItemCalculatedExpressionValueRecursive(
256
256
  let qrItem = qrItemOrItems;
257
257
  const childQItems = qItem.item;
258
258
  if (childQItems && childQItems.length > 0) {
259
- qrItem = qrItemOrItems ?? structuredClone(createEmptyQrGroup(qItem));
260
- const childQrItems = qrItem.item ?? [];
259
+ // If item.type is 'group', create empty group qrItem
260
+ if (qItem.type === 'group') {
261
+ qrItem = qrItemOrItems ?? structuredClone(createEmptyQrGroup(qItem));
262
+ }
263
+ const childQrItems = qrItem?.item ?? [];
261
264
 
262
265
  const indexMap = mapQItemsIndex(qItem);
263
266
  const qrItemsByIndex = getQrItemsIndex(childQItems, childQrItems, indexMap);
@@ -281,7 +284,7 @@ function initialiseItemCalculatedExpressionValueRecursive(
281
284
  linkId: childQItem.linkId,
282
285
  qrItems: updatedChildQRItemOrItems
283
286
  },
284
- qrItem,
287
+ qrItem ?? structuredClone(createEmptyQrGroup(qItem)),
285
288
  indexMap
286
289
  );
287
290
  }
@@ -291,7 +294,12 @@ function initialiseItemCalculatedExpressionValueRecursive(
291
294
  // Update QR items in non-repeating group
292
295
  const updatedChildQRItem = updatedChildQRItemOrItems;
293
296
  if (updatedChildQRItem) {
294
- updateQrItemsInGroup(updatedChildQRItem, null, qrItem, indexMap);
297
+ updateQrItemsInGroup(
298
+ updatedChildQRItem,
299
+ null,
300
+ qrItem ?? structuredClone(createEmptyQrGroup(qItem)),
301
+ indexMap
302
+ );
295
303
  }
296
304
  }
297
305
 
@@ -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
+ ]);