@aehrc/smart-forms-renderer 0.8.1 → 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 (340) hide show
  1. package/lib/components/FormComponents/BooleanItem/BooleanItem.d.ts +2 -2
  2. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +2 -2
  3. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  4. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +12 -12
  5. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +3 -3
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +12 -12
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +3 -4
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +3 -3
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +2 -2
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +2 -2
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +2 -2
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +2 -2
  16. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.d.ts +18 -0
  17. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js +31 -0
  18. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js.map +1 -0
  19. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.d.ts +9 -0
  20. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js +68 -0
  21. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js.map +1 -0
  22. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.d.ts +9 -0
  23. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js +75 -0
  24. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js.map +1 -0
  25. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.d.ts +9 -0
  26. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js +75 -0
  27. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js.map +1 -0
  28. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.d.ts +18 -0
  29. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js +33 -0
  30. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js.map +1 -0
  31. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.d.ts +11 -0
  32. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js +55 -0
  33. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js.map +1 -0
  34. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.d.ts +9 -0
  35. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js +13 -0
  36. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js.map +1 -0
  37. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.d.ts +5 -0
  38. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js +20 -0
  39. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js.map +1 -0
  40. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.d.ts +5 -0
  41. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js +27 -0
  42. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js.map +1 -0
  43. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.d.ts +1 -0
  44. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js +18 -0
  45. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js.map +1 -0
  46. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.d.ts +1 -0
  47. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js +18 -0
  48. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js.map +1 -0
  49. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.d.ts +9 -0
  50. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js +121 -0
  51. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js.map +1 -0
  52. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.d.ts +9 -0
  53. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js +71 -0
  54. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js.map +1 -0
  55. package/lib/components/FormComponents/CustomDateItem/index.d.ts +1 -0
  56. package/lib/components/FormComponents/CustomDateItem/index.js +18 -0
  57. package/lib/components/FormComponents/CustomDateItem/index.js.map +1 -0
  58. package/lib/components/FormComponents/DateItem/DateItem.d.ts +3 -4
  59. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +2 -2
  60. package/lib/components/FormComponents/DecimalItem/DecimalItem.d.ts +2 -2
  61. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +2 -3
  62. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  63. package/lib/components/FormComponents/DisplayItem/DisplayBox.d.ts +0 -0
  64. package/lib/components/FormComponents/DisplayItem/DisplayBox.js +2 -0
  65. package/lib/components/FormComponents/DisplayItem/DisplayBox.js.map +1 -0
  66. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.d.ts +4 -0
  67. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js +35 -0
  68. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js.map +1 -0
  69. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +2 -1
  70. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -1
  71. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js +0 -1
  72. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -1
  73. package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +3 -3
  74. package/lib/components/FormComponents/GridGroup/GridGroup.js +13 -8
  75. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
  76. package/lib/components/FormComponents/GridGroup/GridRow.d.ts +3 -4
  77. package/lib/components/FormComponents/GridGroup/GridRow.js +3 -3
  78. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  79. package/lib/components/FormComponents/GridGroup/GridTable.d.ts +3 -3
  80. package/lib/components/FormComponents/GridGroup/GridTable.js +9 -4
  81. package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
  82. package/lib/components/FormComponents/GridGroup/index.d.ts +1 -0
  83. package/lib/components/FormComponents/GridGroup/index.js +18 -0
  84. package/lib/components/FormComponents/GridGroup/index.js.map +1 -0
  85. package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -2
  86. package/lib/components/FormComponents/GroupItem/GroupItem.js +2 -2
  87. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  88. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -2
  89. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +5 -6
  90. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
  91. package/lib/components/FormComponents/IntegerItem/IntegerItem.d.ts +2 -2
  92. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +2 -3
  93. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  94. package/lib/components/FormComponents/IntegerItem/SliderItem.d.ts +9 -0
  95. package/lib/components/FormComponents/IntegerItem/SliderItem.js +75 -0
  96. package/lib/components/FormComponents/IntegerItem/SliderItem.js.map +1 -0
  97. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +2 -2
  98. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -1
  99. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +2 -2
  100. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +2 -2
  101. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  102. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +12 -12
  103. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  104. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +3 -3
  105. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +2 -2
  106. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  107. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +2 -2
  108. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +2 -2
  109. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +2 -2
  110. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
  111. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +15 -4
  112. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  113. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
  114. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +2 -2
  115. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
  116. package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +3 -3
  117. package/lib/components/FormComponents/RepeatItem/RepeatField.js +3 -3
  118. package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
  119. package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +3 -2
  120. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +11 -2
  121. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
  122. package/lib/components/FormComponents/RepeatItem/index.d.ts +1 -0
  123. package/lib/components/FormComponents/RepeatItem/index.js +18 -0
  124. package/lib/components/FormComponents/RepeatItem/index.js.map +1 -0
  125. package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +3 -3
  126. package/lib/components/FormComponents/SingleItem/SingleItem.js +2 -2
  127. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  128. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +3 -3
  129. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +12 -7
  130. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
  131. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.d.ts +4 -0
  132. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js +35 -0
  133. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js.map +1 -0
  134. package/lib/components/FormComponents/SliderItem/Slider.styles.d.ts +6 -0
  135. package/lib/components/FormComponents/SliderItem/Slider.styles.js +33 -0
  136. package/lib/components/FormComponents/SliderItem/Slider.styles.js.map +1 -0
  137. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.d.ts +8 -0
  138. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js +28 -0
  139. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js.map +1 -0
  140. package/lib/components/FormComponents/SliderItem/SliderField.d.ts +16 -0
  141. package/lib/components/FormComponents/SliderItem/SliderField.js +41 -0
  142. package/lib/components/FormComponents/SliderItem/SliderField.js.map +1 -0
  143. package/lib/components/FormComponents/SliderItem/SliderItem.d.ts +9 -0
  144. package/lib/components/FormComponents/SliderItem/SliderItem.js +56 -0
  145. package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -0
  146. package/lib/components/FormComponents/SliderItem/SliderLabels.d.ts +7 -0
  147. package/lib/components/FormComponents/SliderItem/SliderLabels.js +32 -0
  148. package/lib/components/FormComponents/SliderItem/SliderLabels.js.map +1 -0
  149. package/lib/components/FormComponents/StringItem/StringItem.d.ts +2 -2
  150. package/lib/components/FormComponents/Tables/GroupTable.d.ts +3 -2
  151. package/lib/components/FormComponents/Tables/GroupTable.js +18 -1
  152. package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
  153. package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +3 -4
  154. package/lib/components/FormComponents/Tables/GroupTableRow.js +3 -3
  155. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
  156. package/lib/components/FormComponents/TextItem/TextItem.d.ts +2 -2
  157. package/lib/components/FormComponents/TimeItem/TimeItem.d.ts +2 -2
  158. package/lib/components/FormComponents/UrlItem/UrlItem.d.ts +2 -2
  159. package/lib/components/FormComponents/index.d.ts +3 -0
  160. package/lib/components/FormComponents/index.js +3 -0
  161. package/lib/components/FormComponents/index.js.map +1 -1
  162. package/lib/components/Renderer/BaseRenderer.js +3 -5
  163. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  164. package/lib/components/Renderer/FormBodyCollapsible.d.ts +2 -2
  165. package/lib/components/Renderer/FormBodyCollapsible.js +6 -5
  166. package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
  167. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.d.ts +2 -2
  168. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js.map +1 -1
  169. package/lib/components/Renderer/FormBodyTabbed.d.ts +2 -2
  170. package/lib/components/Renderer/FormBodyTabbed.js +6 -5
  171. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  172. package/lib/components/Renderer/FormTopLevelItem.d.ts +2 -2
  173. package/lib/components/Renderer/FormTopLevelItem.js +3 -1
  174. package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
  175. package/lib/hooks/useDateSeparatorValidation.d.ts +2 -0
  176. package/lib/hooks/useDateSeparatorValidation.js +25 -0
  177. package/lib/hooks/useDateSeparatorValidation.js.map +1 -0
  178. package/lib/hooks/useDateValidation.d.ts +2 -0
  179. package/lib/hooks/useDateValidation.js +61 -0
  180. package/lib/hooks/useDateValidation.js.map +1 -0
  181. package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -1
  182. package/lib/hooks/useDecimalCalculatedExpression.js +3 -3
  183. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -1
  184. package/lib/hooks/useInitialiseRepeatAnswers.d.ts +1 -1
  185. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
  186. package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -1
  187. package/lib/hooks/useIntegerCalculatedExpression.js +3 -3
  188. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -1
  189. package/lib/hooks/useSliderExtensions.d.ts +10 -0
  190. package/lib/hooks/useSliderExtensions.js +37 -0
  191. package/lib/hooks/useSliderExtensions.js.map +1 -0
  192. package/lib/hooks/useTerminologyServerQuery.js +0 -1
  193. package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
  194. package/lib/index.d.ts +3 -3
  195. package/lib/index.js +15 -6
  196. package/lib/index.js.map +1 -1
  197. package/lib/interfaces/index.d.ts +2 -0
  198. package/lib/interfaces/index.js +18 -0
  199. package/lib/interfaces/index.js.map +1 -0
  200. package/lib/interfaces/questionnaireStore.interface.d.ts +1 -0
  201. package/lib/interfaces/renderProps.interface.d.ts +4 -3
  202. package/lib/stores/useQuestionnaireStore.d.ts +1 -0
  203. package/lib/stores/useQuestionnaireStore.js +28 -12
  204. package/lib/stores/useQuestionnaireStore.js.map +1 -1
  205. package/lib/test.d.ts +4 -0
  206. package/lib/test.js +18 -0
  207. package/lib/test.js.map +1 -0
  208. package/lib/theme/customGlobalStyles.js +0 -4
  209. package/lib/theme/customGlobalStyles.js.map +1 -1
  210. package/lib/utils/calculatedExpression.d.ts +5 -1
  211. package/lib/utils/calculatedExpression.js +21 -16
  212. package/lib/utils/calculatedExpression.js.map +1 -1
  213. package/lib/utils/dayjsExtend.d.ts +1 -0
  214. package/lib/utils/dayjsExtend.js +22 -0
  215. package/lib/utils/dayjsExtend.js.map +1 -0
  216. package/lib/utils/enableWhenExpression.d.ts +5 -1
  217. package/lib/utils/enableWhenExpression.js +26 -21
  218. package/lib/utils/enableWhenExpression.js.map +1 -1
  219. package/lib/utils/fhirpath.d.ts +3 -1
  220. package/lib/utils/fhirpath.js +25 -15
  221. package/lib/utils/fhirpath.js.map +1 -1
  222. package/lib/utils/index.d.ts +1 -0
  223. package/lib/utils/index.js +1 -0
  224. package/lib/utils/index.js.map +1 -1
  225. package/lib/utils/initialiseForm.d.ts +2 -0
  226. package/lib/utils/initialiseForm.js +13 -5
  227. package/lib/utils/initialiseForm.js.map +1 -1
  228. package/lib/utils/itemControl.d.ts +12 -0
  229. package/lib/utils/itemControl.js +30 -0
  230. package/lib/utils/itemControl.js.map +1 -1
  231. package/lib/utils/launchContext.d.ts +0 -0
  232. package/lib/utils/launchContext.js +2 -0
  233. package/lib/utils/launchContext.js.map +1 -0
  234. package/lib/utils/mapItem.d.ts +1 -1
  235. package/lib/utils/qrItem.d.ts +1 -7
  236. package/lib/utils/qrItem.js +1 -12
  237. package/lib/utils/qrItem.js.map +1 -1
  238. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -2
  239. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
  240. package/lib/utils/removeHidden.js +2 -1
  241. package/lib/utils/removeHidden.js.map +1 -1
  242. package/lib/utils/repopulateIntoResponse.js +90 -29
  243. package/lib/utils/repopulateIntoResponse.js.map +1 -1
  244. package/lib/utils/repopulateItems.d.ts +14 -1
  245. package/lib/utils/repopulateItems.js +251 -70
  246. package/lib/utils/repopulateItems.js.map +1 -1
  247. package/lib/utils/repopulateRepeatGroup.js +9 -1
  248. package/lib/utils/repopulateRepeatGroup.js.map +1 -1
  249. package/lib/utils/slider.d.ts +28 -0
  250. package/lib/utils/slider.js +89 -0
  251. package/lib/utils/slider.js.map +1 -0
  252. package/package.json +11 -9
  253. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +2 -2
  254. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +2 -2
  255. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +33 -33
  256. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +35 -35
  257. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +8 -8
  258. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +2 -2
  259. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +2 -2
  260. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +2 -2
  261. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +2 -2
  262. package/src/components/FormComponents/CustomDateItem/CustomDateItem.tsx +140 -0
  263. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.tsx +96 -0
  264. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.tsx +81 -0
  265. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.tsx +33 -0
  266. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.ts +22 -0
  267. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/index.ts +18 -0
  268. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.ts +18 -0
  269. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.ts +154 -0
  270. package/src/components/FormComponents/CustomDateItem/index.ts +18 -0
  271. package/src/components/FormComponents/DateItem/DateItem.tsx +3 -3
  272. package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +2 -2
  273. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +4 -5
  274. package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +0 -1
  275. package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +2 -1
  276. package/src/components/FormComponents/GridGroup/GridGroup.tsx +41 -15
  277. package/src/components/FormComponents/GridGroup/GridRow.tsx +10 -9
  278. package/src/components/FormComponents/GridGroup/GridTable.tsx +29 -9
  279. package/src/components/FormComponents/GridGroup/index.ts +18 -0
  280. package/src/components/FormComponents/GroupItem/GroupItem.tsx +5 -6
  281. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +7 -8
  282. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +4 -5
  283. package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +2 -2
  284. package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +2 -2
  285. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +2 -2
  286. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +43 -43
  287. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +6 -6
  288. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +2 -2
  289. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +2 -2
  290. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +2 -2
  291. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +49 -6
  292. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +13 -8
  293. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +15 -9
  294. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +33 -3
  295. package/src/components/FormComponents/RepeatItem/index.ts +18 -0
  296. package/src/components/FormComponents/SingleItem/SingleItem.tsx +6 -6
  297. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +27 -11
  298. package/src/components/FormComponents/SliderItem/Slider.styles.ts +34 -0
  299. package/src/components/FormComponents/SliderItem/SliderDisplayValue.tsx +43 -0
  300. package/src/components/FormComponents/SliderItem/SliderField.tsx +88 -0
  301. package/src/components/FormComponents/SliderItem/SliderItem.tsx +115 -0
  302. package/src/components/FormComponents/SliderItem/SliderLabels.tsx +53 -0
  303. package/src/components/FormComponents/StringItem/StringItem.tsx +2 -2
  304. package/src/components/FormComponents/Tables/GroupTable.tsx +55 -3
  305. package/src/components/FormComponents/Tables/GroupTableRow.tsx +10 -9
  306. package/src/components/FormComponents/TextItem/TextItem.tsx +2 -2
  307. package/src/components/FormComponents/TimeItem/TimeItem.tsx +2 -2
  308. package/src/components/FormComponents/UrlItem/UrlItem.tsx +2 -2
  309. package/src/components/FormComponents/index.ts +3 -0
  310. package/src/components/Renderer/BaseRenderer.tsx +5 -12
  311. package/src/components/Renderer/FormBodyCollapsible.tsx +9 -7
  312. package/src/components/Renderer/FormBodySingleCollapsibleWrapper.tsx +2 -3
  313. package/src/components/Renderer/FormBodyTabbed.tsx +9 -7
  314. package/src/components/Renderer/FormTopLevelItem.tsx +14 -11
  315. package/src/hooks/useDateValidation.tsx +79 -0
  316. package/src/hooks/useDecimalCalculatedExpression.ts +3 -4
  317. package/src/hooks/useInitialiseRepeatAnswers.ts +1 -1
  318. package/src/hooks/useIntegerCalculatedExpression.ts +3 -4
  319. package/src/hooks/useSliderExtensions.ts +50 -0
  320. package/src/hooks/useTerminologyServerQuery.ts +0 -2
  321. package/src/index.ts +12 -9
  322. package/src/interfaces/questionnaireStore.interface.ts +1 -0
  323. package/src/interfaces/renderProps.interface.ts +4 -3
  324. package/src/stores/useQuestionnaireStore.ts +39 -16
  325. package/src/theme/customGlobalStyles.tsx +0 -4
  326. package/src/utils/calculatedExpression.ts +41 -28
  327. package/src/utils/dayjsExtend.ts +23 -0
  328. package/src/utils/enableWhenExpression.ts +49 -34
  329. package/src/utils/fhirpath.ts +50 -31
  330. package/src/utils/index.ts +1 -0
  331. package/src/utils/initialiseForm.ts +15 -5
  332. package/src/utils/itemControl.ts +32 -0
  333. package/src/utils/mapItem.ts +1 -1
  334. package/src/utils/qrItem.ts +1 -16
  335. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +4 -2
  336. package/src/utils/removeHidden.ts +2 -1
  337. package/src/utils/repopulateIntoResponse.ts +134 -43
  338. package/src/utils/repopulateItems.ts +379 -101
  339. package/src/utils/slider.ts +112 -0
  340. package/src/utils/repopulateRepeatGroup.ts +0 -68
