@medplum/react 0.9.29 → 0.9.30

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.
@@ -18,6 +18,7 @@ export * from './ContactPointDisplay';
18
18
  export * from './ContactPointInput';
19
19
  export * from './DateTimeInput';
20
20
  export * from './DefaultResourceTimeline';
21
+ export * from './DescriptionList';
21
22
  export * from './DiagnosticReportDisplay';
22
23
  export * from './Document';
23
24
  export * from './EncounterTimeline';
package/dist/cjs/index.js CHANGED
@@ -392,6 +392,7 @@
392
392
  }
393
393
  }
394
394
  function handleBlur() {
395
+ tryAddOption();
395
396
  setFocused(false);
396
397
  dismissOnDelay();
397
398
  }
@@ -1106,7 +1107,7 @@
1106
1107
  return medplum.searchValueSet(system, input).then((valueSet) => {
1107
1108
  return valueSet.expansion.contains.map(valueSetElementToCodeableConcept);
1108
1109
  });
1109
- }, buildUnstructured: buildUnstructured, getId: getId, getDisplay: getDisplay, name: props.name, defaultValue: defaultValue, onChange: (values) => {
1110
+ }, buildUnstructured: buildUnstructured, getId: getId, getDisplay: getDisplay, name: props.name, defaultValue: defaultValue, loadOnFocus: true, onChange: (values) => {
1110
1111
  if (props.onChange) {
1111
1112
  props.onChange(values[0]);
1112
1113
  }
@@ -1154,7 +1155,7 @@
1154
1155
  contains.forEach((e) => (cachedDisplayValues[e.code] = e.display));
1155
1156
  return contains.map((e) => e.code);
1156
1157
  });
1157
- }, buildUnstructured: (str) => str, getId: (item) => item, getDisplay: (item) => React__default["default"].createElement(React__default["default"].Fragment, null, cachedDisplayValues[item] || item), name: props.name, defaultValue: defaultValue, onChange: (values) => {
1158
+ }, buildUnstructured: (str) => str, getId: (item) => item, getDisplay: (item) => React__default["default"].createElement(React__default["default"].Fragment, null, cachedDisplayValues[item] || item), name: props.name, defaultValue: defaultValue, loadOnFocus: true, onChange: (values) => {
1158
1159
  if (props.onChange) {
1159
1160
  props.onChange(values[0]);
1160
1161
  }
@@ -1177,7 +1178,7 @@
1177
1178
  display: e.display,
1178
1179
  }));
1179
1180
  });
1180
- }, buildUnstructured: (str) => ({ code: str }), getId: (item) => item.code, getDisplay: (item) => React__default["default"].createElement(CodingDisplay, { value: item }), name: props.name, defaultValue: defaultValue, onChange: (values) => {
1181
+ }, buildUnstructured: (str) => ({ code: str }), getId: (item) => item.code, getDisplay: (item) => React__default["default"].createElement(CodingDisplay, { value: item }), name: props.name, defaultValue: defaultValue, loadOnFocus: true, onChange: (values) => {
1181
1182
  if (props.onChange) {
1182
1183
  props.onChange(values[0]);
1183
1184
  }
@@ -5849,11 +5850,14 @@
5849
5850
  }
