@aehrc/smart-forms-renderer 0.40.0 → 0.40.1
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/ItemParts/ItemFieldGrid.js +6 -2
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js +5 -5
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTable.js +3 -3
- package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
- package/lib/components/Renderer/FormTopLevelItem.js +12 -1
- package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
- package/lib/hooks/useDateValidation.js +2 -2
- package/lib/hooks/useDateValidation.js.map +1 -1
- package/lib/hooks/useGroupTableRows.d.ts +1 -1
- package/lib/hooks/useGroupTableRows.js +2 -2
- package/lib/hooks/useGroupTableRows.js.map +1 -1
- package/lib/hooks/useInitialiseGroupTable.d.ts +1 -1
- package/lib/hooks/useInitialiseGroupTable.js +5 -5
- package/lib/hooks/useInitialiseGroupTable.js.map +1 -1
- package/lib/hooks/useInitialiseRepeatAnswers.d.ts +1 -1
- package/lib/hooks/useInitialiseRepeatAnswers.js +9 -12
- package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
- package/lib/hooks/useInitialiseRepeatGroups.js +4 -4
- package/lib/hooks/useInitialiseRepeatGroups.js.map +1 -1
- package/lib/utils/manageForm.js +2 -1
- package/lib/utils/manageForm.js.map +1 -1
- package/lib/utils/repeatId.d.ts +2 -0
- package/lib/utils/repeatId.js +25 -0
- package/lib/utils/repeatId.js.map +1 -0
- package/package.json +1 -1
- package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +8 -2
- package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +2 -2
- package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +7 -5
- package/src/components/FormComponents/Tables/GroupTable.tsx +6 -3
- package/src/components/Renderer/FormTopLevelItem.tsx +31 -1
- package/src/hooks/useDateValidation.tsx +2 -2
- package/src/hooks/useGroupTableRows.ts +2 -2
- package/src/hooks/useInitialiseGroupTable.ts +8 -5
- package/src/hooks/useInitialiseRepeatAnswers.ts +9 -12
- package/src/hooks/useInitialiseRepeatGroups.ts +4 -4
- package/src/stories/assets/questionnaires/QIdRemoverDebugger.ts +161 -0
- package/src/stories/storybookWrappers/IdRemoverButtonForStorybook.tsx +54 -0
- package/src/stories/storybookWrappers/IdRemoverDebuggerWrapperForStorybook.tsx +81 -0
- package/src/stories/testing/IdRemoverDebuggerWrapper.stories.tsx +39 -0
- package/src/tests/extractObservation.test.ts +2 -5
- package/src/utils/manageForm.ts +2 -1
- package/src/utils/repeatId.ts +27 -0
- package/CHANGELOG.md +0 -43
- package/lib/hooks/useRepeatAnswers.d.ts +0 -4
- package/lib/hooks/useRepeatAnswers.js +0 -34
- package/lib/hooks/useRepeatAnswers.js.map +0 -1
- package/lib/interfaces/repeatItem.interface.d.ts +0 -5
- package/lib/interfaces/repeatItem.interface.js +0 -2
- package/lib/interfaces/repeatItem.interface.js.map +0 -1
- package/lib/utils/answerExpression.d.ts +0 -18
- package/lib/utils/answerExpression.js +0 -133
- package/lib/utils/answerExpression.js.map +0 -1
- package/lib/utils/dynamicValueSet.d.ts +0 -5
- package/lib/utils/dynamicValueSet.js +0 -96
- package/lib/utils/dynamicValueSet.js.map +0 -1
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.d.ts +0 -14
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js +0 -639
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js.map +0 -1
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.d.ts +0 -3
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.js +0 -41
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.js.map +0 -1
- package/lib/utils/questionnaireStoreUtils/extractPreferredTerminologyServerUrls.d.ts +0 -3
- package/lib/utils/questionnaireStoreUtils/extractPreferredTerminologyServerUrls.js +0 -34
- package/lib/utils/questionnaireStoreUtils/extractPreferredTerminologyServerUrls.js.map +0 -1
- package/lib/utils/updateQr.d.ts +0 -9
- package/lib/utils/updateQr.js +0 -55
- package/lib/utils/updateQr.js.map +0 -1
|
@@ -19,13 +19,17 @@ import Grid from '@mui/material/Grid';
|
|
|
19
19
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
20
20
|
import LabelWrapper from './ItemLabelWrapper';
|
|
21
21
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
22
|
+
import Box from '@mui/material/Box';
|
|
22
23
|
function ItemFieldGrid(props) {
|
|
23
24
|
const { children, qItem, readOnly } = props;
|
|
24
25
|
const { displayInstructions } = useRenderingExtensions(qItem);
|
|
25
26
|
return (React.createElement(Grid, { container: true, columnSpacing: 4 },
|
|
26
|
-
React.createElement(Grid, { item: true,
|
|
27
|
+
React.createElement(Grid, { item: true, md: 4, xs: 12 },
|
|
27
28
|
React.createElement(LabelWrapper, { qItem: qItem, readOnly: readOnly })),
|
|
28
|
-
React.createElement(
|
|
29
|
+
React.createElement(Box, { sx: {
|
|
30
|
+
my: { xs: 1.5, md: 0 } // Adds padding for `xs` breakpoint and removes it for `md` and up
|
|
31
|
+
} }),
|
|
32
|
+
React.createElement(Grid, { item: true, md: 8, xs: 12 },
|
|
29
33
|
children,
|
|
30
34
|
React.createElement(DisplayInstructions, { displayInstructions: displayInstructions, readOnly: readOnly }))));
|
|
31
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemFieldGrid.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/ItemFieldGrid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,mBAAmB,MAAM,oCAAoC,CAAC;AACrE,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"ItemFieldGrid.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/ItemFieldGrid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,mBAAmB,MAAM,oCAAoC,CAAC;AACrE,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,GAAG,MAAM,mBAAmB,CAAC;AAQpC,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE5C,MAAM,EAAE,mBAAmB,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAE9D,OAAO,CACL,oBAAC,IAAI,IAAC,SAAS,QAAC,aAAa,EAAE,CAAC;QAC9B,oBAAC,IAAI,IAAC,IAAI,QAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;YACtB,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAC7C;QACP,oBAAC,GAAG,IACF,EAAE,EAAE;gBACF,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,kEAAkE;aAC1F,GACD;QACF,oBAAC,IAAI,IAAC,IAAI,QAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;YACrB,QAAQ;YACT,oBAAC,mBAAmB,IAAC,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAChF,CACF,CACR,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import React from 'react';
|
|
18
18
|
import useInitialiseRepeatGroups from '../../../hooks/useInitialiseRepeatGroups';
|
|
19
|
-
import { nanoid } from 'nanoid';
|
|
20
19
|
import cloneDeep from 'lodash.clonedeep';
|
|
21
20
|
import { useQuestionnaireStore } from '../../../stores';
|
|
22
21
|
import useRepeatGroups from '../../../hooks/useRepeatGroups';
|
|
23
22
|
import RepeatGroupView from './RepeatGroupView';
|
|
23
|
+
import { generateNewRepeatId } from '../../../utils/repeatId';
|
|
24
24
|
/**
|
|
25
25
|
* Main component to render a repeating, group Questionnaire item.
|
|
26
26
|
* Store and manages the state of multiple instances of GroupItem in a repeating group.
|
|
@@ -64,7 +64,7 @@ function RepeatGroup(props) {
|
|
|
64
64
|
setRepeatGroups([
|
|
65
65
|
...repeatGroups,
|
|
66
66
|
{
|
|
67
|
-
nanoId:
|
|
67
|
+
nanoId: generateNewRepeatId(qItem.linkId),
|
|
68
68
|
qrItem: null
|
|
69
69
|
}
|
|
70
70
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RepeatGroup.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/RepeatGroup/RepeatGroup.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,yBAAyB,MAAM,0CAA0C,CAAC;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"RepeatGroup.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/RepeatGroup/RepeatGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import React from 'react';
|
|
18
|
-
import { nanoid } from 'nanoid';
|
|
19
18
|
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
20
19
|
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
21
20
|
import AddItemButton from './AddItemButton';
|
|
@@ -26,6 +25,7 @@ import useInitialiseRepeatAnswers from '../../../hooks/useInitialiseRepeatAnswer
|
|
|
26
25
|
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
27
26
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
28
27
|
import { useQuestionnaireStore } from '../../../stores';
|
|
28
|
+
import { generateExistingRepeatId, generateNewRepeatId } from '../../../utils/repeatId';
|
|
29
29
|
/**
|
|
30
30
|
* Main component to render a repeating, non-group Questionnaire item.
|
|
31
31
|
*
|
|
@@ -35,7 +35,7 @@ function RepeatItem(props) {
|
|
|
35
35
|
const { qItem, qrItem, groupCardElevation, showMinimalView, parentIsReadOnly, onQrItemChange } = props;
|
|
36
36
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
37
37
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
38
|
-
const repeatAnswers = useInitialiseRepeatAnswers(qrItem);
|
|
38
|
+
const repeatAnswers = useInitialiseRepeatAnswers(qItem.linkId, qrItem);
|
|
39
39
|
// Event Handlers
|
|
40
40
|
function handleAnswerChange(newQrItem, index) {
|
|
41
41
|
const updatedRepeatAnswers = [...repeatAnswers];
|
|
@@ -48,7 +48,7 @@ function RepeatItem(props) {
|
|
|
48
48
|
onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem, undefined)), { answer: updatedRepeatAnswers.flatMap((repeatAnswer) => (repeatAnswer ? [repeatAnswer] : [])) }));
|
|
49
49
|
}
|
|
50
50
|
function handleAddItem() {
|
|
51
|
-
const updatedRepeatAnswers = [...repeatAnswers, { id:
|
|
51
|
+
const updatedRepeatAnswers = [...repeatAnswers, { id: generateNewRepeatId(qItem.linkId) }];
|
|
52
52
|
onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem, undefined)), { answer: updatedRepeatAnswers.flatMap((repeatAnswer) => (repeatAnswer ? [repeatAnswer] : [])) }));
|
|
53
53
|
}
|
|
54
54
|
if (showMinimalView) {
|
|
@@ -58,7 +58,7 @@ function RepeatItem(props) {
|
|
|
58
58
|
if (answer) {
|
|
59
59
|
repeatAnswerQrItem.answer = [answer];
|
|
60
60
|
}
|
|
61
|
-
return (React.createElement(RepeatField, { key: (_a = answer === null || answer === void 0 ? void 0 : answer.id) !== null && _a !== void 0 ? _a :
|
|
61
|
+
return (React.createElement(RepeatField, { key: (_a = answer === null || answer === void 0 ? void 0 : answer.id) !== null && _a !== void 0 ? _a : generateExistingRepeatId(qItem.linkId, index), qItem: qItem, qrItem: repeatAnswerQrItem, answer: answer, numOfRepeatAnswers: repeatAnswers.length, groupCardElevation: groupCardElevation, parentIsReadOnly: parentIsReadOnly, showMinimalView: showMinimalView, onDeleteAnswer: () => handleDeleteItem(index), onQrItemChange: (newQrItem) => handleAnswerChange(newQrItem, index) }));
|
|
62
62
|
})));
|
|
63
63
|
}
|
|
64
64
|
return (React.createElement(FullWidthFormComponentBox, { "data-test": "q-item-repeat-box", "data-linkid": qItem.linkId, onClick: () => onFocusLinkId(qItem.linkId) },
|
|
@@ -69,7 +69,7 @@ function RepeatItem(props) {
|
|
|
69
69
|
if (answer) {
|
|
70
70
|
repeatAnswerQrItem.answer = [answer];
|
|
71
71
|
}
|
|
72
|
-
return (React.createElement(Collapse, { key: (_a = answer === null || answer === void 0 ? void 0 : answer.id) !== null && _a !== void 0 ? _a :
|
|
72
|
+
return (React.createElement(Collapse, { key: (_a = answer === null || answer === void 0 ? void 0 : answer.id) !== null && _a !== void 0 ? _a : generateExistingRepeatId(qItem.linkId, index), timeout: 200 },
|
|
73
73
|
React.createElement(RepeatField, { qItem: qItem, qrItem: repeatAnswerQrItem, answer: answer, numOfRepeatAnswers: repeatAnswers.length, groupCardElevation: groupCardElevation, parentIsReadOnly: parentIsReadOnly, showMinimalView: showMinimalView, onDeleteAnswer: () => handleDeleteItem(index), onQrItemChange: (newQrItem) => handleAnswerChange(newQrItem, index) })));
|
|
74
74
|
}))),
|
|
75
75
|
React.createElement(AddItemButton, { repeatAnswers: repeatAnswers, readOnly: readOnly, onAddItem: handleAddItem })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RepeatItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/RepeatItem/RepeatItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"RepeatItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/RepeatItem/RepeatItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -25,12 +25,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
25
25
|
};
|
|
26
26
|
import React, { useMemo } from 'react';
|
|
27
27
|
import { mapQItemsIndex } from '../../../utils/mapItem';
|
|
28
|
-
import { nanoid } from 'nanoid';
|
|
29
28
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
30
29
|
import GroupTableView from './GroupTableView';
|
|
31
30
|
import { getGroupTableItemsToUpdate } from '../../../utils/groupTable';
|
|
32
31
|
import useGroupTableRows from '../../../hooks/useGroupTableRows';
|
|
33
32
|
import { flushSync } from 'react-dom';
|
|
33
|
+
import { generateNewRepeatId } from '../../../utils/repeatId';
|
|
34
34
|
/**
|
|
35
35
|
* Main component to render a Group Table (gtable) Questionnaire item.
|
|
36
36
|
* @see {@link https://hl7.org/fhir/extensions/CodeSystem-questionnaire-item-control.html}
|
|
@@ -40,7 +40,7 @@ import { flushSync } from 'react-dom';
|
|
|
40
40
|
function GroupTable(props) {
|
|
41
41
|
const { qItem, qrItems, groupCardElevation, isRepeated, showMinimalView, parentIsReadOnly, onQrRepeatGroupChange } = props;
|
|
42
42
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
43
|
-
const { tableRows, selectedIds, setTableRows, setSelectedIds } = useGroupTableRows(qrItems);
|
|
43
|
+
const { tableRows, selectedIds, setTableRows, setSelectedIds } = useGroupTableRows(qItem.linkId, qrItems);
|
|
44
44
|
// Generate item labels as table headers
|
|
45
45
|
const qItems = qItem.item;
|
|
46
46
|
const itemLabels = useMemo(() => { var _a; return (_a = qItems === null || qItems === void 0 ? void 0 : qItems.map((item) => { var _a; return (_a = item.text) !== null && _a !== void 0 ? _a : ''; })) !== null && _a !== void 0 ? _a : []; }, [qItems]);
|
|
@@ -78,7 +78,7 @@ function GroupTable(props) {
|
|
|
78
78
|
setSelectedIds(updatedSelectedIds);
|
|
79
79
|
}
|
|
80
80
|
function handleAddRow() {
|
|
81
|
-
const newRowNanoId =
|
|
81
|
+
const newRowNanoId = generateNewRepeatId(qItem.linkId);
|
|
82
82
|
setTableRows([
|
|
83
83
|
...tableRows,
|
|
84
84
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupTable.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/Tables/GroupTable.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAEH,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOxD,OAAO,
|
|
1
|
+
{"version":3,"file":"GroupTable.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/Tables/GroupTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -27,8 +27,10 @@ import useHidden from '../../hooks/useHidden';
|
|
|
27
27
|
import GroupItemSwitcher from '../FormComponents/GroupItem/GroupItemSwitcher';
|
|
28
28
|
import useReadOnly from '../../hooks/useReadOnly';
|
|
29
29
|
import Box from '@mui/material/Box';
|
|
30
|
-
import { isSpecificItemControl } from '../../utils';
|
|
30
|
+
import { isRepeatItemAndNotCheckbox, isSpecificItemControl } from '../../utils';
|
|
31
31
|
import GroupTable from '../FormComponents/Tables/GroupTable';
|
|
32
|
+
import RepeatItem from '../FormComponents/RepeatItem/RepeatItem';
|
|
33
|
+
import GridGroup from '../FormComponents/GridGroup/GridGroup';
|
|
32
34
|
function FormTopLevelItem(props) {
|
|
33
35
|
const { topLevelQItem, topLevelQRItemOrItems, parentIsReadOnly, onQrItemChange, onQrRepeatGroupChange } = props;
|
|
34
36
|
const itemIsTabContainer = isTabContainer(topLevelQItem);
|
|
@@ -61,6 +63,11 @@ function FormTopLevelItem(props) {
|
|
|
61
63
|
}
|
|
62
64
|
// If form is untabbed, it is rendered as a regular group
|
|
63
65
|
if (itemIsGroup) {
|
|
66
|
+
// Item is 'grid'
|
|
67
|
+
const itemIsGrid = isSpecificItemControl(topLevelQItem, 'grid');
|
|
68
|
+
if (itemIsGrid) {
|
|
69
|
+
return (React.createElement(GridGroup, { qItem: topLevelQItem, qrItem: topLevelQRItem, groupCardElevation: 1, parentIsReadOnly: parentIsReadOnly, onQrItemChange: onQrItemChange }));
|
|
70
|
+
}
|
|
64
71
|
// GroupTable "gtable" can be rendered with either repeats:true or false
|
|
65
72
|
if (isSpecificItemControl(topLevelQItem, 'gtable')) {
|
|
66
73
|
return (React.createElement(GroupTable, { key: topLevelQItem.linkId, qItem: topLevelQItem, qrItems: topLevelQRItem ? [topLevelQRItem] : [], groupCardElevation: 1, isRepeated: false, parentIsReadOnly: parentIsReadOnly, onQrRepeatGroupChange: onQrRepeatGroupChange }));
|
|
@@ -68,6 +75,10 @@ function FormTopLevelItem(props) {
|
|
|
68
75
|
return (React.createElement(GroupItem, { key: topLevelQItem.linkId, qItem: topLevelQItem, qrItem: topLevelQRItem, groupCardElevation: 1, isRepeated: false, parentIsReadOnly: readOnly, onQrItemChange: onQrItemChange }));
|
|
69
76
|
}
|
|
70
77
|
// Otherwise, it is rendered as a non-group item
|
|
78
|
+
const itemRepeatsAndIsNotCheckbox = isRepeatItemAndNotCheckbox(topLevelQItem);
|
|
79
|
+
if (itemRepeatsAndIsNotCheckbox) {
|
|
80
|
+
return (React.createElement(RepeatItem, { key: topLevelQItem.linkId, qItem: topLevelQItem, qrItem: topLevelQRItem, groupCardElevation: 1, parentIsReadOnly: readOnly, onQrItemChange: onQrItemChange }));
|
|
81
|
+
}
|
|
71
82
|
return (React.createElement(Box, { mt: 1 },
|
|
72
83
|
React.createElement(SingleItem, { key: topLevelQItem.linkId, qItem: topLevelQItem, qrItem: topLevelQRItem, isRepeated: false, isTabled: false, groupCardElevation: 1, parentIsReadOnly: readOnly, onQrItemChange: onQrItemChange })));
|
|
73
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormTopLevelItem.js","sourceRoot":"","sources":["../../../src/components/Renderer/FormTopLevelItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAC9D,OAAO,UAAU,MAAM,yCAAyC,CAAC;AAMjE,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,iBAAiB,MAAM,+CAA+C,CAAC;AAC9E,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"FormTopLevelItem.js","sourceRoot":"","sources":["../../../src/components/Renderer/FormTopLevelItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -41,8 +41,8 @@ function useDateValidation(input, parseFail = false) {
|
|
|
41
41
|
return 'Input does not match the formats MM/YYYY or DD/MM/YYYY.';
|
|
42
42
|
}
|
|
43
43
|
const matches = input.split('/');
|
|
44
|
-
if (validateTwoMatches(matches[0], matches[1])) {
|
|
45
|
-
return
|
|
44
|
+
if (!validateTwoMatches(matches[0], matches[1])) {
|
|
45
|
+
return 'Input is an invalid date.';
|
|
46
46
|
}
|
|
47
47
|
return null;
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDateValidation.js","sourceRoot":"","sources":["../../src/hooks/useDateValidation.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,4DAA4D,CAAC;AACpE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,SAAS,iBAAiB,CAAC,KAAa,EAAE,YAAqB,KAAK;IAClE,IAAI,KAAK,KAAK,EAAE,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,qEAAqE,CAAC;KAC9E;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,IAAI,eAAe,KAAK,CAAC,EAAE;QACzB,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE;YAC/B,OAAO,6CAA6C,CAAC;SACtD;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7D,OAAO,2BAA2B,CAAC;SACpC;QAED,OAAO,IAAI,CAAC;KACb;IAED,IAAI,eAAe,KAAK,CAAC,EAAE;QACzB,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;YAC7B,OAAO,yDAAyD,CAAC;SAClE;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"useDateValidation.js","sourceRoot":"","sources":["../../src/hooks/useDateValidation.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,4DAA4D,CAAC;AACpE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,SAAS,iBAAiB,CAAC,KAAa,EAAE,YAAqB,KAAK;IAClE,IAAI,KAAK,KAAK,EAAE,EAAE;QAChB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,qEAAqE,CAAC;KAC9E;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,IAAI,eAAe,KAAK,CAAC,EAAE;QACzB,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE;YAC/B,OAAO,6CAA6C,CAAC;SACtD;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7D,OAAO,2BAA2B,CAAC;SACpC;QAED,OAAO,IAAI,CAAC;KACb;IAED,IAAI,eAAe,KAAK,CAAC,EAAE;QACzB,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;YAC7B,OAAO,yDAAyD,CAAC;SAClE;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/C,OAAO,2BAA2B,CAAC;SACpC;QAED,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;KACF;IAED,IAAI,SAAS,EAAE;QACb,OAAO,2BAA2B,CAAC;KACpC;IAED,OAAO,uCAAuC,CAAC;AACjD,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { QuestionnaireResponseItem } from 'fhir/r4';
|
|
3
|
-
declare function useGroupTableRows(qrItems: QuestionnaireResponseItem[]): {
|
|
3
|
+
declare function useGroupTableRows(linkId: string, qrItems: QuestionnaireResponseItem[]): {
|
|
4
4
|
tableRows: import("../interfaces/groupTable.interface").GroupTableRowModel[];
|
|
5
5
|
selectedIds: string[];
|
|
6
6
|
setTableRows: import("react").Dispatch<import("react").SetStateAction<import("../interfaces/groupTable.interface").GroupTableRowModel[]>>;
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { useState } from 'react';
|
|
18
18
|
import useInitialiseGroupTable from './useInitialiseGroupTable';
|
|
19
|
-
function useGroupTableRows(qrItems) {
|
|
20
|
-
const initialisedGroupTableRows = useInitialiseGroupTable(qrItems);
|
|
19
|
+
function useGroupTableRows(linkId, qrItems) {
|
|
20
|
+
const initialisedGroupTableRows = useInitialiseGroupTable(linkId, qrItems);
|
|
21
21
|
const [tableRows, setTableRows] = useState(initialisedGroupTableRows);
|
|
22
22
|
const [selectedIds, setSelectedIds] = useState(initialisedGroupTableRows.map((row) => row.nanoId));
|
|
23
23
|
return { tableRows, selectedIds, setTableRows, setSelectedIds };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGroupTableRows.js","sourceRoot":"","sources":["../../src/hooks/useGroupTableRows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAGhE,SAAS,iBAAiB,CAAC,OAAoC;
|
|
1
|
+
{"version":3,"file":"useGroupTableRows.js","sourceRoot":"","sources":["../../src/hooks/useGroupTableRows.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAGhE,SAAS,iBAAiB,CAAC,MAAc,EAAE,OAAoC;IAC7E,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACtE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAC5C,yBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CACnD,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAClE,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { QuestionnaireResponseItem } from 'fhir/r4';
|
|
2
2
|
import type { GroupTableRowModel } from '../interfaces/groupTable.interface';
|
|
3
|
-
declare function useInitialiseGroupTable(qrItems: QuestionnaireResponseItem[]): GroupTableRowModel[];
|
|
3
|
+
declare function useInitialiseGroupTable(linkId: string, qrItems: QuestionnaireResponseItem[]): GroupTableRowModel[];
|
|
4
4
|
export default useInitialiseGroupTable;
|
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
18
|
-
function useInitialiseGroupTable(qrItems) {
|
|
17
|
+
import { generateExistingRepeatId, generateNewRepeatId } from '../utils/repeatId';
|
|
18
|
+
function useInitialiseGroupTable(linkId, qrItems) {
|
|
19
19
|
let initialGroupTableRows = [
|
|
20
20
|
{
|
|
21
|
-
nanoId:
|
|
21
|
+
nanoId: generateNewRepeatId(linkId),
|
|
22
22
|
qrItem: null
|
|
23
23
|
}
|
|
24
24
|
];
|
|
25
25
|
if (qrItems.length > 0) {
|
|
26
|
-
initialGroupTableRows = qrItems.map((qrItem) => {
|
|
26
|
+
initialGroupTableRows = qrItems.map((qrItem, index) => {
|
|
27
27
|
return {
|
|
28
|
-
nanoId:
|
|
28
|
+
nanoId: generateExistingRepeatId(linkId, index),
|
|
29
29
|
qrItem
|
|
30
30
|
};
|
|
31
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInitialiseGroupTable.js","sourceRoot":"","sources":["../../src/hooks/useInitialiseGroupTable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"useInitialiseGroupTable.js","sourceRoot":"","sources":["../../src/hooks/useInitialiseGroupTable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElF,SAAS,uBAAuB,CAC9B,MAAc,EACd,OAAoC;IAEpC,IAAI,qBAAqB,GAAyB;QAChD;YACE,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC;YACnC,MAAM,EAAE,IAAI;SACb;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACpD,OAAO;gBACL,MAAM,EAAE,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC;gBAC/C,MAAM;aACP,CAAC;QACJ,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { QuestionnaireResponseItem, QuestionnaireResponseItemAnswer } from 'fhir/r4';
|
|
2
|
-
declare function useInitialiseRepeatAnswers(qrItem: QuestionnaireResponseItem | null): (QuestionnaireResponseItemAnswer | null)[];
|
|
2
|
+
declare function useInitialiseRepeatAnswers(linkId: string, qrItem: QuestionnaireResponseItem | null): (QuestionnaireResponseItemAnswer | null)[];
|
|
3
3
|
export default useInitialiseRepeatAnswers;
|
|
@@ -14,21 +14,18 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import { nanoid } from 'nanoid';
|
|
18
17
|
import { useMemo } from 'react';
|
|
19
|
-
|
|
18
|
+
import { generateExistingRepeatId, generateNewRepeatId } from '../utils/repeatId';
|
|
19
|
+
function useInitialiseRepeatAnswers(linkId, qrItem) {
|
|
20
20
|
return useMemo(() => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
initialRepeatAnswers = qrItem.answer.map((answer) => {
|
|
24
|
-
if (!answer.id) {
|
|
25
|
-
answer.id = nanoid();
|
|
26
|
-
}
|
|
27
|
-
return answer;
|
|
28
|
-
});
|
|
21
|
+
if (!(qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer)) {
|
|
22
|
+
return [{ id: generateNewRepeatId(linkId) }];
|
|
29
23
|
}
|
|
30
|
-
return
|
|
31
|
-
|
|
24
|
+
return qrItem.answer.map((answer, index) => {
|
|
25
|
+
var _a;
|
|
26
|
+
return (Object.assign(Object.assign({}, answer), { id: (_a = answer.id) !== null && _a !== void 0 ? _a : generateExistingRepeatId(linkId, index) }));
|
|
27
|
+
});
|
|
28
|
+
}, [linkId, qrItem]);
|
|
32
29
|
}
|
|
33
30
|
export default useInitialiseRepeatAnswers;
|
|
34
31
|
//# sourceMappingURL=useInitialiseRepeatAnswers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInitialiseRepeatAnswers.js","sourceRoot":"","sources":["../../src/hooks/useInitialiseRepeatAnswers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useInitialiseRepeatAnswers.js","sourceRoot":"","sources":["../../src/hooks/useInitialiseRepeatAnswers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElF,SAAS,0BAA0B,CACjC,MAAc,EACd,MAAwC;IAExC,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,EAAE;YACnB,OAAO,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAC9C;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;YAAC,OAAA,iCACvC,MAAM,KACT,EAAE,EAAE,MAAA,MAAM,CAAC,EAAE,mCAAI,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,IACxD,CAAA;SAAA,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,eAAe,0BAA0B,CAAC"}
|
|
@@ -14,20 +14,20 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import { nanoid } from 'nanoid';
|
|
18
17
|
import { useMemo } from 'react';
|
|
18
|
+
import { generateExistingRepeatId, generateNewRepeatId } from '../utils/repeatId';
|
|
19
19
|
function useInitialiseRepeatGroups(qItem, qrItems) {
|
|
20
20
|
return useMemo(() => {
|
|
21
21
|
let initialRepeatGroupAnswers = [
|
|
22
22
|
{
|
|
23
|
-
nanoId:
|
|
23
|
+
nanoId: generateNewRepeatId(qItem.linkId),
|
|
24
24
|
qrItem: null
|
|
25
25
|
}
|
|
26
26
|
];
|
|
27
27
|
if (qrItems.length > 0) {
|
|
28
|
-
initialRepeatGroupAnswers = qrItems.map((qrItem) => {
|
|
28
|
+
initialRepeatGroupAnswers = qrItems.map((qrItem, index) => {
|
|
29
29
|
return {
|
|
30
|
-
nanoId:
|
|
30
|
+
nanoId: generateExistingRepeatId(qItem.linkId, index),
|
|
31
31
|
qrItem
|
|
32
32
|
};
|
|
33
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInitialiseRepeatGroups.js","sourceRoot":"","sources":["../../src/hooks/useInitialiseRepeatGroups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"useInitialiseRepeatGroups.js","sourceRoot":"","sources":["../../src/hooks/useInitialiseRepeatGroups.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElF,SAAS,yBAAyB,CAChC,KAAwB,EACxB,OAAoC;IAEpC,OAAO,OAAO,CACZ,GAAG,EAAE;QACH,IAAI,yBAAyB,GAAwB;YACnD;gBACE,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;gBACzC,MAAM,EAAE,IAAI;aACb;SACF,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACxD,OAAO;oBACL,MAAM,EAAE,wBAAwB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;oBACrD,MAAM;iBACP,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD,8CAA8C;IAC9C,uDAAuD;IACvD,CAAC,KAAK,EAAE,OAAO,CAAC,CACjB,CAAC;AACJ,CAAC;AAED,eAAe,yBAAyB,CAAC"}
|
package/lib/utils/manageForm.js
CHANGED
|
@@ -11,6 +11,7 @@ import { questionnaireResponseStore, questionnaireStore, smartConfigStore, termi
|
|
|
11
11
|
import { initialiseQuestionnaireResponse } from './initialise';
|
|
12
12
|
import { removeEmptyAnswers } from './removeEmptyAnswers';
|
|
13
13
|
import { readEncounter, readPatient, readUser } from '../api/smartClient';
|
|
14
|
+
import cloneDeep from 'lodash.clonedeep';
|
|
14
15
|
/**
|
|
15
16
|
* Build the form with an initial Questionnaire and an optional filled QuestionnaireResponse.
|
|
16
17
|
* If a QuestionnaireResponse is not provided, an empty QuestionnaireResponse is set as the initial QuestionnaireResponse.
|
|
@@ -85,7 +86,7 @@ export function initialiseFhirClient(fhirClient) {
|
|
|
85
86
|
* @author Sean Fong
|
|
86
87
|
*/
|
|
87
88
|
export function getResponse() {
|
|
88
|
-
return questionnaireResponseStore.getState().updatableResponse;
|
|
89
|
+
return cloneDeep(questionnaireResponseStore.getState().updatableResponse);
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
91
92
|
* Remove all empty/hidden answers from the filled QuestionnaireResponse.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manageForm.js","sourceRoot":"","sources":["../../src/utils/manageForm.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"manageForm.js","sourceRoot":"","sources":["../../src/utils/manageForm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
import { nanoid } from 'nanoid';
|
|
18
|
+
export function generateNewRepeatId(linkId) {
|
|
19
|
+
return `${linkId}-${nanoid()}`;
|
|
20
|
+
}
|
|
21
|
+
export function generateExistingRepeatId(linkId, index) {
|
|
22
|
+
const paddedIndex = index.toString().padStart(6, '0');
|
|
23
|
+
return `${linkId}-${paddedIndex}`;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=repeatId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repeatId.js","sourceRoot":"","sources":["../../src/utils/repeatId.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,KAAa;IACpE,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC;AACpC,CAAC"}
|
package/package.json
CHANGED
|
@@ -22,6 +22,7 @@ import type { QuestionnaireItem } from 'fhir/r4';
|
|
|
22
22
|
import DisplayInstructions from '../DisplayItem/DisplayInstructions';
|
|
23
23
|
import LabelWrapper from './ItemLabelWrapper';
|
|
24
24
|
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
25
|
+
import Box from '@mui/material/Box';
|
|
25
26
|
|
|
26
27
|
interface ItemFieldGridProps {
|
|
27
28
|
children: ReactNode;
|
|
@@ -36,10 +37,15 @@ function ItemFieldGrid(props: ItemFieldGridProps) {
|
|
|
36
37
|
|
|
37
38
|
return (
|
|
38
39
|
<Grid container columnSpacing={4}>
|
|
39
|
-
<Grid item
|
|
40
|
+
<Grid item md={4} xs={12}>
|
|
40
41
|
<LabelWrapper qItem={qItem} readOnly={readOnly} />
|
|
41
42
|
</Grid>
|
|
42
|
-
<
|
|
43
|
+
<Box
|
|
44
|
+
sx={{
|
|
45
|
+
my: { xs: 1.5, md: 0 } // Adds padding for `xs` breakpoint and removes it for `md` and up
|
|
46
|
+
}}
|
|
47
|
+
/>
|
|
48
|
+
<Grid item md={8} xs={12}>
|
|
43
49
|
{children}
|
|
44
50
|
<DisplayInstructions displayInstructions={displayInstructions} readOnly={readOnly} />
|
|
45
51
|
</Grid>
|
|
@@ -24,11 +24,11 @@ import type {
|
|
|
24
24
|
} from '../../../interfaces/renderProps.interface';
|
|
25
25
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
26
26
|
import useInitialiseRepeatGroups from '../../../hooks/useInitialiseRepeatGroups';
|
|
27
|
-
import { nanoid } from 'nanoid';
|
|
28
27
|
import cloneDeep from 'lodash.clonedeep';
|
|
29
28
|
import { useQuestionnaireStore } from '../../../stores';
|
|
30
29
|
import useRepeatGroups from '../../../hooks/useRepeatGroups';
|
|
31
30
|
import RepeatGroupView from './RepeatGroupView';
|
|
31
|
+
import { generateNewRepeatId } from '../../../utils/repeatId';
|
|
32
32
|
|
|
33
33
|
interface RepeatGroupProps
|
|
34
34
|
extends PropsWithQrRepeatGroupChangeHandler,
|
|
@@ -104,7 +104,7 @@ function RepeatGroup(props: RepeatGroupProps) {
|
|
|
104
104
|
setRepeatGroups([
|
|
105
105
|
...repeatGroups,
|
|
106
106
|
{
|
|
107
|
-
nanoId:
|
|
107
|
+
nanoId: generateNewRepeatId(qItem.linkId),
|
|
108
108
|
qrItem: null
|
|
109
109
|
}
|
|
110
110
|
]);
|
|
@@ -22,7 +22,6 @@ import type {
|
|
|
22
22
|
PropsWithShowMinimalViewAttribute
|
|
23
23
|
} from '../../../interfaces/renderProps.interface';
|
|
24
24
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
25
|
-
import { nanoid } from 'nanoid';
|
|
26
25
|
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
27
26
|
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
28
27
|
import AddItemButton from './AddItemButton';
|
|
@@ -33,6 +32,7 @@ import useInitialiseRepeatAnswers from '../../../hooks/useInitialiseRepeatAnswer
|
|
|
33
32
|
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
34
33
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
35
34
|
import { useQuestionnaireStore } from '../../../stores';
|
|
35
|
+
import { generateExistingRepeatId, generateNewRepeatId } from '../../../utils/repeatId';
|
|
36
36
|
|
|
37
37
|
interface RepeatItemProps
|
|
38
38
|
extends PropsWithQrItemChangeHandler,
|
|
@@ -56,7 +56,7 @@ function RepeatItem(props: RepeatItemProps) {
|
|
|
56
56
|
|
|
57
57
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
58
58
|
|
|
59
|
-
const repeatAnswers = useInitialiseRepeatAnswers(qrItem);
|
|
59
|
+
const repeatAnswers = useInitialiseRepeatAnswers(qItem.linkId, qrItem);
|
|
60
60
|
|
|
61
61
|
// Event Handlers
|
|
62
62
|
function handleAnswerChange(newQrItem: QuestionnaireResponseItem, index: number) {
|
|
@@ -81,7 +81,7 @@ function RepeatItem(props: RepeatItemProps) {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
function handleAddItem() {
|
|
84
|
-
const updatedRepeatAnswers = [...repeatAnswers, { id:
|
|
84
|
+
const updatedRepeatAnswers = [...repeatAnswers, { id: generateNewRepeatId(qItem.linkId) }];
|
|
85
85
|
|
|
86
86
|
onQrItemChange({
|
|
87
87
|
...createEmptyQrItem(qItem, undefined),
|
|
@@ -100,7 +100,7 @@ function RepeatItem(props: RepeatItemProps) {
|
|
|
100
100
|
|
|
101
101
|
return (
|
|
102
102
|
<RepeatField
|
|
103
|
-
key={answer?.id ??
|
|
103
|
+
key={answer?.id ?? generateExistingRepeatId(qItem.linkId, index)}
|
|
104
104
|
qItem={qItem}
|
|
105
105
|
qrItem={repeatAnswerQrItem}
|
|
106
106
|
answer={answer}
|
|
@@ -131,7 +131,9 @@ function RepeatItem(props: RepeatItemProps) {
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
return (
|
|
134
|
-
<Collapse
|
|
134
|
+
<Collapse
|
|
135
|
+
key={answer?.id ?? generateExistingRepeatId(qItem.linkId, index)}
|
|
136
|
+
timeout={200}>
|
|
135
137
|
<RepeatField
|
|
136
138
|
qItem={qItem}
|
|
137
139
|
qrItem={repeatAnswerQrItem}
|