@@ -22,10 +22,9 @@ import type {
22
22
  PropsWithQrRepeatGroupChangeHandler
23
23
  } from '../../../interfaces/renderProps.interface';
24
24
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
25
- import { isSpecificItemControl } from '../../../utils';
25
+ import { isRepeatItemAndNotCheckbox, isSpecificItemControl } from '../../../utils';
26
26
  import GroupTable from '../Tables/GroupTable';
27
27
  import RepeatGroup from '../RepeatGroup/RepeatGroup';
28
- import { isRepeatItemAndNotCheckbox } from '../../../utils/qItem';
29
28
  import RepeatItem from '../RepeatItem/RepeatItem';
30
29
  import SingleItem from '../SingleItem/SingleItem';
31
30
  import useHidden from '../../../hooks/useHidden';
@@ -33,11 +32,11 @@ import GroupItem from './GroupItem';
33
32
  import GridGroup from '../GridGroup/GridGroup';
34
33
 
35
34
  interface GroupItemSwitcherProps
36
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
35
+ extends PropsWithQrItemChangeHandler,
37
36
  PropsWithQrRepeatGroupChangeHandler,
38
37
  PropsWithParentIsReadOnlyAttribute {
39
38
  qItem: QuestionnaireItem;
40
- qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[];
39
+ qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[] | undefined;
41
40
  groupCardElevation: number;
42
41
  }
