@aehrc/smart-forms-renderer 0.3.0 → 0.5.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 (710) hide show
  1. package/.storybook/main.ts +28 -0
  2. package/.storybook/preview.ts +34 -0
  3. package/__mocks__/zustand.ts +60 -0
  4. package/jest.config.ts +16 -0
  5. package/lib/api/populate.js +63 -0
  6. package/lib/api/populate.js.map +1 -0
  7. package/{dist → lib}/components/Alert.styles.d.ts +5 -5
  8. package/lib/components/Alert.styles.js +40 -0
  9. package/lib/components/Alert.styles.js.map +1 -0
  10. package/lib/components/BackToTopButton/BackToTopButton.js +32 -0
  11. package/lib/components/BackToTopButton/BackToTopButton.js.map +1 -0
  12. package/{dist → lib}/components/Box.styles.d.ts +15 -15
  13. package/lib/components/Box.styles.js +30 -0
  14. package/lib/components/Box.styles.js.map +1 -0
  15. package/lib/components/FormComponents/BooleanItem/BooleanField.js +24 -0
  16. package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -0
  17. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +49 -0
  18. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -0
  19. package/lib/components/FormComponents/DateItem/DateField.js +31 -0
  20. package/lib/components/FormComponents/DateItem/DateField.js.map +1 -0
  21. package/lib/components/FormComponents/DateItem/DateItem.js +52 -0
  22. package/lib/components/FormComponents/DateItem/DateItem.js.map +1 -0
  23. package/lib/components/FormComponents/DateTimeItem/DateTimeField.js +33 -0
  24. package/lib/components/FormComponents/DateTimeItem/DateTimeField.js.map +1 -0
  25. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js +52 -0
  26. package/lib/components/FormComponents/DateTimeItem/DateTimeItem.js.map +1 -0
  27. package/lib/components/FormComponents/DecimalItem/DecimalField.js +30 -0
  28. package/lib/components/FormComponents/DecimalItem/DecimalField.js.map +1 -0
  29. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +80 -0
  30. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -0
  31. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js +26 -0
  32. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.js.map +1 -0
  33. package/{dist → lib}/components/FormComponents/DisplayItem/DisplayInstructions.styles.d.ts +5 -5
  34. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js +23 -0
  35. package/lib/components/FormComponents/DisplayItem/DisplayInstructions.styles.js.map +1 -0
  36. package/lib/components/FormComponents/DisplayItem/DisplayItem.js +31 -0
  37. package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -0
  38. package/{dist → lib}/components/FormComponents/GridGroup/GridGroup.d.ts +1 -1
  39. package/lib/components/FormComponents/GridGroup/GridGroup.js +58 -0
  40. package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -0
  41. package/{dist → lib}/components/FormComponents/GridGroup/GridRow.d.ts +1 -1
  42. package/lib/components/FormComponents/GridGroup/GridRow.js +55 -0
  43. package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -0
  44. package/lib/components/FormComponents/GridGroup/GridTable.js +42 -0
  45. package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -0
  46. package/lib/components/FormComponents/GroupItem/GroupHeading.js +39 -0
  47. package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -0
  48. package/{dist → lib}/components/FormComponents/GroupItem/GroupItem.d.ts +1 -1
  49. package/lib/components/FormComponents/GroupItem/GroupItem.js +62 -0
  50. package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -0
  51. package/{dist → lib}/components/FormComponents/GroupItem/GroupItem.styles.d.ts +5 -5
  52. package/lib/components/FormComponents/GroupItem/GroupItem.styles.js +27 -0
  53. package/lib/components/FormComponents/GroupItem/GroupItem.styles.js.map +1 -0
  54. package/{dist → lib}/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +1 -1
  55. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +73 -0
  56. package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -0
  57. package/lib/components/FormComponents/GroupItem/NextTabButton.js +25 -0
  58. package/lib/components/FormComponents/GroupItem/NextTabButton.js.map +1 -0
  59. package/lib/components/FormComponents/GroupItem/NextTabButtonWrapper.js +55 -0
  60. package/lib/components/FormComponents/GroupItem/NextTabButtonWrapper.js.map +1 -0
  61. package/lib/components/FormComponents/IntegerItem/IntegerField.js +30 -0
  62. package/lib/components/FormComponents/IntegerItem/IntegerField.js.map +1 -0
  63. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +73 -0
  64. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -0
  65. package/lib/components/FormComponents/Item.styles.d.ts +6 -0
  66. package/lib/components/FormComponents/Item.styles.js +27 -0
  67. package/lib/components/FormComponents/Item.styles.js.map +1 -0
  68. package/lib/components/FormComponents/ItemParts/ContextDisplayItem.js +29 -0
  69. package/lib/components/FormComponents/ItemParts/ContextDisplayItem.js.map +1 -0
  70. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +26 -0
  71. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -0
  72. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +31 -0
  73. package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -0
  74. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +45 -0
  75. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -0
  76. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +32 -0
  77. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -0
  78. package/lib/components/FormComponents/ItemParts/QItemCheckboxSingle.js +24 -0
  79. package/lib/components/FormComponents/ItemParts/QItemCheckboxSingle.js.map +1 -0
  80. package/lib/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.js +33 -0
  81. package/lib/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.js.map +1 -0
  82. package/lib/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.js +31 -0
  83. package/lib/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.js.map +1 -0
  84. package/{dist → lib}/components/FormComponents/Lists.styles.d.ts +5 -5
  85. package/lib/components/FormComponents/Lists.styles.js +38 -0
  86. package/lib/components/FormComponents/Lists.styles.js.map +1 -0
  87. package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoice.d.ts +1 -1
  88. package/lib/components/FormComponents/QItemChoice/QItemChoice.js +61 -0
  89. package/lib/components/FormComponents/QItemChoice/QItemChoice.js.map +1 -0
  90. package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.d.ts +1 -1
  91. package/lib/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.js +85 -0
  92. package/lib/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.js.map +1 -0
  93. package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.js +70 -0
  94. package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.js.map +1 -0
  95. package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.js +66 -0
  96. package/lib/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.js.map +1 -0
  97. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.js +70 -0
  98. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.js.map +1 -0
  99. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.js +70 -0
  100. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.js.map +1 -0
  101. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.js +24 -0
  102. package/lib/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.js.map +1 -0
  103. package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.js +70 -0
  104. package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.js.map +1 -0
  105. package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.js +80 -0
  106. package/lib/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.js.map +1 -0
  107. package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoice.d.ts +1 -1
  108. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoice.js +49 -0
  109. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoice.js.map +1 -0
  110. package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.d.ts +1 -1
  111. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.js +104 -0
  112. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.js.map +1 -0
  113. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.js +105 -0
  114. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.js.map +1 -0
  115. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.js +116 -0
  116. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.js.map +1 -0
  117. package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.d.ts +1 -1
  118. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.js +74 -0
  119. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.js.map +1 -0
  120. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.js +66 -0
  121. package/lib/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.js.map +1 -0
  122. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +27 -0
  123. package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -0
  124. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +30 -0
  125. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -0
  126. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +81 -0
  127. package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -0
  128. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +30 -0
  129. package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -0
  130. package/lib/components/FormComponents/RepeatItem/AddItemButton.js +27 -0
  131. package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -0
  132. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js +30 -0
  133. package/lib/components/FormComponents/RepeatItem/DeleteItemButton.js.map +1 -0
  134. package/lib/components/FormComponents/RepeatItem/RepeatField.js +31 -0
  135. package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -0
  136. package/lib/components/FormComponents/RepeatItem/RepeatItem.js +69 -0
  137. package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -0
  138. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +22 -0
  139. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.js +29 -0
  140. package/lib/components/FormComponents/RepeatItem/RepeatItem.styles.js.map +1 -0
  141. package/lib/components/FormComponents/SingleItem/SingleItem.js +32 -0
  142. package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -0
  143. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +63 -0
  144. package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -0
  145. package/lib/components/FormComponents/StringItem/StringField.js +30 -0
  146. package/lib/components/FormComponents/StringItem/StringField.js.map +1 -0
  147. package/lib/components/FormComponents/StringItem/StringItem.js +71 -0
  148. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -0
  149. package/lib/components/FormComponents/Tables/DeleteRowButton.js +31 -0
  150. package/lib/components/FormComponents/Tables/DeleteRowButton.js.map +1 -0
  151. package/{dist → lib}/components/FormComponents/Tables/QItemGroupTable.d.ts +1 -1
  152. package/lib/components/FormComponents/Tables/QItemGroupTable.js +99 -0
  153. package/lib/components/FormComponents/Tables/QItemGroupTable.js.map +1 -0
  154. package/{dist → lib}/components/FormComponents/Tables/QItemGroupTableRow.d.ts +1 -1
  155. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js +46 -0
  156. package/lib/components/FormComponents/Tables/QItemGroupTableRow.js.map +1 -0
  157. package/lib/components/FormComponents/Tables/Table.styles.js +46 -0
  158. package/lib/components/FormComponents/Tables/Table.styles.js.map +1 -0
  159. package/lib/components/FormComponents/TextItem/TextField.js +29 -0
  160. package/lib/components/FormComponents/TextItem/TextField.js.map +1 -0
  161. package/lib/components/FormComponents/TextItem/TextItem.js +71 -0
  162. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -0
  163. package/{dist → lib}/components/FormComponents/Textfield.styles.d.ts +1 -1
  164. package/lib/components/FormComponents/Textfield.styles.js +27 -0
  165. package/lib/components/FormComponents/Textfield.styles.js.map +1 -0
  166. package/lib/components/FormComponents/TimeItem/TimeField.js +30 -0
  167. package/lib/components/FormComponents/TimeItem/TimeField.js.map +1 -0
  168. package/lib/components/FormComponents/TimeItem/TimeItem.js +52 -0
  169. package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -0
  170. package/lib/components/FormComponents/Typography.styles.d.ts +6 -0
  171. package/lib/components/FormComponents/Typography.styles.js +23 -0
  172. package/lib/components/FormComponents/Typography.styles.js.map +1 -0
  173. package/lib/components/FormComponents/UrlItem/UrlField.js +25 -0
  174. package/lib/components/FormComponents/UrlItem/UrlField.js.map +1 -0
  175. package/lib/components/FormComponents/UrlItem/UrlItem.js +61 -0
  176. package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -0
  177. package/lib/components/FormRenderer/BaseRenderer.js +54 -0
  178. package/lib/components/FormRenderer/BaseRenderer.js.map +1 -0
  179. package/lib/components/FormRenderer/FormBodyCollapsible.js +57 -0
  180. package/lib/components/FormRenderer/FormBodyCollapsible.js.map +1 -0
  181. package/lib/components/FormRenderer/FormBodySingleCollapsible.js +39 -0
  182. package/lib/components/FormRenderer/FormBodySingleCollapsible.js.map +1 -0
  183. package/{dist → lib}/components/FormRenderer/FormBodySingleCollapsibleWrapper.d.ts +1 -1
  184. package/lib/components/FormRenderer/FormBodySingleCollapsibleWrapper.js +31 -0
  185. package/lib/components/FormRenderer/FormBodySingleCollapsibleWrapper.js.map +1 -0
  186. package/lib/components/FormRenderer/FormBodyTabbed.js +60 -0
  187. package/lib/components/FormRenderer/FormBodyTabbed.js.map +1 -0
  188. package/lib/components/FormRenderer/FormRenderer.js +54 -0
  189. package/lib/components/FormRenderer/FormRenderer.js.map +1 -0
  190. package/lib/components/FormRenderer/FormTitle.js +30 -0
  191. package/lib/components/FormRenderer/FormTitle.js.map +1 -0
  192. package/lib/components/FormRenderer/FormTopLevelItem.js +45 -0
  193. package/lib/components/FormRenderer/FormTopLevelItem.js.map +1 -0
  194. package/lib/components/FormRenderer/SmartFormsRenderer.js +39 -0
  195. package/lib/components/FormRenderer/SmartFormsRenderer.js.map +1 -0
  196. package/lib/components/FormRenderer/index.js +19 -0
  197. package/lib/components/FormRenderer/index.js.map +1 -0
  198. package/lib/components/Iconify/Iconify.js +26 -0
  199. package/lib/components/Iconify/Iconify.js.map +1 -0
  200. package/{dist → lib}/components/Lists.styles.d.ts +6 -6
  201. package/lib/components/Lists.styles.js +38 -0
  202. package/lib/components/Lists.styles.js.map +1 -0
  203. package/lib/components/Tabs/CompleteTabButton.js +29 -0
  204. package/lib/components/Tabs/CompleteTabButton.js.map +1 -0
  205. package/lib/components/Tabs/FormBodySingleTab.js +39 -0
  206. package/lib/components/Tabs/FormBodySingleTab.js.map +1 -0
  207. package/lib/components/Tabs/FormBodyTabList.js +52 -0
  208. package/lib/components/Tabs/FormBodyTabList.js.map +1 -0
  209. package/lib/components/index.js +18 -0
  210. package/lib/components/index.js.map +1 -0
  211. package/lib/hooks/index.js +2 -0
  212. package/lib/hooks/index.js.map +1 -0
  213. package/lib/hooks/useBackToTop.js +26 -0
  214. package/lib/hooks/useBackToTop.js.map +1 -0
  215. package/lib/hooks/useDebounce.js +38 -0
  216. package/lib/hooks/useDebounce.js.map +1 -0
  217. package/lib/hooks/useDecimalCalculatedExpression.js +50 -0
  218. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -0
  219. package/lib/hooks/useHidden.js +35 -0
  220. package/lib/hooks/useHidden.js.map +1 -0
  221. package/lib/hooks/useInitialiseGroupTable.js +36 -0
  222. package/lib/hooks/useInitialiseGroupTable.js.map +1 -0
  223. package/lib/hooks/useInitialiseRenderer.js +49 -0
  224. package/lib/hooks/useInitialiseRenderer.js.map +1 -0
  225. package/lib/hooks/useInitialiseRepeatAnswers.js +36 -0
  226. package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -0
  227. package/lib/hooks/useInitialiseRepeatGroups.js +36 -0
  228. package/lib/hooks/useInitialiseRepeatGroups.js.map +1 -0
  229. package/lib/hooks/useIntegerCalculatedExpression.js +44 -0
  230. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -0
  231. package/lib/hooks/useQueryClient.js +29 -0
  232. package/lib/hooks/useQueryClient.js.map +1 -0
  233. package/lib/hooks/useRenderingExtensions.js +30 -0
  234. package/lib/hooks/useRenderingExtensions.js.map +1 -0
  235. package/lib/hooks/useResponsive.js +37 -0
  236. package/lib/hooks/useResponsive.js.map +1 -0
  237. package/lib/hooks/useStringCalculatedExpression.js +44 -0
  238. package/lib/hooks/useStringCalculatedExpression.js.map +1 -0
  239. package/lib/hooks/useTerminologyServerQuery.js +73 -0
  240. package/lib/hooks/useTerminologyServerQuery.js.map +1 -0
  241. package/lib/hooks/useValidationError.js +38 -0
  242. package/lib/hooks/useValidationError.js.map +1 -0
  243. package/{dist → lib}/hooks/useValueSetCodings.d.ts +1 -1
  244. package/lib/hooks/useValueSetCodings.js +125 -0
  245. package/lib/hooks/useValueSetCodings.js.map +1 -0
  246. package/lib/index.d.ts +89 -0
  247. package/lib/index.js +153 -0
  248. package/lib/index.js.map +1 -0
  249. package/lib/interfaces/answerExpression.interface.js +18 -0
  250. package/lib/interfaces/answerExpression.interface.js.map +1 -0
  251. package/lib/interfaces/calculatedExpression.interface.js +2 -0
  252. package/lib/interfaces/calculatedExpression.interface.js.map +1 -0
  253. package/lib/interfaces/choice.enum.js +41 -0
  254. package/lib/interfaces/choice.enum.js.map +1 -0
  255. package/lib/interfaces/enableWhen.interface.js +18 -0
  256. package/lib/interfaces/enableWhen.interface.js.map +1 -0
  257. package/lib/interfaces/groupTable.interface.js +18 -0
  258. package/lib/interfaces/groupTable.interface.js.map +1 -0
  259. package/lib/interfaces/populate.interface.js +18 -0
  260. package/lib/interfaces/populate.interface.js.map +1 -0
  261. package/lib/interfaces/questionnaireStore.interface.js +18 -0
  262. package/lib/interfaces/questionnaireStore.interface.js.map +1 -0
  263. package/lib/interfaces/regex.interface.js +18 -0
  264. package/lib/interfaces/regex.interface.js.map +1 -0
  265. package/{dist → lib}/interfaces/renderProps.interface.d.ts +1 -1
  266. package/lib/interfaces/renderProps.interface.js +18 -0
  267. package/lib/interfaces/renderProps.interface.js.map +1 -0
  268. package/lib/interfaces/repeatGroup.interface.js +18 -0
  269. package/lib/interfaces/repeatGroup.interface.js.map +1 -0
  270. package/lib/interfaces/repeatItem.interface.js +2 -0
  271. package/lib/interfaces/repeatItem.interface.js.map +1 -0
  272. package/lib/interfaces/tab.interface.js +2 -0
  273. package/lib/interfaces/tab.interface.js.map +1 -0
  274. package/lib/interfaces/valueSet.interface.js +18 -0
  275. package/lib/interfaces/valueSet.interface.js.map +1 -0
  276. package/lib/interfaces/variables.interface.js +18 -0
  277. package/lib/interfaces/variables.interface.js.map +1 -0
  278. package/lib/stores/useConfigStore.js +17 -0
  279. package/lib/stores/useConfigStore.js.map +1 -0
  280. package/lib/stores/useQuestionnaireResponseStore.js +39 -0
  281. package/lib/stores/useQuestionnaireResponseStore.js.map +1 -0
  282. package/lib/stores/useQuestionnaireStore.js +151 -0
  283. package/lib/stores/useQuestionnaireStore.js.map +1 -0
  284. package/lib/theme/Theme.d.ts +38 -0
  285. package/lib/theme/Theme.js +39 -0
  286. package/lib/theme/Theme.js.map +1 -0
  287. package/lib/theme/globalStyles.d.ts +2 -0
  288. package/lib/theme/globalStyles.js +64 -0
  289. package/lib/theme/globalStyles.js.map +1 -0
  290. package/lib/theme/overrides/Accordion.d.ts +14 -0
  291. package/lib/theme/overrides/Accordion.js +32 -0
  292. package/lib/theme/overrides/Accordion.js.map +1 -0
  293. package/lib/theme/overrides/Autocomplete.d.ts +10 -0
  294. package/lib/theme/overrides/Autocomplete.js +28 -0
  295. package/lib/theme/overrides/Autocomplete.js.map +1 -0
  296. package/lib/theme/overrides/Backdrop.d.ts +13 -0
  297. package/lib/theme/overrides/Backdrop.js +32 -0
  298. package/lib/theme/overrides/Backdrop.js.map +1 -0
  299. package/lib/theme/overrides/Button.d.ts +33 -0
  300. package/lib/theme/overrides/Button.js +52 -0
  301. package/lib/theme/overrides/Button.js.map +1 -0
  302. package/lib/theme/overrides/Card.d.ts +35 -0
  303. package/lib/theme/overrides/Card.js +49 -0
  304. package/lib/theme/overrides/Card.js.map +1 -0
  305. package/lib/theme/overrides/Input.d.ts +64 -0
  306. package/lib/theme/overrides/Input.js +81 -0
  307. package/lib/theme/overrides/Input.js.map +1 -0
  308. package/lib/theme/overrides/Overrides.d.ts +3 -0
  309. package/lib/theme/overrides/Overrides.js +31 -0
  310. package/lib/theme/overrides/Overrides.js.map +1 -0
  311. package/lib/theme/overrides/Paper.d.ts +12 -0
  312. package/lib/theme/overrides/Paper.js +31 -0
  313. package/lib/theme/overrides/Paper.js.map +1 -0
  314. package/lib/theme/overrides/SpeedDial.d.ts +16 -0
  315. package/lib/theme/overrides/SpeedDial.js +34 -0
  316. package/lib/theme/overrides/SpeedDial.js.map +1 -0
  317. package/lib/theme/overrides/Table.d.ts +11 -0
  318. package/lib/theme/overrides/Table.js +29 -0
  319. package/lib/theme/overrides/Table.js.map +1 -0
  320. package/lib/theme/overrides/Typography.d.ts +13 -0
  321. package/lib/theme/overrides/Typography.js +31 -0
  322. package/lib/theme/overrides/Typography.js.map +1 -0
  323. package/lib/theme/palette.d.ts +28 -0
  324. package/lib/theme/palette.js +67 -0
  325. package/lib/theme/palette.js.map +1 -0
  326. package/lib/theme/shadows.d.ts +2 -0
  327. package/lib/theme/shadows.js +52 -0
  328. package/lib/theme/shadows.js.map +1 -0
  329. package/lib/theme/typography.d.ts +139 -0
  330. package/lib/theme/typography.js +80 -0
  331. package/lib/theme/typography.js.map +1 -0
  332. package/lib/utils/calculatedExpression.js +180 -0
  333. package/lib/utils/calculatedExpression.js.map +1 -0
  334. package/lib/utils/choice.js +160 -0
  335. package/lib/utils/choice.js.map +1 -0
  336. package/lib/utils/debounce.js +19 -0
  337. package/lib/utils/debounce.js.map +1 -0
  338. package/lib/utils/emptyResource.js +25 -0
  339. package/lib/utils/emptyResource.js.map +1 -0
  340. package/lib/utils/enableWhen.js +228 -0
  341. package/lib/utils/enableWhen.js.map +1 -0
  342. package/lib/utils/enableWhenExpression.js +76 -0
  343. package/lib/utils/enableWhenExpression.js.map +1 -0
  344. package/lib/utils/fhirpath.js +98 -0
  345. package/lib/utils/fhirpath.js.map +1 -0
  346. package/lib/utils/initialiseForm.js +45 -0
  347. package/lib/utils/initialiseForm.js.map +1 -0
  348. package/lib/utils/itemControl.js +299 -0
  349. package/lib/utils/itemControl.js.map +1 -0
  350. package/lib/utils/mapItem.js +80 -0
  351. package/lib/utils/mapItem.js.map +1 -0
  352. package/lib/utils/openChoice.js +150 -0
  353. package/lib/utils/openChoice.js.map +1 -0
  354. package/lib/utils/parseInputs.js +49 -0
  355. package/lib/utils/parseInputs.js.map +1 -0
  356. package/lib/utils/populate.js +78 -0
  357. package/lib/utils/populate.js.map +1 -0
  358. package/lib/utils/populateCallback.js +40 -0
  359. package/lib/utils/populateCallback.js.map +1 -0
  360. package/lib/utils/populateContexts.js +76 -0
  361. package/lib/utils/populateContexts.js.map +1 -0
  362. package/lib/utils/populateInputParams.js +193 -0
  363. package/lib/utils/populateInputParams.js.map +1 -0
  364. package/lib/utils/qItem.js +73 -0
  365. package/lib/utils/qItem.js.map +1 -0
  366. package/lib/utils/qrItem.js +221 -0
  367. package/lib/utils/qrItem.js.map +1 -0
  368. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +43 -0
  369. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +1 -0
  370. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +79 -0
  371. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -0
  372. package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js +59 -0
  373. package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js.map +1 -0
  374. package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js +18 -0
  375. package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js.map +1 -0
  376. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +174 -0
  377. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -0
  378. package/lib/utils/questionnaireStoreUtils/extractTabs.js +31 -0
  379. package/lib/utils/questionnaireStoreUtils/extractTabs.js.map +1 -0
  380. package/lib/utils/questionnaireStoreUtils/extractVariables.js +63 -0
  381. package/lib/utils/questionnaireStoreUtils/extractVariables.js.map +1 -0
  382. package/lib/utils/questionnaireStoreUtils/resolveValueSets.js +58 -0
  383. package/lib/utils/questionnaireStoreUtils/resolveValueSets.js.map +1 -0
  384. package/lib/utils/removeHidden.js +104 -0
  385. package/lib/utils/removeHidden.js.map +1 -0
  386. package/lib/utils/tabs.js +190 -0
  387. package/lib/utils/tabs.js.map +1 -0
  388. package/lib/utils/valueSet.js +126 -0
  389. package/lib/utils/valueSet.js.map +1 -0
  390. package/package.json +19 -27
  391. package/src/api/populate.ts +70 -0
  392. package/src/components/Alert.styles.ts +45 -0
  393. package/src/components/BackToTopButton/BackToTopButton.tsx +47 -0
  394. package/src/components/Box.styles.ts +33 -0
  395. package/src/components/FormComponents/BooleanItem/BooleanField.tsx +44 -0
  396. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +82 -0
  397. package/src/components/FormComponents/DateItem/DateField.tsx +56 -0
  398. package/src/components/FormComponents/DateItem/DateItem.tsx +95 -0
  399. package/src/components/FormComponents/DateTimeItem/DateTimeField.tsx +58 -0
  400. package/src/components/FormComponents/DateTimeItem/DateTimeItem.tsx +94 -0
  401. package/src/components/FormComponents/DecimalItem/DecimalField.tsx +76 -0
  402. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +152 -0
  403. package/src/components/FormComponents/DisplayItem/DisplayInstructions.styles.ts +24 -0
  404. package/src/components/FormComponents/DisplayItem/DisplayInstructions.tsx +38 -0
  405. package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +43 -0
  406. package/src/components/FormComponents/GridGroup/GridGroup.tsx +92 -0
  407. package/src/components/FormComponents/GridGroup/GridRow.tsx +88 -0
  408. package/src/components/FormComponents/GridGroup/GridTable.tsx +77 -0
  409. package/src/components/FormComponents/GroupItem/GroupHeading.tsx +59 -0
  410. package/src/components/FormComponents/GroupItem/GroupItem.styles.ts +28 -0
  411. package/src/components/FormComponents/GroupItem/GroupItem.tsx +124 -0
  412. package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +150 -0
  413. package/src/components/FormComponents/GroupItem/NextTabButton.tsx +43 -0
  414. package/src/components/FormComponents/GroupItem/NextTabButtonWrapper.tsx +76 -0
  415. package/src/components/FormComponents/IntegerItem/IntegerField.tsx +76 -0
  416. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +140 -0
  417. package/src/components/FormComponents/Item.styles.ts +30 -0
  418. package/src/components/FormComponents/ItemParts/ContextDisplayItem.tsx +38 -0
  419. package/src/components/FormComponents/ItemParts/FadingCheckIcon.tsx +36 -0
  420. package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +47 -0
  421. package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +58 -0
  422. package/src/components/FormComponents/ItemParts/ItemLabelWrapper.tsx +47 -0
  423. package/src/components/FormComponents/ItemParts/QItemCheckboxSingle.tsx +44 -0
  424. package/src/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.tsx +62 -0
  425. package/src/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.tsx +54 -0
  426. package/src/components/FormComponents/Lists.styles.ts +39 -0
  427. package/src/components/FormComponents/QItemChoice/QItemChoice.tsx +130 -0
  428. package/src/components/FormComponents/QItemChoice/QItemChoiceAutocomplete.tsx +178 -0
  429. package/src/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.tsx +131 -0
  430. package/src/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.tsx +126 -0
  431. package/src/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.tsx +125 -0
  432. package/src/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.tsx +129 -0
  433. package/src/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.tsx +41 -0
  434. package/src/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.tsx +130 -0
  435. package/src/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.tsx +162 -0
  436. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoice.tsx +104 -0
  437. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceAutocomplete.tsx +207 -0
  438. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.tsx +194 -0
  439. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.tsx +190 -0
  440. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerOption.tsx +149 -0
  441. package/src/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.tsx +138 -0
  442. package/src/components/FormComponents/RepeatGroup/AddItemButton.tsx +47 -0
  443. package/src/components/FormComponents/RepeatGroup/DeleteItemButton.tsx +46 -0
  444. package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +125 -0
  445. package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +66 -0
  446. package/src/components/FormComponents/RepeatItem/AddItemButton.tsx +47 -0
  447. package/src/components/FormComponents/RepeatItem/DeleteItemButton.tsx +46 -0
  448. package/src/components/FormComponents/RepeatItem/RepeatField.tsx +61 -0
  449. package/src/components/FormComponents/RepeatItem/RepeatItem.styles.tsx +32 -0
  450. package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +116 -0
  451. package/src/components/FormComponents/SingleItem/SingleItem.tsx +62 -0
  452. package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +171 -0
  453. package/src/components/FormComponents/StringItem/StringField.tsx +76 -0
  454. package/src/components/FormComponents/StringItem/StringItem.tsx +131 -0
  455. package/src/components/FormComponents/Tables/DeleteRowButton.tsx +47 -0
  456. package/src/components/FormComponents/Tables/QItemGroupTable.tsx +171 -0
  457. package/src/components/FormComponents/Tables/QItemGroupTableRow.tsx +77 -0
  458. package/src/components/FormComponents/Tables/Table.styles.tsx +51 -0
  459. package/src/components/FormComponents/TextItem/TextField.tsx +74 -0
  460. package/src/components/FormComponents/TextItem/TextItem.tsx +128 -0
  461. package/src/components/FormComponents/Textfield.styles.ts +28 -0
  462. package/src/components/FormComponents/TimeItem/TimeField.tsx +54 -0
  463. package/src/components/FormComponents/TimeItem/TimeItem.tsx +94 -0
  464. package/src/components/FormComponents/Typography.styles.ts +24 -0
  465. package/src/components/FormComponents/UrlItem/UrlField.tsx +66 -0
  466. package/src/components/FormComponents/UrlItem/UrlItem.tsx +118 -0
  467. package/src/components/FormRenderer/BaseRenderer.tsx +82 -0
  468. package/src/components/FormRenderer/FormBodyCollapsible.tsx +96 -0
  469. package/src/components/FormRenderer/FormBodySingleCollapsible.tsx +76 -0
  470. package/src/components/FormRenderer/FormBodySingleCollapsibleWrapper.tsx +60 -0
  471. package/src/components/FormRenderer/FormBodyTabbed.tsx +106 -0
  472. package/src/components/FormRenderer/FormTitle.tsx +44 -0
  473. package/src/components/FormRenderer/FormTopLevelItem.tsx +93 -0
  474. package/src/components/FormRenderer/SmartFormsRenderer.tsx +62 -0
  475. package/src/components/FormRenderer/index.ts +19 -0
  476. package/src/components/Iconify/Iconify.tsx +38 -0
  477. package/src/components/Lists.styles.ts +39 -0
  478. package/src/components/Tabs/CompleteTabButton.tsx +42 -0
  479. package/src/components/Tabs/FormBodySingleTab.tsx +67 -0
  480. package/src/components/Tabs/FormBodyTabList.tsx +83 -0
  481. package/src/components/index.ts +18 -0
  482. package/src/hooks/index.ts +1 -0
  483. package/src/hooks/useBackToTop.ts +29 -0
  484. package/src/hooks/useDebounce.ts +45 -0
  485. package/src/hooks/useDecimalCalculatedExpression.ts +80 -0
  486. package/src/hooks/useHidden.ts +40 -0
  487. package/src/hooks/useInitialiseGroupTable.ts +42 -0
  488. package/src/hooks/useInitialiseRenderer.ts +62 -0
  489. package/src/hooks/useInitialiseRepeatAnswers.ts +42 -0
  490. package/src/hooks/useInitialiseRepeatGroups.ts +42 -0
  491. package/src/hooks/useIntegerCalculatedExpression.ts +72 -0
  492. package/src/hooks/useQueryClient.ts +31 -0
  493. package/src/hooks/useRenderingExtensions.ts +52 -0
  494. package/src/hooks/useResponsive.ts +51 -0
  495. package/src/hooks/useStringCalculatedExpression.ts +71 -0
  496. package/src/hooks/useTerminologyServerQuery.ts +98 -0
  497. package/src/hooks/useValidationError.ts +48 -0
  498. package/src/hooks/useValueSetCodings.ts +150 -0
  499. package/src/index.ts +163 -0
  500. package/src/interfaces/answerExpression.interface.ts +23 -0
  501. package/src/interfaces/calculatedExpression.interface.ts +4 -0
  502. package/src/interfaces/choice.enum.ts +40 -0
  503. package/src/interfaces/enableWhen.interface.ts +40 -0
  504. package/src/interfaces/groupTable.interface.ts +23 -0
  505. package/src/interfaces/populate.interface.ts +218 -0
  506. package/src/interfaces/questionnaireStore.interface.ts +36 -0
  507. package/src/interfaces/regex.interface.ts +21 -0
  508. package/src/interfaces/renderProps.interface.ts +34 -0
  509. package/src/interfaces/repeatGroup.interface.ts +28 -0
  510. package/src/interfaces/repeatItem.interface.ts +6 -0
  511. package/src/interfaces/tab.interface.ts +18 -0
  512. package/src/interfaces/valueSet.interface.ts +23 -0
  513. package/src/interfaces/variables.interface.ts +28 -0
  514. package/src/stores/useConfigStore.ts +36 -0
  515. package/src/stores/useQuestionnaireResponseStore.ts +58 -0
  516. package/src/stores/useQuestionnaireStore.ts +232 -0
  517. package/src/stories/SmartFormsRenderer.stories.ts +104 -0
  518. package/src/stories/assets/Q715.json +15086 -0
  519. package/src/stories/assets/QTestGrid.json +166 -0
  520. package/src/stories/assets/R715.json +311 -0
  521. package/src/stories/assets/RTestGrid.json +34 -0
  522. package/src/theme/Theme.tsx +107 -0
  523. package/src/theme/globalStyles.tsx +68 -0
  524. package/src/theme/overrides/Accordion.ts +34 -0
  525. package/src/theme/overrides/Autocomplete.ts +30 -0
  526. package/src/theme/overrides/Backdrop.ts +34 -0
  527. package/src/theme/overrides/Button.ts +54 -0
  528. package/src/theme/overrides/Card.ts +51 -0
  529. package/src/theme/overrides/Input.ts +83 -0
  530. package/src/theme/overrides/Overrides.ts +45 -0
  531. package/src/theme/overrides/Paper.ts +31 -0
  532. package/src/theme/overrides/SpeedDial.ts +36 -0
  533. package/src/theme/overrides/Table.ts +31 -0
  534. package/src/theme/overrides/Typography.ts +33 -0
  535. package/src/theme/palette.ts +100 -0
  536. package/src/theme/shadows.ts +54 -0
  537. package/src/theme/typography.ts +114 -0
  538. package/src/utils/calculatedExpression.ts +299 -0
  539. package/src/utils/choice.ts +194 -0
  540. package/src/utils/debounce.ts +20 -0
  541. package/src/utils/emptyResource.ts +28 -0
  542. package/src/utils/enableWhen.ts +303 -0
  543. package/src/utils/enableWhenExpression.ts +123 -0
  544. package/src/utils/fhirpath.ts +164 -0
  545. package/src/utils/initialiseForm.ts +81 -0
  546. package/src/utils/itemControl.ts +367 -0
  547. package/src/utils/mapItem.ts +97 -0
  548. package/src/utils/openChoice.ts +179 -0
  549. package/src/utils/parseInputs.ts +58 -0
  550. package/src/utils/populate.ts +117 -0
  551. package/src/utils/populateCallback.ts +53 -0
  552. package/src/utils/populateContexts.ts +112 -0
  553. package/src/utils/populateInputParams.ts +242 -0
  554. package/src/utils/qItem.ts +103 -0
  555. package/src/utils/qrItem.ts +250 -0
  556. package/src/utils/questionnaireStoreUtils/addAdditionalVariables.ts +52 -0
  557. package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +96 -0
  558. package/src/utils/questionnaireStoreUtils/extractContainedValueSets.ts +74 -0
  559. package/src/utils/questionnaireStoreUtils/extractLaunchContext.ts +21 -0
  560. package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +239 -0
  561. package/src/utils/questionnaireStoreUtils/extractTabs.ts +37 -0
  562. package/src/utils/questionnaireStoreUtils/extractVariables.ts +77 -0
  563. package/src/utils/questionnaireStoreUtils/resolveValueSets.ts +68 -0
  564. package/src/utils/removeHidden.ts +162 -0
  565. package/src/utils/tabs.ts +255 -0
  566. package/src/utils/valueSet.ts +159 -0
  567. package/tsconfig.json +21 -0
  568. package/dist/components/FormComponents/Item.styles.d.ts +0 -6
  569. package/dist/components/FormComponents/RepeatItem/RepeatItem.styles.d.ts +0 -22
  570. package/dist/components/FormComponents/Typography.styles.d.ts +0 -6
  571. package/dist/components/FormRenderer/BaseFormRenderer.d.ts +0 -3
  572. package/dist/components/FormRenderer/Form.d.ts +0 -3
  573. package/dist/index.d.ts +0 -16
  574. package/dist/index.esm.js +0 -10650
  575. package/dist/index.esm.js.map +0 -1
  576. package/dist/index.js +0 -10710
  577. package/dist/index.js.map +0 -1
  578. package/dist/stories/SmartFormsRenderer.stories.d.ts +0 -14
  579. /package/{dist → lib}/api/populate.d.ts +0 -0
  580. /package/{dist → lib}/components/BackToTopButton/BackToTopButton.d.ts +0 -0
  581. /package/{dist → lib}/components/FormComponents/BooleanItem/BooleanField.d.ts +0 -0
  582. /package/{dist → lib}/components/FormComponents/BooleanItem/BooleanItem.d.ts +0 -0
  583. /package/{dist → lib}/components/FormComponents/DateItem/DateField.d.ts +0 -0
  584. /package/{dist → lib}/components/FormComponents/DateItem/DateItem.d.ts +0 -0
  585. /package/{dist → lib}/components/FormComponents/DateTimeItem/DateTimeField.d.ts +0 -0
  586. /package/{dist → lib}/components/FormComponents/DateTimeItem/DateTimeItem.d.ts +0 -0
  587. /package/{dist → lib}/components/FormComponents/DecimalItem/DecimalField.d.ts +0 -0
  588. /package/{dist → lib}/components/FormComponents/DecimalItem/DecimalItem.d.ts +0 -0
  589. /package/{dist → lib}/components/FormComponents/DisplayItem/DisplayInstructions.d.ts +0 -0
  590. /package/{dist → lib}/components/FormComponents/DisplayItem/DisplayItem.d.ts +0 -0
  591. /package/{dist → lib}/components/FormComponents/GridGroup/GridTable.d.ts +0 -0
  592. /package/{dist → lib}/components/FormComponents/GroupItem/GroupHeading.d.ts +0 -0
  593. /package/{dist → lib}/components/FormComponents/GroupItem/NextTabButton.d.ts +0 -0
  594. /package/{dist → lib}/components/FormComponents/GroupItem/NextTabButtonWrapper.d.ts +0 -0
  595. /package/{dist → lib}/components/FormComponents/IntegerItem/IntegerField.d.ts +0 -0
  596. /package/{dist → lib}/components/FormComponents/IntegerItem/IntegerItem.d.ts +0 -0
  597. /package/{dist → lib}/components/FormComponents/ItemParts/ContextDisplayItem.d.ts +0 -0
  598. /package/{dist → lib}/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -0
  599. /package/{dist → lib}/components/FormComponents/ItemParts/ItemFieldGrid.d.ts +0 -0
  600. /package/{dist → lib}/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -0
  601. /package/{dist → lib}/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -0
  602. /package/{dist → lib}/components/FormComponents/ItemParts/QItemCheckboxSingle.d.ts +0 -0
  603. /package/{dist → lib}/components/FormComponents/ItemParts/QItemCheckboxSingleWithOpenLabel.d.ts +0 -0
  604. /package/{dist → lib}/components/FormComponents/ItemParts/QItemRadioButtonWithOpenLabel.d.ts +0 -0
  605. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerOption.d.ts +0 -0
  606. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceCheckboxAnswerValueSet.d.ts +0 -0
  607. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerOption.d.ts +0 -0
  608. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioAnswerValueSet.d.ts +0 -0
  609. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceRadioSingle.d.ts +0 -0
  610. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerOption.d.ts +0 -0
  611. /package/{dist → lib}/components/FormComponents/QItemChoice/QItemChoiceSelectAnswerValueSet.d.ts +0 -0
  612. /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceCheckboxAnswerOption.d.ts +0 -0
  613. /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceRadioAnswerOption.d.ts +0 -0
  614. /package/{dist → lib}/components/FormComponents/QItemOpenChoice/QItemOpenChoiceSelectAnswerValueSet.d.ts +0 -0
  615. /package/{dist → lib}/components/FormComponents/RepeatGroup/AddItemButton.d.ts +0 -0
  616. /package/{dist → lib}/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -0
  617. /package/{dist → lib}/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +0 -0
  618. /package/{dist → lib}/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +0 -0
  619. /package/{dist → lib}/components/FormComponents/RepeatItem/AddItemButton.d.ts +0 -0
  620. /package/{dist → lib}/components/FormComponents/RepeatItem/DeleteItemButton.d.ts +0 -0
  621. /package/{dist → lib}/components/FormComponents/RepeatItem/RepeatField.d.ts +0 -0
  622. /package/{dist → lib}/components/FormComponents/RepeatItem/RepeatItem.d.ts +0 -0
  623. /package/{dist → lib}/components/FormComponents/SingleItem/SingleItem.d.ts +0 -0
  624. /package/{dist → lib}/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +0 -0
  625. /package/{dist → lib}/components/FormComponents/StringItem/StringField.d.ts +0 -0
  626. /package/{dist → lib}/components/FormComponents/StringItem/StringItem.d.ts +0 -0
  627. /package/{dist → lib}/components/FormComponents/Tables/DeleteRowButton.d.ts +0 -0
  628. /package/{dist → lib}/components/FormComponents/Tables/Table.styles.d.ts +0 -0
  629. /package/{dist → lib}/components/FormComponents/TextItem/TextField.d.ts +0 -0
  630. /package/{dist → lib}/components/FormComponents/TextItem/TextItem.d.ts +0 -0
  631. /package/{dist → lib}/components/FormComponents/TimeItem/TimeField.d.ts +0 -0
  632. /package/{dist → lib}/components/FormComponents/TimeItem/TimeItem.d.ts +0 -0
  633. /package/{dist → lib}/components/FormComponents/UrlItem/UrlField.d.ts +0 -0
  634. /package/{dist → lib}/components/FormComponents/UrlItem/UrlItem.d.ts +0 -0
  635. /package/{dist → lib}/components/FormRenderer/BaseRenderer.d.ts +0 -0
  636. /package/{dist → lib}/components/FormRenderer/FormBodyCollapsible.d.ts +0 -0
  637. /package/{dist → lib}/components/FormRenderer/FormBodySingleCollapsible.d.ts +0 -0
  638. /package/{dist → lib}/components/FormRenderer/FormBodyTabbed.d.ts +0 -0
  639. /package/{dist → lib}/components/FormRenderer/FormRenderer.d.ts +0 -0
  640. /package/{dist → lib}/components/FormRenderer/FormTitle.d.ts +0 -0
  641. /package/{dist → lib}/components/FormRenderer/FormTopLevelItem.d.ts +0 -0
  642. /package/{dist → lib}/components/FormRenderer/SmartFormsRenderer.d.ts +0 -0
  643. /package/{dist → lib}/components/FormRenderer/index.d.ts +0 -0
  644. /package/{dist → lib}/components/Iconify/Iconify.d.ts +0 -0
  645. /package/{dist → lib}/components/Tabs/CompleteTabButton.d.ts +0 -0
  646. /package/{dist → lib}/components/Tabs/FormBodySingleTab.d.ts +0 -0
  647. /package/{dist → lib}/components/Tabs/FormBodyTabList.d.ts +0 -0
  648. /package/{dist → lib}/components/index.d.ts +0 -0
  649. /package/{dist → lib}/hooks/index.d.ts +0 -0
  650. /package/{dist → lib}/hooks/useBackToTop.d.ts +0 -0
  651. /package/{dist → lib}/hooks/useDebounce.d.ts +0 -0
  652. /package/{dist → lib}/hooks/useDecimalCalculatedExpression.d.ts +0 -0
  653. /package/{dist → lib}/hooks/useHidden.d.ts +0 -0
  654. /package/{dist → lib}/hooks/useInitialiseGroupTable.d.ts +0 -0
  655. /package/{dist → lib}/hooks/useInitialiseRenderer.d.ts +0 -0
  656. /package/{dist → lib}/hooks/useInitialiseRepeatAnswers.d.ts +0 -0
  657. /package/{dist → lib}/hooks/useInitialiseRepeatGroups.d.ts +0 -0
  658. /package/{dist → lib}/hooks/useIntegerCalculatedExpression.d.ts +0 -0
  659. /package/{dist → lib}/hooks/useQueryClient.d.ts +0 -0
  660. /package/{dist → lib}/hooks/useRenderingExtensions.d.ts +0 -0
  661. /package/{dist → lib}/hooks/useResponsive.d.ts +0 -0
  662. /package/{dist → lib}/hooks/useStringCalculatedExpression.d.ts +0 -0
  663. /package/{dist → lib}/hooks/useTerminologyServerQuery.d.ts +0 -0
  664. /package/{dist → lib}/hooks/useValidationError.d.ts +0 -0
  665. /package/{dist → lib}/interfaces/answerExpression.interface.d.ts +0 -0
  666. /package/{dist → lib}/interfaces/calculatedExpression.interface.d.ts +0 -0
  667. /package/{dist → lib}/interfaces/choice.enum.d.ts +0 -0
  668. /package/{dist → lib}/interfaces/enableWhen.interface.d.ts +0 -0
  669. /package/{dist → lib}/interfaces/groupTable.interface.d.ts +0 -0
  670. /package/{dist → lib}/interfaces/populate.interface.d.ts +0 -0
  671. /package/{dist → lib}/interfaces/questionnaireStore.interface.d.ts +0 -0
  672. /package/{dist → lib}/interfaces/regex.interface.d.ts +0 -0
  673. /package/{dist → lib}/interfaces/repeatGroup.interface.d.ts +0 -0
  674. /package/{dist → lib}/interfaces/repeatItem.interface.d.ts +0 -0
  675. /package/{dist → lib}/interfaces/tab.interface.d.ts +0 -0
  676. /package/{dist → lib}/interfaces/valueSet.interface.d.ts +0 -0
  677. /package/{dist → lib}/interfaces/variables.interface.d.ts +0 -0
  678. /package/{dist → lib}/stores/useConfigStore.d.ts +0 -0
  679. /package/{dist → lib}/stores/useQuestionnaireResponseStore.d.ts +0 -0
  680. /package/{dist → lib}/stores/useQuestionnaireStore.d.ts +0 -0
  681. /package/{dist → lib}/utils/calculatedExpression.d.ts +0 -0
  682. /package/{dist → lib}/utils/choice.d.ts +0 -0
  683. /package/{dist → lib}/utils/debounce.d.ts +0 -0
  684. /package/{dist → lib}/utils/emptyResource.d.ts +0 -0
  685. /package/{dist → lib}/utils/enableWhen.d.ts +0 -0
  686. /package/{dist → lib}/utils/enableWhenExpression.d.ts +0 -0
  687. /package/{dist → lib}/utils/fhirpath.d.ts +0 -0
  688. /package/{dist → lib}/utils/initialiseForm.d.ts +0 -0
  689. /package/{dist → lib}/utils/itemControl.d.ts +0 -0
  690. /package/{dist → lib}/utils/mapItem.d.ts +0 -0
  691. /package/{dist → lib}/utils/openChoice.d.ts +0 -0
  692. /package/{dist → lib}/utils/parseInputs.d.ts +0 -0
  693. /package/{dist → lib}/utils/populate.d.ts +0 -0
  694. /package/{dist → lib}/utils/populateCallback.d.ts +0 -0
  695. /package/{dist → lib}/utils/populateContexts.d.ts +0 -0
  696. /package/{dist → lib}/utils/populateInputParams.d.ts +0 -0
  697. /package/{dist → lib}/utils/qItem.d.ts +0 -0
  698. /package/{dist → lib}/utils/qrItem.d.ts +0 -0
  699. /package/{dist → lib}/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -0
  700. /package/{dist → lib}/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -0
  701. /package/{dist → lib}/utils/questionnaireStoreUtils/extractContainedValueSets.d.ts +0 -0
  702. /package/{dist → lib}/utils/questionnaireStoreUtils/extractLaunchContext.d.ts +0 -0
  703. /package/{dist → lib}/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +0 -0
  704. /package/{dist → lib}/utils/questionnaireStoreUtils/extractTabs.d.ts +0 -0
  705. /package/{dist → lib}/utils/questionnaireStoreUtils/extractVariables.d.ts +0 -0
  706. /package/{dist → lib}/utils/questionnaireStoreUtils/resolveValueSets.d.ts +0 -0
  707. /package/{dist → lib}/utils/removeHidden.d.ts +0 -0
  708. /package/{dist → lib}/utils/tabs.d.ts +0 -0
  709. /package/{dist → lib}/utils/valueSet.d.ts +0 -0
  710. /package/{dist/setup-jest.d.ts → src/setup-jest.ts} +0 -0
