@medplum/react 0.9.25 → 0.9.28

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 (411) hide show
  1. package/dist/cjs/index.js +282 -152
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/index.min.js +1 -1
  4. package/dist/cjs/index.min.js.map +1 -1
  5. package/dist/cjs/styles.css +83 -79
  6. package/dist/{types → esm}/AddressDisplay.d.ts +0 -0
  7. package/dist/esm/AddressDisplay.js +13 -0
  8. package/dist/esm/AddressDisplay.js.map +1 -0
  9. package/dist/{types → esm}/AddressInput.d.ts +0 -0
  10. package/dist/esm/AddressInput.js +69 -0
  11. package/dist/esm/AddressInput.js.map +1 -0
  12. package/dist/{types → esm}/AnnotationInput.d.ts +0 -0
  13. package/dist/esm/AnnotationInput.js +28 -0
  14. package/dist/esm/AnnotationInput.js.map +1 -0
  15. package/dist/{types → esm}/AttachmentArrayDisplay.d.ts +0 -0
  16. package/dist/esm/AttachmentArrayDisplay.js +11 -0
  17. package/dist/esm/AttachmentArrayDisplay.js.map +1 -0
  18. package/dist/{types → esm}/AttachmentArrayInput.d.ts +0 -0
  19. package/dist/esm/AttachmentArrayInput.js +42 -0
  20. package/dist/esm/AttachmentArrayInput.js.map +1 -0
  21. package/dist/{types → esm}/AttachmentDisplay.d.ts +0 -0
  22. package/dist/esm/AttachmentDisplay.js +20 -0
  23. package/dist/esm/AttachmentDisplay.js.map +1 -0
  24. package/dist/{types → esm}/AttachmentInput.d.ts +0 -0
  25. package/dist/esm/AttachmentInput.js +27 -0
  26. package/dist/esm/AttachmentInput.js.map +1 -0
  27. package/dist/{types → esm}/Autocomplete.d.ts +1 -0
  28. package/dist/esm/Autocomplete.js +280 -0
  29. package/dist/esm/Autocomplete.js.map +1 -0
  30. package/dist/{types → esm}/Avatar.d.ts +0 -0
  31. package/dist/esm/Avatar.js +24 -0
  32. package/dist/esm/Avatar.js.map +1 -0
  33. package/dist/{types → esm}/BackboneElementDisplay.d.ts +0 -0
  34. package/dist/esm/BackboneElementDisplay.js +43 -0
  35. package/dist/esm/BackboneElementDisplay.js.map +1 -0
  36. package/dist/{types → esm}/BackboneElementInput.d.ts +0 -0
  37. package/dist/esm/BackboneElementInput.js +51 -0
  38. package/dist/esm/BackboneElementInput.js.map +1 -0
  39. package/dist/{types → esm}/Button.d.ts +0 -0
  40. package/dist/esm/Button.js +13 -0
  41. package/dist/esm/Button.js.map +1 -0
  42. package/dist/{types → esm}/CalendarInput.d.ts +0 -0
  43. package/dist/esm/CalendarInput.js +96 -0
  44. package/dist/esm/CalendarInput.js.map +1 -0
  45. package/dist/{types → esm}/Checkbox.d.ts +0 -0
  46. package/dist/esm/Checkbox.js +13 -0
  47. package/dist/esm/Checkbox.js.map +1 -0
  48. package/dist/{types → esm}/CheckboxFormSection.d.ts +0 -0
  49. package/dist/esm/CheckboxFormSection.js +12 -0
  50. package/dist/esm/CheckboxFormSection.js.map +1 -0
  51. package/dist/{types → esm}/CodeInput.d.ts +0 -0
  52. package/dist/esm/CodeInput.js +28 -0
  53. package/dist/esm/CodeInput.js.map +1 -0
  54. package/dist/{types → esm}/CodeableConceptDisplay.d.ts +0 -0
  55. package/dist/esm/CodeableConceptDisplay.js +21 -0
  56. package/dist/esm/CodeableConceptDisplay.js.map +1 -0
  57. package/dist/{types → esm}/CodeableConceptInput.d.ts +0 -0
  58. package/dist/esm/CodeableConceptInput.js +52 -0
  59. package/dist/esm/CodeableConceptInput.js.map +1 -0
  60. package/dist/{types → esm}/CodingDisplay.d.ts +0 -0
  61. package/dist/esm/CodingDisplay.js +9 -0
  62. package/dist/esm/CodingDisplay.js.map +1 -0
  63. package/dist/{types → esm}/CodingInput.d.ts +0 -0
  64. package/dist/esm/CodingInput.js +30 -0
  65. package/dist/esm/CodingInput.js.map +1 -0
  66. package/dist/{types → esm}/ContactDetailDisplay.d.ts +0 -0
  67. package/dist/esm/ContactDetailDisplay.js +17 -0
  68. package/dist/esm/ContactDetailDisplay.js.map +1 -0
  69. package/dist/{types → esm}/ContactDetailInput.d.ts +0 -0
  70. package/dist/esm/ContactDetailInput.js +37 -0
  71. package/dist/esm/ContactDetailInput.js.map +1 -0
  72. package/dist/{types → esm}/ContactPointDisplay.d.ts +0 -0
  73. package/dist/esm/ContactPointDisplay.js +29 -0
  74. package/dist/esm/ContactPointDisplay.js.map +1 -0
  75. package/dist/{types → esm}/ContactPointInput.d.ts +0 -0
  76. package/dist/esm/ContactPointInput.js +60 -0
  77. package/dist/esm/ContactPointInput.js.map +1 -0
  78. package/dist/{types → esm}/DateTimeInput.d.ts +0 -0
  79. package/dist/esm/DateTimeInput.js +60 -0
  80. package/dist/esm/DateTimeInput.js.map +1 -0
  81. package/dist/{types → esm}/DefaultResourceTimeline.d.ts +0 -0
  82. package/dist/esm/DefaultResourceTimeline.js +27 -0
  83. package/dist/esm/DefaultResourceTimeline.js.map +1 -0
  84. package/dist/{types → esm}/DescriptionList.d.ts +0 -0
  85. package/dist/esm/DescriptionList.js +13 -0
  86. package/dist/esm/DescriptionList.js.map +1 -0
  87. package/dist/{types → esm}/DiagnosticReportDisplay.d.ts +0 -0
  88. package/dist/esm/DiagnosticReportDisplay.js +101 -0
  89. package/dist/esm/DiagnosticReportDisplay.js.map +1 -0
  90. package/dist/{types → esm}/Dialog.d.ts +0 -0
  91. package/dist/esm/Dialog.js +43 -0
  92. package/dist/esm/Dialog.js.map +1 -0
  93. package/dist/{types → esm}/Document.d.ts +0 -0
  94. package/dist/esm/Document.js +9 -0
  95. package/dist/esm/Document.js.map +1 -0
  96. package/dist/{types → esm}/EncounterTimeline.d.ts +0 -0
  97. package/dist/esm/EncounterTimeline.js +47 -0
  98. package/dist/esm/EncounterTimeline.js.map +1 -0
  99. package/dist/{types → esm}/ErrorBoundary.d.ts +0 -0
  100. package/dist/esm/ErrorBoundary.js +27 -0
  101. package/dist/esm/ErrorBoundary.js.map +1 -0
  102. package/dist/{types → esm}/ExtensionInput.d.ts +0 -0
  103. package/dist/esm/ExtensionInput.js +14 -0
  104. package/dist/esm/ExtensionInput.js.map +1 -0
  105. package/dist/{types → esm}/FhirPathDisplay.d.ts +0 -0
  106. package/dist/esm/FhirPathDisplay.js +23 -0
  107. package/dist/esm/FhirPathDisplay.js.map +1 -0
  108. package/dist/{types → esm}/FhirPathTable.d.ts +0 -0
  109. package/dist/esm/FhirPathTable.js +117 -0
  110. package/dist/esm/FhirPathTable.js.map +1 -0
  111. package/dist/{types → esm}/FooterLinks.d.ts +0 -0
  112. package/dist/esm/FooterLinks.js +8 -0
  113. package/dist/esm/FooterLinks.js.map +1 -0
  114. package/dist/{types → esm}/Form.d.ts +0 -0
  115. package/dist/esm/Form.js +15 -0
  116. package/dist/esm/Form.js.map +1 -0
  117. package/dist/{types → esm}/FormSection.d.ts +0 -0
  118. package/dist/esm/FormSection.js +18 -0
  119. package/dist/esm/FormSection.js.map +1 -0
  120. package/dist/{types → esm}/FormUtils.d.ts +0 -0
  121. package/dist/esm/FormUtils.js +49 -0
  122. package/dist/esm/FormUtils.js.map +1 -0
  123. package/dist/{types → esm}/GoogleButton.d.ts +0 -0
  124. package/dist/esm/GoogleButton.js +48 -0
  125. package/dist/esm/GoogleButton.js.map +1 -0
  126. package/dist/{types → esm}/Header.d.ts +0 -0
  127. package/dist/esm/Header.js +95 -0
  128. package/dist/esm/Header.js.map +1 -0
  129. package/dist/{types → esm}/HeaderSearchInput.d.ts +0 -0
  130. package/dist/esm/HeaderSearchInput.js +181 -0
  131. package/dist/esm/HeaderSearchInput.js.map +1 -0
  132. package/dist/{types → esm}/HumanNameDisplay.d.ts +0 -0
  133. package/dist/esm/HumanNameDisplay.js +13 -0
  134. package/dist/esm/HumanNameDisplay.js.map +1 -0
  135. package/dist/{types → esm}/HumanNameInput.d.ts +0 -0
  136. package/dist/esm/HumanNameInput.js +49 -0
  137. package/dist/esm/HumanNameInput.js.map +1 -0
  138. package/dist/{types → esm}/IdentifierDisplay.d.ts +0 -0
  139. package/dist/esm/IdentifierDisplay.js +12 -0
  140. package/dist/esm/IdentifierDisplay.js.map +1 -0
  141. package/dist/{types → esm}/IdentifierInput.d.ts +0 -0
  142. package/dist/esm/IdentifierInput.js +19 -0
  143. package/dist/esm/IdentifierInput.js.map +1 -0
  144. package/dist/{types → esm}/Input.d.ts +0 -0
  145. package/dist/esm/Input.js +26 -0
  146. package/dist/esm/Input.js.map +1 -0
  147. package/dist/{types → esm}/InputRow.d.ts +0 -0
  148. package/dist/esm/InputRow.js +8 -0
  149. package/dist/esm/InputRow.js.map +1 -0
  150. package/dist/{types → esm}/Loading.d.ts +0 -0
  151. package/dist/esm/Loading.js +11 -0
  152. package/dist/esm/Loading.js.map +1 -0
  153. package/dist/{types → esm}/Logo.d.ts +0 -0
  154. package/dist/esm/Logo.js +14 -0
  155. package/dist/esm/Logo.js.map +1 -0
  156. package/dist/{types → esm}/MedplumLink.d.ts +0 -0
  157. package/dist/esm/MedplumLink.js +34 -0
  158. package/dist/esm/MedplumLink.js.map +1 -0
  159. package/dist/{types → esm}/MedplumProvider.d.ts +0 -0
  160. package/dist/esm/MedplumProvider.js +50 -0
  161. package/dist/esm/MedplumProvider.js.map +1 -0
  162. package/dist/{types → esm}/MenuItem.d.ts +0 -0
  163. package/dist/esm/MenuItem.js +8 -0
  164. package/dist/esm/MenuItem.js.map +1 -0
  165. package/dist/{types → esm}/MenuSeparator.d.ts +0 -0
  166. package/dist/esm/MenuSeparator.js +8 -0
  167. package/dist/esm/MenuSeparator.js.map +1 -0
  168. package/dist/{types → esm}/PatientTimeline.d.ts +0 -0
  169. package/dist/esm/PatientTimeline.js +40 -0
  170. package/dist/esm/PatientTimeline.js.map +1 -0
  171. package/dist/{types → esm}/PeriodInput.d.ts +0 -0
  172. package/dist/esm/PeriodInput.js +19 -0
  173. package/dist/esm/PeriodInput.js.map +1 -0
  174. package/dist/{types → esm}/PlanDefinitionBuilder.d.ts +0 -0
  175. package/dist/esm/PlanDefinitionBuilder.js +224 -0
  176. package/dist/esm/PlanDefinitionBuilder.js.map +1 -0
  177. package/dist/{types → esm}/Popup.d.ts +0 -0
  178. package/dist/esm/Popup.js +64 -0
  179. package/dist/esm/Popup.js.map +1 -0
  180. package/dist/{types → esm}/QuantityDisplay.d.ts +0 -0
  181. package/dist/esm/QuantityDisplay.js +28 -0
  182. package/dist/esm/QuantityDisplay.js.map +1 -0
  183. package/dist/{types → esm}/QuantityInput.d.ts +0 -0
  184. package/dist/esm/QuantityInput.js +33 -0
  185. package/dist/esm/QuantityInput.js.map +1 -0
  186. package/dist/{types → esm}/QuestionnaireBuilder.d.ts +0 -0
  187. package/dist/esm/QuestionnaireBuilder.js +217 -0
  188. package/dist/esm/QuestionnaireBuilder.js.map +1 -0
  189. package/dist/{types → esm}/QuestionnaireForm.d.ts +0 -0
  190. package/dist/esm/QuestionnaireForm.js +218 -0
  191. package/dist/esm/QuestionnaireForm.js.map +1 -0
  192. package/dist/{types → esm}/QuestionnaireUtils.d.ts +0 -0
  193. package/dist/esm/QuestionnaireUtils.js +103 -0
  194. package/dist/esm/QuestionnaireUtils.js.map +1 -0
  195. package/dist/{types → esm}/RangeDisplay.d.ts +0 -0
  196. package/dist/esm/RangeDisplay.js +21 -0
  197. package/dist/esm/RangeDisplay.js.map +1 -0
  198. package/dist/{types → esm}/RangeInput.d.ts +0 -0
  199. package/dist/esm/RangeInput.js +25 -0
  200. package/dist/esm/RangeInput.js.map +1 -0
  201. package/dist/{types → esm}/RatioDisplay.d.ts +0 -0
  202. package/dist/esm/RatioDisplay.js +16 -0
  203. package/dist/esm/RatioDisplay.js.map +1 -0
  204. package/dist/{types → esm}/RatioInput.d.ts +0 -0
  205. package/dist/esm/RatioInput.js +25 -0
  206. package/dist/esm/RatioInput.js.map +1 -0
  207. package/dist/{types → esm}/ReferenceDisplay.d.ts +0 -0
  208. package/dist/esm/ReferenceDisplay.js +21 -0
  209. package/dist/esm/ReferenceDisplay.js.map +1 -0
  210. package/dist/{types → esm}/ReferenceInput.d.ts +0 -0
  211. package/dist/esm/ReferenceInput.js +42 -0
  212. package/dist/esm/ReferenceInput.js.map +1 -0
  213. package/dist/{types → esm}/RegisterForm.d.ts +0 -0
  214. package/dist/esm/RegisterForm.js +121 -0
  215. package/dist/esm/RegisterForm.js.map +1 -0
  216. package/dist/{types → esm}/RequestGroupDisplay.d.ts +0 -0
  217. package/dist/esm/RequestGroupDisplay.js +72 -0
  218. package/dist/esm/RequestGroupDisplay.js.map +1 -0
  219. package/dist/{types → esm}/ResourceArrayDisplay.d.ts +0 -0
  220. package/dist/esm/ResourceArrayDisplay.js +14 -0
  221. package/dist/esm/ResourceArrayDisplay.js.map +1 -0
  222. package/dist/{types → esm}/ResourceArrayInput.d.ts +0 -0
  223. package/dist/esm/ResourceArrayInput.js +47 -0
  224. package/dist/esm/ResourceArrayInput.js.map +1 -0
  225. package/dist/{types → esm}/ResourceBadge.d.ts +0 -0
  226. package/dist/esm/ResourceBadge.js +13 -0
  227. package/dist/esm/ResourceBadge.js.map +1 -0
  228. package/dist/{types → esm}/ResourceBlame.d.ts +0 -0
  229. package/dist/esm/ResourceBlame.js +65 -0
  230. package/dist/esm/ResourceBlame.js.map +1 -0
  231. package/dist/{types → esm}/ResourceDiff.d.ts +0 -0
  232. package/dist/esm/ResourceDiff.js +28 -0
  233. package/dist/esm/ResourceDiff.js.map +1 -0
  234. package/dist/{types → esm}/ResourceDiffTable.d.ts +0 -0
  235. package/dist/esm/ResourceDiffTable.js +58 -0
  236. package/dist/esm/ResourceDiffTable.js.map +1 -0
  237. package/dist/{types → esm}/ResourceForm.d.ts +0 -0
  238. package/dist/esm/ResourceForm.js +55 -0
  239. package/dist/esm/ResourceForm.js.map +1 -0
  240. package/dist/{types → esm}/ResourceHistoryTable.d.ts +0 -0
  241. package/dist/esm/ResourceHistoryTable.js +45 -0
  242. package/dist/esm/ResourceHistoryTable.js.map +1 -0
  243. package/dist/{types → esm}/ResourceInput.d.ts +1 -0
  244. package/dist/esm/ResourceInput.js +41 -0
  245. package/dist/esm/ResourceInput.js.map +1 -0
  246. package/dist/{types → esm}/ResourceName.d.ts +0 -0
  247. package/dist/esm/ResourceName.js +16 -0
  248. package/dist/esm/ResourceName.js.map +1 -0
  249. package/dist/{types → esm}/ResourcePropertyDisplay.d.ts +0 -0
  250. package/dist/esm/ResourcePropertyDisplay.js +107 -0
  251. package/dist/esm/ResourcePropertyDisplay.js.map +1 -0
  252. package/dist/{types → esm}/ResourcePropertyInput.d.ts +0 -0
  253. package/dist/esm/ResourcePropertyInput.js +154 -0
  254. package/dist/esm/ResourcePropertyInput.js.map +1 -0
  255. package/dist/{types → esm}/ResourceTable.d.ts +0 -0
  256. package/dist/esm/ResourceTable.js +22 -0
  257. package/dist/esm/ResourceTable.js.map +1 -0
  258. package/dist/{types → esm}/ResourceTimeline.d.ts +0 -0
  259. package/dist/esm/ResourceTimeline.js +221 -0
  260. package/dist/esm/ResourceTimeline.js.map +1 -0
  261. package/dist/{types → esm}/Scheduler.d.ts +0 -0
  262. package/dist/esm/Scheduler.js +82 -0
  263. package/dist/esm/Scheduler.js.map +1 -0
  264. package/dist/{types → esm}/Scrollable.d.ts +0 -0
  265. package/dist/esm/Scrollable.js +12 -0
  266. package/dist/esm/Scrollable.js.map +1 -0
  267. package/dist/{types → esm}/SearchControl.d.ts +0 -0
  268. package/dist/esm/SearchControl.js +268 -0
  269. package/dist/esm/SearchControl.js.map +1 -0
  270. package/dist/{types → esm}/SearchControlField.d.ts +0 -0
  271. package/dist/esm/SearchControlField.js +98 -0
  272. package/dist/esm/SearchControlField.js.map +1 -0
  273. package/dist/{types → esm}/SearchFieldEditor.d.ts +0 -0
  274. package/dist/esm/SearchFieldEditor.js +192 -0
  275. package/dist/esm/SearchFieldEditor.js.map +1 -0
  276. package/dist/{types → esm}/SearchFilterEditor.d.ts +0 -0
  277. package/dist/esm/SearchFilterEditor.js +103 -0
  278. package/dist/esm/SearchFilterEditor.js.map +1 -0
  279. package/dist/{types → esm}/SearchFilterValueDialog.d.ts +0 -0
  280. package/dist/esm/SearchFilterValueDialog.js +22 -0
  281. package/dist/esm/SearchFilterValueDialog.js.map +1 -0
  282. package/dist/{types → esm}/SearchFilterValueDisplay.d.ts +0 -0
  283. package/dist/esm/SearchFilterValueDisplay.js +22 -0
  284. package/dist/esm/SearchFilterValueDisplay.js.map +1 -0
  285. package/dist/{types → esm}/SearchFilterValueInput.d.ts +0 -0
  286. package/dist/esm/SearchFilterValueInput.js +59 -0
  287. package/dist/esm/SearchFilterValueInput.js.map +1 -0
  288. package/dist/{types → esm}/SearchPopupMenu.d.ts +0 -0
  289. package/dist/esm/SearchPopupMenu.js +135 -0
  290. package/dist/esm/SearchPopupMenu.js.map +1 -0
  291. package/dist/{types → esm}/SearchUtils.d.ts +0 -0
  292. package/dist/esm/SearchUtils.js +487 -0
  293. package/dist/esm/SearchUtils.js.map +1 -0
  294. package/dist/{types → esm}/Select.d.ts +0 -0
  295. package/dist/esm/Select.js +16 -0
  296. package/dist/esm/Select.js.map +1 -0
  297. package/dist/{types → esm}/ServiceRequestTimeline.d.ts +0 -0
  298. package/dist/esm/ServiceRequestTimeline.js +53 -0
  299. package/dist/esm/ServiceRequestTimeline.js.map +1 -0
  300. package/dist/{types → esm}/SignInForm.d.ts +0 -0
  301. package/dist/esm/SignInForm.js +130 -0
  302. package/dist/esm/SignInForm.js.map +1 -0
  303. package/dist/{types → esm}/StatusBadge.d.ts +0 -0
  304. package/dist/esm/StatusBadge.js +8 -0
  305. package/dist/esm/StatusBadge.js.map +1 -0
  306. package/dist/{types → esm}/SubMenu.d.ts +0 -0
  307. package/dist/esm/SubMenu.js +38 -0
  308. package/dist/esm/SubMenu.js.map +1 -0
  309. package/dist/{types → esm}/Tab.d.ts +0 -0
  310. package/dist/esm/Tab.js +19 -0
  311. package/dist/esm/Tab.js.map +1 -0
  312. package/dist/{types → esm}/TabList.d.ts +0 -0
  313. package/dist/esm/TabList.js +23 -0
  314. package/dist/esm/TabList.js.map +1 -0
  315. package/dist/{types → esm}/TabPanel.d.ts +0 -0
  316. package/dist/esm/TabPanel.js +8 -0
  317. package/dist/esm/TabPanel.js.map +1 -0
  318. package/dist/{types → esm}/TabSwitch.d.ts +0 -0
  319. package/dist/esm/TabSwitch.js +16 -0
  320. package/dist/esm/TabSwitch.js.map +1 -0
  321. package/dist/{types → esm}/TextArea.d.ts +0 -0
  322. package/dist/esm/TextArea.js +16 -0
  323. package/dist/esm/TextArea.js.map +1 -0
  324. package/dist/{types → esm}/Timeline.d.ts +0 -0
  325. package/dist/esm/Timeline.js +48 -0
  326. package/dist/esm/Timeline.js.map +1 -0
  327. package/dist/esm/TimingInput.d.ts +8 -0
  328. package/dist/esm/TimingInput.js +90 -0
  329. package/dist/esm/TimingInput.js.map +1 -0
  330. package/dist/{types → esm}/TitleBar.d.ts +0 -0
  331. package/dist/esm/TitleBar.js +8 -0
  332. package/dist/esm/TitleBar.js.map +1 -0
  333. package/dist/{types → esm}/UploadButton.d.ts +0 -0
  334. package/dist/esm/UploadButton.js +55 -0
  335. package/dist/esm/UploadButton.js.map +1 -0
  336. package/dist/{types → esm}/constants.d.ts +0 -0
  337. package/dist/esm/constants.js +12 -0
  338. package/dist/esm/constants.js.map +1 -0
  339. package/dist/{types → esm}/index.d.ts +0 -1
  340. package/dist/esm/index.js +86 -5814
  341. package/dist/esm/index.js.map +1 -1
  342. package/dist/esm/index.min.js +1 -1
  343. package/dist/esm/index.min.js.map +1 -1
  344. package/dist/esm/node_modules/tslib/tslib.es6.js +27 -0
  345. package/dist/esm/node_modules/tslib/tslib.es6.js.map +1 -0
  346. package/dist/{types → esm}/stories/AddressInput.stories.d.ts +0 -0
  347. package/dist/{types → esm}/stories/AttachmentArrayInput.stories.d.ts +0 -0
  348. package/dist/{types → esm}/stories/AttachmentInput.stories.d.ts +0 -0
  349. package/dist/{types → esm}/stories/Autocomplete.stories.d.ts +1 -0
  350. package/dist/{types → esm}/stories/Avatar.stories.d.ts +0 -0
  351. package/dist/{types → esm}/stories/Button.stories.d.ts +0 -0
  352. package/dist/esm/stories/CodeableConceptDisplay.stories.d.ts +8 -0
  353. package/dist/{types → esm}/stories/DiagnosticReportDisplay.stories.d.ts +0 -0
  354. package/dist/{types → esm}/stories/Dialog.stories.d.ts +0 -0
  355. package/dist/{types → esm}/stories/EncounterTimeline.stories.d.ts +0 -0
  356. package/dist/{types → esm}/stories/FhirPathDisplay.stories.d.ts +0 -0
  357. package/dist/{types → esm}/stories/FormSection.stories.d.ts +0 -0
  358. package/dist/{types → esm}/stories/Header.stories.d.ts +0 -0
  359. package/dist/{types → esm}/stories/Input.stories.d.ts +0 -0
  360. package/dist/{types → esm}/stories/Loading.stories.d.ts +0 -0
  361. package/dist/{types → esm}/stories/Logo.stories.d.ts +0 -0
  362. package/dist/{types → esm}/stories/PatientTimeline.stories.d.ts +0 -0
  363. package/dist/{types → esm}/stories/PlanDefinitionBuilder.stories.d.ts +0 -0
  364. package/dist/{types → esm}/stories/QuestionnaireBuilder.stories.d.ts +0 -0
  365. package/dist/{types → esm}/stories/QuestionnaireForm.stories.d.ts +0 -0
  366. package/dist/{types → esm}/stories/ReferenceInput.stories.d.ts +0 -0
  367. package/dist/{types → esm}/stories/RegisterForm.stories.d.ts +0 -0
  368. package/dist/{types → esm}/stories/RequestGroupDisplay.stories.d.ts +0 -0
  369. package/dist/{types → esm}/stories/ResourceBlame.stories.d.ts +0 -0
  370. package/dist/{types → esm}/stories/ResourceForm.stories.d.ts +0 -0
  371. package/dist/{types → esm}/stories/ResourceHistoryTable.stories.d.ts +0 -0
  372. package/dist/{types → esm}/stories/ResourceTable.stories.d.ts +0 -0
  373. package/dist/{types → esm}/stories/Scheduler.stories.d.ts +0 -0
  374. package/dist/{types → esm}/stories/SearchControl.stories.d.ts +0 -0
  375. package/dist/{types → esm}/stories/Select.stories.d.ts +0 -0
  376. package/dist/{types → esm}/stories/SignInForm.stories.d.ts +0 -0
  377. package/dist/{types → esm}/stories/StatusBadge.stories.d.ts +0 -0
  378. package/dist/{types → esm}/stories/Tabs.stories.d.ts +0 -0
  379. package/dist/{types → esm}/stories/Timeline.stories.d.ts +0 -0
  380. package/dist/esm/stories/TimingInput.stories.d.ts +6 -0
  381. package/dist/{types → esm}/stories/UploadButton.stories.d.ts +0 -0
  382. package/dist/esm/styles.css +83 -79
  383. package/dist/{types → esm}/test.setup.d.ts +0 -0
  384. package/dist/{types → esm}/useResource.d.ts +0 -0
  385. package/dist/esm/useResource.js +65 -0
  386. package/dist/esm/useResource.js.map +1 -0
  387. package/dist/{types → esm}/utils/blame.d.ts +0 -0
  388. package/dist/esm/utils/blame.js +74 -0
  389. package/dist/esm/utils/blame.js.map +1 -0
  390. package/dist/{types → esm}/utils/date.d.ts +0 -0
  391. package/dist/esm/utils/date.js +48 -0
  392. package/dist/esm/utils/date.js.map +1 -0
  393. package/dist/{types → esm}/utils/diff.d.ts +0 -0
  394. package/dist/esm/utils/diff.js +118 -0
  395. package/dist/esm/utils/diff.js.map +1 -0
  396. package/dist/{types → esm}/utils/dom.d.ts +0 -0
  397. package/dist/esm/utils/dom.js +34 -0
  398. package/dist/esm/utils/dom.js.map +1 -0
  399. package/dist/{types → esm}/utils/outcomes.d.ts +0 -0
  400. package/dist/esm/utils/outcomes.js +7 -0
  401. package/dist/esm/utils/outcomes.js.map +1 -0
  402. package/dist/{types → esm}/utils/recaptcha.d.ts +0 -0
  403. package/dist/esm/utils/recaptcha.js +27 -0
  404. package/dist/esm/utils/recaptcha.js.map +1 -0
  405. package/dist/{types → esm}/utils.d.ts +0 -0
  406. package/dist/esm/utils.js +15 -0
  407. package/dist/esm/utils.js.map +1 -0
  408. package/package.json +7 -7
  409. package/stats.html +4034 -0
  410. package/dist/types/DateTimeDisplay.d.ts +0 -5
  411. package/dist/types/PeriodDisplay.d.ts +0 -6
