@medplum/react 2.0.24 → 2.0.26

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 (333) hide show
  1. package/dist/cjs/index.cjs +11 -7714
  2. package/dist/cjs/index.cjs.map +7 -1
  3. package/dist/esm/index.mjs +67 -92
  4. package/dist/esm/index.mjs.map +7 -1
  5. package/dist/types/auth/NewUserForm.d.ts +1 -0
  6. package/dist/types/auth/RegisterForm.d.ts +1 -0
  7. package/package.json +20 -20
  8. package/dist/cjs/index.min.cjs +0 -1
  9. package/dist/esm/AddressDisplay/AddressDisplay.mjs +0 -13
  10. package/dist/esm/AddressDisplay/AddressDisplay.mjs.map +0 -1
  11. package/dist/esm/AddressInput/AddressInput.mjs +0 -57
  12. package/dist/esm/AddressInput/AddressInput.mjs.map +0 -1
  13. package/dist/esm/AnnotationInput/AnnotationInput.mjs +0 -28
  14. package/dist/esm/AnnotationInput/AnnotationInput.mjs.map +0 -1
  15. package/dist/esm/AppShell/AppShell.mjs +0 -37
  16. package/dist/esm/AppShell/AppShell.mjs.map +0 -1
  17. package/dist/esm/AppShell/Header.mjs +0 -88
  18. package/dist/esm/AppShell/Header.mjs.map +0 -1
  19. package/dist/esm/AppShell/HeaderSearchInput.mjs +0 -230
  20. package/dist/esm/AppShell/HeaderSearchInput.mjs.map +0 -1
  21. package/dist/esm/AppShell/Navbar.mjs +0 -169
  22. package/dist/esm/AppShell/Navbar.mjs.map +0 -1
  23. package/dist/esm/AsyncAutocomplete/AsyncAutocomplete.mjs +0 -121
  24. package/dist/esm/AsyncAutocomplete/AsyncAutocomplete.mjs.map +0 -1
  25. package/dist/esm/AttachmentArrayDisplay/AttachmentArrayDisplay.mjs +0 -10
  26. package/dist/esm/AttachmentArrayDisplay/AttachmentArrayDisplay.mjs.map +0 -1
  27. package/dist/esm/AttachmentArrayInput/AttachmentArrayInput.mjs +0 -45
  28. package/dist/esm/AttachmentArrayInput/AttachmentArrayInput.mjs.map +0 -1
  29. package/dist/esm/AttachmentButton/AttachmentButton.mjs +0 -55
  30. package/dist/esm/AttachmentButton/AttachmentButton.mjs.map +0 -1
  31. package/dist/esm/AttachmentDisplay/AttachmentDisplay.mjs +0 -21
  32. package/dist/esm/AttachmentDisplay/AttachmentDisplay.mjs.map +0 -1
  33. package/dist/esm/AttachmentInput/AttachmentInput.mjs +0 -27
  34. package/dist/esm/AttachmentInput/AttachmentInput.mjs.map +0 -1
  35. package/dist/esm/BackboneElementDisplay/BackboneElementDisplay.mjs +0 -49
  36. package/dist/esm/BackboneElementDisplay/BackboneElementDisplay.mjs.map +0 -1
  37. package/dist/esm/BackboneElementInput/BackboneElementInput.mjs +0 -52
  38. package/dist/esm/BackboneElementInput/BackboneElementInput.mjs.map +0 -1
  39. package/dist/esm/BookmarkDialog/BookmarkDialog.mjs +0 -47
  40. package/dist/esm/BookmarkDialog/BookmarkDialog.mjs.map +0 -1
  41. package/dist/esm/CalendarInput/CalendarInput.mjs +0 -133
  42. package/dist/esm/CalendarInput/CalendarInput.mjs.map +0 -1
  43. package/dist/esm/CheckboxFormSection/CheckboxFormSection.mjs +0 -12
  44. package/dist/esm/CheckboxFormSection/CheckboxFormSection.mjs.map +0 -1
  45. package/dist/esm/CodeInput/CodeInput.mjs +0 -24
  46. package/dist/esm/CodeInput/CodeInput.mjs.map +0 -1
  47. package/dist/esm/CodeableConceptDisplay/CodeableConceptDisplay.mjs +0 -9
  48. package/dist/esm/CodeableConceptDisplay/CodeableConceptDisplay.mjs.map +0 -1
  49. package/dist/esm/CodeableConceptInput/CodeableConceptInput.mjs +0 -36
  50. package/dist/esm/CodeableConceptInput/CodeableConceptInput.mjs.map +0 -1
  51. package/dist/esm/CodingDisplay/CodingDisplay.mjs +0 -9
  52. package/dist/esm/CodingDisplay/CodingDisplay.mjs.map +0 -1
  53. package/dist/esm/CodingInput/CodingInput.mjs +0 -32
  54. package/dist/esm/CodingInput/CodingInput.mjs.map +0 -1
  55. package/dist/esm/ContactDetailDisplay/ContactDetailDisplay.mjs +0 -16
  56. package/dist/esm/ContactDetailDisplay/ContactDetailDisplay.mjs.map +0 -1
  57. package/dist/esm/ContactDetailInput/ContactDetailInput.mjs +0 -35
  58. package/dist/esm/ContactDetailInput/ContactDetailInput.mjs.map +0 -1
  59. package/dist/esm/ContactPointDisplay/ContactPointDisplay.mjs +0 -29
  60. package/dist/esm/ContactPointDisplay/ContactPointDisplay.mjs.map +0 -1
  61. package/dist/esm/ContactPointInput/ContactPointInput.mjs +0 -45
  62. package/dist/esm/ContactPointInput/ContactPointInput.mjs.map +0 -1
  63. package/dist/esm/Container/Container.mjs +0 -19
  64. package/dist/esm/Container/Container.mjs.map +0 -1
  65. package/dist/esm/DateTimeInput/DateTimeInput.mjs +0 -71
  66. package/dist/esm/DateTimeInput/DateTimeInput.mjs.map +0 -1
  67. package/dist/esm/DefaultResourceTimeline/DefaultResourceTimeline.mjs +0 -16
  68. package/dist/esm/DefaultResourceTimeline/DefaultResourceTimeline.mjs.map +0 -1
  69. package/dist/esm/DescriptionList/DescriptionList.mjs +0 -35
  70. package/dist/esm/DescriptionList/DescriptionList.mjs.map +0 -1
  71. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.mjs +0 -172
  72. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.mjs.map +0 -1
  73. package/dist/esm/Document/Document.mjs +0 -12
  74. package/dist/esm/Document/Document.mjs.map +0 -1
  75. package/dist/esm/EncounterTimeline/EncounterTimeline.mjs +0 -32
  76. package/dist/esm/EncounterTimeline/EncounterTimeline.mjs.map +0 -1
  77. package/dist/esm/ErrorBoundary/ErrorBoundary.mjs +0 -30
  78. package/dist/esm/ErrorBoundary/ErrorBoundary.mjs.map +0 -1
  79. package/dist/esm/ExtensionInput/ExtensionInput.mjs +0 -14
  80. package/dist/esm/ExtensionInput/ExtensionInput.mjs.map +0 -1
  81. package/dist/esm/FhirPathDisplay/FhirPathDisplay.mjs +0 -23
  82. package/dist/esm/FhirPathDisplay/FhirPathDisplay.mjs.map +0 -1
  83. package/dist/esm/FhirPathTable/FhirPathTable.mjs +0 -122
  84. package/dist/esm/FhirPathTable/FhirPathTable.mjs.map +0 -1
  85. package/dist/esm/Form/Form.mjs +0 -15
  86. package/dist/esm/Form/Form.mjs.map +0 -1
  87. package/dist/esm/Form/FormUtils.mjs +0 -50
  88. package/dist/esm/Form/FormUtils.mjs.map +0 -1
  89. package/dist/esm/FormSection/FormSection.mjs +0 -10
  90. package/dist/esm/FormSection/FormSection.mjs.map +0 -1
  91. package/dist/esm/GoogleButton/GoogleButton.mjs +0 -49
  92. package/dist/esm/GoogleButton/GoogleButton.mjs.map +0 -1
  93. package/dist/esm/HumanNameDisplay/HumanNameDisplay.mjs +0 -13
  94. package/dist/esm/HumanNameDisplay/HumanNameDisplay.mjs.map +0 -1
  95. package/dist/esm/HumanNameInput/HumanNameInput.mjs +0 -50
  96. package/dist/esm/HumanNameInput/HumanNameInput.mjs.map +0 -1
  97. package/dist/esm/IdentifierDisplay/IdentifierDisplay.mjs +0 -11
  98. package/dist/esm/IdentifierDisplay/IdentifierDisplay.mjs.map +0 -1
  99. package/dist/esm/IdentifierInput/IdentifierInput.mjs +0 -18
  100. package/dist/esm/IdentifierInput/IdentifierInput.mjs.map +0 -1
  101. package/dist/esm/Loading/Loading.mjs +0 -10
  102. package/dist/esm/Loading/Loading.mjs.map +0 -1
  103. package/dist/esm/Logo/Logo.mjs +0 -14
  104. package/dist/esm/Logo/Logo.mjs.map +0 -1
  105. package/dist/esm/MedplumLink/MedplumLink.mjs +0 -52
  106. package/dist/esm/MedplumLink/MedplumLink.mjs.map +0 -1
  107. package/dist/esm/MedplumProvider/MedplumProvider.mjs +0 -84
  108. package/dist/esm/MedplumProvider/MedplumProvider.mjs.map +0 -1
  109. package/dist/esm/MoneyDisplay/MoneyDisplay.mjs +0 -9
  110. package/dist/esm/MoneyDisplay/MoneyDisplay.mjs.map +0 -1
  111. package/dist/esm/MoneyInput/MoneyInput.mjs +0 -53
  112. package/dist/esm/MoneyInput/MoneyInput.mjs.map +0 -1
  113. package/dist/esm/NoteDisplay/NoteDisplay.mjs +0 -18
  114. package/dist/esm/NoteDisplay/NoteDisplay.mjs.map +0 -1
  115. package/dist/esm/OperationOutcomeAlert/OperationOutcomeAlert.mjs +0 -14
  116. package/dist/esm/OperationOutcomeAlert/OperationOutcomeAlert.mjs.map +0 -1
  117. package/dist/esm/Panel/Panel.mjs +0 -34
  118. package/dist/esm/Panel/Panel.mjs.map +0 -1
  119. package/dist/esm/PatientTimeline/PatientTimeline.mjs +0 -38
  120. package/dist/esm/PatientTimeline/PatientTimeline.mjs.map +0 -1
  121. package/dist/esm/PeriodInput/PeriodInput.mjs +0 -19
  122. package/dist/esm/PeriodInput/PeriodInput.mjs.map +0 -1
  123. package/dist/esm/PlanDefinitionBuilder/PlanDefinitionBuilder.mjs +0 -258
  124. package/dist/esm/PlanDefinitionBuilder/PlanDefinitionBuilder.mjs.map +0 -1
  125. package/dist/esm/QuantityDisplay/QuantityDisplay.mjs +0 -9
  126. package/dist/esm/QuantityDisplay/QuantityDisplay.mjs.map +0 -1
  127. package/dist/esm/QuantityInput/QuantityInput.mjs +0 -40
  128. package/dist/esm/QuantityInput/QuantityInput.mjs.map +0 -1
  129. package/dist/esm/QuestionnaireBuilder/QuestionnaireBuilder.mjs +0 -288
  130. package/dist/esm/QuestionnaireBuilder/QuestionnaireBuilder.mjs.map +0 -1
  131. package/dist/esm/QuestionnaireForm/QuestionnaireForm.mjs +0 -276
  132. package/dist/esm/QuestionnaireForm/QuestionnaireForm.mjs.map +0 -1
  133. package/dist/esm/RangeDisplay/RangeDisplay.mjs +0 -9
  134. package/dist/esm/RangeDisplay/RangeDisplay.mjs.map +0 -1
  135. package/dist/esm/RangeInput/RangeInput.mjs +0 -31
  136. package/dist/esm/RangeInput/RangeInput.mjs.map +0 -1
  137. package/dist/esm/RatioDisplay/RatioDisplay.mjs +0 -16
  138. package/dist/esm/RatioDisplay/RatioDisplay.mjs.map +0 -1
  139. package/dist/esm/RatioInput/RatioInput.mjs +0 -31
  140. package/dist/esm/RatioInput/RatioInput.mjs.map +0 -1
  141. package/dist/esm/ReferenceDisplay/ReferenceDisplay.mjs +0 -21
  142. package/dist/esm/ReferenceDisplay/ReferenceDisplay.mjs.map +0 -1
  143. package/dist/esm/ReferenceInput/ReferenceInput.mjs +0 -45
  144. package/dist/esm/ReferenceInput/ReferenceInput.mjs.map +0 -1
  145. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.mjs +0 -286
  146. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.mjs.map +0 -1
  147. package/dist/esm/RequestGroupDisplay/RequestGroupDisplay.mjs +0 -72
  148. package/dist/esm/RequestGroupDisplay/RequestGroupDisplay.mjs.map +0 -1
  149. package/dist/esm/ResourceArrayDisplay/ResourceArrayDisplay.mjs +0 -13
  150. package/dist/esm/ResourceArrayDisplay/ResourceArrayDisplay.mjs.map +0 -1
  151. package/dist/esm/ResourceArrayInput/ResourceArrayInput.mjs +0 -51
  152. package/dist/esm/ResourceArrayInput/ResourceArrayInput.mjs.map +0 -1
  153. package/dist/esm/ResourceAvatar/ResourceAvatar.mjs +0 -23
  154. package/dist/esm/ResourceAvatar/ResourceAvatar.mjs.map +0 -1
  155. package/dist/esm/ResourceBadge/ResourceBadge.mjs +0 -13
  156. package/dist/esm/ResourceBadge/ResourceBadge.mjs.map +0 -1
  157. package/dist/esm/ResourceBlame/ResourceBlame.mjs +0 -113
  158. package/dist/esm/ResourceBlame/ResourceBlame.mjs.map +0 -1
  159. package/dist/esm/ResourceDiff/ResourceDiff.mjs +0 -39
  160. package/dist/esm/ResourceDiff/ResourceDiff.mjs.map +0 -1
  161. package/dist/esm/ResourceDiffTable/ResourceDiffTable.mjs +0 -80
  162. package/dist/esm/ResourceDiffTable/ResourceDiffTable.mjs.map +0 -1
  163. package/dist/esm/ResourceForm/ResourceForm.mjs +0 -56
  164. package/dist/esm/ResourceForm/ResourceForm.mjs.map +0 -1
  165. package/dist/esm/ResourceHistoryTable/ResourceHistoryTable.mjs +0 -50
  166. package/dist/esm/ResourceHistoryTable/ResourceHistoryTable.mjs.map +0 -1
  167. package/dist/esm/ResourceInput/ResourceInput.mjs +0 -70
  168. package/dist/esm/ResourceInput/ResourceInput.mjs.map +0 -1
  169. package/dist/esm/ResourceName/ResourceName.mjs +0 -25
  170. package/dist/esm/ResourceName/ResourceName.mjs.map +0 -1
  171. package/dist/esm/ResourcePropertyDisplay/ResourcePropertyDisplay.mjs +0 -119
  172. package/dist/esm/ResourcePropertyDisplay/ResourcePropertyDisplay.mjs.map +0 -1
  173. package/dist/esm/ResourcePropertyInput/ResourcePropertyInput.mjs +0 -171
  174. package/dist/esm/ResourcePropertyInput/ResourcePropertyInput.mjs.map +0 -1
  175. package/dist/esm/ResourceTable/ResourceTable.mjs +0 -25
  176. package/dist/esm/ResourceTable/ResourceTable.mjs.map +0 -1
  177. package/dist/esm/ResourceTimeline/ResourceTimeline.mjs +0 -309
  178. package/dist/esm/ResourceTimeline/ResourceTimeline.mjs.map +0 -1
  179. package/dist/esm/Scheduler/Scheduler.mjs +0 -98
  180. package/dist/esm/Scheduler/Scheduler.mjs.map +0 -1
  181. package/dist/esm/SearchControl/SearchControl.mjs +0 -337
  182. package/dist/esm/SearchControl/SearchControl.mjs.map +0 -1
  183. package/dist/esm/SearchControl/SearchControlField.mjs +0 -95
  184. package/dist/esm/SearchControl/SearchControlField.mjs.map +0 -1
  185. package/dist/esm/SearchControl/SearchUtils.mjs +0 -497
  186. package/dist/esm/SearchControl/SearchUtils.mjs.map +0 -1
  187. package/dist/esm/SearchExportDialog/SearchExportDialog.mjs +0 -19
  188. package/dist/esm/SearchExportDialog/SearchExportDialog.mjs.map +0 -1
  189. package/dist/esm/SearchFieldEditor/SearchFieldEditor.mjs +0 -196
  190. package/dist/esm/SearchFieldEditor/SearchFieldEditor.mjs.map +0 -1
  191. package/dist/esm/SearchFilterEditor/SearchFilterEditor.mjs +0 -97
  192. package/dist/esm/SearchFilterEditor/SearchFilterEditor.mjs.map +0 -1
  193. package/dist/esm/SearchFilterValueDialog/SearchFilterValueDialog.mjs +0 -22
  194. package/dist/esm/SearchFilterValueDialog/SearchFilterValueDialog.mjs.map +0 -1
  195. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.mjs +0 -22
  196. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.mjs.map +0 -1
  197. package/dist/esm/SearchFilterValueInput/SearchFilterValueInput.mjs +0 -57
  198. package/dist/esm/SearchFilterValueInput/SearchFilterValueInput.mjs.map +0 -1
  199. package/dist/esm/SearchPopupMenu/SearchPopupMenu.mjs +0 -134
  200. package/dist/esm/SearchPopupMenu/SearchPopupMenu.mjs.map +0 -1
  201. package/dist/esm/ServiceRequestTimeline/ServiceRequestTimeline.mjs +0 -36
  202. package/dist/esm/ServiceRequestTimeline/ServiceRequestTimeline.mjs.map +0 -1
  203. package/dist/esm/StatusBadge/StatusBadge.mjs +0 -63
  204. package/dist/esm/StatusBadge/StatusBadge.mjs.map +0 -1
  205. package/dist/esm/Timeline/Timeline.mjs +0 -40
  206. package/dist/esm/Timeline/Timeline.mjs.map +0 -1
  207. package/dist/esm/TimingInput/TimingInput.mjs +0 -76
  208. package/dist/esm/TimingInput/TimingInput.mjs.map +0 -1
  209. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.mjs +0 -58
  210. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.mjs.map +0 -1
  211. package/dist/esm/auth/AuthenticationForm.mjs +0 -89
  212. package/dist/esm/auth/AuthenticationForm.mjs.map +0 -1
  213. package/dist/esm/auth/ChooseProfileForm.mjs +0 -33
  214. package/dist/esm/auth/ChooseProfileForm.mjs.map +0 -1
  215. package/dist/esm/auth/ChooseScopeForm.mjs +0 -28
  216. package/dist/esm/auth/ChooseScopeForm.mjs.map +0 -1
  217. package/dist/esm/auth/MfaForm.mjs +0 -34
  218. package/dist/esm/auth/MfaForm.mjs.map +0 -1
  219. package/dist/esm/auth/NewProjectForm.mjs +0 -39
  220. package/dist/esm/auth/NewProjectForm.mjs.map +0 -1
  221. package/dist/esm/auth/NewUserForm.mjs +0 -84
  222. package/dist/esm/auth/NewUserForm.mjs.map +0 -1
  223. package/dist/esm/auth/RegisterForm.mjs +0 -39
  224. package/dist/esm/auth/RegisterForm.mjs.map +0 -1
  225. package/dist/esm/auth/SignInForm.mjs +0 -100
  226. package/dist/esm/auth/SignInForm.mjs.map +0 -1
  227. package/dist/esm/constants.mjs +0 -12
  228. package/dist/esm/constants.mjs.map +0 -1
  229. package/dist/esm/index.min.mjs +0 -1
  230. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs +0 -70
  231. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs.map +0 -1
  232. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.mjs +0 -18
  233. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.mjs.map +0 -1
  234. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustmentsHorizontal.mjs +0 -25
  235. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustmentsHorizontal.mjs.map +0 -1
  236. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertCircle.mjs +0 -15
  237. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertCircle.mjs.map +0 -1
  238. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBleach.mjs +0 -19
  239. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBleach.mjs.map +0 -1
  240. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBleachOff.mjs +0 -20
  241. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBleachOff.mjs.map +0 -1
  242. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBoxMultiple.mjs +0 -26
  243. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBoxMultiple.mjs.map +0 -1
  244. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBracketsContain.mjs +0 -17
  245. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBracketsContain.mjs.map +0 -1
  246. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBucket.mjs +0 -20
  247. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBucket.mjs.map +0 -1
  248. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBucketOff.mjs +0 -27
  249. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBucketOff.mjs.map +0 -1
  250. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCalendar.mjs +0 -24
  251. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCalendar.mjs.map +0 -1
  252. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.mjs +0 -13
  253. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.mjs.map +0 -1
  254. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.mjs +0 -20
  255. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.mjs.map +0 -1
  256. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.mjs +0 -13
  257. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.mjs.map +0 -1
  258. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleMinus.mjs +0 -14
  259. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleMinus.mjs.map +0 -1
  260. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCirclePlus.mjs +0 -15
  261. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCirclePlus.mjs.map +0 -1
  262. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCloudUpload.mjs +0 -21
  263. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCloudUpload.mjs.map +0 -1
  264. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconColumns.mjs +0 -20
  265. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconColumns.mjs.map +0 -1
  266. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCurrencyDollar.mjs +0 -20
  267. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCurrencyDollar.mjs.map +0 -1
  268. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconDots.mjs +0 -15
  269. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconDots.mjs.map +0 -1
  270. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEdit.mjs +0 -27
  271. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEdit.mjs.map +0 -1
  272. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEqual.mjs +0 -14
  273. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEqual.mjs.map +0 -1
  274. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEqualNot.mjs +0 -15
  275. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEqualNot.mjs.map +0 -1
  276. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFileAlert.mjs +0 -22
  277. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFileAlert.mjs.map +0 -1
  278. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFilePlus.mjs +0 -22
  279. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFilePlus.mjs.map +0 -1
  280. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFilter.mjs +0 -19
  281. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFilter.mjs.map +0 -1
  282. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconListDetails.mjs +0 -30
  283. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconListDetails.mjs.map +0 -1
  284. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconLogout.mjs +0 -21
  285. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconLogout.mjs.map +0 -1
  286. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMathGreater.mjs +0 -13
  287. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMathGreater.mjs.map +0 -1
  288. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMathLower.mjs +0 -13
  289. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMathLower.mjs.map +0 -1
  290. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMessage.mjs +0 -21
  291. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMessage.mjs.map +0 -1
  292. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPin.mjs +0 -21
  293. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPin.mjs.map +0 -1
  294. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPinnedOff.mjs +0 -22
  295. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPinnedOff.mjs.map +0 -1
  296. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPlus.mjs +0 -14
  297. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPlus.mjs.map +0 -1
  298. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs +0 -14
  299. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs.map +0 -1
  300. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSettings.mjs +0 -20
  301. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSettings.mjs.map +0 -1
  302. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSortAscending.mjs +0 -17
  303. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSortAscending.mjs.map +0 -1
  304. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSortDescending.mjs +0 -17
  305. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSortDescending.mjs.map +0 -1
  306. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSquare.mjs +0 -19
  307. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSquare.mjs.map +0 -1
  308. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSwitchHorizontal.mjs +0 -20
  309. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSwitchHorizontal.mjs.map +0 -1
  310. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconTableExport.mjs +0 -23
  311. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconTableExport.mjs.map +0 -1
  312. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.mjs +0 -20
  313. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.mjs.map +0 -1
  314. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconX.mjs +0 -14
  315. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconX.mjs.map +0 -1
  316. package/dist/esm/useResource/useResource.mjs +0 -68
  317. package/dist/esm/useResource/useResource.mjs.map +0 -1
  318. package/dist/esm/utils/blame.mjs +0 -72
  319. package/dist/esm/utils/blame.mjs.map +0 -1
  320. package/dist/esm/utils/date.mjs +0 -56
  321. package/dist/esm/utils/date.mjs.map +0 -1
  322. package/dist/esm/utils/diff.mjs +0 -118
  323. package/dist/esm/utils/diff.mjs.map +0 -1
  324. package/dist/esm/utils/dom.mjs +0 -34
  325. package/dist/esm/utils/dom.mjs.map +0 -1
  326. package/dist/esm/utils/outcomes.mjs +0 -30
  327. package/dist/esm/utils/outcomes.mjs.map +0 -1
  328. package/dist/esm/utils/questionnaire.mjs +0 -26
  329. package/dist/esm/utils/questionnaire.mjs.map +0 -1
  330. package/dist/esm/utils/recaptcha.mjs +0 -32
  331. package/dist/esm/utils/recaptcha.mjs.map +0 -1
  332. package/dist/esm/utils/script.mjs +0 -16
  333. package/dist/esm/utils/script.mjs.map +0 -1
