@medplum/react 0.9.28 → 0.9.29

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 (205) hide show
  1. package/dist/cjs/AddressDisplay.d.ts +6 -0
  2. package/dist/cjs/AddressInput.d.ts +8 -0
  3. package/dist/cjs/AnnotationInput.d.ts +8 -0
  4. package/dist/cjs/AttachmentArrayDisplay.d.ts +7 -0
  5. package/dist/cjs/AttachmentArrayInput.d.ts +9 -0
  6. package/dist/cjs/AttachmentDisplay.d.ts +7 -0
  7. package/dist/cjs/AttachmentInput.d.ts +9 -0
  8. package/dist/cjs/Autocomplete.d.ts +20 -0
  9. package/dist/cjs/Avatar.d.ts +12 -0
  10. package/dist/cjs/BackboneElementDisplay.d.ts +9 -0
  11. package/dist/cjs/BackboneElementInput.d.ts +9 -0
  12. package/dist/cjs/Button.d.ts +15 -0
  13. package/dist/cjs/CalendarInput.d.ts +16 -0
  14. package/dist/cjs/Checkbox.d.ts +12 -0
  15. package/dist/cjs/CheckboxFormSection.d.ts +9 -0
  16. package/dist/cjs/CodeInput.d.ts +9 -0
  17. package/dist/cjs/CodeableConceptDisplay.d.ts +6 -0
  18. package/dist/cjs/CodeableConceptInput.d.ts +9 -0
  19. package/dist/cjs/CodingDisplay.d.ts +6 -0
  20. package/dist/cjs/CodingInput.d.ts +9 -0
  21. package/dist/cjs/ContactDetailDisplay.d.ts +6 -0
  22. package/dist/cjs/ContactDetailInput.d.ts +8 -0
  23. package/dist/cjs/ContactPointDisplay.d.ts +6 -0
  24. package/dist/cjs/ContactPointInput.d.ts +8 -0
  25. package/dist/cjs/DateTimeInput.d.ts +23 -0
  26. package/dist/cjs/DefaultResourceTimeline.d.ts +6 -0
  27. package/dist/cjs/DescriptionList.d.ts +12 -0
  28. package/dist/cjs/DiagnosticReportDisplay.d.ts +12 -0
  29. package/dist/cjs/Dialog.d.ts +10 -0
  30. package/dist/cjs/Document.d.ts +7 -0
  31. package/dist/cjs/EncounterTimeline.d.ts +6 -0
  32. package/dist/cjs/ErrorBoundary.d.ts +18 -0
  33. package/dist/cjs/ExtensionInput.d.ts +8 -0
  34. package/dist/cjs/FhirPathDisplay.d.ts +9 -0
  35. package/dist/cjs/FhirPathTable.d.ts +29 -0
  36. package/dist/cjs/FooterLinks.d.ts +6 -0
  37. package/dist/cjs/Form.d.ts +8 -0
  38. package/dist/cjs/FormSection.d.ts +11 -0
  39. package/dist/cjs/FormUtils.d.ts +5 -0
  40. package/dist/cjs/GoogleButton.d.ts +8 -0
  41. package/dist/cjs/Header.d.ts +12 -0
  42. package/dist/cjs/HeaderSearchInput.d.ts +10 -0
  43. package/dist/cjs/HumanNameDisplay.d.ts +8 -0
  44. package/dist/cjs/HumanNameInput.d.ts +8 -0
  45. package/dist/cjs/IdentifierDisplay.d.ts +6 -0
  46. package/dist/cjs/IdentifierInput.d.ts +8 -0
  47. package/dist/cjs/Input.d.ts +22 -0
  48. package/dist/cjs/InputRow.d.ts +7 -0
  49. package/dist/cjs/Loading.d.ts +3 -0
  50. package/dist/cjs/Logo.d.ts +6 -0
  51. package/dist/cjs/MedplumLink.d.ts +13 -0
  52. package/dist/cjs/MedplumProvider.d.ts +34 -0
  53. package/dist/cjs/MenuItem.d.ts +9 -0
  54. package/dist/cjs/MenuSeparator.d.ts +3 -0
  55. package/dist/cjs/PatientTimeline.d.ts +6 -0
  56. package/dist/cjs/PeriodInput.d.ts +8 -0
  57. package/dist/cjs/PlanDefinitionBuilder.d.ts +7 -0
  58. package/dist/cjs/Popup.d.ts +14 -0
  59. package/dist/cjs/QuantityDisplay.d.ts +7 -0
  60. package/dist/cjs/QuantityInput.d.ts +8 -0
  61. package/dist/cjs/QuestionnaireBuilder.d.ts +8 -0
  62. package/dist/cjs/QuestionnaireForm.d.ts +14 -0
  63. package/dist/cjs/QuestionnaireUtils.d.ts +30 -0
  64. package/dist/cjs/RangeDisplay.d.ts +7 -0
  65. package/dist/cjs/RangeInput.d.ts +14 -0
  66. package/dist/cjs/RatioDisplay.d.ts +6 -0
  67. package/dist/cjs/RatioInput.d.ts +14 -0
  68. package/dist/cjs/ReferenceDisplay.d.ts +7 -0
  69. package/dist/cjs/ReferenceInput.d.ts +9 -0
  70. package/dist/cjs/RegisterForm.d.ts +18 -0
  71. package/dist/cjs/RequestGroupDisplay.d.ts +9 -0
  72. package/dist/cjs/ResourceArrayDisplay.d.ts +11 -0
  73. package/dist/cjs/ResourceArrayInput.d.ts +11 -0
  74. package/dist/cjs/ResourceBadge.d.ts +9 -0
  75. package/dist/cjs/ResourceBlame.d.ts +10 -0
  76. package/dist/cjs/ResourceDiff.d.ts +9 -0
  77. package/dist/cjs/ResourceDiffTable.d.ts +9 -0
  78. package/dist/cjs/ResourceForm.d.ts +10 -0
  79. package/dist/cjs/ResourceHistoryTable.d.ts +9 -0
  80. package/dist/cjs/ResourceInput.d.ts +12 -0
  81. package/dist/cjs/ResourceName.d.ts +7 -0
  82. package/dist/cjs/ResourcePropertyDisplay.d.ts +24 -0
  83. package/dist/cjs/ResourcePropertyInput.d.ts +21 -0
  84. package/dist/cjs/ResourceTable.d.ts +7 -0
  85. package/dist/cjs/ResourceTimeline.d.ts +11 -0
  86. package/dist/cjs/Scheduler.d.ts +7 -0
  87. package/dist/cjs/Scrollable.d.ts +9 -0
  88. package/dist/cjs/SearchControl.d.ts +40 -0
  89. package/dist/cjs/SearchControlField.d.ts +41 -0
  90. package/dist/cjs/SearchFieldEditor.d.ts +11 -0
  91. package/dist/cjs/SearchFilterEditor.d.ts +11 -0
  92. package/dist/cjs/SearchFilterValueDialog.d.ts +15 -0
  93. package/dist/cjs/SearchFilterValueDisplay.d.ts +7 -0
  94. package/dist/cjs/SearchFilterValueInput.d.ts +12 -0
  95. package/dist/cjs/SearchPopupMenu.d.ts +15 -0
  96. package/dist/cjs/SearchUtils.d.ts +174 -0
  97. package/dist/cjs/Select.d.ts +16 -0
  98. package/dist/cjs/ServiceRequestTimeline.d.ts +6 -0
  99. package/dist/cjs/SignInForm.d.ts +17 -0
  100. package/dist/cjs/StatusBadge.d.ts +6 -0
  101. package/dist/cjs/SubMenu.d.ts +7 -0
  102. package/dist/cjs/Tab.d.ts +12 -0
  103. package/dist/cjs/TabList.d.ts +10 -0
  104. package/dist/cjs/TabPanel.d.ts +6 -0
  105. package/dist/cjs/TabSwitch.d.ts +6 -0
  106. package/dist/cjs/TextArea.d.ts +18 -0
  107. package/dist/cjs/Timeline.d.ts +17 -0
  108. package/dist/cjs/TimingInput.d.ts +8 -0
  109. package/dist/cjs/TitleBar.d.ts +6 -0
  110. package/dist/cjs/UploadButton.d.ts +7 -0
  111. package/dist/cjs/constants.d.ts +1 -0
  112. package/dist/cjs/index.d.ts +86 -0
  113. package/dist/cjs/index.js +75 -41
  114. package/dist/cjs/index.js.map +1 -1
  115. package/dist/cjs/index.min.js +1 -1
  116. package/dist/cjs/index.min.js.map +1 -1
  117. package/dist/cjs/stories/AddressInput.stories.d.ts +6 -0
  118. package/dist/cjs/stories/AttachmentArrayInput.stories.d.ts +6 -0
  119. package/dist/cjs/stories/AttachmentInput.stories.d.ts +6 -0
  120. package/dist/cjs/stories/Autocomplete.stories.d.ts +9 -0
  121. package/dist/cjs/stories/Avatar.stories.d.ts +10 -0
  122. package/dist/cjs/stories/Button.stories.d.ts +9 -0
  123. package/dist/cjs/stories/CodeableConceptDisplay.stories.d.ts +8 -0
  124. package/dist/cjs/stories/DiagnosticReportDisplay.stories.d.ts +5 -0
  125. package/dist/cjs/stories/Dialog.stories.d.ts +5 -0
  126. package/dist/cjs/stories/EncounterTimeline.stories.d.ts +5 -0
  127. package/dist/cjs/stories/FhirPathDisplay.stories.d.ts +7 -0
  128. package/dist/cjs/stories/FormSection.stories.d.ts +6 -0
  129. package/dist/cjs/stories/Header.stories.d.ts +8 -0
  130. package/dist/cjs/stories/Input.stories.d.ts +6 -0
  131. package/dist/cjs/stories/Loading.stories.d.ts +5 -0
  132. package/dist/cjs/stories/Logo.stories.d.ts +5 -0
  133. package/dist/cjs/stories/PatientTimeline.stories.d.ts +5 -0
  134. package/dist/cjs/stories/PlanDefinitionBuilder.stories.d.ts +5 -0
  135. package/dist/cjs/stories/QuestionnaireBuilder.stories.d.ts +7 -0
  136. package/dist/cjs/stories/QuestionnaireForm.stories.d.ts +11 -0
  137. package/dist/cjs/stories/ReferenceInput.stories.d.ts +6 -0
  138. package/dist/cjs/stories/RegisterForm.stories.d.ts +7 -0
  139. package/dist/cjs/stories/RequestGroupDisplay.stories.d.ts +5 -0
  140. package/dist/cjs/stories/ResourceBlame.stories.d.ts +5 -0
  141. package/dist/cjs/stories/ResourceForm.stories.d.ts +12 -0
  142. package/dist/cjs/stories/ResourceHistoryTable.stories.d.ts +5 -0
  143. package/dist/cjs/stories/ResourceTable.stories.d.ts +7 -0
  144. package/dist/cjs/stories/Scheduler.stories.d.ts +5 -0
  145. package/dist/cjs/stories/SearchControl.stories.d.ts +13 -0
  146. package/dist/cjs/stories/Select.stories.d.ts +6 -0
  147. package/dist/cjs/stories/SignInForm.stories.d.ts +8 -0
  148. package/dist/cjs/stories/StatusBadge.stories.d.ts +5 -0
  149. package/dist/cjs/stories/Tabs.stories.d.ts +6 -0
  150. package/dist/cjs/stories/Timeline.stories.d.ts +5 -0
  151. package/dist/cjs/stories/TimingInput.stories.d.ts +6 -0
  152. package/dist/cjs/stories/UploadButton.stories.d.ts +6 -0
  153. package/dist/cjs/styles.css +52 -51
  154. package/dist/cjs/test.setup.d.ts +1 -0
  155. package/dist/cjs/useResource.d.ts +8 -0
  156. package/dist/cjs/utils/blame.d.ts +8 -0
  157. package/dist/cjs/utils/date.d.ts +6 -0
  158. package/dist/cjs/utils/diff.d.ts +16 -0
  159. package/dist/cjs/utils/dom.d.ts +15 -0
  160. package/dist/cjs/utils/outcomes.d.ts +2 -0
  161. package/dist/cjs/utils/recaptcha.d.ts +12 -0
  162. package/dist/cjs/utils.d.ts +5 -0
  163. package/dist/esm/CalendarInput.d.ts +1 -0
  164. package/dist/esm/CalendarInput.js +6 -5
  165. package/dist/esm/CalendarInput.js.map +1 -1
  166. package/dist/esm/FhirPathTable.js +5 -2
  167. package/dist/esm/FhirPathTable.js.map +1 -1
  168. package/dist/esm/GoogleButton.js +1 -1
  169. package/dist/esm/GoogleButton.js.map +1 -1
  170. package/dist/esm/Header.js +7 -3
  171. package/dist/esm/Header.js.map +1 -1
  172. package/dist/esm/PlanDefinitionBuilder.js +1 -1
  173. package/dist/esm/PlanDefinitionBuilder.js.map +1 -1
  174. package/dist/esm/QuestionnaireBuilder.js +1 -1
  175. package/dist/esm/QuestionnaireBuilder.js.map +1 -1
  176. package/dist/esm/QuestionnaireForm.js +2 -1
  177. package/dist/esm/QuestionnaireForm.js.map +1 -1
  178. package/dist/esm/RegisterForm.js +2 -2
  179. package/dist/esm/RegisterForm.js.map +1 -1
  180. package/dist/esm/RequestGroupDisplay.js +1 -1
  181. package/dist/esm/RequestGroupDisplay.js.map +1 -1
  182. package/dist/esm/ResourceBlame.js +1 -1
  183. package/dist/esm/ResourceBlame.js.map +1 -1
  184. package/dist/esm/ResourceDiffTable.js +1 -1
  185. package/dist/esm/ResourceDiffTable.js.map +1 -1
  186. package/dist/esm/ResourceForm.js +1 -1
  187. package/dist/esm/ResourceForm.js.map +1 -1
  188. package/dist/esm/ResourceHistoryTable.js +4 -1
  189. package/dist/esm/ResourceHistoryTable.js.map +1 -1
  190. package/dist/esm/ResourceTable.js +1 -1
  191. package/dist/esm/ResourceTable.js.map +1 -1
  192. package/dist/esm/ResourceTimeline.js +13 -7
  193. package/dist/esm/ResourceTimeline.js.map +1 -1
  194. package/dist/esm/Scheduler.js +13 -6
  195. package/dist/esm/Scheduler.js.map +1 -1
  196. package/dist/esm/SearchControl.js +5 -2
  197. package/dist/esm/SearchControl.js.map +1 -1
  198. package/dist/esm/SignInForm.js +2 -1
  199. package/dist/esm/SignInForm.js.map +1 -1
  200. package/dist/esm/index.min.js +1 -1
  201. package/dist/esm/index.min.js.map +1 -1
  202. package/dist/esm/styles.css +52 -51
  203. package/dist/esm/utils/recaptcha.js +10 -4
  204. package/dist/esm/utils/recaptcha.js.map +1 -1
  205. package/package.json +6 -6