43
42
 
@@ -97,7 +96,7 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
97
96
  return (
98
97
  <GridGroup
99
98
  qItem={qItem}
100
- qrItem={qrItem}
99
+ qrItem={qrItem ?? null}
101
100
  groupCardElevation={groupCardElevation}
102
101
  parentIsReadOnly={parentIsReadOnly}
103
102
  onQrItemChange={onQrItemChange}
@@ -136,7 +135,7 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
136
135
  return (
137
136
  <RepeatItem
138
137
  qItem={qItem}
139
- qrItem={qrItem}
138
+ qrItem={qrItem ?? null}
140
139
  parentIsReadOnly={parentIsReadOnly}
141
140
  onQrItemChange={onQrItemChange}
142
141
  />
@@ -148,7 +147,7 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
148
147
  return (
149
148
  <GroupItem
150
149
  qItem={qItem}
151
- qrItem={qrItem}
150
+ qrItem={qrItem ?? null}
152
151
  isRepeated={false}
153
152
  groupCardElevation={groupCardElevation + 1}
154
153
  parentIsReadOnly={parentIsReadOnly}
@@ -161,7 +160,7 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
161
160
  return (
162
161
  <SingleItem
163
162
  qItem={qItem}
164
- qrItem={qrItem}
163
+ qrItem={qrItem ?? null}
165
164
  isRepeated={false}
166
165
  isTabled={false}
167
166
  parentIsReadOnly={parentIsReadOnly}
@@ -26,7 +26,7 @@ import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
26
26
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
27
27
  import useValidationError from '../../../hooks/useValidationError';
28
28
  import debounce from 'lodash.debounce';
29
- import { createEmptyQrItemWithUnit } from '../../../utils/qrItem';
29
+ import { createEmptyQrItem } from '../../../utils/qrItem';
30
30
  import { DEBOUNCE_DURATION } from '../../../utils/debounce';
31
31
  import { FullWidthFormComponentBox } from '../../Box.styles';
32
32
  import IntegerField from './IntegerField';
@@ -37,12 +37,12 @@ import useNumberInput from '../../../hooks/useNumberInput';
37
37
  import useReadOnly from '../../../hooks/useReadOnly';
38
38
 
39
39
  interface IntegerItemProps
40
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
40
+ extends PropsWithQrItemChangeHandler,
41
41
  PropsWithIsRepeatedAttribute,
42
42
  PropsWithIsTabledAttribute,
43
43
  PropsWithParentIsReadOnlyAttribute {
44
44
  qItem: QuestionnaireItem;
45
- qrItem: QuestionnaireResponseItem;
45
+ qrItem: QuestionnaireResponseItem | null;
46
46
  }
47
47
 
48
48
  function IntegerItem(props: IntegerItemProps) {
@@ -77,7 +77,6 @@ function IntegerItem(props: IntegerItemProps) {
77
77
  const { calcExpUpdated } = useIntegerCalculatedExpression({
78
78
  qItem: qItem,
79
79
  inputValue: value,
80
- displayUnit: displayUnit,
81
80
  setInputValue: (newValue) => {
82
81
  setValue(newValue);
83
82
  },
@@ -96,7 +95,7 @@ function IntegerItem(props: IntegerItemProps) {
96
95
  const updateQrItemWithDebounce = useCallback(
97
96
  debounce((newValue: number) => {
98
97
  onQrItemChange({
99
- ...createEmptyQrItemWithUnit(qItem, displayUnit),
98
+ ...createEmptyQrItem(qItem),
100
99
  answer: [{ valueInteger: newValue }]
101
100
  });
102
101
  }, DEBOUNCE_DURATION),
@@ -17,7 +17,7 @@
17
17
 
18
18
  import React from 'react';
19
19
  import Fade from '@mui/material/Fade';
20
- import CheckIcon from '@mui/icons-material/Check';
20
+ import SyncIcon from '@mui/icons-material/Sync';
21
21
 
22
22
  interface FadingCheckIconProps {
23
23
  fadeIn: boolean;
@@ -28,7 +28,7 @@ function FadingCheckIcon(props: FadingCheckIconProps) {
28
28
 
29
29
  return (
30
30
  <Fade in={fadeIn} timeout={{ enter: 100, exit: 300 }}>
31
- <CheckIcon color="success" fontSize="small" />
31
+ <SyncIcon color="success" fontSize="small" />
32
32
  </Fade>
33
33
  );
34
34
  }
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import type { ReactNode } from 'react';
18
+ import type { ReactElement, ReactNode } from 'react';
19
19
  import React from 'react';
20
20
  import Grid from '@mui/material/Grid';
21
21
  import type { QuestionnaireItem } from 'fhir/r4';
@@ -25,7 +25,7 @@ import LabelWrapper from './ItemLabelWrapper';
25
25
  interface ItemFieldGridProps {
26
26
  children: ReactNode;
27
27
  qItem: QuestionnaireItem;
28
- displayInstructions: string;
28
+ displayInstructions: string | ReactElement;
29
29
  readOnly: boolean;
30
30
  }
31
31
 
@@ -38,12 +38,12 @@ import OpenChoiceAutocompleteField from './OpenChoiceAutocompleteField';
38
38
  import useReadOnly from '../../../hooks/useReadOnly';
39
39
 
40
40
  interface OpenChoiceAutocompleteItemProps
41
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
41
+ extends PropsWithQrItemChangeHandler,
42
42
  PropsWithIsRepeatedAttribute,
43
43
  PropsWithIsTabledAttribute,
44
44
  PropsWithParentIsReadOnlyAttribute {
45
45
  qItem: QuestionnaireItem;
46
- qrItem: QuestionnaireResponseItem;
46
+ qrItem: QuestionnaireResponseItem | null;
47
47
  }
48
48
 
49
49
  function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
@@ -33,7 +33,7 @@ import type {
33
33
  PropsWithIsRepeatedAttribute,
34
34
  PropsWithParentIsReadOnlyAttribute,
35
35
  PropsWithQrItemChangeHandler,
36
- PropsWithTextShownAttribute
36
+ PropsWithShowMinimalViewAttribute
37
37
  } from '../../../interfaces/renderProps.interface';
38
38
  import { DEBOUNCE_DURATION } from '../../../utils/debounce';
39
39
  import DisplayInstructions from '../DisplayItem/DisplayInstructions';
@@ -42,12 +42,12 @@ import OpenChoiceCheckboxAnswerOptionFields from './OpenChoiceCheckboxAnswerOpti
42
42
  import useReadOnly from '../../../hooks/useReadOnly';
43
43
 
44
44
  interface OpenChoiceCheckboxAnswerOptionItemProps
45
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
45
+ extends PropsWithQrItemChangeHandler,
46
46
  PropsWithIsRepeatedAttribute,
47
- PropsWithTextShownAttribute,
47
+ PropsWithShowMinimalViewAttribute,
48
48
  PropsWithParentIsReadOnlyAttribute {
49
49
  qItem: QuestionnaireItem;
50
- qrItem: QuestionnaireResponseItem;
50
+ qrItem: QuestionnaireResponseItem | null;
51
51
  orientation: ChoiceItemOrientation;
52
52
  }
53
53
 
@@ -57,7 +57,7 @@ function OpenChoiceCheckboxAnswerOptionItem(props: OpenChoiceCheckboxAnswerOptio
57
57
  qrItem,
58
58
  orientation,
59
59
  isRepeated,
60
- textShown = true,
60
+ showMinimalView = false,
61
61
  parentIsReadOnly,
62
62
  onQrItemChange
63
63
  } = props;
@@ -137,49 +137,49 @@ function OpenChoiceCheckboxAnswerOptionItem(props: OpenChoiceCheckboxAnswerOptio
137
137
  updateOpenLabelValueWithDebounce(newValue);
138
138
  }
139
139
 
140
- if (textShown) {
140
+ if (showMinimalView) {
141
141
  return (
142
- <FullWidthFormComponentBox data-test="q-item-open-choice-checkbox-answer-option-box">
143
- <Grid container columnSpacing={6}>
144
- <Grid item xs={5}>
145
- <LabelWrapper qItem={qItem} readOnly={readOnly} />
146
- </Grid>
147
- <Grid item xs={7}>
148
- <OpenChoiceCheckboxAnswerOptionFields
149
- qItem={qItem}
150
- answers={answers}
151
- openLabelText={openLabelText}
152
- openLabelValue={openLabelValue}
153
- openLabelChecked={openLabelChecked}
154
- readOnly={readOnly}
155
- orientation={orientation}
156
- onValueChange={handleValueChange}
157
- onOpenLabelCheckedChange={handleOpenLabelCheckedChange}
158
- onOpenLabelInputChange={handleOpenLabelInputChange}
159
- />
160
- <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
161
- </Grid>
162
- </Grid>
163
- </FullWidthFormComponentBox>
142
+ <>
143
+ <OpenChoiceCheckboxAnswerOptionFields
144
+ qItem={qItem}
145
+ answers={answers}
146
+ openLabelText={openLabelText}
147
+ openLabelValue={openLabelValue}
148
+ openLabelChecked={openLabelChecked}
149
+ readOnly={readOnly}
150
+ orientation={orientation}
151
+ onValueChange={handleValueChange}
152
+ onOpenLabelCheckedChange={handleOpenLabelCheckedChange}
153
+ onOpenLabelInputChange={handleOpenLabelInputChange}
154
+ />
155
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
156
+ </>
164
157
  );
165
158
  }
166
159
 
167
160
  return (
168
- <>
169
- <OpenChoiceCheckboxAnswerOptionFields
170
- qItem={qItem}
171
- answers={answers}
172
- openLabelText={openLabelText}
173
- openLabelValue={openLabelValue}
174
- openLabelChecked={openLabelChecked}
175
- readOnly={readOnly}
176
- orientation={orientation}
177
- onValueChange={handleValueChange}
178
- onOpenLabelCheckedChange={handleOpenLabelCheckedChange}
179
- onOpenLabelInputChange={handleOpenLabelInputChange}
180
- />
181
- <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
182
- </>
161
+ <FullWidthFormComponentBox data-test="q-item-open-choice-checkbox-answer-option-box">
162
+ <Grid container columnSpacing={6}>
163
+ <Grid item xs={5}>
164
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
165
+ </Grid>
166
+ <Grid item xs={7}>
167
+ <OpenChoiceCheckboxAnswerOptionFields
168
+ qItem={qItem}
169
+ answers={answers}
170
+ openLabelText={openLabelText}
171
+ openLabelValue={openLabelValue}
172
+ openLabelChecked={openLabelChecked}
173
+ readOnly={readOnly}
174
+ orientation={orientation}
175
+ onValueChange={handleValueChange}
176
+ onOpenLabelCheckedChange={handleOpenLabelCheckedChange}
177
+ onOpenLabelInputChange={handleOpenLabelInputChange}
178
+ />
179
+ <DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
180
+ </Grid>
181
+ </Grid>
182
+ </FullWidthFormComponentBox>
183
183
  );
184
184
  }
185
185
 
@@ -30,21 +30,21 @@ import type {
30
30
  PropsWithIsTabledAttribute,
31
31
  PropsWithParentIsReadOnlyAttribute,
32
32
  PropsWithQrItemChangeHandler,
33
- PropsWithTextShownAttribute
33
+ PropsWithShowMinimalViewAttribute
34
34
  } from '../../../interfaces/renderProps.interface';
35
35
 
36
36
  interface OpenChoiceItemSwitcherProps
37
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
37
+ extends PropsWithQrItemChangeHandler,
38
38
  PropsWithIsRepeatedAttribute,
39
39
  PropsWithIsTabledAttribute,
40
- PropsWithTextShownAttribute,
40
+ PropsWithShowMinimalViewAttribute,
41
41
  PropsWithParentIsReadOnlyAttribute {
42
42
  qItem: QuestionnaireItem;
43
- qrItem: QuestionnaireResponseItem;
43
+ qrItem: QuestionnaireResponseItem | null;
44
44
  }
45
45
 
46
46
  function OpenChoiceItemSwitcher(props: OpenChoiceItemSwitcherProps) {
47
- const { qItem, qrItem, isRepeated, isTabled, textShown, parentIsReadOnly, onQrItemChange } =
47
+ const { qItem, qrItem, isRepeated, isTabled, showMinimalView, parentIsReadOnly, onQrItemChange } =
48
48
  props;
49
49
 
50
50
  const orientation = getChoiceOrientation(qItem);
@@ -57,7 +57,7 @@ function OpenChoiceItemSwitcher(props: OpenChoiceItemSwitcherProps) {
57
57
  qrItem={qrItem}
58
58
  orientation={orientation}
59
59
  isRepeated={qItem['repeats'] ?? false}
60
- textShown={textShown}
60
+ showMinimalView={showMinimalView}
61
61
  parentIsReadOnly={parentIsReadOnly}
62
62
  onQrItemChange={onQrItemChange}
63
63
  />
@@ -36,11 +36,11 @@ import OpenChoiceRadioAnswerOptionFields from './OpenChoiceRadioAnswerOptionFiel
36
36
  import useReadOnly from '../../../hooks/useReadOnly';
37
37
 
38
38
  interface OpenChoiceRadioAnswerOptionItemProps
39
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
39
+ extends PropsWithQrItemChangeHandler,
40
40
  PropsWithIsRepeatedAttribute,
41
41
  PropsWithParentIsReadOnlyAttribute {
42
42
  qItem: QuestionnaireItem;
43
- qrItem: QuestionnaireResponseItem;
43
+ qrItem: QuestionnaireResponseItem | null;
44
44
  orientation: ChoiceItemOrientation;
45
45
  }
46
46
 
@@ -37,12 +37,12 @@ import OpenChoiceSelectAnswerOptionField from './OpenChoiceSelectAnswerOptionFie
37
37
  import useReadOnly from '../../../hooks/useReadOnly';
38
38
 
39
39
  interface OpenChoiceSelectAnswerOptionItemProps
40
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
40
+ extends PropsWithQrItemChangeHandler,
41
41
  PropsWithIsRepeatedAttribute,
42
42
  PropsWithIsTabledAttribute,
43
43
  PropsWithParentIsReadOnlyAttribute {
44
44
  qItem: QuestionnaireItem;
45
- qrItem: QuestionnaireResponseItem;
45
+ qrItem: QuestionnaireResponseItem | null;
46
46
  }
47
47
 
48
48
  function OpenChoiceSelectAnswerOptionItem(props: OpenChoiceSelectAnswerOptionItemProps) {
@@ -34,12 +34,12 @@ import OpenChoiceSelectAnswerValueSetField from './OpenChoiceSelectAnswerValueSe
34
34
  import useReadOnly from '../../../hooks/useReadOnly';
35
35
 
36
36
  interface OpenChoiceSelectAnswerValueSetItemProps
37
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
37
+ extends PropsWithQrItemChangeHandler,
38
38
  PropsWithIsRepeatedAttribute,
39
39
  PropsWithIsTabledAttribute,
40
40
  PropsWithParentIsReadOnlyAttribute {
41
41
  qItem: QuestionnaireItem;
42
- qrItem: QuestionnaireResponseItem;
42
+ qrItem: QuestionnaireResponseItem | null;
43
43
  }
44
44
 
45
45
  function OpenChoiceSelectAnswerValueSetItem(props: OpenChoiceSelectAnswerValueSetItemProps) {
@@ -18,7 +18,8 @@
18
18
  import React, { useState } from 'react';
19
19
  import type {
20
20
  PropsWithParentIsReadOnlyAttribute,
21
- PropsWithQrRepeatGroupChangeHandler
21
+ PropsWithQrRepeatGroupChangeHandler,
22
+ PropsWithShowMinimalViewAttribute
22
23
  } from '../../../interfaces/renderProps.interface';
23
24
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
24
25
  import useInitialiseRepeatGroups from '../../../hooks/useInitialiseRepeatGroups';
@@ -38,6 +39,7 @@ import Typography from '@mui/material/Typography';
38
39
 
39
40
  interface RepeatGroupProps
40
41
  extends PropsWithQrRepeatGroupChangeHandler,
42
+ PropsWithShowMinimalViewAttribute,
41
43
  PropsWithParentIsReadOnlyAttribute {
42
44
  qItem: QuestionnaireItem;
43
45
  qrItems: QuestionnaireResponseItem[];
@@ -45,7 +47,14 @@ interface RepeatGroupProps
45
47
  }
46
48
 
47
49
  function RepeatGroup(props: RepeatGroupProps) {
48
- const { qItem, qrItems, groupCardElevation, parentIsReadOnly, onQrRepeatGroupChange } = props;
50
+ const {
51
+ qItem,
52
+ qrItems,
53
+ groupCardElevation,
54
+ showMinimalView,
55
+ parentIsReadOnly,
56
+ onQrRepeatGroupChange
57
+ } = props;
49
58
 
50
59
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
51
60
 
@@ -97,13 +106,47 @@ function RepeatGroup(props: RepeatGroupProps) {
97
106
  ]);
98
107
  }
99
108
 
109
+ if (showMinimalView) {
110
+ return (
111
+ <QGroupContainerBox key={qItem.linkId} cardElevation={groupCardElevation} isRepeated={true}>
112
+ <Card elevation={groupCardElevation} sx={{ p: 2 }}>
113
+ {repeatGroups.map(({ nanoId, qrItem: nullableQrItem }, index) => {
114
+ const answeredQrItem = createEmptyQrItem(qItem);
115
+ if (nullableQrItem) {
116
+ answeredQrItem.item = nullableQrItem.item;
117
+ }
118
+
119
+ return (
120
+ <RepeatGroupItem
121
+ key={nanoId}
122
+ qItem={qItem}
123
+ answeredQrItem={answeredQrItem}
124
+ nullableQrItem={nullableQrItem}
125
+ numOfRepeatGroups={repeatGroups.length}
126
+ groupCardElevation={groupCardElevation + 1}
127
+ showMinimalView={showMinimalView}
128
+ parentIsReadOnly={parentIsReadOnly}
129
+ onDeleteItem={() => handleDeleteItem(index)}
130
+ onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
131
+ />
132
+ );
133
+ })}
134
+ </Card>
135
+ </QGroupContainerBox>
136
+ );
137
+ }
138
+
100
139
  return (
101
140
  <QGroupContainerBox key={qItem.linkId} cardElevation={groupCardElevation} isRepeated={true}>
102
141
  <Card elevation={groupCardElevation} sx={{ p: 3, py: 2.5, mb: 3.5 }}>
103
- <Typography variant="h6" color={readOnly ? 'text.secondary' : 'text.primary'}>
104
- <LabelWrapper qItem={qItem} readOnly={readOnly} />
105
- </Typography>
106
- <Divider sx={{ mt: 1, mb: 1.5 }} light />
142
+ {qItem.text ? (
143
+ <>
144
+ <Typography variant="h6" color={readOnly ? 'text.secondary' : 'text.primary'}>
145
+ <LabelWrapper qItem={qItem} readOnly={readOnly} />
146
+ </Typography>
147
+ <Divider sx={{ mt: 1, mb: 1.5 }} light />
148
+ </>
149
+ ) : null}
107
150
  <TransitionGroup>
108
151
  {repeatGroups.map(({ nanoId, qrItem: nullableQrItem }, index) => {
109
152
  const answeredQrItem = createEmptyQrItem(qItem);
@@ -21,14 +21,16 @@ import Box from '@mui/material/Box';
21
21
  import GroupItem from '../GroupItem/GroupItem';
22
22
  import type {
23
23
  PropsWithParentIsReadOnlyAttribute,
24
- PropsWithQrItemChangeHandler
24
+ PropsWithQrItemChangeHandler,
25
+ PropsWithShowMinimalViewAttribute
25
26
  } from '../../../interfaces/renderProps.interface';
26
27
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
27
28
  import DeleteItemButton from './DeleteItemButton';
28
29
  import useReadOnly from '../../../hooks/useReadOnly';
29
30
 
30
31
  interface RepeatGroupItemProps
31
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
32
+ extends PropsWithQrItemChangeHandler,
33
+ PropsWithShowMinimalViewAttribute,
32
34
  PropsWithParentIsReadOnlyAttribute {
33
35
  qItem: QuestionnaireItem;
34
36
  answeredQrItem: QuestionnaireResponseItem;
@@ -45,6 +47,7 @@ function RepeatGroupItem(props: RepeatGroupItemProps) {
45
47
  nullableQrItem,
46
48
  numOfRepeatGroups,
47
49
  groupCardElevation,
50
+ showMinimalView,
48
51
  parentIsReadOnly,
49
52
  onDeleteItem,
50
53
  onQrItemChange
@@ -64,12 +67,14 @@ function RepeatGroupItem(props: RepeatGroupItemProps) {
64
67
  onQrItemChange={onQrItemChange}
65
68
  />
66
69
  </Box>
67
- <DeleteItemButton
68
- nullableQrItem={nullableQrItem}
69
- numOfRepeatGroups={numOfRepeatGroups}
70
- readOnly={readOnly}
71
- onDeleteItem={onDeleteItem}
72
- />
70
+ {showMinimalView ? null : (
71
+ <DeleteItemButton
72
+ nullableQrItem={nullableQrItem}
73
+ numOfRepeatGroups={numOfRepeatGroups}
74
+ readOnly={readOnly}
75
+ onDeleteItem={onDeleteItem}
76
+ />
77
+ )}
73
78
  </RepeatGroupContainerStack>
74
79
  );
75
80
  }
@@ -26,16 +26,18 @@ import type {
26
26
  } from 'fhir/r4';
27
27
  import type {
28
28
  PropsWithParentIsReadOnlyAttribute,
29
- PropsWithQrItemChangeHandler
29
+ PropsWithQrItemChangeHandler,
30
+ PropsWithShowMinimalViewAttribute
30
31
  } from '../../../interfaces/renderProps.interface';
31
32
  import DeleteItemButton from './DeleteItemButton';
32
33
  import useReadOnly from '../../../hooks/useReadOnly';
33
34
 
34
35
  interface RepeatFieldProps
35
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
36
+ extends PropsWithQrItemChangeHandler,
37
+ PropsWithShowMinimalViewAttribute,
36
38
  PropsWithParentIsReadOnlyAttribute {
37
39
  qItem: QuestionnaireItem;
38
- qrItem: QuestionnaireResponseItem;
40
+ qrItem: QuestionnaireResponseItem | null;
39
41
  answer: QuestionnaireResponseItemAnswer | null;
40
42
  numOfRepeatAnswers: number;
41
43
  onDeleteAnswer: () => void;
@@ -48,6 +50,7 @@ function RepeatField(props: RepeatFieldProps) {
48
50
  answer,
49
51
  numOfRepeatAnswers,
50
52
  parentIsReadOnly,
53
+ showMinimalView,
51
54
  onDeleteAnswer,
52
55
  onQrItemChange
53
56
  } = props;
@@ -62,16 +65,19 @@ function RepeatField(props: RepeatFieldProps) {
62
65
  qrItem={qrItem}
63
66
  isRepeated={qItem.repeats ?? false}
64
67
  isTabled={false}
68
+ showMinimalView={showMinimalView}
65
69
  parentIsReadOnly={parentIsReadOnly}
66
70
  onQrItemChange={onQrItemChange}
67
71
  />
68
72
  </Box>
69
- <DeleteItemButton
70
- answer={answer}
71
- numOfRepeatAnswers={numOfRepeatAnswers}
72
- readOnly={readOnly}
73
- onDeleteAnswer={onDeleteAnswer}
74
- />
73
+ {showMinimalView ? null : (
74
+ <DeleteItemButton
75
+ answer={answer}
76
+ numOfRepeatAnswers={numOfRepeatAnswers}
77
+ readOnly={readOnly}
78
+ onDeleteAnswer={onDeleteAnswer}
79
+ />
80
+ )}
75
81
  </RepeatItemContainerStack>
76
82
  );
77
83
  }
@@ -20,6 +20,7 @@ import type {
20
20
  PropsWithParentIsReadOnlyAttribute,
21
21
  PropsWithQrItemChangeHandler
22
22
  } from '../../../interfaces/renderProps.interface';
23
+ import type { PropsWithShowMinimalViewAttribute } from '../../../interfaces/renderProps.interface';
23
24
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
24
25
  import { nanoid } from 'nanoid';
25
26
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
@@ -34,14 +35,15 @@ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
34
35
  import useReadOnly from '../../../hooks/useReadOnly';
35
36
 
36
37
  interface RepeatItemProps
37
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
38
+ extends PropsWithQrItemChangeHandler,
39
+ PropsWithShowMinimalViewAttribute,
38
40
  PropsWithParentIsReadOnlyAttribute {
39
41
  qItem: QuestionnaireItem;
40
- qrItem: QuestionnaireResponseItem;
42
+ qrItem: QuestionnaireResponseItem | null;
41
43
  }
42
44
 
43
45
  function RepeatItem(props: RepeatItemProps) {
44
- const { qItem, qrItem, parentIsReadOnly, onQrItemChange } = props;
46
+ const { qItem, qrItem, showMinimalView, parentIsReadOnly, onQrItemChange } = props;
45
47
 
46
48
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
47
49
  const { displayInstructions } = useRenderingExtensions(qItem);
@@ -88,6 +90,33 @@ function RepeatItem(props: RepeatItemProps) {
88
90
  ]);
89
91
  }
90
92
 
93
+ if (showMinimalView) {
94
+ return (
95
+ <>
96
+ {repeatAnswers.map(({ nanoId, answer }, index) => {
97
+ const repeatAnswerQrItem = createEmptyQrItem(qItem);
98
+ if (answer) {
99
+ repeatAnswerQrItem.answer = [answer];
100
+ }
101
+
102
+ return (
103
+ <RepeatField
104
+ key={nanoId}
105
+ qItem={qItem}
106
+ qrItem={repeatAnswerQrItem}
107
+ answer={answer}
108
+ numOfRepeatAnswers={repeatAnswers.length}
109
+ parentIsReadOnly={parentIsReadOnly}
110
+ showMinimalView={showMinimalView}
111
+ onDeleteAnswer={() => handleDeleteItem(index)}
112
+ onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
113
+ />
114
+ );
115
+ })}
116
+ </>
117
+ );
118
+ }
119
+
91
120
  return (
92
121
  <FullWidthFormComponentBox data-test="q-item-repeat-box">
93
122
  <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions} readOnly={readOnly}>
@@ -106,6 +135,7 @@ function RepeatItem(props: RepeatItemProps) {
106
135
  answer={answer}
107
136
  numOfRepeatAnswers={repeatAnswers.length}
108
137
  parentIsReadOnly={parentIsReadOnly}
138
+ showMinimalView={showMinimalView}
109
139
  onDeleteAnswer={() => handleDeleteItem(index)}
110
140
  onQrItemChange={(newQrItem) => handleAnswerChange(newQrItem, index)}
111
141
  />
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright 2023 Commonwealth Scientific and Industrial Research
3
+ * Organisation (CSIRO) ABN 41 687 119 230.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ export { default as RepeatItem } from './RepeatItem';