@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
@@ -17,13 +17,11 @@
17
17
 
18
18
  import React, { useCallback, useMemo, useState } from 'react';
19
19
  import Grid from '@mui/material/Grid';
20
- import { CheckBoxOption, ChoiceItemOrientation } from '../../../interfaces/choice.enum';
20
+ import type { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
21
+ import { CheckBoxOption } from '../../../interfaces/choice.enum';
21
22
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
22
23
  import { createEmptyQrItem } from '../../../utils/qrItem';
23
- import CheckboxSingle from '../ItemParts/CheckboxSingle';
24
24
  import { getOpenLabelText } from '../../../utils/itemControl';
25
- import CheckboxSingleWithOpenLabel from '../ItemParts/CheckboxSingleWithOpenLabel';
26
- import { QFormGroup } from '../Item.styles';
27
25
  import {
28
26
  getOldOpenLabelAnswer,
29
27
  updateQrOpenChoiceCheckboxAnswers
@@ -33,22 +31,40 @@ import debounce from 'lodash.debounce';
33
31
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
34
32
  import type {
35
33
  PropsWithIsRepeatedAttribute,
36
- PropsWithQrItemChangeHandler
34
+ PropsWithParentIsReadOnlyAttribute,
35
+ PropsWithQrItemChangeHandler,
36
+ PropsWithTextShownAttribute
37
37
  } from '../../../interfaces/renderProps.interface';
38
38
  import { DEBOUNCE_DURATION } from '../../../utils/debounce';
39
39
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
40
40
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
41
+ import OpenChoiceCheckboxAnswerOptionFields from './OpenChoiceCheckboxAnswerOptionFields';
42
+ import useReadOnly from '../../../hooks/useReadOnly';
41
43
 
42
44
  interface OpenChoiceCheckboxAnswerOptionItemProps
43
45
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
44
- PropsWithIsRepeatedAttribute {
46
+ PropsWithIsRepeatedAttribute,
47
+ PropsWithTextShownAttribute,
48
+ PropsWithParentIsReadOnlyAttribute {
45
49
  qItem: QuestionnaireItem;
46
50
  qrItem: QuestionnaireResponseItem;
47
51
  orientation: ChoiceItemOrientation;
48
52
  }
49
53
 
50
54
  function OpenChoiceCheckboxAnswerOptionItem(props: OpenChoiceCheckboxAnswerOptionItemProps) {
51
- const { qItem, qrItem, isRepeated, onQrItemChange, orientation } = props;
55
+ const {
56
+ qItem,
57
+ qrItem,
58
+ orientation,
59
+ isRepeated,
60
+ textShown = true,
61
+ parentIsReadOnly,
62
+ onQrItemChange
63
+ } = props;
64
+
65
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
66
+ const openLabelText = getOpenLabelText(qItem);
67
+ const { displayInstructions } = useRenderingExtensions(qItem);
52
68
 
53
69
  // Init answers
54
70
  const qrOpenChoiceCheckbox = qrItem ?? createEmptyQrItem(qItem);
@@ -68,10 +84,6 @@ function OpenChoiceCheckboxAnswerOptionItem(props: OpenChoiceCheckboxAnswerOptio
68
84
  const [openLabelValue, setOpenLabelValue] = useState(initialOpenLabelValue);
69
85
  const [openLabelChecked, setOpenLabelChecked] = useState(initialOpenLabelChecked);
70
86
 
71
- // Get additional rendering extensions
72
- const openLabelText = getOpenLabelText(qItem);
73
- const { displayInstructions, readOnly } = useRenderingExtensions(qItem);
74
-
75
87
  // Event handlers
76
88
  const handleValueChange = useCallback(
77
89
  (changedOptionValue: string | null, changedOpenLabelValue: string | null) => {
@@ -115,79 +127,59 @@ function OpenChoiceCheckboxAnswerOptionItem(props: OpenChoiceCheckboxAnswerOptio
115
127
  [handleValueChange]
116
128
  ); // Dependencies are tested, debounce is causing eslint to not recognise dependencies
117
129
 
118
- const openChoiceCheckbox = (
119
- <QFormGroup row={orientation === ChoiceItemOrientation.Horizontal}>
120
- {qItem.answerOption?.map((option) => {
121
- if (option['valueCoding']) {
122
- return (
123
- <CheckboxSingle
124
- key={option.valueCoding.code ?? ''}
125
- value={option.valueCoding.code ?? ''}
126
- label={option.valueCoding.display ?? `${option.valueCoding.code}`}
127
- readOnly={readOnly}
128
- isChecked={answers.some(
129
- (answer) => JSON.stringify(answer) === JSON.stringify(option)
130
- )}
131
- onCheckedChange={(changedValue) => handleValueChange(changedValue, null)}
132
- />
133
- );
134
- } else if (option['valueString']) {
135
- return (
136
- <CheckboxSingle
137
- key={option.valueString}
138
- value={option.valueString}
139
- label={option.valueString}
140
- readOnly={readOnly}
141
- isChecked={answers.some((answer) => answer.valueString === option.valueString)}
142
- onCheckedChange={(changedValue) => handleValueChange(changedValue, null)}
143
- />
144
- );
145
- } else if (option['valueInteger']) {
146
- return (
147
- <CheckboxSingle
148
- key={option.valueInteger}
149
- value={option.valueInteger.toString()}
150
- label={option.valueInteger.toString()}
130
+ function handleOpenLabelCheckedChange(checked: boolean) {
131
+ handleValueChange(null, openLabelValue);
132
+ setOpenLabelChecked(checked);
133
+ }
134
+
135
+ function handleOpenLabelInputChange(newValue: string) {
136
+ setOpenLabelValue(newValue);
137
+ updateOpenLabelValueWithDebounce(newValue);
138
+ }
139
+
140
+ if (textShown) {
141
+ return (
142
+ <FullWidthFormComponentBox data-test="q-item-open-choice-checkbox-answer-option-box">
143
+ <Grid container columnSpacing={6}>
144
+ <Grid item xs={5}>
145
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
146
+ </Grid>
147
+ <Grid item xs={7}>
148
+ <OpenChoiceCheckboxAnswerOptionFields
149
+ qItem={qItem}
150
+ answers={answers}
151
+ openLabelText={openLabelText}
152
+ openLabelValue={openLabelValue}
153
+ openLabelChecked={openLabelChecked}
151
154
  readOnly={readOnly}
152
- isChecked={answers.some((answer) => answer.valueInteger === option.valueInteger)}
153
- onCheckedChange={(changedValue) => handleValueChange(changedValue, null)}
155
+ orientation={orientation}
156
+ onValueChange={handleValueChange}
157
+ onOpenLabelCheckedChange={handleOpenLabelCheckedChange}
158
+ onOpenLabelInputChange={handleOpenLabelInputChange}
154
159
  />
155
- );
156
- } else {
157
- return null;
158
- }
159
- })}
160
-
161
- {openLabelText ? (
162
- <CheckboxSingleWithOpenLabel
163
- value={openLabelValue}
164
- label={openLabelText}
165
- isChecked={openLabelChecked}
166
- onCheckedChange={(checked) => {
167
- handleValueChange(null, openLabelValue);
168
- setOpenLabelChecked(checked);
169
- }}
170
- onInputChange={(input) => {
171
- setOpenLabelValue(input);
172
- updateOpenLabelValueWithDebounce(input);
173
- }}
174
- />
175
- ) : null}
176
- </QFormGroup>
177
- );
160
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
161
+ </Grid>
162
+ </Grid>
163
+ </FullWidthFormComponentBox>
164
+ );
165
+ }
178
166
 
179
167
  return (
180
- <FullWidthFormComponentBox data-test="q-item-open-choice-checkbox-answer-option-box">
181
- <Grid container columnSpacing={6}>
182
- <Grid item xs={5}>
183
- <LabelWrapper qItem={qItem} />
184
- </Grid>
185
- <Grid item xs={7}>
186
- {openChoiceCheckbox}
187
- <DisplayInstructions displayInstructions={displayInstructions} />
188
- </Grid>
189
- </Grid>
190
- </FullWidthFormComponentBox>
168
+ <>
169
+ <OpenChoiceCheckboxAnswerOptionFields
170
+ qItem={qItem}
171
+ answers={answers}
172
+ openLabelText={openLabelText}
173
+ openLabelValue={openLabelValue}
174
+ openLabelChecked={openLabelChecked}
175
+ readOnly={readOnly}
176
+ orientation={orientation}
177
+ onValueChange={handleValueChange}
178
+ onOpenLabelCheckedChange={handleOpenLabelCheckedChange}
179
+ onOpenLabelInputChange={handleOpenLabelInputChange}
180
+ />
181
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
182
+ </>
191
183
  );
192
184
  }
193
185
 
@@ -28,19 +28,25 @@ import OpenChoiceRadioAnswerOptionItem from './OpenChoiceRadioAnswerOptionItem';
28
28
  import type {
29
29
  PropsWithIsRepeatedAttribute,
30
30
  PropsWithIsTabledAttribute,
31
- PropsWithQrItemChangeHandler
31
+ PropsWithParentIsReadOnlyAttribute,
32
+ PropsWithQrItemChangeHandler,
33
+ PropsWithTextShownAttribute
32
34
  } from '../../../interfaces/renderProps.interface';
33
35
 
34
36
  interface OpenChoiceItemSwitcherProps
35
37
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
36
38
  PropsWithIsRepeatedAttribute,
37
- PropsWithIsTabledAttribute {
39
+ PropsWithIsTabledAttribute,
40
+ PropsWithTextShownAttribute,
41
+ PropsWithParentIsReadOnlyAttribute {
38
42
  qItem: QuestionnaireItem;
39
43
  qrItem: QuestionnaireResponseItem;
40
44
  }
41
45
 
42
46
  function OpenChoiceItemSwitcher(props: OpenChoiceItemSwitcherProps) {
43
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
47
+ const { qItem, qrItem, isRepeated, isTabled, textShown, parentIsReadOnly, onQrItemChange } =
48
+ props;
49
+
44
50
  const orientation = getChoiceOrientation(qItem);
45
51
 
46
52
  switch (getOpenChoiceControlType(qItem)) {
@@ -49,9 +55,11 @@ function OpenChoiceItemSwitcher(props: OpenChoiceItemSwitcherProps) {
49
55
  <OpenChoiceCheckboxAnswerOptionItem
50
56
  qItem={qItem}
51
57
  qrItem={qrItem}
58
+ orientation={orientation}
52
59
  isRepeated={qItem['repeats'] ?? false}
60
+ textShown={textShown}
61
+ parentIsReadOnly={parentIsReadOnly}
53
62
  onQrItemChange={onQrItemChange}
54
- orientation={orientation}
55
63
  />
56
64
  );
57
65
  case OpenChoiceItemControl.Radio:
@@ -59,9 +67,10 @@ function OpenChoiceItemSwitcher(props: OpenChoiceItemSwitcherProps) {
59
67
  <OpenChoiceRadioAnswerOptionItem
60
68
  qItem={qItem}
61
69
  qrItem={qrItem}
70
+ orientation={orientation}
62
71
  isRepeated={qItem['repeats'] ?? false}
72
+ parentIsReadOnly={parentIsReadOnly}
63
73
  onQrItemChange={onQrItemChange}
64
- orientation={orientation}
65
74
  />
66
75
  );
67
76
  case OpenChoiceItemControl.Autocomplete:
@@ -71,6 +80,7 @@ function OpenChoiceItemSwitcher(props: OpenChoiceItemSwitcherProps) {
71
80
  qrItem={qrItem}
72
81
  isRepeated={isRepeated}
73
82
  isTabled={isTabled}
83
+ parentIsReadOnly={parentIsReadOnly}
74
84
  onQrItemChange={onQrItemChange}
75
85
  />
76
86
  );
@@ -82,6 +92,7 @@ function OpenChoiceItemSwitcher(props: OpenChoiceItemSwitcherProps) {
82
92
  qrItem={qrItem}
83
93
  isRepeated={isRepeated}
84
94
  isTabled={isTabled}
95
+ parentIsReadOnly={parentIsReadOnly}
85
96
  onQrItemChange={onQrItemChange}
86
97
  />
87
98
  );
@@ -92,6 +103,7 @@ function OpenChoiceItemSwitcher(props: OpenChoiceItemSwitcherProps) {
92
103
  qrItem={qrItem}
93
104
  isRepeated={isRepeated}
94
105
  isTabled={isTabled}
106
+ parentIsReadOnly={parentIsReadOnly}
95
107
  onQrItemChange={onQrItemChange}
96
108
  />
97
109
  );
@@ -0,0 +1,72 @@
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 type { ChangeEvent } from 'react';
19
+ import React from 'react';
20
+ import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
21
+ import type { QuestionnaireItem } from 'fhir/r4';
22
+ import { StyledRadioGroup } from '../Item.styles';
23
+ import RadioButtonWithOpenLabel from '../ItemParts/RadioButtonWithOpenLabel';
24
+ import RadioAnswerOptionButtons from '../ItemParts/RadioAnswerOptionButtons';
25
+
26
+ interface OpenChoiceRadioAnswerOptionFieldsProps {
27
+ qItem: QuestionnaireItem;
28
+ valueRadio: string | null;
29
+ openLabelText: string | null;
30
+ openLabelValue: string | null;
31
+ openLabelSelected: boolean;
32
+ orientation: ChoiceItemOrientation;
33
+ readOnly: boolean;
34
+ onValueChange: (changedOptionValue: string | null, changedOpenLabelValue: string | null) => void;
35
+ }
36
+
37
+ function OpenChoiceRadioAnswerOptionFields(props: OpenChoiceRadioAnswerOptionFieldsProps) {
38
+ const {
39
+ qItem,
40
+ valueRadio,
41
+ openLabelText,
42
+ openLabelValue,
43
+ openLabelSelected,
44
+ orientation,
45
+ readOnly,
46
+ onValueChange
47
+ } = props;
48
+
49
+ return (
50
+ <StyledRadioGroup
51
+ row={orientation === ChoiceItemOrientation.Horizontal}
52
+ name={qItem.text}
53
+ id={qItem.id}
54
+ onChange={(e: ChangeEvent<HTMLInputElement>) => onValueChange(e.target.value, null)}
55
+ value={valueRadio}
56
+ data-test="q-item-radio-group">
57
+ <RadioAnswerOptionButtons qItem={qItem} readOnly={readOnly} />
58
+
59
+ {openLabelText ? (
60
+ <RadioButtonWithOpenLabel
61
+ value={openLabelValue}
62
+ label={openLabelText}
63
+ readOnly={readOnly}
64
+ isSelected={openLabelSelected}
65
+ onInputChange={(input) => onValueChange(null, input)}
66
+ />
67
+ ) : null}
68
+ </StyledRadioGroup>
69
+ );
70
+ }
71
+
72
+ export default OpenChoiceRadioAnswerOptionFields;
@@ -15,37 +15,41 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import type { ChangeEvent } from 'react';
19
18
  import React, { useState } 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 { createEmptyQrItem } from '../../../utils/qrItem';
24
23
  import { getOpenLabelText } from '../../../utils/itemControl';
25
- import { QRadioGroup } from '../Item.styles';
26
24
  import { getOldOpenLabelAnswer } from '../../../utils/openChoice';
27
25
  import { FullWidthFormComponentBox } from '../../Box.styles';
28
- import ChoiceRadioSingle from '../ChoiceItems/ChoiceRadioSingle';
29
26
  import { findInAnswerOptions, getQrChoiceValue } from '../../../utils/choice';
30
- import RadioButtonWithOpenLabel from '../ItemParts/RadioButtonWithOpenLabel';
31
27
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
32
28
  import type {
33
29
  PropsWithIsRepeatedAttribute,
30
+ PropsWithParentIsReadOnlyAttribute,
34
31
  PropsWithQrItemChangeHandler
35
32
  } from '../../../interfaces/renderProps.interface';
36
33
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
37
34
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
35
+ import OpenChoiceRadioAnswerOptionFields from './OpenChoiceRadioAnswerOptionFields';
36
+ import useReadOnly from '../../../hooks/useReadOnly';
38
37
 
39
38
  interface OpenChoiceRadioAnswerOptionItemProps
40
39
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
41
- PropsWithIsRepeatedAttribute {
40
+ PropsWithIsRepeatedAttribute,
41
+ PropsWithParentIsReadOnlyAttribute {
42
42
  qItem: QuestionnaireItem;
43
43
  qrItem: QuestionnaireResponseItem;
44
44
  orientation: ChoiceItemOrientation;
45
45
  }
46
46
 
47
47
  function OpenChoiceRadioAnswerOptionItem(props: OpenChoiceRadioAnswerOptionItemProps) {
48
- const { qItem, qrItem, onQrItemChange, orientation } = props;
48
+ const { qItem, qrItem, orientation, parentIsReadOnly, onQrItemChange } = props;
49
+
50
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
51
+ const openLabelText = getOpenLabelText(qItem);
52
+ const { displayInstructions } = useRenderingExtensions(qItem);
49
53
 
50
54
  // Init answers
51
55
  const qrOpenChoiceRadio = qrItem ?? createEmptyQrItem(qItem);
@@ -73,10 +77,6 @@ function OpenChoiceRadioAnswerOptionItem(props: OpenChoiceRadioAnswerOptionItemP
73
77
  valueRadio = '';
74
78
  }
75
79
 
76
- // Get additional rendering extensions
77
- const openLabelText = getOpenLabelText(qItem);
78
- const { displayInstructions, readOnly } = useRenderingExtensions(qItem);
79
-
80
80
  // Event handlers
81
81
  function handleValueChange(
82
82
  changedOptionValue: string | null,
@@ -119,68 +119,24 @@ function OpenChoiceRadioAnswerOptionItem(props: OpenChoiceRadioAnswerOptionItemP
119
119
  }
120
120
  }
121
121
 
122
- const openChoiceRadio = (
123
- <QRadioGroup
124
- row={orientation === ChoiceItemOrientation.Horizontal}
125
- name={qItem.text}
126
- id={qItem.id}
127
- onChange={(e: ChangeEvent<HTMLInputElement>) => handleValueChange(e.target.value, null)}
128
- value={valueRadio}
129
- data-test="q-item-radio-group">
130
- {qItem.answerOption?.map((option) => {
131
- if (option['valueCoding']) {
132
- return (
133
- <ChoiceRadioSingle
134
- key={option.valueCoding.code ?? ''}
135
- value={option.valueCoding.code ?? ''}
136
- label={option.valueCoding.display ?? `${option.valueCoding.code}`}
137
- readOnly={readOnly}
138
- />
139
- );
140
- } else if (option['valueString']) {
141
- return (
142
- <ChoiceRadioSingle
143
- key={option.valueString}
144
- value={option.valueString}
145
- label={option.valueString}
146
- readOnly={readOnly}
147
- />
148
- );
149
- } else if (option['valueInteger']) {
150
- return (
151
- <ChoiceRadioSingle
152
- key={option.valueInteger}
153
- value={option.valueInteger.toString()}
154
- label={option.valueInteger.toString()}
155
- readOnly={readOnly}
156
- />
157
- );
158
- } else {
159
- return null;
160
- }
161
- })}
162
-
163
- {openLabelText ? (
164
- <RadioButtonWithOpenLabel
165
- value={openLabelValue}
166
- label={openLabelText}
167
- readOnly={readOnly}
168
- isSelected={openLabelSelected}
169
- onInputChange={(input) => handleValueChange(null, input)}
170
- />
171
- ) : null}
172
- </QRadioGroup>
173
- );
174
-
175
122
  return (
176
123
  <FullWidthFormComponentBox data-test="q-item-open-choice-radio-answer-option-box">
177
124
  <Grid container columnSpacing={6}>
178
125
  <Grid item xs={5}>
179
- <LabelWrapper qItem={qItem} />
126
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
180
127
  </Grid>
181
128
  <Grid item xs={7}>
182
- {openChoiceRadio}
183
- <DisplayInstructions displayInstructions={displayInstructions} />
129
+ <OpenChoiceRadioAnswerOptionFields
130
+ qItem={qItem}
131
+ valueRadio={valueRadio}
132
+ openLabelText={openLabelText}
133
+ openLabelValue={openLabelValue}
134
+ openLabelSelected={openLabelSelected}
135
+ orientation={orientation}
136
+ readOnly={readOnly}
137
+ onValueChange={handleValueChange}
138
+ />
139
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
184
140
  </Grid>
185
141
  </Grid>
186
142
  </FullWidthFormComponentBox>
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { getAnswerOptionLabel } from '../../../utils/openChoice';
3
+ import { StandardTextField } from '../Textfield.styles';
4
+ import Autocomplete from '@mui/material/Autocomplete';
5
+ import type { QuestionnaireItem, QuestionnaireItemAnswerOption } from 'fhir/r4';
6
+ import type {
7
+ PropsWithIsTabledAttribute,
8
+ PropsWithParentIsReadOnlyAttribute
9
+ } from '../../../interfaces/renderProps.interface';
10
+ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
11
+
12
+ interface OpenChoiceSelectAnswerOptionFieldProps
13
+ extends PropsWithIsTabledAttribute,
14
+ PropsWithParentIsReadOnlyAttribute {
15
+ qItem: QuestionnaireItem;
16
+ options: QuestionnaireItemAnswerOption[];
17
+ valueSelect: QuestionnaireItemAnswerOption | null;
18
+ readOnly: boolean;
19
+ onChange: (newValue: QuestionnaireItemAnswerOption | string | null) => void;
20
+ }
21
+
22
+ function OpenChoiceSelectAnswerOptionField(props: OpenChoiceSelectAnswerOptionFieldProps) {
23
+ const { qItem, options, valueSelect, readOnly, isTabled, onChange } = props;
24
+
25
+ const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
26
+
27
+ return (
28
+ <Autocomplete
29
+ id={qItem.id}
30
+ value={valueSelect ?? null}
31
+ options={options}
32
+ getOptionLabel={(option) => getAnswerOptionLabel(option)}
33
+ onChange={(_, newValue) => onChange(newValue)}
34
+ freeSolo
35
+ autoHighlight
36
+ sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}
37
+ disabled={readOnly}
38
+ size="small"
39
+ placeholder={entryFormat}
40
+ renderInput={(params) => (
41
+ <StandardTextField
42
+ isTabled={isTabled}
43
+ label={displayPrompt}
44
+ {...params}
45
+ InputProps={{
46
+ ...params.InputProps,
47
+ endAdornment: (
48
+ <>
49
+ {params.InputProps.endAdornment}
50
+ {displayUnit}
51
+ </>
52
+ )
53
+ }}
54
+ />
55
+ )}
56
+ />
57
+ );
58
+ }
59
+
60
+ export default OpenChoiceSelectAnswerOptionField;