package/dist/cjs/index.js CHANGED
@@ -748,7 +748,7 @@
748
748
  React.useEffect(() => {
749
749
  if (defaultValue) {
750
750
  setValue(JSON.parse(JSON.stringify(defaultValue)));
751
- medplum.requestSchema(defaultValue.resourceType).then(setSchema);
751
+ medplum.requestSchema(defaultValue.resourceType).then(setSchema).catch(console.log);
752
752
  }
753
753
  }, [medplum, defaultValue]);
754
754
  if (!schema || !value) {
@@ -2056,7 +2056,7 @@
2056
2056
  const medplum = useMedplum();
2057
2057
  const [schema, setSchema] = React.useState();
2058
2058
  React.useEffect(() => {
2059
- medplum.requestSchema(props.original.resourceType).then(setSchema);
2059
+ medplum.requestSchema(props.original.resourceType).then(setSchema).catch(console.log);
2060
2060
  }, [medplum, props.original.resourceType]);
2061
2061
  if (!schema) {
2062
2062
  return null;
@@ -2109,7 +2109,7 @@
2109
2109
  const [schema, setSchema] = React.useState();
2110
2110
  React.useEffect(() => {
2111
2111
  if (value) {
2112
- medplum.requestSchema(value.resourceType).then(setSchema);
2112
+ medplum.requestSchema(value.resourceType).then(setSchema).catch(console.log);
2113
2113
  }
2114
2114
  }, [medplum, value]);
2115
2115
  if (!schema || !value) {
@@ -2307,7 +2307,7 @@
2307
2307
  setHistory({});
2308
2308
  return;
2309
2309
  }
2310
- medplum.executeBatch(buildSearchRequests(resource)).then(handleBatchResponse);
2310
+ medplum.executeBatch(buildSearchRequests(resource)).then(handleBatchResponse).catch(console.log);
2311
2311
  }, [medplum, resource, buildSearchRequests]);