@@ -468,11 +468,75 @@ input[type='radio']:disabled {
468
468
  background: var(--medplum-gray-100);
469
469
  }
470
470
 
471
- .medplum-resource-badge {
472
- display: inline-flex;
471
+ .modal-dialog {
472
+ background: var(--medplum-gray-600);
473
+ border: 0.1px solid var(--medplum-gray-700);
474
+ color: var(--medplum-foreground);
475
+ padding: 0;
476
+ position: absolute;
477
+ z-index: 21;
478
+ box-shadow: var(--medplum-shadow) 0 2px 6px;
479
+ outline: 0;
480
+ }
481
+
482
+ .modal-dialog a,
483
+ .modal-dialog a:link,
484
+ .modal-dialog a:visited {
485
+ color: var(--medplum-blue-800);
486
+ cursor: pointer;
487
+ }
488
+
489
+ .modal-dialog-bg {
490
+ background: rgba(0, 0, 0, 0.5);
491
+ left: 0;
492
+ position: absolute;
493
+ top: 0;
494
+ right: 0;
495
+ bottom: 0;
496
+ z-index: 20;
497
+ }
498
+
499
+ .modal-dialog-title {
500
+ background: var(--medplum-gray-800);
501
+ color: var(--medplum-surface);
502
+ cursor: pointer;
503
+ padding: 6px;
504
+ display: flex;
505
+ justify-content: space-between;
473
506
  align-items: center;
474
- gap: 4px;
475
- white-space: nowrap;
507
+ }
508
+
509
+ .modal-dialog-title-close {
510
+ cursor: pointer;
511
+ vertical-align: middle;
512
+ width: 20px;
513
+ height: 20px;
514
+ }
515
+
516
+ .modal-dialog-title-close:hover {
517
+ background-color: var(--medplum-gray-700);
518
+ }
519
+
520
+ .modal-dialog-title-close > svg {
521
+ width: 20px;
522
+ height: 20px;
523
+ }
524
+
525
+ .modal-dialog-content {
526
+ text-align: center;
527
+ background-color: var(--medplum-surface);
528
+ padding: 8px;
529
+ }
530
+
531
+ .modal-dialog-buttons {
532
+ text-align: right;
533
+ background-color: var(--medplum-gray-100);
534
+ border-top: 1px solid var(--medplum-gray-400);
535
+ padding: 8px;
536
+ }
537
+
538
+ .modal-dialog-buttons button {
539
+ padding: 1px 6px;
476
540
  }
477
541
 
478
542
  .medplum-diagnostic-report-header {
@@ -513,6 +577,13 @@ input[type='radio']:disabled {
513
577
  margin: 0;
514
578
  }
515
579
 
580
+ .medplum-resource-badge {
581
+ display: inline-flex;
582
+ align-items: center;
583
+ gap: 4px;
584
+ white-space: nowrap;
585
+ }
586
+
516
587
  table.medplum-table {
517
588
  border-collapse: collapse;
518
589
  width: 100%;
@@ -797,74 +868,6 @@ table.medplum-diff-table td {
797
868
  width: 100%;
798
869
  }
799
870
 
800
- .modal-dialog {
801
- background: var(--medplum-gray-600);
802
- border: 0.1px solid var(--medplum-gray-700);
803
- color: var(--medplum-foreground);
804
- padding: 0;
805
- position: absolute;
806
- z-index: 21;
807
- box-shadow: var(--medplum-shadow) 0 2px 6px;
808
- outline: 0;
809
- }
810
-
811
- .modal-dialog a,
812
- .modal-dialog a:link,
813
- .modal-dialog a:visited {
814
- color: var(--medplum-blue-800);
815
- cursor: pointer;
816
- }
817
-
818
- .modal-dialog-bg {
819
- background: rgba(0, 0, 0, 0.5);
820
- left: 0;
821
- position: absolute;
822
- top: 0;
823
- right: 0;
824
- bottom: 0;
825
- z-index: 20;
826
- }
827
-
828
- .modal-dialog-title {
829
- background: var(--medplum-gray-800);
830
- color: var(--medplum-surface);
831
- cursor: pointer;
832
- padding: 6px;
833
- display: flex;
834
- justify-content: space-between;
835
- }
836
-
837
- .modal-dialog-title-close {
838
- cursor: pointer;
839
- vertical-align: middle;
840
- }
841
-
842
- .modal-dialog-title-close:hover {
843
- background-color: var(--medplum-gray-700);
844
- }
845
-
846
- .modal-dialog-title-close > svg {
847
- width: 20px;
848
- height: 20px;
849
- }
850
-
851
- .modal-dialog-content {
852
- text-align: center;
853
- background-color: var(--medplum-surface);
854
- padding: 8px;
855
- }
856
-
857
- .modal-dialog-buttons {
858
- text-align: right;
859
- background-color: var(--medplum-gray-100);
860
- border-top: 1px solid var(--medplum-gray-400);
861
- padding: 8px;
862
- }
863
-
864
- .modal-dialog-buttons button {
865
- padding: 1px 6px;
866
- }
867
-
868
871
  .medplum-filter-editor {
869
872
  text-align: left;
870
873
  width: 900px;
@@ -1316,10 +1319,10 @@ div.medplum-nav-menu-container {
1316
1319
 
1317
1320
  .medplum-questionnaire-builder .section {
1318
1321
  position: relative;
1319
- margin: 4px;
1320
- padding: 16px 12px 16px 4px;
1322
+ margin: 4px 4px 4px 0;
1323
+ padding: 4px 12px 16px 2px;
1321
1324
  background-color: var(--medplum-surface);
1322
- border: 1px solid var(--medplum-gray-300);
1325
+ border: 1px solid var(--medplum-surface);
1323
1326
  border-radius: 8px;
1324
1327
  }
1325
1328
 
@@ -1328,18 +1331,19 @@ div.medplum-nav-menu-container {
1328
1331
  }
1329
1332
 
1330
1333
  .medplum-questionnaire-builder .section.hovering {
1331
- border-color: var(--medplum-blue-500);
1334
+ border: 1px solid var(--medplum-blue-500);
1332
1335
  }
1333
1336
 
1334
1337
  .medplum-questionnaire-builder .section.editing {
1335
- margin: 8px 4px 12px 4px;
1336
- padding: 4px 4px 20px 4px;
1338
+ margin: 8px 4px 12px 0;
1339
+ padding: 4px 4px 20px 12px;
1340
+ border: 1px solid var(--medplum-gray-300);
1337
1341
  border-left: 4px solid var(--medplum-blue-500);
1338
1342
  }
1339
1343
 
1340
1344
  .medplum-questionnaire-builder .section.editing input,
1341
1345
  .medplum-questionnaire-builder .section.editing select {
1342
- margin: 2px 4px;
1346
+ margin: 2px 4px 2px 0;
1343
1347
  }
1344
1348
 
1345
1349
  .medplum-questionnaire-builder .section > .top-actions {
File without changes
@@ -0,0 +1,13 @@
1
+ import { formatAddress } from '@medplum/core';
2
+ import React from 'react';
3
+
4
+ function AddressDisplay(props) {
5
+ const address = props.value;
6
+ if (!address) {
7
+ return null;
8
+ }
9
+ return React.createElement(React.Fragment, null, formatAddress(address));
10
+ }
11
+
12
+ export { AddressDisplay };
13
+ //# sourceMappingURL=AddressDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddressDisplay.js","sources":["../../src/AddressDisplay.tsx"],"sourcesContent":["import { formatAddress } from '@medplum/core';\nimport { Address } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface AddressDisplayProps {\n value?: Address;\n}\n\nexport function AddressDisplay(props: AddressDisplayProps): JSX.Element | null {\n const address = props.value;\n if (!address) {\n return null;\n }\n\n return <>{formatAddress(address)}</>;\n}\n"],"names":[],"mappings":";;;AAQM,SAAU,cAAc,CAAC,KAA0B,EAAA;AACvD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,OAAO,0CAAG,aAAa,CAAC,OAAO,CAAC,CAAI,CAAC;AACvC;;;;"}
File without changes
@@ -0,0 +1,69 @@
1
+ import React, { useState, useRef } from 'react';
2
+ import { Input } from './Input.js';
3
+ import { InputRow } from './InputRow.js';
4
+ import { Select } from './Select.js';
5
+
6
+ function getLine(address, index) {
7
+ return address && address.line && address.line.length > index ? address.line[index] : '';
8
+ }
9
+ function setLine(address, index, str) {
10
+ const line = address.line || [];
11
+ while (line.length <= index) {
12
+ line.push('');
13
+ }
14
+ line[index] = str;
15
+ return Object.assign(Object.assign({}, address), { line });
16
+ }
17
+ function AddressInput(props) {
18
+ const [value, setValue] = useState(props.defaultValue || {});
19
+ const valueRef = useRef();
20
+ valueRef.current = value;
21
+ function setValueWrapper(newValue) {
22
+ setValue(newValue);
23
+ if (props.onChange) {
24
+ props.onChange(newValue);
25
+ }
26
+ }
27
+ function setUse(use) {
28
+ setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { use }));
29
+ }
30
+ function setType(type) {
31
+ setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { type }));
32
+ }
33
+ function setLine1(line1) {
34
+ setValueWrapper(setLine(valueRef.current || {}, 0, line1));
35
+ }
36
+ function setLine2(line2) {
37
+ setValueWrapper(setLine(valueRef.current || {}, 1, line2));
38
+ }
39
+ function setCity(city) {
40
+ setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { city }));
41
+ }
42
+ function setState(state) {
43
+ setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { state }));
44
+ }
45
+ function setPostalCode(postalCode) {
46
+ setValueWrapper(Object.assign(Object.assign({}, valueRef.current), { postalCode }));
47
+ }
48
+ return (React.createElement(InputRow, null,
49
+ React.createElement(Select, { testid: "address-use", defaultValue: value === null || value === void 0 ? void 0 : value.use, onChange: setUse },
50
+ React.createElement("option", null),
51
+ React.createElement("option", null, "home"),
52
+ React.createElement("option", null, "mobile"),
53
+ React.createElement("option", null, "old"),
54
+ React.createElement("option", null, "temp"),
55
+ React.createElement("option", null, "work")),
56
+ React.createElement(Select, { testid: "address-type", defaultValue: value === null || value === void 0 ? void 0 : value.type, onChange: setType },
57
+ React.createElement("option", null),
58
+ React.createElement("option", null, "postal"),
59
+ React.createElement("option", null, "physical"),
60
+ React.createElement("option", null, "both")),
61
+ React.createElement(Input, { placeholder: "Line 1", defaultValue: getLine(value, 0), onChange: setLine1 }),
62
+ React.createElement(Input, { placeholder: "Line 2", defaultValue: getLine(value, 1), onChange: setLine2 }),
63
+ React.createElement(Input, { placeholder: "City", defaultValue: value.city, onChange: setCity }),
64
+ React.createElement(Input, { placeholder: "State", defaultValue: value.state, onChange: setState }),
65
+ React.createElement(Input, { placeholder: "Postal Code", defaultValue: value.postalCode, onChange: setPostalCode })));
66
+ }
67
+
68
+ export { AddressInput };
69
+ //# sourceMappingURL=AddressInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddressInput.js","sources":["../../src/AddressInput.tsx"],"sourcesContent":["import { Address } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\nimport { Input } from './Input';\nimport { InputRow } from './InputRow';\nimport { Select } from './Select';\n\nfunction getLine(address: Address, index: number): string {\n return address && address.line && address.line.length > index ? address.line[index] : '';\n}\n\nfunction setLine(address: Address, index: number, str: string): Address {\n const line: string[] = address.line || [];\n while (line.length <= index) {\n line.push('');\n }\n line[index] = str;\n return { ...address, line };\n}\n\nexport interface AddressInputProps {\n name: string;\n defaultValue?: Address;\n onChange?: (value: Address) => void;\n}\n\nexport function AddressInput(props: AddressInputProps): JSX.Element {\n const [value, setValue] = useState<Address>(props.defaultValue || {});\n\n const valueRef = useRef<Address>();\n valueRef.current = value;\n\n function setValueWrapper(newValue: Address): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n function setUse(use: string): void {\n setValueWrapper({ ...valueRef.current, use });\n }\n\n function setType(type: string): void {\n setValueWrapper({ ...valueRef.current, type });\n }\n\n function setLine1(line1: string): void {\n setValueWrapper(setLine(valueRef.current || {}, 0, line1));\n }\n\n function setLine2(line2: string): void {\n setValueWrapper(setLine(valueRef.current || {}, 1, line2));\n }\n\n function setCity(city: string): void {\n setValueWrapper({ ...valueRef.current, city });\n }\n\n function setState(state: string): void {\n setValueWrapper({ ...valueRef.current, state });\n }\n\n function setPostalCode(postalCode: string): void {\n setValueWrapper({ ...valueRef.current, postalCode });\n }\n\n return (\n <InputRow>\n <Select testid=\"address-use\" defaultValue={value?.use} onChange={setUse}>\n <option></option>\n <option>home</option>\n <option>mobile</option>\n <option>old</option>\n <option>temp</option>\n <option>work</option>\n </Select>\n <Select testid=\"address-type\" defaultValue={value?.type} onChange={setType}>\n <option></option>\n <option>postal</option>\n <option>physical</option>\n <option>both</option>\n </Select>\n <Input placeholder=\"Line 1\" defaultValue={getLine(value, 0)} onChange={setLine1} />\n <Input placeholder=\"Line 2\" defaultValue={getLine(value, 1)} onChange={setLine2} />\n <Input placeholder=\"City\" defaultValue={value.city} onChange={setCity} />\n <Input placeholder=\"State\" defaultValue={value.state} onChange={setState} />\n <Input placeholder=\"Postal Code\" defaultValue={value.postalCode} onChange={setPostalCode} />\n </InputRow>\n );\n}\n"],"names":[],"mappings":"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"}
File without changes
@@ -0,0 +1,28 @@
1
+ import { createReference } from '@medplum/core';
2
+ import React, { useState, useRef } from 'react';
3
+ import { Input } from './Input.js';
4
+ import { useMedplumProfile } from './MedplumProvider.js';
5
+
6
+ function AnnotationInput(props) {
7
+ const author = useMedplumProfile();
8
+ const [value, setValue] = useState(props.defaultValue || {});
9
+ const valueRef = useRef();
10
+ valueRef.current = value;
11
+ function setText(text) {
12
+ const newValue = text
13
+ ? {
14
+ text,
15
+ authorReference: author && createReference(author),
16
+ time: new Date().toISOString(),
17
+ }
18
+ : {};
19
+ setValue(newValue);
20
+ if (props.onChange) {
21
+ props.onChange(newValue);
22
+ }
23
+ }
24
+ return (React.createElement(Input, { name: props.name, type: "text", placeholder: "Annotation text", defaultValue: value.text, onChange: setText }));
25
+ }
26
+
27
+ export { AnnotationInput };
28
+ //# sourceMappingURL=AnnotationInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnnotationInput.js","sources":["../../src/AnnotationInput.tsx"],"sourcesContent":["import { createReference } from '@medplum/core';\nimport { Annotation } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\nimport { Input } from './Input';\nimport { useMedplumProfile } from './MedplumProvider';\n\nexport interface AnnotationInputProps {\n name: string;\n defaultValue?: Annotation;\n onChange?: (value: Annotation) => void;\n}\n\nexport function AnnotationInput(props: AnnotationInputProps): JSX.Element {\n const author = useMedplumProfile();\n const [value, setValue] = useState<Annotation>(props.defaultValue || {});\n\n const valueRef = useRef<Annotation>();\n valueRef.current = value;\n\n function setText(text: string): void {\n const newValue: Annotation = text\n ? {\n text,\n authorReference: author && createReference(author),\n time: new Date().toISOString(),\n }\n : {};\n\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n return (\n <Input name={props.name} type=\"text\" placeholder=\"Annotation text\" defaultValue={value.text} onChange={setText} />\n );\n}\n"],"names":[],"mappings":";;;;;AAYM,SAAU,eAAe,CAAC,KAA2B,EAAA;AACzD,IAAA,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;AACnC,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAa,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;AAEzE,IAAA,MAAM,QAAQ,GAAG,MAAM,EAAc,CAAC;AACtC,IAAA,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAEzB,SAAS,OAAO,CAAC,IAAY,EAAA;QAC3B,MAAM,QAAQ,GAAe,IAAI;AAC/B,cAAE;gBACE,IAAI;AACJ,gBAAA,eAAe,EAAE,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC;AAClD,gBAAA,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC/B,aAAA;cACD,EAAE,CAAC;QAEP,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;KACF;AAED,IAAA,QACE,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,WAAW,EAAC,iBAAiB,EAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAA,CAAI,EAClH;AACJ;;;;"}
File without changes
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { AttachmentDisplay } from './AttachmentDisplay.js';
3
+
4
+ function AttachmentArrayDisplay(props) {
5
+ return (React.createElement("div", null, props.values &&
6
+ props.values.map((v, index) => (React.createElement("div", { key: 'attatchment-' + index },
7
+ React.createElement(AttachmentDisplay, { value: v, maxWidth: props.maxWidth }))))));
8
+ }
9
+
10
+ export { AttachmentArrayDisplay };
11
+ //# sourceMappingURL=AttachmentArrayDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentArrayDisplay.js","sources":["../../src/AttachmentArrayDisplay.tsx"],"sourcesContent":["import { Attachment } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { AttachmentDisplay } from './AttachmentDisplay';\n\nexport interface AttachmentArrayDisplayProps {\n values?: Attachment[];\n maxWidth?: number;\n}\n\nexport function AttachmentArrayDisplay(props: AttachmentArrayDisplayProps): JSX.Element {\n return (\n <div>\n {props.values &&\n props.values.map((v, index) => (\n <div key={'attatchment-' + index}>\n <AttachmentDisplay value={v} maxWidth={props.maxWidth} />\n </div>\n ))}\n </div>\n );\n}\n"],"names":[],"mappings":";;;AASM,SAAU,sBAAsB,CAAC,KAAkC,EAAA;AACvE,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EACG,KAAK,CAAC,MAAM;AACX,QAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MACxB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,cAAc,GAAG,KAAK,EAAA;AAC9B,YAAA,KAAA,CAAA,aAAA,CAAC,iBAAiB,EAAC,EAAA,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAI,CAAA,CACrD,CACP,CAAC,CACA,EACN;AACJ;;;;"}
File without changes
@@ -0,0 +1,42 @@
1
+ import React, { useState, useRef } from 'react';
2
+ import { AttachmentDisplay } from './AttachmentDisplay.js';
3
+ import { Button } from './Button.js';
4
+ import { UploadButton } from './UploadButton.js';
5
+ import { killEvent } from './utils/dom.js';
6
+
7
+ function AttachmentArrayInput(props) {
8
+ var _a;
9
+ const [values, setValues] = useState((_a = props.defaultValue) !== null && _a !== void 0 ? _a : []);
10
+ const valuesRef = useRef();
11
+ valuesRef.current = values;
12
+ function setValuesWrapper(newValues) {
13
+ setValues(newValues);
14
+ if (props.onChange) {
15
+ props.onChange(newValues);
16
+ }
17
+ }
18
+ return (React.createElement("table", { style: { width: '100%' } },
19
+ React.createElement("colgroup", null,
20
+ React.createElement("col", { width: "90%" }),
21
+ React.createElement("col", { width: "10%" })),
22
+ React.createElement("tbody", null,
23
+ values.map((v, index) => (React.createElement("tr", { key: `${index}-${values.length}` },
24
+ React.createElement("td", null,
25
+ React.createElement(AttachmentDisplay, { value: v, maxWidth: 200 })),
26
+ React.createElement("td", { className: "medplum-right" },
27
+ React.createElement(Button, { onClick: (e) => {
28
+ killEvent(e);
29
+ const copy = values.slice();
30
+ copy.splice(index, 1);
31
+ setValuesWrapper(copy);
32
+ } }, "Remove"))))),
33
+ React.createElement("tr", null,
34
+ React.createElement("td", null),
35
+ React.createElement("td", { className: "medplum-right" },
36
+ React.createElement(UploadButton, { onUpload: (attachment) => {
37
+ setValuesWrapper([...valuesRef.current, attachment]);
38
+ } }))))));
39
+ }
40
+
41
+ export { AttachmentArrayInput };
42
+ //# sourceMappingURL=AttachmentArrayInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentArrayInput.js","sources":["../../src/AttachmentArrayInput.tsx"],"sourcesContent":["import { Attachment } from '@medplum/fhirtypes';\nimport React, { useRef, useState } from 'react';\nimport { AttachmentDisplay } from './AttachmentDisplay';\nimport { Button } from './Button';\nimport { UploadButton } from './UploadButton';\nimport { killEvent } from './utils/dom';\n\nexport interface AttachmentArrayInputProps {\n name: string;\n defaultValue?: Attachment[];\n arrayElement?: boolean;\n onChange?: (value: Attachment[]) => void;\n}\n\nexport function AttachmentArrayInput(props: AttachmentArrayInputProps): JSX.Element {\n const [values, setValues] = useState<Attachment[]>(props.defaultValue ?? []);\n\n const valuesRef = useRef<Attachment[]>();\n valuesRef.current = values;\n\n function setValuesWrapper(newValues: Attachment[]): void {\n setValues(newValues);\n if (props.onChange) {\n props.onChange(newValues);\n }\n }\n\n return (\n <table style={{ width: '100%' }}>\n <colgroup>\n <col width=\"90%\" />\n <col width=\"10%\" />\n </colgroup>\n <tbody>\n {values.map((v: Attachment, index: number) => (\n <tr key={`${index}-${values.length}`}>\n <td>\n <AttachmentDisplay value={v} maxWidth={200} />\n </td>\n <td className=\"medplum-right\">\n <Button\n onClick={(e) => {\n killEvent(e);\n const copy = values.slice();\n copy.splice(index, 1);\n setValuesWrapper(copy);\n }}\n >\n Remove\n </Button>\n </td>\n </tr>\n ))}\n <tr>\n <td></td>\n <td className=\"medplum-right\">\n <UploadButton\n onUpload={(attachment: Attachment) => {\n setValuesWrapper([...(valuesRef.current as Attachment[]), attachment]);\n }}\n />\n </td>\n </tr>\n </tbody>\n </table>\n );\n}\n"],"names":[],"mappings":";;;;;;AAcM,SAAU,oBAAoB,CAAC,KAAgC,EAAA;;AACnE,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAe,CAAA,EAAA,GAAA,KAAK,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC,CAAC;AAE7E,IAAA,MAAM,SAAS,GAAG,MAAM,EAAgB,CAAC;AACzC,IAAA,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;IAE3B,SAAS,gBAAgB,CAAC,SAAuB,EAAA;QAC/C,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC3B,SAAA;KACF;IAED,QACE,+BAAO,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA;AAC7B,QAAA,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,IAAA;YACE,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,KAAK,EAAG,CAAA;AACnB,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,KAAK,EAAA,CAAG,CACV;AACX,QAAA,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA;YACG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAa,EAAE,KAAa,MACvC,KAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,CAAG,EAAA,KAAK,IAAI,MAAM,CAAC,MAAM,CAAE,CAAA,EAAA;AAClC,gBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;oBACE,KAAC,CAAA,aAAA,CAAA,iBAAiB,EAAC,EAAA,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAA,CAAI,CAC3C;gBACL,KAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,SAAS,EAAC,eAAe,EAAA;AAC3B,oBAAA,KAAA,CAAA,aAAA,CAAC,MAAM,EACL,EAAA,OAAO,EAAE,CAAC,CAAC,KAAI;4BACb,SAAS,CAAC,CAAC,CAAC,CAAC;AACb,4BAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,4BAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;4BACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACzB,yBAAC,EAGM,EAAA,QAAA,CAAA,CACN,CACF,CACN,CAAC;AACF,YAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;gBACE,KAAS,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;gBACT,KAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,SAAS,EAAC,eAAe,EAAA;AAC3B,oBAAA,KAAA,CAAA,aAAA,CAAC,YAAY,EACX,EAAA,QAAQ,EAAE,CAAC,UAAsB,KAAI;4BACnC,gBAAgB,CAAC,CAAC,GAAI,SAAS,CAAC,OAAwB,EAAE,UAAU,CAAC,CAAC,CAAC;AACzE,yBAAC,GACD,CACC,CACF,CACC,CACF,EACR;AACJ;;;;"}
File without changes
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+
3
+ function AttachmentDisplay(props) {
4
+ const value = props.value;
5
+ const { contentType, url, title } = value !== null && value !== void 0 ? value : {};
6
+ if (!url) {
7
+ return null;
8
+ }
9
+ return (React.createElement("div", { "data-testid": "attachment-display" },
10
+ (contentType === null || contentType === void 0 ? void 0 : contentType.startsWith('image/')) && (React.createElement("img", { "data-testid": "attachment-image", style: { maxWidth: props.maxWidth }, src: url, alt: value === null || value === void 0 ? void 0 : value.title })),
11
+ (contentType === null || contentType === void 0 ? void 0 : contentType.startsWith('video/')) && (React.createElement("video", { "data-testid": "attachment-video", style: { maxWidth: props.maxWidth }, controls: true },
12
+ React.createElement("source", { type: contentType, src: url }))),
13
+ contentType === 'application/pdf' && !(title === null || title === void 0 ? void 0 : title.endsWith('.pdf')) && (React.createElement("div", { "data-testid": "attachment-pdf", style: { maxWidth: props.maxWidth, minHeight: 400 } },
14
+ React.createElement("iframe", { width: "100%", height: "400", src: url + '#navpanes=0', allowFullScreen: true, frameBorder: 0, seamless: true }))),
15
+ React.createElement("div", { "data-testid": "download-link", style: { padding: '2px 16px 16px 16px' } },
16
+ React.createElement("a", { href: value === null || value === void 0 ? void 0 : value.url, "data-testid": "attachment-details", target: "_blank", rel: "noopener noreferrer" }, (value === null || value === void 0 ? void 0 : value.title) || 'Download'))));
17
+ }
18
+
19
+ export { AttachmentDisplay };
20
+ //# sourceMappingURL=AttachmentDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentDisplay.js","sources":["../../src/AttachmentDisplay.tsx"],"sourcesContent":["import { Attachment } from '@medplum/fhirtypes';\nimport React from 'react';\n\nexport interface AttachmentDisplayProps {\n value?: Attachment;\n maxWidth?: number;\n}\n\nexport function AttachmentDisplay(props: AttachmentDisplayProps): JSX.Element | null {\n const value = props.value;\n const { contentType, url, title } = value ?? {};\n\n if (!url) {\n return null;\n }\n\n return (\n <div data-testid=\"attachment-display\">\n {contentType?.startsWith('image/') && (\n <img data-testid=\"attachment-image\" style={{ maxWidth: props.maxWidth }} src={url} alt={value?.title} />\n )}\n {contentType?.startsWith('video/') && (\n <video data-testid=\"attachment-video\" style={{ maxWidth: props.maxWidth }} controls={true}>\n <source type={contentType} src={url} />\n </video>\n )}\n {contentType === 'application/pdf' && !title?.endsWith('.pdf') && (\n <div data-testid=\"attachment-pdf\" style={{ maxWidth: props.maxWidth, minHeight: 400 }}>\n <iframe\n width=\"100%\"\n height=\"400\"\n src={url + '#navpanes=0'}\n allowFullScreen={true}\n frameBorder={0}\n seamless={true}\n />\n </div>\n )}\n <div data-testid=\"download-link\" style={{ padding: '2px 16px 16px 16px' }}>\n <a href={value?.url} data-testid=\"attachment-details\" target=\"_blank\" rel=\"noopener noreferrer\">\n {value?.title || 'Download'}\n </a>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":";;AAQM,SAAU,iBAAiB,CAAC,KAA6B,EAAA;AAC7D,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B,IAAA,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAL,KAAK,GAAI,EAAE,CAAC;IAEhD,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAED,QACE,4CAAiB,oBAAoB,EAAA;AAClC,QAAA,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,UAAU,CAAC,QAAQ,CAAC,MAChC,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EAAiB,kBAAkB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,KAAK,GAAI,CACzG;QACA,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,UAAU,CAAC,QAAQ,CAAC,MAChC,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,aAAA,EAAmB,kBAAkB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAA;YACvF,KAAQ,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAI,CAAA,CACjC,CACT;AACA,QAAA,WAAW,KAAK,iBAAiB,IAAI,EAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,QAAQ,CAAC,MAAM,CAAC,CAAA,KAC5D,KAAiB,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EAAA,gBAAgB,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,EAAA;YACnF,KACE,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,KAAK,EACZ,GAAG,EAAE,GAAG,GAAG,aAAa,EACxB,eAAe,EAAE,IAAI,EACrB,WAAW,EAAE,CAAC,EACd,QAAQ,EAAE,IAAI,EACd,CAAA,CACE,CACP;QACD,KAAiB,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EAAA,eAAe,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAA;AACvE,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,GAAG,iBAAc,oBAAoB,EAAC,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,EAC5F,EAAA,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,KAAI,UAAU,CACzB,CACA,CACF,EACN;AACJ;;;;"}
File without changes
@@ -0,0 +1,27 @@
1
+ import React, { useState } from 'react';
2
+ import { AttachmentDisplay } from './AttachmentDisplay.js';
3
+ import { Button } from './Button.js';
4
+ import { UploadButton } from './UploadButton.js';
5
+ import { killEvent } from './utils/dom.js';
6
+
7
+ function AttachmentInput(props) {
8
+ const [value, setValue] = useState(props.defaultValue);
9
+ function setValueWrapper(newValue) {
10
+ setValue(newValue);
11
+ if (props.onChange) {
12
+ props.onChange(newValue);
13
+ }
14
+ }
15
+ if (value) {
16
+ return (React.createElement(React.Fragment, null,
17
+ React.createElement(AttachmentDisplay, { value: value, maxWidth: 200 }),
18
+ React.createElement(Button, { onClick: (e) => {
19
+ killEvent(e);
20
+ setValueWrapper(undefined);
21
+ } }, "Remove")));
22
+ }
23
+ return React.createElement(UploadButton, { onUpload: setValueWrapper });
24
+ }
25
+
26
+ export { AttachmentInput };
27
+ //# sourceMappingURL=AttachmentInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachmentInput.js","sources":["../../src/AttachmentInput.tsx"],"sourcesContent":["import { Attachment } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { AttachmentDisplay } from './AttachmentDisplay';\nimport { Button } from './Button';\nimport { UploadButton } from './UploadButton';\nimport { killEvent } from './utils/dom';\n\nexport interface AttachmentInputProps {\n name: string;\n defaultValue?: Attachment;\n arrayElement?: boolean;\n onChange?: (value: Attachment | undefined) => void;\n}\n\nexport function AttachmentInput(props: AttachmentInputProps): JSX.Element {\n const [value, setValue] = useState(props.defaultValue);\n\n function setValueWrapper(newValue: Attachment | undefined): void {\n setValue(newValue);\n if (props.onChange) {\n props.onChange(newValue);\n }\n }\n\n if (value) {\n return (\n <>\n <AttachmentDisplay value={value} maxWidth={200} />\n <Button\n onClick={(e) => {\n killEvent(e);\n setValueWrapper(undefined);\n }}\n >\n Remove\n </Button>\n </>\n );\n }\n\n return <UploadButton onUpload={setValueWrapper} />;\n}\n"],"names":[],"mappings":";;;;;;AAcM,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,QAAgC,EAAA;QACvD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1B,SAAA;KACF;AAED,IAAA,IAAI,KAAK,EAAE;AACT,QAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;YACE,KAAC,CAAA,aAAA,CAAA,iBAAiB,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAI,CAAA;AAClD,YAAA,KAAA,CAAA,aAAA,CAAC,MAAM,EACL,EAAA,OAAO,EAAE,CAAC,CAAC,KAAI;oBACb,SAAS,CAAC,CAAC,CAAC,CAAC;oBACb,eAAe,CAAC,SAAS,CAAC,CAAC;iBAC5B,EAAA,EAAA,QAAA,CAGM,CACR,EACH;AACH,KAAA;AAED,IAAA,OAAO,oBAAC,YAAY,EAAA,EAAC,QAAQ,EAAE,eAAe,GAAI,CAAC;AACrD;;;;"}
@@ -7,6 +7,7 @@ export interface AutocompleteProps<T> {
7
7
  defaultValue?: T[];
8
8
  className?: string;
9
9
  placeholder?: string;
10
+ loadOnFocus?: boolean;
10
11
  loadOptions: (input: string, signal: AbortSignal) => Promise<T[]>;
11
12
  buildUnstructured?: (input: string) => T;
12
13
  getId: (item: T) => string;