@medplum/react 2.0.0 → 2.0.2

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 (229) hide show
  1. package/dist/cjs/DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts +2 -0
  2. package/dist/cjs/DiagnosticReportDisplay/DiagnosticReportDisplay.stories.d.ts +1 -0
  3. package/dist/cjs/MedplumProvider/MedplumProvider.d.ts +8 -0
  4. package/dist/cjs/NoteDisplay/NoteDisplay.d.ts +6 -0
  5. package/dist/cjs/{ResourceDiffTable/ResourceDiffTable.stories.d.ts → NoteDisplay/NoteDisplay.stories.d.ts} +3 -1
  6. package/dist/cjs/QuantityInput/QuantityInput.d.ts +1 -0
  7. package/dist/cjs/QuantityInput/QuantityInput.stories.d.ts +7 -0
  8. package/dist/cjs/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +1 -2
  9. package/dist/cjs/ResourceTimeline/ResourceTimeline.d.ts +2 -2
  10. package/dist/cjs/index.cjs +1206 -1204
  11. package/dist/cjs/index.cjs.map +1 -1
  12. package/dist/cjs/index.min.cjs +1 -1
  13. package/dist/esm/AddressDisplay/AddressDisplay.mjs +2 -2
  14. package/dist/esm/AddressDisplay/AddressDisplay.mjs.map +1 -1
  15. package/dist/esm/AddressInput/AddressInput.mjs +9 -9
  16. package/dist/esm/AddressInput/AddressInput.mjs.map +1 -1
  17. package/dist/esm/AnnotationInput/AnnotationInput.mjs +2 -2
  18. package/dist/esm/AnnotationInput/AnnotationInput.mjs.map +1 -1
  19. package/dist/esm/AsyncAutocomplete/AsyncAutocomplete.mjs +2 -2
  20. package/dist/esm/AsyncAutocomplete/AsyncAutocomplete.mjs.map +1 -1
  21. package/dist/esm/AttachmentArrayDisplay/AttachmentArrayDisplay.mjs +4 -4
  22. package/dist/esm/AttachmentArrayDisplay/AttachmentArrayDisplay.mjs.map +1 -1
  23. package/dist/esm/AttachmentArrayInput/AttachmentArrayInput.mjs +19 -19
  24. package/dist/esm/AttachmentArrayInput/AttachmentArrayInput.mjs.map +1 -1
  25. package/dist/esm/AttachmentButton/AttachmentButton.mjs +3 -3
  26. package/dist/esm/AttachmentButton/AttachmentButton.mjs.map +1 -1
  27. package/dist/esm/AttachmentDisplay/AttachmentDisplay.mjs +9 -9
  28. package/dist/esm/AttachmentDisplay/AttachmentDisplay.mjs.map +1 -1
  29. package/dist/esm/AttachmentInput/AttachmentInput.mjs +5 -5
  30. package/dist/esm/AttachmentInput/AttachmentInput.mjs.map +1 -1
  31. package/dist/esm/BackboneElementDisplay/BackboneElementDisplay.mjs +6 -6
  32. package/dist/esm/BackboneElementDisplay/BackboneElementDisplay.mjs.map +1 -1
  33. package/dist/esm/BackboneElementInput/BackboneElementInput.mjs +7 -7
  34. package/dist/esm/BackboneElementInput/BackboneElementInput.mjs.map +1 -1
  35. package/dist/esm/CalendarInput/CalendarInput.mjs +18 -18
  36. package/dist/esm/CalendarInput/CalendarInput.mjs.map +1 -1
  37. package/dist/esm/CheckboxFormSection/CheckboxFormSection.mjs +5 -5
  38. package/dist/esm/CheckboxFormSection/CheckboxFormSection.mjs.map +1 -1
  39. package/dist/esm/CodeInput/CodeInput.mjs +2 -2
  40. package/dist/esm/CodeInput/CodeInput.mjs.map +1 -1
  41. package/dist/esm/CodeableConceptDisplay/CodeableConceptDisplay.mjs +2 -2
  42. package/dist/esm/CodeableConceptDisplay/CodeableConceptDisplay.mjs.map +1 -1
  43. package/dist/esm/CodeableConceptInput/CodeableConceptInput.mjs +2 -2
  44. package/dist/esm/CodeableConceptInput/CodeableConceptInput.mjs.map +1 -1
  45. package/dist/esm/CodingDisplay/CodingDisplay.mjs +2 -2
  46. package/dist/esm/CodingDisplay/CodingDisplay.mjs.map +1 -1
  47. package/dist/esm/CodingInput/CodingInput.mjs +2 -2
  48. package/dist/esm/CodingInput/CodingInput.mjs.map +1 -1
  49. package/dist/esm/ContactDetailDisplay/ContactDetailDisplay.mjs +3 -3
  50. package/dist/esm/ContactDetailDisplay/ContactDetailDisplay.mjs.map +1 -1
  51. package/dist/esm/ContactDetailInput/ContactDetailInput.mjs +4 -4
  52. package/dist/esm/ContactDetailInput/ContactDetailInput.mjs.map +1 -1
  53. package/dist/esm/ContactPointDisplay/ContactPointDisplay.mjs +2 -2
  54. package/dist/esm/ContactPointDisplay/ContactPointDisplay.mjs.map +1 -1
  55. package/dist/esm/ContactPointInput/ContactPointInput.mjs +5 -5
  56. package/dist/esm/ContactPointInput/ContactPointInput.mjs.map +1 -1
  57. package/dist/esm/Container/Container.mjs +2 -2
  58. package/dist/esm/Container/Container.mjs.map +1 -1
  59. package/dist/esm/DateTimeInput/DateTimeInput.mjs +2 -2
  60. package/dist/esm/DateTimeInput/DateTimeInput.mjs.map +1 -1
  61. package/dist/esm/DefaultResourceTimeline/DefaultResourceTimeline.mjs +7 -19
  62. package/dist/esm/DefaultResourceTimeline/DefaultResourceTimeline.mjs.map +1 -1
  63. package/dist/esm/DescriptionList/DescriptionList.mjs +5 -5
  64. package/dist/esm/DescriptionList/DescriptionList.mjs.map +1 -1
  65. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.d.ts +2 -0
  66. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.mjs +56 -52
  67. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.mjs.map +1 -1
  68. package/dist/esm/DiagnosticReportDisplay/DiagnosticReportDisplay.stories.d.ts +1 -0
  69. package/dist/esm/Document/Document.mjs +3 -3
  70. package/dist/esm/Document/Document.mjs.map +1 -1
  71. package/dist/esm/EncounterTimeline/EncounterTimeline.mjs +8 -25
  72. package/dist/esm/EncounterTimeline/EncounterTimeline.mjs.map +1 -1
  73. package/dist/esm/ErrorBoundary/ErrorBoundary.mjs +4 -4
  74. package/dist/esm/ErrorBoundary/ErrorBoundary.mjs.map +1 -1
  75. package/dist/esm/ExtensionInput/ExtensionInput.mjs +2 -2
  76. package/dist/esm/ExtensionInput/ExtensionInput.mjs.map +1 -1
  77. package/dist/esm/FhirPathDisplay/FhirPathDisplay.mjs +2 -2
  78. package/dist/esm/FhirPathDisplay/FhirPathDisplay.mjs.map +1 -1
  79. package/dist/esm/FhirPathTable/FhirPathTable.mjs +19 -19
  80. package/dist/esm/FhirPathTable/FhirPathTable.mjs.map +1 -1
  81. package/dist/esm/Form/Form.mjs +2 -2
  82. package/dist/esm/Form/Form.mjs.map +1 -1
  83. package/dist/esm/FormSection/FormSection.mjs +2 -2
  84. package/dist/esm/FormSection/FormSection.mjs.map +1 -1
  85. package/dist/esm/GoogleButton/GoogleButton.mjs +8 -6
  86. package/dist/esm/GoogleButton/GoogleButton.mjs.map +1 -1
  87. package/dist/esm/HumanNameDisplay/HumanNameDisplay.mjs +2 -2
  88. package/dist/esm/HumanNameDisplay/HumanNameDisplay.mjs.map +1 -1
  89. package/dist/esm/HumanNameInput/HumanNameInput.mjs +7 -7
  90. package/dist/esm/HumanNameInput/HumanNameInput.mjs.map +1 -1
  91. package/dist/esm/IdentifierDisplay/IdentifierDisplay.mjs +2 -2
  92. package/dist/esm/IdentifierDisplay/IdentifierDisplay.mjs.map +1 -1
  93. package/dist/esm/IdentifierInput/IdentifierInput.mjs +4 -4
  94. package/dist/esm/IdentifierInput/IdentifierInput.mjs.map +1 -1
  95. package/dist/esm/Logo/Logo.mjs +8 -8
  96. package/dist/esm/Logo/Logo.mjs.map +1 -1
  97. package/dist/esm/MedplumLink/MedplumLink.mjs +4 -4
  98. package/dist/esm/MedplumLink/MedplumLink.mjs.map +1 -1
  99. package/dist/esm/MedplumProvider/MedplumProvider.d.ts +8 -0
  100. package/dist/esm/MedplumProvider/MedplumProvider.mjs +19 -3
  101. package/dist/esm/MedplumProvider/MedplumProvider.mjs.map +1 -1
  102. package/dist/esm/MoneyDisplay/MoneyDisplay.mjs +2 -2
  103. package/dist/esm/MoneyDisplay/MoneyDisplay.mjs.map +1 -1
  104. package/dist/esm/MoneyInput/MoneyInput.mjs +4 -4
  105. package/dist/esm/MoneyInput/MoneyInput.mjs.map +1 -1
  106. package/dist/esm/NoteDisplay/NoteDisplay.d.ts +6 -0
  107. package/dist/esm/NoteDisplay/NoteDisplay.mjs +18 -0
  108. package/dist/esm/NoteDisplay/NoteDisplay.mjs.map +1 -0
  109. package/dist/esm/{ResourceDiffTable/ResourceDiffTable.stories.d.ts → NoteDisplay/NoteDisplay.stories.d.ts} +3 -1
  110. package/dist/esm/OperationOutcomeAlert/OperationOutcomeAlert.mjs +3 -3
  111. package/dist/esm/OperationOutcomeAlert/OperationOutcomeAlert.mjs.map +1 -1
  112. package/dist/esm/Panel/Panel.mjs +2 -2
  113. package/dist/esm/Panel/Panel.mjs.map +1 -1
  114. package/dist/esm/PatientTimeline/PatientTimeline.mjs +13 -20
  115. package/dist/esm/PatientTimeline/PatientTimeline.mjs.map +1 -1
  116. package/dist/esm/PeriodInput/PeriodInput.mjs +4 -4
  117. package/dist/esm/PeriodInput/PeriodInput.mjs.map +1 -1
  118. package/dist/esm/PlanDefinitionBuilder/PlanDefinitionBuilder.mjs +34 -34
  119. package/dist/esm/PlanDefinitionBuilder/PlanDefinitionBuilder.mjs.map +1 -1
  120. package/dist/esm/QuantityDisplay/QuantityDisplay.mjs +2 -2
  121. package/dist/esm/QuantityDisplay/QuantityDisplay.mjs.map +1 -1
  122. package/dist/esm/QuantityInput/QuantityInput.d.ts +1 -0
  123. package/dist/esm/QuantityInput/QuantityInput.mjs +14 -8
  124. package/dist/esm/QuantityInput/QuantityInput.mjs.map +1 -1
  125. package/dist/esm/QuantityInput/QuantityInput.stories.d.ts +7 -0
  126. package/dist/esm/QuestionnaireBuilder/QuestionnaireBuilder.mjs +31 -31
  127. package/dist/esm/QuestionnaireBuilder/QuestionnaireBuilder.mjs.map +1 -1
  128. package/dist/esm/QuestionnaireForm/QuestionnaireForm.mjs +33 -33
  129. package/dist/esm/QuestionnaireForm/QuestionnaireForm.mjs.map +1 -1
  130. package/dist/esm/RangeDisplay/RangeDisplay.mjs +2 -2
  131. package/dist/esm/RangeDisplay/RangeDisplay.mjs.map +1 -1
  132. package/dist/esm/RangeInput/RangeInput.mjs +4 -4
  133. package/dist/esm/RangeInput/RangeInput.mjs.map +1 -1
  134. package/dist/esm/RatioDisplay/RatioDisplay.mjs +4 -4
  135. package/dist/esm/RatioDisplay/RatioDisplay.mjs.map +1 -1
  136. package/dist/esm/RatioInput/RatioInput.mjs +4 -4
  137. package/dist/esm/RatioInput/RatioInput.mjs.map +1 -1
  138. package/dist/esm/ReferenceDisplay/ReferenceDisplay.mjs +3 -3
  139. package/dist/esm/ReferenceDisplay/ReferenceDisplay.mjs.map +1 -1
  140. package/dist/esm/ReferenceInput/ReferenceInput.mjs +4 -4
  141. package/dist/esm/ReferenceInput/ReferenceInput.mjs.map +1 -1
  142. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.d.ts +1 -2
  143. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.mjs +31 -31
  144. package/dist/esm/ReferenceRangeEditor/ReferenceRangeEditor.mjs.map +1 -1
  145. package/dist/esm/RequestGroupDisplay/RequestGroupDisplay.mjs +15 -15
  146. package/dist/esm/RequestGroupDisplay/RequestGroupDisplay.mjs.map +1 -1
  147. package/dist/esm/ResourceArrayDisplay/ResourceArrayDisplay.mjs +3 -3
  148. package/dist/esm/ResourceArrayDisplay/ResourceArrayDisplay.mjs.map +1 -1
  149. package/dist/esm/ResourceArrayInput/ResourceArrayInput.mjs +18 -18
  150. package/dist/esm/ResourceArrayInput/ResourceArrayInput.mjs.map +1 -1
  151. package/dist/esm/ResourceAvatar/ResourceAvatar.mjs +4 -4
  152. package/dist/esm/ResourceAvatar/ResourceAvatar.mjs.map +1 -1
  153. package/dist/esm/ResourceBadge/ResourceBadge.mjs +4 -4
  154. package/dist/esm/ResourceBadge/ResourceBadge.mjs.map +1 -1
  155. package/dist/esm/ResourceBlame/ResourceBlame.mjs +13 -13
  156. package/dist/esm/ResourceBlame/ResourceBlame.mjs.map +1 -1
  157. package/dist/esm/ResourceDiff/ResourceDiff.mjs +7 -7
  158. package/dist/esm/ResourceDiff/ResourceDiff.mjs.map +1 -1
  159. package/dist/esm/ResourceDiffTable/ResourceDiffTable.mjs +18 -18
  160. package/dist/esm/ResourceDiffTable/ResourceDiffTable.mjs.map +1 -1
  161. package/dist/esm/ResourceForm/ResourceForm.mjs +12 -12
  162. package/dist/esm/ResourceForm/ResourceForm.mjs.map +1 -1
  163. package/dist/esm/ResourceHistoryTable/ResourceHistoryTable.mjs +17 -17
  164. package/dist/esm/ResourceHistoryTable/ResourceHistoryTable.mjs.map +1 -1
  165. package/dist/esm/ResourceInput/ResourceInput.mjs +8 -8
  166. package/dist/esm/ResourceInput/ResourceInput.mjs.map +1 -1
  167. package/dist/esm/ResourceName/ResourceName.mjs +2 -2
  168. package/dist/esm/ResourceName/ResourceName.mjs.map +1 -1
  169. package/dist/esm/ResourcePropertyDisplay/ResourcePropertyDisplay.mjs +27 -27
  170. package/dist/esm/ResourcePropertyDisplay/ResourcePropertyDisplay.mjs.map +1 -1
  171. package/dist/esm/ResourcePropertyInput/ResourcePropertyInput.mjs +35 -35
  172. package/dist/esm/ResourcePropertyInput/ResourcePropertyInput.mjs.map +1 -1
  173. package/dist/esm/ResourceTable/ResourceTable.mjs +2 -2
  174. package/dist/esm/ResourceTable/ResourceTable.mjs.map +1 -1
  175. package/dist/esm/ResourceTimeline/ResourceTimeline.d.ts +2 -2
  176. package/dist/esm/ResourceTimeline/ResourceTimeline.mjs +67 -73
  177. package/dist/esm/ResourceTimeline/ResourceTimeline.mjs.map +1 -1
  178. package/dist/esm/Scheduler/Scheduler.mjs +22 -22
  179. package/dist/esm/Scheduler/Scheduler.mjs.map +1 -1
  180. package/dist/esm/SearchControl/SearchControl.mjs +49 -49
  181. package/dist/esm/SearchControl/SearchControl.mjs.map +1 -1
  182. package/dist/esm/SearchControl/SearchUtils.mjs +4 -4
  183. package/dist/esm/SearchControl/SearchUtils.mjs.map +1 -1
  184. package/dist/esm/SearchFieldEditor/SearchFieldEditor.mjs +25 -25
  185. package/dist/esm/SearchFieldEditor/SearchFieldEditor.mjs.map +1 -1
  186. package/dist/esm/SearchFilterEditor/SearchFilterEditor.mjs +37 -37
  187. package/dist/esm/SearchFilterEditor/SearchFilterEditor.mjs.map +1 -1
  188. package/dist/esm/SearchFilterValueDialog/SearchFilterValueDialog.mjs +6 -6
  189. package/dist/esm/SearchFilterValueDialog/SearchFilterValueDialog.mjs.map +1 -1
  190. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.mjs +4 -4
  191. package/dist/esm/SearchFilterValueDisplay/SearchFilterValueDisplay.mjs.map +1 -1
  192. package/dist/esm/SearchFilterValueInput/SearchFilterValueInput.mjs +8 -8
  193. package/dist/esm/SearchFilterValueInput/SearchFilterValueInput.mjs.map +1 -1
  194. package/dist/esm/SearchPopupMenu/SearchPopupMenu.mjs +62 -62
  195. package/dist/esm/SearchPopupMenu/SearchPopupMenu.mjs.map +1 -1
  196. package/dist/esm/ServiceRequestTimeline/ServiceRequestTimeline.mjs +9 -31
  197. package/dist/esm/ServiceRequestTimeline/ServiceRequestTimeline.mjs.map +1 -1
  198. package/dist/esm/StatusBadge/StatusBadge.mjs +2 -2
  199. package/dist/esm/StatusBadge/StatusBadge.mjs.map +1 -1
  200. package/dist/esm/Timeline/Timeline.mjs +20 -20
  201. package/dist/esm/Timeline/Timeline.mjs.map +1 -1
  202. package/dist/esm/TimingInput/TimingInput.mjs +19 -19
  203. package/dist/esm/TimingInput/TimingInput.mjs.map +1 -1
  204. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.mjs +2 -2
  205. package/dist/esm/ValueSetAutocomplete/ValueSetAutocomplete.mjs.map +1 -1
  206. package/dist/esm/auth/AuthenticationForm.mjs +22 -22
  207. package/dist/esm/auth/AuthenticationForm.mjs.map +1 -1
  208. package/dist/esm/auth/ChooseProfileForm.mjs +11 -11
  209. package/dist/esm/auth/ChooseProfileForm.mjs.map +1 -1
  210. package/dist/esm/auth/ChooseScopeForm.mjs +9 -9
  211. package/dist/esm/auth/ChooseScopeForm.mjs.map +1 -1
  212. package/dist/esm/auth/MfaForm.mjs +12 -12
  213. package/dist/esm/auth/MfaForm.mjs.map +1 -1
  214. package/dist/esm/auth/NewProjectForm.mjs +12 -12
  215. package/dist/esm/auth/NewProjectForm.mjs.map +1 -1
  216. package/dist/esm/auth/NewUserForm.mjs +22 -22
  217. package/dist/esm/auth/NewUserForm.mjs.map +1 -1
  218. package/dist/esm/auth/RegisterForm.mjs +5 -5
  219. package/dist/esm/auth/RegisterForm.mjs.map +1 -1
  220. package/dist/esm/auth/SignInForm.mjs +8 -8
  221. package/dist/esm/auth/SignInForm.mjs.map +1 -1
  222. package/dist/esm/index.min.mjs +1 -1
  223. package/dist/esm/index.mjs +1 -1
  224. package/dist/esm/node_modules/@tabler/icons/icons-react/dist/index.esm.mjs +6 -0
  225. package/dist/esm/node_modules/@tabler/icons/icons-react/dist/index.esm.mjs.map +1 -0
  226. package/dist/esm/useResource/useResource.mjs +3 -0
  227. package/dist/esm/useResource/useResource.mjs.map +1 -1
  228. package/package.json +20 -25
  229. package/rollup.config.mjs +0 -110