2312
2312
  React.useEffect(() => {
2313
2313
  loadTimeline();
@@ -2358,9 +2358,12 @@
2358
2358
  // Encounter not loaded yet
2359
2359
  return;
2360
2360
  }
2361
- medplum.createResource(props.createCommunication(resource, sender, contentString)).then((result) => {
2361
+ medplum
2362
+ .createResource(props.createCommunication(resource, sender, contentString))
2363
+ .then((result) => {
2362
2364
  addResources([result]);
2363
- });
2365
+ })
2366
+ .catch(console.log);
2364
2367
  }
2365
2368
  /**
2366
2369
  * Adds a Media resource to the timeline.
@@ -2371,18 +2374,21 @@
2371
2374
  // Encounter not loaded yet
2372
2375
  return;
2373
2376
  }
2374
- medplum.createResource(props.createMedia(resource, sender, attachment)).then((result) => {
2377
+ medplum
2378
+ .createResource(props.createMedia(resource, sender, attachment))
2379
+ .then((result) => {
2375
2380
  addResources([result]);
2376
- });
2381
+ })
2382
+ .catch(console.log);
2377
2383
  }
2378
2384
  function setPriority(communication, priority) {
2379
2385
  return medplum.updateResource(Object.assign(Object.assign({}, communication), { priority }));
2380
2386
  }
2381
2387
  function onPin(communication) {
2382
- setPriority(communication, 'stat').then(loadTimeline);
2388
+ setPriority(communication, 'stat').then(loadTimeline).catch(console.log);
2383
2389
  }
2384
2390
  function onUnpin(communication) {
2385
- setPriority(communication, 'routine').then(loadTimeline);
2391
+ setPriority(communication, 'routine').then(loadTimeline).catch(console.log);
2386
2392
  }
2387
2393
  function onDetails(timelineItem) {
2388
2394
  navigate(`/${timelineItem.resourceType}/${timelineItem.id}`);
@@ -3807,11 +3813,14 @@
3807
3813
  }
3808
3814
  }
3809
3815
  React.useEffect(() => {
3810
- medplum.requestSchema(props.search.resourceType).then((newSchema) => {
3816
+ medplum
3817
+ .requestSchema(props.search.resourceType)
3818
+ .then((newSchema) => {
3811
3819
  // The schema could have the same object identity,
3812
3820
  // so need to use the spread operator to kick React re-render.
3813
3821
  setSchema(Object.assign({}, newSchema));
3814
- });
3822
+ })
3823
+ .catch(console.log);
3815
3824
  }, [medplum, props.search.resourceType]);
3816
3825
  const typeSchema = (_a = schema === null || schema === void 0 ? void 0 : schema.types) === null || _a === void 0 ? void 0 : _a[props.search.resourceType];
3817
3826
  if (!typeSchema) {
@@ -3995,11 +4004,14 @@
3995
4004
  }
3996
4005
  }
3997
4006
  React.useEffect(() => {
3998
- medplum.requestSchema(props.resourceType).then((newSchema) => {
4007
+ medplum
4008
+ .requestSchema(props.resourceType)
4009
+ .then((newSchema) => {
3999
4010
  // The schema could have the same object identity,
4000
4011
  // so need to use the spread operator to kick React re-render.
4001
4012
  setSchema(Object.assign({}, newSchema));
4002
- });
4013
+ })
4014
+ .catch(console.log);
4003
4015
  }, [medplum, props.resourceType]);
4004
4016
  const typeSchema = (_a = schema === null || schema === void 0 ? void 0 : schema.types) === null || _a === void 0 ? void 0 : _a[props.resourceType];
4005
4017
  if (!typeSchema) {
@@ -4241,9 +4253,13 @@
4241
4253
  logins.map((login) => {
4242
4254
  var _a, _b, _c, _d;
4243
4255
  return ((_a = login.profile) === null || _a === void 0 ? void 0 : _a.reference) !== core.getReferenceString(context.profile) && (React__default["default"].createElement("div", { className: "medplum-nav-menu-profile", key: (_b = login.profile) === null || _b === void 0 ? void 0 : _b.reference, onClick: () => {
4244
- medplum.setActiveLogin(login);
4245
- setUserMenuVisible(false);
4246
- window.location.reload();
4256
+ medplum
4257
+ .setActiveLogin(login)
4258
+ .then(() => {
4259
+ setUserMenuVisible(false);
4260
+ window.location.reload();
4261
+ })
4262
+ .catch(console.log);
4247
4263
  } },
4248
4264
  React__default["default"].createElement("div", { className: "medplum-nav-menu-profile-icon" },
4249
4265
  React__default["default"].createElement(Avatar, null)),
@@ -4344,7 +4360,7 @@
4344
4360
  const valueRef = React.useRef();
4345
4361
  valueRef.current = value;
4346
4362
  React.useEffect(() => {
4347
- medplum.requestSchema('PlanDefinition').then(setSchema);
4363
+ medplum.requestSchema('PlanDefinition').then(setSchema).catch(console.log);
4348
4364
  }, [medplum]);
4349
4365
  React.useEffect(() => {
4350
4366
  setValue(ensurePlanDefinitionKeys(defaultValue !== null && defaultValue !== void 0 ? defaultValue : { resourceType: 'PlanDefinition' }));
@@ -4640,7 +4656,7 @@
4640
4656
  const questionnaire = useResource(props.questionnaire);
4641
4657
  const [response, setResponse] = React.useState();
4642
4658
  React.useEffect(() => {
4643
- medplum.requestSchema('Questionnaire').then(setSchema);
4659
+ medplum.requestSchema('Questionnaire').then(setSchema).catch(console.log);
4644
4660
  }, [medplum]);
4645
4661
  React.useEffect(() => {
4646
4662
  setResponse(questionnaire ? buildInitialResponse(questionnaire) : undefined);
@@ -4683,6 +4699,7 @@
4683
4699
  return (React__default["default"].createElement(CheckboxFormSection, { key: item.linkId, title: item.text, htmlFor: item.linkId },
4684
4700
  React__default["default"].createElement(Checkbox, { name: item.linkId, defaultValue: initial === null || initial === void 0 ? void 0 : initial.valueBoolean, onChange: (newValue) => setResponseItem(index, {
4685
4701
  linkId: item.linkId,
4702
+ text: item.text,
4686
4703
  answer: [{ valueBoolean: newValue }],
4687
4704
  }) })));
4688
4705
  }
@@ -4845,7 +4862,7 @@
4845
4862
  setSelectedKey(undefined);
4846
4863
  }
4847
4864
  React.useEffect(() => {
4848
- medplum.requestSchema('Questionnaire').then(setSchema);
4865
+ medplum.requestSchema('Questionnaire').then(setSchema).catch(console.log);
4849
4866
  }, [medplum]);
4850
4867
  React.useEffect(() => {
4851
4868
  setValue(ensureQuestionnaireKeys(defaultValue !== null && defaultValue !== void 0 ? defaultValue : { resourceType: 'Questionnaire' }));
@@ -5079,7 +5096,7 @@
5079
5096
  return clientId;
5080
5097
  }
5081
5098
  const origin = window.location.protocol + '//' + window.location.host;
5082
- const authorizedOrigins = (_b = (_a = "http://localhost:3000,http://localhost:6006,https://app.medplum.com,https://docs.medplum.com") === null || _a === void 0 ? void 0 : _a.split(',')) !== null && _b !== void 0 ? _b : [];
5099
+ const authorizedOrigins = (_b = (_a = "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") === null || _a === void 0 ? void 0 : _a.split(',')) !== null && _b !== void 0 ? _b : [];
5083
5100
  if (authorizedOrigins.includes(origin)) {
5084
5101
  return "921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com";
5085
5102
  }
@@ -5102,10 +5119,15 @@
5102
5119
  * @returns Promise to a recaptcha token for the current user.
5103
5120
  */
