@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
@@ -15,133 +15,114 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import type { SyntheticEvent } from 'react';
19
18
  import React from 'react';
20
- import Autocomplete from '@mui/material/Autocomplete';
21
19
  import Grid from '@mui/material/Grid';
22
20
  import type {
23
21
  QuestionnaireItem,
24
22
  QuestionnaireItemAnswerOption,
25
23
  QuestionnaireResponseItem
26
24
  } from 'fhir/r4';
27
- import { getAnswerOptionLabel } from '../../../utils/openChoice';
28
25
  import { createEmptyQrItem } from '../../../utils/qrItem';
29
- import { StandardTextField } from '../Textfield.styles';
30
26
  import { FullWidthFormComponentBox } from '../../Box.styles';
31
27
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
32
28
  import type {
33
29
  PropsWithIsRepeatedAttribute,
34
30
  PropsWithIsTabledAttribute,
31
+ PropsWithParentIsReadOnlyAttribute,
35
32
  PropsWithQrItemChangeHandler
36
33
  } from '../../../interfaces/renderProps.interface';
37
34
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
38
35
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
36
+ import OpenChoiceSelectAnswerOptionField from './OpenChoiceSelectAnswerOptionField';
37
+ import useReadOnly from '../../../hooks/useReadOnly';
39
38
 
40
39
  interface OpenChoiceSelectAnswerOptionItemProps
41
40
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
42
41
  PropsWithIsRepeatedAttribute,
