@medplum/react 0.9.35 → 0.9.37
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/QuestionnaireUtils.d.ts +1 -10
- package/dist/cjs/SearchFilterValueDisplay.d.ts +1 -1
- package/dist/cjs/auth/AuthenticationForm.d.ts +1 -0
- package/dist/cjs/index.js +49 -93
- 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/esm/AddressInput.js.map +1 -1
- package/dist/esm/ContactPointInput.js +2 -1
- package/dist/esm/ContactPointInput.js.map +1 -1
- package/dist/esm/HumanNameInput.js.map +1 -1
- package/dist/esm/PlanDefinitionBuilder.js +2 -0
- package/dist/esm/PlanDefinitionBuilder.js.map +1 -1
- package/dist/esm/Popup.js +10 -0
- package/dist/esm/Popup.js.map +1 -1
- package/dist/esm/QuantityInput.js.map +1 -1
- package/dist/esm/QuestionnaireBuilder.js +9 -0
- package/dist/esm/QuestionnaireBuilder.js.map +1 -1
- package/dist/esm/QuestionnaireUtils.d.ts +1 -10
- package/dist/esm/QuestionnaireUtils.js +1 -78
- package/dist/esm/QuestionnaireUtils.js.map +1 -1
- package/dist/esm/RequestGroupDisplay.js +1 -0
- package/dist/esm/RequestGroupDisplay.js.map +1 -1
- package/dist/esm/ResourceTimeline.js.map +1 -1
- package/dist/esm/SearchControl.js +1 -0
- package/dist/esm/SearchControl.js.map +1 -1
- package/dist/esm/SearchFilterValueDisplay.d.ts +1 -1
- package/dist/esm/SearchFilterValueDisplay.js +11 -11
- package/dist/esm/SearchFilterValueDisplay.js.map +1 -1
- package/dist/esm/TimingInput.js.map +1 -1
- package/dist/esm/auth/AuthenticationForm.d.ts +1 -0
- package/dist/esm/auth/AuthenticationForm.js +14 -6
- package/dist/esm/auth/AuthenticationForm.js.map +1 -1
- package/dist/esm/auth/SignInForm.js +1 -1
- package/dist/esm/auth/SignInForm.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/package.json +5 -5
- package/stats.html +0 -4034
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { QuestionnaireItem } from '@medplum/fhirtypes';
|
|
2
2
|
export declare enum QuestionnaireItemType {
|
|
3
3
|
group = "group",
|
|
4
4
|
display = "display",
|
|
@@ -18,13 +18,4 @@ export declare enum QuestionnaireItemType {
|
|
|
18
18
|
reference = "reference",
|
|
19
19
|
quantity = "quantity"
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Adds initial values to a questionnaire resource from key value pairs.
|
|
23
|
-
* The values map uses "linkId" as key.
|
|
24
|
-
* The value depends on the questionnaire item type.
|
|
25
|
-
* @param questionnaire The original questionnaire.
|
|
26
|
-
* @param values Key value pairs for initial values.
|
|
27
|
-
* @returns Rewritten questionnaire with initial values.
|
|
28
|
-
*/
|
|
29
|
-
export declare function addQuestionnaireInitialValues(questionnaire: Questionnaire, values: Record<string, string>): Questionnaire;
|
|
30
21
|
export declare function isChoiceQuestion(item: QuestionnaireItem): boolean;
|
|
@@ -4,4 +4,4 @@ export interface SearchFilterValueDisplayProps {
|
|
|
4
4
|
readonly resourceType: string;
|
|
5
5
|
readonly filter: Filter;
|
|
6
6
|
}
|
|
7
|
-
export declare function SearchFilterValueDisplay(props: SearchFilterValueDisplayProps): JSX.Element
|
|
7
|
+
export declare function SearchFilterValueDisplay(props: SearchFilterValueDisplayProps): JSX.Element;
|
|
@@ -6,6 +6,7 @@ export interface AuthenticationFormProps {
|
|
|
6
6
|
readonly scope?: string;
|
|
7
7
|
readonly nonce?: string;
|
|
8
8
|
readonly googleClientId?: string;
|
|
9
|
+
readonly generatePkce?: boolean;
|
|
9
10
|
readonly codeChallenge?: string;
|
|
10
11
|
readonly codeChallengeMethod?: string;
|
|
11
12
|
readonly onForgotPassword?: () => void;
|
package/dist/cjs/index.js
CHANGED
|
@@ -724,9 +724,16 @@
|
|
|
724
724
|
const googleClientId = getGoogleClientId(props.googleClientId);
|
|
725
725
|
const [outcome, setOutcome] = React.useState();
|
|
726
726
|
const issues = getIssuesForExpression(outcome, undefined);
|
|
727
|
+
function startPkce() {
|
|
728
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
729
|
+
if (props.generatePkce) {
|
|
730
|
+
yield medplum.startPkce();
|
|
731
|
+
}
|
|
732
|
+
});
|
|
733
|
+
}
|
|
727
734
|
return (React__default["default"].createElement(Form, { style: { maxWidth: 400 }, onSubmit: (formData) => {
|
|
728
|
-
|
|
729
|
-
.startLogin({
|
|
735
|
+
startPkce()
|
|
736
|
+
.then(() => medplum.startLogin({
|
|
730
737
|
projectId: props.projectId,
|
|
731
738
|
clientId: props.clientId,
|
|
732
739
|
scope: props.scope,
|
|
@@ -736,7 +743,7 @@
|
|
|
736
743
|
email: formData.email,
|
|
737
744
|
password: formData.password,
|
|
738
745
|
remember: formData.remember === 'true',
|
|
739
|
-
})
|
|
746
|
+
}))
|
|
740
747
|
.then(props.handleAuthResponse)
|
|
741
748
|
.catch(setOutcome);
|
|
742
749
|
} },
|
|
@@ -748,8 +755,8 @@
|
|
|
748
755
|
googleClientId && (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
749
756
|
React__default["default"].createElement("div", { className: "medplum-signin-google-container" },
|
|
750
757
|
React__default["default"].createElement(GoogleButton, { googleClientId: googleClientId, handleGoogleCredential: (response) => {
|
|
751
|
-
|
|
752
|
-
.startGoogleLogin({
|
|
758
|
+
startPkce()
|
|
759
|
+
.then(() => medplum.startGoogleLogin({
|
|
753
760
|
projectId: props.projectId,
|
|
754
761
|
clientId: props.clientId,
|
|
755
762
|
scope: props.scope,
|
|
@@ -758,7 +765,7 @@
|
|
|
758
765
|
codeChallengeMethod: props.codeChallengeMethod,
|
|
759
766
|
googleClientId: response.clientId,
|
|
760
767
|
googleCredential: response.credential,
|
|
761
|
-
})
|
|
768
|
+
}))
|
|
762
769
|
.then(props.handleAuthResponse)
|
|
763
770
|
.catch(setOutcome);
|
|
764
771
|
} })),
|
|
@@ -909,7 +916,7 @@
|
|
|
909
916
|
}
|
|
910
917
|
return (React__default["default"].createElement(Document, { width: 450 }, (() => {
|
|
911
918
|
if (!login) {
|
|
912
|
-
return (React__default["default"].createElement(AuthenticationForm, { projectId: props.projectId, clientId: props.clientId, scope: props.scope, nonce: props.nonce, googleClientId: props.googleClientId, codeChallenge: props.codeChallenge, codeChallengeMethod: props.codeChallengeMethod, onForgotPassword: props.onForgotPassword, onRegister: props.onRegister, handleAuthResponse: handleAuthResponse }, props.children));
|
|
919
|
+
return (React__default["default"].createElement(AuthenticationForm, { projectId: props.projectId, clientId: props.clientId, scope: props.scope, nonce: props.nonce, googleClientId: props.googleClientId, generatePkce: !props.onCode, codeChallenge: props.codeChallenge, codeChallengeMethod: props.codeChallengeMethod, onForgotPassword: props.onForgotPassword, onRegister: props.onRegister, handleAuthResponse: handleAuthResponse }, props.children));
|
|
913
920
|
}
|
|
914
921
|
else if (memberships) {
|
|
915
922
|
return React__default["default"].createElement(ChooseProfileForm, { login: login, memberships: memberships, handleAuthResponse: handleAuthResponse });
|
|
@@ -1703,7 +1710,8 @@
|
|
|
1703
1710
|
React__default["default"].createElement("option", null, "pager"),
|
|
1704
1711
|
React__default["default"].createElement("option", null, "phone"),
|
|
1705
1712
|
React__default["default"].createElement("option", null, "other"),
|
|
1706
|
-
React__default["default"].createElement("option", null, "sms")
|
|
1713
|
+
React__default["default"].createElement("option", null, "sms"),
|
|
1714
|
+
React__default["default"].createElement("option", null, "url")),
|
|
1707
1715
|
React__default["default"].createElement(Select, { defaultValue: contactPoint === null || contactPoint === void 0 ? void 0 : contactPoint.use, onChange: setUse, testid: "use" },
|
|
1708
1716
|
React__default["default"].createElement("option", null),
|
|
1709
1717
|
React__default["default"].createElement("option", null, "home"),
|
|
@@ -2572,9 +2580,19 @@
|
|
|
2572
2580
|
props.onClose();
|
|
2573
2581
|
}
|
|
2574
2582
|
}
|
|
2583
|
+
function handleScroll(e) {
|
|
2584
|
+
var _a;
|
|
2585
|
+
if ((_a = propsRef.current) === null || _a === void 0 ? void 0 : _a.visible) {
|
|
2586
|
+
killEvent(e);
|
|
2587
|
+
}
|
|
2588
|
+
}
|
|
2575
2589
|
document.addEventListener('click', handleClick, true);
|
|
2590
|
+
window.addEventListener('wheel', handleScroll, { passive: false });
|
|
2591
|
+
window.addEventListener('touchmove', handleScroll, true);
|
|
2576
2592
|
return () => {
|
|
2577
2593
|
document.removeEventListener('click', handleClick, true);
|
|
2594
|
+
window.removeEventListener('wheel', handleScroll);
|
|
2595
|
+
window.removeEventListener('touchmove', handleScroll, true);
|
|
2578
2596
|
};
|
|
2579
2597
|
}, [props]);
|
|
2580
2598
|
// Listen for changes in the location
|
|
@@ -3734,15 +3752,16 @@
|
|
|
3734
3752
|
|
|
3735
3753
|
function SearchFilterValueDisplay(props) {
|
|
3736
3754
|
var _a, _b;
|
|
3737
|
-
const
|
|
3738
|
-
const
|
|
3739
|
-
|
|
3740
|
-
|
|
3741
|
-
|
|
3742
|
-
|
|
3743
|
-
|
|
3744
|
-
|
|
3745
|
-
|
|
3755
|
+
const { resourceType, filter } = props;
|
|
3756
|
+
const searchParam = (_b = (_a = core.globalSchema.types[resourceType]) === null || _a === void 0 ? void 0 : _a.searchParams) === null || _b === void 0 ? void 0 : _b[filter.code];
|
|
3757
|
+
if (searchParam) {
|
|
3758
|
+
if (searchParam.type === 'reference') {
|
|
3759
|
+
return React__default["default"].createElement(ResourceName, { value: { reference: filter.value } });
|
|
3760
|
+
}
|
|
3761
|
+
const searchParamDetails = core.getSearchParameterDetails(resourceType, searchParam);
|
|
3762
|
+
if (filter.code === '_lastUpdated' || searchParamDetails.type === core.SearchParameterType.DATETIME) {
|
|
3763
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, core.formatDateTime(filter.value));
|
|
3764
|
+
}
|
|
3746
3765
|
}
|
|
3747
3766
|
return React__default["default"].createElement(React__default["default"].Fragment, null, filter.value);
|
|
3748
3767
|
}
|
|
@@ -4205,6 +4224,7 @@
|
|
|
4205
4224
|
}
|
|
4206
4225
|
}
|
|
4207
4226
|
React.useEffect(() => {
|
|
4227
|
+
setSchemaLoaded(false);
|
|
4208
4228
|
medplum
|
|
4209
4229
|
.requestSchema(props.search.resourceType)
|
|
4210
4230
|
.then(() => setSchemaLoaded(true))
|
|
@@ -4834,6 +4854,8 @@
|
|
|
4834
4854
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
4835
4855
|
React__default["default"].createElement(FormSection, { title: "Title", htmlFor: `actionTitle-${action.id}` },
|
|
4836
4856
|
React__default["default"].createElement(Input, { name: `actionTitle-${action.id}`, defaultValue: action.title, onChange: (newValue) => changeProperty('title', newValue) })),
|
|
4857
|
+
React__default["default"].createElement(FormSection, { title: "Description", htmlFor: `actionDescription-${action.id}` },
|
|
4858
|
+
React__default["default"].createElement(Input, { name: `actionDescription-${action.id}`, defaultValue: action.description, onChange: (newValue) => changeProperty('description', newValue) })),
|
|
4837
4859
|
React__default["default"].createElement(FormSection, { title: "Type of Action", description: "The type of the action to be performed.", htmlFor: `actionType-${action.id}` },
|
|
4838
4860
|
React__default["default"].createElement(Select, { name: `actionType-${action.id}`, defaultValue: actionType, onChange: setActionType },
|
|
4839
4861
|
React__default["default"].createElement("option", null),
|
|
@@ -4948,81 +4970,6 @@
|
|
|
4948
4970
|
QuestionnaireItemType["reference"] = "reference";
|
|
4949
4971
|
QuestionnaireItemType["quantity"] = "quantity";
|
|
4950
4972
|
})(exports.QuestionnaireItemType || (exports.QuestionnaireItemType = {}));
|
|
4951
|
-
/**
|
|
4952
|
-
* Adds initial values to a questionnaire resource from key value pairs.
|
|
4953
|
-
* The values map uses "linkId" as key.
|
|
4954
|
-
* The value depends on the questionnaire item type.
|
|
4955
|
-
* @param questionnaire The original questionnaire.
|
|
4956
|
-
* @param values Key value pairs for initial values.
|
|
4957
|
-
* @returns Rewritten questionnaire with initial values.
|
|
4958
|
-
*/
|
|
4959
|
-
function addQuestionnaireInitialValues(questionnaire, values) {
|
|
4960
|
-
return Object.assign(Object.assign({}, questionnaire), { item: addInitialValuesToItemArray(questionnaire.item, values) });
|
|
4961
|
-
}
|
|
4962
|
-
function addInitialValuesToItemArray(items, values) {
|
|
4963
|
-
if (!items) {
|
|
4964
|
-
return undefined;
|
|
4965
|
-
}
|
|
4966
|
-
return items.map((item) => addInitialValueToItem(item, values));
|
|
4967
|
-
}
|
|
4968
|
-
function addInitialValueToItem(item, values) {
|
|
4969
|
-
const { linkId, type } = item;
|
|
4970
|
-
if (!linkId || !type) {
|
|
4971
|
-
return item;
|
|
4972
|
-
}
|
|
4973
|
-
if (type === 'group') {
|
|
4974
|
-
return Object.assign(Object.assign({}, item), { item: addInitialValuesToItemArray(item.item, values) });
|
|
4975
|
-
}
|
|
4976
|
-
const suppliedValue = values[linkId];
|
|
4977
|
-
if (!suppliedValue) {
|
|
4978
|
-
return item;
|
|
4979
|
-
}
|
|
4980
|
-
let initialValue = undefined;
|
|
4981
|
-
switch (type) {
|
|
4982
|
-
case core.PropertyType.boolean:
|
|
4983
|
-
initialValue = { valueBoolean: suppliedValue === 'true' };
|
|
4984
|
-
break;
|
|
4985
|
-
case core.PropertyType.code:
|
|
4986
|
-
case core.PropertyType.Coding:
|
|
4987
|
-
initialValue = { valueCoding: { code: suppliedValue } };
|
|
4988
|
-
break;
|
|
4989
|
-
case core.PropertyType.date:
|
|
4990
|
-
initialValue = { valueDate: suppliedValue };
|
|
4991
|
-
break;
|
|
4992
|
-
case core.PropertyType.dateTime:
|
|
4993
|
-
case core.PropertyType.instant:
|
|
4994
|
-
initialValue = { valueDateTime: suppliedValue };
|
|
4995
|
-
break;
|
|
4996
|
-
case core.PropertyType.decimal:
|
|
4997
|
-
initialValue = { valueDecimal: parseFloat(suppliedValue) };
|
|
4998
|
-
break;
|
|
4999
|
-
case core.PropertyType.integer:
|
|
5000
|
-
case core.PropertyType.positiveInt:
|
|
5001
|
-
case core.PropertyType.unsignedInt:
|
|
5002
|
-
initialValue = { valueInteger: parseInt(suppliedValue) };
|
|
5003
|
-
break;
|
|
5004
|
-
case core.PropertyType.SystemString:
|
|
5005
|
-
case core.PropertyType.string:
|
|
5006
|
-
case core.PropertyType.markdown:
|
|
5007
|
-
initialValue = { valueString: suppliedValue };
|
|
5008
|
-
break;
|
|
5009
|
-
case core.PropertyType.time:
|
|
5010
|
-
initialValue = { valueTime: suppliedValue };
|
|
5011
|
-
break;
|
|
5012
|
-
case core.PropertyType.uri:
|
|
5013
|
-
case core.PropertyType.url:
|
|
5014
|
-
initialValue = { valueUri: suppliedValue };
|
|
5015
|
-
break;
|
|
5016
|
-
case core.PropertyType.canonical:
|
|
5017
|
-
case core.PropertyType.Reference:
|
|
5018
|
-
initialValue = { valueReference: { reference: suppliedValue } };
|
|
5019
|
-
break;
|
|
5020
|
-
}
|
|
5021
|
-
if (!initialValue) {
|
|
5022
|
-
return item;
|
|
5023
|
-
}
|
|
5024
|
-
return Object.assign(Object.assign({}, item), { initial: [initialValue] });
|
|
5025
|
-
}
|
|
5026
4973
|
function isChoiceQuestion(item) {
|
|
5027
4974
|
return item.type === 'choice' || item.type === 'open-choice';
|
|
5028
4975
|
}
|
|
@@ -5456,6 +5403,15 @@
|
|
|
5456
5403
|
if (!items) {
|
|
5457
5404
|
return undefined;
|
|
5458
5405
|
}
|
|
5406
|
+
items.forEach((item) => {
|
|
5407
|
+
var _a, _b;
|
|
5408
|
+
if ((_a = item.id) === null || _a === void 0 ? void 0 : _a.match(/^id-\d+$/)) {
|
|
5409
|
+
nextId = Math.max(nextId, parseInt(item.id.substring(3)) + 1);
|
|
5410
|
+
}
|
|
5411
|
+
if ((_b = item.linkId) === null || _b === void 0 ? void 0 : _b.match(/^q\d+$/)) {
|
|
5412
|
+
nextLinkId = Math.max(nextLinkId, parseInt(item.linkId.substring(1)) + 1);
|
|
5413
|
+
}
|
|
5414
|
+
});
|
|
5459
5415
|
return items.map((item) => (Object.assign(Object.assign({}, item), { id: item.id || generateId(), item: ensureQuestionnaireItemKeys(item.item), answerOption: ensureQuestionnaireOptionKeys(item.answerOption) })));
|
|
5460
5416
|
}
|
|
5461
5417
|
function ensureQuestionnaireOptionKeys(options) {
|
|
@@ -5493,6 +5449,7 @@
|
|
|
5493
5449
|
React__default["default"].createElement("div", { className: "medplum-request-group-task-checkmark" }, (task === null || task === void 0 ? void 0 : task.status) === 'completed' ? '🗹' : '☐'),
|
|
5494
5450
|
React__default["default"].createElement("div", { className: "medplum-request-group-task-details" },
|
|
5495
5451
|
React__default["default"].createElement("div", { className: "medplum-request-group-task-title" }, action.title),
|
|
5452
|
+
action.description && React__default["default"].createElement("div", null, action.description),
|
|
5496
5453
|
React__default["default"].createElement("div", null,
|
|
5497
5454
|
"Last edited by\u00A0",
|
|
5498
5455
|
React__default["default"].createElement(ResourceName, { value: (_e = task === null || task === void 0 ? void 0 : task.meta) === null || _e === void 0 ? void 0 : _e.author }),
|
|
@@ -6193,7 +6150,6 @@
|
|
|
6193
6150
|
exports.addLastMonthFilter = addLastMonthFilter;
|
|
6194
6151
|
exports.addMissingFilter = addMissingFilter;
|
|
6195
6152
|
exports.addNextMonthFilter = addNextMonthFilter;
|
|
6196
|
-
exports.addQuestionnaireInitialValues = addQuestionnaireInitialValues;
|
|
6197
6153
|
exports.addThisMonthFilter = addThisMonthFilter;
|
|
6198
6154
|
exports.addTodayFilter = addTodayFilter;
|
|
6199
6155
|
exports.addTomorrowFilter = addTomorrowFilter;
|