@aehrc/smart-forms-renderer 0.7.2 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/lib/components/Alert.styles.d.ts +2 -7
  2. package/lib/components/Box.styles.d.ts +6 -21
  3. package/lib/components/FormComponents/BooleanItem/BooleanItem.d.ts +2 -2
  4. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +5 -4
  5. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +2 -2
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +6 -6
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.d.ts +12 -0
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js +39 -0
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -0
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +17 -29
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.d.ts +13 -0
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js +42 -0
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js.map +1 -0
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +4 -3
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +17 -24
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +3 -2
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +8 -8
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.d.ts +12 -0
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +27 -0
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -0
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +3 -3
  28. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +14 -29
  29. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  30. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.d.ts +14 -0
  31. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +42 -0
  32. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -0
  33. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +3 -3
  34. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +14 -26
  35. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  36. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +11 -0
  37. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +41 -0
  38. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -0
  39. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +2 -2
  40. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +12 -27
  41. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  42. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +13 -0
  43. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +42 -0
  44. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -0
  45. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +2 -2
  46. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +13 -22
  47. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
  48. package/lib/components/FormComponents/DateItem/DateItem.d.ts +2 -1
  49. package/lib/components/FormComponents/DateItem/DateItem.js +5 -4
  50. package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -1
  51. package/lib/components/FormComponents/DateItem/DatePicker.d.ts +2 -0
  52. package/lib/components/FormComponents/DateItem/DatePicker.js +42 -0
  53. package/lib/components/FormComponents/DateItem/DatePicker.js.map +1 -0
  54. package/lib/components/FormComponents/DateItem/DatePickerField.d.ts +8 -0
  55. package/{src/components/FormComponents/Typography.styles.ts → lib/components/FormComponents/DateItem/DatePickerField.js} +8 -9
  56. package/lib/components/FormComponents/DateItem/DatePickerField.js.map +1 -0
  57. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +2 -2
  58. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +5 -4
  59. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -1
  60. package/lib/components/FormComponents/DecimalItem/DecimalItem.d.ts +2 -2
  61. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +5 -4
  62. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  63. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +1 -0
  64. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js +2 -2
  65. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -1
  66. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +2 -7
  67. package/lib/components/FormComponents/DisplayItem/DisplayItem.js +2 -2
  68. package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -1
  69. package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +2 -2
  70. package/lib/components/FormComponents/GridGroup/GridGroup.js +6 -4
  71. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
  72. package/lib/components/FormComponents/GridGroup/GridRow.d.ts +2 -1
  73. package/lib/components/FormComponents/GridGroup/GridRow.js +2 -2
  74. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  75. package/lib/components/FormComponents/GridGroup/GridTable.d.ts +2 -1
  76. package/lib/components/FormComponents/GridGroup/GridTable.js +2 -2
  77. package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
  78. package/lib/components/FormComponents/GroupItem/GroupHeading.d.ts +1 -0
  79. package/lib/components/FormComponents/GroupItem/GroupHeading.js +6 -5
  80. package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -1
  81. package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -3
  82. package/lib/components/FormComponents/GroupItem/GroupItem.js +5 -3
  83. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  84. package/lib/components/FormComponents/GroupItem/GroupItem.styles.d.ts +2 -6
  85. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -2
  86. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +12 -12
  87. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
  88. package/lib/components/FormComponents/IntegerItem/IntegerItem.d.ts +2 -2
  89. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +5 -4
  90. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  91. package/lib/components/FormComponents/Item.styles.d.ts +2 -6
  92. package/lib/components/FormComponents/Item.styles.js +2 -6
  93. package/lib/components/FormComponents/Item.styles.js.map +1 -1
  94. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +1 -0
  95. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +3 -3
  96. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -1
  97. package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +1 -0
  98. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +4 -6
  99. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -1
  100. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +1 -0
  101. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +2 -2
  102. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -1
  103. package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.d.ts +8 -0
  104. package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.js +37 -0
  105. package/lib/components/FormComponents/ItemParts/RadioAnswerOptionButtons.js.map +1 -0
  106. package/lib/components/FormComponents/ItemParts/RadioButtons.d.ts +8 -0
  107. package/lib/components/FormComponents/ItemParts/RadioButtons.js +37 -0
  108. package/lib/components/FormComponents/ItemParts/RadioButtons.js.map +1 -0
  109. package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.d.ts +8 -0
  110. package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.js +37 -0
  111. package/lib/components/FormComponents/ItemParts/RadioButtonsAnswerOption.js.map +1 -0
  112. package/lib/components/FormComponents/Lists.styles.d.ts +2 -9
  113. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +21 -0
  114. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +48 -0
  115. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -0
  116. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.d.ts +0 -0
  117. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.js +2 -0
  118. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteFieldEndAdornment.js.map +1 -0
  119. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +2 -2
  120. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +16 -39
  121. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
  122. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.d.ts +17 -0
  123. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js +42 -0
  124. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js.map +1 -0
  125. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  126. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +27 -39
  127. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  128. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +2 -2
  129. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +6 -6
  130. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  131. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.d.ts +15 -0
  132. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js +29 -0
  133. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -0
  134. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +3 -3
  135. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +10 -29
  136. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
  137. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +12 -0
  138. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +14 -0
  139. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -0
  140. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.d.ts +0 -0
  141. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.js +2 -0
  142. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionFields.js.map +1 -0
  143. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +2 -2
  144. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +23 -27
  145. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
  146. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +13 -0
  147. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +16 -0
  148. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -0
  149. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +2 -2
  150. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +13 -18
  151. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
  152. package/lib/components/FormComponents/RepeatGroup/AddItemButton.d.ts +1 -0
  153. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +2 -2
  154. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -1
  155. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +1 -0
  156. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +2 -2
  157. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -1
  158. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
  159. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +8 -6
  160. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  161. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
  162. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +5 -3
  163. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
  164. package/lib/components/FormComponents/RepeatItem/AddItemButton.d.ts +1 -0
  165. package/lib/components/FormComponents/RepeatItem/AddItemButton.js +2 -2
  166. package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -1
  167. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +1 -0
  168. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js +2 -2
  169. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js.map +1 -1
  170. package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +2 -2
  171. package/lib/components/FormComponents/RepeatItem/RepeatField.js +5 -3
  172. package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
  173. package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +2 -2
  174. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +6 -5
  175. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
  176. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +4 -18
  177. package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +2 -2
  178. package/lib/components/FormComponents/SingleItem/SingleItem.js +4 -2
  179. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  180. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +2 -2
  181. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +12 -12
  182. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
  183. package/lib/components/FormComponents/StringItem/StringItem.d.ts +2 -2
  184. package/lib/components/FormComponents/StringItem/StringItem.js +5 -4
  185. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
  186. package/lib/components/FormComponents/Tables/AddItemButton.d.ts +8 -0
  187. package/lib/components/FormComponents/Tables/AddItemButton.js +28 -0
  188. package/lib/components/FormComponents/Tables/AddItemButton.js.map +1 -0
  189. package/lib/components/FormComponents/Tables/AddRowButton.d.ts +9 -0
  190. package/lib/components/FormComponents/Tables/AddRowButton.js +28 -0
  191. package/lib/components/FormComponents/Tables/AddRowButton.js.map +1 -0
  192. package/lib/components/FormComponents/Tables/DeleteRowButton.d.ts +1 -0
  193. package/lib/components/FormComponents/Tables/DeleteRowButton.js +2 -2
  194. package/lib/components/FormComponents/Tables/DeleteRowButton.js.map +1 -1
  195. package/lib/components/FormComponents/Tables/GroupTable.d.ts +10 -0
  196. package/lib/components/FormComponents/Tables/GroupTable.js +110 -0
  197. package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -0
  198. package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +11 -0
  199. package/lib/components/FormComponents/Tables/GroupTableRow.js +46 -0
  200. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -0
  201. package/lib/components/FormComponents/Tables/QItemGroupTable.js +5 -7
  202. package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -1
  203. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +2 -2
  204. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -1
  205. package/lib/components/FormComponents/Tables/index.d.ts +1 -1
  206. package/lib/components/FormComponents/Tables/index.js +1 -1
  207. package/lib/components/FormComponents/Tables/index.js.map +1 -1
  208. package/lib/components/FormComponents/TextItem/TextItem.d.ts +2 -2
  209. package/lib/components/FormComponents/TextItem/TextItem.js +5 -4
  210. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
  211. package/lib/components/FormComponents/TimeItem/TimeItem.d.ts +2 -2
  212. package/lib/components/FormComponents/TimeItem/TimeItem.js +5 -4
  213. package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
  214. package/lib/components/FormComponents/UrlItem/UrlItem.d.ts +2 -2
  215. package/lib/components/FormComponents/UrlItem/UrlItem.js +5 -4
  216. package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
  217. package/lib/components/Lists.styles.d.ts +2 -9
  218. package/lib/components/Renderer/FormBodyTabbed.js +1 -1
  219. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  220. package/lib/components/Renderer/FormTopLevelItem.js +7 -5
  221. package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
  222. package/lib/components/Tabs/FormBodySingleTab.js +1 -1
  223. package/lib/components/Tabs/FormBodyTabList.d.ts +1 -0
  224. package/lib/components/Tabs/FormBodyTabList.js +3 -4
  225. package/lib/components/Tabs/FormBodyTabList.js.map +1 -1
  226. package/lib/components/Tabs/FormBodyTabListWrapper.d.ts +1 -1
  227. package/lib/components/Tabs/FormBodyTabListWrapper.js +6 -13
  228. package/lib/components/Tabs/FormBodyTabListWrapper.js.map +1 -1
  229. package/lib/components/Tabs/ShowCompletedTabsSection.d.ts +7 -0
  230. package/lib/components/Tabs/ShowCompletedTabsSection.js +34 -0
  231. package/lib/components/Tabs/ShowCompletedTabsSection.js.map +1 -0
  232. package/lib/hooks/useContextDisplayItems.d.ts +6 -0
  233. package/lib/hooks/useContextDisplayItems.js +30 -0
  234. package/lib/hooks/useContextDisplayItems.js.map +1 -0
  235. package/lib/hooks/useInitialiseRenderer.js +2 -2
  236. package/lib/hooks/useInitialiseRenderer.js.map +1 -1
  237. package/lib/hooks/useInitialiseRepeatGroups.d.ts +1 -1
  238. package/lib/hooks/useMinimalStringCalculatedExpression.d.ts +11 -0
  239. package/lib/hooks/useMinimalStringCalculatedExpression.js +37 -0
  240. package/lib/hooks/useMinimalStringCalculatedExpression.js.map +1 -0
  241. package/lib/hooks/useNumberInput.d.ts +1 -1
  242. package/lib/hooks/useNumberInput.js.map +1 -1
  243. package/lib/hooks/useReadOnly.d.ts +3 -0
  244. package/lib/hooks/useReadOnly.js +26 -0
  245. package/lib/hooks/useReadOnly.js.map +1 -0
  246. package/lib/hooks/useStringInput.d.ts +1 -1
  247. package/lib/hooks/useStringInput.js.map +1 -1
  248. package/lib/hooks/useTerminologyServerQuery.js +3 -6
  249. package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
  250. package/lib/index.js +2 -2
  251. package/lib/index.js.map +1 -1
  252. package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
  253. package/lib/interfaces/renderProps.interface.d.ts +6 -0
  254. package/lib/stores/useQuestionnaireResponseStore.d.ts +2 -1
  255. package/lib/stores/useQuestionnaireResponseStore.js +5 -3
  256. package/lib/stores/useQuestionnaireResponseStore.js.map +1 -1
  257. package/lib/theme/overrides/Typography.d.ts +13 -0
  258. package/lib/theme/overrides/Typography.js +31 -0
  259. package/lib/theme/overrides/Typography.js.map +1 -0
  260. package/lib/theme/typography.d.ts +0 -2
  261. package/lib/theme/typography.js +3 -5
  262. package/lib/theme/typography.js.map +1 -1
  263. package/lib/utils/calculatedExpression.d.ts +12 -0
  264. package/lib/utils/calculatedExpression.js +54 -8
  265. package/lib/utils/calculatedExpression.js.map +1 -1
  266. package/lib/utils/qrItem.d.ts +2 -3
  267. package/lib/utils/qrItem.js +2 -3
  268. package/lib/utils/qrItem.js.map +1 -1
  269. package/lib/utils/repopulateIntoResponse.d.ts +2 -2
  270. package/lib/utils/repopulateItems.js +0 -1
  271. package/lib/utils/repopulateItems.js.map +1 -1
  272. package/package.json +15 -15
  273. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +8 -5
  274. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +9 -7
  275. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +85 -0
  276. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +48 -60
  277. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.tsx +79 -0
  278. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +50 -52
  279. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +24 -9
  280. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +48 -0
  281. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +32 -59
  282. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +83 -0
  283. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +37 -56
  284. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +82 -0
  285. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +30 -60
  286. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +98 -0
  287. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +33 -66
  288. package/src/components/FormComponents/DateItem/DateItem.tsx +8 -6
  289. package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +8 -6
  290. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +7 -5
  291. package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +6 -2
  292. package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +2 -2
  293. package/src/components/FormComponents/GridGroup/GridGroup.tsx +13 -5
  294. package/src/components/FormComponents/GridGroup/GridRow.tsx +6 -2
  295. package/src/components/FormComponents/GridGroup/GridTable.tsx +6 -2
  296. package/src/components/FormComponents/GroupItem/GroupHeading.tsx +12 -6
  297. package/src/components/FormComponents/GroupItem/GroupItem.tsx +8 -2
  298. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +31 -8
  299. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +7 -5
  300. package/src/components/FormComponents/Item.styles.ts +2 -7
  301. package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +4 -3
  302. package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +10 -5
  303. package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +3 -2
  304. package/src/components/FormComponents/ItemParts/RadioAnswerOptionButtons.tsx +72 -0
  305. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +137 -0
  306. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +50 -99
  307. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.tsx +112 -0
  308. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +72 -80
  309. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +17 -5
  310. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +72 -0
  311. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +23 -67
  312. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +60 -0
  313. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +50 -69
  314. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +69 -0
  315. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +33 -56
  316. package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +3 -2
  317. package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +3 -2
  318. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +17 -9
  319. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +13 -2
  320. package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +3 -2
  321. package/src/components/FormComponents/RepeatItem/DeleteItemButton.tsx +3 -2
  322. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +21 -3
  323. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +13 -6
  324. package/src/components/FormComponents/SingleItem/SingleItem.tsx +12 -3
  325. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +21 -3
  326. package/src/components/FormComponents/StringItem/StringItem.tsx +7 -5
  327. package/src/components/FormComponents/Tables/AddRowButton.tsx +50 -0
  328. package/src/components/FormComponents/Tables/DeleteRowButton.tsx +3 -2
  329. package/src/components/FormComponents/Tables/{QItemGroupTable.tsx → GroupTable.tsx} +22 -22
  330. package/src/components/FormComponents/Tables/{QItemGroupTableRow.tsx → GroupTableRow.tsx} +8 -4
  331. package/src/components/FormComponents/Tables/index.ts +1 -1
  332. package/src/components/FormComponents/TextItem/TextItem.tsx +7 -5
  333. package/src/components/FormComponents/TimeItem/TimeItem.tsx +8 -6
  334. package/src/components/FormComponents/UrlItem/UrlItem.tsx +7 -5
  335. package/src/components/Renderer/FormBodyTabbed.tsx +1 -1
  336. package/src/components/Renderer/FormTopLevelItem.tsx +9 -4
  337. package/src/components/Tabs/FormBodySingleTab.tsx +1 -1
  338. package/src/components/Tabs/FormBodyTabList.tsx +5 -8
  339. package/src/components/Tabs/FormBodyTabListWrapper.tsx +15 -26
  340. package/src/components/Tabs/ShowCompletedTabsSection.tsx +52 -0
  341. package/src/hooks/useContextDisplayItems.ts +40 -0
  342. package/src/hooks/useInitialiseRenderer.ts +2 -2
  343. package/src/hooks/useInitialiseRepeatGroups.ts +1 -1
  344. package/src/hooks/useNumberInput.ts +2 -1
  345. package/src/hooks/useReadOnly.ts +30 -0
  346. package/src/hooks/useStringInput.ts +2 -1
  347. package/src/hooks/useTerminologyServerQuery.ts +3 -6
  348. package/src/index.ts +2 -2
  349. package/src/interfaces/calculatedExpression.interface.ts +1 -1
  350. package/src/interfaces/renderProps.interface.ts +8 -0
  351. package/src/stores/useQuestionnaireResponseStore.ts +5 -4
  352. package/src/theme/typography.ts +3 -5
  353. package/src/utils/calculatedExpression.ts +68 -12
  354. package/src/utils/qrItem.ts +4 -3
  355. package/src/utils/repopulateIntoResponse.ts +2 -2
  356. package/src/utils/repopulateItems.ts +0 -1
