@aehrc/smart-forms-renderer 1.2.2 → 1.2.4

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 (120) hide show
  1. package/lib/components/FormComponents/DecimalItem/DecimalField.js +6 -2
  2. package/lib/components/FormComponents/DecimalItem/DecimalField.js.map +1 -1
  3. package/lib/components/FormComponents/IntegerItem/IntegerField.js +6 -2
  4. package/lib/components/FormComponents/IntegerItem/IntegerField.js.map +1 -1
  5. package/lib/components/FormComponents/QuantityItem/QuantityField.d.ts +1 -0
  6. package/lib/components/FormComponents/QuantityItem/QuantityField.js +10 -3
  7. package/lib/components/FormComponents/QuantityItem/QuantityField.js.map +1 -1
  8. package/lib/components/FormComponents/QuantityItem/QuantityItem.js +2 -2
  9. package/lib/components/FormComponents/QuantityItem/QuantityItem.js.map +1 -1
  10. package/lib/hooks/useCalculatedExpressionUpdated.js +3 -1
  11. package/lib/hooks/useCalculatedExpressionUpdated.js.map +1 -1
  12. package/lib/interfaces/itemPath.interface.d.ts +31 -0
  13. package/lib/interfaces/itemPath.interface.js +2 -0
  14. package/lib/interfaces/itemPath.interface.js.map +1 -0
  15. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.d.ts +2 -3
  16. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js +6 -27
  17. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js.map +1 -1
  18. package/lib/stories/storybookWrappers/index.js +1 -1
  19. package/lib/utils/itemPath.d.ts +57 -0
  20. package/lib/utils/itemPath.js +75 -0
  21. package/lib/utils/itemPath.js.map +1 -0
  22. package/package.json +1 -1
  23. package/src/components/FormComponents/DecimalItem/DecimalField.tsx +8 -2
  24. package/src/components/FormComponents/IntegerItem/IntegerField.tsx +8 -2
  25. package/src/components/FormComponents/QuantityItem/QuantityField.tsx +13 -2
  26. package/src/components/FormComponents/QuantityItem/QuantityItem.tsx +2 -0
  27. package/src/hooks/useCalculatedExpressionUpdated.ts +3 -1
  28. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -7
  29. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +0 -26
  30. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +0 -1
  31. package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -8
  32. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +0 -63
  33. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +0 -1
  34. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -8
  35. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +0 -53
  36. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +0 -1
  37. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -10
  38. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +0 -30
  39. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +0 -1
  40. package/lib/components/Iconify/Iconify.d.ts +0 -10
  41. package/lib/components/Iconify/Iconify.js +0 -26
  42. package/lib/components/Iconify/Iconify.js.map +0 -1
  43. package/lib/components/Renderer/FormBodyPage.d.ts +0 -9
  44. package/lib/components/Renderer/FormBodyPage.js +0 -43
  45. package/lib/components/Renderer/FormBodyPage.js.map +0 -1
  46. package/lib/components/Renderer/FormTitle.d.ts +0 -7
  47. package/lib/components/Renderer/FormTitle.js +0 -30
  48. package/lib/components/Renderer/FormTitle.js.map +0 -1
  49. package/lib/components/Renderer/FormTopLevelPage.d.ts +0 -9
  50. package/lib/components/Renderer/FormTopLevelPage.js +0 -29
  51. package/lib/components/Renderer/FormTopLevelPage.js.map +0 -1
  52. package/lib/hooks/useBooleanCalculatedExpression.d.ts +0 -12
  53. package/lib/hooks/useBooleanCalculatedExpression.js +0 -53
  54. package/lib/hooks/useBooleanCalculatedExpression.js.map +0 -1
  55. package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -13
  56. package/lib/hooks/useDecimalCalculatedExpression.js +0 -59
  57. package/lib/hooks/useDecimalCalculatedExpression.js.map +0 -1
  58. package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -12
  59. package/lib/hooks/useIntegerCalculatedExpression.js +0 -56
  60. package/lib/hooks/useIntegerCalculatedExpression.js.map +0 -1
  61. package/lib/hooks/useQuantityCalculatedExpression.d.ts +0 -14
  62. package/lib/hooks/useQuantityCalculatedExpression.js +0 -107
  63. package/lib/hooks/useQuantityCalculatedExpression.js.map +0 -1
  64. package/lib/hooks/useStringCalculatedExpression.d.ts +0 -12
  65. package/lib/hooks/useStringCalculatedExpression.js +0 -58
  66. package/lib/hooks/useStringCalculatedExpression.js.map +0 -1
  67. package/lib/theme/Theme.d.ts +0 -44
  68. package/lib/theme/Theme.js +0 -43
  69. package/lib/theme/Theme.js.map +0 -1
  70. package/lib/theme/customGlobalStyles.d.ts +0 -2
  71. package/lib/theme/customGlobalStyles.js +0 -61
  72. package/lib/theme/customGlobalStyles.js.map +0 -1
  73. package/lib/theme/overrides/Accordion.d.ts +0 -14
  74. package/lib/theme/overrides/Accordion.js +0 -32
  75. package/lib/theme/overrides/Accordion.js.map +0 -1
  76. package/lib/theme/overrides/Autocomplete.d.ts +0 -10
  77. package/lib/theme/overrides/Autocomplete.js +0 -28
  78. package/lib/theme/overrides/Autocomplete.js.map +0 -1
  79. package/lib/theme/overrides/Button.d.ts +0 -33
  80. package/lib/theme/overrides/Button.js +0 -52
  81. package/lib/theme/overrides/Button.js.map +0 -1
  82. package/lib/theme/overrides/Card.d.ts +0 -35
  83. package/lib/theme/overrides/Card.js +0 -49
  84. package/lib/theme/overrides/Card.js.map +0 -1
  85. package/lib/theme/overrides/Input.d.ts +0 -64
  86. package/lib/theme/overrides/Input.js +0 -81
  87. package/lib/theme/overrides/Input.js.map +0 -1
  88. package/lib/theme/overrides/Overrides.d.ts +0 -3
  89. package/lib/theme/overrides/Overrides.js +0 -29
  90. package/lib/theme/overrides/Overrides.js.map +0 -1
  91. package/lib/theme/overrides/Paper.d.ts +0 -12
  92. package/lib/theme/overrides/Paper.js +0 -31
  93. package/lib/theme/overrides/Paper.js.map +0 -1
  94. package/lib/theme/overrides/SpeedDial.d.ts +0 -16
  95. package/lib/theme/overrides/SpeedDial.js +0 -34
  96. package/lib/theme/overrides/SpeedDial.js.map +0 -1
  97. package/lib/theme/overrides/Table.d.ts +0 -12
  98. package/lib/theme/overrides/Table.js +0 -30
  99. package/lib/theme/overrides/Table.js.map +0 -1
  100. package/lib/theme/palette.d.ts +0 -27
  101. package/lib/theme/palette.js +0 -63
  102. package/lib/theme/palette.js.map +0 -1
  103. package/lib/theme/shadows.d.ts +0 -2
  104. package/lib/theme/shadows.js +0 -52
  105. package/lib/theme/shadows.js.map +0 -1
  106. package/lib/utils/dayjsExtend.d.ts +0 -1
  107. package/lib/utils/dayjsExtend.js +0 -22
  108. package/lib/utils/dayjsExtend.js.map +0 -1
  109. package/lib/utils/itemControl.d.ts +0 -103
  110. package/lib/utils/itemControl.js +0 -350
  111. package/lib/utils/itemControl.js.map +0 -1
  112. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -2
  113. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +0 -43
  114. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +0 -1
  115. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -3
  116. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +0 -101
  117. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +0 -1
  118. package/lib/utils/validateQuestionnaire.d.ts +0 -66
  119. package/lib/utils/validateQuestionnaire.js +0 -559
  120. package/lib/utils/validateQuestionnaire.js.map +0 -1
