@aehrc/smart-forms-renderer 0.8.1 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/README.md +4 -2
  2. package/lib/components/FormComponents/BooleanItem/BooleanItem.d.ts +2 -2
  3. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +2 -2
  4. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  5. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +12 -12
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +3 -3
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +12 -12
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +3 -4
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +3 -3
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +2 -2
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +2 -2
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +2 -2
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +2 -2
  17. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.d.ts +18 -0
  18. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js +31 -0
  19. package/lib/components/FormComponents/CustomDateItem/CustomDateField2.js.map +1 -0
  20. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.d.ts +9 -0
  21. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js +68 -0
  22. package/lib/components/FormComponents/CustomDateItem/CustomDateItem.js.map +1 -0
  23. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.d.ts +9 -0
  24. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js +75 -0
  25. package/lib/components/FormComponents/CustomDateItem/CustomDateTimeField.js.map +1 -0
  26. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.d.ts +9 -0
  27. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js +75 -0
  28. package/lib/components/FormComponents/CustomDateItem/CustomDateTimePickerText2.js.map +1 -0
  29. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.d.ts +18 -0
  30. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js +33 -0
  31. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.js.map +1 -0
  32. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.d.ts +11 -0
  33. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js +55 -0
  34. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.js.map +1 -0
  35. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.d.ts +9 -0
  36. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js +13 -0
  37. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.js.map +1 -0
  38. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.d.ts +5 -0
  39. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js +20 -0
  40. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.js.map +1 -0
  41. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.d.ts +5 -0
  42. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js +27 -0
  43. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/hooks/useParseDates.js.map +1 -0
  44. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.d.ts +1 -0
  45. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js +18 -0
  46. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/index.js.map +1 -0
  47. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.d.ts +1 -0
  48. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js +18 -0
  49. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.js.map +1 -0
  50. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.d.ts +9 -0
  51. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js +121 -0
  52. package/lib/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.js.map +1 -0
  53. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.d.ts +9 -0
  54. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js +71 -0
  55. package/lib/components/FormComponents/CustomDateItem/customDateTimePickerText.js.map +1 -0
  56. package/lib/components/FormComponents/CustomDateItem/index.d.ts +1 -0
  57. package/lib/components/FormComponents/CustomDateItem/index.js +18 -0
  58. package/lib/components/FormComponents/CustomDateItem/index.js.map +1 -0
  59. package/lib/components/FormComponents/DateItem/DateItem.d.ts +3 -4
  60. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +2 -2
  61. package/lib/components/FormComponents/DecimalItem/DecimalItem.d.ts +2 -2
  62. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +2 -3
  63. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  64. package/lib/components/FormComponents/DisplayItem/DisplayBox.d.ts +0 -0
  65. package/lib/components/FormComponents/DisplayItem/DisplayBox.js +2 -0
  66. package/lib/components/FormComponents/DisplayItem/DisplayBox.js.map +1 -0
  67. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.d.ts +4 -0
  68. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js +35 -0
  69. package/lib/components/FormComponents/DisplayItem/DisplayBox.styles.js.map +1 -0
  70. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +2 -1
  71. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -1
  72. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js +0 -1
  73. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -1
  74. package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +3 -3
  75. package/lib/components/FormComponents/GridGroup/GridGroup.js +13 -8
  76. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
  77. package/lib/components/FormComponents/GridGroup/GridRow.d.ts +3 -4
  78. package/lib/components/FormComponents/GridGroup/GridRow.js +3 -3
  79. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
  80. package/lib/components/FormComponents/GridGroup/GridTable.d.ts +3 -3
  81. package/lib/components/FormComponents/GridGroup/GridTable.js +9 -4
  82. package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
  83. package/lib/components/FormComponents/GridGroup/index.d.ts +1 -0
  84. package/lib/components/FormComponents/GridGroup/index.js +18 -0
  85. package/lib/components/FormComponents/GridGroup/index.js.map +1 -0
  86. package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -2
  87. package/lib/components/FormComponents/GroupItem/GroupItem.js +2 -2
  88. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
  89. package/lib/components/FormComponents/GroupItem/GroupItem.styles.d.ts +1 -1
  90. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -2
  91. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +5 -6
  92. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
  93. package/lib/components/FormComponents/IntegerItem/IntegerItem.d.ts +2 -2
  94. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +2 -3
  95. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  96. package/lib/components/FormComponents/IntegerItem/SliderItem.d.ts +9 -0
  97. package/lib/components/FormComponents/IntegerItem/SliderItem.js +75 -0
  98. package/lib/components/FormComponents/IntegerItem/SliderItem.js.map +1 -0
  99. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +2 -2
  100. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -1
  101. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +2 -2
  102. package/lib/components/FormComponents/Lists.styles.d.ts +1 -1
  103. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +2 -2
  104. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +3 -3
  105. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +12 -12
  106. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  107. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +3 -3
  108. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +2 -2
  109. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
  110. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +2 -2
  111. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +2 -2
  112. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +2 -2
  113. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
  114. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +15 -4
  115. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
  116. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
  117. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +2 -2
  118. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
  119. package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +3 -3
  120. package/lib/components/FormComponents/RepeatItem/RepeatField.js +3 -3
  121. package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
  122. package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +3 -2
  123. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +11 -2
  124. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
  125. package/lib/components/FormComponents/RepeatItem/index.d.ts +1 -0
  126. package/lib/components/FormComponents/RepeatItem/index.js +18 -0
  127. package/lib/components/FormComponents/RepeatItem/index.js.map +1 -0
  128. package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +3 -3
  129. package/lib/components/FormComponents/SingleItem/SingleItem.js +2 -2
  130. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
  131. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +3 -3
  132. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +12 -7
  133. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
  134. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.d.ts +4 -0
  135. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js +35 -0
  136. package/lib/components/FormComponents/SliderItem/DisplayBox.styles.js.map +1 -0
  137. package/lib/components/FormComponents/SliderItem/Slider.styles.d.ts +6 -0
  138. package/lib/components/FormComponents/SliderItem/Slider.styles.js +33 -0
  139. package/lib/components/FormComponents/SliderItem/Slider.styles.js.map +1 -0
  140. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.d.ts +8 -0
  141. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js +28 -0
  142. package/lib/components/FormComponents/SliderItem/SliderDisplayValue.js.map +1 -0
  143. package/lib/components/FormComponents/SliderItem/SliderField.d.ts +16 -0
  144. package/lib/components/FormComponents/SliderItem/SliderField.js +41 -0
  145. package/lib/components/FormComponents/SliderItem/SliderField.js.map +1 -0
  146. package/lib/components/FormComponents/SliderItem/SliderItem.d.ts +9 -0
  147. package/lib/components/FormComponents/SliderItem/SliderItem.js +56 -0
  148. package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -0
  149. package/lib/components/FormComponents/SliderItem/SliderLabels.d.ts +7 -0
  150. package/lib/components/FormComponents/SliderItem/SliderLabels.js +32 -0
  151. package/lib/components/FormComponents/SliderItem/SliderLabels.js.map +1 -0
  152. package/lib/components/FormComponents/StringItem/StringItem.d.ts +2 -2
  153. package/lib/components/FormComponents/Tables/GroupTable.d.ts +3 -2
  154. package/lib/components/FormComponents/Tables/GroupTable.js +18 -1
  155. package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
  156. package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +3 -4
  157. package/lib/components/FormComponents/Tables/GroupTableRow.js +3 -3
  158. package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
  159. package/lib/components/FormComponents/TextItem/TextItem.d.ts +2 -2
  160. package/lib/components/FormComponents/TimeItem/TimeItem.d.ts +2 -2
  161. package/lib/components/FormComponents/UrlItem/UrlItem.d.ts +2 -2
  162. package/lib/components/FormComponents/index.d.ts +3 -0
  163. package/lib/components/FormComponents/index.js +3 -0
  164. package/lib/components/FormComponents/index.js.map +1 -1
  165. package/lib/components/Lists.styles.d.ts +1 -1
  166. package/lib/components/Renderer/BaseRenderer.js +3 -5
  167. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  168. package/lib/components/Renderer/FormBodyCollapsible.d.ts +2 -2
  169. package/lib/components/Renderer/FormBodyCollapsible.js +6 -5
  170. package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
  171. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.d.ts +2 -2
  172. package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js.map +1 -1
  173. package/lib/components/Renderer/FormBodyTabbed.d.ts +2 -2
  174. package/lib/components/Renderer/FormBodyTabbed.js +6 -5
  175. package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
  176. package/lib/components/Renderer/FormTopLevelItem.d.ts +2 -2
  177. package/lib/components/Renderer/FormTopLevelItem.js +3 -1
  178. package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
  179. package/lib/components/Renderer/SmartFormsRenderer.js +1 -1
  180. package/lib/components/Renderer/SmartFormsRenderer.js.map +1 -1
  181. package/lib/hooks/useDateSeparatorValidation.d.ts +2 -0
  182. package/lib/hooks/useDateSeparatorValidation.js +25 -0
  183. package/lib/hooks/useDateSeparatorValidation.js.map +1 -0
  184. package/lib/hooks/useDateValidation.d.ts +2 -0
  185. package/lib/hooks/useDateValidation.js +61 -0
  186. package/lib/hooks/useDateValidation.js.map +1 -0
  187. package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -1
  188. package/lib/hooks/useDecimalCalculatedExpression.js +3 -3
  189. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -1
  190. package/lib/hooks/useInitialiseRepeatAnswers.d.ts +1 -1
  191. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
  192. package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -1
  193. package/lib/hooks/useIntegerCalculatedExpression.js +3 -3
  194. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -1
  195. package/lib/hooks/useSliderExtensions.d.ts +10 -0
  196. package/lib/hooks/useSliderExtensions.js +37 -0
  197. package/lib/hooks/useSliderExtensions.js.map +1 -0
  198. package/lib/hooks/useTerminologyServerQuery.js +0 -1
  199. package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
  200. package/lib/index.d.ts +3 -3
  201. package/lib/index.js +15 -6
  202. package/lib/index.js.map +1 -1
  203. package/lib/interfaces/index.d.ts +2 -0
  204. package/lib/interfaces/index.js +18 -0
  205. package/lib/interfaces/index.js.map +1 -0
  206. package/lib/interfaces/questionnaireStore.interface.d.ts +1 -0
  207. package/lib/interfaces/renderProps.interface.d.ts +4 -3
  208. package/lib/stores/useQuestionnaireStore.d.ts +1 -0
  209. package/lib/stores/useQuestionnaireStore.js +28 -12
  210. package/lib/stores/useQuestionnaireStore.js.map +1 -1
  211. package/lib/test.d.ts +4 -0
  212. package/lib/test.js +18 -0
  213. package/lib/test.js.map +1 -0
  214. package/lib/theme/customGlobalStyles.js +2 -5
  215. package/lib/theme/customGlobalStyles.js.map +1 -1
  216. package/lib/theme/typography.js +9 -9
  217. package/lib/theme/typography.js.map +1 -1
  218. package/lib/utils/calculatedExpression.d.ts +5 -1
  219. package/lib/utils/calculatedExpression.js +21 -16
  220. package/lib/utils/calculatedExpression.js.map +1 -1
  221. package/lib/utils/dayjsExtend.d.ts +1 -0
  222. package/lib/utils/dayjsExtend.js +22 -0
  223. package/lib/utils/dayjsExtend.js.map +1 -0
  224. package/lib/utils/enableWhenExpression.d.ts +5 -1
  225. package/lib/utils/enableWhenExpression.js +26 -21
  226. package/lib/utils/enableWhenExpression.js.map +1 -1
  227. package/lib/utils/fhirpath.d.ts +3 -1
  228. package/lib/utils/fhirpath.js +25 -15
  229. package/lib/utils/fhirpath.js.map +1 -1
  230. package/lib/utils/index.d.ts +1 -0
  231. package/lib/utils/index.js +1 -0
  232. package/lib/utils/index.js.map +1 -1
  233. package/lib/utils/initialiseForm.d.ts +2 -0
  234. package/lib/utils/initialiseForm.js +13 -5
  235. package/lib/utils/initialiseForm.js.map +1 -1
  236. package/lib/utils/itemControl.d.ts +12 -0
  237. package/lib/utils/itemControl.js +30 -0
  238. package/lib/utils/itemControl.js.map +1 -1
  239. package/lib/utils/launchContext.d.ts +0 -0
  240. package/lib/utils/launchContext.js +2 -0
  241. package/lib/utils/launchContext.js.map +1 -0
  242. package/lib/utils/mapItem.d.ts +1 -1
  243. package/lib/utils/populateContexts.d.ts +2 -12
  244. package/lib/utils/populateContexts.js +0 -36
  245. package/lib/utils/populateContexts.js.map +1 -1
  246. package/lib/utils/qrItem.d.ts +1 -7
  247. package/lib/utils/qrItem.js +1 -12
  248. package/lib/utils/qrItem.js.map +1 -1
  249. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -2
  250. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
  251. package/lib/utils/removeHidden.js +2 -1
  252. package/lib/utils/removeHidden.js.map +1 -1
  253. package/lib/utils/repopulateIntoResponse.js +90 -29
  254. package/lib/utils/repopulateIntoResponse.js.map +1 -1
  255. package/lib/utils/repopulateItems.d.ts +14 -1
  256. package/lib/utils/repopulateItems.js +251 -70
  257. package/lib/utils/repopulateItems.js.map +1 -1
  258. package/lib/utils/repopulateRepeatGroup.js +9 -1
  259. package/lib/utils/repopulateRepeatGroup.js.map +1 -1
  260. package/lib/utils/slider.d.ts +28 -0
  261. package/lib/utils/slider.js +89 -0
  262. package/lib/utils/slider.js.map +1 -0
  263. package/package.json +18 -15
  264. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +2 -2
  265. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +2 -2
  266. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +33 -33
  267. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +35 -35
  268. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +8 -8
  269. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +2 -2
  270. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +2 -2
  271. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +2 -2
  272. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +2 -2
  273. package/src/components/FormComponents/CustomDateItem/CustomDateItem.tsx +140 -0
  274. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/CustomDateField.tsx +96 -0
  275. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePicker.tsx +81 -0
  276. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/DatePickerButton.tsx +33 -0
  277. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/MuiDatePicker.ts +22 -0
  278. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/index.ts +18 -0
  279. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/index.ts +18 -0
  280. package/src/components/FormComponents/CustomDateItem/customDateTimePicker/utils/parseDates.ts +154 -0
  281. package/src/components/FormComponents/CustomDateItem/index.ts +18 -0
  282. package/src/components/FormComponents/DateItem/DateItem.tsx +3 -3
  283. package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +2 -2
  284. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +4 -5
  285. package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +0 -1
  286. package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +2 -1
  287. package/src/components/FormComponents/GridGroup/GridGroup.tsx +41 -15
  288. package/src/components/FormComponents/GridGroup/GridRow.tsx +10 -9
  289. package/src/components/FormComponents/GridGroup/GridTable.tsx +29 -9
  290. package/src/components/FormComponents/GridGroup/index.ts +18 -0
  291. package/src/components/FormComponents/GroupItem/GroupItem.tsx +5 -6
  292. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +7 -8
  293. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +4 -5
  294. package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +2 -2
  295. package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +2 -2
  296. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +2 -2
  297. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +43 -43
  298. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +6 -6
  299. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +2 -2
  300. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +2 -2
  301. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +2 -2
  302. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +49 -6
  303. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +13 -8
  304. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +15 -9
  305. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +33 -3
  306. package/src/components/FormComponents/RepeatItem/index.ts +18 -0
  307. package/src/components/FormComponents/SingleItem/SingleItem.tsx +6 -6
  308. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +27 -11
  309. package/src/components/FormComponents/SliderItem/Slider.styles.ts +34 -0
  310. package/src/components/FormComponents/SliderItem/SliderDisplayValue.tsx +43 -0
  311. package/src/components/FormComponents/SliderItem/SliderField.tsx +88 -0
  312. package/src/components/FormComponents/SliderItem/SliderItem.tsx +115 -0
  313. package/src/components/FormComponents/SliderItem/SliderLabels.tsx +53 -0
  314. package/src/components/FormComponents/StringItem/StringItem.tsx +2 -2
  315. package/src/components/FormComponents/Tables/GroupTable.tsx +55 -3
  316. package/src/components/FormComponents/Tables/GroupTableRow.tsx +10 -9
  317. package/src/components/FormComponents/TextItem/TextItem.tsx +2 -2
  318. package/src/components/FormComponents/TimeItem/TimeItem.tsx +2 -2
  319. package/src/components/FormComponents/UrlItem/UrlItem.tsx +2 -2
  320. package/src/components/FormComponents/index.ts +3 -0
  321. package/src/components/Renderer/BaseRenderer.tsx +5 -12
  322. package/src/components/Renderer/FormBodyCollapsible.tsx +9 -7
  323. package/src/components/Renderer/FormBodySingleCollapsibleWrapper.tsx +2 -3
  324. package/src/components/Renderer/FormBodyTabbed.tsx +9 -7
  325. package/src/components/Renderer/FormTopLevelItem.tsx +14 -11
  326. package/src/components/Renderer/SmartFormsRenderer.tsx +2 -1
  327. package/src/hooks/useDateValidation.tsx +79 -0
  328. package/src/hooks/useDecimalCalculatedExpression.ts +3 -4
  329. package/src/hooks/useInitialiseRepeatAnswers.ts +1 -1
  330. package/src/hooks/useIntegerCalculatedExpression.ts +3 -4
  331. package/src/hooks/useSliderExtensions.ts +50 -0
  332. package/src/hooks/useTerminologyServerQuery.ts +0 -2
  333. package/src/index.ts +12 -9
  334. package/src/interfaces/questionnaireStore.interface.ts +1 -0
  335. package/src/interfaces/renderProps.interface.ts +4 -3
  336. package/src/stores/useQuestionnaireStore.ts +39 -16
  337. package/src/theme/customGlobalStyles.tsx +2 -5
  338. package/src/theme/typography.ts +9 -9
  339. package/src/utils/calculatedExpression.ts +41 -28
  340. package/src/utils/dayjsExtend.ts +23 -0
  341. package/src/utils/enableWhenExpression.ts +49 -34
  342. package/src/utils/fhirpath.ts +50 -31
  343. package/src/utils/index.ts +1 -0
  344. package/src/utils/initialiseForm.ts +15 -5
  345. package/src/utils/itemControl.ts +32 -0
  346. package/src/utils/mapItem.ts +1 -1
  347. package/src/utils/populateContexts.ts +2 -61
  348. package/src/utils/qrItem.ts +1 -16
  349. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +4 -2
  350. package/src/utils/removeHidden.ts +2 -1
  351. package/src/utils/repopulateIntoResponse.ts +134 -43
  352. package/src/utils/repopulateItems.ts +379 -101
  353. package/src/utils/slider.ts +112 -0
  354. package/src/utils/populateInputParams.ts +0 -242
  355. package/src/utils/repopulateRepeatGroup.ts +0 -68
