@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,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 React from 'react';
19
+ import ChoiceRadioSingle from '../ChoiceItems/ChoiceRadioSingle';
20
+ import type { QuestionnaireItem } from 'fhir/r4';
21
+
22
+ interface RadioAnswerOptionButtonsProps {
23
+ qItem: QuestionnaireItem;
24
+ readOnly: boolean;
25
+ }
26
+
27
+ function RadioAnswerOptionButtons(props: RadioAnswerOptionButtonsProps) {
28
+ const { qItem, readOnly } = props;
29
+
30
+ return (
31
+ <>
32
+ {qItem.answerOption?.map((option) => {
33
+ if (option['valueCoding']) {
34
+ return (
35
+ <ChoiceRadioSingle
36
+ key={option.valueCoding.code ?? ''}
37
+ value={option.valueCoding.code ?? ''}
38
+ label={option.valueCoding.display ?? `${option.valueCoding.code}`}
39
+ readOnly={readOnly}
40
+ />
41
+ );
42
+ }
43
+
44
+ if (option['valueString']) {
45
+ return (
46
+ <ChoiceRadioSingle
47
+ key={option.valueString}
48
+ value={option.valueString}
49
+ label={option.valueString}
50
+ readOnly={readOnly}
51
+ />
52
+ );
53
+ }
54
+
55
+ if (option['valueInteger']) {
56
+ return (
57
+ <ChoiceRadioSingle
58
+ key={option.valueInteger}
59
+ value={option.valueInteger.toString()}
60
+ label={option.valueInteger.toString()}
61
+ readOnly={readOnly}
62
+ />
63
+ );
64
+ }
65
+
66
+ return null;
67
+ })}
68
+ </>
69
+ );
70
+ }
71
+
72
+ export default RadioAnswerOptionButtons;
@@ -0,0 +1,137 @@
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 Box from '@mui/material/Box';
20
+ import Autocomplete from '@mui/material/Autocomplete';
21
+ import { StandardTextField } from '../Textfield.styles';
22
+ import SearchIcon from '@mui/icons-material/Search';
23
+ import CircularProgress from '@mui/material/CircularProgress';
24
+ import Fade from '@mui/material/Fade';
25
+ import Tooltip from '@mui/material/Tooltip';
26
+ import InfoIcon from '@mui/icons-material/Info';
27
+ import WarningAmberIcon from '@mui/icons-material/WarningAmber';
28
+ import DoneIcon from '@mui/icons-material/Done';
29
+ import ErrorIcon from '@mui/icons-material/Error';
30
+ import type { Coding, QuestionnaireItem } from 'fhir/r4';
31
+ import type {
32
+ PropsWithIsTabledAttribute,
33
+ PropsWithParentIsReadOnlyAttribute
34
+ } from '../../../interfaces/renderProps.interface';
35
+ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
36
+ import type { AlertColor } from '@mui/material/Alert';
37
+
38
+ interface OpenChoiceAutocompleteFieldProps
39
+ extends PropsWithIsTabledAttribute,
40
+ PropsWithParentIsReadOnlyAttribute {
41
+ qItem: QuestionnaireItem;
42
+ options: Coding[];
43
+ valueAutocomplete: string | Coding;
44
+ input: string;
45
+ loading: boolean;
46
+ feedback: { message: string; color: AlertColor } | null;
47
+ readOnly: boolean;
48
+ onInputChange: (newInput: string) => void;
49
+ onValueChange: (newValue: Coding | string | null) => void;
50
+ onUnfocus: () => void;
51
+ }
52
+
53
+ function OpenChoiceAutocompleteField(props: OpenChoiceAutocompleteFieldProps) {
54
+ const {
55
+ qItem,
56
+ options,
57
+ valueAutocomplete,
58
+ input,
59
+ loading,
60
+ feedback,
61
+ readOnly,
62
+ isTabled,
63
+ onInputChange,
64
+ onValueChange,
65
+ onUnfocus
66
+ } = props;
67
+
68
+ const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
69
+
70
+ return (
71
+ <Box display="flex">
72
+ <Autocomplete
73
+ id={qItem.id}
74
+ value={valueAutocomplete}
75
+ options={options}
76
+ getOptionLabel={(option) => (typeof option === 'string' ? option : `${option.display}`)}
77
+ disabled={readOnly}
78
+ loading={loading}
79
+ loadingText={'Fetching results...'}
80
+ clearOnEscape
81
+ freeSolo
82
+ autoHighlight
83
+ sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 220, flexGrow: 1 }}
84
+ placeholder={entryFormat}
85
+ onChange={(_, newValue) => onValueChange(newValue)}
86
+ filterOptions={(x) => x}
87
+ renderInput={(params) => (
88
+ <StandardTextField
89
+ {...params}
90
+ value={input}
91
+ onBlur={onUnfocus}
92
+ onChange={(e) => onInputChange(e.target.value)}
93
+ isTabled={isTabled}
94
+ label={displayPrompt}
95
+ size="small"
96
+ InputProps={{
97
+ ...params.InputProps,
98
+ startAdornment: (
99
+ <>
100
+ {!valueAutocomplete || valueAutocomplete === '' ? (
101
+ <SearchIcon fontSize="small" sx={{ ml: 0.5 }} />
102
+ ) : null}
103
+ {params.InputProps.startAdornment}
104
+ </>
105
+ ),
106
+ endAdornment: (
107
+ <>
108
+ {loading ? (
109
+ <CircularProgress color="inherit" size={16} />
110
+ ) : feedback ? (
111
+ <Fade in={!!feedback} timeout={300}>
112
+ <Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>
113
+ {
114
+ {
115
+ info: <InfoIcon fontSize="small" color="info" />,
116
+ warning: <WarningAmberIcon fontSize="small" color="warning" />,
117
+ success: <DoneIcon fontSize="small" color="success" />,
118
+ error: <ErrorIcon fontSize="small" color="error" />
119
+ }[feedback.color]
120
+ }
121
+ </Tooltip>
122
+ </Fade>
123
+ ) : null}
124
+ {params.InputProps.endAdornment}
125
+ {displayUnit}
126
+ </>
127
+ )
128
+ }}
129
+ data-test="q-item-open-choice-autocomplete-field"
130
+ />
131
+ )}
132
+ />
133
+ </Box>
134
+ );
135
+ }
136
+
137
+ export default OpenChoiceAutocompleteField;
@@ -15,47 +15,43 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import type { ChangeEvent, SyntheticEvent } from 'react';
19
18
  import React, { useState } from 'react';
