@aehrc/smart-forms-renderer 1.2.10 → 1.2.12

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 (289) hide show
  1. package/jest.config.ts +5 -5
  2. package/lib/components/FormComponents/AttachmentItem/AttachmentItem.js +2 -2
  3. package/lib/components/FormComponents/AttachmentItem/AttachmentItem.js.map +1 -1
  4. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +2 -2
  5. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
  6. package/lib/components/FormComponents/ChoiceItems/CheckboxOptionList.js +2 -1
  7. package/lib/components/FormComponents/ChoiceItems/CheckboxOptionList.js.map +1 -1
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.d.ts +1 -0
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +3 -2
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +5 -6
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +2 -2
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +2 -2
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +2 -2
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +2 -2
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.d.ts +2 -1
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +61 -3
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +2 -2
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +5 -2
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
  28. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +2 -2
  29. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
  30. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.js +2 -2
  31. package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.js.map +1 -1
  32. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.js +2 -2
  33. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.js.map +1 -1
  34. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.js +3 -3
  35. package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.js.map +1 -1
  36. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +2 -2
  37. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  38. package/lib/components/FormComponents/GroupItem/GroupItemView.js +1 -1
  39. package/lib/components/FormComponents/GroupItem/GroupItemView.js.map +1 -1
  40. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +2 -2
  41. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  42. package/lib/components/FormComponents/ItemParts/CheckboxSingle.d.ts +3 -1
  43. package/lib/components/FormComponents/ItemParts/CheckboxSingle.js +2 -2
  44. package/lib/components/FormComponents/ItemParts/CheckboxSingle.js.map +1 -1
  45. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +7 -0
  46. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +26 -0
  47. package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +1 -0
  48. package/lib/components/FormComponents/ItemParts/ItemLabel.js +1 -7
  49. package/lib/components/FormComponents/ItemParts/ItemLabel.js.map +1 -1
  50. package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +8 -0
  51. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +63 -0
  52. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -0
  53. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +8 -0
  54. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +53 -0
  55. package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +1 -0
  56. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.d.ts +7 -0
  57. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.js +39 -0
  58. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher copy.js.map +1 -0
  59. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher.js +3 -19
  60. package/lib/components/FormComponents/ItemParts/ItemTextSwitcher.js.map +1 -1
  61. package/lib/components/FormComponents/ItemParts/RadioOptionList.js +2 -1
  62. package/lib/components/FormComponents/ItemParts/RadioOptionList.js.map +1 -1
  63. package/lib/components/FormComponents/ItemParts/StyledText.d.ts +8 -0
  64. package/lib/components/FormComponents/ItemParts/StyledText.js +30 -0
  65. package/lib/components/FormComponents/ItemParts/StyledText.js.map +1 -0
  66. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +1 -0
  67. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +3 -2
  68. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
  69. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +5 -5
  70. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
  71. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +2 -2
  72. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
  73. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.js +2 -2
  74. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  75. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +2 -2
  76. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
  77. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.js +2 -2
  78. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.js.map +1 -1
  79. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +1 -0
  80. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +71 -4
  81. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
  82. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +5 -6
  83. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
  84. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +1 -0
  85. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +3 -2
  86. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
  87. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +5 -6
  88. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
  89. package/lib/components/FormComponents/QuantityItem/QuantityItem.js +2 -2
  90. package/lib/components/FormComponents/QuantityItem/QuantityItem.js.map +1 -1
  91. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +10 -0
  92. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +30 -0
  93. package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +1 -0
  94. package/lib/components/FormComponents/SliderItem/Slider.styles.d.ts +1 -1
  95. package/lib/components/FormComponents/SliderItem/SliderItem.js +2 -2
  96. package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -1
  97. package/lib/components/FormComponents/StringItem/StringItem.js +2 -2
  98. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
  99. package/lib/components/FormComponents/TextItem/TextItem.js +2 -2
  100. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
  101. package/lib/components/FormComponents/TimeItem/TimeItem.js +2 -2
  102. package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
  103. package/lib/components/FormComponents/UrlItem/UrlItem.js +2 -2
  104. package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
  105. package/lib/components/Iconify/Iconify.d.ts +10 -0
  106. package/lib/components/Iconify/Iconify.js +26 -0
  107. package/lib/components/Iconify/Iconify.js.map +1 -0
  108. package/lib/components/Renderer/FormBodyPage.d.ts +9 -0
  109. package/lib/components/Renderer/FormBodyPage.js +43 -0
  110. package/lib/components/Renderer/FormBodyPage.js.map +1 -0
  111. package/lib/components/Renderer/FormTitle.d.ts +7 -0
  112. package/lib/components/Renderer/FormTitle.js +30 -0
  113. package/lib/components/Renderer/FormTitle.js.map +1 -0
  114. package/lib/components/Renderer/FormTopLevelPage.d.ts +9 -0
  115. package/lib/components/Renderer/FormTopLevelPage.js +29 -0
  116. package/lib/components/Renderer/FormTopLevelPage.js.map +1 -0
  117. package/lib/hooks/useBooleanCalculatedExpression.d.ts +12 -0
  118. package/lib/hooks/useBooleanCalculatedExpression.js +52 -0
  119. package/lib/hooks/useBooleanCalculatedExpression.js.map +1 -0
  120. package/lib/hooks/useCalculatedExpressionUpdated.d.ts +1 -1
  121. package/lib/hooks/useCalculatedExpressionUpdated.js +18 -9
  122. package/lib/hooks/useCalculatedExpressionUpdated.js.map +1 -1
  123. package/lib/hooks/useDecimalCalculatedExpression.d.ts +13 -0
  124. package/lib/hooks/useDecimalCalculatedExpression.js +58 -0
  125. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -0
  126. package/lib/hooks/useInitialiseGroupTable.d.ts +4 -0
  127. package/lib/hooks/useInitialiseGroupTable.js +36 -0
  128. package/lib/hooks/useInitialiseGroupTable.js.map +1 -0
  129. package/lib/hooks/useIntegerCalculatedExpression.d.ts +12 -0
  130. package/lib/hooks/useIntegerCalculatedExpression.js +55 -0
  131. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -0
  132. package/lib/hooks/useNumberInput.d.ts +3 -0
  133. package/lib/hooks/useNumberInput.js +31 -0
  134. package/lib/hooks/useNumberInput.js.map +1 -0
  135. package/lib/hooks/useParseXhtml.d.ts +2 -2
  136. package/lib/hooks/useParseXhtml.js +5 -5
  137. package/lib/hooks/useParseXhtml.js.map +1 -1
  138. package/lib/hooks/useRepeatAnswers.d.ts +4 -0
  139. package/lib/hooks/useRepeatAnswers.js +34 -0
  140. package/lib/hooks/useRepeatAnswers.js.map +1 -0
  141. package/lib/hooks/useRepeatGroups.d.ts +4 -0
  142. package/lib/hooks/useRepeatGroups.js +34 -0
  143. package/lib/hooks/useRepeatGroups.js.map +1 -0
  144. package/lib/hooks/useStringCalculatedExpression.d.ts +14 -0
  145. package/lib/hooks/useStringCalculatedExpression.js +69 -0
  146. package/lib/hooks/useStringCalculatedExpression.js.map +1 -0
  147. package/lib/hooks/useStringInput.d.ts +3 -0
  148. package/lib/hooks/useStringInput.js +31 -0
  149. package/lib/hooks/useStringInput.js.map +1 -0
  150. package/lib/interfaces/repeatItem.interface.d.ts +5 -0
  151. package/lib/interfaces/repeatItem.interface.js +2 -0
  152. package/lib/interfaces/repeatItem.interface.js.map +1 -0
  153. package/lib/stores/questionnaireStore.js +15 -2
  154. package/lib/stores/questionnaireStore.js.map +1 -1
  155. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.d.ts +3 -2
  156. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js +27 -6
  157. package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js.map +1 -1
  158. package/lib/stories/storybookWrappers/index.js +1 -1
  159. package/lib/theme/Theme.d.ts +44 -0
  160. package/lib/theme/Theme.js +45 -0
  161. package/lib/theme/Theme.js.map +1 -0
  162. package/lib/theme/customGlobalStyles.d.ts +2 -0
  163. package/lib/theme/customGlobalStyles.js +61 -0
  164. package/lib/theme/customGlobalStyles.js.map +1 -0
  165. package/lib/theme/overrides/Accordion.d.ts +14 -0
  166. package/lib/theme/overrides/Accordion.js +32 -0
  167. package/lib/theme/overrides/Accordion.js.map +1 -0
  168. package/lib/theme/overrides/Autocomplete.d.ts +10 -0
  169. package/lib/theme/overrides/Autocomplete.js +28 -0
  170. package/lib/theme/overrides/Autocomplete.js.map +1 -0
  171. package/lib/theme/overrides/Button.d.ts +33 -0
  172. package/lib/theme/overrides/Button.js +52 -0
  173. package/lib/theme/overrides/Button.js.map +1 -0
  174. package/lib/theme/overrides/Card.d.ts +35 -0
  175. package/lib/theme/overrides/Card.js +49 -0
  176. package/lib/theme/overrides/Card.js.map +1 -0
  177. package/lib/theme/overrides/Input.d.ts +64 -0
  178. package/lib/theme/overrides/Input.js +81 -0
  179. package/lib/theme/overrides/Input.js.map +1 -0
  180. package/lib/theme/overrides/Overrides.d.ts +3 -0
  181. package/lib/theme/overrides/Overrides.js +29 -0
  182. package/lib/theme/overrides/Overrides.js.map +1 -0
  183. package/lib/theme/overrides/Paper.d.ts +12 -0
  184. package/lib/theme/overrides/Paper.js +31 -0
  185. package/lib/theme/overrides/Paper.js.map +1 -0
  186. package/lib/theme/overrides/SpeedDial.d.ts +16 -0
  187. package/lib/theme/overrides/SpeedDial.js +34 -0
  188. package/lib/theme/overrides/SpeedDial.js.map +1 -0
  189. package/lib/theme/overrides/Table.d.ts +12 -0
  190. package/lib/theme/overrides/Table.js +30 -0
  191. package/lib/theme/overrides/Table.js.map +1 -0
  192. package/lib/theme/palette.d.ts +27 -0
  193. package/lib/theme/palette.js +67 -0
  194. package/lib/theme/palette.js.map +1 -0
  195. package/lib/theme/shadows.d.ts +2 -0
  196. package/lib/theme/shadows.js +52 -0
  197. package/lib/theme/shadows.js.map +1 -0
  198. package/lib/utils/answerExpression.d.ts +18 -0
  199. package/lib/utils/answerExpression.js +133 -0
  200. package/lib/utils/answerExpression.js.map +1 -0
  201. package/lib/utils/dayjsExtend.d.ts +1 -0
  202. package/lib/utils/dayjsExtend.js +22 -0
  203. package/lib/utils/dayjsExtend.js.map +1 -0
  204. package/lib/utils/dynamicValueSet.d.ts +5 -0
  205. package/lib/utils/dynamicValueSet.js +96 -0
  206. package/lib/utils/dynamicValueSet.js.map +1 -0
  207. package/lib/utils/extensions.d.ts +2 -2
  208. package/lib/utils/extensions.js +2 -2
  209. package/lib/utils/extensions.js.map +1 -1
  210. package/lib/utils/fhirpathAsyncUtils/fhirpath-async.d.ts +14 -0
  211. package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js +639 -0
  212. package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js.map +1 -0
  213. package/lib/utils/fhirpathAsyncUtils/outcome-utils.d.ts +3 -0
  214. package/lib/utils/fhirpathAsyncUtils/outcome-utils.js +41 -0
  215. package/lib/utils/fhirpathAsyncUtils/outcome-utils.js.map +1 -0
  216. package/lib/utils/itemControl.d.ts +97 -0
  217. package/lib/utils/itemControl.js +336 -0
  218. package/lib/utils/itemControl.js.map +1 -0
  219. package/lib/utils/manageForm.js +1 -0
  220. package/lib/utils/manageForm.js.map +1 -1
  221. package/lib/utils/qrItem.d.ts +6 -0
  222. package/lib/utils/qrItem.js +11 -0
  223. package/lib/utils/qrItem.js.map +1 -1
  224. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +2 -0
  225. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +43 -0
  226. package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +1 -0
  227. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +3 -0
  228. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +101 -0
  229. package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -0
  230. package/lib/utils/validateQuestionnaire.d.ts +66 -0
  231. package/lib/utils/validateQuestionnaire.js +559 -0
  232. package/lib/utils/validateQuestionnaire.js.map +1 -0
  233. package/package.json +2 -2
  234. package/src/components/FormComponents/AttachmentItem/AttachmentItem.tsx +2 -2
  235. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +2 -2
  236. package/src/components/FormComponents/ChoiceItems/CheckboxOptionList.tsx +5 -1
  237. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +5 -0
  238. package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +6 -4
  239. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +2 -2
  240. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +2 -2
  241. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +2 -2
  242. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +2 -2
  243. package/src/components/FormComponents/ChoiceItems/ChoiceRadioSingle.tsx +1 -1
  244. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +93 -4
  245. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +2 -2
  246. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +4 -2
  247. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +2 -2
  248. package/src/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.tsx +2 -2
  249. package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.tsx +2 -2
  250. package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.tsx +3 -1
  251. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +2 -2
  252. package/src/components/FormComponents/GroupItem/GroupItemView.tsx +1 -1
  253. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +2 -2
  254. package/src/components/FormComponents/ItemParts/CheckboxSingle.tsx +4 -2
  255. package/src/components/FormComponents/ItemParts/ItemLabel.tsx +1 -8
  256. package/src/components/FormComponents/ItemParts/ItemTextSwitcher.tsx +3 -25
  257. package/src/components/FormComponents/ItemParts/RadioOptionList.tsx +4 -1
  258. package/src/components/FormComponents/ItemParts/StyledText.tsx +46 -0
  259. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +4 -0
  260. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +6 -3
  261. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +2 -2
  262. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.tsx +2 -2
  263. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +2 -2
  264. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.tsx +2 -2
  265. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +86 -3
  266. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +6 -4
  267. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +4 -0
  268. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +6 -4
  269. package/src/components/FormComponents/QuantityItem/QuantityItem.tsx +2 -2
  270. package/src/components/FormComponents/SliderItem/SliderItem.tsx +2 -2
  271. package/src/components/FormComponents/StringItem/StringItem.tsx +2 -2
  272. package/src/components/FormComponents/TextItem/TextItem.tsx +2 -2
  273. package/src/components/FormComponents/TimeItem/TimeItem.tsx +2 -2
  274. package/src/components/FormComponents/UrlItem/UrlItem.tsx +2 -2
  275. package/src/hooks/useCalculatedExpressionUpdated.ts +25 -11
  276. package/src/hooks/useParseXhtml.tsx +9 -6
  277. package/src/stores/questionnaireStore.ts +23 -0
  278. package/src/utils/extensions.ts +9 -3
  279. package/src/utils/manageForm.ts +1 -0
  280. package/src/utils/qrItem.ts +12 -0
  281. package/lib/components/FormComponents/ItemParts/AccessibleFeedback.d.ts +0 -7
  282. package/lib/components/FormComponents/ItemParts/AccessibleFeedback.js +0 -7
  283. package/lib/components/FormComponents/ItemParts/AccessibleFeedback.js.map +0 -1
  284. package/lib/interfaces/itemPath.interface.d.ts +0 -31
  285. package/lib/interfaces/itemPath.interface.js +0 -2
  286. package/lib/interfaces/itemPath.interface.js.map +0 -1
  287. package/lib/utils/itemPath.d.ts +0 -57
  288. package/lib/utils/itemPath.js +0 -75
  289. package/lib/utils/itemPath.js.map +0 -1