@@ -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';
@@ -22,7 +22,7 @@ import type {
22
22
  PropsWithIsTabledAttribute,
23
23
  PropsWithParentIsReadOnlyAttribute,
24
24
  PropsWithQrItemChangeHandler,
25
- PropsWithTextShownAttribute
25
+ PropsWithShowMinimalViewAttribute
26
26
  } from '../../../interfaces/renderProps.interface';
27
27
  import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
28
28
  import SingleItemSwitcher from './SingleItemSwitcher';
@@ -30,17 +30,17 @@ import useHidden from '../../../hooks/useHidden';
30
30
  import useReadOnly from '../../../hooks/useReadOnly';
31
31
 
32
32
  interface SingleItemProps
33
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
33
+ extends PropsWithQrItemChangeHandler,
34
34
  PropsWithIsRepeatedAttribute,
35
35
  PropsWithIsTabledAttribute,
36
- PropsWithTextShownAttribute,
36
+ PropsWithShowMinimalViewAttribute,
37
37
  PropsWithParentIsReadOnlyAttribute {
38
38
  qItem: QuestionnaireItem;
39
- qrItem: QuestionnaireResponseItem;
39
+ qrItem: QuestionnaireResponseItem | null;
40
40
  }
41
41
 
42
42
  function SingleItem(props: SingleItemProps) {
43
- const { qItem, qrItem, isRepeated, isTabled, textShown, parentIsReadOnly, onQrItemChange } =
43
+ const { qItem, qrItem, isRepeated, isTabled, showMinimalView, parentIsReadOnly, onQrItemChange } =
44
44
  props;
45
45
 
46
46
  const updateEnableWhenItem = useQuestionnaireStore((state) => state.updateEnableWhenItem);
@@ -67,7 +67,7 @@ function SingleItem(props: SingleItemProps) {
67
67
  qrItem={qrItem}
68
68
  isRepeated={isRepeated}
69
69
  isTabled={isTabled}
70
- textShown={textShown}
70
+ showMinimalView={showMinimalView}
71
71
  parentIsReadOnly={readOnly}
72
72
  onQrItemChange={handleQrItemChange}
73
73
  />
@@ -25,31 +25,33 @@ import type {
25
25
  PropsWithIsTabledAttribute,
26
26
  PropsWithParentIsReadOnlyAttribute,
27
27
  PropsWithQrItemChangeHandler,
28
- PropsWithTextShownAttribute
28
+ PropsWithShowMinimalViewAttribute
29
29
  } from '../../../interfaces/renderProps.interface';
30
30
  import StringItem from '../StringItem/StringItem';
31
31
  import BooleanItem from '../BooleanItem/BooleanItem';
32
32
  import TimeItem from '../TimeItem/TimeItem';
33
33
  import DateTimeItem from '../DateTimeItem/DateTimeItem';
34
- import DateItem from '../DateItem/DateItem';
35
34
  import TextItem from '../TextItem/TextItem';
36
35
  import DisplayItem from '../DisplayItem/DisplayItem';
37
- import IntegerItem from '../IntegerItem/IntegerItem';
38
36
  import DecimalItem from '../DecimalItem/DecimalItem';
39
37
  import UrlItem from '../UrlItem/UrlItem';
38
+ import CustomDateItem from '../CustomDateItem/CustomDateItem';
39
+ import { isSpecificItemControl } from '../../../utils';
40
+ import SliderItem from '../SliderItem/SliderItem';
41
+ import IntegerItem from '../IntegerItem/IntegerItem';
40
42
 
41
43
  interface SingleItemSwitcherProps
42
- extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
44
+ extends PropsWithQrItemChangeHandler,
43
45
  PropsWithIsRepeatedAttribute,
44
46
  PropsWithIsTabledAttribute,
45
- PropsWithTextShownAttribute,
47
+ PropsWithShowMinimalViewAttribute,
46
48
  PropsWithParentIsReadOnlyAttribute {
47
49
  qItem: QuestionnaireItem;
48
- qrItem: QuestionnaireResponseItem;
50
+ qrItem: QuestionnaireResponseItem | null;
49
51
  }
50
52
 
51
53
  function SingleItemSwitcher(props: SingleItemSwitcherProps) {
52
- const { qItem, qrItem, isRepeated, isTabled, textShown, parentIsReadOnly, onQrItemChange } =
54
+ const { qItem, qrItem, isRepeated, isTabled, showMinimalView, parentIsReadOnly, onQrItemChange } =
53
55
  props;
54
56
 
55
57
  switch (qItem.type) {
@@ -88,7 +90,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
88
90
  );
89
91
  case 'date':
90
92
  return (
91
- <DateItem
93
+ <CustomDateItem
92
94
  qItem={qItem}
93
95
  qrItem={qrItem}
94
96
  isRepeated={isRepeated}
@@ -121,6 +123,19 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
121
123
  case 'display':
122
124
  return <DisplayItem qItem={qItem} />;
123
125
  case 'integer':
126
+ if (isSpecificItemControl(qItem, 'slider')) {
127
+ return (
128
+ <SliderItem
129
+ qItem={qItem}
130
+ qrItem={qrItem}
131
+ isRepeated={isRepeated}
132
+ isTabled={isTabled}
133
+ parentIsReadOnly={parentIsReadOnly}
134
+ onQrItemChange={onQrItemChange}
135
+ />
136
+ );
137
+ }
138
+
124
139
  return (
125
140
  <IntegerItem
126
141
  qItem={qItem}
@@ -149,7 +164,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
149
164
  qrItem={qrItem}
150
165
  isRepeated={isRepeated}
151
166
  isTabled={isTabled}
152
- textShown={textShown}
167
+ showMinimalView={showMinimalView}
153
168
  parentIsReadOnly={parentIsReadOnly}
154
169
  onQrItemChange={onQrItemChange}
155
170
  />
@@ -161,7 +176,7 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
161
176
  qrItem={qrItem}
162
177
  isRepeated={isRepeated}
163
178
  isTabled={isTabled}
164
- textShown={textShown}
179
+ showMinimalView={showMinimalView}
165
180
  parentIsReadOnly={parentIsReadOnly}
166
181
  onQrItemChange={onQrItemChange}
167
182
  />
@@ -180,7 +195,8 @@ function SingleItemSwitcher(props: SingleItemSwitcherProps) {
180
195
  default:
181
196
  return (
182
197
  <Typography>
183
- Item type not supported yet. Only R4 datatypes are supported at the moment.
198
+ Item type not supported yet, or something has went wrong. If your questionnnaire is not a
199
+ FHIR R4 resource, there might be issues rendering it.
184
200
  </Typography>
185
201
  );
186
202
  }
@@ -0,0 +1,34 @@
1
+ /*
2
+ * Copyright 2023 Commonwealth Scientific and Industrial Research
3
+ * Organisation (CSIRO) ABN 41 687 119 230.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ import { alpha, styled } from '@mui/material/styles';
19
+ import { Box } from '@mui/material';
20
+
21
+ export const SliderDisplayBox = styled(Box, {
22
+ shouldForwardProp: (prop) => prop !== 'hasLabels'
23
+ })<{ hasLabels: boolean }>(({ theme, hasLabels }) => ({
24
+ display: 'flex',
25
+ alignItems: 'center',
26
+ justifyContent: 'center',
27
+ margin: '0 auto',
28
+ marginBottom: hasLabels ? -20 : 0,
29
+ padding: theme.spacing(0.5),
30
+ borderRadius: Number(theme.shape.borderRadius) * 0.5,
31
+ border: `1px solid ${alpha(theme.palette.text.disabled, 0.5)}`,
32
+ minWidth: 28,
33
+ height: 18
34
+ }));
@@ -0,0 +1,43 @@
1
+ /*
2
+ * Copyright 2023 Commonwealth Scientific and Industrial Research
3
+ * Organisation (CSIRO) ABN 41 687 119 230.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ import React from 'react';
19
+ import { SliderDisplayBox } from './Slider.styles';
20
+ import Typography from '@mui/material/Typography';
21
+ import { pxToRem } from '../../../theme/typography';
22
+
23
+ interface SliderDisplayValueProps {
24
+ value: number;
25
+ hasLabels: boolean;
26
+ isInteracted: boolean;
27
+ }
28
+
29
+ function SliderDisplayValue(props: SliderDisplayValueProps) {
30
+ const { value, hasLabels, isInteracted } = props;
31
+
32
+ const valueToDisplay = isInteracted ? value : '-';
33
+
34
+ return (
35
+ <SliderDisplayBox hasLabels={hasLabels}>
36
+ <Typography textAlign="center" color="text.disabled" fontSize={pxToRem(9.5)}>
37
+ {valueToDisplay}
38
+ </Typography>
39
+ </SliderDisplayBox>
40
+ );
41
+ }
42
+
43
+ export default SliderDisplayValue;
@@ -0,0 +1,88 @@
1
+ /*
2
+ * Copyright 2023 Commonwealth Scientific and Industrial Research
3
+ * Organisation (CSIRO) ABN 41 687 119 230.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ import React from 'react';
19
+ import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
20
+ import Slider from '@mui/material/Slider';
21
+ import { getSliderMarks } from '../../../utils/slider';
22
+ import Stack from '@mui/material/Stack';
23
+ import SliderLabels from './SliderLabels';
24
+ import SliderDisplayValue from './SliderDisplayValue';
25
+
26
+ interface SliderFieldProps extends PropsWithIsTabledAttribute {
27
+ linkId: string;
28
+ value: number;
29
+ minValue: number;
30
+ minLabel: string;
31
+ maxValue: number;
32
+ maxLabel: string;
33
+ stepValue: number;
34
+ isInteracted: boolean;
35
+ readOnly: boolean;
36
+ onValueChange: (newValue: number) => void;
37
+ }
38
+
39
+ function SliderField(props: SliderFieldProps) {
40
+ const {
41
+ linkId,
42
+ value,
43
+ minValue,
44
+ maxValue,
45
+ stepValue,
46
+ minLabel,
47
+ maxLabel,
48
+ isInteracted,
49
+ readOnly,
50
+ isTabled,
51
+ onValueChange
52
+ } = props;
53
+
54
+ const sliderMarks = getSliderMarks(minValue, maxValue, minLabel, maxLabel, stepValue);
55
+
56
+ const sliderSx = {
57
+ maxWidth: !isTabled ? 280 : 3000,
58
+ minWidth: 160
59
+ };
60
+
61
+ const hasLabels = !!(minLabel || maxLabel);
62
+
63
+ return (
64
+ <Stack sx={{ ...sliderSx }}>
65
+ <SliderDisplayValue value={value} hasLabels={hasLabels} isInteracted={isInteracted} />
66
+ {hasLabels ? <SliderLabels minLabel={minLabel} maxLabel={maxLabel} /> : null}
67
+ <Slider
68
+ id={linkId}
69
+ value={value}
70
+ min={minValue}
71
+ max={maxValue}
72
+ step={stepValue}
73
+ marks={sliderMarks}
74
+ sx={{ ...sliderSx }}
75
+ onChange={(_, newValue) => {
76
+ if (typeof newValue === 'number') {
77
+ onValueChange(newValue);
78
+ }
79
+ }}
80
+ disabled={readOnly}
81
+ valueLabelDisplay="auto"
82
+ data-test="q-item-slider-field"
83
+ />
84
+ </Stack>
85
+ );
86
+ }
87
+
88
+ export default SliderField;