@@ -1,7 +1,7 @@
1
1
  import { Menu } from '@mantine/core';
2
2
  import { Operator } from '@medplum/core';
3
- import { IconSortAscending, IconSortDescending, IconEqual, IconEqualNot, IconMathLower, IconMathGreater, IconBracketsContain, IconCalendar, IconSettings, IconBucket, IconBucketOff, IconBleach, IconBleachOff, IconX } from '@tabler/icons';
4
- import React from 'react';
3
+ import { IconSortAscending as iNe, IconSortDescending as wNe, IconEqual as lZ, IconEqualNot as rZ, IconMathLower as Pse, IconMathGreater as Cse, IconBracketsContain as Jw, IconCalendar as zB, IconSettings as Bje, IconBucket as BC, IconBucketOff as CC, IconBleach as Qv, IconBleachOff as Jv, IconX as qXe } from '../node_modules/@tabler/icons/icons-react/dist/index.esm.mjs';
4
+ import e__default from 'react';
5
5
  import { buildFieldNameString, addTomorrowFilter, addTodayFilter, addYesterdayFilter, addNextMonthFilter, addThisMonthFilter, addLastMonthFilter, addYearToDateFilter, addMissingFilter, setSort, clearFiltersOnField } from '../SearchControl/SearchUtils.mjs';