@@ -34,10 +34,14 @@ function DecimalField(props) {
34
34
  if (entryFormat) {
35
35
  placeholderText = entryFormat;
36
36
  }
37
- return (_jsx(StandardTextField, { id: qItem.type + '-' + qItem.linkId, value: input, error: !!feedback, helperText: feedback, onChange: (event) => onInputChange(event.target.value), disabled: readOnly && readOnlyVisualStyle === 'disabled', placeholder: placeholderText, fullWidth: true, textFieldWidth: textFieldWidth, isTabled: isTabled, size: "small", slotProps: {
37
+ const inputId = qItem.type + '-' + qItem.linkId;
38
+ // Construct aria-label with unit for better accessibility
39
+ const ariaLabel = displayUnit ? `${qItem.text || ''} (${displayUnit})`.trim() : undefined;
40
+ return (_jsx(StandardTextField, { id: inputId, value: input, error: !!feedback, helperText: feedback, onChange: (event) => onInputChange(event.target.value), disabled: readOnly && readOnlyVisualStyle === 'disabled', placeholder: placeholderText, fullWidth: true, textFieldWidth: textFieldWidth, isTabled: isTabled, size: "small", slotProps: {
38
41
  htmlInput: {
39
42
  inputMode: 'numeric',
40
- pattern: '[0-9]*'
43
+ pattern: '[0-9]*',
44
+ ...(ariaLabel && { 'aria-label': ariaLabel })
41
45
  },
42
46
  input: {
43
47
  readOnly: readOnly && readOnlyVisualStyle === 'readonly',
@@ -1 +1 @@
1
- {"version":3,"file":"DecimalField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/DecimalItem/DecimalField.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;AAaxD,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,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,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,OAAO,CACL,KAAC,iBAAiB,IAChB,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EACjB,UAAU,EAAE,QAAQ,EACpB,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;aAClB;YACD,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,eACS,sBAAsB,GAChC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"DecimalField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/DecimalItem/DecimalField.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;AAaxD,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,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,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,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IAEhD,0DAA0D;IAC1D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1F,OAAO,CACL,KAAC,iBAAiB,IAChB,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EACjB,UAAU,EAAE,QAAQ,EACpB,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,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,eACS,sBAAsB,GAChC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
@@ -34,10 +34,14 @@ function IntegerField(props) {
34
34
  if (entryFormat) {
35
35
  placeholderText = entryFormat;
36
36
  }
37
- return (_jsx(StandardTextField, { id: qItem.type + '-' + qItem.linkId, value: input, error: !!feedback, helperText: feedback, onChange: (event) => onInputChange(event.target.value), disabled: readOnly && readOnlyVisualStyle === 'disabled', label: displayPrompt, placeholder: placeholderText, fullWidth: true, textFieldWidth: textFieldWidth, isTabled: isTabled, size: "small", slotProps: {
37
+ const inputId = qItem.type + '-' + qItem.linkId;
38
+ // Construct aria-label with unit for better accessibility
39
+ const ariaLabel = displayUnit ? `${qItem.text || ''} (${displayUnit})`.trim() : undefined;
40
+ return (_jsx(StandardTextField, { id: inputId, value: input, error: !!feedback, helperText: feedback, onChange: (event) => onInputChange(event.target.value), disabled: readOnly && readOnlyVisualStyle === 'disabled', label: displayPrompt, placeholder: placeholderText, fullWidth: true, textFieldWidth: textFieldWidth, isTabled: isTabled, size: "small", slotProps: {
38
41
  htmlInput: {
39
42
  inputMode: 'numeric',
40
- pattern: '[0-9]*'
43
+ pattern: '[0-9]*',
44
+ ...(ariaLabel && { 'aria-label': ariaLabel })
41
45
  },
42
46
  input: {
43
47
  readOnly: readOnly && readOnlyVisualStyle === 'readonly',
@@ -1 +1 @@
1
- {"version":3,"file":"IntegerField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/IntegerItem/IntegerField.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;AAEjF,OAAO,oBAAoB,MAAM,mCAAmC,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAaxD,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,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,IAAI,eAAe,GAAG,GAAG,CAAC;IAC1B,IAAI,aAAa,EAAE,CAAC;QAClB,eAAe,GAAG,aAAa,CAAC;IAClC,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,OAAO,CACL,KAAC,iBAAiB,IAChB,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EACjB,UAAU,EAAE,QAAQ,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,KAAK,EAAE,aAAa,EACpB,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;aAClB;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,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,eACS,sBAAsB,GAChC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"IntegerField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/IntegerItem/IntegerField.tsx"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps
2
2
  interface QuantityFieldProps extends PropsWithIsTabledAttribute {
3
3
  linkId: string;
4
4
  itemType: string;
5
+ itemText: string | undefined;
5
6
  input: string;
6
7
  feedback: string;
7
8
  displayPrompt: string;
@@ -22,7 +22,7 @@ import { ClearButtonAdornment } from '../ItemParts/ClearButtonAdornment';
22
22
  import ExpressionUpdateFadingIcon from '../ItemParts/ExpressionUpdateFadingIcon';
23
23
  import { StandardTextField } from '../Textfield.styles';
24
24
  function QuantityField(props) {
25
- const { linkId, itemType, input, feedback, displayPrompt, displayUnit, entryFormat, readOnly, calcExpUpdated, isTabled, onInputChange } = props;
25
+ const { linkId, itemType, itemText, input, feedback, displayPrompt, displayUnit, entryFormat, readOnly, calcExpUpdated, isTabled, onInputChange } = props;
26
26
  const readOnlyVisualStyle = useRendererConfigStore.use.readOnlyVisualStyle();
27
27
  const textFieldWidth = useRendererConfigStore.use.textFieldWidth();
28
28
  let placeholderText = '0.0';
@@ -32,8 +32,15 @@ function QuantityField(props) {
32
32
  if (entryFormat) {
33
33
  placeholderText = entryFormat;
34
34
  }
35
- return (_jsx(StandardTextField, { id: itemType + '-' + linkId + '-input', value: input, error: !!feedback, onChange: (event) => onInputChange(event.target.value), disabled: readOnly && readOnlyVisualStyle === 'disabled', placeholder: placeholderText, fullWidth: true, textFieldWidth: textFieldWidth, isTabled: isTabled, size: "small", slotProps: {
36
- htmlInput: { inputMode: 'numeric', pattern: '[0-9]*' },
35
+ const inputId = itemType + '-' + linkId + '-input';
36
+ // Construct aria-label with unit for better accessibility
37
+ const ariaLabel = displayUnit ? `${itemText || ''} (${displayUnit})`.trim() : undefined;
38
+ return (_jsx(StandardTextField, { id: inputId, value: input, error: !!feedback, onChange: (event) => onInputChange(event.target.value), disabled: readOnly && readOnlyVisualStyle === 'disabled', placeholder: placeholderText, fullWidth: true, textFieldWidth: textFieldWidth, isTabled: isTabled, size: "small", slotProps: {
39
+ htmlInput: {
40
+ inputMode: 'numeric',
41
+ pattern: '[0-9]*',
42
+ ...(ariaLabel && { 'aria-label': ariaLabel })
43
+ },
37
44
  input: {
38
45
  readOnly: readOnly && readOnlyVisualStyle === 'readonly',
39
46
  endAdornment: (_jsxs(InputAdornment, { position: 'end', children: [_jsx(ExpressionUpdateFadingIcon, { fadeIn: calcExpUpdated, disabled: readOnly }), _jsx(ClearButtonAdornment, { readOnly: readOnly, onClear: () => {
@@ -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;AAexD,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,EACJ,MAAM,EACN,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,OAAO,CACL,KAAC,iBAAiB,IAChB,EAAE,EAAE,QAAQ,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,EACtC,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,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE;YACtD,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,QAAQ,eACV,uBAAuB,GACjC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,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;AAgBxD,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,QAAQ,eACV,uBAAuB,GACjC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
@@ -113,9 +113,9 @@ function QuantityItem(props) {
113
113
  }, DEBOUNCE_DURATION), [onQrItemChange, qItem, displayUnit, precision, comparatorInput, unitInput]); // Dependencies are tested, debounce is causing eslint to not recognise dependencies
114
114
  const showUnitOptions = unitOptions.length > 0 && displayUnit === '';
115
115
  if (isRepeated) {
116
- return (_jsxs(Box, { id: qItem.type + '-' + qItem.linkId, "data-test": "q-item-quantity-box", display: "flex", width: "100%", gap: 1, children: [_jsx(QuantityComparatorField, { linkId: qItem.linkId, itemType: qItem.type, options: quantityComparators, valueSelect: comparatorInput, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onChange: handleComparatorInputChange }), _jsx(QuantityField, { linkId: qItem.linkId, itemType: qItem.type, input: valueInput, feedback: feedback ?? '', displayPrompt: displayPrompt, displayUnit: displayUnit, entryFormat: entryFormat, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onInputChange: handleValueInputChange }), showUnitOptions ? (_jsx(QuantityUnitField, { linkId: qItem.linkId, itemType: qItem.type, options: unitOptions, valueSelect: unitInput, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onChange: handleUnitInputChange })) : null] }));
116
+ return (_jsxs(Box, { id: qItem.type + '-' + qItem.linkId, "data-test": "q-item-quantity-box", display: "flex", width: "100%", gap: 1, children: [_jsx(QuantityComparatorField, { linkId: qItem.linkId, itemType: qItem.type, options: quantityComparators, valueSelect: comparatorInput, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onChange: handleComparatorInputChange }), _jsx(QuantityField, { linkId: qItem.linkId, itemType: qItem.type, itemText: qItem.text, input: valueInput, feedback: feedback ?? '', displayPrompt: displayPrompt, displayUnit: displayUnit, entryFormat: entryFormat, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onInputChange: handleValueInputChange }), showUnitOptions ? (_jsx(QuantityUnitField, { linkId: qItem.linkId, itemType: qItem.type, options: unitOptions, valueSelect: unitInput, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onChange: handleUnitInputChange })) : null] }));
117
117
  }
118
- return (_jsx(FullWidthFormComponentBox, { "data-test": "q-item-quantity-box", "data-linkid": qItem.linkId, "data-label": qItem.text, onClick: () => onFocusLinkId(qItem.linkId), children: _jsx(ItemFieldGrid, { qItem: qItem, readOnly: readOnly, labelChildren: _jsx(ItemLabel, { qItem: qItem, readOnly: readOnly }), fieldChildren: _jsxs(Box, { display: "flex", gap: 1, children: [_jsx(QuantityComparatorField, { linkId: qItem.linkId, itemType: qItem.type, options: quantityComparators, valueSelect: comparatorInput, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onChange: handleComparatorInputChange }), _jsx(QuantityField, { linkId: qItem.linkId, itemType: qItem.type, input: valueInput, feedback: feedback ?? '', displayPrompt: displayPrompt, displayUnit: displayUnit, entryFormat: entryFormat, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onInputChange: handleValueInputChange }), showUnitOptions ? (_jsx(QuantityUnitField, { linkId: qItem.linkId, itemType: qItem.type, options: unitOptions, valueSelect: unitInput, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onChange: handleUnitInputChange })) : null] }), feedback: feedback ?? undefined }) }));
118
+ return (_jsx(FullWidthFormComponentBox, { "data-test": "q-item-quantity-box", "data-linkid": qItem.linkId, "data-label": qItem.text, onClick: () => onFocusLinkId(qItem.linkId), children: _jsx(ItemFieldGrid, { qItem: qItem, readOnly: readOnly, labelChildren: _jsx(ItemLabel, { qItem: qItem, readOnly: readOnly }), fieldChildren: _jsxs(Box, { display: "flex", gap: 1, children: [_jsx(QuantityComparatorField, { linkId: qItem.linkId, itemType: qItem.type, options: quantityComparators, valueSelect: comparatorInput, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onChange: handleComparatorInputChange }), _jsx(QuantityField, { linkId: qItem.linkId, itemType: qItem.type, itemText: qItem.text, input: valueInput, feedback: feedback ?? '', displayPrompt: displayPrompt, displayUnit: displayUnit, entryFormat: entryFormat, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onInputChange: handleValueInputChange }), showUnitOptions ? (_jsx(QuantityUnitField, { linkId: qItem.linkId, itemType: qItem.type, options: unitOptions, valueSelect: unitInput, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onChange: handleUnitInputChange })) : null] }), feedback: feedback ?? undefined }) }));
119
119
  }
120
120
  export default QuantityItem;
121
121
  //# sourceMappingURL=QuantityItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuantityItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/QuantityItem/QuantityItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QuantityItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/QuantityItem/QuantityItem.tsx"],"names":[],"mappings":"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"}
@@ -8,9 +8,11 @@ import { useEffect, useRef, useState } from 'react';
8
8
  export function useCalculatedExpressionUpdated(answerKey) {
9
9
  const [animating, setAnimating] = useState(false);
10
10
  const previousAnswerKey = useRef(null);
11
+ const mounted = useRef(false);
11
12
  useEffect(() => {
12
13
  // Skip the first render — just store the current key
13
- if (previousAnswerKey.current === null) {
14
+ if (!mounted.current) {
15
+ mounted.current = true;
14
16
  previousAnswerKey.current = answerKey ?? null;
15
17
  return;
16
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useCalculatedExpressionUpdated.js","sourceRoot":"","sources":["../../src/hooks/useCalculatedExpressionUpdated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,SAA6B;IAC1E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,qDAAqD;QACrD,IAAI,iBAAiB,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACvC,iBAAiB,CAAC,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,2DAA2D;QAC3D,IACE,SAAS;YACT,SAAS,KAAK,iBAAiB,CAAC,OAAO;YACvC,kJAAkJ;YAClJ,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAC1C,CAAC;YACD,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEnB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YAEzD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"useCalculatedExpressionUpdated.js","sourceRoot":"","sources":["../../src/hooks/useCalculatedExpressionUpdated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,SAA6B;IAC1E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,qDAAqD;QACrD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,iBAAiB,CAAC,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,2DAA2D;QAC3D,IACE,SAAS;YACT,SAAS,KAAK,iBAAiB,CAAC,OAAO;YACvC,kJAAkJ;YAClJ,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAC1C,CAAC;YACD,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEnB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YAEzD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Represents a single step in the path to an item within a nested QuestionnaireResponse.
3
+ * Each step is identified by its `linkId`, and optionally a `repeatIndex` if the item
4
+ * occurs within a repeating group.
5
+ */
6
+ export interface ItemPathSegment {
7
+ /** The `linkId` of the QuestionnaireResponseItem at this path segment. */
8
+ linkId: string;
9
+ /**
10
+ * The index of the repeated item if this segment occurs within a repeating group.
11
+ * Omitted if the item is not part of a repeating group.
12
+ */
13
+ repeatIndex?: number;
14
+ }
15
+ /**
16
+ * Represents a full path from the root of a QuestionnaireResponse to a deeply nested item.
17
+ * Each segment corresponds to one level of the item hierarchy.
18
+ *
19
+ * Example:
20
+ * [
21
+ * { linkId: 'sectionA' },
22
+ * { linkId: 'groupB', repeatIndex: 1 },
23
+ * { linkId: 'questionC' }
24
+ * ]
25
+ *
26
+ * This path navigates through `sectionA`, into the second instance of `groupB`,
27
+ * and finally to `questionC`.
28
+ *
29
+ * @author Sean Fong
30
+ */
31
+ export type ItemPath = ItemPathSegment[];
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=itemPath.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemPath.interface.js","sourceRoot":"","sources":["../../src/interfaces/itemPath.interface.ts"],"names":[],"mappings":""}
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
1
  import type { Questionnaire, QuestionnaireResponse } from 'fhir/r4';
3
2
  import type Client from 'fhirclient/lib/Client';
4
3
  export interface InitialiseFormWrapperProps {
@@ -6,7 +5,7 @@ export interface InitialiseFormWrapperProps {
6
5
  questionnaireResponse?: QuestionnaireResponse;
7
6
  readOnly?: boolean;
8
7
  terminologyServerUrl?: string;
9
- additionalVariables?: Record<string, object>;
8
+ additionalContext?: Record<string, any>;
10
9
  fhirClient?: Client;
11
10
  }
12
11
  /**
@@ -27,5 +26,5 @@ export interface InitialiseFormWrapperProps {
27
26
  *
28
27
  * @author Sean Fong
29
28
  */
30
- declare function InitialiseFormWrapperForStorybook(props: InitialiseFormWrapperProps): React.JSX.Element;
29
+ declare function InitialiseFormWrapperForStorybook(props: InitialiseFormWrapperProps): import("react/jsx-runtime").JSX.Element;
31
30
  export default InitialiseFormWrapperForStorybook;
@@ -1,29 +1,12 @@
1
- /*
2
- * Copyright 2024 Commonwealth Scientific and Industrial Research
3
- * Organisation (CSIRO) ABN 41 687 119 230.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- // @ts-ignore
18
- import React from 'react';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
2
  import { BaseRenderer } from '../../components';
20
3
  import { QueryClientProvider } from '@tanstack/react-query';
21
- import RendererThemeProvider from '../../theme/Theme';
22
4
  import useRendererQueryClient from '../../hooks/useRendererQueryClient';
23
5
  import useInitialiseForm from '../../hooks/useInitialiseForm';
24
6
  import Box from '@mui/material/Box';
25
7
  import CircularProgress from '@mui/material/CircularProgress';
26
8
  import Typography from '@mui/material/Typography';
9
+ import RendererThemeProvider from '../../theme/RendererThemeProvider';
27
10
  /**
28
11
  * This is a one-to-one replacement for the SmartFormsRenderer for demo purposes.
29
12
  * Instead of using this React component, define your own wrapper component that uses the BaseRenderer directly.
@@ -43,7 +26,7 @@ import Typography from '@mui/material/Typography';
43
26
  * @author Sean Fong
44
27
  */
45
28
  function InitialiseFormWrapperForStorybook(props) {
46
- const { questionnaire, questionnaireResponse, readOnly, terminologyServerUrl, additionalVariables, fhirClient } = props;
29
+ const { questionnaire, questionnaireResponse, readOnly, terminologyServerUrl, additionalContext, fhirClient } = props;
47
30
  // The renderer requires a @tanstack/react-query QueryClientProvider to make requests
48
31
  const queryClient = useRendererQueryClient();
49
32
  /**
@@ -52,16 +35,12 @@ function InitialiseFormWrapperForStorybook(props) {
52
35
  *
53
36
  * @see {@link https://github.com/aehrc/smart-forms/blob/main/packages/smart-forms-renderer/src/stories/BuildFormButtonForStorybook.tsx} for button click usage examples.
54
37
  */
55
- const isInitialising = useInitialiseForm(questionnaire, questionnaireResponse, readOnly, terminologyServerUrl, additionalVariables, fhirClient);
38
+ const isInitialising = useInitialiseForm(questionnaire, questionnaireResponse, readOnly, terminologyServerUrl, additionalContext, fhirClient);
56
39
  // Free feel to customise your loading animation here
57
40
  if (isInitialising) {
58
- return (React.createElement(Box, { display: "flex", alignItems: "center", columnGap: 2 },
59
- React.createElement(CircularProgress, null),
60
- React.createElement(Typography, null, "Loading questionnaire...")));
41
+ return (_jsxs(Box, { display: "flex", alignItems: "center", columnGap: 2, children: [_jsx(CircularProgress, {}), _jsx(Typography, { children: "Loading questionnaire..." })] }));
61
42
  }
62
- return (React.createElement(RendererThemeProvider, null,
63
- React.createElement(QueryClientProvider, { client: queryClient },
64
- React.createElement(BaseRenderer, null))));
43
+ return (_jsx(RendererThemeProvider, { children: _jsx(QueryClientProvider, { client: queryClient, children: _jsx(BaseRenderer, {}) }) }));
65
44
  }
66
45
  export default InitialiseFormWrapperForStorybook;
67
46
  //# sourceMappingURL=InitialiseFormWrapperForStorybook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InitialiseFormWrapperForStorybook.js","sourceRoot":"","sources":["../../../src/stories/storybookWrappers/InitialiseFormWrapperForStorybook.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,aAAa;AACb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,qBAAqB,MAAM,mBAAmB,CAAC;AACtD,OAAO,sBAAsB,MAAM,oCAAoC,CAAC;AAExE,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAC9D,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAWlD;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,iCAAiC,CAAC,KAAiC;IAC1E,MAAM,EACJ,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACX,GAAG,KAAK,CAAC;IAEV,qFAAqF;IACrF,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;IAE7C;;;;;OAKG;IACH,MAAM,cAAc,GAAG,iBAAiB,CACtC,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,CACX,CAAC;IAEF,qDAAqD;IACrD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CACL,oBAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC;YAClD,oBAAC,gBAAgB,OAAG;YACpB,oBAAC,UAAU,mCAAsC,CAC7C,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,oBAAC,qBAAqB;QACpB,oBAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW;YACtC,oBAAC,YAAY,OAAG,CACI,CACA,CACzB,CAAC;AACJ,CAAC;AAED,eAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"InitialiseFormWrapperForStorybook.js","sourceRoot":"","sources":["../../../src/stories/storybookWrappers/InitialiseFormWrapperForStorybook.tsx"],"names":[],"mappings":";AAoBA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,sBAAsB,MAAM,oCAAoC,CAAC;AAExE,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAC9D,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AAWtE;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,iCAAiC,CAAC,KAAiC;IAC1E,MAAM,EACJ,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACX,GAAG,KAAK,CAAC;IAEV,qFAAqF;IACrF,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;IAE7C;;;;;OAKG;IACH,MAAM,cAAc,GAAG,iBAAiB,CACtC,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,CACX,CAAC;IAEF,qDAAqD;IACrD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CACL,MAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,UAAU,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aAClD,KAAC,gBAAgB,KAAG,EACpB,KAAC,UAAU,2CAAsC,IAC7C,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,qBAAqB,cACpB,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YACtC,KAAC,YAAY,KAAG,GACI,GACA,CACzB,CAAC;AACJ,CAAC;AAED,eAAe,iCAAiC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2024 Commonwealth Scientific and Industrial Research
2
+ * Copyright 2025 Commonwealth Scientific and Industrial Research
3
3
  * Organisation (CSIRO) ABN 41 687 119 230.
4
4
  *
5
5
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -0,0 +1,57 @@
1
+ import type { ItemPath } from '../interfaces/itemPath.interface';
2
+ /**
3
+ * Creates an `ItemPath` containing a single segment for the given `linkId`.
4
+ * This is useful when you want to construct a path to a specific item without referencing its ancestry,
5
+ * such as when working with top-level items or when only the item's identity is relevant.
6
+ *
7
+ * @param linkId - The `linkId` of the item.
8
+ * @param repeatIndex - (Optional) If the item is part of a repeating group, specify its index.
9
+ * @returns An `ItemPath` containing one segment.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * const path = createSingleItemPath('question-1');
14
+ * // Output: [{ linkId: 'question-1' }]
15
+ *
16
+ * const pathWithRepeat = createSingleItemPath('question-1', 2);
17
+ * // Output: [{ linkId: 'question-1', repeatIndex: 2 }]
18
+ * ```
19
+ */
20
+ export declare function createSingleItemPath(linkId: string, repeatIndex?: number): ItemPath;
21
+ /**
22
+ * Creates a new `ItemPath` by extending the given path with a new segment for the provided `linkId`.
23
+ * This version does NOT include a `repeatIndex`. If repeat handling is needed,
24
+ * use `appendRepeatIndexToLastSegment` after extending.
25
+ *
26
+ * @param currentPath - The existing item path.
27
+ * @param linkId - The `linkId` to use in the new path segment.
28
+ * @returns A new `ItemPath` with the added segment.
29
+ */
30
+ export declare function extendItemPath(currentPath: linkId: string): ItemPath;
31
+ /**
32
+ * Returns a new `ItemPath` with a `repeatIndex` applied to the last segment.
33
+ * Useful for denoting which repetition of a group is being accessed.
34
+ *
35
+ * @param path - The item path to modify.
36
+ * @param repeatIndex - The index to assign to the final segment.
37
+ * @returns A new `ItemPath` with the last segment modified to include `repeatIndex`.
38
+ *
39
+ * @example
40
+ * const basePath = [{ linkId: 'groupA' }, { linkId: 'groupB' }];
41
+ * appendRepeatIndexToLastSegment(basePath, 2);
42
+ * // → [{ linkId: 'groupA' }, { linkId: 'groupB', repeatIndex: 2 }]
43
+ */
44
+ export declare function appendRepeatIndexToLastSegment(path: repeatIndex: number): ItemPath;
45
+ /**
46
+ * Converts an `ItemPath` to a FHIRPath-compatible string.
47
+ *
48
+ * For example, the path:
49
+ * [
50
+ * { linkId: 'groupA' },
51
+ * { linkId: 'repeatingGroup', repeatIndex: 1 },
52
+ * { linkId: 'questionB' }
53
+ * ]
54
+ *
55
+ * Returns: "item.where(linkId='groupA').item.where(linkId='repeatingGroup')[1].item.where(linkId='questionB')"
56
+ */
57
+ export declare function itemPathToFhirPathString(path: ItemPath): string;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Creates an `ItemPath` containing a single segment for the given `linkId`.
3
+ * This is useful when you want to construct a path to a specific item without referencing its ancestry,
4
+ * such as when working with top-level items or when only the item's identity is relevant.
5
+ *
6
+ * @param linkId - The `linkId` of the item.
7
+ * @param repeatIndex - (Optional) If the item is part of a repeating group, specify its index.
8
+ * @returns An `ItemPath` containing one segment.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const path = createSingleItemPath('question-1');
13
+ * // Output: [{ linkId: 'question-1' }]
14
+ *
15
+ * const pathWithRepeat = createSingleItemPath('question-1', 2);
16
+ * // Output: [{ linkId: 'question-1', repeatIndex: 2 }]
17
+ * ```
18
+ */
19
+ export function createSingleItemPath(linkId, repeatIndex) {
20
+ return repeatIndex !== undefined ? [{ linkId, repeatIndex }] : [{ linkId }];
21
+ }
22
+ /**
23
+ * Creates a new `ItemPath` by extending the given path with a new segment for the provided `linkId`.
24
+ * This version does NOT include a `repeatIndex`. If repeat handling is needed,
25
+ * use `appendRepeatIndexToLastSegment` after extending.
26
+ *
27
+ * @param currentPath - The existing item path.
28
+ * @param linkId - The `linkId` to use in the new path segment.
29
+ * @returns A new `ItemPath` with the added segment.
30
+ */
31
+ export function extendItemPath(currentPath, linkId) {
32
+ return [...currentPath, { linkId }];
33
+ }
34
+ /**
35
+ * Returns a new `ItemPath` with a `repeatIndex` applied to the last segment.
36
+ * Useful for denoting which repetition of a group is being accessed.
37
+ *
38
+ * @param path - The item path to modify.
39
+ * @param repeatIndex - The index to assign to the final segment.
40
+ * @returns A new `ItemPath` with the last segment modified to include `repeatIndex`.
41
+ *
42
+ * @example
43
+ * const basePath = [{ linkId: 'groupA' }, { linkId: 'groupB' }];
44
+ * appendRepeatIndexToLastSegment(basePath, 2);
45
+ * // → [{ linkId: 'groupA' }, { linkId: 'groupB', repeatIndex: 2 }]
46
+ */
47
+ export function appendRepeatIndexToLastSegment(path, repeatIndex) {
48
+ if (path.length === 0)
49
+ return [];
50
+ const newPath = [...path];
51
+ newPath[path.length - 1] = Object.assign(Object.assign({}, newPath[path.length - 1]), { repeatIndex });
52
+ return newPath;
53
+ }
54
+ /**
55
+ * Converts an `ItemPath` to a FHIRPath-compatible string.
56
+ *
57
+ * For example, the path:
58
+ * [
59
+ * { linkId: 'groupA' },
60
+ * { linkId: 'repeatingGroup', repeatIndex: 1 },
61
+ * { linkId: 'questionB' }
62
+ * ]
63
+ *
64
+ * Returns: "item.where(linkId='groupA').item.where(linkId='repeatingGroup')[1].item.where(linkId='questionB')"
65
+ */
66
+ export function itemPathToFhirPathString(path) {
67
+ return path
68
+ .map((segment, index) => {
69
+ const base = `where(linkId='${segment.linkId}')`;
70
+ const repeat = segment.repeatIndex !== undefined ? `[${segment.repeatIndex}]` : '';
71
+ return (index === 0 ? 'item.' : '') + base + repeat;
72
+ })
73
+ .join('.item.');
74
+ }
75
+ //# sourceMappingURL=itemPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemPath.js","sourceRoot":"","sources":["../../src/utils/itemPath.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,WAAoB;IACvE,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,WAAqB,EAAE,MAAc;IAClE,OAAO,CAAC,GAAG,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAc,EAAE,WAAmB;IAChF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,mCAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAE,WAAW,GAAE,CAAC;IACxE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAc;IACrD,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,MAAM,IAAI,GAAG,iBAAiB,OAAO,CAAC,MAAM,IAAI,CAAC;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;IACtD,CAAC,CAAC;SACD,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aehrc/smart-forms-renderer",
3
- "version": "1.2.2",
3
+ "version": "1.2.4",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -64,9 +64,14 @@ function DecimalField(props: DecimalFieldProps) {
64
64
  placeholderText = entryFormat;
65
65
  }
66
66
 
67
+ const inputId = qItem.type + '-' + qItem.linkId;
68
+
69
+ // Construct aria-label with unit for better accessibility
70
+ const ariaLabel = displayUnit ? `${qItem.text || ''} (${displayUnit})`.trim() : undefined;
71
+
67
72
  return (
68
73
  <StandardTextField
69
- id={qItem.type + '-' + qItem.linkId}
74
+ id={inputId}
70
75
  value={input}
71
76
  error={!!feedback}
72
77
  helperText={feedback}
@@ -80,7 +85,8 @@ function DecimalField(props: DecimalFieldProps) {
80
85
  slotProps={{
81
86
  htmlInput: {
82
87
  inputMode: 'numeric',
83
- pattern: '[0-9]*'
88
+ pattern: '[0-9]*',
89
+ ...(ariaLabel && { 'aria-label': ariaLabel })
84
90
  },
85
91
  input: {
86
92
  readOnly: readOnly && readOnlyVisualStyle === 'readonly',
@@ -64,9 +64,14 @@ function IntegerField(props: IntegerFieldProps) {
64
64
  placeholderText = entryFormat;
65
65
  }
66
66
 
67
+ const inputId = qItem.type + '-' + qItem.linkId;
68
+
69
+ // Construct aria-label with unit for better accessibility
70
+ const ariaLabel = displayUnit ? `${qItem.text || ''} (${displayUnit})`.trim() : undefined;
71
+
67
72
  return (
68
73
  <StandardTextField
69
- id={qItem.type + '-' + qItem.linkId}
74
+ id={inputId}
70
75
  value={input}
71
76
  error={!!feedback}
72
77
  helperText={feedback}
@@ -81,7 +86,8 @@ function IntegerField(props: IntegerFieldProps) {
81
86
  slotProps={{
82
87
  htmlInput: {
83
88
  inputMode: 'numeric',
84
- pattern: '[0-9]*'
89
+ pattern: '[0-9]*',
90
+ ...(ariaLabel && { 'aria-label': ariaLabel })
85
91
  },
86
92
  input: {
87
93
  readOnly: readOnly && readOnlyVisualStyle === 'readonly',
@@ -26,6 +26,7 @@ import { StandardTextField } from '../Textfield.styles';
26
26
  interface QuantityFieldProps extends PropsWithIsTabledAttribute {
27
27
  linkId: string;
28
28
  itemType: string;
29
+ itemText: string | undefined;
29
30
  input: string;
30
31
  feedback: string;
31
32
  displayPrompt: string;
@@ -40,6 +41,7 @@ function QuantityField(props: QuantityFieldProps) {
40
41
  const {
41
42
  linkId,
42
43
  itemType,
44
+ itemText,
43
45
  input,
44
46
  feedback,
45
47
  displayPrompt,
@@ -63,9 +65,14 @@ function QuantityField(props: QuantityFieldProps) {
63
65
  placeholderText = entryFormat;
64
66
  }
65
67
 
68
+ const inputId = itemType + '-' + linkId + '-input';
69
+
70
+ // Construct aria-label with unit for better accessibility
71
+ const ariaLabel = displayUnit ? `${itemText || ''} (${displayUnit})`.trim() : undefined;
72
+
66
73
  return (
67
74
  <StandardTextField
68
- id={itemType + '-' + linkId + '-input'}
75
+ id={inputId}
69
76
  value={input}
70
77
  error={!!feedback}
71
78
  onChange={(event) => onInputChange(event.target.value)}
@@ -76,7 +83,11 @@ function QuantityField(props: QuantityFieldProps) {
76
83
  isTabled={isTabled}
77
84
  size="small"
78
85
  slotProps={{
79
- htmlInput: { inputMode: 'numeric', pattern: '[0-9]*' },
86
+ htmlInput: {
87
+ inputMode: 'numeric',
88
+ pattern: '[0-9]*',
89
+ ...(ariaLabel && { 'aria-label': ariaLabel })
90
+ },
80
91
  input: {
81
92
  readOnly: readOnly && readOnlyVisualStyle === 'readonly',
82
93
  endAdornment: (
@@ -201,6 +201,7 @@ function QuantityItem(props: BaseItemProps) {
201
201
  <QuantityField
202
202
  linkId={qItem.linkId}
203
203
  itemType={qItem.type}
204
+ itemText={qItem.text}
204
205
  input={valueInput}
205
206
  feedback={feedback ?? ''}
206
207
  displayPrompt={displayPrompt}
@@ -252,6 +253,7 @@ function QuantityItem(props: BaseItemProps) {
252
253
  <QuantityField
253
254
  linkId={qItem.linkId}
254
255
  itemType={qItem.type}
256
+ itemText={qItem.text}
255
257
  input={valueInput}
256
258
  feedback={feedback ?? ''}
257
259
  displayPrompt={displayPrompt}
@@ -9,10 +9,12 @@ import { useEffect, useRef, useState } from 'react';
9
9
  export function useCalculatedExpressionUpdated(answerKey: string | undefined): boolean {
10
10
  const [animating, setAnimating] = useState(false);
11
11
  const previousAnswerKey = useRef<string | null>(null);
12
+ const mounted = useRef(false);
12
13
 
13
14
  useEffect(() => {
14
15
  // Skip the first render — just store the current key
15
- if (previousAnswerKey.current === null) {
16
+ if (!mounted.current) {
17
+ mounted.current = true;
16
18
  previousAnswerKey.current = answerKey ?? null;
17
19
  return;
18
20
  }
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- interface FadingCheckIconProps {
3
- fadeIn: boolean;
4
- disabled: boolean;
5
- }
6
- declare function FadingCheckIcon(props: FadingCheckIconProps): React.JSX.Element;
7
- export default FadingCheckIcon;