@aehrc/smart-forms-renderer 0.8.0 → 0.9.0

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 (477) 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 +3 -3
  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 +3 -3
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +6 -5
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +15 -14
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +3 -3
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +15 -14
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +3 -3
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +8 -8
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +3 -3
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +6 -6
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +3 -3
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +6 -5
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +1 -0
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +2 -2
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +3 -3
  28. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +8 -7
  29. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  30. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +1 -0
  31. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +2 -2
  32. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
  33. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +3 -3
  34. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +8 -7
  35. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
  36. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.d.ts +18 -0
  37. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js +31 -0
  38. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js.map +1 -0
  39. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.d.ts +9 -0
  40. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js +68 -0
  41. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js.map +1 -0
  42. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.d.ts +9 -0
  43. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js +75 -0
  44. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js.map +1 -0
  45. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.d.ts +9 -0
  46. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js +75 -0
  47. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js.map +1 -0
  48. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.d.ts +18 -0
  49. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js +33 -0
  50. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js.map +1 -0
  51. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.d.ts +11 -0
  52. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js +55 -0
  53. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js.map +1 -0
  54. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.d.ts +9 -0
  55. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js +13 -0
  56. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js.map +1 -0
  57. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.d.ts +5 -0
  58. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js +20 -0
  59. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js.map +1 -0
  60. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.d.ts +5 -0
  61. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js +27 -0
  62. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js.map +1 -0
  63. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.d.ts +1 -0
  64. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js +18 -0
  65. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js.map +1 -0
  66. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.d.ts +1 -0
  67. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js +18 -0
  68. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js.map +1 -0
  69. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.d.ts +9 -0
  70. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js +121 -0
  71. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js.map +1 -0
  72. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.d.ts +9 -0
  73. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js +71 -0
  74. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js.map +1 -0
  75. package/lib/components/FormComponents/CustomDateItem/index.d.ts +1 -0
  76. package/lib/components/FormComponents/CustomDateItem/index.js +18 -0
  77. package/lib/components/FormComponents/CustomDateItem/index.js.map +1 -0
  78. package/lib/components/FormComponents/DateItem/DateItem.d.ts +3 -3
  79. package/lib/components/FormComponents/DateItem/DateItem.js +5 -4
  80. package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -1
  81. package/lib/components/FormComponents/DateItem/DatePicker.d.ts +2 -0
  82. package/lib/components/FormComponents/DateItem/DatePicker.js +42 -0
  83. package/lib/components/FormComponents/DateItem/DatePicker.js.map +1 -0
  84. package/lib/components/FormComponents/DateItem/DatePickerField.d.ts +8 -0
  85. package/lib/components/FormComponents/DateItem/DatePickerField.js +24 -0
  86. package/lib/components/FormComponents/DateItem/DatePickerField.js.map +1 -0
  87. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +3 -3
  88. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +5 -4
  89. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -1
  90. package/lib/components/FormComponents/DecimalItem/DecimalItem.d.ts +3 -3
  91. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +7 -7
  92. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  93. package/lib/components/FormComponents/DisplayItem/DisplayBox.d.ts +0 -0
  94. package/lib/components/FormComponents/DisplayItem/DisplayBox.js +2 -0
  95. package/lib/components/FormComponents/DisplayItem/DisplayBox.js.map +1 -0
  96. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.d.ts +4 -0
  97. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js +35 -0
  98. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js.map +1 -0
  99. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +3 -1
  100. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js +2 -2
  101. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -1
  102. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +2 -7
  103. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js +0 -1
  104. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -1
  105. package/lib/components/FormComponents/DisplayItem/DisplayItem.js +2 -2
  106. package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -1
  107. package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +3 -3
  108. package/lib/components/FormComponents/GridGroup/GridGroup.js +16 -9
  109. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
  110. package/lib/components/FormComponents/GridGroup/GridRow.d.ts +3 -3
  111. package/lib/components/FormComponents/GridGroup/GridRow.js +4 -4
  112. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  113. package/lib/components/FormComponents/GridGroup/GridTable.d.ts +3 -2
  114. package/lib/components/FormComponents/GridGroup/GridTable.js +9 -4
  115. package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
  116. package/lib/components/FormComponents/GridGroup/index.d.ts +1 -0
  117. package/lib/components/FormComponents/GridGroup/index.js +18 -0
  118. package/lib/components/FormComponents/GridGroup/index.js.map +1 -0
  119. package/lib/components/FormComponents/GroupItem/GroupHeading.d.ts +1 -0
  120. package/lib/components/FormComponents/GroupItem/GroupHeading.js +6 -5
  121. package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -1
  122. package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +3 -4
  123. package/lib/components/FormComponents/GroupItem/GroupItem.js +7 -5
  124. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  125. package/lib/components/FormComponents/GroupItem/GroupItem.styles.d.ts +2 -6
  126. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +3 -3
  127. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +11 -12
  128. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
  129. package/lib/components/FormComponents/IntegerItem/IntegerItem.d.ts +3 -3
  130. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +7 -7
  131. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  132. package/lib/components/FormComponents/IntegerItem/SliderItem.d.ts +9 -0
  133. package/lib/components/FormComponents/IntegerItem/SliderItem.js +75 -0
  134. package/lib/components/FormComponents/IntegerItem/SliderItem.js.map +1 -0
  135. package/lib/components/FormComponents/Item.styles.d.ts +0 -4
  136. package/lib/components/FormComponents/Item.styles.js +0 -4
  137. package/lib/components/FormComponents/Item.styles.js.map +1 -1
  138. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +2 -2
  139. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -1
  140. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +3 -2
  141. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +3 -3
  142. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -1
  143. package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +1 -0
  144. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +4 -6
  145. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -1
  146. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +1 -0
  147. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +2 -2
  148. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -1
  149. package/lib/components/FormComponents/Lists.styles.d.ts +2 -9
  150. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +3 -2
  151. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +2 -3
  152. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
  153. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +3 -3
  154. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +8 -7
  155. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
  156. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  157. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +16 -15
  158. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  159. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +3 -3
  160. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +6 -6
  161. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  162. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +3 -3
  163. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +7 -6
  164. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
  165. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +3 -2
  166. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +2 -2
  167. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
  168. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +3 -3
  169. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +7 -6
  170. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
  171. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +3 -2
  172. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +2 -2
  173. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
  174. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +3 -3
  175. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +8 -7
  176. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
  177. package/lib/components/FormComponents/RepeatGroup/AddItemButton.d.ts +1 -0
  178. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +2 -2
  179. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -1
  180. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +1 -0
  181. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +2 -2
  182. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -1
  183. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
  184. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +20 -7
  185. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  186. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
  187. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +5 -3
  188. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
  189. package/lib/components/FormComponents/RepeatItem/AddItemButton.d.ts +1 -0
  190. package/lib/components/FormComponents/RepeatItem/AddItemButton.js +2 -2
  191. package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -1
  192. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +1 -0
  193. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js +2 -2
  194. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js.map +1 -1
  195. package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +3 -3
  196. package/lib/components/FormComponents/RepeatItem/RepeatField.js +5 -3
  197. package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
  198. package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +4 -3
  199. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +15 -5
  200. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
  201. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +4 -18
  202. package/lib/components/FormComponents/RepeatItem/index.d.ts +1 -0
  203. package/lib/components/FormComponents/RepeatItem/index.js +18 -0
  204. package/lib/components/FormComponents/RepeatItem/index.js.map +1 -0
  205. package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +3 -3
  206. package/lib/components/FormComponents/SingleItem/SingleItem.js +4 -2
  207. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  208. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +3 -3
  209. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +20 -15
  210. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
  211. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.d.ts +4 -0
  212. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js +35 -0
  213. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js.map +1 -0
  214. package/lib/components/FormComponents/SliderItem/Slider.styles.d.ts +6 -0
  215. package/lib/components/FormComponents/SliderItem/Slider.styles.js +33 -0
  216. package/lib/components/FormComponents/SliderItem/Slider.styles.js.map +1 -0
  217. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.d.ts +8 -0
  218. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js +28 -0
  219. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js.map +1 -0
  220. package/lib/components/FormComponents/SliderItem/SliderField.d.ts +16 -0
  221. package/lib/components/FormComponents/SliderItem/SliderField.js +41 -0
  222. package/lib/components/FormComponents/SliderItem/SliderField.js.map +1 -0
  223. package/lib/components/FormComponents/SliderItem/SliderItem.d.ts +9 -0
  224. package/lib/components/FormComponents/SliderItem/SliderItem.js +56 -0
  225. package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -0
  226. package/lib/components/FormComponents/SliderItem/SliderLabels.d.ts +7 -0
  227. package/lib/components/FormComponents/SliderItem/SliderLabels.js +32 -0
  228. package/lib/components/FormComponents/SliderItem/SliderLabels.js.map +1 -0
  229. package/lib/components/FormComponents/StringItem/StringItem.d.ts +3 -3
  230. package/lib/components/FormComponents/StringItem/StringItem.js +5 -4
  231. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
  232. package/lib/components/FormComponents/Tables/AddRowButton.d.ts +1 -0
  233. package/lib/components/FormComponents/Tables/AddRowButton.js +2 -2
  234. package/lib/components/FormComponents/Tables/AddRowButton.js.map +1 -1
  235. package/lib/components/FormComponents/Tables/DeleteRowButton.d.ts +1 -0
  236. package/lib/components/FormComponents/Tables/DeleteRowButton.js +2 -2
  237. package/lib/components/FormComponents/Tables/DeleteRowButton.js.map +1 -1
  238. package/lib/components/FormComponents/Tables/GroupTable.d.ts +4 -3
  239. package/lib/components/FormComponents/Tables/GroupTable.js +25 -6
  240. package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
  241. package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +3 -3
  242. package/lib/components/FormComponents/Tables/GroupTableRow.js +4 -4
  243. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
  244. package/lib/components/FormComponents/Tables/QItemGroupTable.js +5 -7
  245. package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -1
  246. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +2 -2
  247. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -1
  248. package/lib/components/FormComponents/TextItem/TextItem.d.ts +3 -3
  249. package/lib/components/FormComponents/TextItem/TextItem.js +5 -4
  250. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
  251. package/lib/components/FormComponents/TimeItem/TimeItem.d.ts +3 -3
  252. package/lib/components/FormComponents/TimeItem/TimeItem.js +5 -4
  253. package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
  254. package/lib/components/FormComponents/UrlItem/UrlItem.d.ts +3 -3
  255. package/lib/components/FormComponents/UrlItem/UrlItem.js +5 -4
  256. package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
  257. package/lib/components/FormComponents/index.d.ts +3 -0
  258. package/lib/components/FormComponents/index.js +3 -0
  259. package/lib/components/FormComponents/index.js.map +1 -1
  260. package/lib/components/Lists.styles.d.ts +2 -9
  261. package/lib/components/Renderer/BaseRenderer.js +3 -5
  262. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  263. package/lib/components/Renderer/FormBodyCollapsible.d.ts +2 -2
  264. package/lib/components/Renderer/FormBodyCollapsible.js +6 -5
  265. package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
  266. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.d.ts +2 -2
  267. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js.map +1 -1
  268. package/lib/components/Renderer/FormBodyTabbed.d.ts +2 -2
  269. package/lib/components/Renderer/FormBodyTabbed.js +6 -5
  270. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  271. package/lib/components/Renderer/FormTopLevelItem.d.ts +2 -2
  272. package/lib/components/Renderer/FormTopLevelItem.js +9 -5
  273. package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
  274. package/lib/components/Tabs/FormBodySingleTab.js +1 -1
  275. package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
  276. package/lib/components/Tabs/ShowCompletedTabsSection.js +1 -1
  277. package/lib/components/Tabs/ShowCompletedTabsSection.js.map +1 -1
  278. package/lib/hooks/useDateSeparatorValidation.d.ts +2 -0
  279. package/lib/hooks/useDateSeparatorValidation.js +25 -0
  280. package/lib/hooks/useDateSeparatorValidation.js.map +1 -0
  281. package/lib/hooks/useDateValidation.d.ts +2 -0
  282. package/lib/hooks/useDateValidation.js +61 -0
  283. package/lib/hooks/useDateValidation.js.map +1 -0
  284. package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -1
  285. package/lib/hooks/useDecimalCalculatedExpression.js +3 -3
  286. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -1
  287. package/lib/hooks/useInitialiseRepeatAnswers.d.ts +1 -1
  288. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
  289. package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -1
  290. package/lib/hooks/useIntegerCalculatedExpression.js +3 -3
  291. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -1
  292. package/lib/hooks/useMinimalStringCalculatedExpression.d.ts +11 -0
  293. package/lib/hooks/useMinimalStringCalculatedExpression.js +37 -0
  294. package/lib/hooks/useMinimalStringCalculatedExpression.js.map +1 -0
  295. package/lib/hooks/useReadOnly.d.ts +3 -0
  296. package/lib/hooks/useReadOnly.js +26 -0
  297. package/lib/hooks/useReadOnly.js.map +1 -0
  298. package/lib/hooks/useSliderExtensions.d.ts +10 -0
  299. package/lib/hooks/useSliderExtensions.js +37 -0
  300. package/lib/hooks/useSliderExtensions.js.map +1 -0
  301. package/lib/hooks/useTerminologyServerQuery.js +0 -1
  302. package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
  303. package/lib/index.d.ts +3 -3
  304. package/lib/index.js +15 -6
  305. package/lib/index.js.map +1 -1
  306. package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
  307. package/lib/interfaces/index.d.ts +2 -0
  308. package/lib/interfaces/index.js +18 -0
  309. package/lib/interfaces/index.js.map +1 -0
  310. package/lib/interfaces/questionnaireStore.interface.d.ts +1 -0
  311. package/lib/interfaces/renderProps.interface.d.ts +7 -3
  312. package/lib/stores/useQuestionnaireStore.d.ts +1 -0
  313. package/lib/stores/useQuestionnaireStore.js +28 -12
  314. package/lib/stores/useQuestionnaireStore.js.map +1 -1
  315. package/lib/test.d.ts +4 -0
  316. package/lib/test.js +18 -0
  317. package/lib/test.js.map +1 -0
  318. package/lib/theme/customGlobalStyles.js +0 -4
  319. package/lib/theme/customGlobalStyles.js.map +1 -1
  320. package/lib/theme/overrides/Typography.d.ts +13 -0
  321. package/lib/theme/overrides/Typography.js +31 -0
  322. package/lib/theme/overrides/Typography.js.map +1 -0
  323. package/lib/theme/typography.d.ts +0 -2
  324. package/lib/theme/typography.js +3 -5
  325. package/lib/theme/typography.js.map +1 -1
  326. package/lib/utils/calculatedExpression.d.ts +17 -1
  327. package/lib/utils/calculatedExpression.js +71 -20
  328. package/lib/utils/calculatedExpression.js.map +1 -1
  329. package/lib/utils/dayjsExtend.d.ts +1 -0
  330. package/lib/utils/dayjsExtend.js +22 -0
  331. package/lib/utils/dayjsExtend.js.map +1 -0
  332. package/lib/utils/enableWhenExpression.d.ts +5 -1
  333. package/lib/utils/enableWhenExpression.js +26 -21
  334. package/lib/utils/enableWhenExpression.js.map +1 -1
  335. package/lib/utils/fhirpath.d.ts +3 -1
  336. package/lib/utils/fhirpath.js +25 -15
  337. package/lib/utils/fhirpath.js.map +1 -1
  338. package/lib/utils/index.d.ts +1 -0
  339. package/lib/utils/index.js +1 -0
  340. package/lib/utils/index.js.map +1 -1
  341. package/lib/utils/initialiseForm.d.ts +2 -0
  342. package/lib/utils/initialiseForm.js +13 -5
  343. package/lib/utils/initialiseForm.js.map +1 -1
  344. package/lib/utils/itemControl.d.ts +12 -0
  345. package/lib/utils/itemControl.js +30 -0
  346. package/lib/utils/itemControl.js.map +1 -1
  347. package/lib/utils/launchContext.d.ts +0 -0
  348. package/lib/utils/launchContext.js +2 -0
  349. package/lib/utils/launchContext.js.map +1 -0
  350. package/lib/utils/mapItem.d.ts +1 -1
  351. package/lib/utils/qrItem.d.ts +1 -7
  352. package/lib/utils/qrItem.js +1 -12
  353. package/lib/utils/qrItem.js.map +1 -1
  354. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -2
  355. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
  356. package/lib/utils/removeHidden.js +2 -1
  357. package/lib/utils/removeHidden.js.map +1 -1
  358. package/lib/utils/repopulateIntoResponse.js +90 -29
  359. package/lib/utils/repopulateIntoResponse.js.map +1 -1
  360. package/lib/utils/repopulateItems.d.ts +14 -1
  361. package/lib/utils/repopulateItems.js +251 -70
  362. package/lib/utils/repopulateItems.js.map +1 -1
  363. package/lib/utils/repopulateRepeatGroup.js +9 -1
  364. package/lib/utils/repopulateRepeatGroup.js.map +1 -1
  365. package/lib/utils/slider.d.ts +28 -0
  366. package/lib/utils/slider.js +89 -0
  367. package/lib/utils/slider.js.map +1 -0
  368. package/package.json +20 -18
  369. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +10 -7
  370. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +11 -8
  371. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +46 -35
  372. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +48 -37
  373. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +21 -11
  374. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +11 -10
  375. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +12 -9
  376. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +3 -2
  377. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +16 -11
  378. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +3 -2
  379. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +14 -9
  380. package/src/components/FormComponents/CustomDateItem/CustomDateItem.tsx +140 -0
  381. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.tsx +96 -0
  382. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.tsx +81 -0
  383. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.tsx +33 -0
  384. package/src/components/FormComponents/{Typography.styles.ts → CustomDateItem/customDateTimePicker/MuiDatePicker.ts} +4 -7
  385. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/index.ts +18 -0
  386. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.ts +18 -0
  387. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.ts +154 -0
  388. package/src/components/FormComponents/CustomDateItem/index.ts +18 -0
  389. package/src/components/FormComponents/DateItem/DateItem.tsx +10 -8
  390. package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +10 -8
  391. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +11 -10
  392. package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +0 -1
  393. package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +8 -3
  394. package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +2 -2
  395. package/src/components/FormComponents/GridGroup/GridGroup.tsx +49 -15
  396. package/src/components/FormComponents/GridGroup/GridRow.tsx +12 -7
  397. package/src/components/FormComponents/GridGroup/GridTable.tsx +32 -8
  398. package/src/components/FormComponents/GridGroup/index.ts +18 -0
  399. package/src/components/FormComponents/GroupItem/GroupHeading.tsx +12 -6
  400. package/src/components/FormComponents/GroupItem/GroupItem.tsx +13 -8
  401. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +33 -11
  402. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +11 -10
  403. package/src/components/FormComponents/Item.styles.ts +0 -5
  404. package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +2 -2
  405. package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +6 -5
  406. package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +10 -5
  407. package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +3 -2
  408. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +10 -4
  409. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +15 -9
  410. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +58 -47
  411. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +15 -6
  412. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +13 -10
  413. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +10 -4
  414. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +12 -7
  415. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +10 -4
  416. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +14 -9
  417. package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +3 -2
  418. package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +3 -2
  419. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +61 -10
  420. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +23 -7
  421. package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +3 -2
  422. package/src/components/FormComponents/RepeatItem/DeleteItemButton.tsx +3 -2
  423. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +33 -9
  424. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +44 -7
  425. package/src/components/FormComponents/RepeatItem/index.ts +18 -0
  426. package/src/components/FormComponents/SingleItem/SingleItem.tsx +12 -6
  427. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +41 -11
  428. package/src/components/FormComponents/SliderItem/Slider.styles.ts +34 -0
  429. package/src/components/FormComponents/SliderItem/SliderDisplayValue.tsx +43 -0
  430. package/src/components/FormComponents/SliderItem/SliderField.tsx +88 -0
  431. package/src/components/FormComponents/SliderItem/SliderItem.tsx +115 -0
  432. package/src/components/FormComponents/SliderItem/SliderLabels.tsx +53 -0
  433. package/src/components/FormComponents/StringItem/StringItem.tsx +9 -7
  434. package/src/components/FormComponents/Tables/AddRowButton.tsx +3 -2
  435. package/src/components/FormComponents/Tables/DeleteRowButton.tsx +3 -2
  436. package/src/components/FormComponents/Tables/GroupTable.tsx +70 -7
  437. package/src/components/FormComponents/Tables/GroupTableRow.tsx +12 -7
  438. package/src/components/FormComponents/TextItem/TextItem.tsx +9 -7
  439. package/src/components/FormComponents/TimeItem/TimeItem.tsx +10 -8
  440. package/src/components/FormComponents/UrlItem/UrlItem.tsx +9 -7
  441. package/src/components/FormComponents/index.ts +3 -0
  442. package/src/components/Renderer/BaseRenderer.tsx +5 -12
  443. package/src/components/Renderer/FormBodyCollapsible.tsx +9 -7
  444. package/src/components/Renderer/FormBodySingleCollapsibleWrapper.tsx +2 -3
  445. package/src/components/Renderer/FormBodyTabbed.tsx +9 -7
  446. package/src/components/Renderer/FormTopLevelItem.tsx +21 -13
  447. package/src/components/Tabs/FormBodySingleTab.tsx +1 -1
  448. package/src/components/Tabs/ShowCompletedTabsSection.tsx +1 -1
  449. package/src/hooks/useDateValidation.tsx +79 -0
  450. package/src/hooks/useDecimalCalculatedExpression.ts +3 -4
  451. package/src/hooks/useInitialiseRepeatAnswers.ts +1 -1
  452. package/src/hooks/useIntegerCalculatedExpression.ts +3 -4
  453. package/src/hooks/useReadOnly.ts +30 -0
  454. package/src/hooks/useSliderExtensions.ts +50 -0
  455. package/src/hooks/useTerminologyServerQuery.ts +0 -2
  456. package/src/index.ts +12 -9
  457. package/src/interfaces/calculatedExpression.interface.ts +1 -1
  458. package/src/interfaces/questionnaireStore.interface.ts +1 -0
  459. package/src/interfaces/renderProps.interface.ts +8 -3
  460. package/src/stores/useQuestionnaireStore.ts +39 -16
  461. package/src/theme/customGlobalStyles.tsx +0 -4
  462. package/src/theme/typography.ts +3 -5
  463. package/src/utils/calculatedExpression.ts +104 -35
  464. package/src/utils/dayjsExtend.ts +23 -0
  465. package/src/utils/enableWhenExpression.ts +49 -34
  466. package/src/utils/fhirpath.ts +50 -31
  467. package/src/utils/index.ts +1 -0
  468. package/src/utils/initialiseForm.ts +15 -5
  469. package/src/utils/itemControl.ts +32 -0
  470. package/src/utils/mapItem.ts +1 -1
  471. package/src/utils/qrItem.ts +1 -16
  472. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +4 -2
  473. package/src/utils/removeHidden.ts +2 -1
  474. package/src/utils/repopulateIntoResponse.ts +134 -43
  475. package/src/utils/repopulateItems.ts +379 -101
  476. package/src/utils/slider.ts +112 -0
  477. package/src/utils/repopulateRepeatGroup.ts +0 -68