20
- import Autocomplete from '@mui/material/Autocomplete';
21
- import Box from '@mui/material/Box';
22
- import CircularProgress from '@mui/material/CircularProgress';
23
- import Fade from '@mui/material/Fade';
24
19
  import Grid from '@mui/material/Grid';
25
- import Tooltip from '@mui/material/Tooltip';
26
20
 
27
21
  import type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
28
22
 
29
23
  import { createEmptyQrItem } from '../../../utils/qrItem';
30
- import { StandardTextField } from '../Textfield.styles';
31
24
  import { FullWidthFormComponentBox } from '../../Box.styles';
32
- import SearchIcon from '@mui/icons-material/Search';
33
25
  import useDebounce from '../../../hooks/useDebounce';
34
26
  import useTerminologyServerQuery from '../../../hooks/useTerminologyServerQuery';
35
- import WarningAmberIcon from '@mui/icons-material/WarningAmber';
36
- import InfoIcon from '@mui/icons-material/Info';
37
- import DoneIcon from '@mui/icons-material/Done';
38
- import ErrorIcon from '@mui/icons-material/Error';
39
27
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
40
28
  import type {
41
29
  PropsWithIsRepeatedAttribute,
42
30
  PropsWithIsTabledAttribute,
31
+ PropsWithParentIsReadOnlyAttribute,
43
32
  PropsWithQrItemChangeHandler
44
33
  } from '../../../interfaces/renderProps.interface';
45
34
  import { AUTOCOMPLETE_DEBOUNCE_DURATION } from '../../../utils/debounce';
46
35
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
47
36
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
37
+ import OpenChoiceAutocompleteField from './OpenChoiceAutocompleteField';
38
+ import useReadOnly from '../../../hooks/useReadOnly';
48
39
 
49
40
  interface OpenChoiceAutocompleteItemProps
50
41
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
51
42
  PropsWithIsRepeatedAttribute,
52
- PropsWithIsTabledAttribute {
43
+ PropsWithIsTabledAttribute,
44
+ PropsWithParentIsReadOnlyAttribute {
53
45
  qItem: QuestionnaireItem;
54
46
  qrItem: QuestionnaireResponseItem;
55
47
  }
56
48
 
57
49
  function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
58
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
50
+ const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
51
+
52
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
53
+ const { displayInstructions } = useRenderingExtensions(qItem);
54
+
59
55
  const qrOpenChoice = qrItem ?? createEmptyQrItem(qItem);
60
56
 
61
57
  // Init input value
@@ -69,11 +65,6 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
69
65
  valueAutocomplete = '';
70
66
  }