@@ -39,6 +39,7 @@ import type { Variables } from '../interfaces/variables.interface';
39
39
  import { processCalculatedExpressions } from '../utils/calculatedExpression';
40
40
  import { applyComputedUpdates } from '../utils/computedUpdates';
41
41
  import {
42
+ assignPopulatedAnswersToEnableWhen,
42
43
  mutateRepeatEnableWhenItemInstances,
43
44
  updateEnableWhenItemAnswer
44
45
  } from '../utils/enableWhen';
@@ -441,6 +442,7 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
441
442
 
442
443
  4. Re-run calculatedExpressions as a final step to ensure all calculations are up-to-date, incorporating any toggled options or dynamic value set changes.
443
444
  5. Update store state based on the expressions that changed
445
+ 6. (If initial update) Initialise enableWhen items
444
446
  */
445
447
 
446
448
  const {
@@ -450,6 +452,7 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
450
452
  variables,
451
453
  targetConstraints,
452
454
  answerOptionsToggleExpressions,
455
+ enableWhenItems,
453
456
  enableWhenExpressions,
454
457
  processedValueSets,
455
458
  calculatedExpressions,
@@ -471,6 +474,8 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
471
474
  enableWhenExpressions?: EnableWhenExpressions;
472
475
  answerOptionsToggleExpressions?: Record<string, AnswerOptionsToggleExpression[]>;
473
476
  processedValueSets?: Record<string, ProcessedValueSet>;
477
+ enableWhenItems?: EnableWhenItems;
478
+ enableWhenLinkedQuestions?: Record<string, string[]>;
474
479
  }
