@medplum/react 0.9.30 → 0.9.33
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.
- package/dist/cjs/QuestionnaireForm.d.ts +1 -0
- package/dist/cjs/Scheduler.d.ts +2 -1
- package/dist/cjs/auth/AuthenticationForm.d.ts +16 -0
- package/dist/cjs/auth/ChooseProfileForm.d.ts +8 -0
- package/dist/cjs/auth/NewProjectForm.d.ts +7 -0
- package/dist/cjs/auth/NewUserForm.d.ts +10 -0
- package/dist/cjs/auth/RegisterForm.d.ts +12 -0
- package/dist/cjs/{SignInForm.d.ts → auth/SignInForm.d.ts} +3 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +700 -678
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +1 -1
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/cjs/styles.css +197 -197
- package/dist/esm/MedplumLink.js +29 -14
- package/dist/esm/MedplumLink.js.map +1 -1
- package/dist/esm/QuestionnaireForm.d.ts +1 -0
- package/dist/esm/QuestionnaireForm.js +1 -1
- package/dist/esm/QuestionnaireForm.js.map +1 -1
- package/dist/esm/ResourceHistoryTable.js +15 -11
- package/dist/esm/ResourceHistoryTable.js.map +1 -1
- package/dist/esm/ResourceTimeline.js +3 -1
- package/dist/esm/ResourceTimeline.js.map +1 -1
- package/dist/esm/Scheduler.d.ts +2 -1
- package/dist/esm/Scheduler.js +18 -24
- package/dist/esm/Scheduler.js.map +1 -1
- package/dist/esm/ServiceRequestTimeline.js +3 -3
- package/dist/esm/ServiceRequestTimeline.js.map +1 -1
- package/dist/esm/auth/AuthenticationForm.d.ts +16 -0
- package/dist/esm/auth/AuthenticationForm.js +71 -0
- package/dist/esm/auth/AuthenticationForm.js.map +1 -0
- package/dist/esm/auth/ChooseProfileForm.d.ts +8 -0
- package/dist/esm/auth/ChooseProfileForm.js +32 -0
- package/dist/esm/auth/ChooseProfileForm.js.map +1 -0
- package/dist/esm/auth/NewProjectForm.d.ts +7 -0
- package/dist/esm/auth/NewProjectForm.js +42 -0
- package/dist/esm/auth/NewProjectForm.js.map +1 -0
- package/dist/esm/auth/NewUserForm.d.ts +10 -0
- package/dist/esm/auth/NewUserForm.js +87 -0
- package/dist/esm/auth/NewUserForm.js.map +1 -0
- package/dist/esm/auth/RegisterForm.d.ts +12 -0
- package/dist/esm/auth/RegisterForm.js +39 -0
- package/dist/esm/auth/RegisterForm.js.map +1 -0
- package/dist/esm/{SignInForm.d.ts → auth/SignInForm.d.ts} +3 -1
- package/dist/esm/auth/SignInForm.js +52 -0
- package/dist/esm/auth/SignInForm.js.map +1 -0
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/styles.css +197 -197
- package/package.json +21 -23
- package/dist/cjs/RegisterForm.d.ts +0 -18
- package/dist/esm/RegisterForm.d.ts +0 -18
- package/dist/esm/RegisterForm.js +0 -121
- package/dist/esm/RegisterForm.js.map +0 -1
- package/dist/esm/SignInForm.js +0 -167
- package/dist/esm/SignInForm.js.map +0 -1
package/dist/esm/SignInForm.js
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from './node_modules/tslib/tslib.es6.js';
|
|
2
|
-
import React, { useState } from 'react';
|
|
3
|
-
import { Avatar } from './Avatar.js';
|
|
4
|
-
import { Button } from './Button.js';
|
|
5
|
-
import { Document } from './Document.js';
|
|
6
|
-
import { Form } from './Form.js';
|
|
7
|
-
import { FormSection } from './FormSection.js';
|
|
8
|
-
import { getGoogleClientId, GoogleButton } from './GoogleButton.js';
|
|
9
|
-
import { Input } from './Input.js';
|
|
10
|
-
import { Logo } from './Logo.js';
|
|
11
|
-
import { MedplumLink } from './MedplumLink.js';
|
|
12
|
-
import { useMedplum } from './MedplumProvider.js';
|
|
13
|
-
import { getIssuesForExpression } from './utils/outcomes.js';
|
|
14
|
-
|
|
15
|
-
function SignInForm(props) {
|
|
16
|
-
const medplum = useMedplum();
|
|
17
|
-
const [login, setLogin] = useState(undefined);
|
|
18
|
-
const [memberships, setMemberships] = useState(undefined);
|
|
19
|
-
function handleAuthResponse(response) {
|
|
20
|
-
if (response.login) {
|
|
21
|
-
setLogin(response.login);
|
|
22
|
-
}
|
|
23
|
-
if (response.memberships) {
|
|
24
|
-
setMemberships(response.memberships);
|
|
25
|
-
}
|
|
26
|
-
if (response.code) {
|
|
27
|
-
if (props.onCode) {
|
|
28
|
-
props.onCode(response.code);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
medplum
|
|
32
|
-
.processCode(response.code)
|
|
33
|
-
.then(() => {
|
|
34
|
-
if (props.onSuccess) {
|
|
35
|
-
props.onSuccess();
|
|
36
|
-
}
|
|
37
|
-
})
|
|
38
|
-
.catch(console.log);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return (React.createElement(Document, { width: 450 }, (() => {
|
|
43
|
-
if (!login) {
|
|
44
|
-
return (React.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));
|
|
45
|
-
}
|
|
46
|
-
else if (memberships) {
|
|
47
|
-
return React.createElement(ProfileForm, { login: login, memberships: memberships, handleAuthResponse: handleAuthResponse });
|
|
48
|
-
}
|
|
49
|
-
else if (props.projectId === 'new') {
|
|
50
|
-
return React.createElement(NewProjectForm, { login: login, handleAuthResponse: handleAuthResponse });
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
return React.createElement("div", null, "Success");
|
|
54
|
-
}
|
|
55
|
-
})()));
|
|
56
|
-
}
|
|
57
|
-
function AuthenticationForm(props) {
|
|
58
|
-
const medplum = useMedplum();
|
|
59
|
-
const googleClientId = getGoogleClientId(props.googleClientId);
|
|
60
|
-
const [outcome, setOutcome] = useState();
|
|
61
|
-
const issues = getIssuesForExpression(outcome, undefined);
|
|
62
|
-
return (React.createElement(Form, { style: { maxWidth: 400 }, onSubmit: (formData) => {
|
|
63
|
-
medplum
|
|
64
|
-
.startLogin({
|
|
65
|
-
projectId: props.projectId,
|
|
66
|
-
clientId: props.clientId,
|
|
67
|
-
scope: props.scope,
|
|
68
|
-
nonce: props.nonce,
|
|
69
|
-
email: formData.email,
|
|
70
|
-
password: formData.password,
|
|
71
|
-
remember: formData.remember === 'true',
|
|
72
|
-
})
|
|
73
|
-
.then(props.handleAuthResponse)
|
|
74
|
-
.catch(setOutcome);
|
|
75
|
-
} },
|
|
76
|
-
React.createElement("div", { className: "medplum-center" }, props.children),
|
|
77
|
-
issues && (React.createElement("div", { className: "medplum-input-error" }, issues.map((issue) => {
|
|
78
|
-
var _a, _b;
|
|
79
|
-
return (React.createElement("div", { "data-testid": "text-field-error", key: (_a = issue.details) === null || _a === void 0 ? void 0 : _a.text }, (_b = issue.details) === null || _b === void 0 ? void 0 : _b.text));
|
|
80
|
-
}))),
|
|
81
|
-
googleClientId && (React.createElement(React.Fragment, null,
|
|
82
|
-
React.createElement("div", { className: "medplum-signin-google-container" },
|
|
83
|
-
React.createElement(GoogleButton, { googleClientId: googleClientId, handleGoogleCredential: (response) => {
|
|
84
|
-
medplum
|
|
85
|
-
.startGoogleLogin({
|
|
86
|
-
projectId: props.projectId,
|
|
87
|
-
clientId: props.clientId,
|
|
88
|
-
scope: props.scope,
|
|
89
|
-
nonce: props.nonce,
|
|
90
|
-
googleClientId: response.clientId,
|
|
91
|
-
googleCredential: response.credential,
|
|
92
|
-
})
|
|
93
|
-
.then(props.handleAuthResponse)
|
|
94
|
-
.catch(setOutcome);
|
|
95
|
-
} })),
|
|
96
|
-
React.createElement("div", { className: "medplum-signin-separator" }, "or"))),
|
|
97
|
-
React.createElement(FormSection, { title: "Email", htmlFor: "email", outcome: outcome },
|
|
98
|
-
React.createElement(Input, { name: "email", type: "email", testid: "email", required: true, autoFocus: true, outcome: outcome })),
|
|
99
|
-
React.createElement(FormSection, { title: "Password", htmlFor: "password", outcome: outcome },
|
|
100
|
-
React.createElement(Input, { name: "password", type: "password", testid: "password", autoComplete: "off", required: true, outcome: outcome })),
|
|
101
|
-
React.createElement("div", { className: "medplum-signin-buttons" },
|
|
102
|
-
(props.onForgotPassword || props.onRegister) && (React.createElement("div", null,
|
|
103
|
-
props.onForgotPassword && (React.createElement(MedplumLink, { testid: "forgotpassword", onClick: props.onForgotPassword }, "Forgot password")),
|
|
104
|
-
props.onRegister && (React.createElement(MedplumLink, { testid: "register", onClick: props.onRegister }, "Register")))),
|
|
105
|
-
React.createElement("div", null,
|
|
106
|
-
React.createElement("input", { type: "checkbox", id: "remember", name: "remember", value: "true" }),
|
|
107
|
-
React.createElement("label", { htmlFor: "remember" }, "Remember me")),
|
|
108
|
-
React.createElement("div", null,
|
|
109
|
-
React.createElement(Button, { type: "submit", testid: "submit" }, "Sign in")))));
|
|
110
|
-
}
|
|
111
|
-
function ProfileForm(props) {
|
|
112
|
-
const medplum = useMedplum();
|
|
113
|
-
return (React.createElement("div", null,
|
|
114
|
-
React.createElement("div", { className: "medplum-center" },
|
|
115
|
-
React.createElement(Logo, { size: 32 }),
|
|
116
|
-
React.createElement("h1", null, "Choose profile")),
|
|
117
|
-
props.memberships.map((membership) => {
|
|
118
|
-
var _a, _b, _c;
|
|
119
|
-
return (React.createElement("div", { className: "medplum-nav-menu-profile", key: membership.id, onClick: () => {
|
|
120
|
-
medplum
|
|
121
|
-
.post('auth/profile', {
|
|
122
|
-
login: props.login,
|
|
123
|
-
profile: membership.id,
|
|
124
|
-
})
|
|
125
|
-
.then(props.handleAuthResponse)
|
|
126
|
-
.catch(console.log);
|
|
127
|
-
} },
|
|
128
|
-
React.createElement("div", { className: "medplum-nav-menu-profile-icon" },
|
|
129
|
-
React.createElement(Avatar, { alt: (_a = membership.profile) === null || _a === void 0 ? void 0 : _a.display })),
|
|
130
|
-
React.createElement("div", { className: "medplum-nav-menu-profile-label" }, (_b = membership.profile) === null || _b === void 0 ? void 0 :
|
|
131
|
-
_b.display,
|
|
132
|
-
React.createElement("div", { className: "medplum-nav-menu-profile-help-text" }, (_c = membership.project) === null || _c === void 0 ? void 0 : _c.display))));
|
|
133
|
-
})));
|
|
134
|
-
}
|
|
135
|
-
function NewProjectForm(props) {
|
|
136
|
-
const medplum = useMedplum();
|
|
137
|
-
const [outcome, setOutcome] = useState();
|
|
138
|
-
return (React.createElement(Form, { style: { maxWidth: 400 }, onSubmit: (formData) => __awaiter(this, void 0, void 0, function* () {
|
|
139
|
-
try {
|
|
140
|
-
const registerRequest = { projectName: formData.projectName };
|
|
141
|
-
const partialLogin = { login: props.login };
|
|
142
|
-
const login = yield medplum.startNewProject(registerRequest, partialLogin);
|
|
143
|
-
props.handleAuthResponse(login);
|
|
144
|
-
}
|
|
145
|
-
catch (err) {
|
|
146
|
-
setOutcome(err);
|
|
147
|
-
}
|
|
148
|
-
}) },
|
|
149
|
-
React.createElement("div", { className: "medplum-center" },
|
|
150
|
-
React.createElement(Logo, { size: 32 }),
|
|
151
|
-
React.createElement("h1", null, "Create project")),
|
|
152
|
-
React.createElement(FormSection, { title: "Project Name", htmlFor: "projectName", outcome: outcome },
|
|
153
|
-
React.createElement(Input, { name: "projectName", type: "text", testid: "projectName", placeholder: "My Project", required: true, outcome: outcome })),
|
|
154
|
-
React.createElement("p", { style: { fontSize: '12px', color: '#888' } },
|
|
155
|
-
"By clicking submit you agree to the Medplum ",
|
|
156
|
-
React.createElement("a", { href: "https://www.medplum.com/privacy" }, "Privacy\u00A0Policy"),
|
|
157
|
-
' and ',
|
|
158
|
-
React.createElement("a", { href: "https://www.medplum.com/terms" }, "Terms\u00A0of\u00A0Service"),
|
|
159
|
-
"."),
|
|
160
|
-
React.createElement("div", { className: "medplum-signin-buttons" },
|
|
161
|
-
React.createElement("div", null),
|
|
162
|
-
React.createElement("div", null,
|
|
163
|
-
React.createElement(Button, { type: "submit", testid: "submit" }, "Create project")))));
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
export { SignInForm };
|
|
167
|
-
//# sourceMappingURL=SignInForm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignInForm.js","sources":["../../src/SignInForm.tsx"],"sourcesContent":["import { GoogleCredentialResponse, LoginAuthenticationResponse } from '@medplum/core';\nimport { OperationOutcome, ProjectMembership } from '@medplum/fhirtypes';\nimport React, { useState } from 'react';\nimport { Avatar } from './Avatar';\nimport { Button } from './Button';\nimport { Document } from './Document';\nimport { Form } from './Form';\nimport { FormSection } from './FormSection';\nimport { getGoogleClientId, GoogleButton } from './GoogleButton';\nimport { Input } from './Input';\nimport { Logo } from './Logo';\nimport { MedplumLink } from './MedplumLink';\nimport { useMedplum } from './MedplumProvider';\nimport './SignInForm.css';\nimport './util.css';\nimport { getIssuesForExpression } from './utils/outcomes';\n\nexport interface SignInFormProps {\n readonly remember?: boolean;\n readonly projectId?: string;\n readonly googleClientId?: string;\n readonly clientId?: string;\n readonly scope?: string;\n readonly nonce?: string;\n readonly onSuccess?: () => void;\n readonly onForgotPassword?: () => void;\n readonly onRegister?: () => void;\n readonly onCode?: (code: string) => void;\n readonly children?: React.ReactNode;\n}\n\nexport function SignInForm(props: SignInFormProps): JSX.Element {\n const medplum = useMedplum();\n const [login, setLogin] = useState<string | undefined>(undefined);\n const [memberships, setMemberships] = useState<ProjectMembership[] | undefined>(undefined);\n\n function handleAuthResponse(response: LoginAuthenticationResponse): void {\n if (response.login) {\n setLogin(response.login);\n }\n\n if (response.memberships) {\n setMemberships(response.memberships);\n }\n\n if (response.code) {\n if (props.onCode) {\n props.onCode(response.code);\n } else {\n medplum\n .processCode(response.code)\n .then(() => {\n if (props.onSuccess) {\n props.onSuccess();\n }\n })\n .catch(console.log);\n }\n }\n }\n\n return (\n <Document width={450}>\n {(() => {\n if (!login) {\n return (\n <AuthenticationForm\n projectId={props.projectId}\n clientId={props.clientId}\n scope={props.scope}\n nonce={props.nonce}\n googleClientId={props.googleClientId}\n onForgotPassword={props.onForgotPassword}\n onRegister={props.onRegister}\n handleAuthResponse={handleAuthResponse}\n >\n {props.children}\n </AuthenticationForm>\n );\n } else if (memberships) {\n return <ProfileForm login={login} memberships={memberships} handleAuthResponse={handleAuthResponse} />;\n } else if (props.projectId === 'new') {\n return <NewProjectForm login={login} handleAuthResponse={handleAuthResponse} />;\n } else {\n return <div>Success</div>;\n }\n })()}\n </Document>\n );\n}\n\ninterface AuthenticationFormProps {\n readonly projectId?: string;\n readonly clientId?: string;\n readonly scope?: string;\n readonly nonce?: string;\n readonly googleClientId?: string;\n readonly onForgotPassword?: () => void;\n readonly onRegister?: () => void;\n readonly handleAuthResponse: (response: LoginAuthenticationResponse) => void;\n readonly children?: React.ReactNode;\n}\n\nfunction AuthenticationForm(props: AuthenticationFormProps): JSX.Element {\n const medplum = useMedplum();\n const googleClientId = getGoogleClientId(props.googleClientId);\n const [outcome, setOutcome] = useState<OperationOutcome>();\n const issues = getIssuesForExpression(outcome, undefined);\n\n return (\n <Form\n style={{ maxWidth: 400 }}\n onSubmit={(formData: Record<string, string>) => {\n medplum\n .startLogin({\n projectId: props.projectId,\n clientId: props.clientId,\n scope: props.scope,\n nonce: props.nonce,\n email: formData.email,\n password: formData.password,\n remember: formData.remember === 'true',\n })\n .then(props.handleAuthResponse)\n .catch(setOutcome);\n }}\n >\n <div className=\"medplum-center\">{props.children}</div>\n {issues && (\n <div className=\"medplum-input-error\">\n {issues.map((issue) => (\n <div data-testid=\"text-field-error\" key={issue.details?.text}>\n {issue.details?.text}\n </div>\n ))}\n </div>\n )}\n {googleClientId && (\n <>\n <div className=\"medplum-signin-google-container\">\n <GoogleButton\n googleClientId={googleClientId}\n handleGoogleCredential={(response: GoogleCredentialResponse) => {\n medplum\n .startGoogleLogin({\n projectId: props.projectId,\n clientId: props.clientId,\n scope: props.scope,\n nonce: props.nonce,\n googleClientId: response.clientId,\n googleCredential: response.credential,\n })\n .then(props.handleAuthResponse)\n .catch(setOutcome);\n }}\n />\n </div>\n <div className=\"medplum-signin-separator\">or</div>\n </>\n )}\n <FormSection title=\"Email\" htmlFor=\"email\" outcome={outcome}>\n <Input name=\"email\" type=\"email\" testid=\"email\" required={true} autoFocus={true} outcome={outcome} />\n </FormSection>\n <FormSection title=\"Password\" htmlFor=\"password\" outcome={outcome}>\n <Input name=\"password\" type=\"password\" testid=\"password\" autoComplete=\"off\" required={true} outcome={outcome} />\n </FormSection>\n <div className=\"medplum-signin-buttons\">\n {(props.onForgotPassword || props.onRegister) && (\n <div>\n {props.onForgotPassword && (\n <MedplumLink testid=\"forgotpassword\" onClick={props.onForgotPassword}>\n Forgot password\n </MedplumLink>\n )}\n {props.onRegister && (\n <MedplumLink testid=\"register\" onClick={props.onRegister}>\n Register\n </MedplumLink>\n )}\n </div>\n )}\n <div>\n <input type=\"checkbox\" id=\"remember\" name=\"remember\" value=\"true\" />\n <label htmlFor=\"remember\">Remember me</label>\n </div>\n <div>\n <Button type=\"submit\" testid=\"submit\">\n Sign in\n </Button>\n </div>\n </div>\n </Form>\n );\n}\n\ninterface ProfileFormProps {\n login: string;\n memberships: ProjectMembership[];\n handleAuthResponse: (response: any) => void;\n}\n\nfunction ProfileForm(props: ProfileFormProps): JSX.Element {\n const medplum = useMedplum();\n return (\n <div>\n <div className=\"medplum-center\">\n <Logo size={32} />\n <h1>Choose profile</h1>\n </div>\n {props.memberships.map((membership: ProjectMembership) => (\n <div\n className=\"medplum-nav-menu-profile\"\n key={membership.id}\n onClick={() => {\n medplum\n .post('auth/profile', {\n login: props.login,\n profile: membership.id,\n })\n .then(props.handleAuthResponse)\n .catch(console.log);\n }}\n >\n <div className=\"medplum-nav-menu-profile-icon\">\n <Avatar alt={membership.profile?.display} />\n </div>\n <div className=\"medplum-nav-menu-profile-label\">\n {membership.profile?.display}\n <div className=\"medplum-nav-menu-profile-help-text\">{membership.project?.display}</div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface NewProjectFormProps {\n login: string;\n handleAuthResponse: (response: any) => void;\n}\n\nfunction NewProjectForm(props: NewProjectFormProps): JSX.Element {\n const medplum = useMedplum();\n const [outcome, setOutcome] = useState<OperationOutcome | undefined>();\n return (\n <Form\n style={{ maxWidth: 400 }}\n onSubmit={async (formData: Record<string, string>) => {\n try {\n const registerRequest = { projectName: formData.projectName };\n const partialLogin = { login: props.login };\n const login = await medplum.startNewProject(registerRequest, partialLogin);\n props.handleAuthResponse(login);\n } catch (err) {\n setOutcome(err as OperationOutcome);\n }\n }}\n >\n <div className=\"medplum-center\">\n <Logo size={32} />\n <h1>Create project</h1>\n </div>\n <FormSection title=\"Project Name\" htmlFor=\"projectName\" outcome={outcome}>\n <Input\n name=\"projectName\"\n type=\"text\"\n testid=\"projectName\"\n placeholder=\"My Project\"\n required={true}\n outcome={outcome}\n />\n </FormSection>\n <p style={{ fontSize: '12px', color: '#888' }}>\n By clicking submit you agree to the Medplum <a href=\"https://www.medplum.com/privacy\">Privacy Policy</a>\n {' and '}\n <a href=\"https://www.medplum.com/terms\">Terms of Service</a>.\n </p>\n <div className=\"medplum-signin-buttons\">\n <div />\n <div>\n <Button type=\"submit\" testid=\"submit\">\n Create project\n </Button>\n </div>\n </div>\n </Form>\n );\n}\n"],"names":[],"mappings":"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"}
|