71
67
 
72
- // Get additional rendering extensions
73
- const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =
74
- useRenderingExtensions(qItem);
75
-
76
- // Query ontoserver for options
77
68
  const maxList = 10;
78
69
 
79
70
  const [input, setInput] = useState('');
@@ -91,7 +82,7 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
91
82
  }
92
83
 
93
84
  // Event handlers
94
- function handleValueChange(_: SyntheticEvent<Element, Event>, newValue: Coding | string | null) {
85
+ function handleValueChange(newValue: Coding | string | null) {
95
86
  if (newValue === null) {
96
87
  setInput('');
97
88
  newValue = '';
@@ -114,95 +105,55 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
114
105
  }
115
106
  }
116
107
 
117
- const openChoiceAutocomplete = (
118
- <>
119
- <Box display="flex">
120
- <Autocomplete
121
- id={qItem.id}
122
- value={valueAutocomplete}
123
- options={options}
124
- getOptionLabel={(option) => (typeof option === 'string' ? option : `${option.display}`)}
125
- disabled={readOnly}
126
- loading={loading}
127
- loadingText={'Fetching results...'}
128
- clearOnEscape
129
- freeSolo
130
- autoHighlight
131
- sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 220, flexGrow: 1 }}
132
- placeholder={entryFormat}
133
- onChange={handleValueChange}
134
- filterOptions={(x) => x}
135
- renderInput={(params) => (
136
- <StandardTextField
137
- {...params}
138
- value={input}
139
- onBlur={() => {
140
- // set answer to current input when text field is unfocused
141
- if (!valueAutocomplete && input !== '') {
142
- onQrItemChange({
143
- ...createEmptyQrItem(qItem),
144
- answer: [{ valueString: input }]
145
- });
146
- }
147
- }}
148
- onChange={(e: ChangeEvent<HTMLInputElement>) => setInput(e.target.value)}
149
- isTabled={isTabled}
150
- label={displayPrompt}
151
- size="small"
152
- InputProps={{
153
- ...params.InputProps,
154
- startAdornment: (
155
- <>
156
- {!valueAutocomplete || valueAutocomplete === '' ? (
157
- <SearchIcon fontSize="small" sx={{ ml: 0.5 }} />
158
- ) : null}
159
- {params.InputProps.startAdornment}
160
- </>
161
- ),
162
- endAdornment: (
163
- <>
164
- {loading ? (
165
- <CircularProgress color="inherit" size={16} />
166
- ) : feedback ? (
167
- <Fade in={!!feedback} timeout={300}>
168
- <Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>
169
- {
170
- {
171
- info: <InfoIcon fontSize="small" color="info" />,
172
- warning: <WarningAmberIcon fontSize="small" color="warning" />,
173
- success: <DoneIcon fontSize="small" color="success" />,
174
- error: <ErrorIcon fontSize="small" color="error" />
175
- }[feedback.color]
176
- }
177
- </Tooltip>
178
- </Fade>
179
- ) : null}
180
- {params.InputProps.endAdornment}
181
- {displayUnit}
182
- </>
183
- )
184
- }}
185
- data-test="q-item-open-choice-autocomplete-field"
186
- />
187
- )}
188
- />
189
- </Box>
190
- </>
191
- );
108
+ function handleUnfocus() {
109
+ // set answer to current input when text field is unfocused
110
+ if (!valueAutocomplete && input !== '') {
111
+ onQrItemChange({
112
+ ...createEmptyQrItem(qItem),
113
+ answer: [{ valueString: input }]
114
+ });
115
+ }
116
+ }
192
117
 
193
118
  if (isRepeated) {
194
- return <>{openChoiceAutocomplete}</>;
119
+ return (
120
+ <OpenChoiceAutocompleteField
121
+ qItem={qItem}
122
+ options={options}
123
+ valueAutocomplete={valueAutocomplete}
124
+ input={input}
125
+ loading={loading}
126
+ feedback={feedback ?? null}
127
+ readOnly={readOnly}
128
+ isTabled={isTabled}
129
+ onInputChange={(newValue) => setInput(newValue)}
130
+ onValueChange={handleValueChange}
131
+ onUnfocus={handleUnfocus}
132
+ />
133
+ );
195
134
  }
196
135
 
