@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
@@ -16,7 +16,10 @@
16
16
  */
17
17
 
18
18
  import React, { useState } from 'react';
19
- import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
19
+ import type {
20
+ PropsWithParentIsReadOnlyAttribute,
21
+ PropsWithQrItemChangeHandler
22
+ } from '../../../interfaces/renderProps.interface';
20
23
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
21
24
  import { nanoid } from 'nanoid';
22
25
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
@@ -28,16 +31,19 @@ import RepeatField from './RepeatField';
28
31
  import Collapse from '@mui/material/Collapse';
29
32
  import useInitialiseRepeatAnswers from '../../../hooks/useInitialiseRepeatAnswers';
30
33
  import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
34
+ import useReadOnly from '../../../hooks/useReadOnly';
31
35
 
32
- interface RepeatItemProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
36
+ interface RepeatItemProps
37
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
38
+ PropsWithParentIsReadOnlyAttribute {
33
39
  qItem: QuestionnaireItem;
34
40
  qrItem: QuestionnaireResponseItem;
35
41
  }
36
42
 
37
43
  function RepeatItem(props: RepeatItemProps) {
38
- const { qItem, qrItem, onQrItemChange } = props;
44
+ const { qItem, qrItem, parentIsReadOnly, onQrItemChange } = props;
39
45
 
40
- // Get additional rendering extensions
46
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
41
47
  const { displayInstructions } = useRenderingExtensions(qItem);
42
48
 
43
49
  const initialRepeatAnswers = useInitialiseRepeatAnswers(qItem, qrItem);
@@ -84,7 +90,7 @@ function RepeatItem(props: RepeatItemProps) {
84
90
 
85
91
  return (
86
92
  <FullWidthFormComponentBox data-test="q-item-repeat-box">
87
- <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
93
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
88
94
  <TransitionGroup>
89
95
  {repeatAnswers.map(({ nanoId, answer }, index) => {
90
96
  const repeatAnswerQrItem = createEmptyQrItem(qItem);
@@ -99,6 +105,7 @@ function RepeatItem(props: RepeatItemProps) {
99
105
  qrItem={repeatAnswerQrItem}
100
106
  answer={answer}
101
107
  numOfRepeatAnswers={repeatAnswers.length}
108
+ parentIsReadOnly={parentIsReadOnly}
102
109
  onDeleteAnswer={() => handleDeleteItem(index)}
103
110
  onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
104
111
  />
@@ -108,7 +115,7 @@ function RepeatItem(props: RepeatItemProps) {
108
115
  </TransitionGroup>
109
116
  </ItemFieldGrid>
110
117
 
111
- <AddItemButton repeatAnswers={repeatAnswers} onAddItem={handleAddItem} />
118
+ <AddItemButton repeatAnswers={repeatAnswers} readOnly={readOnly} onAddItem={handleAddItem} />
112
119
  </FullWidthFormComponentBox>
113
120
  );
114
121
  }
@@ -20,22 +20,28 @@ import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
20
20
  import type {
21
21
  PropsWithIsRepeatedAttribute,
22
22
  PropsWithIsTabledAttribute,
23
- PropsWithQrItemChangeHandler
23
+ PropsWithParentIsReadOnlyAttribute,
24
+ PropsWithQrItemChangeHandler,
25
+ PropsWithTextShownAttribute
24
26
  } from '../../../interfaces/renderProps.interface';
25
27
  import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
26
28
  import SingleItemSwitcher from './SingleItemSwitcher';
27
29
  import useHidden from '../../../hooks/useHidden';
30
+ import useReadOnly from '../../../hooks/useReadOnly';
28
31
 
29
32
  interface SingleItemProps
30
33
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
31
34
  PropsWithIsRepeatedAttribute,
32
- PropsWithIsTabledAttribute {
35
+ PropsWithIsTabledAttribute,
36
+ PropsWithTextShownAttribute,
37
+ PropsWithParentIsReadOnlyAttribute {
33
38
  qItem: QuestionnaireItem;
34
39
  qrItem: QuestionnaireResponseItem;
35
40
  }
36
41
 
37
42
  function SingleItem(props: SingleItemProps) {
38
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
43
+ const { qItem, qrItem, isRepeated, isTabled, textShown, parentIsReadOnly, onQrItemChange } =
44
+ props;
39
45
 
40
46
  const updateEnableWhenItem = useQuestionnaireStore((state) => state.updateEnableWhenItem);
41
47
 
@@ -49,6 +55,7 @@ function SingleItem(props: SingleItemProps) {
49
55
  [updateEnableWhenItem, onQrItemChange, qItem.linkId]
50
56
  );
51
57
 
58
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
52
59
  const itemIsHidden = useHidden(qItem);
53
60
  if (itemIsHidden) {
54
61
  return null;
@@ -60,6 +67,8 @@ function SingleItem(props: SingleItemProps) {
60
67
  qrItem={qrItem}
61
68
  isRepeated={isRepeated}
62
69
  isTabled={isTabled}
70
+ textShown={textShown}
71
+ parentIsReadOnly={readOnly}
63
72
  onQrItemChange={handleQrItemChange}
64
73
  />
65
74
  );
@@ -23,7 +23,9 @@ import Typography from '@mui/material/Typography';
23
23
  import type {
24
24
  PropsWithIsRepeatedAttribute,
25
25
  PropsWithIsTabledAttribute,
26
- PropsWithQrItemChangeHandler
26
+ PropsWithParentIsReadOnlyAttribute,
27
+ PropsWithQrItemChangeHandler,
28
+ PropsWithTextShownAttribute
27
29
  } from '../../../interfaces/renderProps.interface';
28
30
  import StringItem from '../StringItem/StringItem';
29
31
  import BooleanItem from '../BooleanItem/BooleanItem';
@@ -39,13 +41,16 @@ import UrlItem from '../UrlItem/UrlItem';
39
41
  interface SingleItemSwitcherProps
40
42
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
41
43
  PropsWithIsRepeatedAttribute,
42
- PropsWithIsTabledAttribute {
44
+ PropsWithIsTabledAttribute,
45
+ PropsWithTextShownAttribute,
46
+ PropsWithParentIsReadOnlyAttribute {
43
47
  qItem: QuestionnaireItem;
44
48
  qrItem: QuestionnaireResponseItem;
45
49
  }
46
50
 
47
51
  function SingleItemSwitcher(props: SingleItemSwitcherProps) {
48
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
52
+ const { qItem, qrItem, isRepeated, isTabled, textShown, parentIsReadOnly, onQrItemChange } =
53
+ props;
49
54
 
50
55
  switch (qItem.type) {
51
56
  case 'string':
@@ -55,6 +60,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
55
60
  qrItem={qrItem}
56
61
  isRepeated={isRepeated}
57
62
  isTabled={isTabled}
63
+ parentIsReadOnly={parentIsReadOnly}
58
64
  onQrItemChange={onQrItemChange}
59
65
  />
60
66
  );
@@ -65,6 +71,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
65
71
  qrItem={qrItem}
66
72
  isRepeated={isRepeated}
67
73
  isTabled={isTabled}
74
+ parentIsReadOnly={parentIsReadOnly}
68
75
  onQrItemChange={onQrItemChange}
69
76
  />
70
77
  );
@@ -75,6 +82,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
75
82
  qrItem={qrItem}
76
83
  isRepeated={isRepeated}
77
84
  isTabled={isTabled}
85
+ parentIsReadOnly={parentIsReadOnly}
78
86
  onQrItemChange={onQrItemChange}
79
87
  />
80
88
  );
@@ -85,6 +93,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
85
93
  qrItem={qrItem}
86
94
  isRepeated={isRepeated}
87
95
  isTabled={isTabled}
96
+ parentIsReadOnly={parentIsReadOnly}
88
97
  onQrItemChange={onQrItemChange}
89
98
  />
90
99
  );
@@ -95,6 +104,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
95
104
  qrItem={qrItem}
96
105
  isRepeated={isRepeated}
97
106
  isTabled={isTabled}
107
+ parentIsReadOnly={parentIsReadOnly}
98
108
  onQrItemChange={onQrItemChange}
99
109
  />
100
110
  );
@@ -104,6 +114,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
104
114
  qItem={qItem}
105
115
  qrItem={qrItem}
106
116
  isRepeated={isRepeated}
117
+ parentIsReadOnly={parentIsReadOnly}
107
118
  onQrItemChange={onQrItemChange}
108
119
  />
109
120
  );
@@ -116,6 +127,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
116
127
  qrItem={qrItem}
117
128
  isRepeated={isRepeated}
118
129
  isTabled={isTabled}
130
+ parentIsReadOnly={parentIsReadOnly}
119
131
  onQrItemChange={onQrItemChange}
120
132
  />
121
133
  );
@@ -126,6 +138,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
126
138
  qrItem={qrItem}
127
139
  isRepeated={isRepeated}
128
140
  isTabled={isTabled}
141
+ parentIsReadOnly={parentIsReadOnly}
129
142
  onQrItemChange={onQrItemChange}
130
143
  />
131
144
  );
@@ -136,6 +149,8 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
136
149
  qrItem={qrItem}
137
150
  isRepeated={isRepeated}
138
151
  isTabled={isTabled}
152
+ textShown={textShown}
153
+ parentIsReadOnly={parentIsReadOnly}
139
154
  onQrItemChange={onQrItemChange}
140
155
  />
141
156
  );
@@ -146,6 +161,8 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
146
161
  qrItem={qrItem}
147
162
  isRepeated={isRepeated}
148
163
  isTabled={isTabled}
164
+ textShown={textShown}
165
+ parentIsReadOnly={parentIsReadOnly}
149
166
  onQrItemChange={onQrItemChange}
150
167
  />
151
168
  );
@@ -156,6 +173,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
156
173
  qrItem={qrItem}
157
174
  isRepeated={isRepeated}
158
175
  isTabled={isTabled}
176
+ parentIsReadOnly={parentIsReadOnly}
159
177
  onQrItemChange={onQrItemChange}
160
178
  />
161
179
  );
@@ -19,6 +19,7 @@ import React, { useCallback } from 'react';
19
19
  import type {
20
20
  PropsWithIsRepeatedAttribute,
21
21
  PropsWithIsTabledAttribute,
22
+ PropsWithParentIsReadOnlyAttribute,
22
23
  PropsWithQrItemChangeHandler
23
24
  } from '../../../interfaces/renderProps.interface';
24
25
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
@@ -32,23 +33,24 @@ import StringField from './StringField';
32
33
  import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
33
34
  import useStringCalculatedExpression from '../../../hooks/useStringCalculatedExpression';
34
35
  import useStringInput from '../../../hooks/useStringInput';
36
+ import useReadOnly from '../../../hooks/useReadOnly';
35
37
 
36
38
  interface StringItemProps
37
39
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
38
40
  PropsWithIsRepeatedAttribute,
39
- PropsWithIsTabledAttribute {
41
+ PropsWithIsTabledAttribute,
42
+ PropsWithParentIsReadOnlyAttribute {
40
43
  qItem: QuestionnaireItem;
41
44
  qrItem: QuestionnaireResponseItem;
42
45
  }
43
46
  function StringItem(props: StringItemProps) {
44
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
47
+ const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
45
48
 
46
- // Get additional rendering extensions
49
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
47
50
  const {
48
51
  displayUnit,
49
52
  displayPrompt,
50
53
  displayInstructions,
51
- readOnly,
52
54
  entryFormat,
53
55
  regexValidation,
54
56
  maxLength
@@ -111,7 +113,7 @@ function StringItem(props: StringItemProps) {
111
113
  }
112
114
  return (
113
115
  <FullWidthFormComponentBox data-test="q-item-string-box">
114
- <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
116
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
115
117
  <StringField
116
118
  linkId={qItem.linkId}
117
119
  input={input}
@@ -0,0 +1,50 @@
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 Button from '@mui/material/Button';
21
+ import AddIcon from '@mui/icons-material/Add';
22
+ import type { RepeatGroupSingle } from '../../../interfaces/repeatGroup.interface';
23
+
24
+ interface AddItemButtonProps {
25
+ repeatGroups: RepeatGroupSingle[];
26
+ readOnly: boolean;
27
+ onAddItem: () => void;
28
+ }
29
+
30
+ function AddRowButton(props: AddItemButtonProps) {
31
+ const { repeatGroups, readOnly, onAddItem } = props;
32
+
33
+ const isDisabled = repeatGroups[repeatGroups.length - 1].qrItem === null || readOnly;
34
+
35
+ return (
36
+ <Box display="flex" flexDirection="row-reverse">
37
+ <Button
38
+ variant="contained"
39
+ size="small"
40
+ startIcon={<AddIcon />}
41
+ disabled={isDisabled}
42
+ onClick={onAddItem}
43
+ data-test="button-add-repeat-item">
44
+ Add Row
45
+ </Button>
46
+ </Box>
47
+ );
48
+ }
49
+
50
+ export default AddRowButton;
@@ -26,13 +26,14 @@ import type { QuestionnaireResponseItem } from 'fhir/r4';
26
26
  interface DeleteRowButtonProps {
27
27
  nullableQrItem: QuestionnaireResponseItem | null;
28
28
  numOfRows: number;
29
+ readOnly: boolean;
29
30
  onDeleteItem: () => void;
30
31
  }
31
32
 
32
33
  function DeleteRowButton(props: DeleteRowButtonProps) {
33
- const { nullableQrItem, numOfRows, onDeleteItem } = props;
34
+ const { nullableQrItem, numOfRows, readOnly, onDeleteItem } = props;
34
35
 
35
- const isDisabled = nullableQrItem === null || numOfRows === 1;
36
+ const isDisabled = nullableQrItem === null || numOfRows === 1 || readOnly;
36
37
  return (
37
38
  <DeleteButtonTableCell>
38
39
  <Tooltip title="Delete item">
@@ -18,10 +18,8 @@
18
18
  import React, { useMemo, useState } from 'react';
19
19
 
20
20
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
21
- import Button from '@mui/material/Button';
22
21
  import Divider from '@mui/material/Divider';
23
22
  import Paper from '@mui/material/Paper';
24
- import Stack from '@mui/material/Stack';
25
23
  import Table from '@mui/material/Table';
26
24
  import TableBody from '@mui/material/TableBody';
27
25
  import TableCell from '@mui/material/TableCell';
@@ -29,28 +27,33 @@ import TableContainer from '@mui/material/TableContainer';
29
27
  import TableHead from '@mui/material/TableHead';
30
28
  import TableRow from '@mui/material/TableRow';
31
29
  import Typography from '@mui/material/Typography';
32
-
33
- import AddIcon from '@mui/icons-material/Add';
34
- import QItemGroupTableRow from './QItemGroupTableRow';
30
+ import GroupTableRow from './GroupTableRow';
35
31
  import { HeaderTableCell } from './Table.styles';
36
32
  import { QGroupContainerBox } from '../../Box.styles';
37
33
  import { mapQItemsIndex } from '../../../utils/mapItem';
38
- import type { PropsWithQrRepeatGroupChangeHandler } from '../../../interfaces/renderProps.interface';
34
+ import type {
35
+ PropsWithParentIsReadOnlyAttribute,
36
+ PropsWithQrRepeatGroupChangeHandler
37
+ } from '../../../interfaces/renderProps.interface';
39
38
  import useInitialiseGroupTable from '../../../hooks/useInitialiseGroupTable';
40
39
  import { nanoid } from 'nanoid';
41
40
  import { createEmptyQrItem } from '../../../utils/qrItem';
42
41
  import DeleteRowButton from './DeleteRowButton';
43
42
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
44
43
  import cloneDeep from 'lodash.clonedeep';
44
+ import AddRowButton from './AddRowButton';
45
+ import useReadOnly from '../../../hooks/useReadOnly';
45
46
 
46
- interface Props extends PropsWithQrRepeatGroupChangeHandler {
47
+ interface Props extends PropsWithQrRepeatGroupChangeHandler, PropsWithParentIsReadOnlyAttribute {
47
48
  qItem: QuestionnaireItem;
48
49
  qrItems: QuestionnaireResponseItem[];
49
50
  groupCardElevation: number;
50
51
  }
51
52
 
52
- function QItemGroupTable(props: Props) {
53
- const { qItem, qrItems, groupCardElevation, onQrRepeatGroupChange } = props;
53
+ function GroupTable(props: Props) {
54
+ const { qItem, qrItems, groupCardElevation, parentIsReadOnly, onQrRepeatGroupChange } = props;
55
+
56
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
54
57
 
55
58
  const initialisedGroupTables = useInitialiseGroupTable(qrItems);
56
59
 
@@ -119,8 +122,11 @@ function QItemGroupTable(props: Props) {
119
122
  <QGroupContainerBox cardElevation={groupCardElevation} isRepeated={false} py={3}>
120
123
  {groupCardElevation !== 1 ? (
121
124
  <>
122
- <Typography fontSize={13} variant="h6">
123
- <LabelWrapper qItem={qItem} />
125
+ <Typography
126
+ fontSize={13}
127
+ variant="h6"
128
+ color={readOnly ? 'text.secondary' : 'text.primary'}>
129
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
124
130
  </Typography>
125
131
  <Divider sx={{ my: 1 }} light />
126
132
  </>
@@ -128,15 +134,7 @@ function QItemGroupTable(props: Props) {
128
134
  <TableContainer component={Paper} elevation={groupCardElevation}>
129
135
  <Table>
130
136
  <caption>
131
- <Stack direction="row" justifyContent="end">
132
- <Button
133
- variant="contained"
134
- size="small"
135
- startIcon={<AddIcon />}
136
- onClick={handleAddRow}>
137
- Add Row
138
- </Button>
139
- </Stack>
137
+ <AddRowButton repeatGroups={tableRows} readOnly={readOnly} onAddItem={handleAddRow} />
140
138
  </caption>
141
139
  <TableHead>
142
140
  <TableRow>
@@ -155,15 +153,17 @@ function QItemGroupTable(props: Props) {
155
153
 
156
154
  return (
157
155
  <TableRow key={nanoId}>
158
- <QItemGroupTableRow
156
+ <GroupTableRow
159
157
  qItem={qItem}
160
158
  qrItem={answeredQrItem}
161
159
  qItemsIndexMap={qItemsIndexMap}
160
+ parentIsReadOnly={parentIsReadOnly}
162
161
  onQrItemChange={(newQrGroup) => handleRowChange(newQrGroup, index)}
163
162
  />
164
163
  <DeleteRowButton
165
164
  nullableQrItem={nullableQrItem}
166
165
  numOfRows={tableRows.length}
166
+ readOnly={readOnly}
167
167
  onDeleteItem={() => handleDeleteRow(index)}
168
168
  />
169
169
  </TableRow>
@@ -176,4 +176,4 @@ function QItemGroupTable(props: Props) {
176
176
  );
177
177
  }
178
178
 
179
- export default QItemGroupTable;
179
+ export default GroupTable;
@@ -22,15 +22,18 @@ import SingleItem from '../SingleItem/SingleItem';
22
22
  import { getQrItemsIndex } from '../../../utils/mapItem';
23
23
  import { StandardTableCell } from './Table.styles';
24
24
  import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
25
+ import type { PropsWithParentIsReadOnlyAttribute } from '../../../interfaces/renderProps.interface';
25
26
 
26
- interface Props extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
27
+ interface Props
28
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
29
+ PropsWithParentIsReadOnlyAttribute {
27
30
  qItem: QuestionnaireItem;
28
31
  qrItem: QuestionnaireResponseItem;
29
32
  qItemsIndexMap: Record<string, number>;
30
33
  }
31
34
 
32
- function QItemGroupTableRow(props: Props) {
33
- const { qItem, qrItem, qItemsIndexMap, onQrItemChange } = props;
35
+ function GroupTableRow(props: Props) {
36
+ const { qItem, qrItem, qItemsIndexMap, parentIsReadOnly, onQrItemChange } = props;
34
37
 
35
38
  const rowItems = qItem.item;
36
39
  const row = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);
@@ -65,6 +68,7 @@ function QItemGroupTableRow(props: Props) {
65
68
  qrItem={qrItem}
66
69
  isRepeated={true}
67
70
  isTabled={true}
71
+ parentIsReadOnly={parentIsReadOnly}
68
72
  onQrItemChange={handleQrRowItemChange}
69
73
  />
70
74
  </StandardTableCell>
@@ -74,4 +78,4 @@ function QItemGroupTableRow(props: Props) {
74
78
  );
75
79
  }
76
80
 
77
- export default QItemGroupTableRow;
81
+ export default GroupTableRow;
@@ -15,4 +15,4 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- export { default as GroupTable } from './QItemGroupTable';
18
+ export { default as GroupTable } from './GroupTable';
@@ -18,6 +18,7 @@
18
18
  import React, { useCallback } from 'react';
19
19
  import type {
20
20
  PropsWithIsRepeatedAttribute,
21
+ PropsWithParentIsReadOnlyAttribute,
21
22
  PropsWithQrItemChangeHandler
22
23
  } from '../../../interfaces/renderProps.interface';
23
24
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
@@ -31,23 +32,24 @@ import TextField from './TextField';
31
32
  import useStringCalculatedExpression from '../../../hooks/useStringCalculatedExpression';
32
33
  import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
33
34
  import useStringInput from '../../../hooks/useStringInput';
35
+ import useReadOnly from '../../../hooks/useReadOnly';
34
36
 
35
37
  interface TextItemProps
36
38
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
37
- PropsWithIsRepeatedAttribute {
39
+ PropsWithIsRepeatedAttribute,
40
+ PropsWithParentIsReadOnlyAttribute {
38
41
  qItem: QuestionnaireItem;
39
42
  qrItem: QuestionnaireResponseItem;
40
43
  }
41
44
 
42
45
  function TextItem(props: TextItemProps) {
43
- const { qItem, qrItem, isRepeated, onQrItemChange } = props;
46
+ const { qItem, qrItem, isRepeated, parentIsReadOnly, onQrItemChange } = props;
44
47
 
45
- // Get additional rendering extensions
48
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
46
49
  const {
47
50
  displayUnit,
48
51
  displayPrompt,
49
52
  displayInstructions,
50
- readOnly,
51
53
  entryFormat,
52
54
  regexValidation,
53
55
  maxLength
@@ -109,7 +111,7 @@ function TextItem(props: TextItemProps) {
109
111
  }
110
112
  return (
111
113
  <FullWidthFormComponentBox data-test="q-item-text-box">
112
- <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
114
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
113
115
  <TextField
114
116
  linkId={qItem.linkId}
115
117
  input={input}
@@ -19,6 +19,7 @@ import React from 'react';
19
19
  import type {
20
20
  PropsWithIsRepeatedAttribute,
21
21
  PropsWithIsTabledAttribute,
22
+ PropsWithParentIsReadOnlyAttribute,
22
23
  PropsWithQrItemChangeHandler
23
24
  } from '../../../interfaces/renderProps.interface';
24
25
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
@@ -29,21 +30,22 @@ import TimeField from './TimeField';
29
30
  import type { Dayjs } from 'dayjs';
30
31
  import dayjs from 'dayjs';
31
32
  import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
33
+ import useReadOnly from '../../../hooks/useReadOnly';
32
34
 
33
35
  interface TimeItemProps
34
36
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
35
37
  PropsWithIsRepeatedAttribute,
36
- PropsWithIsTabledAttribute {
38
+ PropsWithIsTabledAttribute,
39
+ PropsWithParentIsReadOnlyAttribute {
37
40
  qItem: QuestionnaireItem;
38
41
  qrItem: QuestionnaireResponseItem;
39
42
  }
40
43
 
41
44
  function TimeItem(props: TimeItemProps) {
42
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
45
+ const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
43
46
 
44
- // Get additional rendering extensions
45
- const { displayPrompt, displayInstructions, readOnly, entryFormat } =
46
- useRenderingExtensions(qItem);
47
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
48
+ const { displayPrompt, displayInstructions, entryFormat } = useRenderingExtensions(qItem);
47
49
 
48
50
  // Init input value
49
51
  let timeString: string | null = null;
@@ -77,7 +79,7 @@ function TimeItem(props: TimeItemProps) {
77
79
 
78
80
  return (
79
81
  <FullWidthFormComponentBox>
80
- <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
82
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
81
83
  <TimeField
82
84
  value={timeDayJs}
83
85
  displayPrompt={displayPrompt}
@@ -19,6 +19,7 @@ import React, { useCallback, useState } from 'react';
19
19
  import type {
20
20
  PropsWithIsRepeatedAttribute,
21
21
  PropsWithIsTabledAttribute,
22
+ PropsWithParentIsReadOnlyAttribute,
22
23
  PropsWithQrItemChangeHandler
23
24
  } from '../../../interfaces/renderProps.interface';
24
25
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
@@ -30,23 +31,24 @@ import { DEBOUNCE_DURATION } from '../../../utils/debounce';
30
31
  import { FullWidthFormComponentBox } from '../../Box.styles';
31
32
  import UrlField from './UrlField';
32
33
  import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
34
+ import useReadOnly from '../../../hooks/useReadOnly';
33
35
 
34
36
  interface UrlItemProps
35
37
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
36
38
  PropsWithIsRepeatedAttribute,
37
- PropsWithIsTabledAttribute {
39
+ PropsWithIsTabledAttribute,
40
+ PropsWithParentIsReadOnlyAttribute {
38
41
  qItem: QuestionnaireItem;
39
42
  qrItem: QuestionnaireResponseItem;
40
43
  }
41
44
  function UrlItem(props: UrlItemProps) {
42
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
45
+ const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
43
46
 
44
- // Get additional rendering extensions
47
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
45
48
  const {
46
49
  displayUnit,
47
50
  displayPrompt,
48
51
  displayInstructions,
49
- readOnly,
50
52
  entryFormat,
51
53
  regexValidation,
52
54
  maxLength
@@ -98,7 +100,7 @@ function UrlItem(props: UrlItemProps) {
98
100
  }
99
101
  return (
100
102
  <FullWidthFormComponentBox data-test="q-item-string-box">
101
- <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
103
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
102
104
  <UrlField
103
105
  linkId={qItem.linkId}
104
106
  input={input}
@@ -61,7 +61,7 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
61
61
  <Grid container spacing={2}>
62
62
  <TabContext value={currentTab.toString()}>
63
63
  <Grid item xs={12} md={3.5} lg={3} xl={2.75}>
64
- <FormBodyTabListWrapper qFormItems={qItems} currentTabIndex={currentTab} tabs={tabs} />
64
+ <FormBodyTabListWrapper topLevelItems={qItems} currentTabIndex={currentTab} tabs={tabs} />
65
65
  </Grid>
66
66
 
67
67
  <Grid item xs={12} md={8.5} lg={9} xl={9.25}>