@@ -0,0 +1,79 @@
1
+ /*
2
+ * Copyright 2023 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
+
18
+ import React from 'react';
19
+ import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
20
+ import type { Coding, QuestionnaireResponseItemAnswer } from 'fhir/r4';
21
+ import CheckboxSingle from '../ItemParts/CheckboxSingle';
22
+ import { StyledFormGroup } from '../Item.styles';
23
+ import { StyledAlert } from '../../Alert.styles';
24
+ import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
25
+ import Typography from '@mui/material/Typography';
26
+
27
+ interface ChoiceCheckboxAnswerValueSetFieldsProps {
28
+ codings: Coding[];
29
+ answers: QuestionnaireResponseItemAnswer[];
30
+ orientation: ChoiceItemOrientation;
31
+ readOnly: boolean;
32
+ serverError: Error | null;
33
+ onCheckedChange: (newValue: string) => void;
34
+ }
35
+
36
+ function ChoiceCheckboxAnswerValueSetFields(props: ChoiceCheckboxAnswerValueSetFieldsProps) {
37
+ const { codings, answers, orientation, readOnly, serverError, onCheckedChange } = props;
38
+
39
+ if (codings.length > 0) {
40
+ return (
41
+ <StyledFormGroup row={orientation === ChoiceItemOrientation.Horizontal}>
42
+ {codings.map((coding) => (
43
+ <CheckboxSingle
44
+ key={coding.code ?? ''}
45
+ value={coding.code ?? ''}
46
+ label={coding.display ?? `${coding.code}`}
47
+ readOnly={readOnly}
48
+ isChecked={answers.some(
49
+ (answer) => JSON.stringify(answer.valueCoding) === JSON.stringify(coding)
50
+ )}
51
+ onCheckedChange={onCheckedChange}
52
+ />
53
+ ))}
54
+ </StyledFormGroup>
55
+ );
56
+ }
57
+
58
+ if (serverError) {
59
+ return (
60
+ <StyledAlert color="error">
61
+ <ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
62
+ <Typography variant="subtitle2">
63
+ There was an error fetching options from the terminology server
64
+ </Typography>
65
+ </StyledAlert>
66
+ );
67
+ }
68
+
69
+ return (
70
+ <StyledAlert color="error">
71
+ <ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
72
+ <Typography variant="subtitle2">
73
+ Unable to fetch options from the questionnaire or launch context
74
+ </Typography>
75
+ </StyledAlert>
76
+ );
77
+ }
78
+
79
+ export default ChoiceCheckboxAnswerValueSetFields;
@@ -17,43 +17,52 @@
17
17
 
18
18
  import React from 'react';
19
19
  import Grid from '@mui/material/Grid';
20
- import Typography from '@mui/material/Typography';
21
-
22
20
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
23
21
  import { createEmptyQrItem } from '../../../utils/qrItem';
24
22
  import useValueSetCodings from '../../../hooks/useValueSetCodings';
25
- import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
23
+ import type { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
26
24
  import { mapCodingsToOptions, updateQrCheckboxAnswers } from '../../../utils/choice';
27
- import CheckboxSingle from '../ItemParts/CheckboxSingle';
28
- import { QFormGroup } from '../Item.styles';
29
25
  import { FullWidthFormComponentBox } from '../../Box.styles';
30
26
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
31
- import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
32
27
  import type {
33
28
  PropsWithIsRepeatedAttribute,
34
- PropsWithQrItemChangeHandler
29
+ PropsWithParentIsReadOnlyAttribute,
30
+ PropsWithQrItemChangeHandler,
31
+ PropsWithTextShownAttribute
35
32
  } from '../../../interfaces/renderProps.interface';
36
- import { StyledAlert } from '../../Alert.styles';
37
33
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
38
34
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
35
+ import ChoiceCheckboxAnswerValueSetFields from './ChoiceCheckboxAnswerValueSetFields';
36
+ import useReadOnly from '../../../hooks/useReadOnly';
39
37
 
40
38
  interface ChoiceCheckboxAnswerValueSetItemProps
41
39
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
42
- PropsWithIsRepeatedAttribute {
40
+ PropsWithIsRepeatedAttribute,
41
+ PropsWithTextShownAttribute,
42
+ PropsWithParentIsReadOnlyAttribute {
43
43
  qItem: QuestionnaireItem;
44
44
  qrItem: QuestionnaireResponseItem;
45
45
  orientation: ChoiceItemOrientation;
46
+ showText?: boolean;
46
47
  }
47
48
 
48
49
  function ChoiceCheckboxAnswerValueSetItem(props: ChoiceCheckboxAnswerValueSetItemProps) {
49
- const { qItem, qrItem, isRepeated, onQrItemChange, orientation } = props;
50
+ const {
51
+ qItem,
52
+ qrItem,
53
+ orientation,
54
+ isRepeated,
55
+ textShown = true,
56
+ parentIsReadOnly,
57
+ onQrItemChange
58
+ } = props;
50
59
 
51
60
  // Init input value
52
61
  const qrChoiceCheckbox = qrItem ?? createEmptyQrItem(qItem);
53
62
  const answers = qrChoiceCheckbox.answer ? qrChoiceCheckbox.answer : [];
54
63
 
55
- // Get additional rendering extensions
56
- const { displayInstructions, readOnly } = useRenderingExtensions(qItem);
64
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
65
+ const { displayInstructions } = useRenderingExtensions(qItem);
57
66
 
58
67
  // Get codings/options from valueSet
59
68
  const { codings, serverError } = useValueSetCodings(qItem);
@@ -75,52 +84,41 @@ function ChoiceCheckboxAnswerValueSetItem(props: ChoiceCheckboxAnswerValueSetIte
75
84
  }
76
85
  }
77
86
 
78
- const choiceCheckbox =
79
- codings.length > 0 ? (
80
- <QFormGroup row={orientation === ChoiceItemOrientation.Horizontal}>
81
- {codings.map((coding) => {
82
- return (
83
- <CheckboxSingle
84
- key={coding.code ?? ''}
85
- value={coding.code ?? ''}
86
- label={coding.display ?? `${coding.code}`}
87
+ if (textShown) {
88
+ return (
89
+ <FullWidthFormComponentBox data-test="q-item-choice-checkbox-answer-value-set-box">
90
+ <Grid container columnSpacing={6}>
91
+ <Grid item xs={5}>
92
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
93
+ </Grid>
94
+ <Grid item xs={7}>
95
+ <ChoiceCheckboxAnswerValueSetFields
96
+ codings={codings}
97
+ answers={answers}
98
+ orientation={orientation}
87
99
  readOnly={readOnly}
88
- isChecked={answers.some(
89
- (answer) => JSON.stringify(answer.valueCoding) === JSON.stringify(coding)
90
- )}
100
+ serverError={serverError}
91
101
  onCheckedChange={handleCheckedChange}
92
102
  />
93
- );
94
- })}
95
- </QFormGroup>
96
- ) : serverError ? (
97
- <StyledAlert color="error">
98
- <ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
99
- <Typography variant="subtitle2">
100
- There was an error fetching options from the terminology server
101
- </Typography>
102
- </StyledAlert>
103
- ) : (
104
- <StyledAlert color="error">
105
- <ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
106
- <Typography variant="subtitle2">
107
- Unable to fetch options from the questionnaire or launch context
108
- </Typography>
109
- </StyledAlert>
103
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
104
+ </Grid>
105
+ </Grid>
106
+ </FullWidthFormComponentBox>
110
107
  );
108
+ }
111
109
 
112
110
  return (
113
- <FullWidthFormComponentBox data-test="q-item-choice-checkbox-answer-value-set-box">
114
- <Grid container columnSpacing={6}>
115
- <Grid item xs={5}>
116
- <LabelWrapper qItem={qItem} />
117
- </Grid>
118
- <Grid item xs={7}>
119
- {choiceCheckbox}
120
- <DisplayInstructions displayInstructions={displayInstructions} />
121
- </Grid>
122
- </Grid>
123
- </FullWidthFormComponentBox>
111
+ <>
112
+ <ChoiceCheckboxAnswerValueSetFields
113
+ codings={codings}
114
+ answers={answers}
115
+ orientation={orientation}
116
+ readOnly={readOnly}
117
+ serverError={serverError}
118
+ onCheckedChange={handleCheckedChange}
119
+ />
120
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
121
+ </>
124
122
  );
125
123
  }
126
124
 
@@ -29,19 +29,25 @@ import ChoiceCheckboxAnswerValueSetItem from './ChoiceCheckboxAnswerValueSetItem
29
29
  import type {
30
30
  PropsWithIsRepeatedAttribute,
31
31
  PropsWithIsTabledAttribute,
32
- PropsWithQrItemChangeHandler
32
+ PropsWithQrItemChangeHandler,
33
+ PropsWithTextShownAttribute
33
34
  } from '../../../interfaces/renderProps.interface';
35
+ import type { PropsWithParentIsReadOnlyAttribute } from '../../../interfaces/renderProps.interface';
34
36
 
35
37
  interface ChoiceItemSwitcherProps
36
38
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
37
39
  PropsWithIsRepeatedAttribute,
38
- PropsWithIsTabledAttribute {
40
+ PropsWithIsTabledAttribute,
41
+ PropsWithTextShownAttribute,
42
+ PropsWithParentIsReadOnlyAttribute {
39
43
  qItem: QuestionnaireItem;
40
44
  qrItem: QuestionnaireResponseItem;
41
45
  }
42
46
 
43
47
  function ChoiceItemSwitcher(props: ChoiceItemSwitcherProps) {
44
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
48
+ const { qItem, qrItem, isRepeated, isTabled, textShown, parentIsReadOnly, onQrItemChange } =
49
+ props;
50
+
45
51
  const orientation = getChoiceOrientation(qItem);
46
52
  const choiceControlType = getChoiceControlType(qItem);
47
53
 
@@ -52,9 +58,10 @@ function ChoiceItemSwitcher(props: ChoiceItemSwitcherProps) {
52
58
  <ChoiceRadioAnswerOptionItem
53
59
  qItem={qItem}
54
60
  qrItem={qrItem}
61
+ orientation={orientation}
55
62
  isRepeated={isRepeated}
63
+ parentIsReadOnly={parentIsReadOnly}
56
64
  onQrItemChange={onQrItemChange}
57
- orientation={orientation}
58
65
  />
59
66
  );
60
67
  } else {
@@ -62,9 +69,10 @@ function ChoiceItemSwitcher(props: ChoiceItemSwitcherProps) {
62
69
  <ChoiceRadioAnswerValueSetItem
63
70
  qItem={qItem}
64
71
  qrItem={qrItem}
72
+ orientation={orientation}
65
73
  isRepeated={isRepeated}
74
+ parentIsReadOnly={parentIsReadOnly}
66
75
  onQrItemChange={onQrItemChange}
67
- orientation={orientation}
68
76
  />
69
77
  );
70
78
  }
@@ -74,9 +82,11 @@ function ChoiceItemSwitcher(props: ChoiceItemSwitcherProps) {
74
82
  <ChoiceCheckboxAnswerOptionItem
75
83
  qItem={qItem}
76
84
  qrItem={qrItem}
77
- isRepeated={qItem['repeats'] ?? false}
78
- onQrItemChange={onQrItemChange}
79
85
  orientation={orientation}
86
+ isRepeated={qItem.repeats ?? false}
87
+ textShown={textShown}
88
+ parentIsReadOnly={parentIsReadOnly}
89
+ onQrItemChange={onQrItemChange}
80
90
  />
81
91
  );
82
92
  } else {
@@ -84,9 +94,11 @@ function ChoiceItemSwitcher(props: ChoiceItemSwitcherProps) {
84
94
  <ChoiceCheckboxAnswerValueSetItem
85
95
  qItem={qItem}
86
96
  qrItem={qrItem}
87
- isRepeated={qItem['repeats'] ?? false}
88
- onQrItemChange={onQrItemChange}
97
+ isRepeated={qItem.repeats ?? false}
89
98
  orientation={orientation}
99
+ textShown={textShown}
100
+ parentIsReadOnly={parentIsReadOnly}
101
+ onQrItemChange={onQrItemChange}
90
102
  />
91
103
  );
92
104
  }
@@ -97,6 +109,7 @@ function ChoiceItemSwitcher(props: ChoiceItemSwitcherProps) {
97
109
  qrItem={qrItem}
98
110
  isRepeated={isRepeated}
99
111
  isTabled={isTabled}
112
+ parentIsReadOnly={parentIsReadOnly}
100
113
  onQrItemChange={onQrItemChange}
101
114
  />
102
115
  );
@@ -108,6 +121,7 @@ function ChoiceItemSwitcher(props: ChoiceItemSwitcherProps) {
108
121
  qrItem={qrItem}
109
122
  isRepeated={isRepeated}
110
123
  isTabled={isTabled}
124
+ parentIsReadOnly={parentIsReadOnly}
111
125
  onQrItemChange={onQrItemChange}
112
126
  />
113
127
  );
@@ -118,6 +132,7 @@ function ChoiceItemSwitcher(props: ChoiceItemSwitcherProps) {
118
132
  qrItem={qrItem}
119
133
  isRepeated={isRepeated}
120
134
  isTabled={isTabled}
135
+ parentIsReadOnly={parentIsReadOnly}
121
136
  onQrItemChange={onQrItemChange}
122
137
  />
123
138
  );
@@ -0,0 +1,48 @@
1
+ /*
2
+ * Copyright 2023 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
+
18
+ import React from 'react';
19
+ import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
20
+ import type { QuestionnaireItem } from 'fhir/r4';
21
+ import RadioAnswerOptionButtons from '../ItemParts/RadioAnswerOptionButtons';
22
+ import { StyledRadioGroup } from '../Item.styles';
23
+
24
+ interface ChoiceRadioAnswerOptionFieldsProps {
25
+ qItem: QuestionnaireItem;
26
+ valueRadio: string | null;
27
+ orientation: ChoiceItemOrientation;
28
+ readOnly: boolean;
29
+ onCheckedChange: (newValue: string) => void;
30
+ }
31
+
32
+ function ChoiceRadioAnswerOptionFields(props: ChoiceRadioAnswerOptionFieldsProps) {
33
+ const { qItem, valueRadio, orientation, readOnly, onCheckedChange } = props;
34
+
35
+ return (
36
+ <StyledRadioGroup
37
+ row={orientation === ChoiceItemOrientation.Horizontal}
38
+ name={qItem.text}
39
+ id={qItem.id}
40
+ onChange={(e) => onCheckedChange(e.target.value)}
41
+ value={valueRadio}
42
+ data-test="q-item-radio-group">
43
+ <RadioAnswerOptionButtons qItem={qItem} readOnly={readOnly} />
44
+ </StyledRadioGroup>
45
+ );
46
+ }
47
+
48
+ export default ChoiceRadioAnswerOptionFields;
@@ -15,111 +15,84 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import type { ChangeEvent } from 'react';
19
18
  import React from 'react';
20
19
  import Grid from '@mui/material/Grid';
21
- import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
20
+ import type { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
22
21
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
23
22
  import { findInAnswerOptions, getQrChoiceValue } from '../../../utils/choice';
24
- import ChoiceRadioSingle from './ChoiceRadioSingle';
25
23
  import { createEmptyQrItem } from '../../../utils/qrItem';
26
- import { QRadioGroup } from '../Item.styles';
27
24
  import { FullWidthFormComponentBox } from '../../Box.styles';
28
25
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
29
26
  import type {
30
27
  PropsWithIsRepeatedAttribute,
28
+ PropsWithParentIsReadOnlyAttribute,
31
29
  PropsWithQrItemChangeHandler
32
30
  } from '../../../interfaces/renderProps.interface';
33
31
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
34
32
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
33
+ import ChoiceRadioAnswerOptionFields from './ChoiceRadioAnswerOptionFields';
34
+ import useReadOnly from '../../../hooks/useReadOnly';
35
35
 
36
36
  interface ChoiceRadioAnswerOptionItemProps
37
37
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
38
- PropsWithIsRepeatedAttribute {
38
+ PropsWithIsRepeatedAttribute,
39
+ PropsWithParentIsReadOnlyAttribute {
39
40
  qItem: QuestionnaireItem;
40
41
  qrItem: QuestionnaireResponseItem;
41
42
  orientation: ChoiceItemOrientation;
42
43
  }
43
44
 
44
45
  function ChoiceRadioAnswerOptionItem(props: ChoiceRadioAnswerOptionItemProps) {
45
- const { qItem, qrItem, isRepeated, onQrItemChange, orientation } = props;
46
+ const { qItem, qrItem, orientation, isRepeated, parentIsReadOnly, onQrItemChange } = props;
46
47
 
47
48
  // Init input value
48
49
  const qrChoiceRadio = qrItem ?? createEmptyQrItem(qItem);
49
50
  const valueRadio = getQrChoiceValue(qrChoiceRadio);
50
51
 
51
- // Get additional rendering extensions
52
- const { displayInstructions, readOnly } = useRenderingExtensions(qItem);
52
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
53
+ const { displayInstructions } = useRenderingExtensions(qItem);
53
54
 
54
55
  // Event handlers
55
- function handleChange(e: ChangeEvent<HTMLInputElement>) {
56
+ function handleChange(newValue: string) {
56
57
  if (qItem.answerOption) {
57
- const qrAnswer = findInAnswerOptions(qItem.answerOption, e.target.value);
58
+ const qrAnswer = findInAnswerOptions(qItem.answerOption, newValue);
58
59
  if (qrAnswer) {
59
60
  onQrItemChange({ ...createEmptyQrItem(qItem), answer: [qrAnswer] });
60
61
  }
61
62
  }
62
63
  }
63
64
 
64
- const choiceRadio = (
65
- <QRadioGroup
66
- row={orientation === ChoiceItemOrientation.Horizontal}
67
- name={qItem.text}
68
- id={qItem.id}
69
- onChange={handleChange}
70
- value={valueRadio}
71
- data-test="q-item-radio-group">
72
- {qItem.answerOption?.map((option) => {
73
- if (option['valueCoding']) {
74
- return (
75
- <ChoiceRadioSingle
76
- key={option.valueCoding.code ?? ''}
77
- value={option.valueCoding.code ?? ''}
78
- label={option.valueCoding.display ?? `${option.valueCoding.code}`}
79
- readOnly={readOnly}
80
- />
81
- );
82
- } else if (option['valueString']) {
83
- return (
84
- <ChoiceRadioSingle
85
- key={option.valueString}
86
- value={option.valueString}
87
- label={option.valueString}
88
- readOnly={readOnly}
89
- />
90
- );
91
- } else if (option['valueInteger']) {
92
- return (
93
- <ChoiceRadioSingle
94
- key={option.valueInteger}
95
- value={option.valueInteger.toString()}
96
- label={option.valueInteger.toString()}
97
- readOnly={readOnly}
98
- />
99
- );
100
- } else {
101
- return null;
102
- }
103
- })}
104
- </QRadioGroup>
105
- );
65
+ if (isRepeated) {
66
+ return (
67
+ <ChoiceRadioAnswerOptionFields
68
+ qItem={qItem}
69
+ valueRadio={valueRadio}
70
+ orientation={orientation}
71
+ readOnly={readOnly}
72
+ onCheckedChange={handleChange}
73
+ />
74
+ );
75
+ }
106
76
 
107
- const renderQItemChoiceRadio = isRepeated ? (
108
- <>{choiceRadio}</>
109
- ) : (
77
+ return (
110
78
  <FullWidthFormComponentBox data-test="q-item-choice-radio-answer-option-box">
111
79
  <Grid container columnSpacing={6}>
112
80
  <Grid item xs={5}>
113
- <LabelWrapper qItem={qItem} />
81
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
114
82
  </Grid>
115
83
  <Grid item xs={7}>
116
- {choiceRadio}
117
- <DisplayInstructions displayInstructions={displayInstructions} />
84
+ <ChoiceRadioAnswerOptionFields
85
+ qItem={qItem}
86
+ valueRadio={valueRadio}
87
+ orientation={orientation}
88
+ readOnly={readOnly}
89
+ onCheckedChange={handleChange}
90
+ />
91
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
118
92
  </Grid>
119
93
  </Grid>
120
94
  </FullWidthFormComponentBox>
121
95
  );
122
- return <>{renderQItemChoiceRadio}</>;
123
96
  }
124
97
 
125
98
  export default ChoiceRadioAnswerOptionItem;
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Copyright 2023 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
+
18
+ import React from 'react';
19
+ import Typography from '@mui/material/Typography';
20
+ import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
21
+ import type { Coding, QuestionnaireItem } from 'fhir/r4';
22
+ import ChoiceRadioSingle from './ChoiceRadioSingle';
23
+ import { StyledRadioGroup } from '../Item.styles';
24
+ import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
25
+ import { StyledAlert } from '../../Alert.styles';
26
+
27
+ interface ChoiceRadioAnswerValueSetFieldsProps {
28
+ qItem: QuestionnaireItem;
29
+ codings: Coding[];
30
+ valueRadio: string | null;
31
+ orientation: ChoiceItemOrientation;
32
+ readOnly: boolean;
33
+ serverError: Error | null;
34
+ onCheckedChange: (newValue: string) => void;
35
+ }
36
+
37
+ function ChoiceRadioAnswerValueSetFields(props: ChoiceRadioAnswerValueSetFieldsProps) {
38
+ const { qItem, codings, valueRadio, orientation, readOnly, serverError, onCheckedChange } = props;
39
+
40
+ if (codings.length > 0) {
41
+ return (
42
+ <StyledRadioGroup
43
+ row={orientation === ChoiceItemOrientation.Horizontal}
44
+ name={qItem.text}
45
+ id={qItem.id}
46
+ onChange={(e) => onCheckedChange(e.target.value)}
47
+ value={valueRadio ?? null}>
48
+ {codings.map((coding: Coding) => {
49
+ return (
50
+ <ChoiceRadioSingle
51
+ key={coding.code ?? ''}
52
+ value={coding.code ?? ''}
53
+ label={coding.display ?? `${coding.code}`}
54
+ readOnly={readOnly}
55
+ />
56
+ );
57
+ })}
58
+ </StyledRadioGroup>
59
+ );
60
+ }
61
+
62
+ if (serverError) {
63
+ return (
64
+ <StyledAlert color="error">
65
+ <ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
66
+ <Typography variant="subtitle2">
67
+ There was an error fetching options from the terminology server
68
+ </Typography>
69
+ </StyledAlert>
70
+ );
71
+ }
72
+
73
+ return (
74
+ <StyledAlert color="error">
75
+ <ErrorOutlineIcon color="error" sx={{ pr: 0.75 }} />
76
+ <Typography variant="subtitle2">
77
+ Unable to fetch options from the questionnaire or launch context
78
+ </Typography>
79
+ </StyledAlert>
80
+ );
81
+ }
82
+
83
+ export default ChoiceRadioAnswerValueSetFields;