@aehrc/smart-forms-renderer 0.17.0 → 0.19.0
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/lib/components/FormComponents/BooleanItem/BooleanField.d.ts +7 -3
- package/lib/components/FormComponents/BooleanItem/BooleanField.js +26 -4
- package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -1
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js +19 -10
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.d.ts +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js +5 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.d.ts +2 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js +4 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +5 -6
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.d.ts +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +4 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.d.ts +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +4 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +3 -3
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.js +3 -3
- package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -1
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +4 -4
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.d.ts +0 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js +6 -4
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +0 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +3 -3
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +2 -4
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.d.ts +0 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js +4 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +0 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +8 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +1 -0
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +2 -2
- package/lib/components/FormComponents/SingleItem/SingleItem.js +11 -6
- package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
- package/lib/hooks/useHidden.d.ts +1 -1
- package/lib/hooks/useHidden.js +3 -2
- package/lib/hooks/useHidden.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/interfaces/enableWhen.interface.d.ts +20 -5
- package/lib/interfaces/index.d.ts +1 -0
- package/lib/interfaces/index.js +2 -0
- package/lib/interfaces/index.js.map +1 -0
- package/lib/interfaces/questionnaireStore.interface.d.ts +2 -2
- package/lib/interfaces/renderProps.interface.d.ts +4 -0
- package/lib/stores/questionnaireStore.d.ts +5 -3
- package/lib/stores/questionnaireStore.js +12 -5
- package/lib/stores/questionnaireStore.js.map +1 -1
- package/lib/utils/choice.d.ts +1 -1
- package/lib/utils/choice.js +1 -1
- package/lib/utils/choice.js.map +1 -1
- package/lib/utils/enableWhen.d.ts +11 -4
- package/lib/utils/enableWhen.js +130 -53
- package/lib/utils/enableWhen.js.map +1 -1
- package/lib/utils/enableWhenExpression.d.ts +1 -1
- package/lib/utils/enableWhenExpression.js +26 -7
- package/lib/utils/enableWhenExpression.js.map +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +1 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/misc.d.ts +5 -0
- package/lib/utils/misc.js +116 -0
- package/lib/utils/misc.js.map +1 -0
- package/lib/utils/qItem.d.ts +2 -1
- package/lib/utils/qItem.js +19 -7
- package/lib/utils/qItem.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +13 -3
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +81 -18
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
- package/lib/utils/tabs.d.ts +1 -1
- package/lib/utils/tabs.js +5 -3
- package/lib/utils/tabs.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FormComponents/BooleanItem/BooleanField.tsx +53 -17
- package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +47 -13
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +4 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +0 -5
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.tsx +6 -3
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +2 -5
- package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +1 -6
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +4 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +1 -5
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +4 -3
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +1 -5
- package/src/components/FormComponents/GroupItem/GroupItem.tsx +8 -2
- package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +10 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.tsx +3 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +0 -5
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +0 -5
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +3 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +1 -4
- package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +13 -2
- package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +4 -0
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +19 -6
- package/src/hooks/useHidden.ts +3 -2
- package/src/index.ts +1 -0
- package/src/interfaces/enableWhen.interface.ts +24 -5
- package/src/interfaces/index.ts +8 -0
- package/src/interfaces/questionnaireStore.interface.ts +2 -2
- package/src/interfaces/renderProps.interface.ts +4 -0
- package/src/stores/questionnaireStore.ts +45 -8
- package/src/utils/choice.ts +4 -2
- package/src/utils/enableWhen.ts +194 -55
- package/src/utils/enableWhenExpression.ts +35 -8
- package/src/utils/index.ts +5 -0
- package/src/utils/misc.ts +160 -0
- package/src/utils/qItem.ts +31 -8
- package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +1 -1
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +122 -25
- package/src/utils/tabs.ts +7 -4
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Questionnaire, QuestionnaireItem } from 'fhir/r4';
|
|
2
|
+
export declare function getQuestionnaireItem(questionnaire: Questionnaire, targetLinkId: string): QuestionnaireItem | null;
|
|
3
|
+
export declare function getQuestionnaireItemRecursive(qItem: QuestionnaireItem, targetLinkId: string): QuestionnaireItem | null;
|
|
4
|
+
export declare function getParentItem(questionnaire: Questionnaire, targetLinkId: string): QuestionnaireItem | null;
|
|
5
|
+
export declare function getRepeatGroupParentItem(questionnaire: Questionnaire, targetLinkId: string): QuestionnaireItem | null;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export function getQuestionnaireItem(questionnaire, targetLinkId) {
|
|
18
|
+
// Search through the top level items recursively
|
|
19
|
+
const topLevelQItems = questionnaire.item;
|
|
20
|
+
if (topLevelQItems) {
|
|
21
|
+
for (const topLevelQItem of topLevelQItems) {
|
|
22
|
+
const foundQItem = getQuestionnaireItemRecursive(topLevelQItem, targetLinkId);
|
|
23
|
+
if (foundQItem) {
|
|
24
|
+
return foundQItem;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// No matching item found in the questionnaire, return null
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
export function getQuestionnaireItemRecursive(qItem, targetLinkId) {
|
|
32
|
+
// Target linkId found in current item
|
|
33
|
+
if (qItem.linkId === targetLinkId) {
|
|
34
|
+
return qItem;
|
|
35
|
+
}
|
|
36
|
+
// Search through its child items recursively
|
|
37
|
+
const childQItems = qItem.item;
|
|
38
|
+
if (childQItems) {
|
|
39
|
+
for (const childQItem of childQItems) {
|
|
40
|
+
const foundQItem = getQuestionnaireItemRecursive(childQItem, targetLinkId);
|
|
41
|
+
if (foundQItem) {
|
|
42
|
+
return foundQItem;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// No matching item found in the current item or its child items, return null
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
///
|
|
50
|
+
export function getParentItem(questionnaire, targetLinkId) {
|
|
51
|
+
// Search through the top level items recursively
|
|
52
|
+
const topLevelQItems = questionnaire.item;
|
|
53
|
+
if (topLevelQItems) {
|
|
54
|
+
for (const topLevelQItem of topLevelQItems) {
|
|
55
|
+
const foundParentQItem = getParentItemRecursive(topLevelQItem, targetLinkId);
|
|
56
|
+
if (foundParentQItem) {
|
|
57
|
+
return foundParentQItem;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// No matching parent item found in the questionnaire, return null
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
function getParentItemRecursive(qItem, targetLinkId, parentQItem) {
|
|
65
|
+
// Current item has the target linkId, return the parent item if it exists
|
|
66
|
+
if (qItem.linkId === targetLinkId) {
|
|
67
|
+
return parentQItem !== null && parentQItem !== void 0 ? parentQItem : null;
|
|
68
|
+
}
|
|
69
|
+
// Search through its child items recursively
|
|
70
|
+
const childQItems = qItem.item;
|
|
71
|
+
if (childQItems) {
|
|
72
|
+
for (const childQItem of childQItems) {
|
|
73
|
+
const foundParentQItem = getParentItemRecursive(childQItem, targetLinkId, qItem);
|
|
74
|
+
if (foundParentQItem) {
|
|
75
|
+
return foundParentQItem;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// No matching parent item found in the current item or its child items, return null
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
export function getRepeatGroupParentItem(questionnaire, targetLinkId) {
|
|
83
|
+
// Search through the top level items recursively
|
|
84
|
+
const topLevelQItems = questionnaire.item;
|
|
85
|
+
if (topLevelQItems) {
|
|
86
|
+
for (const topLevelQItem of topLevelQItems) {
|
|
87
|
+
const foundParentQItem = getRepeatGroupParentItemRecursive(topLevelQItem, targetLinkId);
|
|
88
|
+
if (foundParentQItem) {
|
|
89
|
+
return foundParentQItem;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// No matching repeat group parent item found in the questionnaire, return null
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function getRepeatGroupParentItemRecursive(qItem, targetLinkId, repeatGroupParentQItem) {
|
|
97
|
+
// Current item has the target linkId, return the parent item if it exists
|
|
98
|
+
if (qItem.linkId === targetLinkId && repeatGroupParentQItem) {
|
|
99
|
+
return repeatGroupParentQItem !== null && repeatGroupParentQItem !== void 0 ? repeatGroupParentQItem : null;
|
|
100
|
+
}
|
|
101
|
+
// Check if the current item is a repeat group
|
|
102
|
+
const isRepeatGroup = qItem.repeats && qItem.type === 'group';
|
|
103
|
+
// Search through its child items recursively
|
|
104
|
+
const childQItems = qItem.item;
|
|
105
|
+
if (childQItems) {
|
|
106
|
+
for (const childQItem of childQItems) {
|
|
107
|
+
const foundParentQItem = getRepeatGroupParentItemRecursive(childQItem, targetLinkId, isRepeatGroup ? qItem : repeatGroupParentQItem);
|
|
108
|
+
if (foundParentQItem) {
|
|
109
|
+
return foundParentQItem;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// No matching repeat group parent item found in the current item or its child items, return null
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=misc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/qItem.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { Questionnaire, QuestionnaireItem } from 'fhir/r4';
|
|
2
|
-
import type { EnableWhenExpression, EnableWhenItems } from '../interfaces
|
|
2
|
+
import type { EnableWhenExpression, EnableWhenItems } from '../interfaces';
|
|
3
3
|
interface isHiddenByEnableWhensParams {
|
|
4
4
|
linkId: string;
|
|
5
5
|
enableWhenIsActivated: boolean;
|
|
6
6
|
enableWhenItems: EnableWhenItems;
|
|
7
7
|
enableWhenExpressions: Record<string, EnableWhenExpression>;
|
|
8
|
+
parentRepeatGroupIndex?: number;
|
|
8
9
|
}
|
|
9
10
|
export declare function isHiddenByEnableWhen(params: isHiddenByEnableWhensParams): boolean;
|
|
10
11
|
/**
|
package/lib/utils/qItem.js
CHANGED
|
@@ -18,15 +18,27 @@ import { getChoiceControlType } from './choice';
|
|
|
18
18
|
import { ChoiceItemControl, OpenChoiceItemControl } from '../interfaces/choice.enum';
|
|
19
19
|
import { getOpenChoiceControlType } from './openChoice';
|
|
20
20
|
export function isHiddenByEnableWhen(params) {
|
|
21
|
-
const { linkId, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
const { linkId, enableWhenIsActivated, enableWhenItems, enableWhenExpressions, parentRepeatGroupIndex } = params;
|
|
22
|
+
const { singleItems, repeatItems } = enableWhenItems;
|
|
23
|
+
// If enableWhen is not activated, items are not hidden by enableWhen
|
|
24
|
+
if (!enableWhenIsActivated) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (singleItems[linkId]) {
|
|
28
|
+
return !singleItems[linkId].isEnabled;
|
|
29
|
+
}
|
|
30
|
+
if (repeatItems[linkId] && parentRepeatGroupIndex !== undefined) {
|
|
31
|
+
return !repeatItems[linkId].enabledIndexes[parentRepeatGroupIndex];
|
|
32
|
+
}
|
|
33
|
+
if (enableWhenExpressions[linkId] && parentRepeatGroupIndex !== undefined) {
|
|
34
|
+
const isEnabledMultiple = enableWhenExpressions[linkId].isEnabledMultiple;
|
|
35
|
+
if (isEnabledMultiple) {
|
|
36
|
+
return !isEnabledMultiple[parentRepeatGroupIndex];
|
|
28
37
|
}
|
|
29
38
|
}
|
|
39
|
+
if (enableWhenExpressions[linkId]) {
|
|
40
|
+
return !enableWhenExpressions[linkId].isEnabledSingle;
|
|
41
|
+
}
|
|
30
42
|
return false;
|
|
31
43
|
}
|
|
32
44
|
/**
|
package/lib/utils/qItem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qItem.js","sourceRoot":"","sources":["../../src/utils/qItem.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"qItem.js","sourceRoot":"","sources":["../../src/utils/qItem.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,7 +76,7 @@ function createEmptyModel() {
|
|
|
76
76
|
calculatedExpressions: {},
|
|
77
77
|
enableWhenExpressions: {},
|
|
78
78
|
answerExpressions: {},
|
|
79
|
-
enableWhenItems: {},
|
|
79
|
+
enableWhenItems: { singleItems: {}, repeatItems: {} },
|
|
80
80
|
processedValueSetCodings: {},
|
|
81
81
|
processedValueSetUrls: {},
|
|
82
82
|
fhirPathContext: {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,UAAgB,wBAAwB,CAC5C,aAA4B,EAC5B,mBAA2C,EAC3C,oBAA4B;;QAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACvB,OAAO,gBAAgB,EAAE,CAAC;SAC3B;QAED,MAAM,SAAS,GAA2B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,MAAM,IAAI,GAAS,WAAW,CAAC,aAAa,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAkC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAE3F,IAAI,SAAS,GAAc,kCAAkC,CAAC,aAAa,CAAC,CAAC;QAC7E,SAAS,GAAG,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAEnE,MAAM,+BAA+B,GAAG,yBAAyB,CAC/D,aAAa,EACb,oBAAoB,CACrB,CAAC;QACF,IAAI,gBAAgB,GAAG,+BAA+B,CAAC,gBAAgB,CAAC;QACxE,IAAI,wBAAwB,GAAG,+BAA+B,CAAC,wBAAwB,CAAC;QACxF,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,qBAAqB,CAAC;QAEpF,MAAM,4BAA4B,GAAG,sBAAsB,CACzD,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,CACrB,CAAC;QAEF,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GACxF,4BAA4B,CAAC;QAC/B,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC;QACnD,gBAAgB,GAAG,4BAA4B,CAAC,gBAAgB,CAAC;QAEjE,MAAM,sBAAsB,GAAG,MAAM,gBAAgB,CACnD,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,CACrB,CAAC;QAEF,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC;QAC7C,wBAAwB,GAAG,sBAAsB,CAAC,wBAAwB,CAAC;QAE3E,OAAO;YACL,SAAS;YACT,IAAI;YACJ,SAAS;YACT,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;YACrB,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;QAC7D,cAAc,EAAE,EAAE;QAClB,qBAAqB,EAAE,EAAE;QACzB,qBAAqB,EAAE,EAAE;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,UAAgB,wBAAwB,CAC5C,aAA4B,EAC5B,mBAA2C,EAC3C,oBAA4B;;QAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACvB,OAAO,gBAAgB,EAAE,CAAC;SAC3B;QAED,MAAM,SAAS,GAA2B,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;QACjG,MAAM,IAAI,GAAS,WAAW,CAAC,aAAa,CAAC,CAAC;QAE9C,MAAM,cAAc,GAAkC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAE3F,IAAI,SAAS,GAAc,kCAAkC,CAAC,aAAa,CAAC,CAAC;QAC7E,SAAS,GAAG,sBAAsB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAEnE,MAAM,+BAA+B,GAAG,yBAAyB,CAC/D,aAAa,EACb,oBAAoB,CACrB,CAAC;QACF,IAAI,gBAAgB,GAAG,+BAA+B,CAAC,gBAAgB,CAAC;QACxE,IAAI,wBAAwB,GAAG,+BAA+B,CAAC,wBAAwB,CAAC;QACxF,MAAM,qBAAqB,GAAG,+BAA+B,CAAC,qBAAqB,CAAC;QAEpF,MAAM,4BAA4B,GAAG,sBAAsB,CACzD,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,CACrB,CAAC;QAEF,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GACxF,4BAA4B,CAAC;QAC/B,SAAS,GAAG,4BAA4B,CAAC,SAAS,CAAC;QACnD,gBAAgB,GAAG,4BAA4B,CAAC,gBAAgB,CAAC;QAEjE,MAAM,sBAAsB,GAAG,MAAM,gBAAgB,CACnD,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,CACrB,CAAC;QAEF,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC;QAC7C,wBAAwB,GAAG,sBAAsB,CAAC,wBAAwB,CAAC;QAE3E,OAAO;YACL,SAAS;YACT,IAAI;YACJ,SAAS;YACT,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,iBAAiB;YACjB,wBAAwB;YACxB,qBAAqB;YACrB,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;QAC7D,cAAc,EAAE,EAAE;QAClB,qBAAqB,EAAE,EAAE;QACzB,qBAAqB,EAAE,EAAE;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACrD,wBAAwB,EAAE,EAAE;QAC5B,qBAAqB,EAAE,EAAE;QACzB,eAAe,EAAE,EAAE;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Expression, Questionnaire, QuestionnaireItem } from 'fhir/r4';
|
|
2
2
|
import type { CalculatedExpression } from '../../interfaces/calculatedExpression.interface';
|
|
3
|
-
import type { EnableWhenExpression,
|
|
3
|
+
import type { EnableWhenExpression, EnableWhenItems, EnableWhenRepeatItemProperties, EnableWhenSingleItemProperties } from '../../interfaces';
|
|
4
4
|
import type { AnswerExpression } from '../../interfaces/answerExpression.interface';
|
|
5
5
|
import type { ValueSetPromise } from '../../interfaces/valueSet.interface';
|
|
6
6
|
import type { Variables } from '../../interfaces/variables.interface';
|
|
7
7
|
interface ReturnParamsRecursive {
|
|
8
8
|
variables: Variables;
|
|
9
|
-
enableWhenItems:
|
|
9
|
+
enableWhenItems: EnableWhenItems;
|
|
10
10
|
enableWhenExpressions: Record<string, EnableWhenExpression>;
|
|
11
11
|
calculatedExpressions: Record<string, CalculatedExpression>;
|
|
12
12
|
answerExpressions: Record<string, AnswerExpression>;
|
|
@@ -18,7 +18,17 @@ export declare function extractOtherExtensions(questionnaire: Questionnaire, var
|
|
|
18
18
|
*
|
|
19
19
|
* @author Sean Fong
|
|
20
20
|
*/
|
|
21
|
-
export declare function
|
|
21
|
+
export declare function initialiseEnableWhenItemProperties(qItem: QuestionnaireItem, questionnaire: Questionnaire, parentLinkId?: string): {
|
|
22
|
+
enableWhenItemType: 'single' | 'repeat';
|
|
23
|
+
enableWhenItemProperties: EnableWhenSingleItemProperties | EnableWhenRepeatItemProperties;
|
|
24
|
+
} | null;
|
|
25
|
+
export declare function initialiseEnableWhenRepeatItemProperties(qItem: QuestionnaireItem, questionnaire: Questionnaire, parentLinkId: string): EnableWhenRepeatItemProperties | null;
|
|
26
|
+
/**
|
|
27
|
+
* Get enableWhen items' linked items and enableBehaviour attribute and save them in an EnableWhenItemProperties object
|
|
28
|
+
*
|
|
29
|
+
* @author Sean Fong
|
|
30
|
+
*/
|
|
31
|
+
export declare function initialiseEnableWhenSingleItemProperties(qItem: QuestionnaireItem): EnableWhenSingleItemProperties | null;
|
|
22
32
|
/**
|
|
23
33
|
* Check if an enableWhenExpression extension is present
|
|
24
34
|
*
|
|
@@ -17,15 +17,16 @@
|
|
|
17
17
|
import { getAnswerExpression } from '../itemControl';
|
|
18
18
|
import { getTerminologyServerUrl, getValueSetPromise } from '../valueSet';
|
|
19
19
|
import { getFhirPathVariables, getXFhirQueryVariables } from './extractVariables';
|
|
20
|
+
import { getRepeatGroupParentItem } from '../misc';
|
|
20
21
|
export function extractOtherExtensions(questionnaire, variables, valueSetPromises, terminologyServerUrl) {
|
|
21
|
-
const enableWhenItems = {};
|
|
22
|
+
const enableWhenItems = { singleItems: {}, repeatItems: {} };
|
|
22
23
|
const enableWhenExpressions = {};
|
|
23
24
|
const calculatedExpressions = {};
|
|
24
25
|
const answerExpressions = {};
|
|
25
26
|
if (!questionnaire.item || questionnaire.item.length === 0) {
|
|
26
27
|
return {
|
|
27
28
|
variables: variables,
|
|
28
|
-
enableWhenItems: {},
|
|
29
|
+
enableWhenItems: { singleItems: {}, repeatItems: {} },
|
|
29
30
|
enableWhenExpressions: {},
|
|
30
31
|
calculatedExpressions: {},
|
|
31
32
|
answerExpressions: {},
|
|
@@ -33,7 +34,9 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
|
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
for (const topLevelItem of questionnaire.item) {
|
|
37
|
+
const isRepeatGroup = !!topLevelItem.repeats && topLevelItem.type === 'group';
|
|
36
38
|
extractExtensionsFromItemRecursive({
|
|
39
|
+
questionnaire,
|
|
37
40
|
item: topLevelItem,
|
|
38
41
|
variables,
|
|
39
42
|
enableWhenItems,
|
|
@@ -41,7 +44,8 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
|
|
|
41
44
|
calculatedExpressions,
|
|
42
45
|
answerExpressions,
|
|
43
46
|
valueSetPromises,
|
|
44
|
-
defaultTerminologyServerUrl: terminologyServerUrl
|
|
47
|
+
defaultTerminologyServerUrl: terminologyServerUrl,
|
|
48
|
+
parentRepeatGroupLinkId: isRepeatGroup ? topLevelItem.linkId : undefined
|
|
45
49
|
});
|
|
46
50
|
}
|
|
47
51
|
return {
|
|
@@ -55,18 +59,27 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
|
|
|
55
59
|
}
|
|
56
60
|
function extractExtensionsFromItemRecursive(params) {
|
|
57
61
|
var _a;
|
|
58
|
-
const { item, variables, enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions, valueSetPromises, defaultTerminologyServerUrl } = params;
|
|
62
|
+
const { questionnaire, item, variables, enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions, valueSetPromises, defaultTerminologyServerUrl, parentRepeatGroupLinkId } = params;
|
|
59
63
|
const items = item.item;
|
|
64
|
+
const isRepeatGroup = !!item.repeats && item.type === 'group';
|
|
60
65
|
if (items && items.length > 0) {
|
|
61
66
|
// iterate through items of item recursively
|
|
62
67
|
for (const childItem of items) {
|
|
63
|
-
extractExtensionsFromItemRecursive(Object.assign(Object.assign({}, params), { item: childItem }));
|
|
68
|
+
extractExtensionsFromItemRecursive(Object.assign(Object.assign({}, params), { item: childItem, parentRepeatGroupLinkId: isRepeatGroup ? item.linkId : parentRepeatGroupLinkId }));
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
|
-
// Read enable when items,
|
|
67
|
-
const
|
|
68
|
-
if (
|
|
69
|
-
|
|
71
|
+
// Read enable when items, enableWhen/calculated/answer expressions, valueSets and variables from qItem
|
|
72
|
+
const initialisedEnableWhenItemProperties = initialiseEnableWhenItemProperties(item, questionnaire, parentRepeatGroupLinkId);
|
|
73
|
+
if (initialisedEnableWhenItemProperties) {
|
|
74
|
+
const { enableWhenItemType, enableWhenItemProperties } = initialisedEnableWhenItemProperties;
|
|
75
|
+
if (enableWhenItemType === 'single') {
|
|
76
|
+
enableWhenItems.singleItems[item.linkId] =
|
|
77
|
+
enableWhenItemProperties;
|
|
78
|
+
}
|
|
79
|
+
else if (enableWhenItemType === 'repeat') {
|
|
80
|
+
enableWhenItems.repeatItems[item.linkId] =
|
|
81
|
+
enableWhenItemProperties;
|
|
82
|
+
}
|
|
70
83
|
}
|
|
71
84
|
const enableWhenExpression = getEnableWhenExpression(item);
|
|
72
85
|
if (enableWhenExpression) {
|
|
@@ -119,17 +132,67 @@ function extractExtensionsFromItemRecursive(params) {
|
|
|
119
132
|
*
|
|
120
133
|
* @author Sean Fong
|
|
121
134
|
*/
|
|
122
|
-
export function
|
|
135
|
+
export function initialiseEnableWhenItemProperties(qItem, questionnaire, parentLinkId) {
|
|
136
|
+
// Parent repeat group linkId exist, try to classify this item as a repeat enableWhen item
|
|
137
|
+
if (parentLinkId) {
|
|
138
|
+
const enableWhenRepeatItemProperties = initialiseEnableWhenRepeatItemProperties(qItem, questionnaire, parentLinkId);
|
|
139
|
+
if (enableWhenRepeatItemProperties) {
|
|
140
|
+
return {
|
|
141
|
+
enableWhenItemType: 'repeat',
|
|
142
|
+
enableWhenItemProperties: enableWhenRepeatItemProperties
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// If parentLinkId is not provided or item cannot be classified as a repeat enableWhen item, classify it as a single enableWhen item
|
|
147
|
+
const enableWhenSingleItemProperties = initialiseEnableWhenSingleItemProperties(qItem);
|
|
148
|
+
if (enableWhenSingleItemProperties) {
|
|
149
|
+
return {
|
|
150
|
+
enableWhenItemType: 'single',
|
|
151
|
+
enableWhenItemProperties: enableWhenSingleItemProperties
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
export function initialiseEnableWhenRepeatItemProperties(qItem, questionnaire, parentLinkId) {
|
|
123
157
|
const enableWhen = qItem.enableWhen;
|
|
124
|
-
if (enableWhen) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if
|
|
130
|
-
|
|
158
|
+
if (!enableWhen) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const linkedItems = enableWhen.map((linkedItem) => {
|
|
162
|
+
const linkedParentItem = getRepeatGroupParentItem(questionnaire, linkedItem.question);
|
|
163
|
+
// Check if parentLinkId match the linked item's parent linkId
|
|
164
|
+
if (parentLinkId === (linkedParentItem === null || linkedParentItem === void 0 ? void 0 : linkedParentItem.linkId)) {
|
|
165
|
+
return { enableWhen: linkedItem, parentLinkId: linkedParentItem.linkId, answers: [] };
|
|
131
166
|
}
|
|
132
|
-
|
|
167
|
+
// Otherwise, this linked item is not a valid repeat enableWhen linked item
|
|
168
|
+
return null;
|
|
169
|
+
});
|
|
170
|
+
// If any linked item is not valid, exit early
|
|
171
|
+
if (linkedItems.some((linkedItem) => linkedItem === null)) {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
linked: linkedItems,
|
|
176
|
+
parentLinkId: parentLinkId,
|
|
177
|
+
enabledIndexes: [false],
|
|
178
|
+
enableBehavior: qItem.enableBehavior
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get enableWhen items' linked items and enableBehaviour attribute and save them in an EnableWhenItemProperties object
|
|
183
|
+
*
|
|
184
|
+
* @author Sean Fong
|
|
185
|
+
*/
|
|
186
|
+
export function initialiseEnableWhenSingleItemProperties(qItem) {
|
|
187
|
+
const enableWhen = qItem.enableWhen;
|
|
188
|
+
if (enableWhen) {
|
|
189
|
+
return {
|
|
190
|
+
linked: enableWhen.map((linkedItem) => {
|
|
191
|
+
return { enableWhen: linkedItem };
|
|
192
|
+
}),
|
|
193
|
+
isEnabled: false,
|
|
194
|
+
enableBehavior: qItem.enableBehavior
|
|
195
|
+
};
|
|
133
196
|
}
|
|
134
197
|
return null;
|
|
135
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/tabs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Tabs } from '../interfaces/tab.interface';
|
|
2
|
-
import type { EnableWhenExpression, EnableWhenItems } from '../interfaces
|
|
2
|
+
import type { EnableWhenExpression, EnableWhenItems } from '../interfaces';
|
|
3
3
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
4
4
|
export declare function getFirstVisibleTab(tabs: Tabs, enableWhenItems: EnableWhenItems, enableWhenExpressions: Record<string, EnableWhenExpression>): number;
|
|
5
5
|
/**
|
package/lib/utils/tabs.js
CHANGED
|
@@ -18,17 +18,19 @@ import { isSpecificItemControl } from './itemControl';
|
|
|
18
18
|
import { isHiddenByEnableWhen } from './qItem';
|
|
19
19
|
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
20
20
|
export function getFirstVisibleTab(tabs, enableWhenItems, enableWhenExpressions) {
|
|
21
|
+
// Only singleEnableWhenItems are relevant for tab operations
|
|
22
|
+
const { singleItems } = enableWhenItems;
|
|
21
23
|
return Object.entries(tabs)
|
|
22
24
|
.sort(([, tabA], [, tabB]) => tabA.tabIndex - tabB.tabIndex)
|
|
23
25
|
.findIndex(([tabLinkId, tab]) => {
|
|
24
26
|
if (tab.isHidden) {
|
|
25
27
|
return false;
|
|
26
28
|
}
|
|
27
|
-
if (
|
|
28
|
-
return
|
|
29
|
+
if (singleItems[tabLinkId]) {
|
|
30
|
+
return singleItems[tabLinkId].isEnabled;
|
|
29
31
|
}
|
|
30
32
|
if (enableWhenExpressions[tabLinkId]) {
|
|
31
|
-
return enableWhenExpressions[tabLinkId].
|
|
33
|
+
return enableWhenExpressions[tabLinkId].isEnabledSingle;
|
|
32
34
|
}
|
|
33
35
|
return true;
|
|
34
36
|
});
|
package/lib/utils/tabs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,UAAU,kBAAkB,CAChC,IAAU,EACV,eAAgC,EAChC,qBAA2D;IAE3D,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACxB,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC3D,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE;QAC9B,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/utils/tabs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -16,29 +16,65 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import React, { memo } from 'react';
|
|
19
|
-
import
|
|
20
|
-
import
|
|
19
|
+
import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
|
|
20
|
+
import { TEXT_FIELD_WIDTH } from '../Textfield.styles';
|
|
21
|
+
import Box from '@mui/material/Box';
|
|
22
|
+
import Button from '@mui/material/Button';
|
|
23
|
+
import { grey } from '@mui/material/colors';
|
|
24
|
+
import Fade from '@mui/material/Fade';
|
|
25
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
26
|
+
import { ChoiceItemOrientation } from '../../../interfaces/choice.enum';
|
|
27
|
+
import type { QuestionnaireItem } from 'fhir/r4';
|
|
28
|
+
import ChoiceRadioSingle from '../ChoiceItems/ChoiceRadioSingle';
|
|
29
|
+
import { StyledRadioGroup } from '../Item.styles';
|
|
30
|
+
import { getChoiceOrientation } from '../../../utils/choice';
|
|
21
31
|
|
|
22
|
-
interface BooleanFieldProps {
|
|
23
|
-
|
|
32
|
+
interface BooleanFieldProps extends PropsWithIsTabledAttribute {
|
|
33
|
+
qItem: QuestionnaireItem;
|
|
24
34
|
readOnly: boolean;
|
|
25
|
-
|
|
35
|
+
valueBoolean: boolean | undefined;
|
|
36
|
+
onCheckedChange: (newValue: string) => void;
|
|
37
|
+
onClear: () => void;
|
|
26
38
|
}
|
|
39
|
+
|
|
27
40
|
const BooleanField = memo(function BooleanField(props: BooleanFieldProps) {
|
|
28
|
-
const {
|
|
41
|
+
const { qItem, readOnly, valueBoolean, isTabled, onCheckedChange, onClear } = props;
|
|
42
|
+
|
|
43
|
+
// defaults to horizontal, only set to vertical if explicitly set
|
|
44
|
+
const orientation = getChoiceOrientation(qItem) ?? ChoiceItemOrientation.Horizontal;
|
|
45
|
+
|
|
46
|
+
const selection = valueBoolean === undefined ? null : valueBoolean.toString();
|
|
29
47
|
|
|
30
48
|
return (
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
49
|
+
<Box
|
|
50
|
+
display="flex"
|
|
51
|
+
alignItems="center"
|
|
52
|
+
sx={{ maxWidth: !isTabled ? TEXT_FIELD_WIDTH : 3000, minWidth: 160 }}>
|
|
53
|
+
<StyledRadioGroup
|
|
54
|
+
row={orientation === ChoiceItemOrientation.Horizontal}
|
|
55
|
+
name={qItem.text}
|
|
56
|
+
id={qItem.id}
|
|
57
|
+
onChange={(e) => onCheckedChange(e.target.value)}
|
|
58
|
+
value={selection}>
|
|
59
|
+
<ChoiceRadioSingle value="true" label="Yes" readOnly={readOnly} />
|
|
60
|
+
<ChoiceRadioSingle value="false" label="No" readOnly={readOnly} />
|
|
61
|
+
</StyledRadioGroup>
|
|
62
|
+
|
|
63
|
+
<Box flexGrow={1} />
|
|
64
|
+
|
|
65
|
+
<Fade in={valueBoolean !== undefined} timeout={100}>
|
|
66
|
+
<Tooltip title="Set question as unanswered">
|
|
67
|
+
<Button
|
|
68
|
+
sx={{
|
|
69
|
+
color: grey['500'],
|
|
70
|
+
'&:hover': { backgroundColor: grey['200'] }
|
|
71
|
+
}}
|
|
72
|
+
onClick={onClear}>
|
|
73
|
+
Clear
|
|
74
|
+
</Button>
|
|
75
|
+
</Tooltip>
|
|
76
|
+
</Fade>
|
|
77
|
+
</Box>
|
|
42
78
|
);
|
|
43
79
|
});
|
|
44
80
|
|