@@ -1,134 +0,0 @@
1
- import { Menu } from '@mantine/core';
2
- import { Operator } from '@medplum/core';
3
- import React from 'react';
4
- import { buildFieldNameString, addTomorrowFilter, addTodayFilter, addYesterdayFilter, addNextMonthFilter, addThisMonthFilter, addLastMonthFilter, addYearToDateFilter, addMissingFilter, setSort, clearFiltersOnField } from '../SearchControl/SearchUtils.mjs';
5
- import IconSortAscending from '../node_modules/@tabler/icons-react/dist/esm/icons/IconSortAscending.mjs';
6
- import IconSortDescending from '../node_modules/@tabler/icons-react/dist/esm/icons/IconSortDescending.mjs';
7
- import IconEqual from '../node_modules/@tabler/icons-react/dist/esm/icons/IconEqual.mjs';
8
- import IconEqualNot from '../node_modules/@tabler/icons-react/dist/esm/icons/IconEqualNot.mjs';
9
- import IconMathLower from '../node_modules/@tabler/icons-react/dist/esm/icons/IconMathLower.mjs';
10
- import IconMathGreater from '../node_modules/@tabler/icons-react/dist/esm/icons/IconMathGreater.mjs';
11
- import IconBracketsContain from '../node_modules/@tabler/icons-react/dist/esm/icons/IconBracketsContain.mjs';
12
- import IconCalendar from '../node_modules/@tabler/icons-react/dist/esm/icons/IconCalendar.mjs';
13
- import IconSettings from '../node_modules/@tabler/icons-react/dist/esm/icons/IconSettings.mjs';
14
- import IconBucket from '../node_modules/@tabler/icons-react/dist/esm/icons/IconBucket.mjs';
15
- import IconBucketOff from '../node_modules/@tabler/icons-react/dist/esm/icons/IconBucketOff.mjs';
16
- import IconBleach from '../node_modules/@tabler/icons-react/dist/esm/icons/IconBleach.mjs';
17
- import IconBleachOff from '../node_modules/@tabler/icons-react/dist/esm/icons/IconBleachOff.mjs';
18
- import IconX from '../node_modules/@tabler/icons-react/dist/esm/icons/IconX.mjs';
19
-
20
- function SearchPopupMenu(props) {
21
- if (!props.searchParams) {
22
- return null;
23
- }
24
- function onSort(searchParam, desc) {
25
- onChange(setSort(props.search, searchParam.code, desc));
26
- }
27
- function onClear(searchParam) {
28
- onChange(clearFiltersOnField(props.search, searchParam.code));
29
- }
30
- function onPrompt(searchParam, operator) {
31
- props.onPrompt(searchParam, { code: searchParam.code, operator, value: '' });
32
- }
33
- function onChange(definition) {
34
- props.onChange(definition);
35
- }
36
- // If there is only one search parameter, then show it directly
37
- if (props.searchParams.length === 1) {
38
- return (React.createElement(SearchParameterSubMenu, { search: props.search, searchParam: props.searchParams[0], onSort: onSort, onPrompt: onPrompt, onChange: onChange, onClear: onClear }));
39
- }
40
- // Otherwise, show a menu, with each search parameter as a sub menu
41
- return (React.createElement(Menu.Dropdown, null, props.searchParams.map((searchParam) => (React.createElement(Menu.Item, { key: searchParam.code }, buildFieldNameString(searchParam.code))))));
42
- }
43
- function SearchParameterSubMenu(props) {
44
- switch (props.searchParam.type) {
45
- case 'date':
46
- return React.createElement(DateFilterSubMenu, { ...props });
47
- case 'number':
48
- case 'quantity':
49
- return React.createElement(NumericFilterSubMenu, { ...props });
50
- case 'reference':
51
- return React.createElement(ReferenceFilterSubMenu, { ...props });
52
- case 'string':
53
- case 'token':
54
- case 'uri':
55
- return React.createElement(TextFilterSubMenu, { ...props });
56
- default:
57
- return React.createElement(React.Fragment, null,
58
- "Unknown search param type: ",
59
- props.searchParam.type);
60
- }
61
- }
62
- function DateFilterSubMenu(props) {
63
- const { searchParam } = props;
64
- const code = searchParam.code;
65
- return (React.createElement(Menu.Dropdown, null,
66
- React.createElement(Menu.Item, { icon: React.createElement(IconSortAscending, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort Oldest to Newest"),
67
- React.createElement(Menu.Item, { icon: React.createElement(IconSortDescending, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Newest to Oldest"),
68
- React.createElement(Menu.Divider, null),
69
- React.createElement(Menu.Item, { icon: React.createElement(IconEqual, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
70
- React.createElement(Menu.Item, { icon: React.createElement(IconEqualNot, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT_EQUALS) }, "Does not equal..."),
71
- React.createElement(Menu.Divider, null),
72
- React.createElement(Menu.Item, { icon: React.createElement(IconMathLower, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.ENDS_BEFORE) }, "Before..."),
73
- React.createElement(Menu.Item, { icon: React.createElement(IconMathGreater, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.STARTS_AFTER) }, "After..."),
74
- React.createElement(Menu.Item, { icon: React.createElement(IconBracketsContain, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Between..."),
75
- React.createElement(Menu.Divider, null),
76
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addTomorrowFilter(props.search, code)) }, "Tomorrow"),
77
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addTodayFilter(props.search, code)) }, "Today"),
78
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addYesterdayFilter(props.search, code)) }, "Yesterday"),
79
- React.createElement(Menu.Divider, null),
80
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addNextMonthFilter(props.search, code)) }, "Next Month"),
81
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addThisMonthFilter(props.search, code)) }, "This Month"),
82
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addLastMonthFilter(props.search, code)) }, "Last Month"),
83
- React.createElement(Menu.Divider, null),
84
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addYearToDateFilter(props.search, code)) }, "Year to date"),
85
- React.createElement(CommonMenuItems, { ...props })));
86
- }
87
- function NumericFilterSubMenu(props) {
88
- const { searchParam } = props;
89
- return (React.createElement(Menu.Dropdown, null,
90
- React.createElement(Menu.Item, { icon: React.createElement(IconSortAscending, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort Smallest to Largest"),
91
- React.createElement(Menu.Item, { icon: React.createElement(IconSortDescending, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Largest to Smallest"),
92
- React.createElement(Menu.Divider, null),
93
- React.createElement(Menu.Item, { icon: React.createElement(IconEqual, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
94
- React.createElement(Menu.Item, { icon: React.createElement(IconEqualNot, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT_EQUALS) }, "Does not equal..."),
95
- React.createElement(Menu.Divider, null),
96
- React.createElement(Menu.Item, { icon: React.createElement(IconMathGreater, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.GREATER_THAN) }, "Greater than..."),
97
- React.createElement(Menu.Item, { icon: React.createElement(IconSettings, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.GREATER_THAN_OR_EQUALS) }, "Greater than or equal to..."),
98
- React.createElement(Menu.Item, { icon: React.createElement(IconMathLower, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.LESS_THAN) }, "Less than..."),
99
- React.createElement(Menu.Item, { icon: React.createElement(IconSettings, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.LESS_THAN_OR_EQUALS) }, "Less than or equal to..."),
100
- React.createElement(CommonMenuItems, { ...props })));
101
- }
102
- function ReferenceFilterSubMenu(props) {
103
- const { searchParam } = props;
104
- return (React.createElement(Menu.Dropdown, null,
105
- React.createElement(Menu.Item, { icon: React.createElement(IconEqual, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
106
- React.createElement(Menu.Item, { icon: React.createElement(IconEqualNot, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT) }, "Does not equal..."),
107
- React.createElement(CommonMenuItems, { ...props })));
108
- }
109
- function TextFilterSubMenu(props) {
110
- const { searchParam } = props;
111
- return (React.createElement(Menu.Dropdown, null,
112
- React.createElement(Menu.Item, { icon: React.createElement(IconSortAscending, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort A to Z"),
113
- React.createElement(Menu.Item, { icon: React.createElement(IconSortDescending, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Z to A"),
114
- React.createElement(Menu.Divider, null),
115
- React.createElement(Menu.Item, { icon: React.createElement(IconEqual, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
116
- React.createElement(Menu.Item, { icon: React.createElement(IconEqualNot, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT) }, "Does not equal..."),
117
- React.createElement(Menu.Divider, null),
118
- React.createElement(Menu.Item, { icon: React.createElement(IconBucket, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.CONTAINS) }, "Contains..."),
119
- React.createElement(Menu.Item, { icon: React.createElement(IconBucketOff, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Does not contain..."),
120
- React.createElement(CommonMenuItems, { ...props })));
121
- }
122
- function CommonMenuItems(props) {
123
- const { searchParam } = props;
124
- const code = searchParam.code;
125
- return (React.createElement(React.Fragment, null,
126
- React.createElement(Menu.Divider, null),
127
- React.createElement(Menu.Item, { icon: React.createElement(IconBleach, { size: 14 }), onClick: () => props.onChange(addMissingFilter(props.search, code)) }, "Missing"),
128
- React.createElement(Menu.Item, { icon: React.createElement(IconBleachOff, { size: 14 }), onClick: () => props.onChange(addMissingFilter(props.search, code, false)) }, "Not missing"),
129
- React.createElement(Menu.Divider, null),
130
- React.createElement(Menu.Item, { icon: React.createElement(IconX, { size: 14 }), onClick: () => props.onClear(searchParam) }, "Clear filters")));
131
- }
132
-
133
- export { SearchPopupMenu };
134
- //# sourceMappingURL=SearchPopupMenu.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchPopupMenu.mjs","sources":["../../../src/SearchPopupMenu/SearchPopupMenu.tsx"],"sourcesContent":["import { Menu } from '@mantine/core';\nimport { Filter, Operator, SearchRequest } from '@medplum/core';\nimport { SearchParameter } from '@medplum/fhirtypes';\nimport {\n IconBleach,\n IconBleachOff,\n IconBracketsContain,\n IconBucket,\n IconBucketOff,\n IconCalendar,\n IconEqual,\n IconEqualNot,\n IconMathGreater,\n IconMathLower,\n IconSettings,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} from '@tabler/icons-react';\nimport React from 'react';\nimport {\n addLastMonthFilter,\n addMissingFilter,\n addNextMonthFilter,\n addThisMonthFilter,\n addTodayFilter,\n addTomorrowFilter,\n addYearToDateFilter,\n addYesterdayFilter,\n buildFieldNameString,\n clearFiltersOnField,\n setSort,\n} from '../SearchControl/SearchUtils';\n\nexport interface SearchPopupMenuProps {\n search: SearchRequest;\n searchParams?: SearchParameter[];\n onPrompt: (searchParam: SearchParameter, filter: Filter) => void;\n onChange: (definition: SearchRequest) => void;\n}\n\nexport function SearchPopupMenu(props: SearchPopupMenuProps): JSX.Element | null {\n if (!props.searchParams) {\n return null;\n }\n\n function onSort(searchParam: SearchParameter, desc: boolean): void {\n onChange(setSort(props.search, searchParam.code as string, desc));\n }\n\n function onClear(searchParam: SearchParameter): void {\n onChange(clearFiltersOnField(props.search, searchParam.code as string));\n }\n\n function onPrompt(searchParam: SearchParameter, operator: Operator): void {\n props.onPrompt(searchParam, { code: searchParam.code as string, operator, value: '' });\n }\n\n function onChange(definition: SearchRequest): void {\n props.onChange(definition);\n }\n\n // If there is only one search parameter, then show it directly\n if (props.searchParams.length === 1) {\n return (\n <SearchParameterSubMenu\n search={props.search}\n searchParam={props.searchParams[0]}\n onSort={onSort}\n onPrompt={onPrompt}\n onChange={onChange}\n onClear={onClear}\n />\n );\n }\n\n // Otherwise, show a menu, with each search parameter as a sub menu\n return (\n <Menu.Dropdown>\n {props.searchParams.map((searchParam) => (\n <Menu.Item key={searchParam.code}>{buildFieldNameString(searchParam.code as string)}</Menu.Item>\n ))}\n </Menu.Dropdown>\n );\n}\n\ninterface SearchPopupSubMenuProps {\n search: SearchRequest;\n searchParam: SearchParameter;\n onSort: (searchParam: SearchParameter, descending: boolean) => void;\n onPrompt: (searchParam: SearchParameter, operator: Operator) => void;\n onChange: (search: SearchRequest) => void;\n onClear: (searchParam: SearchParameter) => void;\n}\n\nfunction SearchParameterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n switch (props.searchParam.type) {\n case 'date':\n return <DateFilterSubMenu {...props} />;\n case 'number':\n case 'quantity':\n return <NumericFilterSubMenu {...props} />;\n case 'reference':\n return <ReferenceFilterSubMenu {...props} />;\n case 'string':\n case 'token':\n case 'uri':\n return <TextFilterSubMenu {...props} />;\n default:\n return <>Unknown search param type: {props.searchParam.type}</>;\n }\n}\n\nfunction DateFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n const code = searchParam.code as string;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort Oldest to Newest\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Newest to Oldest\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT_EQUALS)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconMathLower size={14} />} onClick={() => props.onPrompt(searchParam, Operator.ENDS_BEFORE)}>\n Before...\n </Menu.Item>\n <Menu.Item\n icon={<IconMathGreater size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.STARTS_AFTER)}\n >\n After...\n </Menu.Item>\n <Menu.Item icon={<IconBracketsContain size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Between...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addTomorrowFilter(props.search, code))}\n >\n Tomorrow\n </Menu.Item>\n <Menu.Item icon={<IconCalendar size={14} />} onClick={() => props.onChange(addTodayFilter(props.search, code))}>\n Today\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addYesterdayFilter(props.search, code))}\n >\n Yesterday\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addNextMonthFilter(props.search, code))}\n >\n Next Month\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addThisMonthFilter(props.search, code))}\n >\n This Month\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addLastMonthFilter(props.search, code))}\n >\n Last Month\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addYearToDateFilter(props.search, code))}\n >\n Year to date\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction NumericFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort Smallest to Largest\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Largest to Smallest\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT_EQUALS)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconMathGreater size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.GREATER_THAN)}\n >\n Greater than...\n </Menu.Item>\n <Menu.Item\n icon={<IconSettings size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.GREATER_THAN_OR_EQUALS)}\n >\n Greater than or equal to...\n </Menu.Item>\n <Menu.Item icon={<IconMathLower size={14} />} onClick={() => props.onPrompt(searchParam, Operator.LESS_THAN)}>\n Less than...\n </Menu.Item>\n <Menu.Item\n icon={<IconSettings size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.LESS_THAN_OR_EQUALS)}\n >\n Less than or equal to...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction ReferenceFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT)}>\n Does not equal...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction TextFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort A to Z\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Z to A\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconBucket size={14} />} onClick={() => props.onPrompt(searchParam, Operator.CONTAINS)}>\n Contains...\n </Menu.Item>\n <Menu.Item icon={<IconBucketOff size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Does not contain...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction CommonMenuItems(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n const code = searchParam.code as string;\n return (\n <>\n <Menu.Divider />\n <Menu.Item icon={<IconBleach size={14} />} onClick={() => props.onChange(addMissingFilter(props.search, code))}>\n Missing\n </Menu.Item>\n <Menu.Item\n icon={<IconBleachOff size={14} />}\n onClick={() => props.onChange(addMissingFilter(props.search, code, false))}\n >\n Not missing\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconX size={14} />} onClick={() => props.onClear(searchParam)}>\n Clear filters\n </Menu.Item>\n </>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import { createReference } from '@medplum/core';
2
- import React from 'react';
3
- import { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline.mjs';
4
-
5
- function ServiceRequestTimeline(props) {
6
- return (React.createElement(ResourceTimeline, { value: props.serviceRequest, loadTimelineResources: async (medplum, resourceType, id) => {
7
- const ref = `${resourceType}/${id}`;
8
- const _count = 100;
9
- return Promise.allSettled([
10
- medplum.readHistory('ServiceRequest', id),
11
- medplum.search('Communication', { 'based-on': ref, _count }),
12
- medplum.search('DiagnosticReport', { 'based-on': ref, _count }),
13
- medplum.search('Media', { 'based-on': ref, _count }),
14
- medplum.search('Task', { _filter: `based-on eq ${ref} or focus eq ${ref} or subject eq ${ref}`, _count }),
15
- ]);
16
- }, createCommunication: (resource, sender, text) => ({
17
- resourceType: 'Communication',
18
- status: 'completed',
19
- basedOn: [createReference(resource)],
20
- subject: resource.subject,
21
- sender: createReference(sender),
22
- sent: new Date().toISOString(),
23
- payload: [{ contentString: text }],
24
- }), createMedia: (resource, operator, content) => ({
25
- resourceType: 'Media',
26
- status: 'completed',
27
- basedOn: [createReference(resource)],
28
- subject: resource.subject,
29
- operator: createReference(operator),
30
- issued: new Date().toISOString(),
31
- content,
32
- }) }));
33
- }
34
-
35
- export { ServiceRequestTimeline };
36
- //# sourceMappingURL=ServiceRequestTimeline.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceRequestTimeline.mjs","sources":["../../../src/ServiceRequestTimeline/ServiceRequestTimeline.tsx"],"sourcesContent":["import { createReference, MedplumClient, ProfileResource } from '@medplum/core';\nimport { Attachment, Group, Patient, Reference, ResourceType, ServiceRequest } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline';\n\nexport interface ServiceRequestTimelineProps {\n serviceRequest: ServiceRequest | Reference<ServiceRequest>;\n}\n\nexport function ServiceRequestTimeline(props: ServiceRequestTimelineProps): JSX.Element {\n return (\n <ResourceTimeline\n value={props.serviceRequest}\n loadTimelineResources={async (medplum: MedplumClient, resourceType: ResourceType, id: string) => {\n const ref = `${resourceType}/${id}`;\n const _count = 100;\n return Promise.allSettled([\n medplum.readHistory('ServiceRequest', id),\n medplum.search('Communication', { 'based-on': ref, _count }),\n medplum.search('DiagnosticReport', { 'based-on': ref, _count }),\n medplum.search('Media', { 'based-on': ref, _count }),\n medplum.search('Task', { _filter: `based-on eq ${ref} or focus eq ${ref} or subject eq ${ref}`, _count }),\n ]);\n }}\n createCommunication={(resource: ServiceRequest, sender: ProfileResource, text: string) => ({\n resourceType: 'Communication',\n status: 'completed',\n basedOn: [createReference(resource)],\n subject: resource.subject as Reference<Group | Patient>,\n sender: createReference(sender),\n sent: new Date().toISOString(),\n payload: [{ contentString: text }],\n })}\n createMedia={(resource: ServiceRequest, operator: ProfileResource, content: Attachment) => ({\n resourceType: 'Media',\n status: 'completed',\n basedOn: [createReference(resource)],\n subject: resource.subject,\n operator: createReference(operator),\n issued: new Date().toISOString(),\n content,\n })}\n />\n );\n}\n"],"names":[],"mappings":";;;;AASM,SAAU,sBAAsB,CAAC,KAAkC,EAAA;IACvE,QACE,oBAAC,gBAAgB,EAAA,EACf,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,qBAAqB,EAAE,OAAO,OAAsB,EAAE,YAA0B,EAAE,EAAU,KAAI;AAC9F,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,YAAY,CAAI,CAAA,EAAA,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,OAAO,OAAO,CAAC,UAAU,CAAC;AACxB,gBAAA,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,CAAC;AACzC,gBAAA,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC5D,gBAAA,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC/D,gBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACpD,gBAAA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAA,YAAA,EAAe,GAAG,CAAA,aAAA,EAAgB,GAAG,CAAkB,eAAA,EAAA,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC;AAC1G,aAAA,CAAC,CAAC;AACL,SAAC,EACD,mBAAmB,EAAE,CAAC,QAAwB,EAAE,MAAuB,EAAE,IAAY,MAAM;AACzF,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,EAAE,QAAQ,CAAC,OAAqC;AACvD,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,QAAwB,EAAE,QAAyB,EAAE,OAAmB,MAAM;AAC1F,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,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,63 +0,0 @@
1
- import { Badge } from '@mantine/core';
2
- import React from 'react';
3
-
4
- /*
5
- * Request status: https://hl7.org/fhir/valueset-request-status.html
6
- * draft, active, on-hold, revoked, completed, entered-in-error, unknown
7
- *
8
- * Publication status: https://hl7.org/fhir/valueset-publication-status.html
9
- * draft, active, retired, unknown
10
- *
11
- * Observation status: https://www.hl7.org/fhir/valueset-observation-status.html
12
- * registered, preliminary, final, amended, corrected, cancelled, entered-in-error, unknown
13
- *
14
- * DiagnosticReport status: https://hl7.org/fhir/valueset-diagnostic-report-status.html
15
- * registered, preliminary, final, amended, corrected, appended, cancelled, entered-in-error, unknown
16
- *
17
- * Task status: https://hl7.org/fhir/valueset-task-status.html
18
- * draft, requested, received, accepted, rejected, ready, cancelled, in-progress, on-hold, failed, completed, entered-in-error
19
- *
20
- * Appointment status: https://www.hl7.org/fhir/valueset-appointmentstatus.html
21
- * proposed, pending, booked, arrived, fulfilled, cancelled, noshow, entered-in-error, chcked-in, waitlist
22
- */
23
- const statusToColor = {
24
- draft: 'blue',
25
- active: 'blue',
26
- 'on-hold': 'yellow',
27
- revoked: 'red',
28
- completed: 'green',
29
- 'entered-in-error': 'red',
30
- unknown: 'gray',
31
- retired: 'gray',
32
- registered: 'blue',
33
- preliminary: 'blue',
34
- final: 'green',
35
- amended: 'yellow',
36
- corrected: 'yellow',
37
- cancelled: 'red',
38
- requested: 'blue',
39
- received: 'blue',
40
- accepted: 'blue',
41
- rejected: 'red',
42
- ready: 'blue',
43
- 'in-progress': 'blue',
44
- failed: 'red',
45
- proposed: 'blue',
46
- pending: 'blue',
47
- booked: 'blue',
48
- arrived: 'blue',
49
- fulfilled: 'green',
50
- noshow: 'red',
51
- 'checked-in': 'blue',
52
- waitlist: 'gray',
53
- routine: 'gray',
54
- urgent: 'red',
55
- asap: 'red',
56
- stat: 'red',
57
- };
58
- function StatusBadge(props) {
59
- return React.createElement(Badge, { color: statusToColor[props.status] }, props.status);
60
- }
61
-
62
- export { StatusBadge };
63
- //# sourceMappingURL=StatusBadge.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatusBadge.mjs","sources":["../../../src/StatusBadge/StatusBadge.tsx"],"sourcesContent":["import { Badge, DefaultMantineColor } from '@mantine/core';\nimport React from 'react';\n\n/*\n * Request status: https://hl7.org/fhir/valueset-request-status.html\n * draft, active, on-hold, revoked, completed, entered-in-error, unknown\n *\n * Publication status: https://hl7.org/fhir/valueset-publication-status.html\n * draft, active, retired, unknown\n *\n * Observation status: https://www.hl7.org/fhir/valueset-observation-status.html\n * registered, preliminary, final, amended, corrected, cancelled, entered-in-error, unknown\n *\n * DiagnosticReport status: https://hl7.org/fhir/valueset-diagnostic-report-status.html\n * registered, preliminary, final, amended, corrected, appended, cancelled, entered-in-error, unknown\n *\n * Task status: https://hl7.org/fhir/valueset-task-status.html\n * draft, requested, received, accepted, rejected, ready, cancelled, in-progress, on-hold, failed, completed, entered-in-error\n *\n * Appointment status: https://www.hl7.org/fhir/valueset-appointmentstatus.html\n * proposed, pending, booked, arrived, fulfilled, cancelled, noshow, entered-in-error, chcked-in, waitlist\n */\n\nconst statusToColor: Record<string, DefaultMantineColor> = {\n draft: 'blue',\n active: 'blue',\n 'on-hold': 'yellow',\n revoked: 'red',\n completed: 'green',\n 'entered-in-error': 'red',\n unknown: 'gray',\n retired: 'gray',\n registered: 'blue',\n preliminary: 'blue',\n final: 'green',\n amended: 'yellow',\n corrected: 'yellow',\n cancelled: 'red',\n requested: 'blue',\n received: 'blue',\n accepted: 'blue',\n rejected: 'red',\n ready: 'blue',\n 'in-progress': 'blue',\n failed: 'red',\n proposed: 'blue',\n pending: 'blue',\n booked: 'blue',\n arrived: 'blue',\n fulfilled: 'green',\n noshow: 'red',\n 'checked-in': 'blue',\n waitlist: 'gray',\n routine: 'gray',\n urgent: 'red',\n asap: 'red',\n stat: 'red',\n};\n\nexport interface StatusBadgeProps {\n readonly status: string;\n}\n\nexport function StatusBadge(props: StatusBadgeProps): JSX.Element {\n return <Badge color={statusToColor[props.status]}>{props.status}</Badge>;\n}\n"],"names":[],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;;AAkBG;AAEH,MAAM,aAAa,GAAwC;AACzD,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;CACZ,CAAC;AAMI,SAAU,WAAW,CAAC,KAAuB,EAAA;AACjD,IAAA,OAAO,oBAAC,KAAK,EAAA,EAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAG,EAAA,KAAK,CAAC,MAAM,CAAS,CAAC;AAC3E;;;;"}
@@ -1,40 +0,0 @@
1
- import { Group, Text, Menu, ActionIcon } from '@mantine/core';
2
- import { formatDateTime, getReferenceString } from '@medplum/core';
3
- import React from 'react';
4
- import { Container } from '../Container/Container.mjs';
5
- import { ErrorBoundary } from '../ErrorBoundary/ErrorBoundary.mjs';
6
- import { MedplumLink } from '../MedplumLink/MedplumLink.mjs';
7
- import { Panel } from '../Panel/Panel.mjs';
8
- import { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar.mjs';
9
- import { ResourceName } from '../ResourceName/ResourceName.mjs';
10
- import IconDots from '../node_modules/@tabler/icons-react/dist/esm/icons/IconDots.mjs';
11
-
12
- function Timeline(props) {
13
- return React.createElement(Container, null, props.children);
14
- }
15
- function TimelineItem(props) {
16
- const { resource, profile, padding, popupMenuItems, ...others } = props;
17
- const author = profile ?? resource.meta?.author;
18
- const dateTime = props.dateTime ?? resource.meta?.lastUpdated;
19
- return (React.createElement(Panel, { "data-testid": "timeline-item", fill: true, ...others },
20
- React.createElement(Group, { position: "apart", spacing: 8, mx: "xs", my: "sm" },
21
- React.createElement(ResourceAvatar, { value: author, link: true, size: "md" }),
22
- React.createElement("div", { style: { flex: 1 } },
23
- React.createElement(Text, { size: "sm" },
24
- React.createElement(ResourceName, { color: "dark", weight: 500, value: author, link: true })),
25
- React.createElement(Text, { size: "xs" },
26
- React.createElement(MedplumLink, { color: "dimmed", to: props.resource }, formatDateTime(dateTime)),
27
- React.createElement(Text, { component: "span", color: "dimmed", mx: 8 }, "\u00B7"),
28
- React.createElement(MedplumLink, { color: "dimmed", to: props.resource }, props.resource.resourceType))),
29
- popupMenuItems && (React.createElement(Menu, { position: "bottom-end", shadow: "md", width: 200 },
30
- React.createElement(Menu.Target, null,
31
- React.createElement(ActionIcon, { radius: "xl", "aria-label": `Actions for ${getReferenceString(props.resource)}` },
32
- React.createElement(IconDots, null))),
33
- popupMenuItems))),
34
- React.createElement(ErrorBoundary, null,
35
- padding && React.createElement("div", { style: { padding: '0 16px 16px 16px' } }, props.children),
36
- !padding && React.createElement(React.Fragment, null, props.children))));
37
- }
38
-
39
- export { Timeline, TimelineItem };
40
- //# sourceMappingURL=Timeline.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Timeline.mjs","sources":["../../../src/Timeline/Timeline.tsx"],"sourcesContent":["import { ActionIcon, Group, Menu, Text } from '@mantine/core';\nimport { formatDateTime, getReferenceString } from '@medplum/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport { IconDots } from '@tabler/icons-react';\nimport React from 'react';\nimport { Container } from '../Container/Container';\nimport { ErrorBoundary } from '../ErrorBoundary/ErrorBoundary';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { Panel, PanelProps } from '../Panel/Panel';\nimport { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar';\nimport { ResourceName } from '../ResourceName/ResourceName';\n\nexport interface TimelineProps {\n children?: React.ReactNode;\n}\n\nexport function Timeline(props: TimelineProps): JSX.Element {\n return <Container>{props.children}</Container>;\n}\n\nexport interface TimelineItemProps extends PanelProps {\n resource: Resource;\n profile?: Reference;\n dateTime?: string;\n padding?: boolean;\n popupMenuItems?: React.ReactNode;\n}\n\nexport function TimelineItem(props: TimelineItemProps): JSX.Element {\n const { resource, profile, padding, popupMenuItems, ...others } = props;\n const author = profile ?? resource.meta?.author;\n const dateTime = props.dateTime ?? resource.meta?.lastUpdated;\n\n return (\n <Panel data-testid=\"timeline-item\" fill={true} {...others}>\n <Group position=\"apart\" spacing={8} mx=\"xs\" my=\"sm\">\n <ResourceAvatar value={author} link={true} size=\"md\" />\n <div style={{ flex: 1 }}>\n <Text size=\"sm\">\n <ResourceName color=\"dark\" weight={500} value={author} link={true} />\n </Text>\n <Text size=\"xs\">\n <MedplumLink color=\"dimmed\" to={props.resource}>\n {formatDateTime(dateTime)}\n </MedplumLink>\n <Text component=\"span\" color=\"dimmed\" mx={8}>\n &middot;\n </Text>\n <MedplumLink color=\"dimmed\" to={props.resource}>\n {props.resource.resourceType}\n </MedplumLink>\n </Text>\n </div>\n {popupMenuItems && (\n <Menu position=\"bottom-end\" shadow=\"md\" width={200}>\n <Menu.Target>\n <ActionIcon radius=\"xl\" aria-label={`Actions for ${getReferenceString(props.resource)}`}>\n <IconDots />\n </ActionIcon>\n </Menu.Target>\n {popupMenuItems}\n </Menu>\n )}\n </Group>\n <ErrorBoundary>\n {padding && <div style={{ padding: '0 16px 16px 16px' }}>{props.children}</div>}\n {!padding && <>{props.children}</>}\n </ErrorBoundary>\n </Panel>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,76 +0,0 @@
1
- import { Group, Button, Modal, Stack, Switch, TextInput, NativeSelect, Chip } from '@mantine/core';
2
- import { formatTiming } from '@medplum/core';
3
- import React, { useState, useRef } from 'react';
4
- import { DateTimeInput } from '../DateTimeInput/DateTimeInput.mjs';
5
- import { FormSection } from '../FormSection/FormSection.mjs';
6
-
7
- const daysOfWeek = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
8
- function TimingInput(props) {
9
- const [value, setValue] = useState(props.defaultValue);
10
- const [open, setOpen] = useState(false);
11
- const valueRef = useRef();
12
- valueRef.current = value;
13
- return (React.createElement(React.Fragment, null,
14
- React.createElement(Group, { spacing: "xs", grow: true, noWrap: true },
15
- React.createElement("span", null, formatTiming(valueRef.current) || 'No repeat'),
16
- React.createElement(Button, { onClick: () => setOpen(true) }, "Edit")),
17
- React.createElement(TimingEditorDialog, { visible: open, defaultValue: valueRef.current, onOk: (newValue) => {
18
- if (props.onChange) {
19
- props.onChange(newValue);
20
- }
21
- setValue(newValue);
22
- setOpen(false);
23
- }, onCancel: () => setOpen(false) })));
24
- }
25
- const defaultValue = {
26
- repeat: {
27
- period: 1,
28
- periodUnit: 'd',
29
- },
30
- };
31
- function TimingEditorDialog(props) {
32
- const [value, setValue] = useState(props.defaultValue || defaultValue);
33
- const valueRef = useRef();
34
- valueRef.current = value;
35
- function setStart(newStart) {
36
- setValue({ ...valueRef.current, event: [newStart] });
37
- }
38
- function setRepeat(repeat) {
39
- setValue({ ...valueRef.current, repeat });
40
- }
41
- function setPeriod(newPeriod) {
42
- setRepeat({ ...valueRef.current?.repeat, period: newPeriod });
43
- }
44
- function setPeriodUnit(newPeriodUnit) {
45
- setRepeat({ ...valueRef.current?.repeat, periodUnit: newPeriodUnit });
46
- }
47
- function setDaysOfWeek(newDaysOfWeek) {
48
- setRepeat({ ...valueRef.current?.repeat, dayOfWeek: newDaysOfWeek });
49
- }
50
- return (React.createElement(Modal, { title: "Timing", closeButtonProps: { 'aria-label': 'Close' }, opened: props.visible, onClose: () => props.onCancel() },
51
- React.createElement(Stack, null,
52
- React.createElement(FormSection, { title: "Starts on", htmlFor: 'timing-dialog-start' },
53
- React.createElement(DateTimeInput, { name: 'timing-dialog-start', onChange: (newValue) => setStart(newValue) })),
54
- React.createElement(Switch, { label: "Repeat", checked: !!value.repeat, onChange: (e) => setRepeat(e.currentTarget.checked ? defaultValue.repeat : undefined) }),
55
- value.repeat && (React.createElement(React.Fragment, null,
56
- React.createElement(FormSection, { title: "Repeat every", htmlFor: 'timing-dialog-period' },
57
- React.createElement(Group, { spacing: "xs", grow: true, noWrap: true },
58
- React.createElement(TextInput, { type: "number", step: 1, id: "timing-dialog-period", name: "timing-dialog-period", defaultValue: value.repeat.period || 1, onChange: (e) => setPeriod(parseInt(e.currentTarget.value, 10) || 1) }),
59
- React.createElement(NativeSelect, { id: "timing-dialog-periodUnit", name: "timing-dialog-periodUnit", defaultValue: value.repeat.periodUnit, onChange: (e) => setPeriodUnit(e.currentTarget.value), data: [
60
- { label: 'second', value: 's' },
61
- { label: 'minute', value: 'min' },
62
- { label: 'hour', value: 'h' },
63
- { label: 'day', value: 'd' },
64
- { label: 'week', value: 'wk' },
65
- { label: 'month', value: 'mo' },
66
- { label: 'year', value: 'a' },
67
- ] }))),
68
- value.repeat.periodUnit === 'wk' && (React.createElement(FormSection, { title: "Repeat on" },
69
- React.createElement(Chip.Group, { multiple: true, onChange: setDaysOfWeek },
70
- React.createElement(Group, { position: "apart", mt: "md", spacing: "xs" }, daysOfWeek.map((day) => (React.createElement(Chip, { key: day, value: day, size: "xs", radius: "xl" }, day.charAt(0).toUpperCase()))))))))),
71
- React.createElement(Group, { position: "right" },
72
- React.createElement(Button, { onClick: () => props.onOk(value) }, "OK")))));
73
- }
74
-
75
- export { TimingInput };
76
- //# sourceMappingURL=TimingInput.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimingInput.mjs","sources":["../../../src/TimingInput/TimingInput.tsx"],"sourcesContent":["import { Button, Chip, Group, Modal, NativeSelect, Stack, Switch, TextInput } from '@mantine/core';\nimport { formatTiming } from '@medplum/core';\nimport { Timing, TimingRepeat } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\nimport { DateTimeInput } from '../DateTimeInput/DateTimeInput';\nimport { FormSection } from '../FormSection/FormSection';\n\nconst daysOfWeek = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n\ntype DayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\ntype PeriodUnit = 'a' | 's' | 'min' | 'h' | 'd' | 'wk' | 'mo';\n\nexport interface TimingInputProps {\n name: string;\n defaultValue?: Timing;\n onChange?: (newValue: Timing) => void;\n}\n\nexport function TimingInput(props: TimingInputProps): JSX.Element {\n const [value, setValue] = useState<Timing | undefined>(props.defaultValue);\n const [open, setOpen] = useState(false);\n\n const valueRef = useRef<Timing>();\n valueRef.current = value;\n\n return (\n <>\n <Group spacing=\"xs\" grow noWrap>\n <span>{formatTiming(valueRef.current) || 'No repeat'}</span>\n <Button onClick={() => setOpen(true)}>Edit</Button>\n </Group>\n <TimingEditorDialog\n visible={open}\n defaultValue={valueRef.current}\n onOk={(newValue) => {\n if (props.onChange) {\n props.onChange(newValue);\n }\n setValue(newValue);\n setOpen(false);\n }}\n onCancel={() => setOpen(false)}\n />\n </>\n );\n}\n\ninterface TimingEditorDialogProps {\n visible: boolean;\n defaultValue?: Timing;\n onOk: (newValue: Timing) => void;\n onCancel: () => void;\n}\n\nconst defaultValue: Timing = {\n repeat: {\n period: 1,\n periodUnit: 'd',\n },\n};\n\nfunction TimingEditorDialog(props: TimingEditorDialogProps): JSX.Element {\n const [value, setValue] = useState<Timing>(props.defaultValue || defaultValue);\n\n const valueRef = useRef<Timing>();\n valueRef.current = value;\n\n function setStart(newStart: string): void {\n setValue({ ...valueRef.current, event: [newStart] });\n }\n\n function setRepeat(repeat: TimingRepeat | undefined): void {\n setValue({ ...valueRef.current, repeat });\n }\n\n function setPeriod(newPeriod: number | undefined): void {\n setRepeat({ ...valueRef.current?.repeat, period: newPeriod });\n }\n\n function setPeriodUnit(newPeriodUnit: PeriodUnit | undefined): void {\n setRepeat({ ...valueRef.current?.repeat, periodUnit: newPeriodUnit });\n }\n\n function setDaysOfWeek(newDaysOfWeek: DayOfWeek[] | undefined): void {\n setRepeat({ ...valueRef.current?.repeat, dayOfWeek: newDaysOfWeek });\n }\n\n return (\n <Modal\n title=\"Timing\"\n closeButtonProps={{ 'aria-label': 'Close' }}\n opened={props.visible}\n onClose={() => props.onCancel()}\n >\n <Stack>\n <FormSection title=\"Starts on\" htmlFor={'timing-dialog-start'}>\n <DateTimeInput name={'timing-dialog-start'} onChange={(newValue) => setStart(newValue)} />\n </FormSection>\n <Switch\n label=\"Repeat\"\n checked={!!value.repeat}\n onChange={(e) => setRepeat(e.currentTarget.checked ? defaultValue.repeat : undefined)}\n />\n {value.repeat && (\n <>\n <FormSection title=\"Repeat every\" htmlFor={'timing-dialog-period'}>\n <Group spacing=\"xs\" grow noWrap>\n <TextInput\n type=\"number\"\n step={1}\n id=\"timing-dialog-period\"\n name=\"timing-dialog-period\"\n defaultValue={value.repeat.period || 1}\n onChange={(e) => setPeriod(parseInt(e.currentTarget.value, 10) || 1)}\n />\n <NativeSelect\n id=\"timing-dialog-periodUnit\"\n name=\"timing-dialog-periodUnit\"\n defaultValue={value.repeat.periodUnit}\n onChange={(e) => setPeriodUnit(e.currentTarget.value as PeriodUnit | undefined)}\n data={[\n { label: 'second', value: 's' },\n { label: 'minute', value: 'min' },\n { label: 'hour', value: 'h' },\n { label: 'day', value: 'd' },\n { label: 'week', value: 'wk' },\n { label: 'month', value: 'mo' },\n { label: 'year', value: 'a' },\n ]}\n />\n </Group>\n </FormSection>\n {value.repeat.periodUnit === 'wk' && (\n <FormSection title=\"Repeat on\">\n <Chip.Group multiple onChange={setDaysOfWeek as (v: string[] | undefined) => void}>\n <Group position=\"apart\" mt=\"md\" spacing=\"xs\">\n {daysOfWeek.map((day) => (\n <Chip key={day} value={day} size=\"xs\" radius=\"xl\">\n {day.charAt(0).toUpperCase()}\n </Chip>\n ))}\n </Group>\n </Chip.Group>\n </FormSection>\n )}\n </>\n )}\n <Group position=\"right\">\n <Button onClick={() => props.onOk(value)}>OK</Button>\n </Group>\n </Stack>\n </Modal>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- import React, { useCallback } from 'react';
2
- import { AsyncAutocomplete } from '../AsyncAutocomplete/AsyncAutocomplete.mjs';
3
- import { useMedplum } from '../MedplumProvider/MedplumProvider.mjs';
4
-
5
- function toKey(element) {
6
- if (typeof element.code === 'string') {
7
- return element.code;
8
- }
9
- return JSON.stringify(element);
10
- }
11
- function getDisplay(item) {
12
- if (typeof item.display === 'string') {
13
- return item.display;
14
- }
15
- return toKey(item);
16
- }
17
- function toOption(element) {
18
- return {
19
- value: toKey(element),
20
- label: getDisplay(element),
21
- resource: element,
22
- };
23
- }
24
- function createValue(input) {
25
- return {
26
- code: input,
27
- display: input,
28
- };
29
- }
30
- /**
31
- * A low-level component to autocomplete based on a FHIR Valueset.
32
- * This is the base component for CodeableConceptInput, CodingInput, and CodeInput.
33
- * @param props The ValueSetAutocomplete React props.
34
- * @returns The ValueSetAutocomplete React node.
35
- */
36
- function ValueSetAutocomplete(props) {
37
- const medplum = useMedplum();
38
- const { elementDefinition, creatable, clearable, ...rest } = props;
39
- const loadValues = useCallback(async (input, signal) => {
40
- if (!elementDefinition.binding) {
41
- return [];
42
- }
43
- const system = elementDefinition.binding.valueSet;
44
- const valueSet = await medplum.searchValueSet(system, input, { signal });
45
- const valueSetElements = valueSet.expansion?.contains;
46
- const newData = [];
47
- for (const valueSetElement of valueSetElements) {
48
- if (valueSetElement.code && !newData.some((item) => item.code === valueSetElement.code)) {
49
- newData.push(valueSetElement);
50
- }
51
- }
52
- return newData;
53
- }, [medplum, elementDefinition]);
54
- return (React.createElement(AsyncAutocomplete, { ...rest, creatable: creatable ?? true, clearable: clearable ?? true, toKey: toKey, toOption: toOption, loadOptions: loadValues, onCreate: createValue, getCreateLabel: creatable === false ? undefined : (query) => `+ Create ${query}` }));
55
- }
56
-
57
- export { ValueSetAutocomplete };
58
- //# sourceMappingURL=ValueSetAutocomplete.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValueSetAutocomplete.mjs","sources":["../../../src/ValueSetAutocomplete/ValueSetAutocomplete.tsx"],"sourcesContent":["import { ElementDefinition, ValueSetExpansionContains } from '@medplum/fhirtypes';\nimport React, { useCallback } from 'react';\nimport {\n AsyncAutocomplete,\n AsyncAutocompleteOption,\n AsyncAutocompleteProps,\n} from '../AsyncAutocomplete/AsyncAutocomplete';\nimport { useMedplum } from '../MedplumProvider/MedplumProvider';\n\nexport interface ValueSetAutocompleteProps\n extends Omit<AsyncAutocompleteProps<ValueSetExpansionContains>, 'loadOptions' | 'toKey' | 'toOption'> {\n elementDefinition: ElementDefinition;\n creatable?: boolean;\n clearable?: boolean;\n}\n\nfunction toKey(element: ValueSetExpansionContains): string {\n if (typeof element.code === 'string') {\n return element.code;\n }\n return JSON.stringify(element);\n}\n\nfunction getDisplay(item: ValueSetExpansionContains): string {\n if (typeof item.display === 'string') {\n return item.display;\n }\n return toKey(item);\n}\n\nfunction toOption(element: ValueSetExpansionContains): AsyncAutocompleteOption<ValueSetExpansionContains> {\n return {\n value: toKey(element),\n label: getDisplay(element),\n resource: element,\n };\n}\n\nfunction createValue(input: string): ValueSetExpansionContains {\n return {\n code: input,\n display: input,\n };\n}\n\n/**\n * A low-level component to autocomplete based on a FHIR Valueset.\n * This is the base component for CodeableConceptInput, CodingInput, and CodeInput.\n * @param props The ValueSetAutocomplete React props.\n * @returns The ValueSetAutocomplete React node.\n */\nexport function ValueSetAutocomplete(props: ValueSetAutocompleteProps): JSX.Element {\n const medplum = useMedplum();\n const { elementDefinition, creatable, clearable, ...rest } = props;\n\n const loadValues = useCallback(\n async (input: string, signal: AbortSignal): Promise<ValueSetExpansionContains[]> => {\n if (!elementDefinition.binding) {\n return [];\n }\n const system = elementDefinition.binding.valueSet as string;\n const valueSet = await medplum.searchValueSet(system, input, { signal });\n const valueSetElements = valueSet.expansion?.contains as ValueSetExpansionContains[];\n const newData: ValueSetExpansionContains[] = [];\n for (const valueSetElement of valueSetElements) {\n if (valueSetElement.code && !newData.some((item) => item.code === valueSetElement.code)) {\n newData.push(valueSetElement);\n }\n }\n\n return newData;\n },\n [medplum, elementDefinition]\n );\n\n return (\n <AsyncAutocomplete\n {...rest}\n creatable={creatable ?? true}\n clearable={clearable ?? true}\n toKey={toKey}\n toOption={toOption}\n loadOptions={loadValues}\n onCreate={createValue}\n getCreateLabel={creatable === false ? undefined : (query: any) => `+ Create ${query}`}\n />\n );\n}\n"],"names":[],"mappings":";;;;AAgBA,SAAS,KAAK,CAAC,OAAkC,EAAA;AAC/C,IAAA,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;QACpC,OAAO,OAAO,CAAC,IAAI,CAAC;AACrB,KAAA;AACD,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,IAA+B,EAAA;AACjD,IAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC;AACrB,KAAA;AACD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,OAAkC,EAAA;IAClD,OAAO;AACL,QAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;AACrB,QAAA,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;AAC1B,QAAA,QAAQ,EAAE,OAAO;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAA;IAChC,OAAO;AACL,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC;AAED;;;;;AAKG;AACG,SAAU,oBAAoB,CAAC,KAAgC,EAAA;AACnE,IAAA,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AAC7B,IAAA,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEnE,MAAM,UAAU,GAAG,WAAW,CAC5B,OAAO,KAAa,EAAE,MAAmB,KAA0C;AACjF,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,QAAkB,CAAC;AAC5D,QAAA,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACzE,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,EAAE,QAAuC,CAAC;QACrF,MAAM,OAAO,GAAgC,EAAE,CAAC;AAChD,QAAA,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE;YAC9C,IAAI,eAAe,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAC,EAAE;AACvF,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/B,aAAA;AACF,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;AACjB,KAAC,EACD,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAC7B,CAAC;IAEF,QACE,KAAC,CAAA,aAAA,CAAA,iBAAiB,EACZ,EAAA,GAAA,IAAI,EACR,SAAS,EAAE,SAAS,IAAI,IAAI,EAC5B,SAAS,EAAE,SAAS,IAAI,IAAI,EAC5B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,UAAU,EACvB,QAAQ,EAAE,WAAW,EACrB,cAAc,EAAE,SAAS,KAAK,KAAK,GAAG,SAAS,GAAG,CAAC,KAAU,KAAK,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE,EACrF,CAAA,EACF;AACJ;;;;"}