43
- PropsWithIsTabledAttribute {
42
+ PropsWithIsTabledAttribute,
43
+ PropsWithParentIsReadOnlyAttribute {
44
44
  qItem: QuestionnaireItem;
45
45
  qrItem: QuestionnaireResponseItem;
46
46
  }
47
47
 
48
48
  function OpenChoiceSelectAnswerOptionItem(props: OpenChoiceSelectAnswerOptionItemProps) {
49
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
49
+ const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
50
50
 
51
- // Get additional rendering extensions
52
- const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =
53
- useRenderingExtensions(qItem);
51
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
52
+ const { displayInstructions } = useRenderingExtensions(qItem);
54
53
 
55
54
  // Init input value
56
55
  const answerOptions = qItem.answerOption;
57
56
  if (!answerOptions) return null;
58
57
 
59
58
  const qrOpenChoice = qrItem ?? createEmptyQrItem(qItem);
60
- let valueSelect: QuestionnaireItemAnswerOption | undefined = undefined;
59
+ let valueSelect: QuestionnaireItemAnswerOption | null = null;
61
60
  if (qrOpenChoice.answer) {
62
- valueSelect = qrOpenChoice.answer[0];
61
+ valueSelect = qrOpenChoice.answer[0] ?? null;
63
62
  }
64
63
 
65
64
  // Event handlers
66
- function handleChange(
67
- _: SyntheticEvent<Element, Event>,
68
- newValue: QuestionnaireItemAnswerOption | string | null
69
- ) {
65
+ function handleChange(newValue: QuestionnaireItemAnswerOption | string | null) {
70
66
  if (newValue) {
71
67
  if (typeof newValue === 'string') {
72
68
  onQrItemChange({
73
69
  ...qrOpenChoice,
74
70
  answer: [{ valueString: newValue }]
75
71
  });
76
- } else {
77
- const option = newValue;
78
- if (option['valueCoding']) {
79
- onQrItemChange({
80
- ...qrOpenChoice,
81
- answer: [{ valueCoding: option.valueCoding }]
82
- });
83
- } else if (option['valueString']) {
84
- onQrItemChange({
85
- ...qrOpenChoice,
86
- answer: [{ valueString: option.valueString }]
87
- });
88
- } else if (option['valueInteger']) {
89
- onQrItemChange({
90
- ...qrOpenChoice,
91
- answer: [{ valueInteger: option.valueInteger }]
92
- });
93
- }
72
+ return;
73
+ }
74
+
75
+ const option = newValue;
76
+ if (option['valueCoding']) {
77
+ onQrItemChange({
78
+ ...qrOpenChoice,
79
+ answer: [{ valueCoding: option.valueCoding }]
80
+ });
81
+ } else if (option['valueString']) {
82
+ onQrItemChange({
83
+ ...qrOpenChoice,
84
+ answer: [{ valueString: option.valueString }]
85
+ });
86
+ } else if (option['valueInteger']) {
87
+ onQrItemChange({
88
+ ...qrOpenChoice,
89
+ answer: [{ valueInteger: option.valueInteger }]
90
+ });
94
91
  }
95
92
  return;
96
93
  }
97
94
  onQrItemChange(createEmptyQrItem(qItem));
98
95
  }
99
96
 
100
- const openOpenChoiceSelectAnswerOption = (
101
- <Autocomplete
102
- id={qItem.id}
103
- value={valueSelect ?? null}
104
- options={answerOptions}
105
- getOptionLabel={(option) => getAnswerOptionLabel(option)}
106
- onChange={handleChange}
107
- freeSolo
108
- autoHighlight
109
- sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}
110
- disabled={readOnly}
111
- size="small"
112
- placeholder={entryFormat}
113
- renderInput={(params) => (
114
- <StandardTextField
115
- isTabled={isTabled}
116
- label={displayPrompt}
117
- {...params}
118
- InputProps={{
119
- ...params.InputProps,
120
- endAdornment: (
121
- <>
122
- {params.InputProps.endAdornment}
123
- {displayUnit}
124
- </>
125
- )
126
- }}
127
- />
128
- )}
129
- />
130
- );
131
-
132
97
  if (isRepeated) {
133
- return <>{openOpenChoiceSelectAnswerOption}</>;
98
+ return (
99
+ <OpenChoiceSelectAnswerOptionField
100
+ qItem={qItem}
101
+ options={answerOptions}
102
+ valueSelect={valueSelect}
103
+ readOnly={readOnly}
104
+ isTabled={isTabled}
105
+ onChange={handleChange}
106
+ />
107
+ );
134
108
  }
135
109
 
136
110
  return (
137
111
  <FullWidthFormComponentBox data-test="q-item-open-choice-select-answer-option-box">
138
112
  <Grid container columnSpacing={6}>
139
113
  <Grid item xs={5}>
140
- <LabelWrapper qItem={qItem} />
114
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
141
115
  </Grid>
142
116
  <Grid item xs={7}>
143
- {openOpenChoiceSelectAnswerOption}
144
- <DisplayInstructions displayInstructions={displayInstructions} />
117
+ <OpenChoiceSelectAnswerOptionField
118
+ qItem={qItem}
119
+ options={answerOptions}
120
+ valueSelect={valueSelect}
121
+ readOnly={readOnly}
122
+ isTabled={isTabled}
123
+ onChange={handleChange}
124
+ />
125
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
145
126
  </Grid>
146
127
  </Grid>
147
128
  </FullWidthFormComponentBox>
@@ -0,0 +1,69 @@
1
+ import React from 'react';
2
+ import Autocomplete from '@mui/material/Autocomplete';
3
+ import { StandardTextField } from '../Textfield.styles';
4
+ import Typography from '@mui/material/Typography';
5
+ import type {
6
+ PropsWithIsTabledAttribute,
7
+ PropsWithParentIsReadOnlyAttribute
8
+ } from '../../../interfaces/renderProps.interface';
9
+ import type { Coding, QuestionnaireItem } from 'fhir/r4';
10
+ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
11
+
12
+ interface OpenChoiceSelectAnswerValueSetFieldProps
13
+ extends PropsWithIsTabledAttribute,
14
+ PropsWithParentIsReadOnlyAttribute {
15
+ qItem: QuestionnaireItem;
16
+ options: Coding[];
17
+ valueSelect: Coding | null;
18
+ serverError: Error | null;
19
+ readOnly: boolean;
20
+ onValueChange: (newValue: Coding | string | null) => void;
21
+ }
22
+
23
+ function OpenChoiceSelectAnswerValueSetField(props: OpenChoiceSelectAnswerValueSetFieldProps) {
24
+ const { qItem, options, valueSelect, serverError, readOnly, isTabled, onValueChange } = props;
25
+
26
+ const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
27
+
28
+ return (
29
+ <>
30
+ <Autocomplete
31
+ id={qItem.id}
32
+ value={valueSelect ?? null}
33
+ options={options}
34
+ getOptionLabel={(option) => (typeof option === 'string' ? option : `${option.display}`)}
35
+ onChange={(_, newValue) => onValueChange(newValue)}
36
+ onInputChange={(_, newValue) => onValueChange(newValue)}
37
+ freeSolo
38
+ autoHighlight
39
+ sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}
40
+ disabled={readOnly}
41
+ size="small"
42
+ placeholder={entryFormat}
43
+ renderInput={(params) => (
44
+ <StandardTextField
45
+ isTabled={isTabled}
46
+ label={displayPrompt}
47
+ {...params}
48
+ InputProps={{
49
+ ...params.InputProps,
50
+ endAdornment: (
51
+ <>
52
+ {params.InputProps.endAdornment}
53
+ {displayUnit}
54
+ </>
55
+ )
56
+ }}
57
+ />
58
+ )}
59
+ />
60
+ {serverError ? (
61
+ <Typography variant="subtitle2">
62
+ There was an error fetching options from the terminology server.
63
+ </Typography>
64
+ ) : null}
65
+ </>
66
+ );
67
+ }
68
+
69
+ export default OpenChoiceSelectAnswerValueSetField;
@@ -15,52 +15,51 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import type { SyntheticEvent } from 'react';
19
18
  import React from 'react';
20
- import Autocomplete from '@mui/material/Autocomplete';
21
19
  import Grid from '@mui/material/Grid';
22
- import Typography from '@mui/material/Typography';
23
20
  import type { Coding, QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
24
21
  import { createEmptyQrItem } from '../../../utils/qrItem';
25
- import { StandardTextField } from '../Textfield.styles';
26
22
  import { FullWidthFormComponentBox } from '../../Box.styles';
27
23
  import useValueSetCodings from '../../../hooks/useValueSetCodings';
28
24
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
29
25
  import type {
30
26
  PropsWithIsRepeatedAttribute,
31
27
  PropsWithIsTabledAttribute,
28
+ PropsWithParentIsReadOnlyAttribute,
32
29
  PropsWithQrItemChangeHandler
33
30
  } from '../../../interfaces/renderProps.interface';
34
31
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
35
32
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
33
+ import OpenChoiceSelectAnswerValueSetField from './OpenChoiceSelectAnswerValueSetField';
34
+ import useReadOnly from '../../../hooks/useReadOnly';
36
35
 
37
36
  interface OpenChoiceSelectAnswerValueSetItemProps
38
37
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
39
38
  PropsWithIsRepeatedAttribute,
40
- PropsWithIsTabledAttribute {
39
+ PropsWithIsTabledAttribute,
40
+ PropsWithParentIsReadOnlyAttribute {
41
41
  qItem: QuestionnaireItem;
42
42
  qrItem: QuestionnaireResponseItem;
43
43
  }
44
44
 
45
45
  function OpenChoiceSelectAnswerValueSetItem(props: OpenChoiceSelectAnswerValueSetItemProps) {
46
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
46
+ const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
47
+
48
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
49
+ const { displayInstructions } = useRenderingExtensions(qItem);
47
50
 
48
51
  // Init input value
49
52
  const qrOpenChoice = qrItem ?? createEmptyQrItem(qItem);
50
- let valueSelect: Coding | undefined = undefined;
53
+ let valueSelect: Coding | null = null;
51
54
  if (qrOpenChoice['answer']) {
52
- valueSelect = qrOpenChoice['answer'][0].valueCoding;
55
+ valueSelect = qrOpenChoice['answer'][0].valueCoding ?? null;
53
56
  }
54
57
 
55
58
  // Get codings/options from valueSet
56
59
  const { codings, serverError } = useValueSetCodings(qItem);
57
60
 
58
- // Get additional rendering extensions
59
- const { displayUnit, displayPrompt, displayInstructions, readOnly, entryFormat } =
60
- useRenderingExtensions(qItem);
61
-
62
61
  // Event handlers
63
- function handleValueChange(_: SyntheticEvent<Element, Event>, newValue: Coding | string | null) {
62
+ function handleValueChange(newValue: Coding | string | null) {
64
63
  if (newValue) {
65
64
  if (typeof newValue === 'string') {
66
65
  onQrItemChange({
@@ -78,59 +77,37 @@ function OpenChoiceSelectAnswerValueSetItem(props: OpenChoiceSelectAnswerValueSe
78
77
  onQrItemChange(createEmptyQrItem(qItem));
79
78
  }
80
79
 
81
- const openChoiceSelectAnswerValueSet = (
82
- <>
83
- <Autocomplete
84
- id={qItem.id}
85
- value={valueSelect ?? null}
80
+ if (isRepeated) {
81
+ return (
82
+ <OpenChoiceSelectAnswerValueSetField
83
+ qItem={qItem}
86
84
  options={codings}
87
- getOptionLabel={(option) => (typeof option === 'string' ? option : `${option.display}`)}
88
- onChange={handleValueChange}
89
- onInputChange={(event, newValue) => handleValueChange(event, newValue)}
90
- freeSolo
91
- autoHighlight
92
- sx={{ maxWidth: !isTabled ? 280 : 3000, minWidth: 160, flexGrow: 1 }}
93
- disabled={readOnly}
94
- size="small"
95
- placeholder={entryFormat}
96
- renderInput={(params) => (
97
- <StandardTextField
98
- isTabled={isTabled}
99
- label={displayPrompt}
100
- {...params}
101
- InputProps={{
102
- ...params.InputProps,
103
- endAdornment: (
104
- <>
105
- {params.InputProps.endAdornment}
106
- {displayUnit}
107
- </>
108
- )
109
- }}
110
- />
111
- )}
85
+ valueSelect={valueSelect}
86
+ serverError={serverError}
87
+ isTabled={isTabled}
88
+ readOnly={readOnly}
89
+ onValueChange={handleValueChange}
112
90
  />
113
- {serverError ? (
114
- <Typography variant="subtitle2">
115
- There was an error fetching options from the terminology server.
116
- </Typography>
117
- ) : null}
118
- </>
119
- );
120
-
121
- if (isRepeated) {
122
- return <>{openChoiceSelectAnswerValueSet}</>;
91
+ );
123
92
  }
124
93
 
125
94
  return (
126
95
  <FullWidthFormComponentBox>
127
96
  <Grid container columnSpacing={6}>
128
97
  <Grid item xs={5}>
129
- <LabelWrapper qItem={qItem} />
98
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
130
99
  </Grid>
131
100
  <Grid item xs={7}>
132
- {openChoiceSelectAnswerValueSet}
133
- <DisplayInstructions displayInstructions={displayInstructions} />
101
+ <OpenChoiceSelectAnswerValueSetField
102
+ qItem={qItem}
103
+ options={codings}
104
+ valueSelect={valueSelect}
105
+ serverError={serverError}
106
+ isTabled={isTabled}
107
+ readOnly={readOnly}
108
+ onValueChange={handleValueChange}
109
+ />
110
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
134
111
  </Grid>
135
112
  </Grid>
136
113
  </FullWidthFormComponentBox>
@@ -23,13 +23,14 @@ import type { RepeatGroupSingle } from '../../../interfaces/repeatGroup.interfac
23
23
 
24
24
  interface AddItemButtonProps {
25
25
  repeatGroups: RepeatGroupSingle[];
26
+ readOnly: boolean;
26
27
  onAddItem: () => void;
27
28
  }
28
29
 
29
30
  function AddItemButton(props: AddItemButtonProps) {
30
- const { repeatGroups, onAddItem } = props;
31
+ const { repeatGroups, readOnly, onAddItem } = props;
31
32
 
32
- const isDisabled = repeatGroups[repeatGroups.length - 1].qrItem === null;
33
+ const isDisabled = repeatGroups[repeatGroups.length - 1].qrItem === null || readOnly;
33
34
 
34
35
  return (
35
36
  <Box display="flex" flexDirection="row-reverse">
@@ -24,13 +24,14 @@ import type { QuestionnaireResponseItem } from 'fhir/r4';
24
24
  interface DeleteItemButtonProps {
25
25
  nullableQrItem: QuestionnaireResponseItem | null;
26
26
  numOfRepeatGroups: number;
27
+ readOnly: boolean;
27
28
  onDeleteItem: () => void;
28
29
  }
29
30
 
30
31
  function DeleteItemButton(props: DeleteItemButtonProps) {
31
- const { nullableQrItem, numOfRepeatGroups, onDeleteItem } = props;
32
+ const { nullableQrItem, numOfRepeatGroups, readOnly, onDeleteItem } = props;
32
33
 
33
- const isDisabled = nullableQrItem === null || numOfRepeatGroups === 1;
34
+ const isDisabled = nullableQrItem === null || numOfRepeatGroups === 1 || readOnly;
34
35
 
35
36
  return (
36
37
  <RepeatDeleteTooltip className="repeat-group-delete" title="Delete item">
@@ -16,15 +16,16 @@
16
16
  */
17
17
 
18
18
  import React, { useState } from 'react';
19
- import type { PropsWithQrRepeatGroupChangeHandler } from '../../../interfaces/renderProps.interface';
19
+ import type {
20
+ PropsWithParentIsReadOnlyAttribute,
21
+ PropsWithQrRepeatGroupChangeHandler
22
+ } from '../../../interfaces/renderProps.interface';
20
23
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
21
24
  import useInitialiseRepeatGroups from '../../../hooks/useInitialiseRepeatGroups';
22
25
  import { QGroupContainerBox } from '../../Box.styles';
23
26
  import Card from '@mui/material/Card';
24
27
  import Collapse from '@mui/material/Collapse';
25
28
  import Divider from '@mui/material/Divider';
26
-
27
- import { QGroupHeadingTypography } from '../Typography.styles';
28
29
  import { TransitionGroup } from 'react-transition-group';
29
30
  import { createEmptyQrItem } from '../../../utils/qrItem';
30
31
  import { nanoid } from 'nanoid';
@@ -32,15 +33,21 @@ import RepeatGroupItem from './RepeatGroupItem';
32
33
  import AddItemButton from './AddItemButton';
33
34
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
34
35
  import cloneDeep from 'lodash.clonedeep';
36
+ import useReadOnly from '../../../hooks/useReadOnly';
37
+ import Typography from '@mui/material/Typography';
35
38
 
36
- interface RepeatGroupProps extends PropsWithQrRepeatGroupChangeHandler {
39
+ interface RepeatGroupProps
40
+ extends PropsWithQrRepeatGroupChangeHandler,
41
+ PropsWithParentIsReadOnlyAttribute {
37
42
  qItem: QuestionnaireItem;
38
43
  qrItems: QuestionnaireResponseItem[];
39
44
  groupCardElevation: number;
40
45
  }
41
46
 
42
47
  function RepeatGroup(props: RepeatGroupProps) {
43
- const { qItem, qrItems, groupCardElevation, onQrRepeatGroupChange } = props;
48
+ const { qItem, qrItems, groupCardElevation, parentIsReadOnly, onQrRepeatGroupChange } = props;
49
+
50
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
44
51
 
45
52
  const initialRepeatGroups = useInitialiseRepeatGroups(qItem, qrItems);
46
53
 
@@ -93,9 +100,9 @@ function RepeatGroup(props: RepeatGroupProps) {
93
100
  return (
94
101
  <QGroupContainerBox key={qItem.linkId} cardElevation={groupCardElevation} isRepeated={true}>
95
102
  <Card elevation={groupCardElevation} sx={{ p: 3, py: 2.5, mb: 3.5 }}>
96
- <QGroupHeadingTypography variant="h6">
97
- <LabelWrapper qItem={qItem} />
98
- </QGroupHeadingTypography>
103
+ <Typography variant="h6" color={readOnly ? 'text.secondary' : 'text.primary'}>
104
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
105
+ </Typography>
99
106
  <Divider sx={{ mt: 1, mb: 1.5 }} light />
100
107
  <TransitionGroup>
101
108
  {repeatGroups.map(({ nanoId, qrItem: nullableQrItem }, index) => {
@@ -112,6 +119,7 @@ function RepeatGroup(props: RepeatGroupProps) {
112
119
  nullableQrItem={nullableQrItem}
113
120
  numOfRepeatGroups={repeatGroups.length}
114
121
  groupCardElevation={groupCardElevation + 1}
122
+ parentIsReadOnly={parentIsReadOnly}
115
123
  onDeleteItem={() => handleDeleteItem(index)}
116
124
  onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
117
125
  />
@@ -120,7 +128,7 @@ function RepeatGroup(props: RepeatGroupProps) {
120
128
  })}
121
129
  </TransitionGroup>
122
130
 
123
- <AddItemButton repeatGroups={repeatGroups} onAddItem={handleAddItem} />
131
+ <AddItemButton repeatGroups={repeatGroups} readOnly={readOnly} onAddItem={handleAddItem} />
124
132
  </Card>
125
133
  </QGroupContainerBox>
126
134
  );
@@ -19,11 +19,17 @@ import React from 'react';
19
19
  import { RepeatGroupContainerStack } from '../RepeatItem/RepeatItem.styles';
20
20
  import Box from '@mui/material/Box';
21
21
  import GroupItem from '../GroupItem/GroupItem';
22
- import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
22
+ import type {
23
+ PropsWithParentIsReadOnlyAttribute,
24
+ PropsWithQrItemChangeHandler
25
+ } from '../../../interfaces/renderProps.interface';
23
26
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
24
27
  import DeleteItemButton from './DeleteItemButton';
28
+ import useReadOnly from '../../../hooks/useReadOnly';
25
29
 
26
- interface RepeatGroupItemProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
30
+ interface RepeatGroupItemProps
31
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
32
+ PropsWithParentIsReadOnlyAttribute {
27
33
  qItem: QuestionnaireItem;
28
34
  answeredQrItem: QuestionnaireResponseItem;
29
35
  nullableQrItem: QuestionnaireResponseItem | null;
@@ -39,10 +45,13 @@ function RepeatGroupItem(props: RepeatGroupItemProps) {
39
45
  nullableQrItem,
40
46
  numOfRepeatGroups,
41
47
  groupCardElevation,
48
+ parentIsReadOnly,
42
49
  onDeleteItem,
43
50
  onQrItemChange
44
51
  } = props;
45
52
 
53
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
54
+
46
55
  return (
47
56
  <RepeatGroupContainerStack direction="row" justifyContent="end">
48
57
  <Box sx={{ flexGrow: 1 }}>
@@ -50,6 +59,7 @@ function RepeatGroupItem(props: RepeatGroupItemProps) {
50
59
  qItem={qItem}
51
60
  qrItem={answeredQrItem}
52
61
  isRepeated={true}
62
+ parentIsReadOnly={parentIsReadOnly}
53
63
  groupCardElevation={groupCardElevation + 1}
54
64
  onQrItemChange={onQrItemChange}
55
65
  />
@@ -57,6 +67,7 @@ function RepeatGroupItem(props: RepeatGroupItemProps) {
57
67
  <DeleteItemButton
58
68
  nullableQrItem={nullableQrItem}
59
69
  numOfRepeatGroups={numOfRepeatGroups}
70
+ readOnly={readOnly}
60
71
  onDeleteItem={onDeleteItem}
61
72
  />
62
73
  </RepeatGroupContainerStack>
@@ -23,13 +23,14 @@ import type { RepeatAnswer } from '../../../interfaces/repeatItem.interface';
23
23
 
24
24
  interface AddItemButtonProps {
25
25
  repeatAnswers: RepeatAnswer[];
26
+ readOnly: boolean;
26
27
  onAddItem: () => void;
27
28
  }
28
29
 
29
30
  function AddItemButton(props: AddItemButtonProps) {
30
- const { repeatAnswers, onAddItem } = props;
31
+ const { repeatAnswers, readOnly, onAddItem } = props;
31
32
 
32
- const isDisabled = repeatAnswers[repeatAnswers.length - 1].answer === null;
33
+ const isDisabled = repeatAnswers[repeatAnswers.length - 1].answer === null || readOnly;
33
34
 
34
35
  return (
35
36
  <Box display="flex" flexDirection="row-reverse">
@@ -24,13 +24,14 @@ import type { QuestionnaireResponseItemAnswer } from 'fhir/r4';
24
24
  interface DeleteItemButtonProps {
25
25
  answer: QuestionnaireResponseItemAnswer | null;
26
26
  numOfRepeatAnswers: number;
27
+ readOnly: boolean;
27
28
  onDeleteAnswer: () => void;
28
29
  }
29
30
 
30
31
  function DeleteItemButton(props: DeleteItemButtonProps) {
31
- const { answer, numOfRepeatAnswers, onDeleteAnswer } = props;
32
+ const { answer, numOfRepeatAnswers, readOnly, onDeleteAnswer } = props;
32
33
 
33
- const isDisabled = answer === null || numOfRepeatAnswers === 1;
34
+ const isDisabled = answer === null || numOfRepeatAnswers === 1 || readOnly;
34
35
 
35
36
  return (
36
37
  <RepeatDeleteTooltip className="repeat-item-delete" title="Delete item">
@@ -24,10 +24,16 @@ import type {
24
24
  QuestionnaireResponseItem,
25
25
  QuestionnaireResponseItemAnswer
26
26
  } from 'fhir/r4';
27
- import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
27
+ import type {
28
+ PropsWithParentIsReadOnlyAttribute,
29
+ PropsWithQrItemChangeHandler
30
+ } from '../../../interfaces/renderProps.interface';
28
31
  import DeleteItemButton from './DeleteItemButton';
32
+ import useReadOnly from '../../../hooks/useReadOnly';
29
33
 
30
- interface RepeatFieldProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
34
+ interface RepeatFieldProps
35
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
36
+ PropsWithParentIsReadOnlyAttribute {
31
37
  qItem: QuestionnaireItem;
32
38
  qrItem: QuestionnaireResponseItem;
33
39
  answer: QuestionnaireResponseItemAnswer | null;
@@ -36,7 +42,17 @@ interface RepeatFieldProps extends PropsWithQrItemChangeHandler<QuestionnaireRes
36
42
  }
37
43
 
38
44
  function RepeatField(props: RepeatFieldProps) {
39
- const { qItem, qrItem, answer, numOfRepeatAnswers, onDeleteAnswer, onQrItemChange } = props;
45
+ const {
46
+ qItem,
47
+ qrItem,
48
+ answer,
49
+ numOfRepeatAnswers,
50
+ parentIsReadOnly,
51
+ onDeleteAnswer,
52
+ onQrItemChange
53
+ } = props;
54
+
55
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
40
56
 
41
57
  return (
42
58
  <RepeatItemContainerStack direction="row">
@@ -46,12 +62,14 @@ function RepeatField(props: RepeatFieldProps) {
46
62
  qrItem={qrItem}
47
63
  isRepeated={qItem.repeats ?? false}
48
64
  isTabled={false}
65
+ parentIsReadOnly={parentIsReadOnly}
49
66
  onQrItemChange={onQrItemChange}
50
67
  />
51
68
  </Box>
52
69
  <DeleteItemButton
53
70
  answer={answer}
54
71
  numOfRepeatAnswers={numOfRepeatAnswers}
72
+ readOnly={readOnly}
55
73
  onDeleteAnswer={onDeleteAnswer}
56
74
  />
57
75
  </RepeatItemContainerStack>