6
6
 
7
7
  function SearchPopupMenu(props) {
@@ -22,26 +22,26 @@ function SearchPopupMenu(props) {
22
22
  }
23
23
  // If there is only one search parameter, then show it directly
24
24
  if (props.searchParams.length === 1) {
25
- return (React.createElement(SearchParameterSubMenu, { search: props.search, searchParam: props.searchParams[0], onSort: onSort, onPrompt: onPrompt, onChange: onChange, onClear: onClear }));
25
+ return (e__default.createElement(SearchParameterSubMenu, { search: props.search, searchParam: props.searchParams[0], onSort: onSort, onPrompt: onPrompt, onChange: onChange, onClear: onClear }));
26
26
  }
27
27
  // Otherwise, show a menu, with each search parameter as a sub menu
28
- return (React.createElement(Menu.Dropdown, null, props.searchParams.map((searchParam) => (React.createElement(Menu.Item, { key: searchParam.code }, buildFieldNameString(searchParam.code))))));
28
+ return (e__default.createElement(Menu.Dropdown, null, props.searchParams.map((searchParam) => (e__default.createElement(Menu.Item, { key: searchParam.code }, buildFieldNameString(searchParam.code))))));
29
29
  }
30
30
  function SearchParameterSubMenu(props) {
31
31
  switch (props.searchParam.type) {
32
32
  case 'date':
33
- return React.createElement(DateFilterSubMenu, { ...props });
33
+ return e__default.createElement(DateFilterSubMenu, { ...props });
34
34
  case 'number':
35
35
  case 'quantity':
36
- return React.createElement(NumericFilterSubMenu, { ...props });
36
+ return e__default.createElement(NumericFilterSubMenu, { ...props });
37
37
  case 'reference':
38
- return React.createElement(ReferenceFilterSubMenu, { ...props });
38
+ return e__default.createElement(ReferenceFilterSubMenu, { ...props });
39
39
  case 'string':
40
40
  case 'token':
41
41
  case 'uri':
42
- return React.createElement(TextFilterSubMenu, { ...props });
42
+ return e__default.createElement(TextFilterSubMenu, { ...props });
43
43
  default:
44
- return React.createElement(React.Fragment, null,
44
+ return e__default.createElement(e__default.Fragment, null,
45
45
  "Unknown search param type: ",
46
46
  props.searchParam.type);
47
47
  }
@@ -49,72 +49,72 @@ function SearchParameterSubMenu(props) {
49
49
  function DateFilterSubMenu(props) {
50
50
  const { searchParam } = props;
51
51
  const code = searchParam.code;
52
- return (React.createElement(Menu.Dropdown, null,
53
- React.createElement(Menu.Item, { icon: React.createElement(IconSortAscending, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort Oldest to Newest"),
54
- React.createElement(Menu.Item, { icon: React.createElement(IconSortDescending, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Newest to Oldest"),
55
- React.createElement(Menu.Divider, null),
56
- React.createElement(Menu.Item, { icon: React.createElement(IconEqual, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
57
- React.createElement(Menu.Item, { icon: React.createElement(IconEqualNot, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT_EQUALS) }, "Does not equal..."),
58
- React.createElement(Menu.Divider, null),
59
- React.createElement(Menu.Item, { icon: React.createElement(IconMathLower, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.ENDS_BEFORE) }, "Before..."),
60
- React.createElement(Menu.Item, { icon: React.createElement(IconMathGreater, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.STARTS_AFTER) }, "After..."),
61
- React.createElement(Menu.Item, { icon: React.createElement(IconBracketsContain, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Between..."),
62
- React.createElement(Menu.Divider, null),
63
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addTomorrowFilter(props.search, code)) }, "Tomorrow"),
64
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addTodayFilter(props.search, code)) }, "Today"),
65
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addYesterdayFilter(props.search, code)) }, "Yesterday"),
66
- React.createElement(Menu.Divider, null),
67
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addNextMonthFilter(props.search, code)) }, "Next Month"),
68
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addThisMonthFilter(props.search, code)) }, "This Month"),
69
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addLastMonthFilter(props.search, code)) }, "Last Month"),
70
- React.createElement(Menu.Divider, null),
71
- React.createElement(Menu.Item, { icon: React.createElement(IconCalendar, { size: 14 }), onClick: () => props.onChange(addYearToDateFilter(props.search, code)) }, "Year to date"),
72
- React.createElement(CommonMenuItems, { ...props })));
52
+ return (e__default.createElement(Menu.Dropdown, null,
53
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(iNe, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort Oldest to Newest"),
54
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(wNe, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Newest to Oldest"),
55
+ e__default.createElement(Menu.Divider, null),
56
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(lZ, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
57
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(rZ, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT_EQUALS) }, "Does not equal..."),
58
+ e__default.createElement(Menu.Divider, null),
59
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Pse, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.ENDS_BEFORE) }, "Before..."),
60
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Cse, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.STARTS_AFTER) }, "After..."),
61
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Jw, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Between..."),
62
+ e__default.createElement(Menu.Divider, null),
63
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(zB, { size: 14 }), onClick: () => props.onChange(addTomorrowFilter(props.search, code)) }, "Tomorrow"),
64
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(zB, { size: 14 }), onClick: () => props.onChange(addTodayFilter(props.search, code)) }, "Today"),
65
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(zB, { size: 14 }), onClick: () => props.onChange(addYesterdayFilter(props.search, code)) }, "Yesterday"),
66
+ e__default.createElement(Menu.Divider, null),
67
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(zB, { size: 14 }), onClick: () => props.onChange(addNextMonthFilter(props.search, code)) }, "Next Month"),
68
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(zB, { size: 14 }), onClick: () => props.onChange(addThisMonthFilter(props.search, code)) }, "This Month"),
69
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(zB, { size: 14 }), onClick: () => props.onChange(addLastMonthFilter(props.search, code)) }, "Last Month"),
70
+ e__default.createElement(Menu.Divider, null),
71
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(zB, { size: 14 }), onClick: () => props.onChange(addYearToDateFilter(props.search, code)) }, "Year to date"),
72
+ e__default.createElement(CommonMenuItems, { ...props })));
73
73
  }
74
74
  function NumericFilterSubMenu(props) {
75
75
  const { searchParam } = props;
76
- return (React.createElement(Menu.Dropdown, null,
77
- React.createElement(Menu.Item, { icon: React.createElement(IconSortAscending, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort Smallest to Largest"),
78
- React.createElement(Menu.Item, { icon: React.createElement(IconSortDescending, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Largest to Smallest"),
79
- React.createElement(Menu.Divider, null),
80
- React.createElement(Menu.Item, { icon: React.createElement(IconEqual, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
81
- React.createElement(Menu.Item, { icon: React.createElement(IconEqualNot, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT_EQUALS) }, "Does not equal..."),
82
- React.createElement(Menu.Divider, null),
83
- React.createElement(Menu.Item, { icon: React.createElement(IconMathGreater, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.GREATER_THAN) }, "Greater than..."),
84
- React.createElement(Menu.Item, { icon: React.createElement(IconSettings, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.GREATER_THAN_OR_EQUALS) }, "Greater than or equal to..."),
85
- React.createElement(Menu.Item, { icon: React.createElement(IconMathLower, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.LESS_THAN) }, "Less than..."),
86
- React.createElement(Menu.Item, { icon: React.createElement(IconSettings, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.LESS_THAN_OR_EQUALS) }, "Less than or equal to..."),
87
- React.createElement(CommonMenuItems, { ...props })));
76
+ return (e__default.createElement(Menu.Dropdown, null,
77
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(iNe, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort Smallest to Largest"),
78
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(wNe, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Largest to Smallest"),
79
+ e__default.createElement(Menu.Divider, null),
80
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(lZ, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
81
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(rZ, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT_EQUALS) }, "Does not equal..."),
82
+ e__default.createElement(Menu.Divider, null),
83
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Cse, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.GREATER_THAN) }, "Greater than..."),
84
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Bje, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.GREATER_THAN_OR_EQUALS) }, "Greater than or equal to..."),
85
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Pse, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.LESS_THAN) }, "Less than..."),
86
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Bje, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.LESS_THAN_OR_EQUALS) }, "Less than or equal to..."),
87
+ e__default.createElement(CommonMenuItems, { ...props })));
88
88
  }