475
480
  ) {
476
481
  // Update QuestionnaireStore state
@@ -489,6 +494,12 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
489
494
  }),
490
495
  ...(otherExpressions?.processedValueSets && {
491
496
  processedValueSets: otherExpressions.processedValueSets
497
+ }),
498
+ ...(otherExpressions?.enableWhenItems && {
499
+ enableWhenItems: otherExpressions.enableWhenItems
500
+ }),
501
+ ...(otherExpressions?.enableWhenLinkedQuestions && {
502
+ enableWhenLinkedQuestions: otherExpressions.enableWhenLinkedQuestions
492
503
  })
493
504
  }));
494
505
 
@@ -573,6 +584,8 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
573
584
  enableWhenExpressions: EnableWhenExpressions;
574
585
  answerOptionsToggleExpressions: Record<string, AnswerOptionsToggleExpression[]>;
575
586
  processedValueSets: Record<string, ProcessedValueSet>;
587
+ enableWhenItems: EnableWhenItems;
588
+ enableWhenLinkedQuestions: Record<string, string[]>;
576
589
  }> = {};
577
590
  if (targetConstraintsUpdate.isUpdated) {
578
591
  otherExpressionsToUpdate.targetConstraints = targetConstraintsUpdate.value;
@@ -588,6 +601,16 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
588
601
  otherExpressionsToUpdate.processedValueSets = processedValueSetsUpdate.value;
589
602
  }