5104
5121
  function getRecaptcha(siteKey) {
5105
- return new Promise((resolve) => {
5106
- grecaptcha.ready(() => {
5107
- grecaptcha.execute(siteKey, { action: 'submit' }).then(resolve);
5108
- });
5122
+ return new Promise((resolve, reject) => {
5123
+ grecaptcha.ready(() => __awaiter(this, void 0, void 0, function* () {
5124
+ try {
5125
+ resolve(yield grecaptcha.execute(siteKey, { action: 'submit' }));
5126
+ }
5127
+ catch (err) {
5128
+ reject(err);
5129
+ }
5130
+ }));
5109
5131
  });
5110
5132
  }
5111
5133
 
@@ -5150,7 +5172,7 @@
5150
5172
  recaptchaToken,
5151
5173
  };
5152
5174
  const userLogin = yield medplum.startNewUser(registerRequest);
5153
- handleAuthResponse(registerRequest, userLogin);
5175
+ yield handleAuthResponse(registerRequest, userLogin);
5154
5176
  }
5155
5177
  catch (err) {
5156
5178
  setOutcome(err);
@@ -5177,7 +5199,7 @@
5177
5199
  lastName: googleClaims.family_name,
5178
5200
  email: googleClaims.email,
5179
5201
  };
5180
- handleAuthResponse(registerRequest, userLogin);
5202
+ yield handleAuthResponse(registerRequest, userLogin);
5181
5203
  }