89
89
  function ReferenceFilterSubMenu(props) {
90
90
  const { searchParam } = props;
91
- return (React.createElement(Menu.Dropdown, null,
92
- React.createElement(Menu.Item, { icon: React.createElement(IconEqual, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
93
- React.createElement(Menu.Item, { icon: React.createElement(IconEqualNot, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT) }, "Does not equal..."),
94
- React.createElement(CommonMenuItems, { ...props })));
91
+ return (e__default.createElement(Menu.Dropdown, null,
92
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(lZ, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
93
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(rZ, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT) }, "Does not equal..."),
94
+ e__default.createElement(CommonMenuItems, { ...props })));
95
95
  }
96
96
  function TextFilterSubMenu(props) {
97
97
  const { searchParam } = props;
98
- return (React.createElement(Menu.Dropdown, null,
99
- React.createElement(Menu.Item, { icon: React.createElement(IconSortAscending, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort A to Z"),
100
- React.createElement(Menu.Item, { icon: React.createElement(IconSortDescending, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Z to A"),
101
- React.createElement(Menu.Divider, null),
102
- React.createElement(Menu.Item, { icon: React.createElement(IconEqual, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
103
- React.createElement(Menu.Item, { icon: React.createElement(IconEqualNot, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT) }, "Does not equal..."),
104
- React.createElement(Menu.Divider, null),
105
- React.createElement(Menu.Item, { icon: React.createElement(IconBucket, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.CONTAINS) }, "Contains..."),
106
- React.createElement(Menu.Item, { icon: React.createElement(IconBucketOff, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Does not contain..."),
107
- React.createElement(CommonMenuItems, { ...props })));
98
+ return (e__default.createElement(Menu.Dropdown, null,
99
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(iNe, { size: 14 }), onClick: () => props.onSort(searchParam, false) }, "Sort A to Z"),
100
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(wNe, { size: 14 }), onClick: () => props.onSort(searchParam, true) }, "Sort Z to A"),
101
+ e__default.createElement(Menu.Divider, null),
102
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(lZ, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Equals..."),
103
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(rZ, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.NOT) }, "Does not equal..."),
104
+ e__default.createElement(Menu.Divider, null),
105
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(BC, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.CONTAINS) }, "Contains..."),
106
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(CC, { size: 14 }), onClick: () => props.onPrompt(searchParam, Operator.EQUALS) }, "Does not contain..."),
107
+ e__default.createElement(CommonMenuItems, { ...props })));
108
108
  }
109
109
  function CommonMenuItems(props) {
110
110
  const { searchParam } = props;
111
111
  const code = searchParam.code;
112
- return (React.createElement(React.Fragment, null,
113
- React.createElement(Menu.Divider, null),
114
- React.createElement(Menu.Item, { icon: React.createElement(IconBleach, { size: 14 }), onClick: () => props.onChange(addMissingFilter(props.search, code)) }, "Missing"),
115
- React.createElement(Menu.Item, { icon: React.createElement(IconBleachOff, { size: 14 }), onClick: () => props.onChange(addMissingFilter(props.search, code, false)) }, "Not missing"),
116
- React.createElement(Menu.Divider, null),
117
- React.createElement(Menu.Item, { icon: React.createElement(IconX, { size: 14 }), onClick: () => props.onClear(searchParam) }, "Clear filters")));
112
+ return (e__default.createElement(e__default.Fragment, null,
113
+ e__default.createElement(Menu.Divider, null),
114
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Qv, { size: 14 }), onClick: () => props.onChange(addMissingFilter(props.search, code)) }, "Missing"),
115
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(Jv, { size: 14 }), onClick: () => props.onChange(addMissingFilter(props.search, code, false)) }, "Not missing"),
116
+ e__default.createElement(Menu.Divider, null),
117
+ e__default.createElement(Menu.Item, { icon: e__default.createElement(qXe, { size: 14 }), onClick: () => props.onClear(searchParam) }, "Clear filters")));
118
118
  }
119
119
 
120
120
  export { SearchPopupMenu };
