@aehrc/smart-forms-renderer 1.0.0-alpha.86 → 1.0.0-alpha.87
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/GridGroup/GridGroup.js +20 -5
- package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
- package/lib/components/FormComponents/Textfield.styles.d.ts +3 -0
- package/lib/components/FormComponents/Textfield.styles.js +4 -2
- package/lib/components/FormComponents/Textfield.styles.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +4 -4
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FormComponents/GridGroup/GridGroup.tsx +34 -3
- package/src/components/FormComponents/Textfield.styles.ts +4 -2
|
@@ -25,10 +25,11 @@ import TableContainer from '@mui/material/TableContainer';
|
|
|
25
25
|
import { mapQItemsIndex } from '../../../utils/mapItem';
|
|
26
26
|
import GridTable from './GridTable';
|
|
27
27
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
28
|
-
import { useQuestionnaireStore } from '../../../stores';
|
|
28
|
+
import { useQuestionnaireStore, useRendererStylingStore } from '../../../stores';
|
|
29
29
|
import GroupHeading from '../GroupItem/GroupHeading';
|
|
30
30
|
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
31
31
|
import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
|
|
32
|
+
import { isItemHidden } from '../../../utils/qItem';
|
|
32
33
|
/**
|
|
33
34
|
* Main component to render a Group Grid (grid) Questionnaire item.
|
|
34
35
|
* @see {@link https://hl7.org/fhir/extensions/CodeSystem-questionnaire-item-control.html}
|
|
@@ -37,22 +38,36 @@ import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
|
|
|
37
38
|
*/
|
|
38
39
|
function GridGroup(props) {
|
|
39
40
|
const { qItem, qrItem, itemPath, groupCardElevation, parentIsReadOnly, parentStyles, onQrItemChange } = props;
|
|
41
|
+
const enableWhenIsActivated = useQuestionnaireStore.use.enableWhenIsActivated();
|
|
42
|
+
const enableWhenItems = useQuestionnaireStore.use.enableWhenItems();
|
|
43
|
+
const enableWhenExpressions = useQuestionnaireStore.use.enableWhenExpressions();
|
|
44
|
+
const enableWhenAsReadOnly = useRendererStylingStore.use.enableWhenAsReadOnly();
|
|
40
45
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
41
46
|
const qRowItems = qItem.item;
|
|
42
47
|
const qrGroup = qrItem && qrItem.item ? qrItem : createEmptyQrGroup(qItem);
|
|
43
48
|
const qrRowItems = qrGroup.item;
|
|
44
49
|
const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);
|
|
50
|
+
// Prepare visible first-row items. we use useMemo because we are using it inside useMemo later.
|
|
51
|
+
const firstRowItems = useMemo(() => { var _a, _b; return (_b = (_a = qRowItems === null || qRowItems === void 0 ? void 0 : qRowItems[0]) === null || _a === void 0 ? void 0 : _a.item) !== null && _b !== void 0 ? _b : []; }, [qRowItems]);
|
|
52
|
+
// Get the items and ignore hidden columns as they are automatically added to the columnHeaders as empty space.
|
|
53
|
+
const visibleColumnItems = useMemo(() => firstRowItems === null || firstRowItems === void 0 ? void 0 : firstRowItems.filter((item) => !isItemHidden(item, enableWhenIsActivated, enableWhenItems, enableWhenExpressions, enableWhenAsReadOnly)), [
|
|
54
|
+
enableWhenAsReadOnly,
|
|
55
|
+
enableWhenExpressions,
|
|
56
|
+
enableWhenIsActivated,
|
|
57
|
+
enableWhenItems,
|
|
58
|
+
firstRowItems
|
|
59
|
+
]);
|
|
45
60
|
// Get column headers from first row item.text
|
|
46
61
|
const columnHeaders = useMemo(() => {
|
|
47
|
-
var _a
|
|
48
|
-
return (
|
|
62
|
+
var _a;
|
|
63
|
+
return (_a = visibleColumnItems.map((firstItem) => {
|
|
49
64
|
var _a, _b;
|
|
50
65
|
return ({
|
|
51
66
|
label: (_a = getItemTextToDisplay(firstItem)) !== null && _a !== void 0 ? _a : ' ',
|
|
52
67
|
styleString: (_b = structuredDataCapture.getStyle(firstItem._text)) !== null && _b !== void 0 ? _b : null
|
|
53
68
|
});
|
|
54
|
-
})) !== null &&
|
|
55
|
-
}, [
|
|
69
|
+
})) !== null && _a !== void 0 ? _a : [];
|
|
70
|
+
}, [visibleColumnItems]);
|
|
56
71
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
57
72
|
const itemIsHidden = useHidden(qItem);
|
|
58
73
|
if (itemIsHidden) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridGroup.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/GridGroup/GridGroup.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAQvC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"GridGroup.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/GridGroup/GridGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Always use this with the TextField `fullWidth` prop to ensure proper layout and alignment.
|
|
3
|
+
*/
|
|
1
4
|
export declare const StandardTextField: import("@emotion/styled").StyledComponent<{
|
|
2
5
|
variant?: import("@mui/material/TextField").TextFieldVariants | undefined;
|
|
3
6
|
} & Omit<import("@mui/material/TextField").FilledTextFieldProps | import("@mui/material/TextField").OutlinedTextFieldProps | import("@mui/material/TextField").StandardTextFieldProps, "variant"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
|
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import { styled } from '@mui/material/styles';
|
|
18
|
-
import TextField from '@mui/material/TextField';
|
|
19
|
-
|
|
18
|
+
import TextField from '@mui/material/TextField';
|
|
19
|
+
/**
|
|
20
|
+
* Always use this with the TextField `fullWidth` prop to ensure proper layout and alignment.
|
|
21
|
+
*/
|
|
20
22
|
export const StandardTextField = styled(TextField, {
|
|
21
23
|
shouldForwardProp: (prop) => prop !== 'isTabled' && prop !== 'textFieldWidth'
|
|
22
24
|
})(({ isTabled, textFieldWidth }) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textfield.styles.js","sourceRoot":"","sources":["../../../src/components/FormComponents/Textfield.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,SAAS,MAAM,yBAAyB,CAAC
|
|
1
|
+
{"version":3,"file":"Textfield.styles.js","sourceRoot":"","sources":["../../../src/components/FormComponents/Textfield.styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,EAAE;IACjD,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,gBAAgB;CAC9E,CAAC,CAAgD,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;IACnF,iGAAiG;IACjG,8FAA8F;IAC9F,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;IAC3C,QAAQ,EAAE,GAAG;IACb,sBAAsB,EAAE;QACtB,OAAO,EAAE,CAAC;KACX;IACD,gCAAgC,EAAE;QAChC,OAAO,EAAE,YAAY,EAAE,0BAA0B;QACjD,UAAU,EAAE,OAAO;KACpB;IACD,iEAAiE;IACjE,uCAAuC,EAAE;QACvC,MAAM,EAAE,SAAS;QACjB,uBAAuB,EAAE;YACvB,MAAM,EAAE,SAAS;SAClB;KACF;IACD,0BAA0B,EAAE;QAC1B,YAAY,EAAE,CAAC,CAAC,6BAA6B;KAC9C;IACD,qCAAqC,EAAE;QACrC,6GAA6G;QAC7G,UAAU,EAAE,QAAQ;KACrB;IACD,kEAAkE,EAAE;QAClE,UAAU,EAAE,SAAS;KACtB;IACD,wEAAwE,EAAE;QACxE,UAAU,EAAE,SAAS;KACtB;CACF,CAAC,CAAC,CAAC"}
|
|
@@ -30,7 +30,7 @@ import { extractPages } from './extractPages';
|
|
|
30
30
|
import { extractContainedValueSets } from './extractContainedValueSets';
|
|
31
31
|
import { extractOtherExtensions } from './extractOtherExtensions';
|
|
32
32
|
import { resolveValueSets } from './resolveValueSets';
|
|
33
|
-
import {
|
|
33
|
+
import { getLinkIdPreferredTerminologyServerTuples, getLinkIdTypeTuples } from '../qItem';
|
|
34
34
|
import { addDisplayToAnswerOptions, addDisplayToCacheCodings } from './addDisplayToCodings';
|
|
35
35
|
import { extractTargetConstraints } from './extractTargetConstraint';
|
|
36
36
|
export function createQuestionnaireModel(questionnaire, terminologyServerUrl) {
|
|
@@ -38,7 +38,7 @@ export function createQuestionnaireModel(questionnaire, terminologyServerUrl) {
|
|
|
38
38
|
if (!questionnaire.item) {
|
|
39
39
|
return createEmptyModel();
|
|
40
40
|
}
|
|
41
|
-
const
|
|
41
|
+
const itemTypes = Object.fromEntries(getLinkIdTypeTuples(questionnaire));
|
|
42
42
|
const itemPreferredTerminologyServers = Object.fromEntries(getLinkIdPreferredTerminologyServerTuples(questionnaire));
|
|
43
43
|
const tabs = extractTabs(questionnaire);
|
|
44
44
|
const pages = extractPages(questionnaire);
|
|
@@ -68,7 +68,7 @@ export function createQuestionnaireModel(questionnaire, terminologyServerUrl) {
|
|
|
68
68
|
// In answerOptions, add display values to codings lacking them
|
|
69
69
|
const completeAnswerOptions = yield addDisplayToAnswerOptions(answerOptions, terminologyServerUrl);
|
|
70
70
|
return {
|
|
71
|
-
|
|
71
|
+
itemTypes,
|
|
72
72
|
itemPreferredTerminologyServers,
|
|
73
73
|
tabs,
|
|
74
74
|
pages,
|
|
@@ -91,7 +91,7 @@ export function createQuestionnaireModel(questionnaire, terminologyServerUrl) {
|
|
|
91
91
|
}
|
|
92
92
|
function createEmptyModel() {
|
|
93
93
|
return {
|
|
94
|
-
|
|
94
|
+
itemTypes: {},
|
|
95
95
|
itemPreferredTerminologyServers: {},
|
|
96
96
|
tabs: {},
|
|
97
97
|
pages: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAOH,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,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,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,
|
|
1
|
+
{"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -32,11 +32,12 @@ import TableContainer from '@mui/material/TableContainer';
|
|
|
32
32
|
import { mapQItemsIndex } from '../../../utils/mapItem';
|
|
33
33
|
import GridTable from './GridTable';
|
|
34
34
|
import useReadOnly from '../../../hooks/useReadOnly';
|
|
35
|
-
import { useQuestionnaireStore } from '../../../stores';
|
|
35
|
+
import { useQuestionnaireStore, useRendererStylingStore } from '../../../stores';
|
|
36
36
|
import GroupHeading from '../GroupItem/GroupHeading';
|
|
37
37
|
import type { ItemPath } from '../../../interfaces/itemPath.interface';
|
|
38
38
|
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
39
39
|
import { getItemTextToDisplay } from '../../../utils/itemTextToDisplay';
|
|
40
|
+
import { isItemHidden } from '../../../utils/qItem';
|
|
40
41
|
|
|
41
42
|
interface GridGroupProps
|
|
42
43
|
extends PropsWithQrItemChangeHandler,
|
|
@@ -65,6 +66,11 @@ function GridGroup(props: GridGroupProps) {
|
|
|
65
66
|
onQrItemChange
|
|
66
67
|
} = props;
|
|
67
68
|
|
|
69
|
+
const enableWhenIsActivated = useQuestionnaireStore.use.enableWhenIsActivated();
|
|
70
|
+
const enableWhenItems = useQuestionnaireStore.use.enableWhenItems();
|
|
71
|
+
const enableWhenExpressions = useQuestionnaireStore.use.enableWhenExpressions();
|
|
72
|
+
const enableWhenAsReadOnly = useRendererStylingStore.use.enableWhenAsReadOnly();
|
|
73
|
+
|
|
68
74
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
69
75
|
|
|
70
76
|
const qRowItems = qItem.item;
|
|
@@ -73,17 +79,42 @@ function GridGroup(props: GridGroupProps) {
|
|
|
73
79
|
|
|
74
80
|
const qItemsIndexMap = useMemo(() => mapQItemsIndex(qItem), [qItem]);
|
|
75
81
|
|
|
82
|
+
// Prepare visible first-row items. we use useMemo because we are using it inside useMemo later.
|
|
83
|
+
const firstRowItems: QuestionnaireItem[] = useMemo(() => qRowItems?.[0]?.item ?? [], [qRowItems]);
|
|
84
|
+
|
|
85
|
+
// Get the items and ignore hidden columns as they are automatically added to the columnHeaders as empty space.
|
|
86
|
+
const visibleColumnItems: QuestionnaireItem[] = useMemo(
|
|
87
|
+
() =>
|
|
88
|
+
firstRowItems?.filter(
|
|
89
|
+
(item) =>
|
|
90
|
+
!isItemHidden(
|
|
91
|
+
item,
|
|
92
|
+
enableWhenIsActivated,
|
|
93
|
+
enableWhenItems,
|
|
94
|
+
enableWhenExpressions,
|
|
95
|
+
enableWhenAsReadOnly
|
|
96
|
+
)
|
|
97
|
+
),
|
|
98
|
+
[
|
|
99
|
+
enableWhenAsReadOnly,
|
|
100
|
+
enableWhenExpressions,
|
|
101
|
+
enableWhenIsActivated,
|
|
102
|
+
enableWhenItems,
|
|
103
|
+
firstRowItems
|
|
104
|
+
]
|
|
105
|
+
);
|
|
106
|
+
|
|
76
107
|
// Get column headers from first row item.text
|
|
77
108
|
const columnHeaders: {
|
|
78
109
|
label: string;
|
|
79
110
|
styleString: string | null;
|
|
80
111
|
}[] = useMemo(
|
|
81
112
|
() =>
|
|
82
|
-
|
|
113
|
+
visibleColumnItems.map((firstItem) => ({
|
|
83
114
|
label: getItemTextToDisplay(firstItem) ?? ' ',
|
|
84
115
|
styleString: structuredDataCapture.getStyle(firstItem._text) ?? null
|
|
85
116
|
})) ?? [],
|
|
86
|
-
[
|
|
117
|
+
[visibleColumnItems]
|
|
87
118
|
);
|
|
88
119
|
|
|
89
120
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
@@ -16,9 +16,11 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import { styled } from '@mui/material/styles';
|
|
19
|
-
import TextField from '@mui/material/TextField';
|
|
19
|
+
import TextField from '@mui/material/TextField';
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Always use this with the TextField `fullWidth` prop to ensure proper layout and alignment.
|
|
23
|
+
*/
|
|
22
24
|
export const StandardTextField = styled(TextField, {
|
|
23
25
|
shouldForwardProp: (prop) => prop !== 'isTabled' && prop !== 'textFieldWidth'
|
|
24
26
|
})<{ isTabled: boolean; textFieldWidth: number }>(({ isTabled, textFieldWidth }) => ({
|