@aehrc/smart-forms-renderer 0.38.2 → 0.38.4
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/GroupItem/GroupItemSwitcher.js +6 -2
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTable.d.ts +2 -2
- package/lib/components/FormComponents/Tables/GroupTable.js +2 -2
- package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableBody.d.ts +2 -2
- package/lib/components/FormComponents/Tables/GroupTableBody.js +2 -2
- package/lib/components/FormComponents/Tables/GroupTableBody.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +3 -2
- package/lib/components/FormComponents/Tables/GroupTableRow.js +16 -5
- package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableView.d.ts +2 -2
- package/lib/components/FormComponents/Tables/GroupTableView.js +10 -10
- package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
- package/lib/components/Renderer/FormTopLevelItem.js +6 -0
- package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
- package/lib/tests/test-data/initialValueSample.d.ts +2 -0
- package/lib/tests/test-data/initialValueSample.js +802 -0
- package/lib/tests/test-data/initialValueSample.js.map +1 -0
- package/lib/utils/answerExpression.d.ts +18 -0
- package/lib/utils/answerExpression.js +133 -0
- package/lib/utils/answerExpression.js.map +1 -0
- package/lib/utils/calculatedExpression.js +1 -1
- package/lib/utils/calculatedExpression.js.map +1 -1
- package/lib/utils/dynamicValueSet.d.ts +5 -0
- package/lib/utils/dynamicValueSet.js +96 -0
- package/lib/utils/dynamicValueSet.js.map +1 -0
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.d.ts +14 -0
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js +639 -0
- package/lib/utils/fhirpathAsyncUtils/fhirpath-async.js.map +1 -0
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.d.ts +3 -0
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.js +41 -0
- package/lib/utils/fhirpathAsyncUtils/outcome-utils.js.map +1 -0
- package/lib/utils/genericRecursive.d.ts +17 -0
- package/lib/utils/genericRecursive.js +82 -0
- package/lib/utils/genericRecursive.js.map +1 -0
- package/lib/utils/initialise.js +47 -57
- package/lib/utils/initialise.js.map +1 -1
- package/lib/utils/repopulateIntoResponse.js +1 -1
- package/lib/utils/repopulateIntoResponse.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +16 -0
- package/src/components/FormComponents/Tables/GroupTable.tsx +4 -0
- package/src/components/FormComponents/Tables/GroupTableBody.tsx +5 -1
- package/src/components/FormComponents/Tables/GroupTableRow.tsx +98 -46
- package/src/components/FormComponents/Tables/GroupTableView.tsx +30 -26
- package/src/components/Renderer/FormTopLevelItem.tsx +17 -0
- package/src/stories/assets/questionnaires/QItemControlGroup.ts +229 -5
- package/src/stories/sdc/ItemControlGroup.stories.tsx +10 -3
- package/src/tests/initial.test.ts +34 -0
- package/src/tests/test-data/initialValueSample.ts +826 -0
- package/src/utils/calculatedExpression.ts +1 -1
- package/src/utils/{updateQr.ts → genericRecursive.ts} +47 -2
- package/src/utils/initialise.ts +67 -73
- package/src/utils/repopulateIntoResponse.ts +1 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Coding, OperationOutcome } from 'fhir/r4b';
|
|
2
|
+
export declare function CreateOperationOutcome(severity: 'error' | 'fatal' | 'warning' | 'information', code: 'invalid' | 'structure' | 'required' | 'value' | 'invariant' | 'security' | 'login' | 'unknown' | 'expired' | 'forbidden' | 'suppressed' | 'processing' | 'not-supported' | 'duplicate' | 'multiple-matches' | 'not-found' | 'deleted' | 'too-long' | 'code-invalid' | 'extension' | 'too-costly' | 'business-rule' | 'conflict' | 'transient' | 'lock-error' | 'no-store' | 'exception' | 'timeout' | 'incomplete' | 'throttled' | 'informational', message: string, coding?: Coding, diagnostics?: string): fhir4b.OperationOutcome;
|
|
3
|
+
export declare function logMessage(enabled: boolean, outcome: OperationOutcome, message: string, data?: any): void;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// --------------------------------------------------------------------------
|
|
2
|
+
// From: https://github.com/brianpos/fhirpathjs-async-poc/commit/950475900d09bf399574c24f142f3eeae1552fe6
|
|
3
|
+
// Forked from: https://github.com/brianpos/fhirpathjs-async-poc
|
|
4
|
+
// --------------------------------------------------------------------------
|
|
5
|
+
export function CreateOperationOutcome(severity, code, message, coding, diagnostics) {
|
|
6
|
+
var result = {
|
|
7
|
+
resourceType: 'OperationOutcome',
|
|
8
|
+
issue: []
|
|
9
|
+
};
|
|
10
|
+
var issue = {
|
|
11
|
+
severity: severity,
|
|
12
|
+
code: code,
|
|
13
|
+
details: { text: message }
|
|
14
|
+
};
|
|
15
|
+
if (coding && issue.details)
|
|
16
|
+
issue.details.coding = [coding];
|
|
17
|
+
if (diagnostics)
|
|
18
|
+
issue.diagnostics = diagnostics;
|
|
19
|
+
result.issue.push(issue);
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
export function logMessage(enabled, outcome, message, data) {
|
|
23
|
+
if (enabled) {
|
|
24
|
+
// and append it into the outcome issues
|
|
25
|
+
var issue = {
|
|
26
|
+
severity: 'information',
|
|
27
|
+
code: 'informational',
|
|
28
|
+
details: { text: message }
|
|
29
|
+
};
|
|
30
|
+
outcome.issue.push(issue);
|
|
31
|
+
if (typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean')
|
|
32
|
+
issue.details.text += '' + data;
|
|
33
|
+
if (data) {
|
|
34
|
+
if (typeof data === 'string')
|
|
35
|
+
issue.diagnostics = data;
|
|
36
|
+
else
|
|
37
|
+
issue.diagnostics = JSON.stringify(data);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=outcome-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome-utils.js","sourceRoot":"","sources":["../../../src/utils/fhirpathAsyncUtils/outcome-utils.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,yGAAyG;AACzG,gEAAgE;AAChE,6EAA6E;AAE7E,MAAM,UAAU,sBAAsB,CACpC,QAAuD,EACvD,IA+BmB,EACnB,OAAe,EACf,MAAe,EACf,WAAoB;IAEpB,IAAI,MAAM,GAA4B;QACpC,YAAY,EAAE,kBAAkB;QAChC,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,IAAI,KAAK,GAA0B;QACjC,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;KAC3B,CAAC;IACF,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO;QAAE,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,WAAW;QAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,OAAyB,EACzB,OAAe,EACf,IAAU;IAEV,IAAI,OAAO,EAAE;QACX,wCAAwC;QACxC,IAAI,KAAK,GAA0B;YACjC,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC3B,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,SAAS;YACnF,KAAK,CAAC,OAAQ,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC;QACnC,IAAI,IAAI,EAAE;YACR,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;;gBAClD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC/C;KACF;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Questionnaire, QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
|
|
2
|
+
export type RecursiveUpdateFunction<T> = (qItem: QuestionnaireItem, qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[] | null, extraData: T) => QuestionnaireResponseItem | QuestionnaireResponseItem[] | null;
|
|
3
|
+
/**
|
|
4
|
+
* A generic (and safe) way to update a QuestionnaireResponse given a recursive function and a set of data i.e. Record<linkId, calculated expression values>, Record<linkId, re-populated values>
|
|
5
|
+
* This function relies heavily on mapQItemsIndex() and getQrItemsIndex() to accurately pinpoint the locations of QR items based on their positions in the Q, taking into account repeating group answers, non-filled questions, etc
|
|
6
|
+
*
|
|
7
|
+
* @author Sean Fong
|
|
8
|
+
*/
|
|
9
|
+
export declare function updateQuestionnaireResponse<T>(questionnaire: Questionnaire, questionnaireResponse: QuestionnaireResponse, recursiveUpdateFunction: RecursiveUpdateFunction<T>, extraData: T): QuestionnaireResponse;
|
|
10
|
+
export type RecursiveReadArrayFunction<T> = (qItem: QuestionnaireItem, qrItemOrItems: QuestionnaireResponseItem | QuestionnaireResponseItem[] | null) => T[] | null;
|
|
11
|
+
/**
|
|
12
|
+
* A generic (and safe) way to read an array of element(s) i.e. QuestionnaireResponseItem[], extracted Observation[] from a QuestionnaireResponse given a recursive function.
|
|
13
|
+
* This function relies heavily on mapQItemsIndex() and getQrItemsIndex() to accurately pinpoint the locations of QR items based on their positions in the Q, taking into account repeating group answers, non-filled questions, etc
|
|
14
|
+
*
|
|
15
|
+
* @author Sean Fong
|
|
16
|
+
*/
|
|
17
|
+
export declare function readQuestionnaireResponse<T>(questionnaire: Questionnaire, questionnaireResponse: QuestionnaireResponse, recursiveReadFunction: RecursiveReadArrayFunction<T>): T[];
|
|
@@ -0,0 +1,82 @@
|
|
|
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 { getQrItemsIndex, mapQItemsIndex } from './mapItem';
|
|
18
|
+
import { qrItemHasItemsOrAnswer } from './manageForm';
|
|
19
|
+
/**
|
|
20
|
+
* A generic (and safe) way to update a QuestionnaireResponse given a recursive function and a set of data i.e. Record<linkId, calculated expression values>, Record<linkId, re-populated values>
|
|
21
|
+
* This function relies heavily on mapQItemsIndex() and getQrItemsIndex() to accurately pinpoint the locations of QR items based on their positions in the Q, taking into account repeating group answers, non-filled questions, etc
|
|
22
|
+
*
|
|
23
|
+
* @author Sean Fong
|
|
24
|
+
*/
|
|
25
|
+
export function updateQuestionnaireResponse(questionnaire, questionnaireResponse, recursiveUpdateFunction, extraData) {
|
|
26
|
+
var _a;
|
|
27
|
+
if (!questionnaire.item ||
|
|
28
|
+
questionnaire.item.length === 0 ||
|
|
29
|
+
!questionnaireResponse.item ||
|
|
30
|
+
questionnaireResponse.item.length === 0) {
|
|
31
|
+
return questionnaireResponse;
|
|
32
|
+
}
|
|
33
|
+
const qItemsIndexMap = mapQItemsIndex(questionnaire);
|
|
34
|
+
const topLevelQRItemsByIndex = getQrItemsIndex(questionnaire.item, questionnaireResponse.item, qItemsIndexMap);
|
|
35
|
+
const topLevelQrItems = [];
|
|
36
|
+
for (const [index, topLevelQItem] of questionnaire.item.entries()) {
|
|
37
|
+
const topLevelQRItemOrItems = (_a = topLevelQRItemsByIndex[index]) !== null && _a !== void 0 ? _a : {
|
|
38
|
+
linkId: topLevelQItem.linkId,
|
|
39
|
+
text: topLevelQItem.text,
|
|
40
|
+
item: []
|
|
41
|
+
};
|
|
42
|
+
const updatedTopLevelQRItem = recursiveUpdateFunction(topLevelQItem, topLevelQRItemOrItems, extraData);
|
|
43
|
+
if (Array.isArray(updatedTopLevelQRItem)) {
|
|
44
|
+
if (updatedTopLevelQRItem.length > 0) {
|
|
45
|
+
topLevelQrItems.push(...updatedTopLevelQRItem);
|
|
46
|
+
}
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (updatedTopLevelQRItem && qrItemHasItemsOrAnswer(updatedTopLevelQRItem)) {
|
|
50
|
+
topLevelQrItems.push(updatedTopLevelQRItem);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return Object.assign(Object.assign({}, questionnaireResponse), { item: topLevelQrItems });
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A generic (and safe) way to read an array of element(s) i.e. QuestionnaireResponseItem[], extracted Observation[] from a QuestionnaireResponse given a recursive function.
|
|
57
|
+
* This function relies heavily on mapQItemsIndex() and getQrItemsIndex() to accurately pinpoint the locations of QR items based on their positions in the Q, taking into account repeating group answers, non-filled questions, etc
|
|
58
|
+
*
|
|
59
|
+
* @author Sean Fong
|
|
60
|
+
*/
|
|
61
|
+
export function readQuestionnaireResponse(questionnaire, questionnaireResponse, recursiveReadFunction) {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
if (!questionnaire.item || questionnaire.item.length === 0) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
const qItemsIndexMap = mapQItemsIndex(questionnaire);
|
|
67
|
+
const topLevelQRItemsByIndex = getQrItemsIndex(questionnaire.item, (_a = questionnaireResponse.item) !== null && _a !== void 0 ? _a : [], qItemsIndexMap);
|
|
68
|
+
const readValueArray = [];
|
|
69
|
+
for (const [index, topLevelQItem] of questionnaire.item.entries()) {
|
|
70
|
+
const topLevelQRItemOrItems = (_b = topLevelQRItemsByIndex[index]) !== null && _b !== void 0 ? _b : {
|
|
71
|
+
linkId: topLevelQItem.linkId,
|
|
72
|
+
text: topLevelQItem.text,
|
|
73
|
+
item: []
|
|
74
|
+
};
|
|
75
|
+
const readValue = recursiveReadFunction(topLevelQItem, topLevelQRItemOrItems);
|
|
76
|
+
if (readValue) {
|
|
77
|
+
readValueArray.push(...readValue);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return readValueArray;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=genericRecursive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genericRecursive.js","sourceRoot":"","sources":["../../src/utils/genericRecursive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAQtD;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAA4B,EAC5B,qBAA4C,EAC5C,uBAAmD,EACnD,SAAY;;IAEZ,IACE,CAAC,aAAa,CAAC,IAAI;QACnB,aAAa,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAC/B,CAAC,qBAAqB,CAAC,IAAI;QAC3B,qBAAqB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EACvC;QACA,OAAO,qBAAqB,CAAC;KAC9B;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,sBAAsB,GAAG,eAAe,CAC5C,aAAa,CAAC,IAAI,EAClB,qBAAqB,CAAC,IAAI,EAC1B,cAAc,CACf,CAAC;IAEF,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;QACjE,MAAM,qBAAqB,GAAG,MAAA,sBAAsB,CAAC,KAAK,CAAC,mCAAI;YAC7D,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,qBAAqB,GAAG,uBAAuB,CACnD,aAAa,EACb,qBAAqB,EACrB,SAAS,CACV,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE;YACxC,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpC,eAAe,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;aAChD;YACD,SAAS;SACV;QAED,IAAI,qBAAqB,IAAI,sBAAsB,CAAC,qBAAqB,CAAC,EAAE;YAC1E,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SAC7C;KACF;IAED,uCAAY,qBAAqB,KAAE,IAAI,EAAE,eAAe,IAAG;AAC7D,CAAC;AAOD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,aAA4B,EAC5B,qBAA4C,EAC5C,qBAAoD;;IAEpD,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1D,OAAO,EAAE,CAAC;KACX;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,sBAAsB,GAAG,eAAe,CAC5C,aAAa,CAAC,IAAI,EAClB,MAAA,qBAAqB,CAAC,IAAI,mCAAI,EAAE,EAChC,cAAc,CACf,CAAC;IAEF,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;QACjE,MAAM,qBAAqB,GAAG,MAAA,sBAAsB,CAAC,KAAK,CAAC,mCAAI;YAC7D,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;QAE9E,IAAI,SAAS,EAAE;YACb,cAAc,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SACnC;KACF;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
package/lib/utils/initialise.js
CHANGED
|
@@ -20,6 +20,8 @@ import { getFirstVisiblePage } from './page';
|
|
|
20
20
|
import { assignPopulatedAnswersToEnableWhen } from './enableWhen';
|
|
21
21
|
import { evaluateInitialCalculatedExpressions } from './calculatedExpression';
|
|
22
22
|
import { createQuestionnaireResponseItemMap } from './questionnaireResponseStoreUtils/updatableResponseItems';
|
|
23
|
+
import { readQuestionnaireResponse } from './genericRecursive';
|
|
24
|
+
import { getQrItemsIndex, mapQItemsIndex } from './mapItem';
|
|
23
25
|
/**
|
|
24
26
|
* Initialise a questionnaireResponse from a given questionnaire
|
|
25
27
|
* optionally takes in an existing questionnaireResponse to be initialised
|
|
@@ -39,7 +41,7 @@ export function initialiseQuestionnaireResponse(questionnaire, questionnaireResp
|
|
|
39
41
|
}
|
|
40
42
|
const firstTopLevelItem = (_a = questionnaire === null || questionnaire === void 0 ? void 0 : questionnaire.item) === null || _a === void 0 ? void 0 : _a[0];
|
|
41
43
|
if (firstTopLevelItem && !questionnaireResponse.item) {
|
|
42
|
-
const initialItems =
|
|
44
|
+
const initialItems = readQuestionnaireResponse(questionnaire, questionnaireResponse, readInitialValuesRecursive);
|
|
43
45
|
if (initialItems && initialItems.length > 0) {
|
|
44
46
|
questionnaireResponse.item = initialItems;
|
|
45
47
|
}
|
|
@@ -70,62 +72,60 @@ function createQuestionnaireReference(questionnaire) {
|
|
|
70
72
|
}
|
|
71
73
|
return '';
|
|
72
74
|
}
|
|
73
|
-
function
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const topLevelQrItems = [];
|
|
78
|
-
for (const topLevelQItem of questionnaire.item) {
|
|
79
|
-
const updatedTopLevelQRItem = readItemInitialValueRecursive(topLevelQItem);
|
|
80
|
-
if (Array.isArray(updatedTopLevelQRItem)) {
|
|
81
|
-
if (updatedTopLevelQRItem.length > 0) {
|
|
82
|
-
topLevelQrItems.push(...updatedTopLevelQRItem);
|
|
83
|
-
}
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (updatedTopLevelQRItem) {
|
|
87
|
-
topLevelQrItems.push(updatedTopLevelQRItem);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (topLevelQrItems.length === 0) {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
return topLevelQrItems;
|
|
94
|
-
}
|
|
95
|
-
function readItemInitialValueRecursive(qItem) {
|
|
75
|
+
function readInitialValuesRecursive(qItem, qrItemOrItems) {
|
|
76
|
+
var _a;
|
|
77
|
+
// Process items with child items
|
|
78
|
+
const initialValues = [];
|
|
96
79
|
const childQItems = qItem.item;
|
|
97
80
|
if (childQItems && childQItems.length > 0) {
|
|
98
|
-
//
|
|
81
|
+
// Process repeating group items separately
|
|
99
82
|
if (qItem.type === 'group' && qItem.repeats) {
|
|
100
|
-
const initialItemsFromRepeatGroup = getInitialValueAnswersFromRepeatGroup(qItem);
|
|
101
|
-
|
|
83
|
+
const initialItemsFromRepeatGroup = getInitialValueAnswersFromRepeatGroup(qItem, qrItemOrItems);
|
|
84
|
+
const newRepeatGroupQuestionnaireResponseItem = createNewRepeatGroupQuestionnaireResponseItem(qItem, initialItemsFromRepeatGroup);
|
|
85
|
+
return newRepeatGroupQuestionnaireResponseItem
|
|
86
|
+
? [newRepeatGroupQuestionnaireResponseItem]
|
|
87
|
+
: null;
|
|
102
88
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (Array.isArray(
|
|
107
|
-
|
|
108
|
-
initialQRItems.push(...initialChildQRItemOrItems);
|
|
109
|
-
}
|
|
110
|
-
continue;
|
|
89
|
+
// Map qrItemOrItems into an array of qrItems
|
|
90
|
+
let childQrItems = [];
|
|
91
|
+
if (qrItemOrItems) {
|
|
92
|
+
if (Array.isArray(qrItemOrItems)) {
|
|
93
|
+
childQrItems = qrItemOrItems;
|
|
111
94
|
}
|
|
112
|
-
|
|
113
|
-
|
|
95
|
+
else {
|
|
96
|
+
childQrItems = (_a = qrItemOrItems.item) !== null && _a !== void 0 ? _a : [];
|
|
114
97
|
}
|
|
115
98
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
99
|
+
const indexMap = mapQItemsIndex(qItem);
|
|
100
|
+
const qrItemsByIndex = getQrItemsIndex(childQItems, childQrItems, indexMap);
|
|
101
|
+
for (const [index, childQItem] of childQItems.entries()) {
|
|
102
|
+
const childQRItemOrItems = qrItemsByIndex[index];
|
|
103
|
+
const childInitialValues = readInitialValuesRecursive(childQItem, childQRItemOrItems !== null && childQRItemOrItems !== void 0 ? childQRItemOrItems : null);
|
|
104
|
+
if (childInitialValues) {
|
|
105
|
+
initialValues.push(...childInitialValues);
|
|
123
106
|
}
|
|
124
|
-
qrItem.item = initialQRItems;
|
|
125
107
|
}
|
|
126
|
-
return qrItem;
|
|
127
108
|
}
|
|
128
|
-
|
|
109
|
+
// Create new qrItem for items with initial values
|
|
110
|
+
let qrItem = createNewQuestionnaireResponseItem(qItem, getInitialValueAnswers(qItem));
|
|
111
|
+
if (initialValues.length > 0) {
|
|
112
|
+
if (!qrItem) {
|
|
113
|
+
qrItem = {
|
|
114
|
+
linkId: qItem.linkId,
|
|
115
|
+
text: qItem.text
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
qrItem.item = initialValues;
|
|
119
|
+
}
|
|
120
|
+
return qrItem ? [qrItem] : null;
|
|
121
|
+
}
|
|
122
|
+
function getInitialValueAnswersFromRepeatGroup(qItem, qrItemOrItems) {
|
|
123
|
+
if (!qItem.item) {
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
return qItem.item
|
|
127
|
+
.flatMap((childQItem) => readInitialValuesRecursive(childQItem, qrItemOrItems))
|
|
128
|
+
.filter((childQRItem) => !!childQRItem);
|
|
129
129
|
}
|
|
130
130
|
function getInitialValueAnswers(qItem) {
|
|
131
131
|
// For answerOption.initialSelected
|
|
@@ -161,16 +161,6 @@ function getInitialValueAnswers(qItem) {
|
|
|
161
161
|
.map((initialValue) => parseItemInitialToAnswer(initialValue))
|
|
162
162
|
.filter((item) => item !== null);
|
|
163
163
|
}
|
|
164
|
-
function getInitialValueAnswersFromRepeatGroup(qItem) {
|
|
165
|
-
if (!qItem.item) {
|
|
166
|
-
return [];
|
|
167
|
-
}
|
|
168
|
-
return qItem.item
|
|
169
|
-
.map((childQItem) => {
|
|
170
|
-
return Object.assign(Object.assign({ linkId: childQItem.linkId }, (childQItem.text ? { text: childQItem.text } : {})), { answer: getInitialValueAnswers(childQItem) });
|
|
171
|
-
})
|
|
172
|
-
.filter((childQRItem) => childQRItem.answer && childQRItem.answer.length > 0);
|
|
173
|
-
}
|
|
174
164
|
export function parseItemInitialToAnswer(initial) {
|
|
175
165
|
if (typeof initial.valueBoolean === 'boolean') {
|
|
176
166
|
return { valueBoolean: initial.valueBoolean };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialise.js","sourceRoot":"","sources":["../../src/utils/initialise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAa7C,OAAO,EAAE,kCAAkC,EAAE,MAAM,cAAc,CAAC;AAElE,OAAO,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,kCAAkC,EAAE,MAAM,0DAA0D,CAAC;
|
|
1
|
+
{"version":3,"file":"initialise.js","sourceRoot":"","sources":["../../src/utils/initialise.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getQrItemsIndex, mapQItemsIndex } from './mapItem';
|
|
2
2
|
import { isSpecificItemControl } from './itemControl';
|
|
3
3
|
import { questionnaireResponseStore, questionnaireStore } from '../stores';
|
|
4
|
-
import { updateQuestionnaireResponse } from './
|
|
4
|
+
import { updateQuestionnaireResponse } from './genericRecursive';
|
|
5
5
|
/**
|
|
6
6
|
* Re-populate checked items in the re-population dialog into the current QuestionnaireResponse
|
|
7
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repopulateIntoResponse.js","sourceRoot":"","sources":["../../src/utils/repopulateIntoResponse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"repopulateIntoResponse.js","sourceRoot":"","sources":["../../src/utils/repopulateIntoResponse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,wBAA0D;IAC3F,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAC;IAC9E,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,QAAQ,EAAE,CAAC,iBAAiB,CAAC;IAElF,OAAO,2BAA2B,CAChC,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAwB,EACxB,aAA6E,EAC7E,wBAA0D;;IAE1D,oBAAoB;IACpB,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,IAAI,kBAAkB,EAAE;QACtB,OAAO,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAC;KAC7E;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QACzC,MAAM,YAAY,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,mCAAI,EAAE,CAAC;QAE/C,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE5E,kBAAkB;QAClB,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,UAAU,EAAE;YACd,OAAO,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAC;SAC3E;QAED,kCAAkC;QAClC,MAAM,cAAc,GAAgC,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,kBAAkB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAEjD,MAAM,yBAAyB,GAAG,uBAAuB,CACvD,UAAU,EACV,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,IAAI,EAC1B,wBAAwB,CACzB,CAAC;YAEF,IAAI,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE;gBAC5C,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxC,cAAc,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,CAAC;iBACnD;gBACD,SAAS;aACV;YAED,IAAI,yBAAyB,EAAE;gBAC7B,cAAc,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;aAChD;SACF;QAED,OAAO,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,wBAAwB,CAAC,CAAC;KAC3F;IAED,OAAO,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAwB,EACxB,aAA6E,EAC7E,YAAyC,EACzC,wBAA0D;IAE1D,qBAAqB;IACrB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC1B,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC;gBACE,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,YAAY;aACnB;YACH,CAAC,CAAC,IAAI,CAAC;KACV;IAED,0DAA0D;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IAED,gEAAgE;IAChE,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,gBAAgB,EAAE;QACrB,IAAI,aAAa,EAAE;YACjB,OAAO;gBACL,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,aAAa,CAAC,MAAM;aAC7B,CAAC;SACH;QACD,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAwB,EACxB,MAAwC,EACxC,wBAA0D;IAE1D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC,gBAAgB,EAAE;QACrB,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC;KACvB;IAED,IAAI,MAAM,IAAI,gBAAgB,CAAC,SAAS,EAAE;QACxC,uCACK,MAAM,KACT,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM,IACzC;KACH;IAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAwB,EACxB,MAAwC,EACxC,wBAA0D;IAE1D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;QACpD,OAAO,MAAM,CAAC;KACf;IAED,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC;IAE5D,IAAI,CAAC,mBAAmB,EAAE;QACxB,OAAO,MAAM,CAAC;KACf;IAED,MAAM,UAAU,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC;IAEhC,IAAI,CAAC,UAAU,EAAE;QACf,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,mBAAmB;SAC1B,CAAC;KACH;IAED,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,MAAM,CACvD,CAAC,OAAkD,EAAE,IAAI,EAAE,EAAE;QAC3D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACtD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEpE,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO,SAAS,CAAC;SAClB;QAED,uCACK,SAAS,KACZ,IAAI,EAAE,kBAAkB,CAAC,IAAI,IAC7B;IACJ,CAAC,CAAC,CAAC;IAEH,uCAAY,MAAM,KAAE,IAAI,EAAE,kBAAkB,IAAG;AACjD,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAwB,EACxB,OAAoC,EACpC,wBAA0D;IAE1D,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;QACrD,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,gBAAgB,CAAC,UAAU,CAAC;AACrC,CAAC"}
|
package/package.json
CHANGED
|
@@ -76,6 +76,7 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
|
|
|
76
76
|
qItem={qItem}
|
|
77
77
|
qrItems={qrItems}
|
|
78
78
|
groupCardElevation={groupCardElevation + 1}
|
|
79
|
+
isRepeated={true}
|
|
79
80
|
parentIsReadOnly={parentIsReadOnly}
|
|
80
81
|
onQrRepeatGroupChange={onQrRepeatGroupChange}
|
|
81
82
|
/>
|
|
@@ -119,6 +120,7 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
|
|
|
119
120
|
qItem={qItem}
|
|
120
121
|
qrItems={[]}
|
|
121
122
|
groupCardElevation={groupCardElevation + 1}
|
|
123
|
+
isRepeated={true}
|
|
122
124
|
parentIsReadOnly={parentIsReadOnly}
|
|
123
125
|
onQrRepeatGroupChange={onQrRepeatGroupChange}
|
|
124
126
|
/>
|
|
@@ -149,6 +151,20 @@ function GroupItemSwitcher(props: GroupItemSwitcherProps) {
|
|
|
149
151
|
|
|
150
152
|
// if qItem is not a repeating question or is a checkbox
|
|
151
153
|
if (qItem.type === 'group') {
|
|
154
|
+
// GroupTable "gtable" can be rendered with either repeats:true or false
|
|
155
|
+
if (isSpecificItemControl(qItem, 'gtable')) {
|
|
156
|
+
return (
|
|
157
|
+
<GroupTable
|
|
158
|
+
qItem={qItem}
|
|
159
|
+
qrItems={qrItem ? [qrItem] : []}
|
|
160
|
+
groupCardElevation={groupCardElevation + 1}
|
|
161
|
+
isRepeated={false}
|
|
162
|
+
parentIsReadOnly={parentIsReadOnly}
|
|
163
|
+
onQrRepeatGroupChange={onQrRepeatGroupChange}
|
|
164
|
+
/>
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
152
168
|
return (
|
|
153
169
|
<GroupItem
|
|
154
170
|
qItem={qItem}
|
|
@@ -20,6 +20,7 @@ import React, { useMemo } from 'react';
|
|
|
20
20
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
21
21
|
import { mapQItemsIndex } from '../../../utils/mapItem';
|
|
22
22
|
import type {
|
|
23
|
+
PropsWithIsRepeatedAttribute,
|
|
23
24
|
PropsWithParentIsReadOnlyAttribute,
|
|
24
25
|
PropsWithQrRepeatGroupChangeHandler,
|
|
25
26
|
PropsWithShowMinimalViewAttribute
|
|
@@ -34,6 +35,7 @@ import { flushSync } from 'react-dom';
|
|
|
34
35
|
|
|
35
36
|
interface GroupTableProps
|
|
36
37
|
extends PropsWithQrRepeatGroupChangeHandler,
|
|
38
|
+
PropsWithIsRepeatedAttribute,
|
|
37
39
|
PropsWithShowMinimalViewAttribute,
|
|
38
40
|
PropsWithParentIsReadOnlyAttribute {
|
|
39
41
|
qItem: QuestionnaireItem;
|
|
@@ -52,6 +54,7 @@ function GroupTable(props: GroupTableProps) {
|
|
|
52
54
|
qItem,
|
|
53
55
|
qrItems,
|
|
54
56
|
groupCardElevation,
|
|
57
|
+
isRepeated,
|
|
55
58
|
showMinimalView,
|
|
56
59
|
parentIsReadOnly,
|
|
57
60
|
onQrRepeatGroupChange
|
|
@@ -166,6 +169,7 @@ function GroupTable(props: GroupTableProps) {
|
|
|
166
169
|
qItem={qItem}
|
|
167
170
|
qItemsIndexMap={qItemsIndexMap}
|
|
168
171
|
groupCardElevation={groupCardElevation}
|
|
172
|
+
isRepeated={isRepeated}
|
|
169
173
|
readOnly={readOnly}
|
|
170
174
|
tableRows={tableRows}
|
|
171
175
|
selectedIds={selectedIds}
|
|
@@ -20,6 +20,7 @@ import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
|
20
20
|
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
21
21
|
import type { GroupTableRowModel } from '../../../interfaces/groupTable.interface';
|
|
22
22
|
import type {
|
|
23
|
+
PropsWithIsRepeatedAttribute,
|
|
23
24
|
PropsWithParentIsReadOnlyAttribute,
|
|
24
25
|
PropsWithShowMinimalViewAttribute
|
|
25
26
|
} from '../../../interfaces/renderProps.interface';
|
|
@@ -30,7 +31,8 @@ import { reorderRows } from '../../../utils/groupTable';
|
|
|
30
31
|
import TableBody from '@mui/material/TableBody';
|
|
31
32
|
|
|
32
33
|
interface GroupTableBodyProps
|
|
33
|
-
extends
|
|
34
|
+
extends PropsWithIsRepeatedAttribute,
|
|
35
|
+
PropsWithParentIsReadOnlyAttribute,
|
|
34
36
|
PropsWithShowMinimalViewAttribute {
|
|
35
37
|
tableQItem: QuestionnaireItem;
|
|
36
38
|
readOnly: boolean;
|
|
@@ -50,6 +52,7 @@ function GroupTableBody(props: GroupTableBodyProps) {
|
|
|
50
52
|
tableRows,
|
|
51
53
|
selectedIds,
|
|
52
54
|
qItemsIndexMap,
|
|
55
|
+
isRepeated,
|
|
53
56
|
showMinimalView,
|
|
54
57
|
parentIsReadOnly,
|
|
55
58
|
onRowChange,
|
|
@@ -93,6 +96,7 @@ function GroupTableBody(props: GroupTableBodyProps) {
|
|
|
93
96
|
answeredQrItem={answeredQrItem}
|
|
94
97
|
nullableQrItem={nullableQrItem}
|
|
95
98
|
readOnly={readOnly}
|
|
99
|
+
isRepeated={isRepeated}
|
|
96
100
|
hoverDisabled={snapshot.isDraggingOver}
|
|
97
101
|
tableRows={tableRows}
|
|
98
102
|
itemIsSelected={itemIsSelected}
|