@medplum/react 0.10.2 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/dist/cjs/{AddressDisplay.d.ts → AddressDisplay/AddressDisplay.d.ts} +0 -0
  2. package/dist/cjs/{AddressInput.d.ts → AddressInput/AddressInput.d.ts} +0 -0
  3. package/dist/cjs/{stories → AddressInput}/AddressInput.stories.d.ts +0 -0
  4. package/dist/cjs/{AnnotationInput.d.ts → AnnotationInput/AnnotationInput.d.ts} +0 -0
  5. package/dist/cjs/{AttachmentArrayDisplay.d.ts → AttachmentArrayDisplay/AttachmentArrayDisplay.d.ts} +0 -0
  6. package/dist/cjs/{AttachmentArrayInput.d.ts → AttachmentArrayInput/AttachmentArrayInput.d.ts} +0 -0
  7. package/dist/cjs/{stories → AttachmentArrayInput}/AttachmentArrayInput.stories.d.ts +0 -0
  8. package/dist/{esm → cjs/AttachmentButton}/AttachmentButton.d.ts +2 -0
  9. package/dist/cjs/{stories → AttachmentButton}/AttachmentButton.stories.d.ts +0 -0
  10. package/dist/cjs/{AttachmentDisplay.d.ts → AttachmentDisplay/AttachmentDisplay.d.ts} +0 -0
  11. package/dist/cjs/{AttachmentInput.d.ts → AttachmentInput/AttachmentInput.d.ts} +0 -0
  12. package/dist/cjs/{stories → AttachmentInput}/AttachmentInput.stories.d.ts +0 -0
  13. package/dist/cjs/{BackboneElementDisplay.d.ts → BackboneElementDisplay/BackboneElementDisplay.d.ts} +0 -0
  14. package/dist/cjs/{BackboneElementInput.d.ts → BackboneElementInput/BackboneElementInput.d.ts} +0 -0
  15. package/dist/cjs/{CalendarInput.d.ts → CalendarInput/CalendarInput.d.ts} +0 -1
  16. package/dist/{esm → cjs/CheckboxFormSection}/CheckboxFormSection.d.ts +0 -1
  17. package/dist/cjs/{CodeInput.d.ts → CodeInput/CodeInput.d.ts} +0 -0
  18. package/dist/cjs/{stories → CodeInput}/CodeInput.stories.d.ts +0 -0
  19. package/dist/cjs/{CodeableConceptDisplay.d.ts → CodeableConceptDisplay/CodeableConceptDisplay.d.ts} +0 -0
  20. package/dist/cjs/{stories → CodeableConceptDisplay}/CodeableConceptDisplay.stories.d.ts +0 -0
  21. package/dist/cjs/{CodeableConceptInput.d.ts → CodeableConceptInput/CodeableConceptInput.d.ts} +0 -0
  22. package/dist/cjs/{stories → CodeableConceptInput}/CodeableConceptInput.stories.d.ts +0 -0
  23. package/dist/cjs/{CodingDisplay.d.ts → CodingDisplay/CodingDisplay.d.ts} +0 -0
  24. package/dist/cjs/{CodingInput.d.ts → CodingInput/CodingInput.d.ts} +0 -0
  25. package/dist/cjs/{ContactDetailDisplay.d.ts → ContactDetailDisplay/ContactDetailDisplay.d.ts} +0 -0
  26. package/dist/cjs/{ContactDetailInput.d.ts → ContactDetailInput/ContactDetailInput.d.ts} +0 -0
  27. package/dist/cjs/{ContactPointDisplay.d.ts → ContactPointDisplay/ContactPointDisplay.d.ts} +0 -0
  28. package/dist/cjs/{ContactPointInput.d.ts → ContactPointInput/ContactPointInput.d.ts} +0 -0
  29. package/dist/cjs/{DateTimeInput.d.ts → DateTimeInput/DateTimeInput.d.ts} +0 -0
  30. package/dist/cjs/{DefaultResourceTimeline.d.ts → DefaultResourceTimeline/DefaultResourceTimeline.d.ts} +0 -0
  31. package/dist/{esm → cjs/DescriptionList}/DescriptionList.d.ts +0 -1
  32. package/dist/cjs/{stories/Logo.stories.d.ts → DescriptionList/DescriptionList.stories.d.ts} +0 -0
  33. package/dist/cjs/{DiagnosticReportDisplay.d.ts → DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts} +0 -1
  34. package/dist/cjs/{stories → DiagnosticReportDisplay}/DiagnosticReportDisplay.stories.d.ts +0 -0
  35. package/dist/cjs/{Document.d.ts → Document/Document.d.ts} +0 -1
  36. package/dist/cjs/{EncounterTimeline.d.ts → EncounterTimeline/EncounterTimeline.d.ts} +0 -0
  37. package/dist/cjs/{stories → EncounterTimeline}/EncounterTimeline.stories.d.ts +0 -0
  38. package/dist/cjs/{ErrorBoundary.d.ts → ErrorBoundary/ErrorBoundary.d.ts} +0 -0
  39. package/dist/cjs/{ExtensionInput.d.ts → ExtensionInput/ExtensionInput.d.ts} +0 -0
  40. package/dist/cjs/{FhirPathDisplay.d.ts → FhirPathDisplay/FhirPathDisplay.d.ts} +0 -0
  41. package/dist/cjs/{stories → FhirPathDisplay}/FhirPathDisplay.stories.d.ts +1 -1
  42. package/dist/cjs/{FhirPathTable.d.ts → FhirPathTable/FhirPathTable.d.ts} +1 -2
  43. package/dist/cjs/{Form.d.ts → Form/Form.d.ts} +0 -0
  44. package/dist/cjs/{FormUtils.d.ts → Form/FormUtils.d.ts} +0 -0
  45. package/dist/cjs/{FormSection.d.ts → FormSection/FormSection.d.ts} +0 -1
  46. package/dist/cjs/{GoogleButton.d.ts → GoogleButton/GoogleButton.d.ts} +0 -0
  47. package/dist/cjs/{HumanNameDisplay.d.ts → HumanNameDisplay/HumanNameDisplay.d.ts} +0 -0
  48. package/dist/cjs/{HumanNameInput.d.ts → HumanNameInput/HumanNameInput.d.ts} +0 -0
  49. package/dist/cjs/{IdentifierDisplay.d.ts → IdentifierDisplay/IdentifierDisplay.d.ts} +0 -0
  50. package/dist/cjs/{IdentifierInput.d.ts → IdentifierInput/IdentifierInput.d.ts} +0 -0
  51. package/dist/cjs/{Logo.d.ts → Logo/Logo.d.ts} +0 -0
  52. package/dist/{esm/stories → cjs/Logo}/Logo.stories.d.ts +0 -0
  53. package/dist/cjs/{MedplumLink.d.ts → MedplumLink/MedplumLink.d.ts} +2 -4
  54. package/dist/cjs/{MedplumProvider.d.ts → MedplumProvider/MedplumProvider.d.ts} +0 -0
  55. package/dist/cjs/{PatientTimeline.d.ts → PatientTimeline/PatientTimeline.d.ts} +0 -0
  56. package/dist/cjs/{stories → PatientTimeline}/PatientTimeline.stories.d.ts +0 -0
  57. package/dist/cjs/{PeriodInput.d.ts → PeriodInput/PeriodInput.d.ts} +0 -0
  58. package/dist/cjs/{stories → PeriodInput}/PeriodInput.stories.d.ts +0 -0
  59. package/dist/cjs/{PlanDefinitionBuilder.d.ts → PlanDefinitionBuilder/PlanDefinitionBuilder.d.ts} +0 -0
  60. package/dist/cjs/{stories → PlanDefinitionBuilder}/PlanDefinitionBuilder.stories.d.ts +0 -0
  61. package/dist/cjs/{QuantityDisplay.d.ts → QuantityDisplay/QuantityDisplay.d.ts} +0 -1
  62. package/dist/cjs/{QuantityInput.d.ts → QuantityInput/QuantityInput.d.ts} +0 -0
  63. package/dist/cjs/{QuestionnaireBuilder.d.ts → QuestionnaireBuilder/QuestionnaireBuilder.d.ts} +0 -1
  64. package/dist/cjs/{stories → QuestionnaireBuilder}/QuestionnaireBuilder.stories.d.ts +0 -0
  65. package/dist/{esm → cjs/QuestionnaireForm}/QuestionnaireForm.d.ts +0 -1
  66. package/dist/cjs/{stories → QuestionnaireForm}/QuestionnaireForm.stories.d.ts +0 -0
  67. package/dist/{esm → cjs/RangeDisplay}/RangeDisplay.d.ts +0 -1
  68. package/dist/cjs/{RangeInput.d.ts → RangeInput/RangeInput.d.ts} +0 -0
  69. package/dist/cjs/{RatioDisplay.d.ts → RatioDisplay/RatioDisplay.d.ts} +0 -0
  70. package/dist/cjs/{RatioInput.d.ts → RatioInput/RatioInput.d.ts} +0 -0
  71. package/dist/cjs/{ReferenceDisplay.d.ts → ReferenceDisplay/ReferenceDisplay.d.ts} +0 -0
  72. package/dist/cjs/{ReferenceInput.d.ts → ReferenceInput/ReferenceInput.d.ts} +0 -0
  73. package/dist/cjs/{stories → ReferenceInput}/ReferenceInput.stories.d.ts +0 -0
  74. package/dist/cjs/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +27 -0
  75. package/dist/cjs/ReferenceRangeEditor/ReferenceRangeEditor.stories.d.ts +7 -0
  76. package/dist/cjs/{RequestGroupDisplay.d.ts → RequestGroupDisplay/RequestGroupDisplay.d.ts} +0 -1
  77. package/dist/cjs/{stories → RequestGroupDisplay}/RequestGroupDisplay.stories.d.ts +0 -0
  78. package/dist/cjs/{ResourceArrayDisplay.d.ts → ResourceArrayDisplay/ResourceArrayDisplay.d.ts} +0 -0
  79. package/dist/cjs/{ResourceArrayInput.d.ts → ResourceArrayInput/ResourceArrayInput.d.ts} +0 -0
  80. package/dist/cjs/{ResourceAvatar.d.ts → ResourceAvatar/ResourceAvatar.d.ts} +0 -0
  81. package/dist/cjs/{stories → ResourceAvatar}/ResourceAvatar.stories.d.ts +0 -0
  82. package/dist/{esm → cjs/ResourceBadge}/ResourceBadge.d.ts +0 -1
  83. package/dist/{esm → cjs/ResourceBlame}/ResourceBlame.d.ts +0 -1
  84. package/dist/cjs/{stories → ResourceBlame}/ResourceBlame.stories.d.ts +0 -0
  85. package/dist/{esm → cjs/ResourceDiff}/ResourceDiff.d.ts +0 -1
  86. package/dist/cjs/{ResourceDiffTable.d.ts → ResourceDiffTable/ResourceDiffTable.d.ts} +0 -2
  87. package/dist/cjs/ResourceDiffTable/ResourceDiffTable.stories.d.ts +5 -0
  88. package/dist/cjs/{ResourceForm.d.ts → ResourceForm/ResourceForm.d.ts} +0 -0
  89. package/dist/cjs/{stories → ResourceForm}/ResourceForm.stories.d.ts +0 -0
  90. package/dist/cjs/{ResourceHistoryTable.d.ts → ResourceHistoryTable/ResourceHistoryTable.d.ts} +0 -0
  91. package/dist/cjs/{stories → ResourceHistoryTable}/ResourceHistoryTable.stories.d.ts +0 -0
  92. package/dist/cjs/{ResourceInput.d.ts → ResourceInput/ResourceInput.d.ts} +0 -0
  93. package/dist/cjs/{stories → ResourceInput}/ResourceInput.stories.d.ts +0 -0
  94. package/dist/{esm → cjs/ResourceName}/ResourceName.d.ts +2 -1
  95. package/dist/cjs/{ResourcePropertyDisplay.d.ts → ResourcePropertyDisplay/ResourcePropertyDisplay.d.ts} +0 -0
  96. package/dist/cjs/{ResourcePropertyInput.d.ts → ResourcePropertyInput/ResourcePropertyInput.d.ts} +0 -0
  97. package/dist/cjs/{ResourceTable.d.ts → ResourceTable/ResourceTable.d.ts} +0 -0
  98. package/dist/cjs/{stories → ResourceTable}/ResourceTable.stories.d.ts +0 -0
  99. package/dist/cjs/{ResourceTimeline.d.ts → ResourceTimeline/ResourceTimeline.d.ts} +0 -1
  100. package/dist/cjs/{Scheduler.d.ts → Scheduler/Scheduler.d.ts} +0 -1
  101. package/dist/cjs/{stories → Scheduler}/Scheduler.stories.d.ts +0 -0
  102. package/dist/{esm → cjs/SearchControl}/SearchControl.d.ts +0 -1
  103. package/dist/cjs/{stories → SearchControl}/SearchControl.stories.d.ts +0 -0
  104. package/dist/cjs/{SearchControlField.d.ts → SearchControl/SearchControlField.d.ts} +0 -0
  105. package/dist/cjs/{SearchUtils.d.ts → SearchControl/SearchUtils.d.ts} +0 -21
  106. package/dist/cjs/{SearchFieldEditor.d.ts → SearchFieldEditor/SearchFieldEditor.d.ts} +0 -0
  107. package/dist/cjs/{SearchFilterEditor.d.ts → SearchFilterEditor/SearchFilterEditor.d.ts} +0 -1
  108. package/dist/cjs/{SearchFilterValueDialog.d.ts → SearchFilterValueDialog/SearchFilterValueDialog.d.ts} +0 -0
  109. package/dist/cjs/{SearchFilterValueDisplay.d.ts → SearchFilterValueDisplay/SearchFilterValueDisplay.d.ts} +0 -0
  110. package/dist/cjs/{SearchFilterValueInput.d.ts → SearchFilterValueInput/SearchFilterValueInput.d.ts} +0 -0
  111. package/dist/cjs/{SearchPopupMenu.d.ts → SearchPopupMenu/SearchPopupMenu.d.ts} +0 -0
  112. package/dist/cjs/{ServiceRequestTimeline.d.ts → ServiceRequestTimeline/ServiceRequestTimeline.d.ts} +0 -0
  113. package/dist/cjs/{StatusBadge.d.ts → StatusBadge/StatusBadge.d.ts} +0 -0
  114. package/dist/cjs/{stories → StatusBadge}/StatusBadge.stories.d.ts +0 -0
  115. package/dist/{esm → cjs/Timeline}/Timeline.d.ts +0 -1
  116. package/dist/cjs/{stories → Timeline}/Timeline.stories.d.ts +0 -0
  117. package/dist/cjs/{TimingInput.d.ts → TimingInput/TimingInput.d.ts} +0 -0
  118. package/dist/cjs/{stories → TimingInput}/TimingInput.stories.d.ts +0 -0
  119. package/dist/cjs/{ValueSetAutocomplete.d.ts → ValueSetAutocomplete/ValueSetAutocomplete.d.ts} +0 -0
  120. package/dist/cjs/auth/AuthenticationForm.d.ts +2 -9
  121. package/dist/cjs/auth/ChooseScopeForm.d.ts +7 -0
  122. package/dist/cjs/auth/RegisterForm.d.ts +0 -1
  123. package/dist/cjs/{stories → auth}/RegisterForm.stories.d.ts +0 -0
  124. package/dist/cjs/auth/SignInForm.d.ts +3 -10
  125. package/dist/cjs/{stories → auth}/SignInForm.stories.d.ts +0 -0
  126. package/dist/cjs/index.d.ts +66 -65
  127. package/dist/cjs/index.js +1659 -1105
  128. package/dist/cjs/index.js.map +1 -1
  129. package/dist/cjs/index.min.js +1 -1
  130. package/dist/cjs/index.min.js.map +1 -1
  131. package/dist/cjs/stories/referenceLab.d.ts +3 -0
  132. package/dist/cjs/{useResource.d.ts → useResource/useResource.d.ts} +0 -0
  133. package/dist/cjs/{QuestionnaireUtils.d.ts → utils/questionnaire.d.ts} +0 -0
  134. package/dist/cjs/{utils.d.ts → utils/script.d.ts} +0 -0
  135. package/dist/esm/{AddressDisplay.d.ts → AddressDisplay/AddressDisplay.d.ts} +0 -0
  136. package/dist/esm/{AddressDisplay.js → AddressDisplay/AddressDisplay.js} +0 -0
  137. package/dist/esm/AddressDisplay/AddressDisplay.js.map +1 -0
  138. package/dist/esm/{AddressInput.d.ts → AddressInput/AddressInput.d.ts} +0 -0
  139. package/dist/esm/{AddressInput.js → AddressInput/AddressInput.js} +0 -0
  140. package/dist/esm/AddressInput/AddressInput.js.map +1 -0
  141. package/dist/esm/{stories → AddressInput}/AddressInput.stories.d.ts +0 -0
  142. package/dist/esm/{AnnotationInput.d.ts → AnnotationInput/AnnotationInput.d.ts} +0 -0
  143. package/dist/esm/{AnnotationInput.js → AnnotationInput/AnnotationInput.js} +1 -1
  144. package/dist/esm/AnnotationInput/AnnotationInput.js.map +1 -0
  145. package/dist/esm/{AttachmentArrayDisplay.d.ts → AttachmentArrayDisplay/AttachmentArrayDisplay.d.ts} +0 -0
  146. package/dist/esm/{AttachmentArrayDisplay.js → AttachmentArrayDisplay/AttachmentArrayDisplay.js} +1 -1
  147. package/dist/esm/AttachmentArrayDisplay/AttachmentArrayDisplay.js.map +1 -0
  148. package/dist/esm/{AttachmentArrayInput.d.ts → AttachmentArrayInput/AttachmentArrayInput.d.ts} +0 -0
  149. package/dist/esm/{AttachmentArrayInput.js → AttachmentArrayInput/AttachmentArrayInput.js} +5 -5
  150. package/dist/esm/AttachmentArrayInput/AttachmentArrayInput.js.map +1 -0
  151. package/dist/esm/{stories → AttachmentArrayInput}/AttachmentArrayInput.stories.d.ts +0 -0
  152. package/dist/{cjs → esm/AttachmentButton}/AttachmentButton.d.ts +2 -0
  153. package/dist/esm/{AttachmentButton.js → AttachmentButton/AttachmentButton.js} +6 -3
  154. package/dist/esm/AttachmentButton/AttachmentButton.js.map +1 -0
  155. package/dist/esm/{stories → AttachmentButton}/AttachmentButton.stories.d.ts +0 -0
  156. package/dist/esm/{AttachmentDisplay.d.ts → AttachmentDisplay/AttachmentDisplay.d.ts} +0 -0
  157. package/dist/esm/{AttachmentDisplay.js → AttachmentDisplay/AttachmentDisplay.js} +0 -0
  158. package/dist/esm/AttachmentDisplay/AttachmentDisplay.js.map +1 -0
  159. package/dist/esm/{AttachmentInput.d.ts → AttachmentInput/AttachmentInput.d.ts} +0 -0
  160. package/dist/esm/{AttachmentInput.js → AttachmentInput/AttachmentInput.js} +3 -3
  161. package/dist/esm/AttachmentInput/AttachmentInput.js.map +1 -0
  162. package/dist/esm/{stories → AttachmentInput}/AttachmentInput.stories.d.ts +0 -0
  163. package/dist/esm/{BackboneElementDisplay.d.ts → BackboneElementDisplay/BackboneElementDisplay.d.ts} +0 -0
  164. package/dist/esm/{BackboneElementDisplay.js → BackboneElementDisplay/BackboneElementDisplay.js} +7 -4
  165. package/dist/esm/BackboneElementDisplay/BackboneElementDisplay.js.map +1 -0
  166. package/dist/esm/{BackboneElementInput.d.ts → BackboneElementInput/BackboneElementInput.d.ts} +0 -0
  167. package/dist/esm/{BackboneElementInput.js → BackboneElementInput/BackboneElementInput.js} +8 -7
  168. package/dist/esm/BackboneElementInput/BackboneElementInput.js.map +1 -0
  169. package/dist/esm/{CalendarInput.d.ts → CalendarInput/CalendarInput.d.ts} +0 -1
  170. package/dist/esm/{CalendarInput.js → CalendarInput/CalendarInput.js} +39 -2
  171. package/dist/esm/CalendarInput/CalendarInput.js.map +1 -0
  172. package/dist/{cjs → esm/CheckboxFormSection}/CheckboxFormSection.d.ts +0 -1
  173. package/dist/esm/CheckboxFormSection/CheckboxFormSection.js +12 -0
  174. package/dist/esm/CheckboxFormSection/CheckboxFormSection.js.map +1 -0
  175. package/dist/esm/{CodeInput.d.ts → CodeInput/CodeInput.d.ts} +0 -0
  176. package/dist/esm/{CodeInput.js → CodeInput/CodeInput.js} +1 -1
  177. package/dist/esm/CodeInput/CodeInput.js.map +1 -0
  178. package/dist/esm/{stories → CodeInput}/CodeInput.stories.d.ts +0 -0
  179. package/dist/esm/{CodeableConceptDisplay.d.ts → CodeableConceptDisplay/CodeableConceptDisplay.d.ts} +0 -0
  180. package/dist/esm/{CodeableConceptDisplay.js → CodeableConceptDisplay/CodeableConceptDisplay.js} +1 -1
  181. package/dist/esm/CodeableConceptDisplay/CodeableConceptDisplay.js.map +1 -0
  182. package/dist/esm/{stories → CodeableConceptDisplay}/CodeableConceptDisplay.stories.d.ts +0 -0
  183. package/dist/esm/{CodeableConceptInput.d.ts → CodeableConceptInput/CodeableConceptInput.d.ts} +0 -0
  184. package/dist/esm/{CodeableConceptInput.js → CodeableConceptInput/CodeableConceptInput.js} +1 -1
  185. package/dist/esm/CodeableConceptInput/CodeableConceptInput.js.map +1 -0
  186. package/dist/esm/{stories → CodeableConceptInput}/CodeableConceptInput.stories.d.ts +0 -0
  187. package/dist/esm/{CodingDisplay.d.ts → CodingDisplay/CodingDisplay.d.ts} +0 -0
  188. package/dist/esm/{CodingDisplay.js → CodingDisplay/CodingDisplay.js} +0 -0
  189. package/dist/esm/CodingDisplay/CodingDisplay.js.map +1 -0
  190. package/dist/esm/{CodingInput.d.ts → CodingInput/CodingInput.d.ts} +0 -0
  191. package/dist/esm/{CodingInput.js → CodingInput/CodingInput.js} +1 -1
  192. package/dist/esm/CodingInput/CodingInput.js.map +1 -0
  193. package/dist/esm/{ContactDetailDisplay.d.ts → ContactDetailDisplay/ContactDetailDisplay.d.ts} +0 -0
  194. package/dist/esm/{ContactDetailDisplay.js → ContactDetailDisplay/ContactDetailDisplay.js} +1 -1
  195. package/dist/esm/ContactDetailDisplay/ContactDetailDisplay.js.map +1 -0
  196. package/dist/esm/{ContactDetailInput.d.ts → ContactDetailInput/ContactDetailInput.d.ts} +0 -0
  197. package/dist/esm/{ContactDetailInput.js → ContactDetailInput/ContactDetailInput.js} +1 -1
  198. package/dist/esm/ContactDetailInput/ContactDetailInput.js.map +1 -0
  199. package/dist/esm/{ContactPointDisplay.d.ts → ContactPointDisplay/ContactPointDisplay.d.ts} +0 -0
  200. package/dist/esm/{ContactPointDisplay.js → ContactPointDisplay/ContactPointDisplay.js} +0 -0
  201. package/dist/esm/ContactPointDisplay/ContactPointDisplay.js.map +1 -0
  202. package/dist/esm/{ContactPointInput.d.ts → ContactPointInput/ContactPointInput.d.ts} +0 -0
  203. package/dist/esm/{ContactPointInput.js → ContactPointInput/ContactPointInput.js} +0 -0
  204. package/dist/esm/ContactPointInput/ContactPointInput.js.map +1 -0
  205. package/dist/esm/{DateTimeInput.d.ts → DateTimeInput/DateTimeInput.d.ts} +0 -0
  206. package/dist/esm/{DateTimeInput.js → DateTimeInput/DateTimeInput.js} +1 -1
  207. package/dist/esm/DateTimeInput/DateTimeInput.js.map +1 -0
  208. package/dist/esm/{DefaultResourceTimeline.d.ts → DefaultResourceTimeline/DefaultResourceTimeline.d.ts} +0 -0
  209. package/dist/esm/{DefaultResourceTimeline.js → DefaultResourceTimeline/DefaultResourceTimeline.js} +1 -1
  210. package/dist/esm/DefaultResourceTimeline/DefaultResourceTimeline.js.map +1 -0
  211. package/dist/{cjs → esm/DescriptionList}/DescriptionList.d.ts +0 -1
  212. package/dist/esm/DescriptionList/DescriptionList.js +35 -0
  213. package/dist/esm/DescriptionList/DescriptionList.js.map +1 -0
  214. package/dist/esm/{stories/ResourceBlame.stories.d.ts → DescriptionList/DescriptionList.stories.d.ts} +0 -0
  215. package/dist/esm/{DiagnosticReportDisplay.d.ts → DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts} +0 -1
  216. package/dist/esm/{DiagnosticReportDisplay.js → DiagnosticReportDisplay/DiagnosticReportDisplay.js} +47 -29
  217. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.js.map +1 -0
  218. package/dist/esm/{stories → DiagnosticReportDisplay}/DiagnosticReportDisplay.stories.d.ts +0 -0
  219. package/dist/esm/{Document.d.ts → Document/Document.d.ts} +0 -1
  220. package/dist/esm/Document/Document.js +14 -0
  221. package/dist/esm/Document/Document.js.map +1 -0
  222. package/dist/esm/{EncounterTimeline.d.ts → EncounterTimeline/EncounterTimeline.d.ts} +0 -0
  223. package/dist/esm/{EncounterTimeline.js → EncounterTimeline/EncounterTimeline.js} +1 -1
  224. package/dist/esm/EncounterTimeline/EncounterTimeline.js.map +1 -0
  225. package/dist/esm/{stories → EncounterTimeline}/EncounterTimeline.stories.d.ts +0 -0
  226. package/dist/esm/{ErrorBoundary.d.ts → ErrorBoundary/ErrorBoundary.d.ts} +0 -0
  227. package/dist/esm/{ErrorBoundary.js → ErrorBoundary/ErrorBoundary.js} +4 -1
  228. package/dist/esm/ErrorBoundary/ErrorBoundary.js.map +1 -0
  229. package/dist/esm/{ExtensionInput.d.ts → ExtensionInput/ExtensionInput.d.ts} +0 -0
  230. package/dist/esm/{ExtensionInput.js → ExtensionInput/ExtensionInput.js} +0 -0
  231. package/dist/esm/ExtensionInput/ExtensionInput.js.map +1 -0
  232. package/dist/esm/{FhirPathDisplay.d.ts → FhirPathDisplay/FhirPathDisplay.d.ts} +0 -0
  233. package/dist/esm/{FhirPathDisplay.js → FhirPathDisplay/FhirPathDisplay.js} +1 -1
  234. package/dist/esm/FhirPathDisplay/FhirPathDisplay.js.map +1 -0
  235. package/dist/esm/{stories → FhirPathDisplay}/FhirPathDisplay.stories.d.ts +1 -1
  236. package/dist/esm/{FhirPathTable.d.ts → FhirPathTable/FhirPathTable.d.ts} +1 -2
  237. package/dist/esm/{FhirPathTable.js → FhirPathTable/FhirPathTable.js} +9 -9
  238. package/dist/esm/FhirPathTable/FhirPathTable.js.map +1 -0
  239. package/dist/esm/{Form.d.ts → Form/Form.d.ts} +0 -0
  240. package/dist/esm/{Form.js → Form/Form.js} +0 -0
  241. package/dist/esm/Form/Form.js.map +1 -0
  242. package/dist/esm/{FormUtils.d.ts → Form/FormUtils.d.ts} +0 -0
  243. package/dist/esm/{FormUtils.js → Form/FormUtils.js} +0 -0
  244. package/dist/esm/Form/FormUtils.js.map +1 -0
  245. package/dist/esm/{FormSection.d.ts → FormSection/FormSection.d.ts} +0 -1
  246. package/dist/esm/FormSection/FormSection.js +10 -0
  247. package/dist/esm/FormSection/FormSection.js.map +1 -0
  248. package/dist/esm/{GoogleButton.d.ts → GoogleButton/GoogleButton.d.ts} +0 -0
  249. package/dist/esm/{GoogleButton.js → GoogleButton/GoogleButton.js} +2 -2
  250. package/dist/esm/GoogleButton/GoogleButton.js.map +1 -0
  251. package/dist/esm/{HumanNameDisplay.d.ts → HumanNameDisplay/HumanNameDisplay.d.ts} +0 -0
  252. package/dist/esm/{HumanNameDisplay.js → HumanNameDisplay/HumanNameDisplay.js} +0 -0
  253. package/dist/esm/HumanNameDisplay/HumanNameDisplay.js.map +1 -0
  254. package/dist/esm/{HumanNameInput.d.ts → HumanNameInput/HumanNameInput.d.ts} +0 -0
  255. package/dist/esm/{HumanNameInput.js → HumanNameInput/HumanNameInput.js} +0 -0
  256. package/dist/esm/HumanNameInput/HumanNameInput.js.map +1 -0
  257. package/dist/esm/{IdentifierDisplay.d.ts → IdentifierDisplay/IdentifierDisplay.d.ts} +0 -0
  258. package/dist/esm/{IdentifierDisplay.js → IdentifierDisplay/IdentifierDisplay.js} +0 -0
  259. package/dist/esm/IdentifierDisplay/IdentifierDisplay.js.map +1 -0
  260. package/dist/esm/{IdentifierInput.d.ts → IdentifierInput/IdentifierInput.d.ts} +0 -0
  261. package/dist/esm/{IdentifierInput.js → IdentifierInput/IdentifierInput.js} +0 -0
  262. package/dist/esm/IdentifierInput/IdentifierInput.js.map +1 -0
  263. package/dist/esm/{Logo.d.ts → Logo/Logo.d.ts} +0 -0
  264. package/dist/esm/{Logo.js → Logo/Logo.js} +0 -0
  265. package/dist/esm/Logo/Logo.js.map +1 -0
  266. package/dist/esm/{stories/ResourceHistoryTable.stories.d.ts → Logo/Logo.stories.d.ts} +0 -0
  267. package/dist/esm/{MedplumLink.d.ts → MedplumLink/MedplumLink.d.ts} +2 -4
  268. package/dist/esm/{MedplumLink.js → MedplumLink/MedplumLink.js} +12 -9
  269. package/dist/esm/MedplumLink/MedplumLink.js.map +1 -0
  270. package/dist/esm/{MedplumProvider.d.ts → MedplumProvider/MedplumProvider.d.ts} +0 -0
  271. package/dist/esm/{MedplumProvider.js → MedplumProvider/MedplumProvider.js} +0 -0
  272. package/dist/esm/MedplumProvider/MedplumProvider.js.map +1 -0
  273. package/dist/esm/{PatientTimeline.d.ts → PatientTimeline/PatientTimeline.d.ts} +0 -0
  274. package/dist/esm/{PatientTimeline.js → PatientTimeline/PatientTimeline.js} +1 -1
  275. package/dist/esm/PatientTimeline/PatientTimeline.js.map +1 -0
  276. package/dist/esm/{stories → PatientTimeline}/PatientTimeline.stories.d.ts +0 -0
  277. package/dist/esm/{PeriodInput.d.ts → PeriodInput/PeriodInput.d.ts} +0 -0
  278. package/dist/esm/{PeriodInput.js → PeriodInput/PeriodInput.js} +1 -1
  279. package/dist/esm/PeriodInput/PeriodInput.js.map +1 -0
  280. package/dist/esm/{stories → PeriodInput}/PeriodInput.stories.d.ts +0 -0
  281. package/dist/esm/{PlanDefinitionBuilder.d.ts → PlanDefinitionBuilder/PlanDefinitionBuilder.d.ts} +0 -0
  282. package/dist/esm/{PlanDefinitionBuilder.js → PlanDefinitionBuilder/PlanDefinitionBuilder.js} +50 -19
  283. package/dist/esm/PlanDefinitionBuilder/PlanDefinitionBuilder.js.map +1 -0
  284. package/dist/esm/{stories → PlanDefinitionBuilder}/PlanDefinitionBuilder.stories.d.ts +0 -0
  285. package/dist/esm/{QuantityDisplay.d.ts → QuantityDisplay/QuantityDisplay.d.ts} +0 -1
  286. package/dist/esm/QuantityDisplay/QuantityDisplay.js +9 -0
  287. package/dist/esm/QuantityDisplay/QuantityDisplay.js.map +1 -0
  288. package/dist/esm/{QuantityInput.d.ts → QuantityInput/QuantityInput.d.ts} +0 -0
  289. package/dist/esm/{QuantityInput.js → QuantityInput/QuantityInput.js} +2 -2
  290. package/dist/esm/QuantityInput/QuantityInput.js.map +1 -0
  291. package/dist/esm/{QuestionnaireBuilder.d.ts → QuestionnaireBuilder/QuestionnaireBuilder.d.ts} +0 -1
  292. package/dist/esm/{QuestionnaireBuilder.js → QuestionnaireBuilder/QuestionnaireBuilder.js} +86 -39
  293. package/dist/esm/QuestionnaireBuilder/QuestionnaireBuilder.js.map +1 -0
  294. package/dist/esm/{stories → QuestionnaireBuilder}/QuestionnaireBuilder.stories.d.ts +0 -0
  295. package/dist/{cjs → esm/QuestionnaireForm}/QuestionnaireForm.d.ts +0 -1
  296. package/dist/esm/{QuestionnaireForm.js → QuestionnaireForm/QuestionnaireForm.js} +37 -27
  297. package/dist/esm/QuestionnaireForm/QuestionnaireForm.js.map +1 -0
  298. package/dist/esm/{stories → QuestionnaireForm}/QuestionnaireForm.stories.d.ts +0 -0
  299. package/dist/{cjs → esm/RangeDisplay}/RangeDisplay.d.ts +0 -1
  300. package/dist/esm/RangeDisplay/RangeDisplay.js +9 -0
  301. package/dist/esm/RangeDisplay/RangeDisplay.js.map +1 -0
  302. package/dist/esm/{RangeInput.d.ts → RangeInput/RangeInput.d.ts} +0 -0
  303. package/dist/esm/{RangeInput.js → RangeInput/RangeInput.js} +1 -1
  304. package/dist/esm/RangeInput/RangeInput.js.map +1 -0
  305. package/dist/esm/{RatioDisplay.d.ts → RatioDisplay/RatioDisplay.d.ts} +0 -0
  306. package/dist/esm/{RatioDisplay.js → RatioDisplay/RatioDisplay.js} +1 -1
  307. package/dist/esm/RatioDisplay/RatioDisplay.js.map +1 -0
  308. package/dist/esm/{RatioInput.d.ts → RatioInput/RatioInput.d.ts} +0 -0
  309. package/dist/esm/{RatioInput.js → RatioInput/RatioInput.js} +1 -1
  310. package/dist/esm/RatioInput/RatioInput.js.map +1 -0
  311. package/dist/esm/{ReferenceDisplay.d.ts → ReferenceDisplay/ReferenceDisplay.d.ts} +0 -0
  312. package/dist/esm/{ReferenceDisplay.js → ReferenceDisplay/ReferenceDisplay.js} +1 -1
  313. package/dist/esm/ReferenceDisplay/ReferenceDisplay.js.map +1 -0
  314. package/dist/esm/{ReferenceInput.d.ts → ReferenceInput/ReferenceInput.d.ts} +0 -0
  315. package/dist/esm/{ReferenceInput.js → ReferenceInput/ReferenceInput.js} +1 -1
  316. package/dist/esm/ReferenceInput/ReferenceInput.js.map +1 -0
  317. package/dist/esm/{stories → ReferenceInput}/ReferenceInput.stories.d.ts +0 -0
  318. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +27 -0
  319. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.js +269 -0
  320. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.js.map +1 -0
  321. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.stories.d.ts +7 -0
  322. package/dist/esm/{RequestGroupDisplay.d.ts → RequestGroupDisplay/RequestGroupDisplay.d.ts} +0 -1
  323. package/dist/esm/{RequestGroupDisplay.js → RequestGroupDisplay/RequestGroupDisplay.js} +12 -11
  324. package/dist/esm/RequestGroupDisplay/RequestGroupDisplay.js.map +1 -0
  325. package/dist/esm/{stories → RequestGroupDisplay}/RequestGroupDisplay.stories.d.ts +0 -0
  326. package/dist/esm/{ResourceArrayDisplay.d.ts → ResourceArrayDisplay/ResourceArrayDisplay.d.ts} +0 -0
  327. package/dist/esm/{ResourceArrayDisplay.js → ResourceArrayDisplay/ResourceArrayDisplay.js} +1 -1
  328. package/dist/esm/ResourceArrayDisplay/ResourceArrayDisplay.js.map +1 -0
  329. package/dist/esm/{ResourceArrayInput.d.ts → ResourceArrayInput/ResourceArrayInput.d.ts} +0 -0
  330. package/dist/esm/{ResourceArrayInput.js → ResourceArrayInput/ResourceArrayInput.js} +2 -2
  331. package/dist/esm/ResourceArrayInput/ResourceArrayInput.js.map +1 -0
  332. package/dist/esm/{ResourceAvatar.d.ts → ResourceAvatar/ResourceAvatar.d.ts} +0 -0
  333. package/dist/esm/{ResourceAvatar.js → ResourceAvatar/ResourceAvatar.js} +2 -2
  334. package/dist/esm/ResourceAvatar/ResourceAvatar.js.map +1 -0
  335. package/dist/esm/{stories → ResourceAvatar}/ResourceAvatar.stories.d.ts +0 -0
  336. package/dist/{cjs → esm/ResourceBadge}/ResourceBadge.d.ts +0 -1
  337. package/dist/esm/{ResourceBadge.js → ResourceBadge/ResourceBadge.js} +4 -3
  338. package/dist/esm/ResourceBadge/ResourceBadge.js.map +1 -0
  339. package/dist/{cjs → esm/ResourceBlame}/ResourceBlame.d.ts +0 -1
  340. package/dist/esm/ResourceBlame/ResourceBlame.js +114 -0
  341. package/dist/esm/ResourceBlame/ResourceBlame.js.map +1 -0
  342. package/dist/esm/{stories/Scheduler.stories.d.ts → ResourceBlame/ResourceBlame.stories.d.ts} +0 -0
  343. package/dist/{cjs → esm/ResourceDiff}/ResourceDiff.d.ts +0 -1
  344. package/dist/esm/{ResourceDiff.js → ResourceDiff/ResourceDiff.js} +14 -3
  345. package/dist/esm/ResourceDiff/ResourceDiff.js.map +1 -0
  346. package/dist/esm/{ResourceDiffTable.d.ts → ResourceDiffTable/ResourceDiffTable.d.ts} +0 -2
  347. package/dist/esm/{ResourceDiffTable.js → ResourceDiffTable/ResourceDiffTable.js} +27 -5
  348. package/dist/esm/ResourceDiffTable/ResourceDiffTable.js.map +1 -0
  349. package/dist/esm/ResourceDiffTable/ResourceDiffTable.stories.d.ts +5 -0
  350. package/dist/esm/{ResourceForm.d.ts → ResourceForm/ResourceForm.d.ts} +0 -0
  351. package/dist/esm/{ResourceForm.js → ResourceForm/ResourceForm.js} +11 -10
  352. package/dist/esm/ResourceForm/ResourceForm.js.map +1 -0
  353. package/dist/esm/{stories → ResourceForm}/ResourceForm.stories.d.ts +0 -0
  354. package/dist/esm/{ResourceHistoryTable.d.ts → ResourceHistoryTable/ResourceHistoryTable.d.ts} +0 -0
  355. package/dist/esm/{ResourceHistoryTable.js → ResourceHistoryTable/ResourceHistoryTable.js} +3 -3
  356. package/dist/esm/ResourceHistoryTable/ResourceHistoryTable.js.map +1 -0
  357. package/dist/esm/{stories/Timeline.stories.d.ts → ResourceHistoryTable/ResourceHistoryTable.stories.d.ts} +0 -0
  358. package/dist/esm/{ResourceInput.d.ts → ResourceInput/ResourceInput.d.ts} +0 -0
  359. package/dist/esm/{ResourceInput.js → ResourceInput/ResourceInput.js} +26 -5
  360. package/dist/esm/ResourceInput/ResourceInput.js.map +1 -0
  361. package/dist/esm/{stories → ResourceInput}/ResourceInput.stories.d.ts +0 -0
  362. package/dist/{cjs → esm/ResourceName}/ResourceName.d.ts +2 -1
  363. package/dist/esm/ResourceName/ResourceName.js +19 -0
  364. package/dist/esm/ResourceName/ResourceName.js.map +1 -0
  365. package/dist/esm/{ResourcePropertyDisplay.d.ts → ResourcePropertyDisplay/ResourcePropertyDisplay.d.ts} +0 -0
  366. package/dist/esm/{ResourcePropertyDisplay.js → ResourcePropertyDisplay/ResourcePropertyDisplay.js} +21 -21
  367. package/dist/esm/ResourcePropertyDisplay/ResourcePropertyDisplay.js.map +1 -0
  368. package/dist/esm/{ResourcePropertyInput.d.ts → ResourcePropertyInput/ResourcePropertyInput.d.ts} +0 -0
  369. package/dist/esm/{ResourcePropertyInput.js → ResourcePropertyInput/ResourcePropertyInput.js} +22 -22
  370. package/dist/esm/ResourcePropertyInput/ResourcePropertyInput.js.map +1 -0
  371. package/dist/esm/{ResourceTable.d.ts → ResourceTable/ResourceTable.d.ts} +0 -0
  372. package/dist/esm/{ResourceTable.js → ResourceTable/ResourceTable.js} +3 -3
  373. package/dist/esm/ResourceTable/ResourceTable.js.map +1 -0
  374. package/dist/esm/{stories → ResourceTable}/ResourceTable.stories.d.ts +0 -0
  375. package/dist/esm/{ResourceTimeline.d.ts → ResourceTimeline/ResourceTimeline.d.ts} +0 -1
  376. package/dist/esm/{ResourceTimeline.js → ResourceTimeline/ResourceTimeline.js} +91 -37
  377. package/dist/esm/ResourceTimeline/ResourceTimeline.js.map +1 -0
  378. package/dist/esm/{Scheduler.d.ts → Scheduler/Scheduler.d.ts} +0 -1
  379. package/dist/esm/{Scheduler.js → Scheduler/Scheduler.js} +26 -10
  380. package/dist/esm/Scheduler/Scheduler.js.map +1 -0
  381. package/dist/esm/Scheduler/Scheduler.stories.d.ts +5 -0
  382. package/dist/{cjs → esm/SearchControl}/SearchControl.d.ts +0 -1
  383. package/dist/esm/{SearchControl.js → SearchControl/SearchControl.js} +44 -28
  384. package/dist/esm/SearchControl/SearchControl.js.map +1 -0
  385. package/dist/esm/{stories → SearchControl}/SearchControl.stories.d.ts +0 -0
  386. package/dist/esm/{SearchControlField.d.ts → SearchControl/SearchControlField.d.ts} +0 -0
  387. package/dist/esm/{SearchControlField.js → SearchControl/SearchControlField.js} +0 -0
  388. package/dist/esm/SearchControl/SearchControlField.js.map +1 -0
  389. package/dist/esm/{SearchUtils.d.ts → SearchControl/SearchUtils.d.ts} +0 -21
  390. package/dist/esm/{SearchUtils.js → SearchControl/SearchUtils.js} +2 -33
  391. package/dist/esm/SearchControl/SearchUtils.js.map +1 -0
  392. package/dist/esm/{SearchFieldEditor.d.ts → SearchFieldEditor/SearchFieldEditor.d.ts} +0 -0
  393. package/dist/esm/{SearchFieldEditor.js → SearchFieldEditor/SearchFieldEditor.js} +1 -1
  394. package/dist/esm/SearchFieldEditor/SearchFieldEditor.js.map +1 -0
  395. package/dist/esm/{SearchFilterEditor.d.ts → SearchFilterEditor/SearchFilterEditor.d.ts} +0 -1
  396. package/dist/esm/{SearchFilterEditor.js → SearchFilterEditor/SearchFilterEditor.js} +5 -5
  397. package/dist/esm/SearchFilterEditor/SearchFilterEditor.js.map +1 -0
  398. package/dist/esm/{SearchFilterValueDialog.d.ts → SearchFilterValueDialog/SearchFilterValueDialog.d.ts} +0 -0
  399. package/dist/esm/{SearchFilterValueDialog.js → SearchFilterValueDialog/SearchFilterValueDialog.js} +2 -2
  400. package/dist/esm/SearchFilterValueDialog/SearchFilterValueDialog.js.map +1 -0
  401. package/dist/esm/{SearchFilterValueDisplay.d.ts → SearchFilterValueDisplay/SearchFilterValueDisplay.d.ts} +0 -0
  402. package/dist/esm/{SearchFilterValueDisplay.js → SearchFilterValueDisplay/SearchFilterValueDisplay.js} +1 -1
  403. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.js.map +1 -0
  404. package/dist/esm/{SearchFilterValueInput.d.ts → SearchFilterValueInput/SearchFilterValueInput.d.ts} +0 -0
  405. package/dist/esm/{SearchFilterValueInput.js → SearchFilterValueInput/SearchFilterValueInput.js} +3 -3
  406. package/dist/esm/SearchFilterValueInput/SearchFilterValueInput.js.map +1 -0
  407. package/dist/esm/{SearchPopupMenu.d.ts → SearchPopupMenu/SearchPopupMenu.d.ts} +0 -0
  408. package/dist/esm/{SearchPopupMenu.js → SearchPopupMenu/SearchPopupMenu.js} +1 -1
  409. package/dist/esm/SearchPopupMenu/SearchPopupMenu.js.map +1 -0
  410. package/dist/esm/{ServiceRequestTimeline.d.ts → ServiceRequestTimeline/ServiceRequestTimeline.d.ts} +0 -0
  411. package/dist/esm/{ServiceRequestTimeline.js → ServiceRequestTimeline/ServiceRequestTimeline.js} +1 -1
  412. package/dist/esm/ServiceRequestTimeline/ServiceRequestTimeline.js.map +1 -0
  413. package/dist/esm/{StatusBadge.d.ts → StatusBadge/StatusBadge.d.ts} +0 -0
  414. package/dist/esm/{StatusBadge.js → StatusBadge/StatusBadge.js} +0 -0
  415. package/dist/esm/StatusBadge/StatusBadge.js.map +1 -0
  416. package/dist/esm/{stories → StatusBadge}/StatusBadge.stories.d.ts +0 -0
  417. package/dist/{cjs → esm/Timeline}/Timeline.d.ts +0 -1
  418. package/dist/esm/Timeline/Timeline.js +37 -0
  419. package/dist/esm/Timeline/Timeline.js.map +1 -0
  420. package/dist/esm/Timeline/Timeline.stories.d.ts +5 -0
  421. package/dist/esm/{TimingInput.d.ts → TimingInput/TimingInput.d.ts} +0 -0
  422. package/dist/esm/{TimingInput.js → TimingInput/TimingInput.js} +2 -2
  423. package/dist/esm/TimingInput/TimingInput.js.map +1 -0
  424. package/dist/esm/{stories → TimingInput}/TimingInput.stories.d.ts +0 -0
  425. package/dist/esm/{ValueSetAutocomplete.d.ts → ValueSetAutocomplete/ValueSetAutocomplete.d.ts} +0 -0
  426. package/dist/esm/{ValueSetAutocomplete.js → ValueSetAutocomplete/ValueSetAutocomplete.js} +5 -5
  427. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.js.map +1 -0
  428. package/dist/esm/auth/AuthenticationForm.d.ts +2 -9
  429. package/dist/esm/auth/AuthenticationForm.js +16 -33
  430. package/dist/esm/auth/AuthenticationForm.js.map +1 -1
  431. package/dist/esm/auth/ChooseProfileForm.js +5 -5
  432. package/dist/esm/auth/ChooseProfileForm.js.map +1 -1
  433. package/dist/esm/auth/ChooseScopeForm.d.ts +7 -0
  434. package/dist/esm/auth/ChooseScopeForm.js +28 -0
  435. package/dist/esm/auth/ChooseScopeForm.js.map +1 -0
  436. package/dist/esm/auth/NewProjectForm.js +6 -6
  437. package/dist/esm/auth/NewProjectForm.js.map +1 -1
  438. package/dist/esm/auth/NewUserForm.js +7 -6
  439. package/dist/esm/auth/NewUserForm.js.map +1 -1
  440. package/dist/esm/auth/RegisterForm.d.ts +0 -1
  441. package/dist/esm/auth/RegisterForm.js +2 -2
  442. package/dist/esm/auth/RegisterForm.js.map +1 -1
  443. package/dist/esm/{stories → auth}/RegisterForm.stories.d.ts +0 -0
  444. package/dist/esm/auth/SignInForm.d.ts +3 -10
  445. package/dist/esm/auth/SignInForm.js +30 -13
  446. package/dist/esm/auth/SignInForm.js.map +1 -1
  447. package/dist/esm/{stories → auth}/SignInForm.stories.d.ts +0 -0
  448. package/dist/esm/index.d.ts +66 -65
  449. package/dist/esm/index.js +66 -65
  450. package/dist/esm/index.js.map +1 -1
  451. package/dist/esm/index.min.js +1 -1
  452. package/dist/esm/index.min.js.map +1 -1
  453. package/dist/esm/stories/referenceLab.d.ts +3 -0
  454. package/dist/esm/{useResource.d.ts → useResource/useResource.d.ts} +0 -0
  455. package/dist/esm/{useResource.js → useResource/useResource.js} +1 -1
  456. package/dist/esm/useResource/useResource.js.map +1 -0
  457. package/dist/esm/{QuestionnaireUtils.d.ts → utils/questionnaire.d.ts} +0 -0
  458. package/dist/esm/{QuestionnaireUtils.js → utils/questionnaire.js} +1 -1
  459. package/dist/esm/utils/questionnaire.js.map +1 -0
  460. package/dist/esm/utils/recaptcha.js +1 -1
  461. package/dist/esm/utils/recaptcha.js.map +1 -1
  462. package/dist/esm/{utils.d.ts → utils/script.d.ts} +0 -0
  463. package/dist/esm/{utils.js → utils/script.js} +1 -1
  464. package/dist/esm/utils/script.js.map +1 -0
  465. package/package.json +44 -33
  466. package/rollup.config.mjs +111 -0
  467. package/dist/cjs/defaulttheme.css +0 -192
  468. package/dist/cjs/styles.css +0 -528
  469. package/dist/esm/AddressDisplay.js.map +0 -1
  470. package/dist/esm/AddressInput.js.map +0 -1
  471. package/dist/esm/AnnotationInput.js.map +0 -1
  472. package/dist/esm/AttachmentArrayDisplay.js.map +0 -1
  473. package/dist/esm/AttachmentArrayInput.js.map +0 -1
  474. package/dist/esm/AttachmentButton.js.map +0 -1
  475. package/dist/esm/AttachmentDisplay.js.map +0 -1
  476. package/dist/esm/AttachmentInput.js.map +0 -1
  477. package/dist/esm/BackboneElementDisplay.js.map +0 -1
  478. package/dist/esm/BackboneElementInput.js.map +0 -1
  479. package/dist/esm/CalendarInput.js.map +0 -1
  480. package/dist/esm/CheckboxFormSection.js +0 -12
  481. package/dist/esm/CheckboxFormSection.js.map +0 -1
  482. package/dist/esm/CodeInput.js.map +0 -1
  483. package/dist/esm/CodeableConceptDisplay.js.map +0 -1
  484. package/dist/esm/CodeableConceptInput.js.map +0 -1
  485. package/dist/esm/CodingDisplay.js.map +0 -1
  486. package/dist/esm/CodingInput.js.map +0 -1
  487. package/dist/esm/ContactDetailDisplay.js.map +0 -1
  488. package/dist/esm/ContactDetailInput.js.map +0 -1
  489. package/dist/esm/ContactPointDisplay.js.map +0 -1
  490. package/dist/esm/ContactPointInput.js.map +0 -1
  491. package/dist/esm/DateTimeInput.js.map +0 -1
  492. package/dist/esm/DefaultResourceTimeline.js.map +0 -1
  493. package/dist/esm/DescriptionList.js +0 -13
  494. package/dist/esm/DescriptionList.js.map +0 -1
  495. package/dist/esm/DiagnosticReportDisplay.js.map +0 -1
  496. package/dist/esm/Document.js +0 -9
  497. package/dist/esm/Document.js.map +0 -1
  498. package/dist/esm/EncounterTimeline.js.map +0 -1
  499. package/dist/esm/ErrorBoundary.js.map +0 -1
  500. package/dist/esm/ExtensionInput.js.map +0 -1
  501. package/dist/esm/FhirPathDisplay.js.map +0 -1
  502. package/dist/esm/FhirPathTable.js.map +0 -1
  503. package/dist/esm/Form.js.map +0 -1
  504. package/dist/esm/FormSection.js +0 -18
  505. package/dist/esm/FormSection.js.map +0 -1
  506. package/dist/esm/FormUtils.js.map +0 -1
  507. package/dist/esm/GoogleButton.js.map +0 -1
  508. package/dist/esm/HumanNameDisplay.js.map +0 -1
  509. package/dist/esm/HumanNameInput.js.map +0 -1
  510. package/dist/esm/IdentifierDisplay.js.map +0 -1
  511. package/dist/esm/IdentifierInput.js.map +0 -1
  512. package/dist/esm/Logo.js.map +0 -1
  513. package/dist/esm/MedplumLink.js.map +0 -1
  514. package/dist/esm/MedplumProvider.js.map +0 -1
  515. package/dist/esm/PatientTimeline.js.map +0 -1
  516. package/dist/esm/PeriodInput.js.map +0 -1
  517. package/dist/esm/PlanDefinitionBuilder.js.map +0 -1
  518. package/dist/esm/QuantityDisplay.js +0 -28
  519. package/dist/esm/QuantityDisplay.js.map +0 -1
  520. package/dist/esm/QuantityInput.js.map +0 -1
  521. package/dist/esm/QuestionnaireBuilder.js.map +0 -1
  522. package/dist/esm/QuestionnaireForm.js.map +0 -1
  523. package/dist/esm/QuestionnaireUtils.js.map +0 -1
  524. package/dist/esm/RangeDisplay.js +0 -21
  525. package/dist/esm/RangeDisplay.js.map +0 -1
  526. package/dist/esm/RangeInput.js.map +0 -1
  527. package/dist/esm/RatioDisplay.js.map +0 -1
  528. package/dist/esm/RatioInput.js.map +0 -1
  529. package/dist/esm/ReferenceDisplay.js.map +0 -1
  530. package/dist/esm/ReferenceInput.js.map +0 -1
  531. package/dist/esm/RequestGroupDisplay.js.map +0 -1
  532. package/dist/esm/ResourceArrayDisplay.js.map +0 -1
  533. package/dist/esm/ResourceArrayInput.js.map +0 -1
  534. package/dist/esm/ResourceAvatar.js.map +0 -1
  535. package/dist/esm/ResourceBadge.js.map +0 -1
  536. package/dist/esm/ResourceBlame.js +0 -65
  537. package/dist/esm/ResourceBlame.js.map +0 -1
  538. package/dist/esm/ResourceDiff.js.map +0 -1
  539. package/dist/esm/ResourceDiffTable.js.map +0 -1
  540. package/dist/esm/ResourceForm.js.map +0 -1
  541. package/dist/esm/ResourceHistoryTable.js.map +0 -1
  542. package/dist/esm/ResourceInput.js.map +0 -1
  543. package/dist/esm/ResourceName.js +0 -16
  544. package/dist/esm/ResourceName.js.map +0 -1
  545. package/dist/esm/ResourcePropertyDisplay.js.map +0 -1
  546. package/dist/esm/ResourcePropertyInput.js.map +0 -1
  547. package/dist/esm/ResourceTable.js.map +0 -1
  548. package/dist/esm/ResourceTimeline.js.map +0 -1
  549. package/dist/esm/Scheduler.js.map +0 -1
  550. package/dist/esm/SearchControl.js.map +0 -1
  551. package/dist/esm/SearchControlField.js.map +0 -1
  552. package/dist/esm/SearchFieldEditor.js.map +0 -1
  553. package/dist/esm/SearchFilterEditor.js.map +0 -1
  554. package/dist/esm/SearchFilterValueDialog.js.map +0 -1
  555. package/dist/esm/SearchFilterValueDisplay.js.map +0 -1
  556. package/dist/esm/SearchFilterValueInput.js.map +0 -1
  557. package/dist/esm/SearchPopupMenu.js.map +0 -1
  558. package/dist/esm/SearchUtils.js.map +0 -1
  559. package/dist/esm/ServiceRequestTimeline.js.map +0 -1
  560. package/dist/esm/StatusBadge.js.map +0 -1
  561. package/dist/esm/Timeline.js +0 -40
  562. package/dist/esm/Timeline.js.map +0 -1
  563. package/dist/esm/TimingInput.js.map +0 -1
  564. package/dist/esm/ValueSetAutocomplete.js.map +0 -1
  565. package/dist/esm/defaulttheme.css +0 -192
  566. package/dist/esm/styles.css +0 -528
  567. package/dist/esm/useResource.js.map +0 -1
  568. package/dist/esm/utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HumanNameInput.js","sources":["../../../src/HumanNameInput/HumanNameInput.tsx"],"sourcesContent":["import { Group, NativeSelect, TextInput } from '@mantine/core';\nimport { HumanName } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\n\nexport interface HumanNameInputProps {\n name: string;\n defaultValue?: HumanName;\n onChange?: (value: HumanName) => void;\n}\n\nexport function HumanNameInput(props: HumanNameInputProps): JSX.Element {\n const [value, setValue] = useState<HumanName | undefined>(props.defaultValue);\n\n const valueRef = useRef<HumanName>();\n valueRef.current = value;\n\n function setValueWrapper(newValue: HumanName): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n function setUse(use: 'temp' | 'old' | 'usual' | 'official' | 'nickname' | 'anonymous' | 'maiden' | undefined): void {\n setValueWrapper({ ...valueRef.current, use: use ? use : undefined });\n }\n\n function setPrefix(prefix: string): void {\n setValueWrapper({\n ...valueRef.current,\n prefix: prefix ? prefix.split(' ') : undefined,\n });\n }\n\n function setGiven(given: string): void {\n setValueWrapper({\n ...valueRef.current,\n given: given ? given.split(' ') : undefined,\n });\n }\n\n function setFamily(family: string): void {\n setValueWrapper({\n ...valueRef.current,\n family: family ? family : undefined,\n });\n }\n\n function setSuffix(suffix: string): void {\n setValueWrapper({\n ...valueRef.current,\n suffix: suffix ? suffix.split(' ') : undefined,\n });\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <NativeSelect\n defaultValue={value?.use}\n data-testid=\"use\"\n onChange={(e) =>\n setUse(e.currentTarget.value as 'temp' | 'old' | 'usual' | 'official' | 'nickname' | 'anonymous' | 'maiden')\n }\n data={['', 'temp', 'old', 'usual', 'official', 'nickname', 'anonymous', 'maiden']}\n />\n <TextInput\n placeholder=\"Prefix\"\n defaultValue={value?.prefix?.join(' ')}\n onChange={(e) => setPrefix(e.currentTarget.value)}\n />\n <TextInput\n placeholder=\"Given\"\n defaultValue={value?.given?.join(' ')}\n onChange={(e) => setGiven(e.currentTarget.value)}\n />\n <TextInput placeholder=\"Family\" defaultValue={value?.family} onChange={(e) => setFamily(e.currentTarget.value)} />\n <TextInput\n placeholder=\"Suffix\"\n defaultValue={value?.suffix?.join(' ')}\n onChange={(e) => setSuffix(e.currentTarget.value)}\n />\n </Group>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentifierDisplay.js","sources":["../../../src/IdentifierDisplay/IdentifierDisplay.tsx"],"sourcesContent":["import { Identifier } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface IdentifierDisplayProps {\n value?: Identifier;\n}\n\nexport function IdentifierDisplay(props: IdentifierDisplayProps): JSX.Element {\n return (\n <div>\n {props.value?.system}: {props.value?.value}\n </div>\n );\n}\n"],"names":[],"mappings":";;AAOM,SAAU,iBAAiB,CAAC,KAA6B,EAAA;;AAC7D,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EACG,CAAA,EAAA,GAAA,KAAK,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA;WAAE,MAAM;cAAI,CAAA,EAAA,GAAA,KAAK,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA;WAAE,KAAK,CACtC,EACN;AACJ;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentifierInput.js","sources":["../../../src/IdentifierInput/IdentifierInput.tsx"],"sourcesContent":["import { Group, TextInput } from '@mantine/core';\nimport { Identifier } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\n\nexport interface IdentifierInputProps {\n name: string;\n defaultValue?: Identifier;\n onChange?: (value: Identifier) => void;\n}\n\nexport function IdentifierInput(props: IdentifierInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Identifier): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <TextInput\n placeholder=\"System\"\n defaultValue={value?.system}\n onChange={(e) => setValueWrapper({ ...value, system: e.currentTarget.value })}\n />\n <TextInput\n placeholder=\"Value\"\n defaultValue={value?.value}\n onChange={(e) => setValueWrapper({ ...value, value: e.currentTarget.value })}\n />\n </Group>\n );\n}\n"],"names":[],"mappings":";;;AAUM,SAAU,eAAe,CAAC,KAA2B,EAAA;AACzD,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEvD,SAAS,eAAe,CAAC,QAAoB,EAAA;QAC3C,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;KACF;IAED,QACE,KAAC,CAAA,aAAA,CAAA,KAAK,EAAC,EAAA,OAAO,EAAC,IAAI,EAAC,IAAI,EAAA,IAAA,EAAC,MAAM,EAAA,IAAA,EAAA;AAC7B,QAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACR,WAAW,EAAC,QAAQ,EACpB,YAAY,EAAE,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,MAAM,EAC3B,QAAQ,EAAE,CAAC,CAAC,KAAK,eAAe,iCAAM,KAAK,CAAA,EAAA,EAAE,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,IAAG,EAC7E,CAAA;AACF,QAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EACR,EAAA,WAAW,EAAC,OAAO,EACnB,YAAY,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,EAC1B,QAAQ,EAAE,CAAC,CAAC,KAAK,eAAe,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,KAAE,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,IAAG,EAC5E,CAAA,CACI,EACR;AACJ;;;;"}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logo.js","sources":["../../../src/Logo/Logo.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface LogoProps {\n size: number;\n fill?: string;\n}\n\nexport function Logo(props: LogoProps): JSX.Element {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 491 491\" style={{ width: props.size, height: props.size }}>\n <title>Medplum Logo</title>\n <path fill={props.fill || '#ad7136'} d=\"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z\" />\n <path\n fill={props.fill || '#946af9'}\n d=\"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z\"\n />\n <path\n fill={props.fill || '#7857c5'}\n d=\"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z\"\n />\n <path\n fill={props.fill || '#40bc26'}\n d=\"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z\"\n />\n <path fill={props.fill || '#33961e'} d=\"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z\" />\n </svg>\n );\n}\n"],"names":[],"mappings":";;AAOM,SAAU,IAAI,CAAC,KAAgB,EAAA;IACnC,QACE,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,EAAA;QAC5G,KAA2B,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,EAAA,cAAA,CAAA;QAC3B,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,EAAC,gEAAgE,EAAG,CAAA;QAC1G,KACE,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,EAC7B,CAAC,EAAC,kJAAkJ,EACpJ,CAAA;QACF,KACE,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,EAC7B,CAAC,EAAC,4FAA4F,EAC9F,CAAA;QACF,KACE,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,EAC7B,CAAC,EAAC,yEAAyE,EAC3E,CAAA;AACF,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,EAAC,0DAA0D,EAAG,CAAA,CAChG,EACN;AACJ;;;;"}