590
603
 
604
+ // Step 6: Evaluate enableWhen on the first update
605
+ if (isInitialUpdate) {
606
+ const {
607
+ initialisedItems: initialisedEnableWhenItems,
608
+ linkedQuestions: initialisedEnableWhenLinkedQuestions
609
+ } = assignPopulatedAnswersToEnableWhen(enableWhenItems, lastUpdatedResponse);
610
+ otherExpressionsToUpdate.enableWhenItems = initialisedEnableWhenItems;
611
+ otherExpressionsToUpdate.enableWhenLinkedQuestions = initialisedEnableWhenLinkedQuestions;
612
+ }
613
+
591
614
  updateStoreState(
592
615
  lastUpdatedResponse,
593
616
  updatedCalculatedExpressions,
@@ -15,7 +15,13 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import type { Coding, Extension, QuestionnaireItem, QuestionnaireItemAnswerOption } from 'fhir/r4';
18
+ import type {
19
+ Coding,
20
+ Element,
21
+ Extension,
22
+ QuestionnaireItem,
23
+ QuestionnaireItemAnswerOption
24
+ } from 'fhir/r4';
19
25
  import type { RegexValidation } from '../interfaces/regex.interface';
20
26
  import { structuredDataCapture } from 'fhir-sdc-helpers';
21
27
  import { default as htmlParse } from 'html-react-parser';
@@ -160,8 +166,8 @@ export function getXHtmlString(qItem: QuestionnaireItem): string | null {
160
166
  *
161
167
  * @author Sean Fong
162
168
  */
163
- export function getMarkdownString(qItem: QuestionnaireItem): string | null {
164
- const extension = qItem._text?.extension?.find(
169
+ export function getMarkdownString(element: Element | undefined): string | null {
170
+ const extension = element?.extension?.find(
165
171
  (extension: Extension) =>
166
172
  extension.url === 'http://hl7.org/fhir/StructureDefinition/rendering-markdown'
167
173
  );
@@ -117,6 +117,7 @@ export async function buildForm(params: BuildFormParams): Promise<void> {
117
117
  }
118
118
 
119
119
  // QR is set to undefined here to prevent it from being initialised twice. This is defined like that for backward compatibility purposes.
120
+ // Warning: setting the QR here breaks pre-pop. For initialisation logic, do it in questionnaireStore.getState().updateExpressions() with isInitialUpdate=true.
120
121
  await questionnaireStore
121
122
  .getState()
122
123
  .buildSourceQuestionnaire(
@@ -312,3 +312,15 @@ export function updateQrNestedItems(
312
312
  return;
313
313
  }
314
314
  }
315
+
316
+ /**
317
+ * Gets the Id of the QR Item, if it has a Calculated Expression, then it returns a new Id, else it returns the passed Id.
318
+ *
319
+ * @author Janardhan Vignarajan
320
+ */
321
+ export function getQRItemId(answerKey: string | undefined) {
322
+ // If the answerKey is through CalculatedExpression, then we assign a new random ID so that it does not fire again when user changes the value
323
+ return answerKey && answerKey.includes('calculatedExpression')
324
+ ? Math.random().toString(36).slice(2)
325
+ : answerKey;
326
+ }
@@ -1,7 +0,0 @@
1
- import { type ReactNode } from 'react';
2
- interface AccessibleFeedbackProps {
3
- children: ReactNode;
4
- id?: string;
5
- }
6
- declare function AccessibleFeedback(props: AccessibleFeedbackProps): import("react/jsx-runtime").JSX.Element;
7
- export default AccessibleFeedback;
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- function AccessibleFeedback(props) {
3
- const { children, id } = props;
4
- return (_jsx("span", { id: id, role: "alert", "aria-live": "assertive", children: children }));
5
- }
6
- export default AccessibleFeedback;
7
- //# sourceMappingURL=AccessibleFeedback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccessibleFeedback.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/AccessibleFeedback.tsx"],"names":[],"mappings":";AAwBA,SAAS,kBAAkB,CAAC,KAA8B;IACxD,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAE/B,OAAO,CACL,eAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAC,OAAO,eAAW,WAAW,YAC7C,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,eAAe,kBAAkB,CAAC"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Represents a single step in the path to an item within a nested QuestionnaireResponse.
3
- * Each step is identified by its `linkId`, and optionally a `repeatIndex` if the item
4
- * occurs within a repeating group.
5
- */
6
- export interface ItemPathSegment {
7
- /** The `linkId` of the QuestionnaireResponseItem at this path segment. */
8
- linkId: string;
9
- /**
10
- * The index of the repeated item if this segment occurs within a repeating group.
11
- * Omitted if the item is not part of a repeating group.
12
- */
13
- repeatIndex?: number;
14
- }
15
- /**
16
- * Represents a full path from the root of a QuestionnaireResponse to a deeply nested item.
17
- * Each segment corresponds to one level of the item hierarchy.
18
- *
19
- * Example:
20
- * [
21
- * { linkId: 'sectionA' },
22
- * { linkId: 'groupB', repeatIndex: 1 },
23
- * { linkId: 'questionC' }
24
- * ]
25
- *
26
- * This path navigates through `sectionA`, into the second instance of `groupB`,
27
- * and finally to `questionC`.
28
- *
29
- * @author Sean Fong
30
- */
31
- export type ItemPath = ItemPathSegment[];
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=itemPath.interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"itemPath.interface.js","sourceRoot":"","sources":["../../src/interfaces/itemPath.interface.ts"],"names":[],"mappings":""}
@@ -1,57 +0,0 @@
1
- import type { ItemPath } from '../interfaces/itemPath.interface';
2
- /**
3
- * Creates an `ItemPath` containing a single segment for the given `linkId`.
4
- * This is useful when you want to construct a path to a specific item without referencing its ancestry,
5
- * such as when working with top-level items or when only the item's identity is relevant.
6
- *
7
- * @param linkId - The `linkId` of the item.
8
- * @param repeatIndex - (Optional) If the item is part of a repeating group, specify its index.
9
- * @returns An `ItemPath` containing one segment.
10
- *
11
- * @example
12
- * ```ts
13
- * const path = createSingleItemPath('question-1');
14
- * // Output: [{ linkId: 'question-1' }]
15
- *
16
- * const pathWithRepeat = createSingleItemPath('question-1', 2);
17
- * // Output: [{ linkId: 'question-1', repeatIndex: 2 }]
18
- * ```
19
- */
20
- export declare function createSingleItemPath(linkId: string, repeatIndex?: number): ItemPath;
21
- /**
22
- * Creates a new `ItemPath` by extending the given path with a new segment for the provided `linkId`.
23
- * This version does NOT include a `repeatIndex`. If repeat handling is needed,
24
- * use `appendRepeatIndexToLastSegment` after extending.
25
- *
26
- * @param currentPath - The existing item path.
27
- * @param linkId - The `linkId` to use in the new path segment.
28
- * @returns A new `ItemPath` with the added segment.
29
- */
30
- export declare function extendItemPath(currentPath: linkId: string): ItemPath;
31
- /**
32
- * Returns a new `ItemPath` with a `repeatIndex` applied to the last segment.
33
- * Useful for denoting which repetition of a group is being accessed.
34
- *
35
- * @param path - The item path to modify.
36
- * @param repeatIndex - The index to assign to the final segment.
37
- * @returns A new `ItemPath` with the last segment modified to include `repeatIndex`.
38
- *
39
- * @example
40
- * const basePath = [{ linkId: 'groupA' }, { linkId: 'groupB' }];
41
- * appendRepeatIndexToLastSegment(basePath, 2);
42
- * // → [{ linkId: 'groupA' }, { linkId: 'groupB', repeatIndex: 2 }]
43
- */
44
- export declare function appendRepeatIndexToLastSegment(path: repeatIndex: number): ItemPath;
45
- /**
46
- * Converts an `ItemPath` to a FHIRPath-compatible string.
47
- *
48
- * For example, the path:
49
- * [
50
- * { linkId: 'groupA' },
51
- * { linkId: 'repeatingGroup', repeatIndex: 1 },
52
- * { linkId: 'questionB' }
53
- * ]
54
- *
55
- * Returns: "item.where(linkId='groupA').item.where(linkId='repeatingGroup')[1].item.where(linkId='questionB')"
56
- */
57
- export declare function itemPathToFhirPathString(path: ItemPath): string;
@@ -1,75 +0,0 @@
1
- /**
2
- * Creates an `ItemPath` containing a single segment for the given `linkId`.
3
- * This is useful when you want to construct a path to a specific item without referencing its ancestry,
4
- * such as when working with top-level items or when only the item's identity is relevant.
5
- *
6
- * @param linkId - The `linkId` of the item.
7
- * @param repeatIndex - (Optional) If the item is part of a repeating group, specify its index.
8
- * @returns An `ItemPath` containing one segment.
9
- *
10
- * @example
11
- * ```ts
12
- * const path = createSingleItemPath('question-1');
13
- * // Output: [{ linkId: 'question-1' }]
14
- *
15
- * const pathWithRepeat = createSingleItemPath('question-1', 2);
16
- * // Output: [{ linkId: 'question-1', repeatIndex: 2 }]
17
- * ```
18
- */
19
- export function createSingleItemPath(linkId, repeatIndex) {
20
- return repeatIndex !== undefined ? [{ linkId, repeatIndex }] : [{ linkId }];
21
- }
22
- /**
23
- * Creates a new `ItemPath` by extending the given path with a new segment for the provided `linkId`.
24
- * This version does NOT include a `repeatIndex`. If repeat handling is needed,
25
- * use `appendRepeatIndexToLastSegment` after extending.
26
- *
27
- * @param currentPath - The existing item path.
28
- * @param linkId - The `linkId` to use in the new path segment.
29
- * @returns A new `ItemPath` with the added segment.
30
- */
31
- export function extendItemPath(currentPath, linkId) {
32
- return [...currentPath, { linkId }];
33
- }
34
- /**
35
- * Returns a new `ItemPath` with a `repeatIndex` applied to the last segment.
36
- * Useful for denoting which repetition of a group is being accessed.
37
- *
38
- * @param path - The item path to modify.
39
- * @param repeatIndex - The index to assign to the final segment.
40
- * @returns A new `ItemPath` with the last segment modified to include `repeatIndex`.
41
- *
42
- * @example
43
- * const basePath = [{ linkId: 'groupA' }, { linkId: 'groupB' }];
44
- * appendRepeatIndexToLastSegment(basePath, 2);
45
- * // → [{ linkId: 'groupA' }, { linkId: 'groupB', repeatIndex: 2 }]
46
- */
47
- export function appendRepeatIndexToLastSegment(path, repeatIndex) {
48
- if (path.length === 0)
49
- return [];
50
- const newPath = [...path];
51
- newPath[path.length - 1] = Object.assign(Object.assign({}, newPath[path.length - 1]), { repeatIndex });
52
- return newPath;
53
- }
54
- /**
55
- * Converts an `ItemPath` to a FHIRPath-compatible string.
56
- *
57
- * For example, the path:
58
- * [
59
- * { linkId: 'groupA' },
60
- * { linkId: 'repeatingGroup', repeatIndex: 1 },
61
- * { linkId: 'questionB' }
62
- * ]
63
- *
64
- * Returns: "item.where(linkId='groupA').item.where(linkId='repeatingGroup')[1].item.where(linkId='questionB')"
65
- */
66
- export function itemPathToFhirPathString(path) {
67
- return path
68
- .map((segment, index) => {
69
- const base = `where(linkId='${segment.linkId}')`;
70
- const repeat = segment.repeatIndex !== undefined ? `[${segment.repeatIndex}]` : '';
71
- return (index === 0 ? 'item.' : '') + base + repeat;
72
- })
73
- .join('.item.');
74
- }
75
- //# sourceMappingURL=itemPath.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"itemPath.js","sourceRoot":"","sources":["../../src/utils/itemPath.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,WAAoB;IACvE,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,WAAqB,EAAE,MAAc;IAClE,OAAO,CAAC,GAAG,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAc,EAAE,WAAmB;IAChF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,mCAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAE,WAAW,GAAE,CAAC;IACxE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAc;IACrD,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,MAAM,IAAI,GAAG,iBAAiB,OAAO,CAAC,MAAM,IAAI,CAAC;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;IACtD,CAAC,CAAC;SACD,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC"}