5182
5204
  catch (err) {
5183
5205
  setOutcome(err);
@@ -5227,7 +5249,7 @@
5227
5249
  const [responseBundle, setResponseBundle] = React.useState();
5228
5250
  React.useEffect(() => {
5229
5251
  if (requestGroup && !startedLoading) {
5230
- medplum.executeBatch(buildBatchRequest(requestGroup)).then(setResponseBundle);
5252
+ medplum.executeBatch(buildBatchRequest(requestGroup)).then(setResponseBundle).catch(console.log);
5231
5253
  setStartedLoading(true);
5232
5254
  }
5233
5255
  }, [medplum, requestGroup, startedLoading]);
@@ -5472,7 +5494,7 @@
5472
5494
  const [value, setValue] = React.useState(props.history);
5473
5495
  React.useEffect(() => {
5474
5496
  if (!props.history && props.resourceType && props.id) {
5475
- medplum.readHistory(props.resourceType, props.id).then((result) => setValue(result));
5497
+ medplum.readHistory(props.resourceType, props.id).then(setValue).catch(console.log);
5476
5498
  }
5477
5499
  }, [medplum, props.history, props.resourceType, props.id]);
5478
5500
  if (!value) {
@@ -5550,7 +5572,10 @@
5550
5572
  const [value, setValue] = React.useState(props.history);
5551
5573
  React.useEffect(() => {
5552
5574
  if (!props.history && props.resourceType && props.id) {
5553
- medplum.readHistory(props.resourceType, props.id).then((result) => setValue(result));
5575
+ medplum
5576
+ .readHistory(props.resourceType, props.id)
5577
+ .then(setValue)
5578
+ .catch(console.log);
5554
5579
  }
5555
5580
  }, [medplum, props.history, props.resourceType, props.id]);
5556
5581
  if (!value) {
@@ -5590,12 +5615,14 @@
5590
5615
  return date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();
5591
5616
  }
5592
5617
  function CalendarInput(props) {
5618
+ const { onChangeMonth, onClick } = props;
5593
5619
  const [month, setMonth] = React.useState(getStartMonth);
5594
5620
  function moveMonth(delta) {
5595
5621
  setMonth((currMonth) => {
5596
- const prevMonth = new Date(currMonth.getTime());
5597
- prevMonth.setMonth(currMonth.getMonth() + delta);
5598
- return prevMonth;
5622
+ const newMonth = new Date(currMonth.getTime());
5623
+ newMonth.setMonth(currMonth.getMonth() + delta);
5624
+ onChangeMonth(newMonth);
5625
+ return newMonth;
5599
5626
  });
5600
5627
  }
5601
5628
  const grid = React.useMemo(() => buildGrid(month, props.slots), [month, props.slots]);
@@ -5615,7 +5642,7 @@
5615
5642
  React__default["default"].createElement("th", null, "THU"),
5616
5643
  React__default["default"].createElement("th", null, "FRI"),
5617
5644
  React__default["default"].createElement("th", null, "SAT"))),
5618
- React__default["default"].createElement("tbody", null, grid.map((week, weekIndex) => (React__default["default"].createElement("tr", { key: 'week-' + weekIndex }, week.map((day, dayIndex) => (React__default["default"].createElement("td", { key: 'day-' + dayIndex }, day && (React__default["default"].createElement("button", { disabled: !day.available, onClick: () => props.onClick(day.date) }, day.date.getDate()))))))))))));
5645
+ React__default["default"].createElement("tbody", null, grid.map((week, weekIndex) => (React__default["default"].createElement("tr", { key: 'week-' + weekIndex }, week.map((day, dayIndex) => (React__default["default"].createElement("td", { key: 'day-' + dayIndex }, day && (React__default["default"].createElement("button", { disabled: !day.available, onClick: () => onClick(day.date) }, day.date.getDate()))))))))))));
5619
5646
  }