@@ -1,12 +1,10 @@
1
+ import { TextProps } from '@mantine/core';
1
2
  import { Reference, Resource } from '@medplum/fhirtypes';
2
3
  import React from 'react';
3
- export interface MedplumLinkProps {
4
+ export interface MedplumLinkProps extends TextProps {
4
5
  to?: Resource | Reference | string;
5
6
  suffix?: string;
6
7
  label?: string;
7
- id?: string;
8
- testid?: string;
9
- className?: string;
10
8
  onClick?: () => void;
11
9
  children: React.ReactNode;
12
10
  }
@@ -1,22 +1,25 @@
1
+ import { __rest } from '../node_modules/tslib/tslib.es6.js';
2
+ import { Anchor } from '@mantine/core';
1
3
  import React from 'react';
2
4
  import { useNavigate } from 'react-router-dom';
3
- import { killEvent } from './utils/dom.js';
5
+ import { killEvent } from '../utils/dom.js';
4
6
 
5
7
  function MedplumLink(props) {
6
8
  const navigate = useNavigate();
7
- let href = getHref(props.to);
8
- if (props.suffix) {
9
- href += '/' + props.suffix;
9
+ const { to, suffix, label, onClick, children } = props, rest = __rest(props, ["to", "suffix", "label", "onClick", "children"]);
10
+ let href = getHref(to);
11
+ if (suffix) {
12
+ href += '/' + suffix;
10
13
  }
11
- return (React.createElement("a", { href: href, id: props.id, "aria-label": props.label, "data-testid": props.testid || 'link', className: props.className, onClick: (e) => {
14
+ return (React.createElement(Anchor, Object.assign({ href: href, "aria-label": label, onClick: (e) => {
12
15
  killEvent(e);
13
- if (props.onClick) {
14
- props.onClick();
16
+ if (onClick) {
17
+ onClick();
15
18
  }
16
- else if (props.to) {
19
+ else if (to) {
17
20
  navigate(href);
18
21
  }
19
- } }, props.children));
22
+ } }, rest), children));
20
23
  }
21
24
  function getHref(to) {
22
25
  if (to) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MedplumLink.js","sources":["../../../src/MedplumLink/MedplumLink.tsx"],"sourcesContent":["import { Anchor, TextProps } from '@mantine/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { killEvent } from '../utils/dom';\n\nexport interface MedplumLinkProps extends TextProps {\n to?: Resource | Reference | string;\n suffix?: string;\n label?: string;\n onClick?: () => void;\n children: React.ReactNode;\n}\n\nexport function MedplumLink(props: MedplumLinkProps): JSX.Element {\n const navigate = useNavigate();\n const { to, suffix, label, onClick, children, ...rest } = props;\n\n let href = getHref(to);\n if (suffix) {\n href += '/' + suffix;\n }\n\n return (\n <Anchor\n href={href}\n aria-label={label}\n onClick={(e: React.SyntheticEvent) => {\n killEvent(e);\n if (onClick) {\n onClick();\n } else if (to) {\n navigate(href);\n }\n }}\n {...rest}\n >\n {children}\n </Anchor>\n );\n}\n\nfunction getHref(to: Resource | Reference | string | undefined): string {\n if (to) {\n if (typeof to === 'string') {\n return getStringHref(to);\n } else if ('resourceType' in to) {\n return getResourceHref(to);\n } else if ('reference' in to) {\n return getReferenceHref(to);\n }\n }\n return '#';\n}\n\nfunction getStringHref(to: string): string {\n if (to.startsWith('http://') || to.startsWith('https://') || to.startsWith('/')) {\n return to;\n }\n return '/' + to;\n}\n\nfunction getResourceHref(to: Resource): string {\n return `/${to.resourceType}/${to.id}`;\n}\n\nfunction getReferenceHref(to: Reference): string {\n return `/${to.reference}`;\n}\n"],"names":[],"mappings":";;;;;;AAcM,SAAU,WAAW,CAAC,KAAuB,EAAA;AACjD,IAAA,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;AAC/B,IAAA,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAc,GAAA,KAAK,EAAd,IAAI,GAAA,MAAA,CAAK,KAAK,EAAzD,CAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,CAAiD,CAAQ,CAAC;AAEhE,IAAA,IAAI,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AACvB,IAAA,IAAI,MAAM,EAAE;AACV,QAAA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC;AACtB,KAAA;AAED,IAAA,QACE,KAAA,CAAA,aAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,IAAI,EAAE,IAAI,EACE,YAAA,EAAA,KAAK,EACjB,OAAO,EAAE,CAAC,CAAuB,KAAI;YACnC,SAAS,CAAC,CAAC,CAAC,CAAC;AACb,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AAAM,iBAAA,IAAI,EAAE,EAAE;gBACb,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChB,aAAA;AACH,SAAC,IACG,IAAI,CAAA,EAEP,QAAQ,CACF,EACT;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,EAA6C,EAAA;AAC5D,IAAA,IAAI,EAAE,EAAE;AACN,QAAA,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAC1B,YAAA,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;AAC1B,SAAA;aAAM,IAAI,cAAc,IAAI,EAAE,EAAE;AAC/B,YAAA,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AAC5B,SAAA;aAAM,IAAI,WAAW,IAAI,EAAE,EAAE;AAC5B,YAAA,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC7B,SAAA;AACF,KAAA;AACD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,EAAU,EAAA;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC/E,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;IACD,OAAO,GAAG,GAAG,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,EAAY,EAAA;IACnC,OAAO,CAAA,CAAA,EAAI,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAA,CAAE,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAa,EAAA;AACrC,IAAA,OAAO,CAAI,CAAA,EAAA,EAAE,CAAC,SAAS,EAAE,CAAC;AAC5B;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MedplumProvider.js","sources":["../../../src/MedplumProvider/MedplumProvider.tsx"],"sourcesContent":["import { MedplumClient, ProfileResource } from '@medplum/core';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\n\nconst reactContext = createContext(undefined as MedplumContext | undefined);\n\nexport interface MedplumProviderProps {\n medplum: MedplumClient;\n children: React.ReactNode;\n}\n\nexport interface MedplumContext {\n medplum: MedplumClient;\n profile?: ProfileResource;\n loading: boolean;\n}\n\n/**\n * The MedplumProvider component provides Medplum context state.\n *\n * Medplum context includes:\n * 1) medplum - Medplum client library\n * 2) profile - The current user profile (if signed in)\n */\nexport function MedplumProvider(props: MedplumProviderProps): JSX.Element {\n const medplum = props.medplum;\n\n const [state, setState] = useState({\n profile: medplum.getProfile(),\n loading: false,\n });\n\n useEffect(() => {\n function eventListener(): void {\n setState({\n ...state,\n profile: medplum.getProfile(),\n });\n }\n\n medplum.addEventListener('change', eventListener);\n return () => medplum.removeEventListeneer('change', eventListener);\n }, [medplum, state]);\n\n const medplumContext = {\n ...state,\n medplum,\n };\n\n return <reactContext.Provider value={medplumContext}>{props.children}</reactContext.Provider>;\n}\n\n/**\n * Returns the MedplumContext instance.\n */\nexport function useMedplumContext(): MedplumContext {\n return useContext(reactContext) as MedplumContext;\n}\n\n/**\n * Returns the MedplumClient instance.\n * This is a shortcut for useMedplumContext().medplum.\n */\nexport function useMedplum(): MedplumClient {\n return useMedplumContext().medplum;\n}\n\n/**\n * Returns the current Medplum user profile (if signed in).\n * This is a shortcut for useMedplumContext().profile.\n * @returns The current user profile.\n */\nexport function useMedplumProfile(): ProfileResource | undefined {\n return useMedplumContext().profile;\n}\n"],"names":[],"mappings":";;AAGA,MAAM,YAAY,GAAG,aAAa,CAAC,SAAuC,CAAC,CAAC;AAa5E;;;;;;AAMG;AACG,SAAU,eAAe,CAAC,KAA2B,EAAA;AACzD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAE9B,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACjC,QAAA,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE;AAC7B,QAAA,OAAO,EAAE,KAAK;AACf,KAAA,CAAC,CAAC;IAEH,SAAS,CAAC,MAAK;AACb,QAAA,SAAS,aAAa,GAAA;YACpB,QAAQ,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACH,KAAK,CAAA,EAAA,EACR,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,EAAA,CAAA,CAC7B,CAAC;SACJ;AAED,QAAA,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAClD,OAAO,MAAM,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACrE,KAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAErB,IAAA,MAAM,cAAc,GACf,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CACR,EAAA,EAAA,OAAO,GACR,CAAC;AAEF,IAAA,OAAO,KAAC,CAAA,aAAA,CAAA,YAAY,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,cAAc,EAAG,EAAA,KAAK,CAAC,QAAQ,CAAyB,CAAC;AAChG,CAAC;AAED;;AAEG;SACa,iBAAiB,GAAA;AAC/B,IAAA,OAAO,UAAU,CAAC,YAAY,CAAmB,CAAC;AACpD,CAAC;AAED;;;AAGG;SACa,UAAU,GAAA;AACxB,IAAA,OAAO,iBAAiB,EAAE,CAAC,OAAO,CAAC;AACrC,CAAC;AAED;;;;AAIG;SACa,iBAAiB,GAAA;AAC/B,IAAA,OAAO,iBAAiB,EAAE,CAAC,OAAO,CAAC;AACrC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { getReferenceString, createReference } from '@medplum/core';
2
2
  import React from 'react';
3
- import { ResourceTimeline } from './ResourceTimeline.js';
3
+ import { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline.js';
4
4
 
5
5
  const searches = [
6
6
  '$/_history',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PatientTimeline.js","sources":["../../../src/PatientTimeline/PatientTimeline.tsx"],"sourcesContent":["import { createReference, getReferenceString, ProfileResource } from '@medplum/core';\nimport { Attachment, Patient, Reference, Resource } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline';\n\nexport interface PatientTimelineProps {\n patient: Patient | Reference<Patient>;\n}\n\nconst searches = [\n '$/_history',\n 'Communication?subject=$',\n 'Device?patient=$',\n 'DeviceRequest?patient=$',\n 'DiagnosticReport?subject=$',\n 'Media?subject=$',\n 'ServiceRequest?subject=$',\n];\n\nexport function PatientTimeline(props: PatientTimelineProps): JSX.Element {\n return (\n <ResourceTimeline\n value={props.patient}\n buildSearchRequests={(resource: Resource) => ({\n resourceType: 'Bundle',\n type: 'batch',\n entry: searches.map((search) => ({\n request: {\n method: 'GET',\n url: search.replaceAll('$', getReferenceString(resource)),\n },\n })),\n })}\n createCommunication={(resource: Patient, sender: ProfileResource, text: string) => ({\n resourceType: 'Communication',\n status: 'completed',\n subject: createReference(resource),\n sender: createReference(sender),\n sent: new Date().toISOString(),\n payload: [{ contentString: text }],\n })}\n createMedia={(resource: Patient, operator: ProfileResource, content: Attachment) => ({\n resourceType: 'Media',\n status: 'completed',\n subject: createReference(resource),\n operator: createReference(operator),\n issued: new Date().toISOString(),\n content,\n })}\n />\n );\n}\n"],"names":[],"mappings":";;;;AASA,MAAM,QAAQ,GAAG;IACf,YAAY;IACZ,yBAAyB;IACzB,kBAAkB;IAClB,yBAAyB;IACzB,4BAA4B;IAC5B,iBAAiB;IACjB,0BAA0B;CAC3B,CAAC;AAEI,SAAU,eAAe,CAAC,KAA2B,EAAA;AACzD,IAAA,QACE,KAAC,CAAA,aAAA,CAAA,gBAAgB,EACf,EAAA,KAAK,EAAE,KAAK,CAAC,OAAO,EACpB,mBAAmB,EAAE,CAAC,QAAkB,MAAM;AAC5C,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AAC/B,gBAAA,OAAO,EAAE;AACP,oBAAA,MAAM,EAAE,KAAK;oBACb,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC1D,iBAAA;AACF,aAAA,CAAC,CAAC;AACJ,SAAA,CAAC,EACF,mBAAmB,EAAE,CAAC,QAAiB,EAAE,MAAuB,EAAE,IAAY,MAAM;AAClF,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC;AAClC,YAAA,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;AAC/B,YAAA,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACnC,SAAA,CAAC,EACF,WAAW,EAAE,CAAC,QAAiB,EAAE,QAAyB,EAAE,OAAmB,MAAM;AACnF,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC;AAClC,YAAA,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;AACnC,YAAA,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAChC,OAAO;SACR,CAAC,EAAA,CACF,EACF;AACJ;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { Group } from '@mantine/core';
2
2
  import React, { useState } from 'react';
3
- import { DateTimeInput } from './DateTimeInput.js';
3
+ import { DateTimeInput } from '../DateTimeInput/DateTimeInput.js';
4
4
 
5
5
  function PeriodInput(props) {
6
6
  const [value, setValue] = useState(props.defaultValue);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeriodInput.js","sources":["../../../src/PeriodInput/PeriodInput.tsx"],"sourcesContent":["import { Group } from '@mantine/core';\nimport { Period } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { DateTimeInput } from '../DateTimeInput/DateTimeInput';\n\nexport interface PeriodInputProps {\n name: string;\n defaultValue?: Period;\n onChange?: (value: Period) => void;\n}\n\nexport function PeriodInput(props: PeriodInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Period): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <DateTimeInput\n name={props.name + '.start'}\n placeholder=\"Start\"\n defaultValue={value?.start}\n onChange={(newValue) => setValueWrapper({ ...value, start: newValue })}\n />\n <DateTimeInput\n name={props.name + '.end'}\n placeholder=\"End\"\n defaultValue={value?.end}\n onChange={(newValue) => setValueWrapper({ ...value, end: newValue })}\n />\n </Group>\n );\n}\n"],"names":[],"mappings":";;;;AAWM,SAAU,WAAW,CAAC,KAAuB,EAAA;AACjD,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEvD,SAAS,eAAe,CAAC,QAAgB,EAAA;QACvC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;KACF;IAED,QACE,KAAC,CAAA,aAAA,CAAA,KAAK,EAAC,EAAA,OAAO,EAAC,IAAI,EAAC,IAAI,EAAA,IAAA,EAAC,MAAM,EAAA,IAAA,EAAA;AAC7B,QAAA,KAAA,CAAA,aAAA,CAAC,aAAa,EACZ,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,QAAQ,EAC3B,WAAW,EAAC,OAAO,EACnB,YAAY,EAAE,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,EAC1B,QAAQ,EAAE,CAAC,QAAQ,KAAK,eAAe,iCAAM,KAAK,CAAA,EAAA,EAAE,KAAK,EAAE,QAAQ,IAAG,EACtE,CAAA;AACF,QAAA,KAAA,CAAA,aAAA,CAAC,aAAa,EACZ,EAAA,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,MAAM,EACzB,WAAW,EAAC,KAAK,EACjB,YAAY,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,GAAG,EACxB,QAAQ,EAAE,CAAC,QAAQ,KAAK,eAAe,iCAAM,KAAK,CAAA,EAAA,EAAE,GAAG,EAAE,QAAQ,IAAG,EACpE,CAAA,CACI,EACR;AACJ;;;;"}
@@ -1,16 +1,43 @@
1
- import { TextInput, Button, NativeSelect } from '@mantine/core';
1
+ import { createStyles, TextInput, Button, Stack, NativeSelect } from '@mantine/core';
2
2
  import { getReferenceString } from '@medplum/core';
3
3
  import React, { useState, useRef, useEffect } from 'react';
4
- import { Form } from './Form.js';
5
- import { useMedplum } from './MedplumProvider.js';
6
- import { ReferenceDisplay } from './ReferenceDisplay.js';
7
- import { setPropertyValue } from './ResourceForm.js';
8
- import { ResourceInput } from './ResourceInput.js';
9
- import { ResourcePropertyDisplay, getValueAndType } from './ResourcePropertyDisplay.js';
10
- import { ResourcePropertyInput } from './ResourcePropertyInput.js';
11
- import { useResource } from './useResource.js';
12
- import { killEvent } from './utils/dom.js';
4
+ import { Form } from '../Form/Form.js';
5
+ import { FormSection } from '../FormSection/FormSection.js';
6
+ import { useMedplum } from '../MedplumProvider/MedplumProvider.js';
7
+ import { ReferenceDisplay } from '../ReferenceDisplay/ReferenceDisplay.js';
8
+ import { setPropertyValue } from '../ResourceForm/ResourceForm.js';
9
+ import { ResourceInput } from '../ResourceInput/ResourceInput.js';
10
+ import { ResourcePropertyDisplay, getValueAndType } from '../ResourcePropertyDisplay/ResourcePropertyDisplay.js';
11
+ import { ResourcePropertyInput } from '../ResourcePropertyInput/ResourcePropertyInput.js';
12
+ import { useResource } from '../useResource/useResource.js';
13
+ import { killEvent } from '../utils/dom.js';
13
14
 
15
+ const useStyles = createStyles((theme) => ({
16
+ section: {
17
+ position: 'relative',
18
+ margin: '4px 4px 8px 0',
19
+ padding: '6px 12px 16px 6px',
20
+ border: `1.5px solid ${theme.colors.gray[1]}`,
21
+ borderRadius: theme.radius.sm,
22
+ transition: 'all 0.1s',
23
+ },
24
+ hovering: {
25
+ border: `1.5px solid ${theme.colors.blue[5]}`,
26
+ },
27
+ editing: {
28
+ border: `1.5px solid ${theme.colors.gray[1]}`,
29
+ borderLeft: `4px solid ${theme.colors.blue[5]}`,
30
+ },
31
+ bottomActions: {
32
+ position: 'absolute',
33
+ right: 4,
34
+ bottom: 0,
35
+ fontSize: theme.fontSizes.xs,
36
+ '& a': {
37
+ marginLeft: 8,
38
+ },
39
+ },
40
+ }));
14
41
  function PlanDefinitionBuilder(props) {
15
42
  const medplum = useMedplum();
16
43
  const defaultValue = useResource(props.value);
@@ -44,13 +71,14 @@ function PlanDefinitionBuilder(props) {
44
71
  function changeProperty(property, newValue) {
45
72
  setValue(Object.assign(Object.assign({}, valueRef.current), { [property]: newValue }));
46
73
  }
47
- return (React.createElement("div", { className: "medplum-questionnaire-builder" },
74
+ return (React.createElement("div", null,
48
75
  React.createElement(Form, { testid: "questionnaire-form", onSubmit: () => props.onSubmit(value) },
49
76
  React.createElement(TextInput, { label: "Plan Title", defaultValue: value.title, onChange: (e) => changeProperty('title', e.currentTarget.value) }),
50
77
  React.createElement(ActionArrayBuilder, { actions: value.action || [], selectedKey: selectedKey, setSelectedKey: setSelectedKey, hoverKey: hoverKey, setHoverKey: setHoverKey, onChange: (x) => changeProperty('action', x) }),
51
78
  React.createElement(Button, { type: "submit" }, "Save"))));
52
79
  }
53
80
  function ActionArrayBuilder(props) {
81
+ const { classes } = useStyles();
54
82
  const actionsRef = useRef();
55
83
  actionsRef.current = props.actions;
56
84
  function changeAction(changedAction) {
@@ -63,16 +91,17 @@ function ActionArrayBuilder(props) {
63
91
  function removeAction(removedAction) {
64
92
  props.onChange(actionsRef.current.filter((i) => i !== removedAction));
65
93
  }
66
- return (React.createElement("div", { className: "section" },
94
+ return (React.createElement("div", { className: classes.section },
67
95
  props.actions.map((action) => (React.createElement("div", { key: action.id },
68
96
  React.createElement(ActionBuilder, { action: action, selectedKey: props.selectedKey, setSelectedKey: props.setSelectedKey, hoverKey: props.hoverKey, setHoverKey: props.setHoverKey, onChange: changeAction, onRemove: () => removeAction(action) })))),
69
- React.createElement("div", { className: "bottom-actions" },
97
+ React.createElement("div", { className: classes.bottomActions },
70
98
  React.createElement("a", { href: "#", onClick: (e) => {
71
99
  killEvent(e);
72
100
  addAction({ id: generateId() });
73
101
  } }, "Add action"))));
74
102
  }
75
103
  function ActionBuilder(props) {
104
+ const { classes, cx } = useStyles();
76
105
  const { action } = props;
77
106
  const actionType = getInitialActionType(action);
78
107
  const editing = props.selectedKey === props.action.id;
@@ -85,10 +114,13 @@ function ActionBuilder(props) {
85
114
  killEvent(e);
86
115
  props.setHoverKey(props.action.id);
87
116
  }
88
- const className = editing ? 'section editing' : hovering ? 'section hovering' : 'section';
117
+ const className = cx(classes.section, {
118
+ [classes.editing]: editing,
119
+ [classes.hovering]: hovering && !editing,
120
+ });
89
121
  return (React.createElement("div", { "data-testid": action.id, className: className, onClick: onClick, onMouseOver: onHover },
90
122
  editing ? (React.createElement(ActionEditor, { action: action, actionType: actionType, onChange: props.onChange, selectedKey: props.selectedKey, setSelectedKey: props.setSelectedKey, hoverKey: props.hoverKey, setHoverKey: props.setHoverKey, onRemove: props.onRemove })) : (React.createElement(ActionDisplay, { action: action, actionType: actionType })),
91
- React.createElement("div", { className: "bottom-actions" },
123
+ React.createElement("div", { className: classes.bottomActions },
92
124
  React.createElement("a", { href: "#", onClick: (e) => {
93
125
  e.preventDefault();
94
126
  props.onRemove();
@@ -119,7 +151,7 @@ function ActionEditor(props) {
119
151
  function changeProperty(property, value) {
120
152
  props.onChange(Object.assign(Object.assign({}, action), { [property]: value }));
121
153
  }
122
- return (React.createElement(React.Fragment, null,
154
+ return (React.createElement(Stack, { spacing: "xl" },
123
155
  React.createElement(TextInput, { name: `actionTitle-${action.id}`, label: "Title", defaultValue: action.title, onChange: (e) => changeProperty('title', e.currentTarget.value) }),
124
156
  React.createElement(TextInput, { name: `actionDescription-${action.id}`, label: "Description", defaultValue: action.description, onChange: (e) => changeProperty('description', e.currentTarget.value) }),
125
157
  React.createElement(NativeSelect, { label: "Type of Action", description: "The type of the action to be performed.", name: `actionType-${action.id}`, defaultValue: actionType, onChange: (e) => setActionType(e.currentTarget.value), data: ['', 'appointment', 'lab', 'questionnaire', 'task'] }),
@@ -138,9 +170,8 @@ function ActionEditor(props) {
138
170
  return null;
139
171
  }
140
172
  })(),
141
- React.createElement("p", null, "Timing"),
142
- React.createElement("p", null, "When the action should take place."),
143
- React.createElement(ActionTimingInput, { name: 'timing-' + action.id, action: action, onChange: props.onChange })));
173
+ React.createElement(FormSection, { title: "Timing", description: "When the action should take place." },
174
+ React.createElement(ActionTimingInput, { name: 'timing-' + action.id, action: action, onChange: props.onChange }))));
144
175
  }
145
176
  function ActionResourceTypeBuilder(props) {
146
177
  const { id, definitionCanonical } = props.action;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanDefinitionBuilder.js","sources":["../../../src/PlanDefinitionBuilder/PlanDefinitionBuilder.tsx"],"sourcesContent":["import { Button, createStyles, NativeSelect, Stack, TextInput } from '@mantine/core';\nimport { getReferenceString, IndexedStructureDefinition, PropertyType } from '@medplum/core';\nimport { ElementDefinition, PlanDefinition, PlanDefinitionAction, Reference, ResourceType } from '@medplum/fhirtypes';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Form } from '../Form/Form';\nimport { FormSection } from '../FormSection/FormSection';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\nimport { ReferenceDisplay } from '../ReferenceDisplay/ReferenceDisplay';\nimport { setPropertyValue } from '../ResourceForm/ResourceForm';\nimport { ResourceInput } from '../ResourceInput/ResourceInput';\nimport { getValueAndType, ResourcePropertyDisplay } from '../ResourcePropertyDisplay/ResourcePropertyDisplay';\nimport { ResourcePropertyInput } from '../ResourcePropertyInput/ResourcePropertyInput';\nimport { useResource } from '../useResource/useResource';\nimport { killEvent } from '../utils/dom';\n\nconst useStyles = createStyles((theme) => ({\n section: {\n position: 'relative',\n margin: '4px 4px 8px 0',\n padding: '6px 12px 16px 6px',\n border: `1.5px solid ${theme.colors.gray[1]}`,\n borderRadius: theme.radius.sm,\n transition: 'all 0.1s',\n },\n\n hovering: {\n border: `1.5px solid ${theme.colors.blue[5]}`,\n },\n\n editing: {\n border: `1.5px solid ${theme.colors.gray[1]}`,\n borderLeft: `4px solid ${theme.colors.blue[5]}`,\n },\n\n bottomActions: {\n position: 'absolute',\n right: 4,\n bottom: 0,\n fontSize: theme.fontSizes.xs,\n\n '& a': {\n marginLeft: 8,\n },\n },\n}));\n\nexport interface PlanDefinitionBuilderProps {\n value: PlanDefinition | Reference<PlanDefinition>;\n onSubmit: (result: PlanDefinition) => void;\n}\n\nexport function PlanDefinitionBuilder(props: PlanDefinitionBuilderProps): JSX.Element | null {\n const medplum = useMedplum();\n const defaultValue = useResource(props.value);\n const [schema, setSchema] = useState<IndexedStructureDefinition | undefined>(undefined);\n const [selectedKey, setSelectedKey] = useState<string>();\n const [hoverKey, setHoverKey] = useState<string>();\n const [value, setValue] = useState<PlanDefinition>();\n\n function handleDocumentMouseOver(): void {\n setHoverKey(undefined);\n }\n\n function handleDocumentClick(): void {\n setSelectedKey(undefined);\n }\n\n const valueRef = useRef<PlanDefinition>();\n valueRef.current = value;\n\n useEffect(() => {\n medplum.requestSchema('PlanDefinition').then(setSchema).catch(console.log);\n }, [medplum]);\n\n useEffect(() => {\n setValue(ensurePlanDefinitionKeys(defaultValue ?? { resourceType: 'PlanDefinition' }));\n document.addEventListener('mouseover', handleDocumentMouseOver);\n document.addEventListener('click', handleDocumentClick);\n return () => {\n document.removeEventListener('mouseover', handleDocumentMouseOver);\n document.removeEventListener('click', handleDocumentClick);\n };\n }, [defaultValue]);\n\n if (!schema || !value) {\n return null;\n }\n\n function changeProperty(property: string, newValue: any): void {\n setValue({\n ...valueRef.current,\n [property]: newValue,\n } as PlanDefinition);\n }\n\n return (\n <div>\n <Form testid=\"questionnaire-form\" onSubmit={() => props.onSubmit(value)}>\n <TextInput\n label=\"Plan Title\"\n defaultValue={value.title}\n onChange={(e) => changeProperty('title', e.currentTarget.value)}\n />\n <ActionArrayBuilder\n actions={value.action || []}\n selectedKey={selectedKey}\n setSelectedKey={setSelectedKey}\n hoverKey={hoverKey}\n setHoverKey={setHoverKey}\n onChange={(x) => changeProperty('action', x)}\n />\n <Button type=\"submit\">Save</Button>\n </Form>\n </div>\n );\n}\n\ninterface ActionArrayBuilderProps {\n actions: PlanDefinitionAction[];\n selectedKey: string | undefined;\n setSelectedKey: (key: string | undefined) => void;\n hoverKey: string | undefined;\n setHoverKey: (key: string | undefined) => void;\n onChange: (actions: PlanDefinitionAction[]) => void;\n}\n\nfunction ActionArrayBuilder(props: ActionArrayBuilderProps): JSX.Element {\n const { classes } = useStyles();\n const actionsRef = useRef<PlanDefinitionAction[]>();\n actionsRef.current = props.actions;\n\n function changeAction(changedAction: PlanDefinitionAction): void {\n props.onChange(\n (actionsRef.current as PlanDefinition[]).map((i) => (i.id === changedAction.id ? changedAction : i))\n );\n }\n\n function addAction(addedAction: PlanDefinitionAction): void {\n props.onChange([...(actionsRef.current as PlanDefinition[]), addedAction]);\n props.setSelectedKey(addedAction.id);\n }\n\n function removeAction(removedAction: PlanDefinitionAction): void {\n props.onChange((actionsRef.current as PlanDefinition[]).filter((i) => i !== removedAction));\n }\n\n return (\n <div className={classes.section}>\n {props.actions.map((action) => (\n <div key={action.id}>\n <ActionBuilder\n action={action}\n selectedKey={props.selectedKey}\n setSelectedKey={props.setSelectedKey}\n hoverKey={props.hoverKey}\n setHoverKey={props.setHoverKey}\n onChange={changeAction}\n onRemove={() => removeAction(action)}\n />\n </div>\n ))}\n <div className={classes.bottomActions}>\n <a\n href=\"#\"\n onClick={(e) => {\n killEvent(e);\n addAction({ id: generateId() });\n }}\n >\n Add action\n </a>\n </div>\n </div>\n );\n}\n\ninterface ActionBuilderProps {\n action: PlanDefinitionAction;\n selectedKey: string | undefined;\n setSelectedKey: (key: string | undefined) => void;\n hoverKey: string | undefined;\n setHoverKey: (key: string | undefined) => void;\n onChange: (action: PlanDefinitionAction) => void;\n onRemove: () => void;\n}\n\nfunction ActionBuilder(props: ActionBuilderProps): JSX.Element {\n const { classes, cx } = useStyles();\n const { action } = props;\n const actionType = getInitialActionType(action);\n const editing = props.selectedKey === props.action.id;\n const hovering = props.hoverKey === props.action.id;\n\n function onClick(e: React.SyntheticEvent): void {\n e.stopPropagation();\n props.setSelectedKey(props.action.id);\n }\n\n function onHover(e: React.SyntheticEvent): void {\n killEvent(e);\n props.setHoverKey(props.action.id);\n }\n\n const className = cx(classes.section, {\n [classes.editing]: editing,\n [classes.hovering]: hovering && !editing,\n });\n\n return (\n <div data-testid={action.id} className={className} onClick={onClick} onMouseOver={onHover}>\n {editing ? (\n <ActionEditor\n action={action}\n actionType={actionType}\n onChange={props.onChange}\n selectedKey={props.selectedKey}\n setSelectedKey={props.setSelectedKey}\n hoverKey={props.hoverKey}\n setHoverKey={props.setHoverKey}\n onRemove={props.onRemove}\n />\n ) : (\n <ActionDisplay action={action} actionType={actionType} />\n )}\n <div className={classes.bottomActions}>\n <a\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n props.onRemove();\n }}\n >\n Remove\n </a>\n </div>\n </div>\n );\n}\n\nconst timingProperty: ElementDefinition = {\n path: 'PlanDefinition.action.timing[x]',\n min: 0,\n max: '1',\n type: [{ code: 'dateTime' }, { code: 'Period' }, { code: 'Range' }, { code: 'Timing' }],\n};\n\ninterface ActionDisplayProps {\n action: PlanDefinitionAction;\n actionType: string | undefined;\n}\n\nfunction ActionDisplay(props: ActionDisplayProps): JSX.Element {\n const { action, actionType } = props;\n const [propertyValue, propertyType] = getActionTiming(action);\n return (\n <div>\n <div>\n {action.title || 'Untitled'} {actionType && `(${actionType})`}\n </div>\n {action.definitionCanonical && (\n <div>\n <ReferenceDisplay value={{ reference: action.definitionCanonical }} />\n </div>\n )}\n {propertyValue && (\n <div>\n <ResourcePropertyDisplay property={timingProperty} propertyType={propertyType} value={propertyValue} />\n </div>\n )}\n </div>\n );\n}\n\ninterface ActionEditorProps {\n action: PlanDefinitionAction;\n actionType: string | undefined;\n selectedKey: string | undefined;\n setSelectedKey: (key: string | undefined) => void;\n hoverKey: string | undefined;\n setHoverKey: (key: string | undefined) => void;\n onChange: (action: PlanDefinitionAction) => void;\n onRemove: () => void;\n}\n\nfunction ActionEditor(props: ActionEditorProps): JSX.Element {\n const { action } = props;\n const [actionType, setActionType] = useState<string | undefined>(props.actionType);\n\n function changeProperty(property: string, value: any): void {\n props.onChange({\n ...action,\n [property]: value,\n } as PlanDefinitionAction);\n }\n\n return (\n <Stack spacing=\"xl\">\n <TextInput\n name={`actionTitle-${action.id}`}\n label=\"Title\"\n defaultValue={action.title}\n onChange={(e) => changeProperty('title', e.currentTarget.value)}\n />\n <TextInput\n name={`actionDescription-${action.id}`}\n label=\"Description\"\n defaultValue={action.description}\n onChange={(e) => changeProperty('description', e.currentTarget.value)}\n />\n <NativeSelect\n label=\"Type of Action\"\n description=\"The type of the action to be performed.\"\n name={`actionType-${action.id}`}\n defaultValue={actionType}\n onChange={(e) => setActionType(e.currentTarget.value)}\n data={['', 'appointment', 'lab', 'questionnaire', 'task']}\n />\n {action.action && action.action.length > 0 && (\n <ActionArrayBuilder\n actions={action.action}\n selectedKey={props.selectedKey}\n setSelectedKey={props.setSelectedKey}\n hoverKey={props.hoverKey}\n setHoverKey={props.setHoverKey}\n onChange={(x) => changeProperty('action', x)}\n />\n )}\n {(() => {\n switch (actionType) {\n case 'appointment':\n return (\n <ActionResourceTypeBuilder\n title=\"Appointment\"\n description=\"The subject must schedule an appointment from the schedule.\"\n resourceType=\"Schedule\"\n action={action}\n onChange={props.onChange}\n />\n );\n case 'lab':\n return (\n <ActionResourceTypeBuilder\n title=\"Lab\"\n description=\"The subject must complete the following lab panel.\"\n resourceType=\"ActivityDefinition\"\n action={action}\n onChange={props.onChange}\n />\n );\n case 'questionnaire':\n return (\n <ActionResourceTypeBuilder\n title=\"Questionnaire\"\n description=\"The subject must complete the selected questionnaire.\"\n resourceType=\"Questionnaire\"\n action={action}\n onChange={props.onChange}\n />\n );\n case 'task':\n return (\n <ActionResourceTypeBuilder\n title=\"Task\"\n description=\"The subject must complete the following task.\"\n resourceType=\"ActivityDefinition\"\n action={action}\n onChange={props.onChange}\n />\n );\n default:\n return null;\n }\n })()}\n <FormSection title=\"Timing\" description=\"When the action should take place.\">\n <ActionTimingInput name={'timing-' + action.id} action={action} onChange={props.onChange} />\n </FormSection>\n </Stack>\n );\n}\n\ninterface ActionResourceTypeBuilderProps {\n action: PlanDefinitionAction;\n title: string;\n description: string;\n resourceType: ResourceType;\n onChange: (action: PlanDefinitionAction) => void;\n}\n\nfunction ActionResourceTypeBuilder(props: ActionResourceTypeBuilderProps): JSX.Element {\n const { id, definitionCanonical } = props.action;\n const reference = definitionCanonical?.startsWith(props.resourceType + '/')\n ? { reference: definitionCanonical }\n : undefined;\n return (\n <ResourceInput\n name={id as string}\n resourceType={props.resourceType}\n defaultValue={reference}\n loadOnFocus={true}\n onChange={(newValue) => {\n if (newValue) {\n props.onChange({ ...props.action, definitionCanonical: getReferenceString(newValue) });\n } else {\n props.onChange({ ...props.action, definitionCanonical: undefined });\n }\n }}\n />\n );\n}\n\ninterface ActionTimingInputProps {\n name: string;\n action: PlanDefinitionAction;\n onChange: (action: PlanDefinitionAction) => void;\n}\n\nfunction ActionTimingInput(props: ActionTimingInputProps): JSX.Element {\n const value = props.action;\n const key = 'timing';\n const [propertyValue, propertyType] = getActionTiming(value);\n return (\n <ResourcePropertyInput\n property={timingProperty}\n name=\"timing[x]\"\n defaultValue={propertyValue}\n defaultPropertyType={propertyType}\n onChange={(newValue: any, propName?: string) => {\n props.onChange(setPropertyValue(value, key, propName ?? key, timingProperty, newValue));\n }}\n />\n );\n}\n\nfunction getInitialActionType(action: PlanDefinitionAction): string | undefined {\n if (action.definitionCanonical?.startsWith('Schedule')) {\n return 'appointment';\n }\n\n if (action.definitionCanonical?.startsWith('Questionnaire/')) {\n return 'questionnaire';\n }\n\n if (action.definitionCanonical?.startsWith('ActivityDefinition/')) {\n return 'task';\n }\n\n return undefined;\n}\n\nfunction getActionTiming(action: PlanDefinitionAction): [any, PropertyType] {\n return getValueAndType({ type: 'PlanDefinitionAction', value: action }, 'timing');\n}\n\nlet nextId = 1;\n\n/**\n * Generates a unique ID.\n * React needs unique IDs for components for rendering performance.\n * All of the important components in the questionnaire builder have id properties for this:\n * Questionnaire, QuestionnaireItem, and QuestionnaireItemAnswerOption.\n * @return A unique key.\n */\nfunction generateId(existing?: string): string {\n if (existing) {\n if (existing.startsWith('id-')) {\n const existingNum = parseInt(existing.substring(3));\n if (!isNaN(existingNum)) {\n nextId = Math.max(nextId, existingNum + 1);\n }\n }\n return existing;\n }\n return 'id-' + nextId++;\n}\n\nfunction ensurePlanDefinitionKeys(planDefinition: PlanDefinition): PlanDefinition {\n return {\n ...planDefinition,\n action: ensurePlanDefinitionActionKeys(planDefinition.action),\n } as PlanDefinition;\n}\n\nfunction ensurePlanDefinitionActionKeys(\n actions: PlanDefinitionAction[] | undefined\n): PlanDefinitionAction[] | undefined {\n if (!actions) {\n return undefined;\n }\n return actions.map((action) => ({\n ...action,\n id: generateId(action.id),\n action: ensurePlanDefinitionActionKeys(action.action),\n }));\n}\n"],"names":[],"mappings":"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"}
@@ -4,4 +4,3 @@ export interface QuantityDisplayProps {
4
4
  value?: Quantity;
5
5
  }
6
6
  export declare function QuantityDisplay(props: QuantityDisplayProps): JSX.Element | null;
7
- export declare function formatQuantityString(quantity: Quantity | undefined): string;
@@ -0,0 +1,9 @@
1
+ import { formatQuantity } from '@medplum/core';
2
+ import React from 'react';
3
+
4
+ function QuantityDisplay(props) {
5
+ return React.createElement(React.Fragment, null, formatQuantity(props.value));
6
+ }
7
+
8
+ export { QuantityDisplay };
9
+ //# sourceMappingURL=QuantityDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuantityDisplay.js","sources":["../../../src/QuantityDisplay/QuantityDisplay.tsx"],"sourcesContent":["import { formatQuantity } from '@medplum/core';\nimport { Quantity } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface QuantityDisplayProps {\n value?: Quantity;\n}\n\nexport function QuantityDisplay(props: QuantityDisplayProps): JSX.Element | null {\n return <>{formatQuantity(props.value)}</>;\n}\n"],"names":[],"mappings":";;;AAQM,SAAU,eAAe,CAAC,KAA2B,EAAA;IACzD,OAAO,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAI,CAAC;AAC5C;;;;"}
@@ -12,8 +12,8 @@ function QuantityInput(props) {
12
12
  }
13
13
  return (React.createElement(Group, { spacing: "xs", grow: true, noWrap: true },
14
14
  React.createElement(NativeSelect, { style: { width: 80 }, "data-testid": props.name + '-comparator', defaultValue: value === null || value === void 0 ? void 0 : value.comparator, data: ['', '<', '<=', '>=', '>'], onChange: (e) => setValueWrapper(Object.assign(Object.assign({}, value), { comparator: e.currentTarget.value })) }),
15
- React.createElement(TextInput, { id: props.name, name: props.name, "data-testid": props.name, type: "number", step: "any", placeholder: "Value", defaultValue: (_a = value === null || value === void 0 ? void 0 : value.value) === null || _a === void 0 ? void 0 : _a.toString(), onChange: (e) => setValueWrapper(Object.assign(Object.assign({}, value), { value: tryParseNumber(e.currentTarget.value) })) }),
16
- React.createElement(TextInput, { placeholder: "Unit", defaultValue: value === null || value === void 0 ? void 0 : value.unit, onChange: (e) => setValueWrapper(Object.assign(Object.assign({}, value), { unit: e.currentTarget.value })) })));
15
+ React.createElement(TextInput, { id: props.name, name: props.name, "data-testid": props.name + '-value', type: "number", step: "any", placeholder: "Value", defaultValue: (_a = value === null || value === void 0 ? void 0 : value.value) === null || _a === void 0 ? void 0 : _a.toString(), onChange: (e) => setValueWrapper(Object.assign(Object.assign({}, value), { value: tryParseNumber(e.currentTarget.value) })) }),
16
+ React.createElement(TextInput, { placeholder: "Unit", "data-testid": props.name + '-unit', defaultValue: value === null || value === void 0 ? void 0 : value.unit, onChange: (e) => setValueWrapper(Object.assign(Object.assign({}, value), { unit: e.currentTarget.value })) })));
17
17
  }
18
18
  function tryParseNumber(str) {
19
19
  if (!str) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuantityInput.js","sources":["../../../src/QuantityInput/QuantityInput.tsx"],"sourcesContent":["import { Group, NativeSelect, TextInput } from '@mantine/core';\nimport { Quantity } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\n\nexport interface QuantityInputProps {\n name: string;\n defaultValue?: Quantity;\n onChange?: (value: Quantity) => void;\n}\n\nexport function QuantityInput(props: QuantityInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Quantity): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Group spacing=\"xs\" grow noWrap>\n <NativeSelect\n style={{ width: 80 }}\n data-testid={props.name + '-comparator'}\n defaultValue={value?.comparator}\n data={['', '<', '<=', '>=', '>']}\n onChange={(e) =>\n setValueWrapper({\n ...value,\n comparator: e.currentTarget.value as '<' | '<=' | '>=' | '>',\n })\n }\n />\n <TextInput\n id={props.name}\n name={props.name}\n data-testid={props.name + '-value'}\n type=\"number\"\n step=\"any\"\n placeholder=\"Value\"\n defaultValue={value?.value?.toString()}\n onChange={(e) =>\n setValueWrapper({\n ...value,\n value: tryParseNumber(e.currentTarget.value),\n })\n }\n />\n <TextInput\n placeholder=\"Unit\"\n data-testid={props.name + '-unit'}\n defaultValue={value?.unit}\n onChange={(e) =>\n setValueWrapper({\n ...value,\n unit: e.currentTarget.value,\n })\n }\n />\n </Group>\n );\n}\n\nfunction tryParseNumber(str: string): number | undefined {\n if (!str) {\n return undefined;\n }\n return parseFloat(str);\n}\n"],"names":[],"mappings":";;;AAUM,SAAU,aAAa,CAAC,KAAyB,EAAA;;AACrD,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAEvD,SAAS,eAAe,CAAC,QAAkB,EAAA;QACzC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;KACF;IAED,QACE,KAAC,CAAA,aAAA,CAAA,KAAK,EAAC,EAAA,OAAO,EAAC,IAAI,EAAC,IAAI,EAAA,IAAA,EAAC,MAAM,EAAA,IAAA,EAAA;QAC7B,KAAC,CAAA,aAAA,CAAA,YAAY,EACX,EAAA,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EACP,aAAA,EAAA,KAAK,CAAC,IAAI,GAAG,aAAa,EACvC,YAAY,EAAE,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,UAAU,EAC/B,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAChC,QAAQ,EAAE,CAAC,CAAC,KACV,eAAe,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACV,KAAK,CAAA,EAAA,EACR,UAAU,EAAE,CAAC,CAAC,aAAa,CAAC,KAAgC,EAAA,CAAA,CAC5D,EAEJ,CAAA;AACF,QAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACR,EAAE,EAAE,KAAK,CAAC,IAAI,EACd,IAAI,EAAE,KAAK,CAAC,IAAI,iBACH,KAAK,CAAC,IAAI,GAAG,QAAQ,EAClC,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,EACV,WAAW,EAAC,OAAO,EACnB,YAAY,EAAE,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,EACtC,QAAQ,EAAE,CAAC,CAAC,KACV,eAAe,CACV,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CACR,EAAA,EAAA,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAC5C,EAEJ,CAAA;QACF,KAAC,CAAA,aAAA,CAAA,SAAS,IACR,WAAW,EAAC,MAAM,EACL,aAAA,EAAA,KAAK,CAAC,IAAI,GAAG,OAAO,EACjC,YAAY,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,IAAI,EACzB,QAAQ,EAAE,CAAC,CAAC,KACV,eAAe,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACV,KAAK,CACR,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,IAC3B,EAEJ,CAAA,CACI,EACR;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAA;IACjC,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,SAAS,CAAC;AAClB,KAAA;AACD,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB;;;;"}
@@ -1,6 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { Questionnaire, Reference } from '@medplum/fhirtypes';
3
- import './QuestionnaireBuilder.css';
4
3
  export interface QuestionnaireBuilderProps {
5
4
  questionnaire: Questionnaire | Reference<Questionnaire>;
6
5
  onSubmit: (result: Questionnaire) => void;
@@ -1,15 +1,59 @@
1
- import { Button, TextInput, NativeSelect, Textarea } from '@mantine/core';
1
+ import { createStyles, Button, TextInput, Textarea, Title, NativeSelect } from '@mantine/core';
2
2
  import { globalSchema } from '@medplum/core';
3
3
  import React, { useState, useEffect, useRef } from 'react';
4
- import { Form } from './Form.js';
5
- import { useMedplum } from './MedplumProvider.js';
6
- import { QuestionnaireFormItem } from './QuestionnaireForm.js';
7
- import { QuestionnaireItemType, isChoiceQuestion } from './QuestionnaireUtils.js';
8
- import { getValueAndType } from './ResourcePropertyDisplay.js';
9
- import { ResourcePropertyInput } from './ResourcePropertyInput.js';
10
- import { useResource } from './useResource.js';
11
- import { killEvent } from './utils/dom.js';
4
+ import { Form } from '../Form/Form.js';
5
+ import { useMedplum } from '../MedplumProvider/MedplumProvider.js';
6
+ import { QuestionnaireFormItem } from '../QuestionnaireForm/QuestionnaireForm.js';
7
+ import { getValueAndType } from '../ResourcePropertyDisplay/ResourcePropertyDisplay.js';
8
+ import { ResourcePropertyInput } from '../ResourcePropertyInput/ResourcePropertyInput.js';
9
+ import { useResource } from '../useResource/useResource.js';
10
+ import { killEvent } from '../utils/dom.js';
11
+ import { QuestionnaireItemType, isChoiceQuestion } from '../utils/questionnaire.js';
12
12
 
13
+ const useStyles = createStyles((theme) => ({
14
+ section: {
15
+ position: 'relative',
16
+ margin: '4px 4px 8px 0',
17
+ padding: '6px 12px 16px 6px',
18
+ border: `1.5px solid ${theme.colors.gray[1]}`,
19
+ borderRadius: theme.radius.sm,
20
+ transition: 'all 0.1s',
21
+ },
22
+ hovering: {
23
+ border: `1.5px solid ${theme.colors.blue[5]}`,
24
+ },
25
+ editing: {
26
+ border: `1.5px solid ${theme.colors.gray[1]}`,
27
+ borderLeft: `4px solid ${theme.colors.blue[5]}`,
28
+ },
29
+ questionBody: {
30
+ maxWidth: 600,
31
+ },
32
+ topActions: {
33
+ position: 'absolute',
34
+ right: 4,
35
+ top: 1,
36
+ padding: 4,
37
+ color: theme.colors.gray[5],
38
+ fontSize: theme.fontSizes.xs,
39
+ },
40
+ bottomActions: {
41
+ position: 'absolute',
42
+ right: 4,
43
+ bottom: 0,
44
+ fontSize: theme.fontSizes.xs,
45
+ '& a': {
46
+ marginLeft: 8,
47
+ },
48
+ },
49
+ linkIdInput: {
50
+ width: 100,
51
+ marginBottom: 4,
52
+ },
53
+ typeSelect: {
54
+ width: 100,
55
+ },
56
+ }));
13
57
  function QuestionnaireBuilder(props) {
14
58
  const medplum = useMedplum();
15
59
  const defaultValue = useResource(props.questionnaire);
@@ -38,13 +82,14 @@ function QuestionnaireBuilder(props) {
38
82
  if (!schema || !value) {
39
83
  return null;
40
84
  }
41
- return (React.createElement("div", { className: "medplum-questionnaire-builder" },
85
+ return (React.createElement("div", null,
42
86
  React.createElement(Form, { testid: "questionnaire-form", onSubmit: () => props.onSubmit(value) },
43
87
  React.createElement(ItemBuilder, { item: value, selectedKey: selectedKey, setSelectedKey: setSelectedKey, hoverKey: hoverKey, setHoverKey: setHoverKey, onChange: setValue }),
44
88
  React.createElement(Button, { type: "submit" }, "Save"))));
45
89
  }
46
90
  function ItemBuilder(props) {
47
91
  var _a;
92
+ const { classes, cx } = useStyles();
48
93
  const resource = props.item;
49
94
  const item = props.item;
50
95
  const isResource = 'resourceType' in props.item;
@@ -78,39 +123,41 @@ function ItemBuilder(props) {
78
123
  function changeProperty(property, value) {
79
124
  props.onChange(Object.assign(Object.assign({}, itemRef.current), { [property]: value }));
80
125
  }
81
- const className = editing ? 'section editing' : hovering ? 'section hovering' : 'section';
126
+ const className = cx(classes.section, {
127
+ [classes.editing]: editing,
128
+ [classes.hovering]: hovering && !editing,
129
+ });
82
130
  return (React.createElement("div", { "data-testid": item.linkId, className: className, onClick: onClick, onMouseOver: onHover },
83
- editing ? (React.createElement(React.Fragment, null,
84
- isResource && (React.createElement("div", null,
85
- React.createElement(TextInput, { defaultValue: resource.title, onChange: (e) => changeProperty('title', e.currentTarget.value) }))),
86
- !isContainer && (React.createElement("div", null,
87
- React.createElement(NativeSelect, { defaultValue: item.type, onChange: (e) => changeProperty('type', e.currentTarget.value), data: [
88
- { value: 'display', label: 'Display' },
89
- { value: 'boolean', label: 'Boolean' },
90
- { value: 'decimal', label: 'Decimal' },
91
- { value: 'integer', label: 'Integer' },
92
- { value: 'date', label: 'Date' },
93
- { value: 'dateTime', label: 'Date/Time' },
94
- { value: 'time', label: 'Time' },
95
- { value: 'string', label: 'String' },
96
- { value: 'text', label: 'Text' },
97
- { value: 'url', label: 'URL' },
98
- { value: 'choice', label: 'Choice' },
99
- { value: 'open-choice', label: 'Open Choice' },
100
- { value: 'attachment', label: 'Attachment' },
101
- { value: 'reference', label: 'Reference' },
102
- { value: 'quantity', label: 'Quantity' },
103
- ] }))),
104
- !isResource && (React.createElement(Textarea, { style: { width: '95%', height: '100px', minHeight: '100px', margin: '8px 4px 4px 4px' }, defaultValue: item.text, onChange: (e) => changeProperty('text', e.currentTarget.value) })),
131
+ React.createElement("div", { className: classes.questionBody }, editing ? (React.createElement(React.Fragment, null,
132
+ isResource && (React.createElement(TextInput, { size: "xl", defaultValue: resource.title, onChange: (e) => changeProperty('title', e.currentTarget.value) })),
133
+ !isResource && (React.createElement(Textarea, { autosize: true, minRows: 2, defaultValue: item.text, onChange: (e) => changeProperty('text', e.currentTarget.value) })),
105
134
  isChoiceQuestion(item) && (React.createElement(AnswerBuilder, { options: item.answerOption, onChange: (newOptions) => changeProperty('answerOption', newOptions) })))) : (React.createElement(React.Fragment, null,
106
- resource.title && React.createElement("h1", null, resource.title),
107
- item.text && React.createElement("p", null, item.text),
108
- !isContainer && React.createElement(QuestionnaireFormItem, { item: item, answers: {}, onChange: () => undefined }))),
135
+ resource.title && React.createElement(Title, null, resource.title),
136
+ item.text && React.createElement("div", null, item.text),
137
+ !isContainer && React.createElement(QuestionnaireFormItem, { item: item, answers: {}, onChange: () => undefined })))),
109
138
  item.item &&
110
139
  item.item.map((i) => (React.createElement("div", { key: i.id },
111
140
  React.createElement(ItemBuilder, { item: i, selectedKey: props.selectedKey, setSelectedKey: props.setSelectedKey, hoverKey: props.hoverKey, setHoverKey: props.setHoverKey, onChange: changeItem, onRemove: () => removeItem(i) })))),
112
- !isContainer && (React.createElement("div", { className: "top-actions" }, editing ? (React.createElement(TextInput, { defaultValue: item.linkId, onChange: (e) => changeProperty('linkId', e.currentTarget.value) })) : (React.createElement("div", null, linkId)))),
113
- React.createElement("div", { className: "bottom-actions" },
141
+ !isContainer && (React.createElement("div", { className: classes.topActions }, editing ? (React.createElement(React.Fragment, null,
142
+ React.createElement(TextInput, { size: "xs", className: classes.linkIdInput, defaultValue: item.linkId, onChange: (e) => changeProperty('linkId', e.currentTarget.value) }),
143
+ !isContainer && (React.createElement(NativeSelect, { size: "xs", className: classes.typeSelect, defaultValue: item.type, onChange: (e) => changeProperty('type', e.currentTarget.value), data: [
144
+ { value: 'display', label: 'Display' },
145
+ { value: 'boolean', label: 'Boolean' },
146
+ { value: 'decimal', label: 'Decimal' },
147
+ { value: 'integer', label: 'Integer' },
148
+ { value: 'date', label: 'Date' },
149
+ { value: 'dateTime', label: 'Date/Time' },
150
+ { value: 'time', label: 'Time' },
151
+ { value: 'string', label: 'String' },
152
+ { value: 'text', label: 'Text' },
153
+ { value: 'url', label: 'URL' },
154
+ { value: 'choice', label: 'Choice' },
155
+ { value: 'open-choice', label: 'Open Choice' },
156
+ { value: 'attachment', label: 'Attachment' },
157
+ { value: 'reference', label: 'Reference' },
158
+ { value: 'quantity', label: 'Quantity' },
159
+ ] })))) : (React.createElement("div", null, linkId)))),
160
+ React.createElement("div", { className: classes.bottomActions },
114
161
  isContainer && (React.createElement(React.Fragment, null,
115
162
  React.createElement("a", { href: "#", onClick: (e) => {
116
163
  e.preventDefault();
@@ -130,7 +177,7 @@ function ItemBuilder(props) {
130
177
  text: 'Group',
131
178
  });
132
179
  } }, "Add group"))),
133
- !isResource && (React.createElement("a", { href: "#", onClick: (e) => {
180
+ editing && !isResource && (React.createElement("a", { href: "#", onClick: (e) => {
134
181
  e.preventDefault();
135
182
  if (props.onRemove) {
136
183
  props.onRemove();