@medplum/react 2.0.18 → 2.0.20

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 (198) hide show
  1. package/dist/cjs/index.cjs +200 -105
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.min.cjs +1 -1
  4. package/dist/esm/AppShell/AppShell.mjs +1 -1
  5. package/dist/esm/AppShell/AppShell.mjs.map +1 -1
  6. package/dist/esm/AppShell/HeaderSearchInput.mjs +2 -4
  7. package/dist/esm/AppShell/HeaderSearchInput.mjs.map +1 -1
  8. package/dist/esm/AppShell/Navbar.mjs +83 -34
  9. package/dist/esm/AppShell/Navbar.mjs.map +1 -1
  10. package/dist/esm/BookmarkDialog/BookmarkDialog.mjs +1 -3
  11. package/dist/esm/BookmarkDialog/BookmarkDialog.mjs.map +1 -1
  12. package/dist/esm/GoogleButton/GoogleButton.mjs +2 -2
  13. package/dist/esm/GoogleButton/GoogleButton.mjs.map +1 -1
  14. package/dist/esm/SearchControl/SearchControl.mjs +2 -2
  15. package/dist/esm/SearchControl/SearchControl.mjs.map +1 -1
  16. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.mjs +3 -2
  17. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.mjs.map +1 -1
  18. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.mjs +3 -0
  19. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.mjs.map +1 -1
  20. package/dist/esm/index.min.mjs +1 -1
  21. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs +2 -1
  22. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs.map +1 -1
  23. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.mjs +1 -1
  24. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.mjs.map +1 -1
  25. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustmentsHorizontal.mjs +2 -1
  26. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconAdjustmentsHorizontal.mjs.map +1 -1
  27. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertCircle.mjs +2 -1
  28. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertCircle.mjs.map +1 -1
  29. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBleach.mjs +2 -1
  30. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBleach.mjs.map +1 -1
  31. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBleachOff.mjs +2 -1
  32. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBleachOff.mjs.map +1 -1
  33. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBoxMultiple.mjs +2 -1
  34. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBoxMultiple.mjs.map +1 -1
  35. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBracketsContain.mjs +2 -1
  36. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBracketsContain.mjs.map +1 -1
  37. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBucket.mjs +2 -1
  38. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBucket.mjs.map +1 -1
  39. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBucketOff.mjs +2 -1
  40. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconBucketOff.mjs.map +1 -1
  41. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCalendar.mjs +2 -1
  42. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCalendar.mjs.map +1 -1
  43. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.mjs +2 -1
  44. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.mjs.map +1 -1
  45. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.mjs +2 -1
  46. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.mjs.map +1 -1
  47. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.mjs +2 -1
  48. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.mjs.map +1 -1
  49. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleMinus.mjs +2 -1
  50. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleMinus.mjs.map +1 -1
  51. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCirclePlus.mjs +2 -1
  52. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCirclePlus.mjs.map +1 -1
  53. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCloudUpload.mjs +2 -1
  54. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCloudUpload.mjs.map +1 -1
  55. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconColumns.mjs +2 -1
  56. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconColumns.mjs.map +1 -1
  57. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCurrencyDollar.mjs +2 -1
  58. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconCurrencyDollar.mjs.map +1 -1
  59. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconDots.mjs +2 -1
  60. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconDots.mjs.map +1 -1
  61. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEdit.mjs +2 -1
  62. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEdit.mjs.map +1 -1
  63. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEqual.mjs +2 -1
  64. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEqual.mjs.map +1 -1
  65. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEqualNot.mjs +2 -1
  66. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconEqualNot.mjs.map +1 -1
  67. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFileAlert.mjs +2 -1
  68. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFileAlert.mjs.map +1 -1
  69. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFilePlus.mjs +2 -1
  70. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFilePlus.mjs.map +1 -1
  71. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFilter.mjs +2 -1
  72. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconFilter.mjs.map +1 -1
  73. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconListDetails.mjs +2 -1
  74. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconListDetails.mjs.map +1 -1
  75. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconLogout.mjs +4 -2
  76. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconLogout.mjs.map +1 -1
  77. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMathGreater.mjs +2 -1
  78. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMathGreater.mjs.map +1 -1
  79. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMathLower.mjs +2 -1
  80. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMathLower.mjs.map +1 -1
  81. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMessage.mjs +2 -1
  82. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconMessage.mjs.map +1 -1
  83. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPin.mjs +2 -1
  84. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPin.mjs.map +1 -1
  85. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPinnedOff.mjs +2 -1
  86. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPinnedOff.mjs.map +1 -1
  87. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPlus.mjs +2 -1
  88. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconPlus.mjs.map +1 -1
  89. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs +2 -1
  90. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs.map +1 -1
  91. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSettings.mjs +2 -1
  92. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSettings.mjs.map +1 -1
  93. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSortAscending.mjs +2 -1
  94. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSortAscending.mjs.map +1 -1
  95. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSortDescending.mjs +2 -1
  96. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSortDescending.mjs.map +1 -1
  97. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSquare.mjs +2 -1
  98. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSquare.mjs.map +1 -1
  99. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSwitchHorizontal.mjs +2 -1
  100. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconSwitchHorizontal.mjs.map +1 -1
  101. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconTableExport.mjs +2 -1
  102. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconTableExport.mjs.map +1 -1
  103. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.mjs +2 -1
  104. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.mjs.map +1 -1
  105. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconX.mjs +2 -1
  106. package/dist/esm/node_modules/@tabler/icons-react/dist/esm/icons/IconX.mjs.map +1 -1
  107. package/dist/types/AddressDisplay/AddressDisplay.d.ts +1 -0
  108. package/dist/types/AddressInput/AddressInput.d.ts +1 -0
  109. package/dist/types/AnnotationInput/AnnotationInput.d.ts +1 -0
  110. package/dist/types/AppShell/AppShell.d.ts +2 -0
  111. package/dist/types/AppShell/HeaderSearchInput.d.ts +5 -1
  112. package/dist/types/AppShell/Navbar.d.ts +3 -0
  113. package/dist/types/AsyncAutocomplete/AsyncAutocomplete.d.ts +1 -0
  114. package/dist/types/AttachmentArrayDisplay/AttachmentArrayDisplay.d.ts +1 -0
  115. package/dist/types/AttachmentArrayInput/AttachmentArrayInput.d.ts +1 -0
  116. package/dist/types/AttachmentDisplay/AttachmentDisplay.d.ts +1 -0
  117. package/dist/types/AttachmentInput/AttachmentInput.d.ts +1 -0
  118. package/dist/types/BackboneElementDisplay/BackboneElementDisplay.d.ts +1 -0
  119. package/dist/types/BackboneElementInput/BackboneElementInput.d.ts +1 -0
  120. package/dist/types/BookmarkDialog/BookmarkDialog.d.ts +3 -0
  121. package/dist/types/CalendarInput/CalendarInput.d.ts +1 -0
  122. package/dist/types/CodeInput/CodeInput.d.ts +1 -0
  123. package/dist/types/CodeableConceptDisplay/CodeableConceptDisplay.d.ts +1 -0
  124. package/dist/types/CodeableConceptInput/CodeableConceptInput.d.ts +1 -0
  125. package/dist/types/CodingDisplay/CodingDisplay.d.ts +1 -0
  126. package/dist/types/CodingInput/CodingInput.d.ts +1 -0
  127. package/dist/types/ContactDetailDisplay/ContactDetailDisplay.d.ts +1 -0
  128. package/dist/types/ContactDetailInput/ContactDetailInput.d.ts +1 -0
  129. package/dist/types/ContactPointDisplay/ContactPointDisplay.d.ts +1 -0
  130. package/dist/types/ContactPointInput/ContactPointInput.d.ts +1 -0
  131. package/dist/types/Container/Container.d.ts +1 -0
  132. package/dist/types/DateTimeInput/DateTimeInput.d.ts +1 -0
  133. package/dist/types/DefaultResourceTimeline/DefaultResourceTimeline.d.ts +1 -0
  134. package/dist/types/DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts +1 -0
  135. package/dist/types/Document/Document.d.ts +1 -0
  136. package/dist/types/EncounterTimeline/EncounterTimeline.d.ts +1 -0
  137. package/dist/types/ExtensionInput/ExtensionInput.d.ts +1 -0
  138. package/dist/types/FhirPathDisplay/FhirPathDisplay.d.ts +1 -0
  139. package/dist/types/GoogleButton/GoogleButton.d.ts +1 -0
  140. package/dist/types/HumanNameDisplay/HumanNameDisplay.d.ts +1 -0
  141. package/dist/types/HumanNameInput/HumanNameInput.d.ts +1 -0
  142. package/dist/types/IdentifierDisplay/IdentifierDisplay.d.ts +1 -0
  143. package/dist/types/IdentifierInput/IdentifierInput.d.ts +1 -0
  144. package/dist/types/Loading/Loading.d.ts +1 -0
  145. package/dist/types/Logo/Logo.d.ts +1 -0
  146. package/dist/types/MoneyDisplay/MoneyDisplay.d.ts +1 -0
  147. package/dist/types/MoneyInput/MoneyInput.d.ts +1 -0
  148. package/dist/types/NoteDisplay/NoteDisplay.d.ts +1 -0
  149. package/dist/types/OperationOutcomeAlert/OperationOutcomeAlert.d.ts +1 -0
  150. package/dist/types/Panel/Panel.d.ts +1 -0
  151. package/dist/types/PatientTimeline/PatientTimeline.d.ts +1 -0
  152. package/dist/types/PeriodInput/PeriodInput.d.ts +1 -0
  153. package/dist/types/PlanDefinitionBuilder/PlanDefinitionBuilder.d.ts +1 -0
  154. package/dist/types/QuantityDisplay/QuantityDisplay.d.ts +1 -0
  155. package/dist/types/QuantityInput/QuantityInput.d.ts +1 -0
  156. package/dist/types/QuestionnaireBuilder/QuestionnaireBuilder.d.ts +1 -0
  157. package/dist/types/QuestionnaireForm/QuestionnaireForm.d.ts +1 -0
  158. package/dist/types/RangeDisplay/RangeDisplay.d.ts +1 -0
  159. package/dist/types/RangeInput/RangeInput.d.ts +1 -0
  160. package/dist/types/RatioDisplay/RatioDisplay.d.ts +1 -0
  161. package/dist/types/RatioInput/RatioInput.d.ts +1 -0
  162. package/dist/types/ReferenceDisplay/ReferenceDisplay.d.ts +1 -0
  163. package/dist/types/ReferenceInput/ReferenceInput.d.ts +1 -0
  164. package/dist/types/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +1 -0
  165. package/dist/types/RequestGroupDisplay/RequestGroupDisplay.d.ts +1 -0
  166. package/dist/types/ResourceArrayDisplay/ResourceArrayDisplay.d.ts +1 -0
  167. package/dist/types/ResourceArrayInput/ResourceArrayInput.d.ts +1 -0
  168. package/dist/types/ResourceAvatar/ResourceAvatar.d.ts +1 -0
  169. package/dist/types/ResourceBadge/ResourceBadge.d.ts +1 -0
  170. package/dist/types/ResourceBlame/ResourceBlame.d.ts +1 -0
  171. package/dist/types/ResourceDiff/ResourceDiff.d.ts +1 -0
  172. package/dist/types/ResourceDiffTable/ResourceDiffTable.d.ts +1 -0
  173. package/dist/types/ResourceForm/ResourceForm.d.ts +1 -0
  174. package/dist/types/ResourceHistoryTable/ResourceHistoryTable.d.ts +1 -0
  175. package/dist/types/ResourceInput/ResourceInput.d.ts +1 -0
  176. package/dist/types/ResourceName/ResourceName.d.ts +1 -0
  177. package/dist/types/ResourcePropertyDisplay/ResourcePropertyDisplay.d.ts +1 -0
  178. package/dist/types/ResourcePropertyInput/ResourcePropertyInput.d.ts +1 -0
  179. package/dist/types/ResourceTable/ResourceTable.d.ts +1 -0
  180. package/dist/types/ResourceTimeline/ResourceTimeline.d.ts +1 -0
  181. package/dist/types/Scheduler/Scheduler.d.ts +1 -0
  182. package/dist/types/SearchControl/SearchUtils.d.ts +1 -0
  183. package/dist/types/SearchExportDialog/SearchExportDialog.d.ts +1 -0
  184. package/dist/types/SearchFieldEditor/SearchFieldEditor.d.ts +1 -0
  185. package/dist/types/SearchFilterEditor/SearchFilterEditor.d.ts +1 -0
  186. package/dist/types/SearchFilterValueDialog/SearchFilterValueDialog.d.ts +1 -0
  187. package/dist/types/SearchFilterValueDisplay/SearchFilterValueDisplay.d.ts +1 -0
  188. package/dist/types/SearchFilterValueInput/SearchFilterValueInput.d.ts +1 -0
  189. package/dist/types/SearchPopupMenu/SearchPopupMenu.d.ts +1 -0
  190. package/dist/types/ServiceRequestTimeline/ServiceRequestTimeline.d.ts +1 -0
  191. package/dist/types/StatusBadge/StatusBadge.d.ts +1 -0
  192. package/dist/types/TimingInput/TimingInput.d.ts +1 -0
  193. package/dist/types/ValueSetAutocomplete/ValueSetAutocomplete.d.ts +1 -0
  194. package/dist/types/auth/ChooseProfileForm.d.ts +1 -0
  195. package/dist/types/auth/ChooseScopeForm.d.ts +1 -0
  196. package/dist/types/auth/MfaForm.d.ts +1 -0
  197. package/dist/types/auth/NewProjectForm.d.ts +1 -0
  198. package/package.json +15 -16
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@medplum/core'), require('react'), require('@mantine/core'), require('prop-types'), require('react-router-dom'), require('@mantine/notifications')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@medplum/core', 'react', '@mantine/core', 'prop-types', 'react-router-dom', '@mantine/notifications'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.medplum = global.medplum || {}, global.medplum.react = {}), global.medplum.core, global.React, global.mantine.core, global.PropTypes, global.ReactRouterDOM, global.mantine.notifications));
5
- })(this, (function (exports, core, React, core$1, PropTypes, reactRouterDom, notifications) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@medplum/core'), require('react'), require('@mantine/core'), require('prop-types'), require('@mantine/notifications')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@medplum/core', 'react', '@mantine/core', 'prop-types', '@mantine/notifications'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.medplum = global.medplum || {}, global.medplum.react = {}), global.medplum.core, global.React, global.mantine.core, global.PropTypes, global.mantine.notifications));
5
+ })(this, (function (exports, core, React, core$1, PropTypes, notifications) { 'use strict';
6
6
 
7
7
  function AddressDisplay(props) {
8
8
  const address = props.value;
@@ -154,7 +154,7 @@
154
154
  }
155
155
 
156
156
  /**
157
- * @tabler/icons-react v2.17.0 - MIT
157
+ * @tabler/icons-react v2.19.0 - MIT
158
158
  */
159
159
 
160
160
  var defaultAttributes = {
@@ -170,9 +170,10 @@
170
170
  };
171
171
 
172
172
  /**
173
- * @tabler/icons-react v2.17.0 - MIT
173
+ * @tabler/icons-react v2.19.0 - MIT
174
174
  */
175
175
 
176
+
176
177
  var __defProp = Object.defineProperty;
177
178
  var __defProps = Object.defineProperties;
178
179
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
@@ -233,9 +234,10 @@
233
234
  };
234
235
 
235
236
  /**
236
- * @tabler/icons-react v2.17.0 - MIT
237
+ * @tabler/icons-react v2.19.0 - MIT
237
238
  */
238
239
 
240
+
239
241
  var IconAdjustmentsHorizontal = createReactComponent(
240
242
  "adjustments-horizontal",
241
243
  "IconAdjustmentsHorizontal",
@@ -253,9 +255,10 @@
253
255
  );
254
256
 
255
257
  /**
256
- * @tabler/icons-react v2.17.0 - MIT
258
+ * @tabler/icons-react v2.19.0 - MIT
257
259
  */
258
260
 
261
+
259
262
  var IconAlertCircle = createReactComponent("alert-circle", "IconAlertCircle", [
260
263
  ["path", { d: "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", key: "svg-0" }],
261
264
  ["path", { d: "M12 8v4", key: "svg-1" }],
@@ -263,9 +266,10 @@
263
266
  ]);
264
267
 
265
268
  /**
266
- * @tabler/icons-react v2.17.0 - MIT
269
+ * @tabler/icons-react v2.19.0 - MIT
267
270
  */
268
271
 
272
+
269
273
  var IconBleachOff = createReactComponent("bleach-off", "IconBleachOff", [
270
274
  [
271
275
  "path",
@@ -278,9 +282,10 @@
278
282
  ]);
279
283
 
280
284
  /**
281
- * @tabler/icons-react v2.17.0 - MIT
285
+ * @tabler/icons-react v2.19.0 - MIT
282
286
  */
283
287
 
288
+
284
289
  var IconBleach = createReactComponent("bleach", "IconBleach", [
285
290
  [
286
291
  "path",
@@ -292,9 +297,10 @@
292
297
  ]);
293
298
 
294
299
  /**
295
- * @tabler/icons-react v2.17.0 - MIT
300
+ * @tabler/icons-react v2.19.0 - MIT
296
301
  */
297
302
 
303
+
298
304
  var IconBoxMultiple = createReactComponent("box-multiple", "IconBoxMultiple", [
299
305
  [
300
306
  "path",
@@ -313,9 +319,10 @@
313
319
  ]);
314
320
 
315
321
  /**
316
- * @tabler/icons-react v2.17.0 - MIT
322
+ * @tabler/icons-react v2.19.0 - MIT
317
323
  */
318
324
 
325
+
319
326
  var IconBracketsContain = createReactComponent("brackets-contain", "IconBracketsContain", [
320
327
  ["path", { d: "M7 4h-4v16h4", key: "svg-0" }],
321
328
  ["path", { d: "M17 4h4v16h-4", key: "svg-1" }],
@@ -325,9 +332,10 @@
325
332
  ]);
326
333
 
327
334
  /**
328
- * @tabler/icons-react v2.17.0 - MIT
335
+ * @tabler/icons-react v2.19.0 - MIT
329
336
  */
330
337
 
338
+
331
339
  var IconBucketOff = createReactComponent("bucket-off", "IconBucketOff", [
332
340
  [
333
341
  "path",
@@ -347,9 +355,10 @@
347
355
  ]);
348
356
 
349
357
  /**
350
- * @tabler/icons-react v2.17.0 - MIT
358
+ * @tabler/icons-react v2.19.0 - MIT
351
359
  */
352
360
 
361
+
353
362
  var IconBucket = createReactComponent("bucket", "IconBucket", [
354
363
  ["path", { d: "M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0", key: "svg-0" }],
355
364
  [
@@ -362,9 +371,10 @@
362
371
  ]);
363
372
 
364
373
  /**
365
- * @tabler/icons-react v2.17.0 - MIT
374
+ * @tabler/icons-react v2.19.0 - MIT
366
375
  */
367
376
 
377
+
368
378
  var IconCalendar = createReactComponent("calendar", "IconCalendar", [
369
379
  [
370
380
  "path",
@@ -381,17 +391,19 @@
381
391
  ]);
382
392
 
383
393
  /**
384
- * @tabler/icons-react v2.17.0 - MIT
394
+ * @tabler/icons-react v2.19.0 - MIT
385
395
  */
386
396
 
397
+
387
398
  var IconCheck = createReactComponent("check", "IconCheck", [
388
399
  ["path", { d: "M5 12l5 5l10 -10", key: "svg-0" }]
389
400
  ]);
390
401
 
391
402
  /**
392
- * @tabler/icons-react v2.17.0 - MIT
403
+ * @tabler/icons-react v2.19.0 - MIT
393
404
  */
394
405
 
406
+
395
407
  var IconCheckbox = createReactComponent("checkbox", "IconCheckbox", [
396
408
  ["path", { d: "M9 11l3 3l8 -8", key: "svg-0" }],
397
409
  [
@@ -404,26 +416,29 @@
404
416
  ]);
405
417
 
406
418
  /**
407
- * @tabler/icons-react v2.17.0 - MIT
419
+ * @tabler/icons-react v2.19.0 - MIT
408
420
  */
409
421
 
422
+
410
423
  var IconChevronDown = createReactComponent("chevron-down", "IconChevronDown", [
411
424
  ["path", { d: "M6 9l6 6l6 -6", key: "svg-0" }]
412
425
  ]);
413
426
 
414
427
  /**
415
- * @tabler/icons-react v2.17.0 - MIT
428
+ * @tabler/icons-react v2.19.0 - MIT
416
429
  */
417
430
 
431
+
418
432
  var IconCircleMinus = createReactComponent("circle-minus", "IconCircleMinus", [
419
433
  ["path", { d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", key: "svg-0" }],
420
434
  ["path", { d: "M9 12l6 0", key: "svg-1" }]
421
435
  ]);
422
436
 
423
437
  /**
424
- * @tabler/icons-react v2.17.0 - MIT
438
+ * @tabler/icons-react v2.19.0 - MIT
425
439
  */
426
440
 
441
+
427
442
  var IconCirclePlus = createReactComponent("circle-plus", "IconCirclePlus", [
428
443
  ["path", { d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", key: "svg-0" }],
429
444
  ["path", { d: "M9 12l6 0", key: "svg-1" }],
@@ -431,9 +446,10 @@
431
446
  ]);
432
447
 
433
448
  /**
434
- * @tabler/icons-react v2.17.0 - MIT
449
+ * @tabler/icons-react v2.19.0 - MIT
435
450
  */
436
451
 
452
+
437
453
  var IconCloudUpload = createReactComponent("cloud-upload", "IconCloudUpload", [
438
454
  [
439
455
  "path",
@@ -447,9 +463,10 @@
447
463
  ]);
448
464
 
449
465
  /**
450
- * @tabler/icons-react v2.17.0 - MIT
466
+ * @tabler/icons-react v2.19.0 - MIT
451
467
  */
452
468
 
469
+
453
470
  var IconColumns = createReactComponent("columns", "IconColumns", [
454
471
  ["path", { d: "M4 6l5.5 0", key: "svg-0" }],
455
472
  ["path", { d: "M4 10l5.5 0", key: "svg-1" }],
@@ -462,9 +479,10 @@
462
479
  ]);
463
480
 
464
481
  /**
465
- * @tabler/icons-react v2.17.0 - MIT
482
+ * @tabler/icons-react v2.19.0 - MIT
466
483
  */
467
484
 
485
+
468
486
  var IconCurrencyDollar = createReactComponent("currency-dollar", "IconCurrencyDollar", [
469
487
  [
470
488
  "path",
@@ -477,9 +495,10 @@
477
495
  ]);
478
496
 
479
497
  /**
480
- * @tabler/icons-react v2.17.0 - MIT
498
+ * @tabler/icons-react v2.19.0 - MIT
481
499
  */
482
500
 
501
+
483
502
  var IconDots = createReactComponent("dots", "IconDots", [
484
503
  ["path", { d: "M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-0" }],
485
504
  ["path", { d: "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", key: "svg-1" }],
@@ -487,9 +506,10 @@
487
506
  ]);
488
507
 
489
508
  /**
490
- * @tabler/icons-react v2.17.0 - MIT
509
+ * @tabler/icons-react v2.19.0 - MIT
491
510
  */
492
511
 
512
+
493
513
  var IconEdit = createReactComponent("edit", "IconEdit", [
494
514
  [
495
515
  "path",
@@ -509,9 +529,10 @@
509
529
  ]);
510
530
 
511
531
  /**
512
- * @tabler/icons-react v2.17.0 - MIT
532
+ * @tabler/icons-react v2.19.0 - MIT
513
533
  */
514
534
 
535
+
515
536
  var IconEqualNot = createReactComponent("equal-not", "IconEqualNot", [
516
537
  ["path", { d: "M5 10h14", key: "svg-0" }],
517
538
  ["path", { d: "M5 14h14", key: "svg-1" }],
@@ -519,18 +540,20 @@
519
540
  ]);
520
541
 
521
542
  /**
522
- * @tabler/icons-react v2.17.0 - MIT
543
+ * @tabler/icons-react v2.19.0 - MIT
523
544
  */
524
545
 
546
+
525
547
  var IconEqual = createReactComponent("equal", "IconEqual", [
526
548
  ["path", { d: "M5 10h14", key: "svg-0" }],
527
549
  ["path", { d: "M5 14h14", key: "svg-1" }]
528
550
  ]);
529
551
 
530
552
  /**
531
- * @tabler/icons-react v2.17.0 - MIT
553
+ * @tabler/icons-react v2.19.0 - MIT
532
554
  */
533
555
 
556
+
534
557
  var IconFileAlert = createReactComponent("file-alert", "IconFileAlert", [
535
558
  ["path", { d: "M14 3v4a1 1 0 0 0 1 1h4", key: "svg-0" }],
536
559
  [
@@ -545,9 +568,10 @@
545
568
  ]);
546
569
 
547
570
  /**
548
- * @tabler/icons-react v2.17.0 - MIT
571
+ * @tabler/icons-react v2.19.0 - MIT
549
572
  */
550
573
 
574
+
551
575
  var IconFilePlus = createReactComponent("file-plus", "IconFilePlus", [
552
576
  ["path", { d: "M14 3v4a1 1 0 0 0 1 1h4", key: "svg-0" }],
553
577
  [
@@ -562,9 +586,10 @@
562
586
  ]);
563
587
 
564
588
  /**
565
- * @tabler/icons-react v2.17.0 - MIT
589
+ * @tabler/icons-react v2.19.0 - MIT
566
590
  */
567
591
 
592
+
568
593
  var IconFilter = createReactComponent("filter", "IconFilter", [
569
594
  [
570
595
  "path",
@@ -576,9 +601,10 @@
576
601
  ]);
577
602
 
578
603
  /**
579
- * @tabler/icons-react v2.17.0 - MIT
604
+ * @tabler/icons-react v2.19.0 - MIT
580
605
  */
581
606
 
607
+
582
608
  var IconListDetails = createReactComponent("list-details", "IconListDetails", [
583
609
  ["path", { d: "M13 5h8", key: "svg-0" }],
584
610
  ["path", { d: "M13 9h5", key: "svg-1" }],
@@ -601,9 +627,10 @@
601
627
  ]);
602
628
 
603
629
  /**
604
- * @tabler/icons-react v2.17.0 - MIT
630
+ * @tabler/icons-react v2.19.0 - MIT
605
631
  */
606
632
 
633
+
607
634
  var IconLogout = createReactComponent("logout", "IconLogout", [
608
635
  [
609
636
  "path",
@@ -612,29 +639,33 @@
612
639
  key: "svg-0"
613
640
  }
614
641
  ],
615
- ["path", { d: "M7 12h14l-3 -3m0 6l3 -3", key: "svg-1" }]
642
+ ["path", { d: "M9 12h12l-3 -3", key: "svg-1" }],
643
+ ["path", { d: "M18 15l3 -3", key: "svg-2" }]
616
644
  ]);
617
645
 
618
646
  /**
619
- * @tabler/icons-react v2.17.0 - MIT
647
+ * @tabler/icons-react v2.19.0 - MIT
620
648
  */
621
649
 
650
+
622
651
  var IconMathGreater = createReactComponent("math-greater", "IconMathGreater", [
623
652
  ["path", { d: "M5 18l14 -6l-14 -6", key: "svg-0" }]
624
653
  ]);
625
654
 
626
655
  /**
627
- * @tabler/icons-react v2.17.0 - MIT
656
+ * @tabler/icons-react v2.19.0 - MIT
628
657
  */
629
658
 
659
+
630
660
  var IconMathLower = createReactComponent("math-lower", "IconMathLower", [
631
661
  ["path", { d: "M19 18l-14 -6l14 -6", key: "svg-0" }]
632
662
  ]);
633
663
 
634
664
  /**
635
- * @tabler/icons-react v2.17.0 - MIT
665
+ * @tabler/icons-react v2.19.0 - MIT
636
666
  */
637
667
 
668
+
638
669
  var IconMessage = createReactComponent("message", "IconMessage", [
639
670
  ["path", { d: "M8 9h8", key: "svg-0" }],
640
671
  ["path", { d: "M8 13h6", key: "svg-1" }],
@@ -648,9 +679,10 @@
648
679
  ]);
649
680
 
650
681
  /**
651
- * @tabler/icons-react v2.17.0 - MIT
682
+ * @tabler/icons-react v2.19.0 - MIT
652
683
  */
653
684
 
685
+
654
686
  var IconPin = createReactComponent("pin", "IconPin", [
655
687
  [
656
688
  "path",
@@ -664,9 +696,10 @@
664
696
  ]);
665
697
 
666
698
  /**
667
- * @tabler/icons-react v2.17.0 - MIT
699
+ * @tabler/icons-react v2.19.0 - MIT
668
700
  */
669
701
 
702
+
670
703
  var IconPinnedOff = createReactComponent("pinned-off", "IconPinnedOff", [
671
704
  ["path", { d: "M3 3l18 18", key: "svg-0" }],
672
705
  [
@@ -681,27 +714,30 @@
681
714
  ]);
682
715
 
683
716
  /**
684
- * @tabler/icons-react v2.17.0 - MIT
717
+ * @tabler/icons-react v2.19.0 - MIT
685
718
  */
686
719
 
720
+
687
721
  var IconPlus = createReactComponent("plus", "IconPlus", [
688
722
  ["path", { d: "M12 5l0 14", key: "svg-0" }],
689
723
  ["path", { d: "M5 12l14 0", key: "svg-1" }]
690
724
  ]);
691
725
 
692
726
  /**
693
- * @tabler/icons-react v2.17.0 - MIT
727
+ * @tabler/icons-react v2.19.0 - MIT
694
728
  */
695
729
 
730
+
696
731
  var IconSearch = createReactComponent("search", "IconSearch", [
697
732
  ["path", { d: "M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0", key: "svg-0" }],
698
733
  ["path", { d: "M21 21l-6 -6", key: "svg-1" }]
699
734
  ]);
700
735
 
701
736
  /**
702
- * @tabler/icons-react v2.17.0 - MIT
737
+ * @tabler/icons-react v2.19.0 - MIT
703
738
  */
704
739
 
740
+
705
741
  var IconSettings = createReactComponent("settings", "IconSettings", [
706
742
  [
707
743
  "path",
@@ -714,9 +750,10 @@
714
750
  ]);
715
751
 
716
752
  /**
717
- * @tabler/icons-react v2.17.0 - MIT
753
+ * @tabler/icons-react v2.19.0 - MIT
718
754
  */
719
755
 
756
+
720
757
  var IconSortAscending = createReactComponent("sort-ascending", "IconSortAscending", [
721
758
  ["path", { d: "M4 6l7 0", key: "svg-0" }],
722
759
  ["path", { d: "M4 12l7 0", key: "svg-1" }],
@@ -726,9 +763,10 @@
726
763
  ]);
727
764
 
728
765
  /**
729
- * @tabler/icons-react v2.17.0 - MIT
766
+ * @tabler/icons-react v2.19.0 - MIT
730
767
  */
731
768
 
769
+
732
770
  var IconSortDescending = createReactComponent("sort-descending", "IconSortDescending", [
733
771
  ["path", { d: "M4 6l9 0", key: "svg-0" }],
734
772
  ["path", { d: "M4 12l7 0", key: "svg-1" }],
@@ -738,9 +776,10 @@
738
776
  ]);
739
777
 
740
778
  /**
741
- * @tabler/icons-react v2.17.0 - MIT
779
+ * @tabler/icons-react v2.19.0 - MIT
742
780
  */
743
781
 
782
+
744
783
  var IconSquare = createReactComponent("square", "IconSquare", [
745
784
  [
746
785
  "path",
@@ -752,9 +791,10 @@
752
791
  ]);
753
792
 
754
793
  /**
755
- * @tabler/icons-react v2.17.0 - MIT
794
+ * @tabler/icons-react v2.19.0 - MIT
756
795
  */
757
796
 
797
+
758
798
  var IconSwitchHorizontal = createReactComponent(
759
799
  "switch-horizontal",
760
800
  "IconSwitchHorizontal",
@@ -767,9 +807,10 @@
767
807
  );
768
808
 
769
809
  /**
770
- * @tabler/icons-react v2.17.0 - MIT
810
+ * @tabler/icons-react v2.19.0 - MIT
771
811
  */
772
812
 
813
+
773
814
  var IconTableExport = createReactComponent("table-export", "IconTableExport", [
774
815
  [
775
816
  "path",
@@ -785,9 +826,10 @@
785
826
  ]);
786
827
 
787
828
  /**
788
- * @tabler/icons-react v2.17.0 - MIT
829
+ * @tabler/icons-react v2.19.0 - MIT
789
830
  */
790
831
 
832
+
791
833
  var IconTrash = createReactComponent("trash", "IconTrash", [
792
834
  ["path", { d: "M4 7l16 0", key: "svg-0" }],
793
835
  ["path", { d: "M10 11l0 6", key: "svg-1" }],
@@ -800,9 +842,10 @@
800
842
  ]);
801
843
 
802
844
  /**
803
- * @tabler/icons-react v2.17.0 - MIT
845
+ * @tabler/icons-react v2.19.0 - MIT
804
846
  */
805
847
 
848
+
806
849
  var IconX = createReactComponent("x", "IconX", [
807
850
  ["path", { d: "M18 6l-12 12", key: "svg-0" }],
808
851
  ["path", { d: "M6 6l12 12", key: "svg-1" }]
@@ -1135,11 +1178,10 @@
1135
1178
  resource,
1136
1179
  };
1137
1180
  }
1138
- function HeaderSearchInput() {
1181
+ function HeaderSearchInput(props) {
1139
1182
  const { classes } = useStyles$h();
1140
1183
  const navigate = useMedplumNavigate();
1141
1184
  const medplum = useMedplum();
1142
- const location = reactRouterDom.useLocation();
1143
1185
  const loadData = React.useCallback(async (input, signal) => {
1144
1186
  const query = buildGraphQLQuery(input);
1145
1187
  const options = { signal };
@@ -1151,7 +1193,7 @@
1151
1193
  navigate(`/${core.getReferenceString(item[0])}`);
1152
1194
  }
1153
1195
  }, [navigate]);
1154
- return (React.createElement(AsyncAutocomplete, { key: location.pathname, size: "sm", radius: "md", className: classes.searchInput, icon: React.createElement(IconSearch, { size: 16 }), placeholder: "Search", itemComponent: ItemComponent$1, toKey: toKey$1, toOption: toOption$1, onChange: handleSelect, loadOptions: loadData }));
1196
+ return (React.createElement(AsyncAutocomplete, { key: props.pathname, size: "sm", radius: "md", className: classes.searchInput, icon: React.createElement(IconSearch, { size: 16 }), placeholder: "Search", itemComponent: ItemComponent$1, toKey: toKey$1, toOption: toOption$1, onChange: handleSelect, loadOptions: loadData }));
1155
1197
  }
1156
1198
  const ItemComponent$1 = React.forwardRef(({ resource, ...others }, ref) => {
1157
1199
  let helpText = undefined;
@@ -1459,10 +1501,9 @@
1459
1501
  function BookmarkDialog(props) {
1460
1502
  const medplum = useMedplum();
1461
1503
  const config = medplum.getUserConfiguration();
1462
- const location = reactRouterDom.useLocation();
1463
1504
  function submitHandler(formData) {
1464
1505
  const { menuname, bookmarkname: name } = formData;
1465
- const target = location.pathname + location.search;
1506
+ const target = `${props.pathname}?${props.searchParams.toString()}`;
1466
1507
  const newConfig = core.deepClone(config);
1467
1508
  const menu = newConfig?.menu?.find(({ title }) => title === menuname);
1468
1509
  menu?.link?.push({ name, target });
@@ -1518,6 +1559,9 @@
1518
1559
  const medplum = useMedplum();
1519
1560
  const { elementDefinition, creatable, clearable, ...rest } = props;
1520
1561
  const loadValues = React.useCallback(async (input, signal) => {
1562
+ if (!elementDefinition.binding) {
1563
+ return [];
1564
+ }
1521
1565
  const system = elementDefinition.binding?.valueSet;
1522
1566
  const valueSet = await medplum.searchValueSet(system, input, { signal });
1523
1567
  const valueSetElements = valueSet.expansion?.contains;
@@ -1603,6 +1647,7 @@
1603
1647
  function Navbar(props) {
1604
1648
  const { classes } = useStyles$f();
1605
1649
  const navigate = useMedplumNavigate();
1650
+ const activeLink = getActiveLink(props.pathname, props.searchParams, props.menus);
1606
1651
  const [bookmarkDialogVisible, setBookmarkDialogVisible] = React.useState(false);
1607
1652
  function onLinkClick(e, to) {
1608
1653
  e.stopPropagation();
@@ -1619,42 +1664,25 @@
1619
1664
  }
1620
1665
  return (React.createElement(React.Fragment, null,
1621
1666
  React.createElement(core$1.Navbar, { width: { sm: 250 }, p: "xs" },
1622
- React.createElement(core$1.Navbar.Section, { mb: "sm" },
1623
- React.createElement(CodeInput, { key: window.location.pathname, name: "resourceType", placeholder: "Resource Type", property: {
1624
- binding: {
1625
- valueSet: 'http://hl7.org/fhir/ValueSet/resource-types',
1626
- },
1627
- }, onChange: (newValue) => navigateResourceType(newValue), creatable: false, maxSelectedValues: 0, clearSearchOnChange: true, clearable: false })),
1628
- React.createElement(core$1.Navbar.Section, { grow: true },
1629
- props.menus?.map((menu) => (React.createElement(React.Fragment, { key: `menu-${menu.title}` },
1630
- React.createElement(core$1.Text, { className: classes.menuTitle }, menu.title),
1631
- menu.links?.map((link) => (React.createElement(NavbarLink, { key: link.href, to: link.href, onClick: (e) => onLinkClick(e, link.href) },
1632
- React.createElement(NavLinkIcon, { to: link.href, icon: link.icon }),
1633
- React.createElement("span", null, link.label))))))),
1634
- props.displayAddBookmark && (React.createElement(core$1.Button, { variant: "subtle", size: "xs", mt: "xl", leftIcon: React.createElement(IconPlus, { size: "0.75rem" }), onClick: () => setBookmarkDialogVisible(true) }, "Add Bookmark")))),
1635
- React.createElement(BookmarkDialog, { visible: bookmarkDialogVisible, onOk: () => setBookmarkDialogVisible(false), onCancel: () => setBookmarkDialogVisible(false) })));
1667
+ React.createElement(core$1.ScrollArea, null,
1668
+ React.createElement(core$1.Navbar.Section, { mb: "sm" },
1669
+ React.createElement(CodeInput, { key: window.location.pathname, name: "resourceType", placeholder: "Resource Type", property: {
1670
+ binding: {
1671
+ valueSet: 'http://hl7.org/fhir/ValueSet/resource-types',
1672
+ },
1673
+ }, onChange: (newValue) => navigateResourceType(newValue), creatable: false, maxSelectedValues: 0, clearSearchOnChange: true, clearable: false })),
1674
+ React.createElement(core$1.Navbar.Section, { grow: true },
1675
+ props.menus?.map((menu) => (React.createElement(React.Fragment, { key: `menu-${menu.title}` },
1676
+ React.createElement(core$1.Text, { className: classes.menuTitle }, menu.title),
1677
+ menu.links?.map((link) => (React.createElement(NavbarLink, { key: link.href, to: link.href, active: link.href === activeLink?.href, onClick: (e) => onLinkClick(e, link.href) },
1678
+ React.createElement(NavLinkIcon, { to: link.href, icon: link.icon }),
1679
+ React.createElement("span", null, link.label))))))),
1680
+ props.displayAddBookmark && (React.createElement(core$1.Button, { variant: "subtle", size: "xs", mt: "xl", leftIcon: React.createElement(IconPlus, { size: "0.75rem" }), onClick: () => setBookmarkDialogVisible(true) }, "Add Bookmark"))))),
1681
+ props.pathname && props.searchParams && (React.createElement(BookmarkDialog, { pathname: props.pathname, searchParams: props.searchParams, visible: bookmarkDialogVisible, onOk: () => setBookmarkDialogVisible(false), onCancel: () => setBookmarkDialogVisible(false) }))));
1636
1682
  }
1637
1683
  function NavbarLink(props) {
1638
1684
  const { classes, cx } = useStyles$f();
1639
- const location = reactRouterDom.useLocation();
1640
- const [searchParams] = reactRouterDom.useSearchParams();
1641
- const toUrl = new URL(props.to, window.location.protocol + '//' + window.location.host);
1642
- const isActive = location.pathname === toUrl.pathname && matchesParams(searchParams, toUrl);
1643
- return (React.createElement(MedplumLink, { onClick: props.onClick, to: props.to, className: cx(classes.link, { [classes.linkActive]: isActive }) }, props.children));
1644
- }
1645
- /**
1646
- * Returns true if the search params match.
1647
- * @param searchParams The current search params.
1648
- * @param toUrl The destination URL of the link.
1649
- * @returns True if the search params match.
1650
- */
1651
- function matchesParams(searchParams, toUrl) {
1652
- for (const [key, value] of toUrl.searchParams.entries()) {
1653
- if (searchParams.get(key) !== value) {
1654
- return false;
1655
- }
1656
- }
1657
- return true;
1685
+ return (React.createElement(MedplumLink, { onClick: props.onClick, to: props.to, className: cx(classes.link, { [classes.linkActive]: props.active }) }, props.children));
1658
1686
  }
1659
1687
  function NavLinkIcon(props) {
1660
1688
  if (props.icon) {
@@ -1662,6 +1690,72 @@
1662
1690
  }
1663
1691
  return React.createElement(core$1.Space, { w: 30 });
1664
1692
  }
1693
+ /**
1694
+ * Returns the best "active" link for the menu.
1695
+ * In most cases, the navbar links are simple, and an exact match can determine which link is active.
1696
+ * However, we ignore some search parameters to support pagination.
1697
+ * But we cannot ignore all search parameters, to support separate links based on search filters.
1698
+ * So in the end, we use a simple scoring system based on the number of matching query search params.
1699
+ * @param currentPathname The web browser current pathname.
1700
+ * @param currentSearchParams The web browser current search parameters.
1701
+ * @param menus Collection of navbar menus and links.
1702
+ * @returns The active link if one is found.
1703
+ */
1704
+ function getActiveLink(currentPathname, currentSearchParams, menus) {
1705
+ if (!currentPathname || !currentSearchParams || !menus) {
1706
+ return undefined;
1707
+ }
1708
+ let bestLink = undefined;
1709
+ let bestScore = 0;
1710
+ for (const menu of menus) {
1711
+ if (menu.links) {
1712
+ for (const link of menu.links) {
1713
+ const score = getLinkScore(currentPathname, currentSearchParams, link.href);
1714
+ if (score > bestScore) {
1715
+ bestScore = score;
1716
+ bestLink = link;
1717
+ }
1718
+ }
1719
+ }
1720
+ }
1721
+ return bestLink;
1722
+ }
1723
+ /**
1724
+ * Calculates a score for a link.
1725
+ * Zero means "does not match at all".
1726
+ * One means "matches the pathname only".
1727
+ * Additional increases for each matching search parameter.
1728
+ * Ignores pagination parameters "_count" and "_offset".
1729
+ * @param currentPathname The web browser current pathname.
1730
+ * @param currentSearchParams The web browser current search parameters.
1731
+ * @param linkHref A candidate link href.
1732
+ * @returns The link score.
1733
+ */
1734
+ function getLinkScore(currentPathname, currentSearchParams, linkHref) {
1735
+ const linkUrl = new URL(linkHref, 'https://example.com');
1736
+ if (currentPathname !== linkUrl.pathname) {
1737
+ return 0;
1738
+ }
1739
+ const ignoredParams = ['_count', '_offset'];
1740
+ for (const [key, value] of linkUrl.searchParams.entries()) {
1741
+ if (ignoredParams.includes(key)) {
1742
+ continue;
1743
+ }
1744
+ if (currentSearchParams.get(key) !== value) {
1745
+ return 0;
1746
+ }
1747
+ }
1748
+ let count = 1;
1749
+ for (const [key, value] of currentSearchParams.entries()) {
1750
+ if (ignoredParams.includes(key)) {
1751
+ continue;
1752
+ }
1753
+ if (linkUrl.searchParams.get(key) === value) {
1754
+ count++;
1755
+ }
1756
+ }
1757
+ return count;
1758
+ }
1665
1759
 
1666
1760
  function AppShell(props) {
1667
1761
  const theme = core$1.useMantineTheme();
@@ -1685,7 +1779,7 @@
1685
1779
  main: {
1686
1780
  background: theme.colorScheme === 'dark' ? theme.colors.dark[8] : theme.colors.gray[0],
1687
1781
  },
1688
- }, padding: 0, fixed: true, header: profile && React.createElement(Header, { logo: props.logo, version: props.version, navbarToggle: toggleNavbar }), navbar: profile && navbarOpen ? (React.createElement(Navbar, { menus: props.menus, closeNavbar: closeNavbar, displayAddBookmark: props.displayAddBookmark })) : undefined },
1782
+ }, padding: 0, fixed: true, header: profile && React.createElement(Header, { logo: props.logo, version: props.version, navbarToggle: toggleNavbar }), navbar: profile && navbarOpen ? (React.createElement(Navbar, { pathname: props.pathname, searchParams: props.searchParams, menus: props.menus, closeNavbar: closeNavbar, displayAddBookmark: props.displayAddBookmark })) : undefined },
1689
1783
  React.createElement(ErrorBoundary, null,
1690
1784
  React.createElement(React.Suspense, { fallback: React.createElement(Loading, null) }, props.children))));
1691
1785
  }
@@ -3903,6 +3997,20 @@
3903
3997
  return React.createElement(ResourcePropertyDisplay, { value: value[0] || '', propertyType: props.propertyType });
3904
3998
  }
3905
3999
 
4000
+ function SearchExportDialog(props) {
4001
+ return (React.createElement(core$1.Modal, { title: "Export", closeButtonProps: { 'aria-label': 'Close' }, opened: props.visible, onClose: props.onCancel },
4002
+ React.createElement(core$1.Box, { display: "flex", sx: { justifyContent: 'space-between' } },
4003
+ props.exportCsv && React.createElement(ExportButton, { text: "CSV", exportLogic: props.exportCsv, onCancel: props.onCancel }),
4004
+ props.exportTransactionBundle && (React.createElement(ExportButton, { text: "Transaction Bundle", exportLogic: props.exportTransactionBundle, onCancel: props.onCancel }))),
4005
+ React.createElement(core$1.Text, { sx: { marginTop: '10px', marginLeft: '2px' } }, "Limited to 1000 records")));
4006
+ }
4007
+ function ExportButton(props) {
4008
+ return (React.createElement(core$1.Button, { onClick: () => {
4009
+ props.exportLogic();
4010
+ props.onCancel();
4011
+ } }, `Export as ${props.text}`));
4012
+ }
4013
+
3906
4014
  const searchParamToOperators = {
3907
4015
  string: [core.Operator.EQUALS, core.Operator.NOT, core.Operator.CONTAINS, core.Operator.EXACT],
3908
4016
  fulltext: [core.Operator.EQUALS, core.Operator.NOT, core.Operator.CONTAINS, core.Operator.EXACT],
@@ -4565,7 +4673,8 @@
4565
4673
  const { resourceType, filter } = props;
4566
4674
  const searchParam = core.globalSchema.types[resourceType]?.searchParams?.[filter.code];
4567
4675
  if (searchParam) {
4568
- if (searchParam.type === 'reference') {
4676
+ if (searchParam.type === 'reference' &&
4677
+ (filter.operator === core.Operator.EQUALS || filter.operator === core.Operator.NOT_EQUALS)) {
4569
4678
  return React.createElement(ResourceName, { value: { reference: filter.value } });
4570
4679
  }
4571
4680
  const searchParamDetails = core.getSearchParameterDetails(resourceType, searchParam);
@@ -4931,20 +5040,6 @@
4931
5040
  return { name };
4932
5041
  }
4933
5042
 
4934
- function SearchExportDialog(props) {
4935
- return (React.createElement(core$1.Modal, { title: "Export", closeButtonProps: { 'aria-label': 'Close' }, opened: props.visible, onClose: props.onCancel },
4936
- React.createElement(core$1.Box, { display: "flex", sx: { justifyContent: 'space-between' } },
4937
- props.exportCsv && React.createElement(ExportButton, { text: "CSV", exportLogic: props.exportCsv, onCancel: props.onCancel }),
4938
- props.exportTransactionBundle && (React.createElement(ExportButton, { text: "Transaction Bundle", exportLogic: props.exportTransactionBundle, onCancel: props.onCancel }))),
4939
- React.createElement(core$1.Text, { sx: { marginTop: '10px', marginLeft: '2px' } }, "Limited to 1000 records")));
4940
- }
4941
- function ExportButton(props) {
4942
- return (React.createElement(core$1.Button, { onClick: () => {
4943
- props.exportLogic();
4944
- props.onCancel();
4945
- } }, `Export as ${props.text}`));
4946
- }
4947
-
4948
5043
  class SearchChangeEvent extends Event {
4949
5044
  constructor(definition) {
4950
5045
  super('change');
@@ -5018,7 +5113,7 @@
5018
5113
  React.useEffect(() => {
5019
5114
  setOutcome(undefined);
5020
5115
  medplum
5021
- .search(search.resourceType, core.formatSearchQuery({ ...search, total: 'accurate', fields: undefined }))
5116
+ .search(search.resourceType, core.formatSearchQuery({ ...search, total: 'estimate', fields: undefined }))
5022
5117
  .then((response) => {
5023
5118
  setState({ ...stateRef.current, searchResponse: response });
5024
5119
  if (onLoad) {
@@ -7094,9 +7189,9 @@
7094
7189
  }
7095
7190
  if (typeof window !== 'undefined') {
7096
7191
  const origin = window.location.protocol + '//' + window.location.host;
7097
- const authorizedOrigins = "undefined"?.split(',') ?? [];
7192
+ const authorizedOrigins = "http://localhost:3000,http://127.0.0.1:3000,http://localhost:6006,http://127.0.0.1:6006,https://app.medplum.com,https://docs.medplum.com,https://storybook.medplum.com,https://graphiql.medplum.com,https://www.medplum.com"?.split(',') ?? [];
7098
7193
  if (authorizedOrigins.includes(origin)) {
7099
- return "undefined";
7194
+ return "921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com";
7100
7195
  }
7101
7196
  }
7102
7197
  return undefined;