5620
5647
  function getStartMonth() {
5621
5648
  const result = new Date();
@@ -5634,7 +5661,6 @@
5634
5661
  while (d.getMonth() === startDate.getMonth()) {
5635
5662
  row.push({
5636
5663
  date: new Date(d.getTime()),
5637
- // available: isAvailable(d),
5638
5664
  available: isDayAvailable(d, slots),
5639
5665
  });
5640
5666
  if (d.getDay() === 6) {
@@ -5678,20 +5704,27 @@
5678
5704
  const [slots, setSlots] = React.useState();
5679
5705
  const slotsRef = React.useRef();
5680
5706
  slotsRef.current = slots;
5707
+ const [month, setMonth] = React.useState(getStartMonth());
5681
5708
  const [date, setDate] = React.useState();
5682
5709
  const [slot, setSlot] = React.useState();
5683
5710
  const [info, setInfo] = React.useState();
5684
5711
  const [form, setForm] = React.useState();
5685
5712
  React.useEffect(() => {
5686
5713
  if (schedule) {
5687
- medplum.search('Slot', 'schedule=' + core.getReferenceString(schedule)).then((bundle) => {
5688
- setSlots(bundle.entry.map((entry) => entry.resource));
5689
- });
5714
+ setSlots([]);
5715
+ medplum
5716
+ .searchResources('Slot', new URLSearchParams([
5717
+ ['schedule', core.getReferenceString(schedule)],
5718
+ ['start', 'gt' + month.toISOString()],
5719
+ ['start', 'lt' + new Date(month.getTime() + 31 * 24 * 60 * 60 * 1000).toISOString()],
5720
+ ]))
5721
+ .then(setSlots)
5722
+ .catch(console.log);
5690
5723
  }
5691
5724
  else {
5692
5725
  setSlots(undefined);
5693
5726
  }
5694
- }, [medplum, schedule]);
5727
+ }, [medplum, schedule, month]);
5695
5728
  if (!schedule || !slots) {
5696
5729
  return null;
5697
5730
  }
@@ -5707,7 +5740,7 @@
5707
5740
  React__default["default"].createElement("div", { className: "medplum-calendar-selection-pane" },
5708
5741
  !date && (React__default["default"].createElement("div", null,
5709
5742
  React__default["default"].createElement("h3", null, "Select date"),
5710
- React__default["default"].createElement(CalendarInput, { slots: slots, onClick: setDate }))),
5743
+ React__default["default"].createElement(CalendarInput, { slots: slots, onChangeMonth: setMonth, onClick: setDate }))),
5711
5744
  date && !slot && (React__default["default"].createElement("div", null,
5712
5745
  React__default["default"].createElement("h3", null, "Select time"),
5713
5746
  slots.map((s) => {
@@ -5892,7 +5925,8 @@
5892
5925
  login: props.login,
5893
5926
  profile: membership.id,
5894
5927
  })
5895
- .then(props.handleAuthResponse);
5928
+ .then(props.handleAuthResponse)
5929
+ .catch(console.log);
5896
5930
  } },
5897
5931
  React__default["default"].createElement("div", { className: "medplum-nav-menu-profile-icon" },
5898
5932
  React__default["default"].createElement(Avatar, { alt: (_a = membership.profile) === null || _a === void 0 ? void 0 : _a.display })),