197
136
  return (
198
137
  <FullWidthFormComponentBox>
199
138
  <Grid container columnSpacing={6}>
200
139
  <Grid item xs={5}>
201
- <LabelWrapper qItem={qItem} />
140
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
202
141
  </Grid>
203
142
  <Grid item xs={7}>
204
- {openChoiceAutocomplete}
205
- <DisplayInstructions displayInstructions={displayInstructions} />
143
+ <OpenChoiceAutocompleteField
144
+ qItem={qItem}
145
+ options={options}
146
+ valueAutocomplete={valueAutocomplete}
147
+ input={input}
148
+ loading={loading}
149
+ feedback={feedback ?? null}
150
+ readOnly={readOnly}
151
+ isTabled={isTabled}
152
+ onInputChange={(newValue) => setInput(newValue)}
153
+ onValueChange={handleValueChange}
154
+ onUnfocus={handleUnfocus}
155
+ />
156
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
206
157
  </Grid>
207
158
  </Grid>
208
159
  </FullWidthFormComponentBox>
@@ -0,0 +1,112 @@
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 { StyledFormGroup } from '../Item.styles';
20
+ import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
21
+ import CheckboxSingle from '../ItemParts/CheckboxSingle';
22
+ import CheckboxSingleWithOpenLabel from '../ItemParts/CheckboxSingleWithOpenLabel';
23
+ import type { QuestionnaireItem, QuestionnaireResponseItemAnswer } from 'fhir/r4';
24
+
25
+ interface OpenChoiceCheckboxAnswerOptionFieldsProps {
26
+ qItem: QuestionnaireItem;
27
+ answers: QuestionnaireResponseItemAnswer[];
28
+ openLabelText: string | null;
29
+ openLabelValue: string;
30
+ openLabelChecked: boolean;
31
+ readOnly: boolean;
32
+ orientation: ChoiceItemOrientation;
33
+ onValueChange: (changedOptionValue: string | null, changedOpenLabelValue: string | null) => void;
34
+ onOpenLabelCheckedChange: (checked: boolean) => void;
35
+ onOpenLabelInputChange: (input: string) => void;
36
+ }
37
+
38
+ function OpenChoiceCheckboxAnswerOptionFields(props: OpenChoiceCheckboxAnswerOptionFieldsProps) {
39
+ const {
40
+ qItem,
41
+ answers,
42
+ openLabelText,
43
+ openLabelValue,
44
+ openLabelChecked,
45
+ readOnly,
46
+ orientation,
47
+ onValueChange,
48
+ onOpenLabelCheckedChange,
49
+ onOpenLabelInputChange
50
+ } = props;
51
+
52
+ return (
53
+ <StyledFormGroup row={orientation === ChoiceItemOrientation.Horizontal}>
54
+ {qItem.answerOption?.map((option) => {
55
+ if (option['valueCoding']) {
56
+ return (
57
+ <CheckboxSingle
58
+ key={option.valueCoding.code ?? ''}
59
+ value={option.valueCoding.code ?? ''}
60
+ label={option.valueCoding.display ?? `${option.valueCoding.code}`}
61
+ readOnly={readOnly}
62
+ isChecked={answers.some(
63
+ (answer) => JSON.stringify(answer) === JSON.stringify(option)
64
+ )}
65
+ onCheckedChange={(changedValue) => onValueChange(changedValue, null)}
66
+ />
67
+ );
68
+ }
69
+
70
+ if (option['valueString']) {
71
+ return (
72
+ <CheckboxSingle
73
+ key={option.valueString}
74
+ value={option.valueString}
75
+ label={option.valueString}
76
+ readOnly={readOnly}
77
+ isChecked={answers.some((answer) => answer.valueString === option.valueString)}
78
+ onCheckedChange={(changedValue) => onValueChange(changedValue, null)}
79
+ />
80
+ );
81
+ }
82
+
83
+ if (option['valueInteger']) {
84
+ return (
85
+ <CheckboxSingle
86
+ key={option.valueInteger}
87
+ value={option.valueInteger.toString()}
88
+ label={option.valueInteger.toString()}
89
+ readOnly={readOnly}
90
+ isChecked={answers.some((answer) => answer.valueInteger === option.valueInteger)}
91
+ onCheckedChange={(changedValue) => onValueChange(changedValue, null)}
92
+ />
93
+ );
94
+ }
95
+
96
+ return null;
97
+ })}
98
+
99
+ {openLabelText ? (
100
+ <CheckboxSingleWithOpenLabel
101
+ value={openLabelValue}
102
+ label={openLabelText}
103
+ isChecked={openLabelChecked}
104
+ onCheckedChange={onOpenLabelCheckedChange}
105
+ onInputChange={onOpenLabelInputChange}
106
+ />
107
+ ) : null}
108
+ </StyledFormGroup>
109
+ );
110
+ }
111
+
112
+ export default OpenChoiceCheckboxAnswerOptionFields;