@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
@@ -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 ItemFieldGrid from '../ItemParts/ItemFieldGrid';
29
30
  import DateTimeField from './DateTimeField';
30
31
  import type { Dayjs } from 'dayjs';
31
32
  import dayjs from 'dayjs';
33
+ import useReadOnly from '../../../hooks/useReadOnly';
32
34
 
33
35
  interface DateTimeItemProps
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 DateTimeItem(props: DateTimeItemProps) {
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 dateTimeString: string | null = null;
@@ -81,7 +83,7 @@ function DateTimeItem(props: DateTimeItemProps) {
81
83
 
82
84
  return (
83
85
  <FullWidthFormComponentBox data-test="q-item-date-time-box">
84
- <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
86
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
85
87
  <DateTimeField
86
88
  value={dateTimeDayJs}
87
89
  displayPrompt={displayPrompt}
@@ -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';
@@ -37,25 +38,26 @@ import {
37
38
  import { getDecimalPrecision } from '../../../utils/itemControl';
38
39
  import useDecimalCalculatedExpression from '../../../hooks/useDecimalCalculatedExpression';
39
40
  import useStringInput from '../../../hooks/useStringInput';
41
+ import useReadOnly from '../../../hooks/useReadOnly';
40
42
 
41
43
  interface DecimalItemProps
42
44
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
43
45
  PropsWithIsRepeatedAttribute,
44
- PropsWithIsTabledAttribute {
46
+ PropsWithIsTabledAttribute,
47
+ PropsWithParentIsReadOnlyAttribute {
45
48
  qItem: QuestionnaireItem;
46
49
  qrItem: QuestionnaireResponseItem;
47
50
  }
48
51
 
49
52
  function DecimalItem(props: DecimalItemProps) {
50
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
53
+ const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
51
54
 
52
- // Get additional rendering extensions
55
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
53
56
  const precision = getDecimalPrecision(qItem);
54
57
  const {
55
58
  displayUnit,
56
59
  displayPrompt,
57
60
  displayInstructions,
58
- readOnly,
59
61
  entryFormat,
60
62
  regexValidation,
61
63
  maxLength
@@ -132,7 +134,7 @@ function DecimalItem(props: DecimalItemProps) {
132
134
 
133
135
  return (
134
136
  <FullWidthFormComponentBox data-test="q-item-decimal-box">
135
- <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
137
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
136
138
  <DecimalField
137
139
  linkId={qItem.linkId}
138
140
  input={input}
@@ -21,14 +21,18 @@ import { DisplayInstructionsWrapper } from './DisplayInstructions.styles';
21
21
 
22
22
  interface DisplayInstructionsProps {
23
23
  displayInstructions: string;
24
+ readOnly: boolean;
24
25
  }
25
26
 
26
27
  const DisplayInstructions = memo(function DisplayInstructions(props: DisplayInstructionsProps) {
27
- const { displayInstructions } = props;
28
+ const { displayInstructions, readOnly } = props;
28
29
 
29
30
  return displayInstructions ? (
30
31
  <DisplayInstructionsWrapper>
31
- <Typography variant="caption" fontSize={10.5}>
32
+ <Typography
33
+ variant="caption"
34
+ fontSize={10.5}
35
+ color={readOnly ? 'text.secondary' : 'text.primary'}>
32
36
  {displayInstructions}
33
37
  </Typography>
34
38
  </DisplayInstructionsWrapper>
@@ -18,7 +18,7 @@
18
18
  import React, { memo } from 'react';
19
19
  import type { QuestionnaireItem } from 'fhir/r4';
20
20
  import { FullWidthFormComponentBox } from '../../Box.styles';
21
- import { isSpecificItemControl } from '../../../utils/itemControl';
21
+ import { isSpecificItemControl } from '../../../utils';
22
22
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
23
23
 
24
24
  interface DisplayItemProps {
@@ -35,7 +35,7 @@ const DisplayItem = memo(function DisplayItem(props: DisplayItemProps) {
35
35
 
36
36
  return (
37
37
  <FullWidthFormComponentBox>
38
- <LabelWrapper qItem={qItem} />
38
+ <LabelWrapper qItem={qItem} readOnly={false} />
39
39
  </FullWidthFormComponentBox>
40
40
  );
41
41
  });
@@ -17,7 +17,10 @@
17
17
 
18
18
  import React, { useMemo } from 'react';
19
19
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
20
- import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
20
+ import type {
21
+ PropsWithParentIsReadOnlyAttribute,
22
+ PropsWithQrItemChangeHandler
23
+ } from '../../../interfaces/renderProps.interface';
21
24
  import { createQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
22
25
  import useHidden from '../../../hooks/useHidden';
23
26
  import { QGroupContainerBox } from '../../Box.styles';
@@ -28,15 +31,18 @@ import Typography from '@mui/material/Typography';
28
31
  import { mapQItemsIndex } from '../../../utils/mapItem';
29
32
  import GridTable from './GridTable';
30
33
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
34
+ import useReadOnly from '../../../hooks/useReadOnly';
31
35
 
32
- interface GridGroupProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
36
+ interface GridGroupProps
37
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
38
+ PropsWithParentIsReadOnlyAttribute {
33
39
  qItem: QuestionnaireItem;
34
40
  qrItem: QuestionnaireResponseItem;
35
41
  groupCardElevation: number;
36
42
  }
37
43
 
38
44
  function GridGroup(props: GridGroupProps) {
39
- const { qItem, qrItem, groupCardElevation, onQrItemChange } = props;
45
+ const { qItem, qrItem, groupCardElevation, parentIsReadOnly, onQrItemChange } = props;
40
46
 
41
47
  const qRowItems = qItem.item;
42
48
  const qrGroup = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);
@@ -49,6 +55,7 @@ function GridGroup(props: GridGroupProps) {
49
55
  [qRowItems]
50
56
  );
51
57
 
58
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
52
59
  const itemIsHidden = useHidden(qItem);
53
60
  if (itemIsHidden) {
54
61
  return null;
@@ -73,8 +80,8 @@ function GridGroup(props: GridGroupProps) {
73
80
  return (
74
81
  <>
75
82
  <QGroupContainerBox cardElevation={groupCardElevation} isRepeated={false} py={3}>
76
- <Typography fontSize={13} variant="h6">
77
- <LabelWrapper qItem={qItem} />
83
+ <Typography fontSize={13} variant="h6" color={readOnly ? 'text.secondary' : 'text.primary'}>
84
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
78
85
  </Typography>
79
86
  <Divider sx={{ my: 1 }} light />
80
87
 
@@ -84,6 +91,7 @@ function GridGroup(props: GridGroupProps) {
84
91
  qrItems={qrRowItems}
85
92
  qItemsIndexMap={qItemsIndexMap}
86
93
  columnLabels={columnLabels}
94
+ parentIsReadOnly={parentIsReadOnly}
87
95
  onQrItemChange={handleRowChange}
88
96
  />
89
97
  </TableContainer>
@@ -18,6 +18,7 @@
18
18
  import React, { useMemo } from 'react';
19
19
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
20
20
  import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
21
+ import type { PropsWithParentIsReadOnlyAttribute } from '../../../interfaces/renderProps.interface';
21
22
  import { createQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
22
23
  import { GridAnswerTableCell, GridTextTableCell } from '../Tables/Table.styles';
23
24
  import SingleItem from '../SingleItem/SingleItem';
@@ -25,7 +26,9 @@ import { getQrItemsIndex, mapQItemsIndex } from '../../../utils/mapItem';
25
26
  import Typography from '@mui/material/Typography';
26
27
  import useHidden from '../../../hooks/useHidden';
27
28
 
28
- interface GridRowProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
29
+ interface GridRowProps
30
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
31
+ PropsWithParentIsReadOnlyAttribute {
29
32
  qItem: QuestionnaireItem;
30
33
  qrItem: QuestionnaireResponseItem;
31
34
  columnLabels: string[];
@@ -33,7 +36,7 @@ interface GridRowProps extends PropsWithQrItemChangeHandler<QuestionnaireRespons
33
36
  }
34
37
 
35
38
  function GridRow(props: GridRowProps) {
36
- const { qItem, qrItem, columnLabels, numOfColumns, onQrItemChange } = props;
39
+ const { qItem, qrItem, columnLabels, numOfColumns, parentIsReadOnly, onQrItemChange } = props;
37
40
 
38
41
  const rowQItems = qItem.item;
39
42
  const row = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);
@@ -82,6 +85,7 @@ function GridRow(props: GridRowProps) {
82
85
  qrItem={cellQrItem}
83
86
  isRepeated={true}
84
87
  isTabled={true}
88
+ parentIsReadOnly={parentIsReadOnly}
85
89
  onQrItemChange={handleQrRowItemChange}
86
90
  />
87
91
  </GridAnswerTableCell>
@@ -26,8 +26,11 @@ import GridRow from './GridRow';
26
26
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
27
27
  import { getQrItemsIndex } from '../../../utils/mapItem';
28
28
  import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
29
+ import type { PropsWithParentIsReadOnlyAttribute } from '../../../interfaces/renderProps.interface';
29
30
 
30
- interface GridTableProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
31
+ interface GridTableProps
32
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
33
+ PropsWithParentIsReadOnlyAttribute {
31
34
  qItems: QuestionnaireItem[];
32
35
  qrItems: QuestionnaireResponseItem[];
33
36
  qItemsIndexMap: Record<string, number>;
@@ -35,7 +38,7 @@ interface GridTableProps extends PropsWithQrItemChangeHandler<QuestionnaireRespo
35
38
  }
36
39
 
37
40
  function GridTable(props: GridTableProps) {
38
- const { qItems, qrItems, qItemsIndexMap, columnLabels, onQrItemChange } = props;
41
+ const { qItems, qrItems, qItemsIndexMap, columnLabels, parentIsReadOnly, onQrItemChange } = props;
39
42
 
40
43
  const qrItemsByIndex: (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] =
41
44
  getQrItemsIndex(qItems, qrItems, qItemsIndexMap);
@@ -68,6 +71,7 @@ function GridTable(props: GridTableProps) {
68
71
  qrItem={qrItem}
69
72
  columnLabels={columnLabels}
70
73
  numOfColumns={numOfColumns}
74
+ parentIsReadOnly={parentIsReadOnly}
71
75
  onQrItemChange={onQrItemChange}
72
76
  />
73
77
  </TableRow>
@@ -18,20 +18,21 @@
18
18
  import React, { memo } from 'react';
19
19
  import Box from '@mui/material/Box';
20
20
  import Divider from '@mui/material/Divider';
21
- import { QGroupHeadingTypography } from '../Typography.styles';
21
+ import Typography from '@mui/material/Typography';
22
22
  import type { PropsWithIsRepeatedAttribute } from '../../../interfaces/renderProps.interface';
23
23
  import type { QuestionnaireItem } from 'fhir/r4';
24
24
  import { getContextDisplays } from '../../../utils/tabs';
25
25
  import ContextDisplayItem from '../ItemParts/ContextDisplayItem';
26
- import LabelText from '../ItemParts/ItemLabelText';
26
+ import ItemLabelText from '../ItemParts/ItemLabelText';
27
27
 
28
28
  interface GroupHeadingProps extends PropsWithIsRepeatedAttribute {
29
29
  qItem: QuestionnaireItem;
30
+ readOnly: boolean;
30
31
  tabIsMarkedAsComplete?: boolean;
31
32
  }
32
33
 
33
34
  const GroupHeading = memo(function GroupHeading(props: GroupHeadingProps) {
34
- const { qItem, tabIsMarkedAsComplete, isRepeated } = props;
35
+ const { qItem, readOnly, tabIsMarkedAsComplete, isRepeated } = props;
35
36
 
36
37
  const contextDisplayItems = getContextDisplays(qItem);
37
38
 
@@ -39,12 +40,17 @@ const GroupHeading = memo(function GroupHeading(props: GroupHeadingProps) {
39
40
  return null;
40
41
  }
41
42
 
43
+ const isTabHeading = tabIsMarkedAsComplete !== undefined;
44
+
42
45
  return (
43
46
  <>
44
47
  <Box display="flex" alignItems="center" justifyContent="space-between">
45
- <QGroupHeadingTypography variant="h6" isTabHeading={tabIsMarkedAsComplete !== undefined}>
46
- <LabelText qItem={qItem} />
47
- </QGroupHeadingTypography>
48
+ <Typography
49
+ variant="h6"
50
+ fontSize={isTabHeading ? 16 : 15}
51
+ color={readOnly && !isTabHeading ? 'text.secondary' : 'text.primary'}>
52
+ <ItemLabelText qItem={qItem} />
53
+ </Typography>
48
54
 
49
55
  <Box display="flex" columnGap={0.5}>
50
56
  {contextDisplayItems.map((item) => {
@@ -22,6 +22,7 @@ import { createQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
22
22
  import { QGroupContainerBox } from '../../Box.styles';
23
23
  import type {
24
24
  PropsWithIsRepeatedAttribute,
25
+ PropsWithParentIsReadOnlyAttribute,
25
26
  PropsWithQrItemChangeHandler
26
27
  } from '../../../interfaces/renderProps.interface';
27
28
  import type { QrRepeatGroup } from '../../../interfaces/repeatGroup.interface';
@@ -31,17 +32,18 @@ import GroupHeading from './GroupHeading';
31
32
  import { GroupCard } from './GroupItem.styles';
32
33
  import NextTabButtonWrapper from './NextTabButtonWrapper';
33
34
  import GroupItemSwitcher from './GroupItemSwitcher';
35
+ import useReadOnly from '../../../hooks/useReadOnly';
34
36
 
35
37
  interface GroupItemProps
36
38
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
37
- PropsWithIsRepeatedAttribute {
39
+ PropsWithIsRepeatedAttribute,
40
+ PropsWithParentIsReadOnlyAttribute {
38
41
  qItem: QuestionnaireItem;
39
42
  qrItem: QuestionnaireResponseItem;
40
43
  groupCardElevation: number;
41
44
  tabIsMarkedAsComplete?: boolean;
42
45
  tabs?: Tabs;
43
46
  currentTabIndex?: number;
44
- goToNextTab?: (nextTabIndex: number) => unknown;
45
47
  }
46
48
 
47
49
  function GroupItem(props: GroupItemProps) {
@@ -53,11 +55,13 @@ function GroupItem(props: GroupItemProps) {
53
55
  tabIsMarkedAsComplete,
54
56
  tabs,
55
57
  currentTabIndex,
58
+ parentIsReadOnly,
56
59
  onQrItemChange
57
60
  } = props;
58
61
 
59
62
  const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);
60
63
 
64
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
61
65
  const itemIsHidden = useHidden(qItem);
62
66
  if (itemIsHidden) {
63
67
  return null;
@@ -96,6 +100,7 @@ function GroupItem(props: GroupItemProps) {
96
100
  <GroupCard elevation={groupCardElevation} isRepeated={isRepeated}>
97
101
  <GroupHeading
98
102
  qItem={qItem}
103
+ readOnly={readOnly}
99
104
  tabIsMarkedAsComplete={tabIsMarkedAsComplete}
100
105
  isRepeated={isRepeated}
101
106
  />
@@ -108,6 +113,7 @@ function GroupItem(props: GroupItemProps) {
108
113
  qItem={qItem}
109
114
  qrItemOrItems={qrItemOrItems}
110
115
  groupCardElevation={groupCardElevation}
116
+ parentIsReadOnly={readOnly}
111
117
  onQrItemChange={handleQrItemChange}
112
118
  onQrRepeatGroupChange={handleQrRepeatGroupChange}
113
119
  />
@@ -17,12 +17,13 @@
17
17
 
18
18
  import React from 'react';
19
19
  import type {
20
+ PropsWithParentIsReadOnlyAttribute,
20
21
  PropsWithQrItemChangeHandler,
21
22
  PropsWithQrRepeatGroupChangeHandler
22
23
  } from '../../../interfaces/renderProps.interface';
23
24
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
24
- import { isSpecificItemControl } from '../../../utils/itemControl';
25
- import QItemGroupTable from '../Tables/QItemGroupTable';
25
+ import { isSpecificItemControl } from '../../../utils';
26
+ import GroupTable from '../Tables/GroupTable';
26
27
  import RepeatGroup from '../RepeatGroup/RepeatGroup';
27
28
  import { isRepeatItemAndNotCheckbox } from '../../../utils/qItem';
28
29
  import RepeatItem from '../RepeatItem/RepeatItem';
@@ -33,14 +34,22 @@ import GridGroup from '../GridGroup/GridGroup';
33
34
 
34
35
  interface GroupItemSwitcherProps
35
36
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
36
- PropsWithQrRepeatGroupChangeHandler {
37
+ PropsWithQrRepeatGroupChangeHandler,
38
+ PropsWithParentIsReadOnlyAttribute {
37
39
  qItem: QuestionnaireItem;
38
40
  qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[];
39
41
  groupCardElevation: number;
40
42
  }
41
43
 
42
44
  function GroupItemSwitcher(props: GroupItemSwitcherProps) {
43
- const { qItem, qrItemOrItems, groupCardElevation, onQrItemChange, onQrRepeatGroupChange } = props;
45
+ const {
46
+ qItem,
47
+ qrItemOrItems,
48
+ groupCardElevation,
49
+ parentIsReadOnly,
50
+ onQrItemChange,
51
+ onQrRepeatGroupChange
52
+ } = props;
44
53
 
45
54
  const itemIsHidden = useHidden(qItem);
46
55
  if (itemIsHidden) {
@@ -60,10 +69,11 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
60
69
 
61
70
  if (isSpecificItemControl(qItem, 'gtable')) {
62
71
  return (
63
- <QItemGroupTable
72
+ <GroupTable
64
73
  qItem={qItem}
65
74
  qrItems={qrItems}
66
75
  groupCardElevation={groupCardElevation + 1}
76
+ parentIsReadOnly={parentIsReadOnly}
67
77
  onQrRepeatGroupChange={onQrRepeatGroupChange}
68
78
  />
69
79
  );
@@ -74,6 +84,7 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
74
84
  qItem={qItem}
75
85
  qrItems={qrItems}
76
86
  groupCardElevation={groupCardElevation + 1}
87
+ parentIsReadOnly={parentIsReadOnly}
77
88
  onQrRepeatGroupChange={onQrRepeatGroupChange}
78
89
  />
79
90
  );
@@ -88,6 +99,7 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
88
99
  qItem={qItem}
89
100
  qrItem={qrItem}
90
101
  groupCardElevation={groupCardElevation}
102
+ parentIsReadOnly={parentIsReadOnly}
91
103
  onQrItemChange={onQrItemChange}
92
104
  />
93
105
  );
@@ -100,10 +112,11 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
100
112
  // their qrItem array should always be empty
101
113
  if (isSpecificItemControl(qItem, 'gtable')) {
102
114
  return (
103
- <QItemGroupTable
115
+ <GroupTable
104
116
  qItem={qItem}
105
117
  qrItems={[]}
106
118
  groupCardElevation={groupCardElevation + 1}
119
+ parentIsReadOnly={parentIsReadOnly}
107
120
  onQrRepeatGroupChange={onQrRepeatGroupChange}
108
121
  />
109
122
  );
@@ -114,12 +127,20 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
114
127
  qItem={qItem}
115
128
  qrItems={[]}
116
129
  groupCardElevation={groupCardElevation + 1}
130
+ parentIsReadOnly={parentIsReadOnly}
117
131
  onQrRepeatGroupChange={onQrRepeatGroupChange}
118
132
  />
119
133
  );
120
134
  }
121
135
 
122
- return <RepeatItem qItem={qItem} qrItem={qrItem} onQrItemChange={onQrItemChange} />;
136
+ return (
137
+ <RepeatItem
138
+ qItem={qItem}
139
+ qrItem={qrItem}
140
+ parentIsReadOnly={parentIsReadOnly}
141
+ onQrItemChange={onQrItemChange}
142
+ />
143
+ );
123
144
  }
124
145
 
125
146
  // if qItem is not a repeating question or is a checkbox
@@ -130,18 +151,20 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
130
151
  qrItem={qrItem}
131
152
  isRepeated={false}
132
153
  groupCardElevation={groupCardElevation + 1}
154
+ parentIsReadOnly={parentIsReadOnly}
133
155
  onQrItemChange={onQrItemChange}
134
156
  />
135
157
  );
136
158
  }
137
159
 
138
- // Defaults to a normal QItemSwitcher
160
+ // Defaults to a single, non-group item
139
161
  return (
140
162
  <SingleItem
141
163
  qItem={qItem}
142
164
  qrItem={qrItem}
143
165
  isRepeated={false}
144
166
  isTabled={false}
167
+ parentIsReadOnly={parentIsReadOnly}
145
168
  onQrItemChange={onQrItemChange}
146
169
  />
147
170
  );
@@ -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';
@@ -33,24 +34,25 @@ import useIntegerCalculatedExpression from '../../../hooks/useIntegerCalculatedE
33
34
  import { parseValidInteger } from '../../../utils/parseInputs';
34
35
  import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
35
36
  import useNumberInput from '../../../hooks/useNumberInput';
37
+ import useReadOnly from '../../../hooks/useReadOnly';
36
38
 
37
39
  interface IntegerItemProps
38
40
  extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
39
41
  PropsWithIsRepeatedAttribute,
40
- PropsWithIsTabledAttribute {
42
+ PropsWithIsTabledAttribute,
43
+ PropsWithParentIsReadOnlyAttribute {
41
44
  qItem: QuestionnaireItem;
42
45
  qrItem: QuestionnaireResponseItem;
43
46
  }
44
47
 
45
48
  function IntegerItem(props: IntegerItemProps) {
46
- const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
49
+ const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
47
50
 
48
- // Get additional rendering extensions
51
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
49
52
  const {
50
53
  displayUnit,
51
54
  displayPrompt,
52
55
  displayInstructions,
53
- readOnly,
54
56
  entryFormat,
55
57
  regexValidation,
56
58
  maxLength
@@ -120,7 +122,7 @@ function IntegerItem(props: IntegerItemProps) {
120
122
 
121
123
  return (
122
124
  <FullWidthFormComponentBox data-test="q-item-integer-box">
123
- <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
125
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
124
126
  <IntegerField
125
127
  linkId={qItem.linkId}
126
128
  value={value}
@@ -17,17 +17,12 @@
17
17
 
18
18
  import FormGroup from '@mui/material/FormGroup';
19
19
  import RadioGroup from '@mui/material/RadioGroup';
20
- import Typography from '@mui/material/Typography';
21
20
  import { styled } from '@mui/material/styles';
22
21
 
23
- export const QFormGroup = styled(FormGroup)(() => ({
22
+ export const StyledFormGroup = styled(FormGroup)(() => ({
24
23
  marginBottom: 4
25
24
  }));
26
25
 
27
- export const QRadioGroup = styled(RadioGroup)(() => ({
26
+ export const StyledRadioGroup = styled(RadioGroup)(() => ({
28
27
  marginBottom: 4
29
28
  }));
30
-
31
- export const QItemTypography = styled(Typography)(() => ({
32
- marginTop: 4
33
- }));
@@ -26,19 +26,20 @@ interface ItemFieldGridProps {
26
26
  children: ReactNode;
27
27
  qItem: QuestionnaireItem;
28
28
  displayInstructions: string;
29
+ readOnly: boolean;
29
30
  }
30
31
 
31
32
  function ItemFieldGrid(props: ItemFieldGridProps) {
32
- const { children, qItem, displayInstructions } = props;
33
+ const { children, qItem, displayInstructions, readOnly } = props;
33
34
 
34
35
  return (
35
36
  <Grid container columnSpacing={6}>
36
37
  <Grid item xs={5}>
37
- <LabelWrapper qItem={qItem} />
38
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
38
39
  </Grid>
39
40
  <Grid item xs={7}>
40
41
  {children}
41
- <DisplayInstructions displayInstructions={displayInstructions} />
42
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
42
43
  </Grid>
43
44
  </Grid>
44
45
  );
@@ -18,17 +18,18 @@
18
18
  import React, { memo } from 'react';
19
19
  import type { QuestionnaireItem } from 'fhir/r4';
20
20
  import { getMarkdownString, getXHtmlString } from '../../../utils/itemControl';
21
- import { QItemTypography } from '../Item.styles';
22
21
  import parse from 'html-react-parser';
23
22
  import Box from '@mui/material/Box';
24
23
  import ReactMarkdown from 'react-markdown';
24
+ import Typography from '@mui/material/Typography';
25
25
 
26
26
  interface ItemLabelTextProps {
27
27
  qItem: QuestionnaireItem;
28
+ readOnly?: boolean;
28
29
  }
29
30
 
30
31
  const ItemLabelText = memo(function ItemLabelText(props: ItemLabelTextProps) {
31
- const { qItem } = props;
32
+ const { qItem, readOnly } = props;
32
33
 
33
34
  // parse xHTML if found
34
35
  const xHtmlString = getXHtmlString(qItem);
@@ -47,12 +48,16 @@ const ItemLabelText = memo(function ItemLabelText(props: ItemLabelTextProps) {
47
48
  );
48
49
  }
49
50
 
50
- // parse regular text
51
51
  if (qItem.type === 'group') {
52
52
  return <>{qItem.text}</>;
53
- } else {
54
- return <QItemTypography>{qItem.text}</QItemTypography>;
55
53
  }
54
+
55
+ // parse regular text
56
+ return (
57
+ <Typography color={readOnly ? 'text.secondary' : 'text.primary'} sx={{ mt: 0.5 }}>
58
+ {qItem.text}
59
+ </Typography>
60
+ );
56
61
  });
57
62
 
58
63
  export default ItemLabelText;
@@ -24,16 +24,17 @@ import ItemLabelText from './ItemLabelText';
24
24
 
25
25
  interface LabelWrapperProps {
26
26
  qItem: QuestionnaireItem;
27
+ readOnly: boolean;
27
28
  }
28
29
 
29
30
  function ItemLabelWrapper(props: LabelWrapperProps) {
30
- const { qItem } = props;
31
+ const { qItem, readOnly } = props;
31
32
 
32
33
  const contextDisplayItems = getContextDisplays(qItem);
33
34
 
34
35
  return (
35
36
  <Box display="flex" alignItems="center" justifyContent="space-between">
36
- <ItemLabelText qItem={qItem} />
37
+ <ItemLabelText qItem={qItem} readOnly={readOnly} />
37
38
 
38
39
  <Box display="flex" columnGap={0.5}>
39
40
  {contextDisplayItems.map((item) => {