5850
5851
  return (React__default["default"].createElement(Document, { width: 450 }, (() => {
5851
5852
  if (!login) {
5852
- return (React__default["default"].createElement(AuthenticationForm, { clientId: props.clientId, scope: props.scope, nonce: props.nonce, googleClientId: props.googleClientId, onForgotPassword: props.onForgotPassword, onRegister: props.onRegister, handleAuthResponse: handleAuthResponse }, props.children));
5853
+ return (React__default["default"].createElement(AuthenticationForm, { projectId: props.projectId, clientId: props.clientId, scope: props.scope, nonce: props.nonce, googleClientId: props.googleClientId, onForgotPassword: props.onForgotPassword, onRegister: props.onRegister, handleAuthResponse: handleAuthResponse }, props.children));
5853
5854
  }
5854
5855
  else if (memberships) {
5855
5856
  return React__default["default"].createElement(ProfileForm, { login: login, memberships: memberships, handleAuthResponse: handleAuthResponse });
5856
5857
  }
5858
+ else if (props.projectId === 'new') {
5859
+ return React__default["default"].createElement(NewProjectForm, { login: login, handleAuthResponse: handleAuthResponse });
5860
+ }
5857
5861
  else {
5858
5862
  return React__default["default"].createElement("div", null, "Success");
5859
5863
  }
@@ -5867,6 +5871,7 @@
5867
5871
  return (React__default["default"].createElement(Form, { style: { maxWidth: 400 }, onSubmit: (formData) => {
5868
5872
  medplum
5869
5873
  .startLogin({
5874
+ projectId: props.projectId,
5870
5875
  clientId: props.clientId,
5871
5876
  scope: props.scope,
5872
5877
  nonce: props.nonce,
@@ -5887,6 +5892,7 @@
5887
5892
  React__default["default"].createElement(GoogleButton, { googleClientId: googleClientId, handleGoogleCredential: (response) => {
5888
5893
  medplum
5889
5894
  .startGoogleLogin({
5895
+ projectId: props.projectId,
5890
5896
  clientId: props.clientId,
5891
5897
  scope: props.scope,
5892
5898
  nonce: props.nonce,
@@ -5935,6 +5941,36 @@
5935
5941
  React__default["default"].createElement("div", { className: "medplum-nav-menu-profile-help-text" }, (_c = membership.project) === null || _c === void 0 ? void 0 : _c.display))));
5936
5942
  })));
5937
5943
  }
5944
+ function NewProjectForm(props) {
5945
+ const medplum = useMedplum();
5946
+ const [outcome, setOutcome] = React.useState();
5947
+ return (React__default["default"].createElement(Form, { style: { maxWidth: 400 }, onSubmit: (formData) => __awaiter(this, void 0, void 0, function* () {
5948
+ try {
5949
+ const registerRequest = { projectName: formData.projectName };
5950
+ const partialLogin = { login: props.login };
5951
+ const login = yield medplum.startNewProject(registerRequest, partialLogin);
5952
+ props.handleAuthResponse(login);
5953
+ }
5954
+ catch (err) {
5955
+ setOutcome(err);
5956
+ }
5957
+ }) },
5958
+ React__default["default"].createElement("div", { className: "medplum-center" },
5959
+ React__default["default"].createElement(Logo, { size: 32 }),
5960
+ React__default["default"].createElement("h1", null, "Create project")),
5961
+ React__default["default"].createElement(FormSection, { title: "Project Name", htmlFor: "projectName", outcome: outcome },
5962
+ React__default["default"].createElement(Input, { name: "projectName", type: "text", testid: "projectName", placeholder: "My Project", required: true, outcome: outcome })),
5963
+ React__default["default"].createElement("p", { style: { fontSize: '12px', color: '#888' } },
5964
+ "By clicking submit you agree to the Medplum ",
5965
+ React__default["default"].createElement("a", { href: "https://www.medplum.com/privacy" }, "Privacy\u00A0Policy"),
5966
+ ' and ',
5967
+ React__default["default"].createElement("a", { href: "https://www.medplum.com/terms" }, "Terms\u00A0of\u00A0Service"),
5968
+ "."),
5969
+ React__default["default"].createElement("div", { className: "medplum-signin-buttons" },
5970
+ React__default["default"].createElement("div", null),
5971
+ React__default["default"].createElement("div", null,
5972
+ React__default["default"].createElement(Button, { type: "submit", testid: "submit" }, "Create project")))));
5973
+ }
5938
5974
 
5939
5975
  function Tab(props) {
5940
5976
  let className = 'medplum-tab';
@@ -6002,6 +6038,8 @@
6002
6038
  exports.ContactPointInput = ContactPointInput;
6003
6039
  exports.DateTimeInput = DateTimeInput;
6004
6040
  exports.DefaultResourceTimeline = DefaultResourceTimeline;
6041
+ exports.DescriptionList = DescriptionList;
6042
+ exports.DescriptionListEntry = DescriptionListEntry;
6005
6043
  exports.DiagnosticReportDisplay = DiagnosticReportDisplay;
6006
6044
  exports.Document = Document;
6007
6045
  exports.ElementDefinitionInputSelector = ElementDefinitionInputSelector;