@@ -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
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
39
+ extends PropsWithQrItemChangeHandler,
38
40
  PropsWithIsRepeatedAttribute,
39
- PropsWithIsTabledAttribute {
41
+ PropsWithIsTabledAttribute,
42
+ PropsWithParentIsReadOnlyAttribute {
40
43
  qItem: QuestionnaireItem;
41
- qrItem: QuestionnaireResponseItem;
44
+ qrItem: QuestionnaireResponseItem | null;
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}
@@ -23,13 +23,14 @@ import type { RepeatGroupSingle } from '../../../interfaces/repeatGroup.interfac
23
23
 
24
24
  interface AddItemButtonProps {
25
25
  repeatGroups: RepeatGroupSingle[];
26
+ readOnly: boolean;
26
27
  onAddItem: () => void;
27
28
  }
28
29
 
29
30
  function AddRowButton(props: AddItemButtonProps) {
30
- const { repeatGroups, onAddItem } = props;
31
+ const { repeatGroups, readOnly, onAddItem } = props;
31
32
 
32
- const isDisabled = repeatGroups[repeatGroups.length - 1].qrItem === null;
33
+ const isDisabled = repeatGroups[repeatGroups.length - 1].qrItem === null || readOnly;
33
34
 
34
35
  return (
35
36
  <Box display="flex" flexDirection="row-reverse">
@@ -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">
@@ -31,7 +31,11 @@ import GroupTableRow from './GroupTableRow';
31
31
  import { HeaderTableCell } from './Table.styles';
32
32
  import { QGroupContainerBox } from '../../Box.styles';
33
33
  import { mapQItemsIndex } from '../../../utils/mapItem';
34
- import type { PropsWithQrRepeatGroupChangeHandler } from '../../../interfaces/renderProps.interface';
34
+ import type {
35
+ PropsWithParentIsReadOnlyAttribute,
36
+ PropsWithQrRepeatGroupChangeHandler
37
+ } from '../../../interfaces/renderProps.interface';
38
+ import type { PropsWithShowMinimalViewAttribute } from '../../../interfaces/renderProps.interface';
35
39
  import useInitialiseGroupTable from '../../../hooks/useInitialiseGroupTable';
36
40
  import { nanoid } from 'nanoid';
37
41
  import { createEmptyQrItem } from '../../../utils/qrItem';
@@ -39,15 +43,28 @@ import DeleteRowButton from './DeleteRowButton';
39
43
  import LabelWrapper from '../ItemParts/ItemLabelWrapper';
40
44
  import cloneDeep from 'lodash.clonedeep';
41
45
  import AddRowButton from './AddRowButton';
46
+ import useReadOnly from '../../../hooks/useReadOnly';
42
47
 
43
- interface Props extends PropsWithQrRepeatGroupChangeHandler {
48
+ interface GroupTableProps
49
+ extends PropsWithQrRepeatGroupChangeHandler,
50
+ PropsWithShowMinimalViewAttribute,
51
+ PropsWithParentIsReadOnlyAttribute {
44
52
  qItem: QuestionnaireItem;
45
53
  qrItems: QuestionnaireResponseItem[];
46
54
  groupCardElevation: number;
47
55
  }
48
56
 
49
- function GroupTable(props: Props) {
50
- const { qItem, qrItems, groupCardElevation, onQrRepeatGroupChange } = props;
57
+ function GroupTable(props: GroupTableProps) {
58
+ const {
59
+ qItem,
60
+ qrItems,
61
+ groupCardElevation,
62
+ showMinimalView,
63
+ parentIsReadOnly,
64
+ onQrRepeatGroupChange
65
+ } = props;
66
+
67
+ const readOnly = useReadOnly(qItem, parentIsReadOnly);
51
68
 
52
69
  const initialisedGroupTables = useInitialiseGroupTable(qrItems);
53
70
 
@@ -112,12 +129,56 @@ function GroupTable(props: Props) {
112
129
  ]);
113
130
  }
114
131
 
132
+ if (showMinimalView) {
133
+ return (
134
+ <QGroupContainerBox cardElevation={groupCardElevation} isRepeated={false} py={1}>
135
+ <TableContainer component={Paper} elevation={groupCardElevation}>
136
+ <Table size="small">
137
+ <TableHead>
138
+ <TableRow>
139
+ {itemLabels.map((itemLabel) => (
140
+ <HeaderTableCell key={itemLabel} size="medium">
141
+ {itemLabel}
142
+ </HeaderTableCell>
143
+ ))}
144
+ <TableCell />
145
+ </TableRow>
146
+ </TableHead>
147
+ <TableBody>
148
+ {tableRows.map(({ nanoId, qrItem: nullableQrItem }, index) => {
149
+ const answeredQrItem = createEmptyQrItem(qItem);
150
+ if (nullableQrItem) {
151
+ answeredQrItem.item = nullableQrItem.item;
152
+ }
153
+
154
+ return (
155
+ <TableRow key={nanoId}>
156
+ <GroupTableRow
157
+ qItem={qItem}
158
+ qrItem={answeredQrItem}
159
+ qItemsIndexMap={qItemsIndexMap}
160
+ parentIsReadOnly={parentIsReadOnly}
161
+ onQrItemChange={(newQrGroup) => handleRowChange(newQrGroup, index)}
162
+ />
163
+ </TableRow>
164
+ );
165
+ })}
166
+ </TableBody>
167
+ </Table>
168
+ </TableContainer>
169
+ </QGroupContainerBox>
170
+ );
171
+ }
172
+
115
173
  return (
116
174
  <QGroupContainerBox cardElevation={groupCardElevation} isRepeated={false} py={3}>
117
175
  {groupCardElevation !== 1 ? (
118
176
  <>
119
- <Typography fontSize={13} variant="h6">
120
- <LabelWrapper qItem={qItem} />
177
+ <Typography
178
+ fontSize={13}
179
+ variant="h6"
180
+ color={readOnly ? 'text.secondary' : 'text.primary'}>
181
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
121
182
  </Typography>
122
183
  <Divider sx={{ my: 1 }} light />
123
184
  </>
@@ -125,7 +186,7 @@ function GroupTable(props: Props) {
125
186
  <TableContainer component={Paper} elevation={groupCardElevation}>
126
187
  <Table>
127
188
  <caption>
128
- <AddRowButton repeatGroups={tableRows} onAddItem={handleAddRow} />
189
+ <AddRowButton repeatGroups={tableRows} readOnly={readOnly} onAddItem={handleAddRow} />
129
190
  </caption>
130
191
  <TableHead>
131
192
  <TableRow>
@@ -148,11 +209,13 @@ function GroupTable(props: Props) {
148
209
  qItem={qItem}
149
210
  qrItem={answeredQrItem}
150
211
  qItemsIndexMap={qItemsIndexMap}
212
+ parentIsReadOnly={parentIsReadOnly}
151
213
  onQrItemChange={(newQrGroup) => handleRowChange(newQrGroup, index)}
152
214
  />
153
215
  <DeleteRowButton
154
216
  nullableQrItem={nullableQrItem}
155
217
  numOfRows={tableRows.length}
218
+ readOnly={readOnly}
156
219
  onDeleteItem={() => handleDeleteRow(index)}
157
220
  />
158
221
  </TableRow>
@@ -17,23 +17,26 @@
17
17
 
18
18
  import React from 'react';
19
19
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
20
- import { createQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
20
+ import { createEmptyQrGroup, updateQrItemsInGroup } from '../../../utils/qrItem';
21
21
  import SingleItem from '../SingleItem/SingleItem';
22
22
  import { getQrItemsIndex } from '../../../utils/mapItem';
23
23
  import { StandardTableCell } from './Table.styles';
24
- import type { PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
24
+ import type {
25
+ PropsWithParentIsReadOnlyAttribute,
26
+ PropsWithQrItemChangeHandler
27
+ } from '../../../interfaces/renderProps.interface';
25
28
 
26
- interface Props extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
29
+ interface Props extends PropsWithQrItemChangeHandler, PropsWithParentIsReadOnlyAttribute {
27
30
  qItem: QuestionnaireItem;
28
- qrItem: QuestionnaireResponseItem;
31
+ qrItem: QuestionnaireResponseItem | null;
29
32
  qItemsIndexMap: Record<string, number>;
30
33
  }
31
34
 
32
35
  function GroupTableRow(props: Props) {
33
- const { qItem, qrItem, qItemsIndexMap, onQrItemChange } = props;
36
+ const { qItem, qrItem, qItemsIndexMap, parentIsReadOnly, onQrItemChange } = props;
34
37
 
35
38
  const rowItems = qItem.item;
36
- const row = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);
39
+ const row = qrItem && qrItem.item ? qrItem : createEmptyQrGroup(qItem);
37
40
  const rowQrItems = row.item;
38
41
 
39
42
  if (!rowItems || !rowQrItems) {
@@ -62,9 +65,11 @@ function GroupTableRow(props: Props) {
62
65
  <SingleItem
63
66
  key={qItem.linkId}
64
67
  qItem={rowItem}
65
- qrItem={qrItem}
68
+ qrItem={qrItem ?? null}
66
69
  isRepeated={true}
67
70
  isTabled={true}
71
+ showMinimalView={true}
72
+ parentIsReadOnly={parentIsReadOnly}
68
73
  onQrItemChange={handleQrRowItemChange}
69
74
  />
70
75
  </StandardTableCell>
@@ -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
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
37
- PropsWithIsRepeatedAttribute {
38
+ extends PropsWithQrItemChangeHandler,
39
+ PropsWithIsRepeatedAttribute,
40
+ PropsWithParentIsReadOnlyAttribute {
38
41
  qItem: QuestionnaireItem;
39
- qrItem: QuestionnaireResponseItem;
42
+ qrItem: QuestionnaireResponseItem | null;
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
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
36
+ extends PropsWithQrItemChangeHandler,
35
37
  PropsWithIsRepeatedAttribute,
36
- PropsWithIsTabledAttribute {
38
+ PropsWithIsTabledAttribute,
39
+ PropsWithParentIsReadOnlyAttribute {
37
40
  qItem: QuestionnaireItem;
38
- qrItem: QuestionnaireResponseItem;
41
+ qrItem: QuestionnaireResponseItem | null;
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
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
37
+ extends PropsWithQrItemChangeHandler,
36
38
  PropsWithIsRepeatedAttribute,
37
- PropsWithIsTabledAttribute {
39
+ PropsWithIsTabledAttribute,
40
+ PropsWithParentIsReadOnlyAttribute {
38
41
  qItem: QuestionnaireItem;
39
- qrItem: QuestionnaireResponseItem;
42
+ qrItem: QuestionnaireResponseItem | null;
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}
@@ -16,5 +16,8 @@
16
16
  */
17
17
 
18
18
  export * from './SingleItem';
19
+ export * from './RepeatItem';
19
20
  export * from './RepeatGroup';
21
+ export * from './GridGroup';
20
22
  export * from './Tables';
23
+ export * from './CustomDateItem';
@@ -35,19 +35,13 @@ function BaseRenderer() {
35
35
 
36
36
  const qItemsIndexMap = useMemo(() => mapQItemsIndex(sourceQuestionnaire), [sourceQuestionnaire]);
37
37
 
38
- function handleTopLevelQRItemSingleChange(
39
- newTopLevelQRItem: QuestionnaireResponseItem,
40
- index: number
41
- ) {
38
+ function handleTopLevelQRItemSingleChange(newTopLevelQRItem: QuestionnaireResponseItem) {
42
39
  const updatedResponse: QuestionnaireResponse = cloneDeep(updatableResponse);
43
40
  if (!updatedResponse.item || updatedResponse.item.length === 0) {
44
41
  return;
45
42
  }
46
43
 
47
- const updatedItems = [...updatedResponse.item]; // Copy the original array of items
48
- updatedItems[index] = newTopLevelQRItem; // Modify the item at the specified index
49
-
50
- updatedResponse.item = updatedItems;
44
+ updateQrItemsInGroup(newTopLevelQRItem, null, updatedResponse, qItemsIndexMap);
51
45
 
52
46
  updateExpressions(updatedResponse);
53
47
  updateResponse(updatedResponse);
@@ -73,8 +67,7 @@ function BaseRenderer() {
73
67
  }
74
68
 
75
69
  // If an item has multiple answers, it is a repeat group
76
- const topLevelQRItemsByIndex: (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] =
77
- getQrItemsIndex(topLevelQItems, topLevelQRItems, qItemsIndexMap);
70
+ const topLevelQRItemsByIndex = getQrItemsIndex(topLevelQItems, topLevelQRItems, qItemsIndexMap);
78
71
 
79
72
  return (
80
73
  <Fade in={true} timeout={500}>
@@ -86,9 +79,9 @@ function BaseRenderer() {
86
79
  <FormTopLevelItem
87
80
  key={qItem.linkId}
88
81
  topLevelQItem={qItem}
89
- topLevelQRItemOrItems={qrItemOrItems}
82
+ topLevelQRItemOrItems={qrItemOrItems ?? null}
90
83
  onQrItemChange={(newTopLevelQRItem) =>
91
- handleTopLevelQRItemSingleChange(newTopLevelQRItem, index)
84
+ handleTopLevelQRItemSingleChange(newTopLevelQRItem)
92
85
  }
93
86
  onQrRepeatGroupChange={(newTopLevelQRItems) =>
94
87
  handleTopLevelQRItemMultipleChange(newTopLevelQRItems)
@@ -19,14 +19,14 @@ import React, { useMemo } from 'react';
19
19
  import Stack from '@mui/material/Stack';
20
20
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
21
21
  import { getQrItemsIndex, mapQItemsIndex } from '../../utils/mapItem';
22
- import { updateQrItemsInGroup } from '../../utils/qrItem';
22
+ import { createEmptyQrGroup, updateQrItemsInGroup } from '../../utils/qrItem';
23
23
  import type { PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';
24
24
  import useQuestionnaireStore from '../../stores/useQuestionnaireStore';
25
25
  import FormBodySingleCollapsibleWrapper from './FormBodySingleCollapsibleWrapper';
26
26
 
27
- interface FormBodyCollapsibleProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
27
+ interface FormBodyCollapsibleProps extends PropsWithQrItemChangeHandler {
28
28
  topLevelQItem: QuestionnaireItem;
29
- topLevelQRItem: QuestionnaireResponseItem;
29
+ topLevelQRItem: QuestionnaireResponseItem | null;
30
30
  }
31
31
 
32
32
  function FormBodyCollapsibleWrapper(props: FormBodyCollapsibleProps) {
@@ -42,12 +42,14 @@ function FormBodyCollapsibleWrapper(props: FormBodyCollapsibleProps) {
42
42
  [topLevelQItem]
43
43
  );
44
44
 
45
+ const nonNullTopLevelQRItem = topLevelQRItem ?? createEmptyQrGroup(topLevelQItem);
46
+
45
47
  const qItems = topLevelQItem.item;
46
- const qrItems = topLevelQRItem.item;
48
+ const qrItems = nonNullTopLevelQRItem.item;
47
49
 
48
50
  function handleQrGroupChange(qrItem: QuestionnaireResponseItem) {
49
- updateQrItemsInGroup(qrItem, null, topLevelQRItem, indexMap);
50
- onQrItemChange(topLevelQRItem);
51
+ updateQrItemsInGroup(qrItem, null, nonNullTopLevelQRItem, indexMap);
52
+ onQrItemChange(nonNullTopLevelQRItem);
51
53
  }
52
54
 
53
55
  if (!qItems || !qrItems) {
@@ -81,7 +83,7 @@ function FormBodyCollapsibleWrapper(props: FormBodyCollapsibleProps) {
81
83
  <FormBodySingleCollapsibleWrapper
82
84
  key={qItem.linkId}
83
85
  qItem={qItem}
84
- qrItem={qrItem}
86
+ qrItem={qrItem ?? null}
85
87
  index={i}
86
88
  selectedIndex={currentTab}
87
89
  onToggleExpand={handleToggleExpand}
@@ -22,10 +22,9 @@ import FormBodySingleCollapsible from './FormBodySingleCollapsible';
22
22
  import type { PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';
23
23
  import useHidden from '../../hooks/useHidden';
24
24
 
25
- interface FormBodySingleCollapsibleProps
26
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
25
+ interface FormBodySingleCollapsibleProps extends PropsWithQrItemChangeHandler {
27
26
  qItem: QuestionnaireItem;
28
- qrItem: QuestionnaireResponseItem;
27
+ qrItem: QuestionnaireResponseItem | null;
29
28
  index: number;
30
29
  selectedIndex: number;
31
30
  onToggleExpand: (index: number) => void;
@@ -22,14 +22,14 @@ import TabContext from '@mui/lab/TabContext';
22
22
  import TabPanel from '@mui/lab/TabPanel';
23
23
  import { getQrItemsIndex, mapQItemsIndex } from '../../utils/mapItem';
24
24
  import GroupItem from '../FormComponents/GroupItem/GroupItem';
25
- import { updateQrItemsInGroup } from '../../utils/qrItem';
25
+ import { createEmptyQrGroup, updateQrItemsInGroup } from '../../utils/qrItem';
26
26
  import FormBodyTabListWrapper from '../Tabs/FormBodyTabListWrapper';
27
27
  import type { PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';
28
28
  import useQuestionnaireStore from '../../stores/useQuestionnaireStore';
29
29
 
30
- interface FormBodyTabbedProps extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem> {
30
+ interface FormBodyTabbedProps extends PropsWithQrItemChangeHandler {
31
31
  topLevelQItem: QuestionnaireItem;
32
- topLevelQRItem: QuestionnaireResponseItem;
32
+ topLevelQRItem: QuestionnaireResponseItem | null;
33
33
  }
34
34
 
35
35
  function FormBodyTabbed(props: FormBodyTabbedProps) {
@@ -43,12 +43,14 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
43
43
  [topLevelQItem]
44
44
  );
45
45
 
46
+ const nonNullTopLevelQRItem = topLevelQRItem ?? createEmptyQrGroup(topLevelQItem);
47
+
46
48
  const qItems = topLevelQItem.item;
47
- const qrItems = topLevelQRItem.item;
49
+ const qrItems = nonNullTopLevelQRItem.item;
48
50
 
49
51
  function handleQrGroupChange(qrItem: QuestionnaireResponseItem) {
50
- updateQrItemsInGroup(qrItem, null, topLevelQRItem, indexMap);
51
- onQrItemChange(topLevelQRItem);
52
+ updateQrItemsInGroup(qrItem, null, nonNullTopLevelQRItem, indexMap);
53
+ onQrItemChange(nonNullTopLevelQRItem);
52
54
  }
53
55
 
54
56
  if (!qItems || !qrItems) {
@@ -87,7 +89,7 @@ function FormBodyTabbed(props: FormBodyTabbedProps) {
87
89
  data-test="renderer-tab-panel">
88
90
  <GroupItem
89
91
  qItem={qItem}
90
- qrItem={qrItem}
92
+ qrItem={qrItem ?? null}
91
93
  isRepeated={isRepeated}
92
94
  groupCardElevation={1}
93
95
  tabIsMarkedAsComplete={tabIsMarkedAsComplete}
@@ -29,12 +29,14 @@ import FormBodyCollapsible from './FormBodyCollapsible';
29
29
  import useResponsive from '../../hooks/useResponsive';
30
30
  import useHidden from '../../hooks/useHidden';
31
31
  import GroupItemSwitcher from '../FormComponents/GroupItem/GroupItemSwitcher';
32
+ import useReadOnly from '../../hooks/useReadOnly';
33
+ import Box from '@mui/material/Box';
32
34
 
33
35
  interface FormTopLevelItemProps
34
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
36
+ extends PropsWithQrItemChangeHandler,
35
37
  PropsWithQrRepeatGroupChangeHandler {
36
38
  topLevelQItem: QuestionnaireItem;
37
- topLevelQRItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[];
39
+ topLevelQRItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[] | null;
38
40
  }
39
41
 
40
42
  function FormTopLevelItem(props: FormTopLevelItemProps) {
@@ -43,10 +45,11 @@ function FormTopLevelItem(props: FormTopLevelItemProps) {
43
45
  const itemIsTabContainer = isTabContainer(topLevelQItem);
44
46
  const itemContainsTabs = containsTabs(topLevelQItem);
45
47
 
46
- const isDesktop = useResponsive('up', 'lg');
48
+ const isTablet = useResponsive('up', 'md');
47
49
 
48
50
  const itemIsGroup = topLevelQItem.type === 'group';
49
51
 
52
+ const readOnly = useReadOnly(topLevelQItem, false);
50
53
  const itemIsHidden = useHidden(topLevelQItem);
51
54
  if (itemIsHidden) {
52
55
  return null;
@@ -60,6 +63,7 @@ function FormTopLevelItem(props: FormTopLevelItemProps) {
60
63
  qItem={topLevelQItem}
61
64
  qrItemOrItems={topLevelQRItemOrItems}
62
65
  groupCardElevation={1}
66
+ parentIsReadOnly={readOnly}
63
67
  onQrItemChange={onQrItemChange}
64
68
  onQrRepeatGroupChange={onQrRepeatGroupChange}
65
69
  />
@@ -71,7 +75,7 @@ function FormTopLevelItem(props: FormTopLevelItemProps) {
71
75
 
72
76
  // If form is tabbed, it is rendered as a tabbed form
73
77
  if (itemContainsTabs || itemIsTabContainer) {
74
- if (isDesktop) {
78
+ if (isTablet) {
75
79
  return (
76
80
  <FormBodyTabbed
77
81
  key={topLevelQItem.linkId}
@@ -100,22 +104,26 @@ function FormTopLevelItem(props: FormTopLevelItemProps) {
100
104
  qItem={topLevelQItem}
101
105
  qrItem={topLevelQRItem}
102
106
  groupCardElevation={1}
103
- onQrItemChange={onQrItemChange}
104
107
  isRepeated={false}
108
+ parentIsReadOnly={readOnly}
109
+ onQrItemChange={onQrItemChange}
105
110
  />
106
111
  );
107
112
  }
108
113
 
109
114
  // Otherwise, it is rendered as a non-group item
110
115
  return (
111
- <SingleItem
112
- key={topLevelQItem.linkId}
113
- qItem={topLevelQItem}
114
- qrItem={topLevelQRItem}
115
- isTabled={false}
116
- onQrItemChange={onQrItemChange}
117
- isRepeated={false}
118
- />
116
+ <Box pt={1}>
117
+ <SingleItem
118
+ key={topLevelQItem.linkId}
119
+ qItem={topLevelQItem}
120
+ qrItem={topLevelQRItem}
121
+ isRepeated={false}
122
+ isTabled={false}
123
+ parentIsReadOnly={readOnly}
124
+ onQrItemChange={onQrItemChange}
125
+ />
126
+ </Box>
119
127
  );
120
128
  }
121
129
 
@@ -46,7 +46,7 @@ const FormBodySingleTab = memo(function FormBodySingleTab(props: FormBodySingleT
46
46
  <>
47
47
  <ListItemButton
48
48
  selected={selected}
49
- sx={{ my: 0.15, minHeight: '36px' }}
49
+ sx={{ my: 0.1, minHeight: '36px' }}
50
50
  onClick={handleTabClick}>
51
51
  <ListItemText
52
52
  primary={
@@ -34,7 +34,7 @@ function ShowCompletedTabsSection(props: ShowCompletedTabsSectionProps) {
34
34
  <Box display="flex" justifyContent="center" alignItems="center" mx={2} columnGap={0.5}>
35
35
  <Typography
36
36
  variant="overline"
37
- fontSize={9}
37
+ fontSize={8.5}
38
38
  color={completedTabsExpanded ? 'text.secondary' : 'text.disabled'}>
39
39
  Completed tabs {completedTabsExpanded ? 'shown' : 'hidden'}
40
40
  </Typography>