@@ -0,0 +1,59 @@
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, { memo } from 'react';
19
+ import { Box, Divider } from '@mui/material';
20
+ import { QGroupHeadingTypography } from '../Typography.styles';
21
+ import type { PropsWithIsRepeatedAttribute } from '../../../interfaces/renderProps.interface';
22
+ import type { QuestionnaireItem } from 'fhir/r4';
23
+ import { getContextDisplays } from '../../../utils/tabs';
24
+ import ContextDisplayItem from '../ItemParts/ContextDisplayItem';
25
+ import LabelText from '../ItemParts/ItemLabelText';
26
+
27
+ interface GroupHeadingProps extends PropsWithIsRepeatedAttribute {
28
+ qItem: QuestionnaireItem;
29
+ tabIsMarkedAsComplete?: boolean;
30
+ }
31
+
32
+ const GroupHeading = memo(function GroupHeading(props: GroupHeadingProps) {
33
+ const { qItem, tabIsMarkedAsComplete, isRepeated } = props;
34
+
35
+ const contextDisplayItems = getContextDisplays(qItem);
36
+
37
+ if (isRepeated) {
38
+ return null;
39
+ }
40
+
41
+ return (
42
+ <>
43
+ <Box display="flex" alignItems="center" justifyContent="space-between">
44
+ <QGroupHeadingTypography variant="h6" isTabHeading={tabIsMarkedAsComplete !== undefined}>
45
+ <LabelText qItem={qItem} />
46
+ </QGroupHeadingTypography>
47
+
48
+ <Box display="flex" columnGap={0.5}>
49
+ {contextDisplayItems.map((item) => {
50
+ return <ContextDisplayItem key={item.linkId} displayItem={item} />;
51
+ })}
52
+ </Box>
53
+ </Box>
54
+ {qItem.text ? <Divider sx={{ mt: 1, mb: 1.5 }} light /> : null}
55
+ </>
56
+ );
57
+ });
58
+
59
+ export default GroupHeading;
@@ -0,0 +1,28 @@
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 { Card, styled } from '@mui/material';
19
+
20
+ export const GroupCard = styled(Card, {
21
+ shouldForwardProp: (prop) => prop !== 'elevation' && prop !== 'isRepeated'
22
+ })<{ elevation: number; isRepeated: boolean }>(({ elevation, isRepeated }) => ({
23
+ paddingTop: '20px',
24
+ paddingBottom: '20px',
25
+ paddingLeft: elevation === 1 ? '26px' : '24px',
26
+ paddingRight: elevation === 1 ? '26px' : '24px',
27
+ marginBottom: isRepeated ? 0 : '28px'
28
+ }));
@@ -0,0 +1,124 @@
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, { useMemo } from 'react';
19
+ import { getQrItemsIndex, mapQItemsIndex } from '../../../utils/mapItem';
20
+ import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
21
+ import { createQrGroup, updateQrGroup } from '../../../utils/qrItem';
22
+ import { QGroupContainerBox } from '../../Box.styles';
23
+ import type {
24
+ PropsWithIsRepeatedAttribute,
25
+ PropsWithQrItemChangeHandler
26
+ } from '../../../interfaces/renderProps.interface';
27
+ import type { QrRepeatGroup } from '../../../interfaces/repeatGroup.interface';
28
+ import useHidden from '../../../hooks/useHidden';
29
+ import type { Tabs } from '../../../interfaces/tab.interface';
30
+ import GroupHeading from './GroupHeading';
31
+ import { GroupCard } from './GroupItem.styles';
32
+ import NextTabButtonWrapper from './NextTabButtonWrapper';
33
+ import GroupItemSwitcher from './GroupItemSwitcher';
34
+
35
+ interface GroupItemProps
36
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
37
+ PropsWithIsRepeatedAttribute {
38
+ qItem: QuestionnaireItem;
39
+ qrItem: QuestionnaireResponseItem;
40
+ groupCardElevation: number;
41
+ tabIsMarkedAsComplete?: boolean;
42
+ tabs?: Tabs;
43
+ currentTabIndex?: number;
44
+ goToNextTab?: (nextTabIndex: number) => unknown;
45
+ }
46
+
47
+ function GroupItem(props: GroupItemProps) {
48
+ const {
49
+ qItem,
50
+ qrItem,
51
+ isRepeated,
52
+ groupCardElevation,
53
+ tabIsMarkedAsComplete,
54
+ tabs,
55
+ currentTabIndex,
56
+ onQrItemChange
57
+ } = props;
58
+
59
+ const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);
60
+
61
+ const itemIsHidden = useHidden(qItem);
62
+ if (itemIsHidden) {
63
+ return null;
64
+ }
65
+
66
+ const qItems = qItem.item;
67
+ const qrGroup = qrItem && qrItem.item ? qrItem : createQrGroup(qItem);
68
+ const qrItems = qrGroup.item;
69
+
70
+ // Event Handlers
71
+ function handleQrItemChange(newQrItem: QuestionnaireResponseItem) {
72
+ const updatedQrGroup: QuestionnaireResponseItem = { ...qrGroup };
73
+ updateQrGroup(newQrItem, null, updatedQrGroup, qItemsIndexMap);
74
+ onQrItemChange(updatedQrGroup);
75
+ }
76
+
77
+ function handleQrRepeatGroupChange(qrRepeatGroup: QrRepeatGroup) {
78
+ const updatedQrGroup: QuestionnaireResponseItem = { ...qrGroup };
79
+ updateQrGroup(null, qrRepeatGroup, updatedQrGroup, qItemsIndexMap);
80
+ onQrItemChange(updatedQrGroup);
81
+ }
82
+
83
+ if (!qItems || !qrItems) {
84
+ return <>Unable to load group, something has gone terribly wrong.</>;
85
+ }
86
+
87
+ // If an item has multiple answers, it is a repeat group
88
+ const qrItemsByIndex: (QuestionnaireResponseItem | QuestionnaireResponseItem[])[] =
89
+ getQrItemsIndex(qItems, qrItems, qItemsIndexMap);
90
+
91
+ return (
92
+ <QGroupContainerBox
93
+ cardElevation={groupCardElevation}
94
+ isRepeated={isRepeated}
95
+ data-test="q-item-group-box">
96
+ <GroupCard elevation={groupCardElevation} isRepeated={isRepeated}>
97
+ <GroupHeading
98
+ qItem={qItem}
99
+ tabIsMarkedAsComplete={tabIsMarkedAsComplete}
100
+ isRepeated={isRepeated}
101
+ />
102
+ {qItems.map((qItem: QuestionnaireItem, i) => {
103
+ const qrItemOrItems = qrItemsByIndex[i];
104
+
105
+ return (
106
+ <GroupItemSwitcher
107
+ key={qItem.linkId}
108
+ qItem={qItem}
109
+ qrItemOrItems={qrItemOrItems}
110
+ groupCardElevation={groupCardElevation}
111
+ onQrItemChange={handleQrItemChange}
112
+ onQrRepeatGroupChange={handleQrRepeatGroupChange}
113
+ />
114
+ );
115
+ })}
116
+
117
+ {/* Next tab button at the end of each tab group */}
118
+ <NextTabButtonWrapper currentTabIndex={currentTabIndex} tabs={tabs} />
119
+ </GroupCard>
120
+ </QGroupContainerBox>
121
+ );
122
+ }
123
+
124
+ export default GroupItem;
@@ -0,0 +1,150 @@
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 {
20
+ PropsWithQrItemChangeHandler,
21
+ PropsWithQrRepeatGroupChangeHandler
22
+ } from '../../../interfaces/renderProps.interface';
23
+ import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
24
+ import { isSpecificItemControl } from '../../../utils/itemControl';
25
+ import QItemGroupTable from '../Tables/QItemGroupTable';
26
+ import RepeatGroup from '../RepeatGroup/RepeatGroup';
27
+ import { isRepeatItemAndNotCheckbox } from '../../../utils/qItem';
28
+ import RepeatItem from '../RepeatItem/RepeatItem';
29
+ import SingleItem from '../SingleItem/SingleItem';
30
+ import useHidden from '../../../hooks/useHidden';
31
+ import GroupItem from './GroupItem';
32
+ import GridGroup from '../GridGroup/GridGroup';
33
+
34
+ interface GroupItemSwitcherProps
35
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
36
+ PropsWithQrRepeatGroupChangeHandler {
37
+ qItem: QuestionnaireItem;
38
+ qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[];
39
+ groupCardElevation: number;
40
+ }
41
+
42
+ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
43
+ const { qItem, qrItemOrItems, groupCardElevation, onQrItemChange, onQrRepeatGroupChange } = props;
44
+
45
+ const itemIsHidden = useHidden(qItem);
46
+ if (itemIsHidden) {
47
+ return null;
48
+ }
49
+
50
+ // If there are multiple answers
51
+ const hasMultipleAnswers = Array.isArray(qrItemOrItems);
52
+ if (hasMultipleAnswers) {
53
+ const qrItems = qrItemOrItems;
54
+
55
+ // qItem should always be either a repeatGroup or a groupTable item
56
+ // groupTables item have qItem.repeats = true and qItem.type = 'group' as well
57
+ if (!qItem.repeats || qItem.type !== 'group') {
58
+ return <>Something went wrong here</>;
59
+ }
60
+
61
+ if (isSpecificItemControl(qItem, 'gtable')) {
62
+ return (
63
+ <QItemGroupTable
64
+ qItem={qItem}
65
+ qrItems={qrItems}
66
+ groupCardElevation={groupCardElevation + 1}
67
+ onQrRepeatGroupChange={onQrRepeatGroupChange}
68
+ />
69
+ );
70
+ }
71
+
72
+ return (
73
+ <RepeatGroup
74
+ qItem={qItem}
75
+ qrItems={qrItems}
76
+ groupCardElevation={groupCardElevation + 1}
77
+ onQrRepeatGroupChange={onQrRepeatGroupChange}
78
+ />
79
+ );
80
+ }
81
+
82
+ // If there is only one answer
83
+ const qrItem = qrItemOrItems;
84
+ const itemIsGrid = isSpecificItemControl(qItem, 'grid');
85
+ if (itemIsGrid) {
86
+ return (
87
+ <GridGroup
88
+ qItem={qItem}
89
+ qrItem={qrItem}
90
+ groupCardElevation={groupCardElevation}
91
+ onQrItemChange={onQrItemChange}
92
+ />
93
+ );
94
+ }
95
+
96
+ const itemRepeatsAndIsNotCheckbox = isRepeatItemAndNotCheckbox(qItem);
97
+ if (itemRepeatsAndIsNotCheckbox) {
98
+ if (qItem.type === 'group') {
99
+ // If qItem is RepeatGroup or a groupTable item in this decision branch,
100
+ // their qrItem array should always be empty
101
+ if (isSpecificItemControl(qItem, 'gtable')) {
102
+ return (
103
+ <QItemGroupTable
104
+ qItem={qItem}
105
+ qrItems={[]}
106
+ groupCardElevation={groupCardElevation + 1}
107
+ onQrRepeatGroupChange={onQrRepeatGroupChange}
108
+ />
109
+ );
110
+ }
111
+
112
+ return (
113
+ <RepeatGroup
114
+ qItem={qItem}
115
+ qrItems={[]}
116
+ groupCardElevation={groupCardElevation + 1}
117
+ onQrRepeatGroupChange={onQrRepeatGroupChange}
118
+ />
119
+ );
120
+ }
121
+
122
+ return <RepeatItem qItem={qItem} qrItem={qrItem} onQrItemChange={onQrItemChange} />;
123
+ }
124
+
125
+ // if qItem is not a repeating question or is a checkbox
126
+ if (qItem.type === 'group') {
127
+ return (
128
+ <GroupItem
129
+ qItem={qItem}
130
+ qrItem={qrItem}
131
+ isRepeated={false}
132
+ groupCardElevation={groupCardElevation + 1}
133
+ onQrItemChange={onQrItemChange}
134
+ />
135
+ );
136
+ }
137
+
138
+ // Defaults to a normal QItemSwitcher
139
+ return (
140
+ <SingleItem
141
+ qItem={qItem}
142
+ qrItem={qrItem}
143
+ isRepeated={false}
144
+ isTabled={false}
145
+ onQrItemChange={onQrItemChange}
146
+ />
147
+ );
148
+ }
149
+
150
+ export default GroupItemSwitcher;
@@ -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 { Button } from '@mui/material';
20
+ import Iconify from '../../Iconify/Iconify';
21
+
22
+ interface NextTabButtonProps {
23
+ isDisabled: boolean;
24
+ onNextTabClick: () => void;
25
+ }
26
+
27
+ function NextTabButton(props: NextTabButtonProps) {
28
+ const { isDisabled, onNextTabClick } = props;
29
+
30
+ return (
31
+ <Button
32
+ variant="contained"
33
+ size="small"
34
+ endIcon={<Iconify icon="material-symbols:arrow-forward" />}
35
+ disabled={isDisabled}
36
+ color="secondary"
37
+ onClick={onNextTabClick}>
38
+ Next tab
39
+ </Button>
40
+ );
41
+ }
42
+
43
+ export default NextTabButton;
@@ -0,0 +1,76 @@
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, { memo } from 'react';
19
+ import { Box } from '@mui/material';
20
+ import { findNumOfVisibleTabs, getNextVisibleTabIndex } from '../../../utils/tabs';
21
+ import type { Tabs } from '../../../interfaces/tab.interface';
22
+ import useQuestionnaireStore from '../../../stores/useQuestionnaireStore';
23
+ import NextTabButton from './NextTabButton';
24
+
25
+ interface NextTabButtonWrapperProps {
26
+ currentTabIndex?: number;
27
+ tabs?: Tabs;
28
+ }
29
+
30
+ const NextTabButtonWrapper = memo(function NextTabWrapper(props: NextTabButtonWrapperProps) {
31
+ const { currentTabIndex, tabs } = props;
32
+
33
+ const enableWhenIsActivated = useQuestionnaireStore((state) => state.enableWhenIsActivated);
34
+ const enableWhenItems = useQuestionnaireStore((state) => state.enableWhenItems);
35
+ const enableWhenExpressions = useQuestionnaireStore((state) => state.enableWhenExpressions);
36
+ const switchTab = useQuestionnaireStore((state) => state.switchTab);
37
+
38
+ const tabsNotDefined = currentTabIndex === undefined || tabs === undefined;
39
+
40
+ function handleNextTabClick() {
41
+ if (tabsNotDefined) {
42
+ return;
43
+ }
44
+
45
+ const nextVisibleTabIndex = getNextVisibleTabIndex({
46
+ tabs,
47
+ currentTabIndex,
48
+ enableWhenIsActivated,
49
+ enableWhenItems,
50
+ enableWhenExpressions
51
+ });
52
+ switchTab(nextVisibleTabIndex);
53
+
54
+ // Scroll to top of page
55
+ window.scrollTo(0, 0);
56
+ }
57
+
58
+ if (tabsNotDefined) {
59
+ return null;
60
+ }
61
+
62
+ if (currentTabIndex === Object.keys(tabs).length - 1) {
63
+ return null;
64
+ }
65
+
66
+ const buttonIsDisabled =
67
+ findNumOfVisibleTabs(tabs, enableWhenIsActivated, enableWhenItems, enableWhenExpressions) <= 1;
68
+
69
+ return (
70
+ <Box display="flex" flexDirection="row-reverse" mt={3}>
71
+ <NextTabButton isDisabled={buttonIsDisabled} onNextTabClick={handleNextTabClick} />
72
+ </Box>
73
+ );
74
+ });
75
+
76
+ export default NextTabButtonWrapper;
@@ -0,0 +1,76 @@
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 { InputAdornment } from '@mui/material';
20
+ import { StandardTextField } from '../Textfield.styles';
21
+ import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
22
+ import FadingCheckIcon from '../ItemParts/FadingCheckIcon';
23
+
24
+ interface IntegerFieldProps extends PropsWithIsTabledAttribute {
25
+ linkId: string;
26
+ value: number;
27
+ feedback: string;
28
+ displayPrompt: string;
29
+ displayUnit: string;
30
+ entryFormat: string;
31
+ readOnly: boolean;
32
+ calcExpUpdated: boolean;
33
+ onInputChange: (value: string) => void;
34
+ }
35
+
36
+ function IntegerField(props: IntegerFieldProps) {
37
+ const {
38
+ linkId,
39
+ value,
40
+ feedback,
41
+ displayPrompt,
42
+ displayUnit,
43
+ entryFormat,
44
+ readOnly,
45
+ calcExpUpdated,
46
+ isTabled,
47
+ onInputChange
48
+ } = props;
49
+
50
+ return (
51
+ <StandardTextField
52
+ id={linkId}
53
+ value={value.toString()}
54
+ error={!!feedback}
55
+ onChange={(event) => onInputChange(event.target.value)}
56
+ disabled={readOnly}
57
+ label={displayPrompt}
58
+ placeholder={entryFormat}
59
+ fullWidth
60
+ isTabled={isTabled}
61
+ size="small"
62
+ inputProps={{ inputMode: 'numeric', pattern: '[0-9]*' }}
63
+ InputProps={{
64
+ endAdornment: (
65
+ <InputAdornment position={'end'}>
66
+ <FadingCheckIcon fadeIn={calcExpUpdated} />
67
+ {displayUnit}
68
+ </InputAdornment>
69
+ )
70
+ }}
71
+ data-test="q-item-integer-field"
72
+ />
73
+ );
74
+ }
75
+
76
+ export default IntegerField;
@@ -0,0 +1,140 @@
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, { useCallback, useState } from 'react';
19
+ import type {
20
+ PropsWithIsRepeatedAttribute,
21
+ PropsWithIsTabledAttribute,
22
+ PropsWithQrItemChangeHandler
23
+ } from '../../../interfaces/renderProps.interface';
24
+ import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
25
+ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
26
+ import useValidationError from '../../../hooks/useValidationError';
27
+ import debounce from 'lodash.debounce';
28
+ import { createEmptyQrItemWithUnit } from '../../../utils/qrItem';
29
+ import { DEBOUNCE_DURATION } from '../../../utils/debounce';
30
+ import { FullWidthFormComponentBox } from '../../Box.styles';
31
+ import IntegerField from './IntegerField';
32
+ import useIntegerCalculatedExpression from '../../../hooks/useIntegerCalculatedExpression';
33
+ import { parseValidInteger } from '../../../utils/parseInputs';
34
+ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
35
+
36
+ interface IntegerItemProps
37
+ extends PropsWithQrItemChangeHandler<QuestionnaireResponseItem>,
38
+ PropsWithIsRepeatedAttribute,
39
+ PropsWithIsTabledAttribute {
40
+ qItem: QuestionnaireItem;
41
+ qrItem: QuestionnaireResponseItem;
42
+ }
43
+
44
+ function IntegerItem(props: IntegerItemProps) {
45
+ const { qItem, qrItem, isRepeated, isTabled, onQrItemChange } = props;
46
+
47
+ // Get additional rendering extensions
48
+ const {
49
+ displayUnit,
50
+ displayPrompt,
51
+ displayInstructions,
52
+ readOnly,
53
+ entryFormat,
54
+ regexValidation,
55
+ maxLength
56
+ } = useRenderingExtensions(qItem);
57
+
58
+ // Init input value
59
+ let valueInteger = 0;
60
+ if (qrItem?.answer) {
61
+ if (qrItem?.answer[0].valueInteger) {
62
+ valueInteger = qrItem.answer[0].valueInteger;
63
+ }
64
+ if (qrItem?.answer[0].valueDecimal) {
65
+ valueInteger = Math.round(qrItem.answer[0].valueDecimal);
66
+ }
67
+ }
68
+ const [value, setValue] = useState(valueInteger);
69
+
70
+ // Perform validation checks
71
+ const feedback = useValidationError(value.toString(), regexValidation, maxLength);
72
+
73
+ // Process calculated expressions
74
+ const { calcExpUpdated } = useIntegerCalculatedExpression({
75
+ qItem: qItem,
76
+ inputValue: value,
77
+ displayUnit: displayUnit,
78
+ setInputValue: (newValue) => {
79
+ setValue(newValue);
80
+ },
81
+ onQrItemChange: onQrItemChange
82
+ });
83
+
84
+ // Event handlers
85
+ function handleInputChange(newInput: string) {
86
+ const newValue = parseValidInteger(newInput);
87
+
88
+ setValue(newValue);
89
+ updateQrItemWithDebounce(newValue);
90
+ }
91
+
92
+ // eslint-disable-next-line react-hooks/exhaustive-deps
93
+ const updateQrItemWithDebounce = useCallback(
94
+ debounce((newValue: number) => {
95
+ onQrItemChange({
96
+ ...createEmptyQrItemWithUnit(qItem, displayUnit),
97
+ answer: [{ valueInteger: newValue }]
98
+ });
99
+ }, DEBOUNCE_DURATION),
100
+ [onQrItemChange, qItem, displayUnit]
101
+ ); // Dependencies are tested, debounce is causing eslint to not recognise dependencies
102
+
103
+ if (isRepeated) {
104
+ return (
105
+ <IntegerField
106
+ linkId={qItem.linkId}
107
+ value={value}
108
+ feedback={feedback}
109
+ displayPrompt={displayPrompt}
110
+ displayUnit={displayUnit}
111
+ entryFormat={entryFormat}
112
+ readOnly={readOnly}
113
+ calcExpUpdated={calcExpUpdated}
114
+ isTabled={isTabled}
115
+ onInputChange={handleInputChange}
116
+ />
117
+ );
118
+ }
119
+
120
+ return (
121
+ <FullWidthFormComponentBox data-test="q-item-integer-box">
122
+ <ItemFieldGrid qItem={qItem} displayInstructions={displayInstructions}>
123
+ <IntegerField
124
+ linkId={qItem.linkId}
125
+ value={value}
126
+ feedback={feedback}
127
+ displayPrompt={displayPrompt}
128
+ displayUnit={displayUnit}
129
+ entryFormat={entryFormat}
130
+ readOnly={readOnly}
131
+ calcExpUpdated={calcExpUpdated}
132
+ isTabled={isTabled}
133
+ onInputChange={handleInputChange}
134
+ />
135
+ </ItemFieldGrid>
136
+ </FullWidthFormComponentBox>
137
+ );
138
+ }
139
+
140
+ export default IntegerItem;