@@ -1 +1 @@
1
- {"version":3,"file":"SearchPopupMenu.mjs","sources":["../../../src/SearchPopupMenu/SearchPopupMenu.tsx"],"sourcesContent":["import { Menu } from '@mantine/core';\nimport { Filter, Operator, SearchRequest } from '@medplum/core';\nimport { SearchParameter } from '@medplum/fhirtypes';\nimport {\n IconBleach,\n IconBleachOff,\n IconBracketsContain,\n IconBucket,\n IconBucketOff,\n IconCalendar,\n IconEqual,\n IconEqualNot,\n IconMathGreater,\n IconMathLower,\n IconSettings,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} from '@tabler/icons';\nimport React from 'react';\nimport {\n addLastMonthFilter,\n addMissingFilter,\n addNextMonthFilter,\n addThisMonthFilter,\n addTodayFilter,\n addTomorrowFilter,\n addYearToDateFilter,\n addYesterdayFilter,\n buildFieldNameString,\n clearFiltersOnField,\n setSort,\n} from '../SearchControl/SearchUtils';\n\nexport interface SearchPopupMenuProps {\n search: SearchRequest;\n searchParams?: SearchParameter[];\n onPrompt: (searchParam: SearchParameter, filter: Filter) => void;\n onChange: (definition: SearchRequest) => void;\n}\n\nexport function SearchPopupMenu(props: SearchPopupMenuProps): JSX.Element | null {\n if (!props.searchParams) {\n return null;\n }\n\n function onSort(searchParam: SearchParameter, desc: boolean): void {\n onChange(setSort(props.search, searchParam.code as string, desc));\n }\n\n function onClear(searchParam: SearchParameter): void {\n onChange(clearFiltersOnField(props.search, searchParam.code as string));\n }\n\n function onPrompt(searchParam: SearchParameter, operator: Operator): void {\n props.onPrompt(searchParam, { code: searchParam.code as string, operator, value: '' });\n }\n\n function onChange(definition: SearchRequest): void {\n props.onChange(definition);\n }\n\n // If there is only one search parameter, then show it directly\n if (props.searchParams.length === 1) {\n return (\n <SearchParameterSubMenu\n search={props.search}\n searchParam={props.searchParams[0]}\n onSort={onSort}\n onPrompt={onPrompt}\n onChange={onChange}\n onClear={onClear}\n />\n );\n }\n\n // Otherwise, show a menu, with each search parameter as a sub menu\n return (\n <Menu.Dropdown>\n {props.searchParams.map((searchParam) => (\n <Menu.Item key={searchParam.code}>{buildFieldNameString(searchParam.code as string)}</Menu.Item>\n ))}\n </Menu.Dropdown>\n );\n}\n\ninterface SearchPopupSubMenuProps {\n search: SearchRequest;\n searchParam: SearchParameter;\n onSort: (searchParam: SearchParameter, descending: boolean) => void;\n onPrompt: (searchParam: SearchParameter, operator: Operator) => void;\n onChange: (search: SearchRequest) => void;\n onClear: (searchParam: SearchParameter) => void;\n}\n\nfunction SearchParameterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n switch (props.searchParam.type) {\n case 'date':\n return <DateFilterSubMenu {...props} />;\n case 'number':\n case 'quantity':\n return <NumericFilterSubMenu {...props} />;\n case 'reference':\n return <ReferenceFilterSubMenu {...props} />;\n case 'string':\n case 'token':\n case 'uri':\n return <TextFilterSubMenu {...props} />;\n default:\n return <>Unknown search param type: {props.searchParam.type}</>;\n }\n}\n\nfunction DateFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n const code = searchParam.code as string;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort Oldest to Newest\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Newest to Oldest\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT_EQUALS)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconMathLower size={14} />} onClick={() => props.onPrompt(searchParam, Operator.ENDS_BEFORE)}>\n Before...\n </Menu.Item>\n <Menu.Item\n icon={<IconMathGreater size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.STARTS_AFTER)}\n >\n After...\n </Menu.Item>\n <Menu.Item icon={<IconBracketsContain size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Between...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addTomorrowFilter(props.search, code))}\n >\n Tomorrow\n </Menu.Item>\n <Menu.Item icon={<IconCalendar size={14} />} onClick={() => props.onChange(addTodayFilter(props.search, code))}>\n Today\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addYesterdayFilter(props.search, code))}\n >\n Yesterday\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addNextMonthFilter(props.search, code))}\n >\n Next Month\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addThisMonthFilter(props.search, code))}\n >\n This Month\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addLastMonthFilter(props.search, code))}\n >\n Last Month\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addYearToDateFilter(props.search, code))}\n >\n Year to date\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction NumericFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort Smallest to Largest\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Largest to Smallest\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT_EQUALS)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconMathGreater size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.GREATER_THAN)}\n >\n Greater than...\n </Menu.Item>\n <Menu.Item\n icon={<IconSettings size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.GREATER_THAN_OR_EQUALS)}\n >\n Greater than or equal to...\n </Menu.Item>\n <Menu.Item icon={<IconMathLower size={14} />} onClick={() => props.onPrompt(searchParam, Operator.LESS_THAN)}>\n Less than...\n </Menu.Item>\n <Menu.Item\n icon={<IconSettings size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.LESS_THAN_OR_EQUALS)}\n >\n Less than or equal to...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction ReferenceFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT)}>\n Does not equal...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction TextFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort A to Z\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Z to A\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconBucket size={14} />} onClick={() => props.onPrompt(searchParam, Operator.CONTAINS)}>\n Contains...\n </Menu.Item>\n <Menu.Item icon={<IconBucketOff size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Does not contain...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction CommonMenuItems(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n const code = searchParam.code as string;\n return (\n <>\n <Menu.Divider />\n <Menu.Item icon={<IconBleach size={14} />} onClick={() => props.onChange(addMissingFilter(props.search, code))}>\n Missing\n </Menu.Item>\n <Menu.Item\n icon={<IconBleachOff size={14} />}\n onClick={() => props.onChange(addMissingFilter(props.search, code, false))}\n >\n Not missing\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconX size={14} />} onClick={() => props.onClear(searchParam)}>\n Clear filters\n </Menu.Item>\n </>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchPopupMenu.mjs","sources":["../../../src/SearchPopupMenu/SearchPopupMenu.tsx"],"sourcesContent":["import { Menu } from '@mantine/core';\nimport { Filter, Operator, SearchRequest } from '@medplum/core';\nimport { SearchParameter } from '@medplum/fhirtypes';\nimport {\n IconBleach,\n IconBleachOff,\n IconBracketsContain,\n IconBucket,\n IconBucketOff,\n IconCalendar,\n IconEqual,\n IconEqualNot,\n IconMathGreater,\n IconMathLower,\n IconSettings,\n IconSortAscending,\n IconSortDescending,\n IconX,\n} from '@tabler/icons';\nimport React from 'react';\nimport {\n addLastMonthFilter,\n addMissingFilter,\n addNextMonthFilter,\n addThisMonthFilter,\n addTodayFilter,\n addTomorrowFilter,\n addYearToDateFilter,\n addYesterdayFilter,\n buildFieldNameString,\n clearFiltersOnField,\n setSort,\n} from '../SearchControl/SearchUtils';\n\nexport interface SearchPopupMenuProps {\n search: SearchRequest;\n searchParams?: SearchParameter[];\n onPrompt: (searchParam: SearchParameter, filter: Filter) => void;\n onChange: (definition: SearchRequest) => void;\n}\n\nexport function SearchPopupMenu(props: SearchPopupMenuProps): JSX.Element | null {\n if (!props.searchParams) {\n return null;\n }\n\n function onSort(searchParam: SearchParameter, desc: boolean): void {\n onChange(setSort(props.search, searchParam.code as string, desc));\n }\n\n function onClear(searchParam: SearchParameter): void {\n onChange(clearFiltersOnField(props.search, searchParam.code as string));\n }\n\n function onPrompt(searchParam: SearchParameter, operator: Operator): void {\n props.onPrompt(searchParam, { code: searchParam.code as string, operator, value: '' });\n }\n\n function onChange(definition: SearchRequest): void {\n props.onChange(definition);\n }\n\n // If there is only one search parameter, then show it directly\n if (props.searchParams.length === 1) {\n return (\n <SearchParameterSubMenu\n search={props.search}\n searchParam={props.searchParams[0]}\n onSort={onSort}\n onPrompt={onPrompt}\n onChange={onChange}\n onClear={onClear}\n />\n );\n }\n\n // Otherwise, show a menu, with each search parameter as a sub menu\n return (\n <Menu.Dropdown>\n {props.searchParams.map((searchParam) => (\n <Menu.Item key={searchParam.code}>{buildFieldNameString(searchParam.code as string)}</Menu.Item>\n ))}\n </Menu.Dropdown>\n );\n}\n\ninterface SearchPopupSubMenuProps {\n search: SearchRequest;\n searchParam: SearchParameter;\n onSort: (searchParam: SearchParameter, descending: boolean) => void;\n onPrompt: (searchParam: SearchParameter, operator: Operator) => void;\n onChange: (search: SearchRequest) => void;\n onClear: (searchParam: SearchParameter) => void;\n}\n\nfunction SearchParameterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n switch (props.searchParam.type) {\n case 'date':\n return <DateFilterSubMenu {...props} />;\n case 'number':\n case 'quantity':\n return <NumericFilterSubMenu {...props} />;\n case 'reference':\n return <ReferenceFilterSubMenu {...props} />;\n case 'string':\n case 'token':\n case 'uri':\n return <TextFilterSubMenu {...props} />;\n default:\n return <>Unknown search param type: {props.searchParam.type}</>;\n }\n}\n\nfunction DateFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n const code = searchParam.code as string;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort Oldest to Newest\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Newest to Oldest\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT_EQUALS)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconMathLower size={14} />} onClick={() => props.onPrompt(searchParam, Operator.ENDS_BEFORE)}>\n Before...\n </Menu.Item>\n <Menu.Item\n icon={<IconMathGreater size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.STARTS_AFTER)}\n >\n After...\n </Menu.Item>\n <Menu.Item icon={<IconBracketsContain size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Between...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addTomorrowFilter(props.search, code))}\n >\n Tomorrow\n </Menu.Item>\n <Menu.Item icon={<IconCalendar size={14} />} onClick={() => props.onChange(addTodayFilter(props.search, code))}>\n Today\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addYesterdayFilter(props.search, code))}\n >\n Yesterday\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addNextMonthFilter(props.search, code))}\n >\n Next Month\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addThisMonthFilter(props.search, code))}\n >\n This Month\n </Menu.Item>\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addLastMonthFilter(props.search, code))}\n >\n Last Month\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconCalendar size={14} />}\n onClick={() => props.onChange(addYearToDateFilter(props.search, code))}\n >\n Year to date\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction NumericFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort Smallest to Largest\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Largest to Smallest\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT_EQUALS)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item\n icon={<IconMathGreater size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.GREATER_THAN)}\n >\n Greater than...\n </Menu.Item>\n <Menu.Item\n icon={<IconSettings size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.GREATER_THAN_OR_EQUALS)}\n >\n Greater than or equal to...\n </Menu.Item>\n <Menu.Item icon={<IconMathLower size={14} />} onClick={() => props.onPrompt(searchParam, Operator.LESS_THAN)}>\n Less than...\n </Menu.Item>\n <Menu.Item\n icon={<IconSettings size={14} />}\n onClick={() => props.onPrompt(searchParam, Operator.LESS_THAN_OR_EQUALS)}\n >\n Less than or equal to...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction ReferenceFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT)}>\n Does not equal...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction TextFilterSubMenu(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n return (\n <Menu.Dropdown>\n <Menu.Item icon={<IconSortAscending size={14} />} onClick={() => props.onSort(searchParam, false)}>\n Sort A to Z\n </Menu.Item>\n <Menu.Item icon={<IconSortDescending size={14} />} onClick={() => props.onSort(searchParam, true)}>\n Sort Z to A\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconEqual size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Equals...\n </Menu.Item>\n <Menu.Item icon={<IconEqualNot size={14} />} onClick={() => props.onPrompt(searchParam, Operator.NOT)}>\n Does not equal...\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconBucket size={14} />} onClick={() => props.onPrompt(searchParam, Operator.CONTAINS)}>\n Contains...\n </Menu.Item>\n <Menu.Item icon={<IconBucketOff size={14} />} onClick={() => props.onPrompt(searchParam, Operator.EQUALS)}>\n Does not contain...\n </Menu.Item>\n <CommonMenuItems {...props} />\n </Menu.Dropdown>\n );\n}\n\nfunction CommonMenuItems(props: SearchPopupSubMenuProps): JSX.Element {\n const { searchParam } = props;\n const code = searchParam.code as string;\n return (\n <>\n <Menu.Divider />\n <Menu.Item icon={<IconBleach size={14} />} onClick={() => props.onChange(addMissingFilter(props.search, code))}>\n Missing\n </Menu.Item>\n <Menu.Item\n icon={<IconBleachOff size={14} />}\n onClick={() => props.onChange(addMissingFilter(props.search, code, false))}\n >\n Not missing\n </Menu.Item>\n <Menu.Divider />\n <Menu.Item icon={<IconX size={14} />} onClick={() => props.onClear(searchParam)}>\n Clear filters\n </Menu.Item>\n </>\n );\n}\n"],"names":["React","IconSortAscending","IconSortDescending","IconEqual","IconEqualNot","IconMathLower","IconMathGreater","IconBracketsContain","IconCalendar","IconSettings","IconBucket","IconBucketOff","IconBleach","IconBleachOff","IconX"],"mappings":"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"}
@@ -1,38 +1,16 @@
1
1
  import { getReferenceString, createReference } from '@medplum/core';
2
- import React from 'react';
2
+ import e__default from 'react';
3
3
  import { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline.mjs';
4
4
 
5
5
  function ServiceRequestTimeline(props) {
6
- return (React.createElement(ResourceTimeline, { value: props.serviceRequest, buildSearchRequests: (resource) => ({
7
- resourceType: 'Bundle',
8
- type: 'batch',
9
- entry: [
10
- {
11
- request: {
12
- method: 'GET',
13
- url: `${getReferenceString(resource)}/_history`,
14
- },
15
- },
16
- {
17
- request: {
18
- method: 'GET',
19
- url: `Communication?based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,
20
- },
21
- },
22
- {
23
- request: {
24
- method: 'GET',
25
- url: `Media?_count=100&based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,
26
- },
27
- },
28
- {
29
- request: {
30
- method: 'GET',
31
- url: `DiagnosticReport?based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,
32
- },
33
- },
34
- ],
35
- }), createCommunication: (resource, sender, text) => ({
6
+ return (e__default.createElement(ResourceTimeline, { value: props.serviceRequest, loadTimelineResources: async (medplum, resource) => {
7
+ return Promise.all([
8
+ medplum.readHistory('ServiceRequest', resource.id),
9
+ medplum.search('Communication', 'based-on=' + getReferenceString(resource)),
10
+ medplum.search('Media', '_count=100&based-on=' + getReferenceString(resource)),
11
+ medplum.search('DiagnosticReport', 'based-on=' + getReferenceString(resource)),
12
+ ]);
13
+ }, createCommunication: (resource, sender, text) => ({
36
14
  resourceType: 'Communication',
37
15
  status: 'completed',
38
16
  basedOn: [createReference(resource)],
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceRequestTimeline.mjs","sources":["../../../src/ServiceRequestTimeline/ServiceRequestTimeline.tsx"],"sourcesContent":["import { createReference, getReferenceString, ProfileResource } from '@medplum/core';\nimport { Attachment, Group, Patient, Reference, Resource, ServiceRequest } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline';\n\nexport interface ServiceRequestTimelineProps {\n serviceRequest: ServiceRequest | Reference<ServiceRequest>;\n}\n\nexport function ServiceRequestTimeline(props: ServiceRequestTimelineProps): JSX.Element {\n return (\n <ResourceTimeline\n value={props.serviceRequest}\n buildSearchRequests={(resource: Resource) => ({\n resourceType: 'Bundle',\n type: 'batch',\n entry: [\n {\n request: {\n method: 'GET',\n url: `${getReferenceString(resource)}/_history`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `Communication?based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `Media?_count=100&based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,\n },\n },\n {\n request: {\n method: 'GET',\n url: `DiagnosticReport?based-on=${getReferenceString(resource)}&_sort=-_lastUpdated`,\n },\n },\n ],\n })}\n createCommunication={(resource: ServiceRequest, sender: ProfileResource, text: string) => ({\n resourceType: 'Communication',\n status: 'completed',\n basedOn: [createReference(resource)],\n subject: resource.subject as Reference<Group | Patient>,\n sender: createReference(sender),\n sent: new Date().toISOString(),\n payload: [{ contentString: text }],\n })}\n createMedia={(resource: ServiceRequest, operator: ProfileResource, content: Attachment) => ({\n resourceType: 'Media',\n status: 'completed',\n basedOn: [createReference(resource)],\n subject: resource.subject,\n operator: createReference(operator),\n issued: new Date().toISOString(),\n content,\n })}\n />\n );\n}\n"],"names":[],"mappings":";;;;AASM,SAAU,sBAAsB,CAAC,KAAkC,EAAA;AACvE,IAAA,QACE,KAAC,CAAA,aAAA,CAAA,gBAAgB,EACf,EAAA,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,mBAAmB,EAAE,CAAC,QAAkB,MAAM;AAC5C,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,GAAG,EAAE,CAAG,EAAA,kBAAkB,CAAC,QAAQ,CAAC,CAAW,SAAA,CAAA;AAChD,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,GAAG,EAAE,CAA0B,uBAAA,EAAA,kBAAkB,CAAC,QAAQ,CAAC,CAAsB,oBAAA,CAAA;AAClF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,GAAG,EAAE,CAA6B,0BAAA,EAAA,kBAAkB,CAAC,QAAQ,CAAC,CAAsB,oBAAA,CAAA;AACrF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,GAAG,EAAE,CAA6B,0BAAA,EAAA,kBAAkB,CAAC,QAAQ,CAAC,CAAsB,oBAAA,CAAA;AACrF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,EACF,mBAAmB,EAAE,CAAC,QAAwB,EAAE,MAAuB,EAAE,IAAY,MAAM;AACzF,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,EAAE,QAAQ,CAAC,OAAqC;AACvD,YAAA,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;AAC/B,YAAA,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACnC,SAAA,CAAC,EACF,WAAW,EAAE,CAAC,QAAwB,EAAE,QAAyB,EAAE,OAAmB,MAAM;AAC1F,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,YAAA,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;AACnC,YAAA,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAChC,OAAO;SACR,CAAC,EAAA,CACF,EACF;AACJ;;;;"}
1
+ {"version":3,"file":"ServiceRequestTimeline.mjs","sources":["../../../src/ServiceRequestTimeline/ServiceRequestTimeline.tsx"],"sourcesContent":["import { createReference, getReferenceString, MedplumClient, ProfileResource } from '@medplum/core';\nimport { Attachment, Group, Patient, Reference, ServiceRequest } from '@medplum/fhirtypes';\nimport React from 'react';\nimport { ResourceTimeline } from '../ResourceTimeline/ResourceTimeline';\n\nexport interface ServiceRequestTimelineProps {\n serviceRequest: ServiceRequest | Reference<ServiceRequest>;\n}\n\nexport function ServiceRequestTimeline(props: ServiceRequestTimelineProps): JSX.Element {\n return (\n <ResourceTimeline\n value={props.serviceRequest}\n loadTimelineResources={async (medplum: MedplumClient, resource: ServiceRequest) => {\n return Promise.all([\n medplum.readHistory('ServiceRequest', resource.id as string),\n medplum.search('Communication', 'based-on=' + getReferenceString(resource)),\n medplum.search('Media', '_count=100&based-on=' + getReferenceString(resource)),\n medplum.search('DiagnosticReport', 'based-on=' + getReferenceString(resource)),\n ]);\n }}\n createCommunication={(resource: ServiceRequest, sender: ProfileResource, text: string) => ({\n resourceType: 'Communication',\n status: 'completed',\n basedOn: [createReference(resource)],\n subject: resource.subject as Reference<Group | Patient>,\n sender: createReference(sender),\n sent: new Date().toISOString(),\n payload: [{ contentString: text }],\n })}\n createMedia={(resource: ServiceRequest, operator: ProfileResource, content: Attachment) => ({\n resourceType: 'Media',\n status: 'completed',\n basedOn: [createReference(resource)],\n subject: resource.subject,\n operator: createReference(operator),\n issued: new Date().toISOString(),\n content,\n })}\n />\n );\n}\n"],"names":["React"],"mappings":";;;;AASM,SAAU,sBAAsB,CAAC,KAAkC,EAAA;AACvE,IAAA,QACEA,UAAC,CAAA,aAAA,CAAA,gBAAgB,IACf,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,qBAAqB,EAAE,OAAO,OAAsB,EAAE,QAAwB,KAAI;YAChF,OAAO,OAAO,CAAC,GAAG,CAAC;gBACjB,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAY,CAAC;gBAC5D,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC3E,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC9E,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC/E,aAAA,CAAC,CAAC;AACL,SAAC,EACD,mBAAmB,EAAE,CAAC,QAAwB,EAAE,MAAuB,EAAE,IAAY,MAAM;AACzF,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,EAAE,QAAQ,CAAC,OAAqC;AACvD,YAAA,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;AAC/B,YAAA,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACnC,SAAA,CAAC,EACF,WAAW,EAAE,CAAC,QAAwB,EAAE,QAAyB,EAAE,OAAmB,MAAM;AAC1F,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,OAAO,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,YAAA,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;AACnC,YAAA,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAChC,OAAO;SACR,CAAC,EAAA,CACF,EACF;AACJ;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { Badge } from '@mantine/core';
2
- import React from 'react';
2
+ import e__default from 'react';
3
3
 
4
4
  /*
5
5
  * Request status: https://hl7.org/fhir/valueset-request-status.html
@@ -56,7 +56,7 @@ const statusToColor = {
56
56
  stat: 'red',
57
57
  };
58
58
  function StatusBadge(props) {
59
- return React.createElement(Badge, { color: statusToColor[props.status] }, props.status);
59
+ return e__default.createElement(Badge, { color: statusToColor[props.status] }, props.status);
60
60
  }
61
61
 
62
62
  export { StatusBadge };
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBadge.mjs","sources":["../../../src/StatusBadge/StatusBadge.tsx"],"sourcesContent":["import { Badge, DefaultMantineColor } from '@mantine/core';\nimport React from 'react';\n\n/*\n * Request status: https://hl7.org/fhir/valueset-request-status.html\n * draft, active, on-hold, revoked, completed, entered-in-error, unknown\n *\n * Publication status: https://hl7.org/fhir/valueset-publication-status.html\n * draft, active, retired, unknown\n *\n * Observation status: https://www.hl7.org/fhir/valueset-observation-status.html\n * registered, preliminary, final, amended, corrected, cancelled, entered-in-error, unknown\n *\n * DiagnosticReport status: https://hl7.org/fhir/valueset-diagnostic-report-status.html\n * registered, preliminary, final, amended, corrected, appended, cancelled, entered-in-error, unknown\n *\n * Task status: https://hl7.org/fhir/valueset-task-status.html\n * draft, requested, received, accepted, rejected, ready, cancelled, in-progress, on-hold, failed, completed, entered-in-error\n *\n * Appointment status: https://www.hl7.org/fhir/valueset-appointmentstatus.html\n * proposed, pending, booked, arrived, fulfilled, cancelled, noshow, entered-in-error, chcked-in, waitlist\n */\n\nconst statusToColor: Record<string, DefaultMantineColor> = {\n draft: 'blue',\n active: 'blue',\n 'on-hold': 'yellow',\n revoked: 'red',\n completed: 'green',\n 'entered-in-error': 'red',\n unknown: 'gray',\n retired: 'gray',\n registered: 'blue',\n preliminary: 'blue',\n final: 'green',\n amended: 'yellow',\n corrected: 'yellow',\n cancelled: 'red',\n requested: 'blue',\n received: 'blue',\n accepted: 'blue',\n rejected: 'red',\n ready: 'blue',\n 'in-progress': 'blue',\n failed: 'red',\n proposed: 'blue',\n pending: 'blue',\n booked: 'blue',\n arrived: 'blue',\n fulfilled: 'green',\n noshow: 'red',\n 'checked-in': 'blue',\n waitlist: 'gray',\n routine: 'gray',\n urgent: 'red',\n asap: 'red',\n stat: 'red',\n};\n\nexport interface StatusBadgeProps {\n readonly status: string;\n}\n\nexport function StatusBadge(props: StatusBadgeProps): JSX.Element {\n return <Badge color={statusToColor[props.status]}>{props.status}</Badge>;\n}\n"],"names":[],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;;AAkBG;AAEH,MAAM,aAAa,GAAwC;AACzD,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;CACZ,CAAC;AAMI,SAAU,WAAW,CAAC,KAAuB,EAAA;AACjD,IAAA,OAAO,oBAAC,KAAK,EAAA,EAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAG,EAAA,KAAK,CAAC,MAAM,CAAS,CAAC;AAC3E;;;;"}
1
+ {"version":3,"file":"StatusBadge.mjs","sources":["../../../src/StatusBadge/StatusBadge.tsx"],"sourcesContent":["import { Badge, DefaultMantineColor } from '@mantine/core';\nimport React from 'react';\n\n/*\n * Request status: https://hl7.org/fhir/valueset-request-status.html\n * draft, active, on-hold, revoked, completed, entered-in-error, unknown\n *\n * Publication status: https://hl7.org/fhir/valueset-publication-status.html\n * draft, active, retired, unknown\n *\n * Observation status: https://www.hl7.org/fhir/valueset-observation-status.html\n * registered, preliminary, final, amended, corrected, cancelled, entered-in-error, unknown\n *\n * DiagnosticReport status: https://hl7.org/fhir/valueset-diagnostic-report-status.html\n * registered, preliminary, final, amended, corrected, appended, cancelled, entered-in-error, unknown\n *\n * Task status: https://hl7.org/fhir/valueset-task-status.html\n * draft, requested, received, accepted, rejected, ready, cancelled, in-progress, on-hold, failed, completed, entered-in-error\n *\n * Appointment status: https://www.hl7.org/fhir/valueset-appointmentstatus.html\n * proposed, pending, booked, arrived, fulfilled, cancelled, noshow, entered-in-error, chcked-in, waitlist\n */\n\nconst statusToColor: Record<string, DefaultMantineColor> = {\n draft: 'blue',\n active: 'blue',\n 'on-hold': 'yellow',\n revoked: 'red',\n completed: 'green',\n 'entered-in-error': 'red',\n unknown: 'gray',\n retired: 'gray',\n registered: 'blue',\n preliminary: 'blue',\n final: 'green',\n amended: 'yellow',\n corrected: 'yellow',\n cancelled: 'red',\n requested: 'blue',\n received: 'blue',\n accepted: 'blue',\n rejected: 'red',\n ready: 'blue',\n 'in-progress': 'blue',\n failed: 'red',\n proposed: 'blue',\n pending: 'blue',\n booked: 'blue',\n arrived: 'blue',\n fulfilled: 'green',\n noshow: 'red',\n 'checked-in': 'blue',\n waitlist: 'gray',\n routine: 'gray',\n urgent: 'red',\n asap: 'red',\n stat: 'red',\n};\n\nexport interface StatusBadgeProps {\n readonly status: string;\n}\n\nexport function StatusBadge(props: StatusBadgeProps): JSX.Element {\n return <Badge color={statusToColor[props.status]}>{props.status}</Badge>;\n}\n"],"names":["React"],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;;AAkBG;AAEH,MAAM,aAAa,GAAwC;AACzD,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,SAAS,EAAE,OAAO;AAClB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,IAAI,EAAE,KAAK;CACZ,CAAC;AAMI,SAAU,WAAW,CAAC,KAAuB,EAAA;AACjD,IAAA,OAAOA,yBAAC,KAAK,EAAA,EAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAG,EAAA,KAAK,CAAC,MAAM,CAAS,CAAC;AAC3E;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { Group, Text, Menu, ActionIcon } from '@mantine/core';
2
2
  import { formatDateTime, getReferenceString } from '@medplum/core';
3
- import { IconDots } from '@tabler/icons';
4
- import React from 'react';
3
+ import { IconDots as BX } from '../node_modules/@tabler/icons/icons-react/dist/index.esm.mjs';
4
+ import e__default from 'react';
5
5
  import { Container } from '../Container/Container.mjs';
6
6
  import { ErrorBoundary } from '../ErrorBoundary/ErrorBoundary.mjs';
7
7
  import { MedplumLink } from '../MedplumLink/MedplumLink.mjs';
@@ -10,29 +10,29 @@ import { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar.mjs';
10
10
  import { ResourceName } from '../ResourceName/ResourceName.mjs';
11
11
 
12
12
  function Timeline(props) {
13
- return React.createElement(Container, null, props.children);
13
+ return e__default.createElement(Container, null, props.children);
14
14
  }
15
15
  function TimelineItem(props) {
16
16
  const { resource, profile, padding, popupMenuItems, ...others } = props;
17
17
  const author = profile ?? resource.meta?.author;
18
- return (React.createElement(Panel, { "data-testid": "timeline-item", fill: true, ...others },
19
- React.createElement(Group, { position: "apart", spacing: 8, mx: "xs", my: "sm" },
20
- React.createElement(ResourceAvatar, { value: author, link: true, size: "md" }),
21
- React.createElement("div", { style: { flex: 1 } },
22
- React.createElement(Text, { size: "sm" },
23
- React.createElement(ResourceName, { color: "dark", weight: 500, value: author, link: true })),
24
- React.createElement(Text, { size: "xs" },
25
- React.createElement(MedplumLink, { color: "dimmed", to: props.resource }, formatDateTime(props.resource.meta?.lastUpdated)),
26
- React.createElement(Text, { component: "span", color: "dimmed", mx: 8 }, "\u00B7"),
27
- React.createElement(MedplumLink, { color: "dimmed", to: props.resource }, props.resource.resourceType))),
28
- popupMenuItems && (React.createElement(Menu, { position: "bottom-end", shadow: "md", width: 200 },
29
- React.createElement(Menu.Target, null,
30
- React.createElement(ActionIcon, { radius: "xl", "aria-label": `Actions for ${getReferenceString(props.resource)}` },
31
- React.createElement(IconDots, null))),
18
+ return (e__default.createElement(Panel, { "data-testid": "timeline-item", fill: true, ...others },
19
+ e__default.createElement(Group, { position: "apart", spacing: 8, mx: "xs", my: "sm" },
20
+ e__default.createElement(ResourceAvatar, { value: author, link: true, size: "md" }),
21
+ e__default.createElement("div", { style: { flex: 1 } },
22
+ e__default.createElement(Text, { size: "sm" },
23
+ e__default.createElement(ResourceName, { color: "dark", weight: 500, value: author, link: true })),
24
+ e__default.createElement(Text, { size: "xs" },
25
+ e__default.createElement(MedplumLink, { color: "dimmed", to: props.resource }, formatDateTime(props.resource.meta?.lastUpdated)),
26
+ e__default.createElement(Text, { component: "span", color: "dimmed", mx: 8 }, "\u00B7"),
27
+ e__default.createElement(MedplumLink, { color: "dimmed", to: props.resource }, props.resource.resourceType))),
28
+ popupMenuItems && (e__default.createElement(Menu, { position: "bottom-end", shadow: "md", width: 200 },
29
+ e__default.createElement(Menu.Target, null,
30
+ e__default.createElement(ActionIcon, { radius: "xl", "aria-label": `Actions for ${getReferenceString(props.resource)}` },
31
+ e__default.createElement(BX, null))),
32
32
  popupMenuItems))),
33
- React.createElement(ErrorBoundary, null,
34
- padding && React.createElement("div", { style: { padding: '0 16px 16px 16px' } }, props.children),
35
- !padding && React.createElement(React.Fragment, null, props.children))));
33
+ e__default.createElement(ErrorBoundary, null,
34
+ padding && e__default.createElement("div", { style: { padding: '0 16px 16px 16px' } }, props.children),
35
+ !padding && e__default.createElement(e__default.Fragment, null, props.children))));
36
36
  }
37
37
 
38
38
  export { Timeline, TimelineItem };
@@ -1 +1 @@
1
- {"version":3,"file":"Timeline.mjs","sources":["../../../src/Timeline/Timeline.tsx"],"sourcesContent":["import { ActionIcon, Group, Menu, Text } from '@mantine/core';\nimport { formatDateTime, getReferenceString } from '@medplum/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport { IconDots } from '@tabler/icons';\nimport React from 'react';\nimport { Container } from '../Container/Container';\nimport { ErrorBoundary } from '../ErrorBoundary/ErrorBoundary';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { Panel, PanelProps } from '../Panel/Panel';\nimport { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar';\nimport { ResourceName } from '../ResourceName/ResourceName';\n\nexport interface TimelineProps {\n children?: React.ReactNode;\n}\n\nexport function Timeline(props: TimelineProps): JSX.Element {\n return <Container>{props.children}</Container>;\n}\n\nexport interface TimelineItemProps extends PanelProps {\n resource: Resource;\n profile?: Reference;\n padding?: boolean;\n popupMenuItems?: React.ReactNode;\n}\n\nexport function TimelineItem(props: TimelineItemProps): JSX.Element {\n const { resource, profile, padding, popupMenuItems, ...others } = props;\n const author = profile ?? resource.meta?.author;\n\n return (\n <Panel data-testid=\"timeline-item\" fill={true} {...others}>\n <Group position=\"apart\" spacing={8} mx=\"xs\" my=\"sm\">\n <ResourceAvatar value={author} link={true} size=\"md\" />\n <div style={{ flex: 1 }}>\n <Text size=\"sm\">\n <ResourceName color=\"dark\" weight={500} value={author} link={true} />\n </Text>\n <Text size=\"xs\">\n <MedplumLink color=\"dimmed\" to={props.resource}>\n {formatDateTime(props.resource.meta?.lastUpdated)}\n </MedplumLink>\n <Text component=\"span\" color=\"dimmed\" mx={8}>\n &middot;\n </Text>\n <MedplumLink color=\"dimmed\" to={props.resource}>\n {props.resource.resourceType}\n </MedplumLink>\n </Text>\n </div>\n {popupMenuItems && (\n <Menu position=\"bottom-end\" shadow=\"md\" width={200}>\n <Menu.Target>\n <ActionIcon radius=\"xl\" aria-label={`Actions for ${getReferenceString(props.resource)}`}>\n <IconDots />\n </ActionIcon>\n </Menu.Target>\n {popupMenuItems}\n </Menu>\n )}\n </Group>\n <ErrorBoundary>\n {padding && <div style={{ padding: '0 16px 16px 16px' }}>{props.children}</div>}\n {!padding && <>{props.children}</>}\n </ErrorBoundary>\n </Panel>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Timeline.mjs","sources":["../../../src/Timeline/Timeline.tsx"],"sourcesContent":["import { ActionIcon, Group, Menu, Text } from '@mantine/core';\nimport { formatDateTime, getReferenceString } from '@medplum/core';\nimport { Reference, Resource } from '@medplum/fhirtypes';\nimport { IconDots } from '@tabler/icons';\nimport React from 'react';\nimport { Container } from '../Container/Container';\nimport { ErrorBoundary } from '../ErrorBoundary/ErrorBoundary';\nimport { MedplumLink } from '../MedplumLink/MedplumLink';\nimport { Panel, PanelProps } from '../Panel/Panel';\nimport { ResourceAvatar } from '../ResourceAvatar/ResourceAvatar';\nimport { ResourceName } from '../ResourceName/ResourceName';\n\nexport interface TimelineProps {\n children?: React.ReactNode;\n}\n\nexport function Timeline(props: TimelineProps): JSX.Element {\n return <Container>{props.children}</Container>;\n}\n\nexport interface TimelineItemProps extends PanelProps {\n resource: Resource;\n profile?: Reference;\n padding?: boolean;\n popupMenuItems?: React.ReactNode;\n}\n\nexport function TimelineItem(props: TimelineItemProps): JSX.Element {\n const { resource, profile, padding, popupMenuItems, ...others } = props;\n const author = profile ?? resource.meta?.author;\n\n return (\n <Panel data-testid=\"timeline-item\" fill={true} {...others}>\n <Group position=\"apart\" spacing={8} mx=\"xs\" my=\"sm\">\n <ResourceAvatar value={author} link={true} size=\"md\" />\n <div style={{ flex: 1 }}>\n <Text size=\"sm\">\n <ResourceName color=\"dark\" weight={500} value={author} link={true} />\n </Text>\n <Text size=\"xs\">\n <MedplumLink color=\"dimmed\" to={props.resource}>\n {formatDateTime(props.resource.meta?.lastUpdated)}\n </MedplumLink>\n <Text component=\"span\" color=\"dimmed\" mx={8}>\n &middot;\n </Text>\n <MedplumLink color=\"dimmed\" to={props.resource}>\n {props.resource.resourceType}\n </MedplumLink>\n </Text>\n </div>\n {popupMenuItems && (\n <Menu position=\"bottom-end\" shadow=\"md\" width={200}>\n <Menu.Target>\n <ActionIcon radius=\"xl\" aria-label={`Actions for ${getReferenceString(props.resource)}`}>\n <IconDots />\n </ActionIcon>\n </Menu.Target>\n {popupMenuItems}\n </Menu>\n )}\n </Group>\n <ErrorBoundary>\n {padding && <div style={{ padding: '0 16px 16px 16px' }}>{props.children}</div>}\n {!padding && <>{props.children}</>}\n </ErrorBoundary>\n </Panel>\n );\n}\n"],"names":["React","IconDots"],"mappings":";;;;;;;;;;;AAgBM,SAAU,QAAQ,CAAC,KAAoB,EAAA;AAC3C,IAAA,OAAOA,yBAAC,SAAS,EAAA,IAAA,EAAE,KAAK,CAAC,QAAQ,CAAa,CAAC;AACjD,CAAC;AASK,SAAU,YAAY,CAAC,KAAwB,EAAA;AACnD,IAAA,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IACxE,MAAM,MAAM,GAAG,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEhD,QACEA,UAAC,CAAA,aAAA,CAAA,KAAK,EAAa,EAAA,aAAA,EAAA,eAAe,EAAC,IAAI,EAAE,IAAI,EAAA,GAAM,MAAM,EAAA;AACvD,QAAAA,UAAA,CAAA,aAAA,CAAC,KAAK,EAAC,EAAA,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAA;AACjD,YAAAA,UAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,IAAI,EAAG,CAAA;AACvD,YAAAA,UAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAA;AACrB,gBAAAA,UAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,IAAI,EAAA;AACb,oBAAAA,UAAA,CAAA,aAAA,CAAC,YAAY,EAAC,EAAA,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAI,CAChE;AACP,gBAAAA,UAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,IAAI,EAAA;oBACbA,UAAC,CAAA,aAAA,CAAA,WAAW,IAAC,KAAK,EAAC,QAAQ,EAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,IAC3C,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CACrC;AACd,oBAAAA,UAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,QAAQ,EAAC,EAAE,EAAE,CAAC,EAEpC,EAAA,QAAA,CAAA;AACP,oBAAAA,UAAA,CAAA,aAAA,CAAC,WAAW,EAAC,EAAA,KAAK,EAAC,QAAQ,EAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAA,EAC3C,KAAK,CAAC,QAAQ,CAAC,YAAY,CAChB,CACT,CACH;AACL,YAAA,cAAc,KACbA,UAAC,CAAA,aAAA,CAAA,IAAI,IAAC,QAAQ,EAAC,YAAY,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAE,GAAG,EAAA;gBAChDA,UAAC,CAAA,aAAA,CAAA,IAAI,CAAC,MAAM,EAAA,IAAA;AACV,oBAAAA,UAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,MAAM,EAAC,IAAI,EAAA,YAAA,EAAa,CAAe,YAAA,EAAA,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAE,CAAA,EAAA;wBACrFA,UAAC,CAAA,aAAA,CAAAC,EAAQ,EAAG,IAAA,CAAA,CACD,CACD;gBACb,cAAc,CACV,CACR,CACK;AACR,QAAAD,UAAA,CAAA,aAAA,CAAC,aAAa,EAAA,IAAA;AACX,YAAA,OAAO,IAAIA,UAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAA,EAAG,KAAK,CAAC,QAAQ,CAAO;YAC9E,CAAC,OAAO,IAAIA,UAAA,CAAA,aAAA,CAAAA,UAAA,CAAA,QAAA,EAAA,IAAA,EAAG,KAAK,CAAC,QAAQ,CAAI,CACpB,CACV,EACR;AACJ;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { Group, Button, Modal, TextInput, NativeSelect, Checkbox } from '@mantine/core';
2
2
  import { formatTiming } from '@medplum/core';
3
- import React, { useState, useRef } from 'react';
3
+ import e__default, { useState, useRef } from 'react';
4
4
  import { DateTimeInput } from '../DateTimeInput/DateTimeInput.mjs';
5
5
  import { FormSection } from '../FormSection/FormSection.mjs';
6
6
 
@@ -10,11 +10,11 @@ function TimingInput(props) {
10
10
  const [open, setOpen] = useState(false);
11
11
  const valueRef = useRef();
12
12
  valueRef.current = value;
13
- return (React.createElement(React.Fragment, null,
14
- React.createElement(Group, { spacing: "xs", grow: true, noWrap: true },
15
- React.createElement("span", null, formatTiming(valueRef.current) || 'No repeat'),
16
- React.createElement(Button, { onClick: () => setOpen(true) }, "Edit")),
17
- React.createElement(TimingEditorDialog, { visible: open, defaultValue: valueRef.current, onOk: (newValue) => {
13
+ return (e__default.createElement(e__default.Fragment, null,
14
+ e__default.createElement(Group, { spacing: "xs", grow: true, noWrap: true },
15
+ e__default.createElement("span", null, formatTiming(valueRef.current) || 'No repeat'),
16
+ e__default.createElement(Button, { onClick: () => setOpen(true) }, "Edit")),
17
+ e__default.createElement(TimingEditorDialog, { visible: open, defaultValue: valueRef.current, onOk: (newValue) => {
18
18
  if (props.onChange) {
19
19
  props.onChange(newValue);
20
20
  }
@@ -58,24 +58,24 @@ function TimingEditorDialog(props) {
58
58
  setRepeat({ ...valueRef.current?.repeat, dayOfWeek: existing.filter((d) => d !== day) });
59
59
  }
60
60
  }
61
- return (React.createElement(Modal, { title: "Timing", closeButtonLabel: "Close", opened: props.visible, onClose: () => props.onCancel() },
62
- React.createElement("div", { style: { padding: '5px 20px', textAlign: 'left' } },
63
- React.createElement(FormSection, { title: "Starts on", htmlFor: 'timing-dialog-start' },
64
- React.createElement(DateTimeInput, { name: 'timing-dialog-start', onChange: (newValue) => setStart(newValue) })),
65
- React.createElement(FormSection, { title: "Repeat every", htmlFor: 'timing-dialog-period' },
66
- React.createElement(Group, { spacing: "xs", grow: true, noWrap: true },
67
- React.createElement(TextInput, { type: "number", step: 1, id: "timing-dialog-period", name: "timing-dialog-period", defaultValue: value?.repeat?.period, onChange: (e) => setPeriod(parseInt(e.currentTarget.value)) }),
68
- React.createElement(NativeSelect, { id: "timing-dialog-periodUnit", name: "timing-dialog-periodUnit", defaultValue: value?.repeat?.periodUnit, onChange: (e) => setPeriodUnit(e.currentTarget.value), data: [
61
+ return (e__default.createElement(Modal, { title: "Timing", closeButtonLabel: "Close", opened: props.visible, onClose: () => props.onCancel() },
62
+ e__default.createElement("div", { style: { padding: '5px 20px', textAlign: 'left' } },
63
+ e__default.createElement(FormSection, { title: "Starts on", htmlFor: 'timing-dialog-start' },
64
+ e__default.createElement(DateTimeInput, { name: 'timing-dialog-start', onChange: (newValue) => setStart(newValue) })),
65
+ e__default.createElement(FormSection, { title: "Repeat every", htmlFor: 'timing-dialog-period' },
66
+ e__default.createElement(Group, { spacing: "xs", grow: true, noWrap: true },
67
+ e__default.createElement(TextInput, { type: "number", step: 1, id: "timing-dialog-period", name: "timing-dialog-period", defaultValue: value?.repeat?.period, onChange: (e) => setPeriod(parseInt(e.currentTarget.value)) }),
68
+ e__default.createElement(NativeSelect, { id: "timing-dialog-periodUnit", name: "timing-dialog-periodUnit", defaultValue: value?.repeat?.periodUnit, onChange: (e) => setPeriodUnit(e.currentTarget.value), data: [
69
69
  { label: 'day', value: 'd' },
70
70
  { label: 'week', value: 'wk' },
71
71
  { label: 'month', value: 'mo' },
72
72
  { label: 'year', value: 'a' },
73
73
  ] }))),
74
- React.createElement(FormSection, { title: "Repeat on" },
75
- React.createElement(Group, { spacing: "xs", grow: true, noWrap: true }, daysOfWeek.map((day) => (React.createElement(React.Fragment, { key: day },
76
- React.createElement("label", { htmlFor: 'timing-dialog-repeat-' + day }, day.charAt(0).toUpperCase()),
77
- React.createElement(Checkbox, { id: 'timing-dialog-repeat-' + day, name: 'timing-dialog-repeat-' + day, onChange: (e) => setDayOfWeek(day, e.currentTarget.checked) }))))))),
78
- React.createElement(Button, { onClick: () => props.onOk(value) }, "OK")));
74
+ e__default.createElement(FormSection, { title: "Repeat on" },
75
+ e__default.createElement(Group, { spacing: "xs", grow: true, noWrap: true }, daysOfWeek.map((day) => (e__default.createElement(e__default.Fragment, { key: day },
76
+ e__default.createElement("label", { htmlFor: 'timing-dialog-repeat-' + day }, day.charAt(0).toUpperCase()),
77
+ e__default.createElement(Checkbox, { id: 'timing-dialog-repeat-' + day, name: 'timing-dialog-repeat-' + day, onChange: (e) => setDayOfWeek(day, e.currentTarget.checked) }))))))),
78
+ e__default.createElement(Button, { onClick: () => props.onOk(value) }, "OK")));
79
79
  }
80
80
 
81
81
  export { TimingInput };