@truedat/df 8.7.0 → 8.7.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/package.json +4 -4
- package/src/components/DynamicFormViewer.js +3 -3
- package/src/components/DynamicFormWithTranslations.js +4 -4
- package/src/components/FieldGroupDetail.js +1 -1
- package/src/components/FieldGroupWithTranslations.js +1 -1
- package/src/components/SelectableDynamicForm.js +1 -1
- package/src/components/__tests__/DynamicFieldValue.spec.js +2 -2
- package/src/components/__tests__/DynamicFormViewer.spec.js +7 -7
- package/src/components/__tests__/EditableDynamicFieldValue.spec.js +1 -1
- package/src/components/__tests__/FieldViewerValue.spec.js +12 -12
- package/src/components/__tests__/SelectDynamicFormWithTranslations.spec.js +1 -1
- package/src/components/__tests__/SelectableDynamicForm.spec.js +16 -12
- package/src/components/hierarchies/HierarchyView.js +9 -9
- package/src/components/hierarchies/__tests__/HierarchyRoutes.spec.js +1 -1
- package/src/components/widgets/DropdownDataLoader.js +1 -1
- package/src/components/widgets/DynamicField.js +5 -5
- package/src/components/widgets/DynamicTableField.js +129 -125
- package/src/components/widgets/GroupPreview.js +2 -2
- package/src/components/widgets/HierarchyPreview.js +1 -1
- package/src/components/widgets/ImageField.js +2 -3
- package/src/components/widgets/MarkdownField.js +0 -1
- package/src/components/widgets/StandardDropdown.js +5 -5
- package/src/components/widgets/StringField.js +1 -4
- package/src/components/widgets/TableField.js +1 -1
- package/src/components/widgets/UserGroupPreview.js +1 -1
- package/src/components/widgets/__tests__/CheckboxField.spec.js +2 -2
- package/src/components/widgets/__tests__/DropdownField.spec.js +2 -2
- package/src/components/widgets/__tests__/DynamicField.spec.js +11 -3
- package/src/components/widgets/__tests__/DynamicTableField.spec.js +237 -237
- package/src/components/widgets/__tests__/GroupPreview.spec.js +11 -11
- package/src/components/widgets/__tests__/HierarchyDropdown.spec.js +3 -3
- package/src/components/widgets/__tests__/NumberField.spec.js +1 -1
- package/src/components/widgets/__tests__/PairListField.spec.js +3 -3
- package/src/components/widgets/__tests__/StandardDropdown.spec.js +1 -1
- package/src/components/widgets/__tests__/UserGroupPreview.spec.js +14 -10
- package/src/messages/index.js +1 -1
- package/src/reducers/__tests__/dfMessage.spec.js +5 -5
- package/src/reducers/__tests__/selectedDomain.spec.js +2 -2
- package/src/reducers/__tests__/selectedDomains.spec.js +2 -2
- package/src/reducers/dfMessage.js +4 -4
- package/src/selectors/getOptions.js +2 -2
- package/src/selectors/templates.js +2 -2
- package/src/templates/components/Template.js +2 -2
- package/src/templates/components/TemplateFilters.js +1 -1
- package/src/templates/components/TemplateLoader.js +1 -1
- package/src/templates/components/TemplateRoutes.js +1 -1
- package/src/templates/components/Templates.js +1 -6
- package/src/templates/components/TemplatesContext.js +3 -3
- package/src/templates/components/TemplatesTable.js +1 -1
- package/src/templates/components/__tests__/TemplateLoader.spec.js +2 -2
- package/src/templates/components/__tests__/TemplateRoutes.spec.js +1 -1
- package/src/templates/components/__tests__/TemplatesTable.spec.js +1 -1
- package/src/templates/components/templateForm/ActiveGroupForm.js +3 -3
- package/src/templates/components/templateForm/ConditionalFieldForm.js +3 -3
- package/src/templates/components/templateForm/DependentDomain.js +3 -3
- package/src/templates/components/templateForm/FieldDefinition.js +126 -129
- package/src/templates/components/templateForm/HierarchiesList.js +1 -1
- package/src/templates/components/templateForm/MandatoryConditional.js +2 -2
- package/src/templates/components/templateForm/TemplateForm.js +46 -41
- package/src/templates/components/templateForm/ValuesConfiguration.js +69 -56
- package/src/templates/components/templateForm/ValuesField.js +43 -43
- package/src/templates/components/templateForm/__tests__/DefaultValue.spec.js +35 -35
- package/src/templates/components/templateForm/__tests__/DependentDomain.spec.js +1 -1
- package/src/templates/components/templateForm/__tests__/FieldDefinition.spec.js +227 -201
- package/src/templates/components/templateForm/__tests__/FieldForm.spec.js +12 -10
- package/src/templates/components/templateForm/__tests__/MandatoryConditional.spec.js +3 -3
- package/src/templates/components/templateForm/__tests__/SwitchListForm.spec.js +5 -5
- package/src/templates/components/templateForm/__tests__/SwitchSegment.spec.js +8 -8
- package/src/templates/components/templateForm/__tests__/TableValuesForm.spec.js +207 -189
- package/src/templates/components/templateForm/__tests__/TemplateForm.spec.js +42 -13
- package/src/templates/components/templateForm/__tests__/TemplateFormActions.spec.js +1 -1
- package/src/templates/components/templateForm/__tests__/TemplateRelationsForm.spec.js +3 -1
- package/src/templates/components/templateForm/__tests__/ValuesField.spec.js +6 -6
- package/src/templates/components/templateForm/__tests__/ValuesListForm.spec.js +4 -4
- package/src/templates/components/templateForm/__tests__/ValuesSelector.spec.js +3 -3
- package/src/templates/components/templateForm/widgetDefinitions.js +2 -0
- package/src/templates/reducers/__tests__/allTemplates.spec.js +4 -4
- package/src/templates/reducers/__tests__/selectedTemplate.spec.js +2 -2
- package/src/templates/reducers/__tests__/template.spec.js +4 -4
- package/src/templates/reducers/__tests__/templateDeleting.spec.js +2 -2
- package/src/templates/reducers/__tests__/templateLoading.spec.js +2 -2
- package/src/templates/reducers/__tests__/templates.spec.js +3 -3
- package/src/templates/reducers/__tests__/templatesLoading.spec.js +2 -2
- package/src/templates/sagas/__tests__/createTemplate.spec.js +3 -3
- package/src/templates/sagas/__tests__/fetchTemplates.spec.js +1 -1
- package/src/templates/sagas/index.js +2 -2
- package/src/templates/utils/__tests__/applyDefaults.spec.js +4 -4
- package/src/templates/utils/__tests__/filterDomains.spec.js +15 -15
- package/src/templates/utils/__tests__/filterFields.spec.js +2 -2
- package/src/templates/utils/__tests__/filterSwitches.spec.js +5 -5
- package/src/templates/utils/__tests__/filterValues.spec.js +4 -4
- package/src/templates/utils/__tests__/formatLegacyContent.spec.js +7 -7
- package/src/templates/utils/applyTemplate.js +66 -53
- package/src/templates/utils/filterDepends.js +1 -1
- package/src/templates/utils/filterSwitches.js +3 -3
- package/src/templates/utils/filterValues.js +4 -5
- package/src/templates/utils/flattenFields.js +2 -2
- package/src/templates/utils/formatLegacyContent.js +2 -1
- package/src/templates/utils/parseFieldOptions.js +15 -14
- package/src/templates/utils/parseGroups.js +43 -43
- package/src/templates/utils/validateContent.js +4 -4
|
@@ -7,144 +7,148 @@ import { useIntl } from "react-intl";
|
|
|
7
7
|
const FieldByWidget = lazy(() => import("./FieldByWidget"));
|
|
8
8
|
|
|
9
9
|
export const DynamicTableField = ({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
field: { name, value: fieldValue = [], values },
|
|
11
|
+
onChange,
|
|
12
|
+
scope,
|
|
13
13
|
}) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
const value = fieldValue || [];
|
|
15
|
+
const table_columns = _.get("table_columns")(values) || [];
|
|
16
|
+
const { formatMessage } = useIntl();
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
const handleAddRow = (e) => {
|
|
19
|
+
e && e.preventDefault();
|
|
20
|
+
onChange(e, {
|
|
21
|
+
name,
|
|
22
|
+
value: [...value, {}],
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
const handleRemoveRow = (e, id) => {
|
|
27
|
+
e && e.preventDefault();
|
|
28
|
+
const newValue = [...value];
|
|
29
|
+
newValue.splice(id, 1);
|
|
30
|
+
onChange(e, { name, value: newValue });
|
|
31
|
+
};
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
};
|
|
39
|
-
onChange(e, {
|
|
40
|
-
name,
|
|
41
|
-
value: currentValue.map((newElem, i) => (i == idx ? input : newElem)),
|
|
42
|
-
});
|
|
33
|
+
const handleChange = (idx, e, data) => {
|
|
34
|
+
const currentValue = removeDeletedColumns(table_columns, [...value]);
|
|
35
|
+
const input = {
|
|
36
|
+
...currentValue[idx],
|
|
37
|
+
[data.name]: { origin: "user", value: data.value },
|
|
43
38
|
};
|
|
39
|
+
onChange(e, {
|
|
40
|
+
name,
|
|
41
|
+
value: currentValue.map((newElem, i) => (i == idx ? input : newElem)),
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
const removeDeletedColumns = (table_columns, content) => {
|
|
46
|
+
const columns_name = _.map((column) => column.name)(table_columns);
|
|
47
|
+
return content.map((row) => {
|
|
48
|
+
const field_deleted = _.keys(row).filter(
|
|
49
|
+
(x) => !columns_name.includes(x),
|
|
50
|
+
);
|
|
51
|
+
return _.omit(field_deleted)(row);
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
});
|
|
55
|
+
const rows = value.map((row) => {
|
|
56
|
+
return table_columns.map((field) => {
|
|
57
|
+
return { ...field, value: row[field.name]?.value };
|
|
59
58
|
});
|
|
59
|
+
});
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
61
|
+
const requiredErrors = _.flow(
|
|
62
|
+
_.flatten,
|
|
63
|
+
_.filter(_.prop("required")),
|
|
64
|
+
_.groupBy("name"),
|
|
65
|
+
_.toPairs,
|
|
66
|
+
_.map(([key, values]) => [
|
|
67
|
+
key,
|
|
68
|
+
_.any((value) => _.isEmpty(value?.value))(values),
|
|
69
|
+
]),
|
|
70
|
+
_.fromPairs,
|
|
71
|
+
)(rows);
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
73
|
+
return (
|
|
74
|
+
<Table celled className="no_padding">
|
|
75
|
+
<Table.Header>
|
|
76
|
+
<Table.Row>
|
|
77
|
+
{table_columns.map((v, i) => (
|
|
78
|
+
<Table.HeaderCell key={i}>
|
|
79
|
+
{v.name}
|
|
80
|
+
{["+", "1"].includes(v.cardinality) && (
|
|
81
|
+
<span className="is_required">*</span>
|
|
82
|
+
)}
|
|
83
|
+
{requiredErrors[v.name] && (
|
|
84
|
+
<Label pointing="left">
|
|
85
|
+
{formatMessage({
|
|
86
|
+
id: "template.form.validation.empty_required",
|
|
87
|
+
})}
|
|
88
|
+
</Label>
|
|
89
|
+
)}
|
|
90
|
+
</Table.HeaderCell>
|
|
91
|
+
))}
|
|
92
|
+
<Table.HeaderCell />
|
|
93
|
+
</Table.Row>
|
|
94
|
+
</Table.Header>
|
|
95
|
+
<Table.Body>
|
|
96
|
+
{rows.map((row, i) => (
|
|
97
|
+
<Table.Row key={i}>
|
|
98
|
+
{row.map((field, k) => (
|
|
99
|
+
<Table.Cell key={k} width={5}>
|
|
100
|
+
<FieldByWidget
|
|
101
|
+
field={field}
|
|
102
|
+
widget={field.widget}
|
|
103
|
+
onChange={(e, data) => handleChange(i, e, data)}
|
|
104
|
+
scope={scope}
|
|
105
|
+
/>
|
|
106
|
+
</Table.Cell>
|
|
107
|
+
))}
|
|
108
|
+
<Table.Cell
|
|
109
|
+
style={{ textAlign: "center", padding: "1px" }}
|
|
110
|
+
width={1}
|
|
111
|
+
>
|
|
112
|
+
<Button
|
|
113
|
+
icon={
|
|
114
|
+
<Icon
|
|
115
|
+
className="selectable"
|
|
116
|
+
name="trash alternate outline"
|
|
117
|
+
color="red"
|
|
118
|
+
onClick={(e) => handleRemoveRow(e, i)}
|
|
119
|
+
/>
|
|
120
|
+
}
|
|
121
|
+
color="red"
|
|
122
|
+
size="mini"
|
|
123
|
+
basic
|
|
124
|
+
/>
|
|
125
|
+
</Table.Cell>
|
|
126
|
+
</Table.Row>
|
|
127
|
+
))}
|
|
128
|
+
</Table.Body>
|
|
129
|
+
<Table.Footer>
|
|
130
|
+
<Table.Row>
|
|
131
|
+
<Table.HeaderCell colSpan={`${table_columns.length + 1}`}>
|
|
132
|
+
<Button
|
|
133
|
+
compact
|
|
134
|
+
data-testid="add-button"
|
|
135
|
+
floated="right"
|
|
136
|
+
icon={{ name: "add", color: "green" }}
|
|
137
|
+
name="add_button"
|
|
138
|
+
onClick={handleAddRow}
|
|
139
|
+
size="small"
|
|
140
|
+
/>
|
|
141
|
+
</Table.HeaderCell>
|
|
142
|
+
</Table.Row>
|
|
143
|
+
</Table.Footer>
|
|
144
|
+
</Table>
|
|
145
|
+
);
|
|
142
146
|
};
|
|
143
147
|
|
|
144
148
|
DynamicTableField.propTypes = {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
field: PropTypes.object,
|
|
150
|
+
onChange: PropTypes.func,
|
|
151
|
+
scope: PropTypes.string,
|
|
148
152
|
};
|
|
149
153
|
|
|
150
154
|
export default DynamicTableField;
|
|
@@ -56,7 +56,7 @@ export const GroupPreview = ({ groups }) =>
|
|
|
56
56
|
key={groupId(group) || groupDisplayName(group)}
|
|
57
57
|
group={group}
|
|
58
58
|
/>
|
|
59
|
-
))
|
|
59
|
+
)),
|
|
60
60
|
)(groups);
|
|
61
61
|
|
|
62
62
|
GroupPreview.propTypes = {
|
|
@@ -68,7 +68,7 @@ GroupPreview.propTypes = {
|
|
|
68
68
|
name: PropTypes.string.isRequired,
|
|
69
69
|
}),
|
|
70
70
|
PropTypes.string,
|
|
71
|
-
])
|
|
71
|
+
]),
|
|
72
72
|
).isRequired,
|
|
73
73
|
};
|
|
74
74
|
|
|
@@ -38,7 +38,7 @@ HiearchyPreviewLabel.propTypes = {
|
|
|
38
38
|
const HierarchyPreview = ({ hierarchyValue }) =>
|
|
39
39
|
_.flow(
|
|
40
40
|
_.reject(_.isNull),
|
|
41
|
-
_.map((node) => <HiearchyPreviewLabel key={node.id} node={node} />)
|
|
41
|
+
_.map((node) => <HiearchyPreviewLabel key={node.id} node={node} />),
|
|
42
42
|
)(hierarchyValue);
|
|
43
43
|
|
|
44
44
|
HierarchyPreview.propTypes = {
|
|
@@ -34,8 +34,8 @@ export const ImageField = ({ field: { name, value }, onChange }) => {
|
|
|
34
34
|
setInputError(
|
|
35
35
|
formatMessage(
|
|
36
36
|
{ id: "widget.image.error.too_big" },
|
|
37
|
-
{ size_mb: MAXIMUM_FILE_SIZE_MB }
|
|
38
|
-
)
|
|
37
|
+
{ size_mb: MAXIMUM_FILE_SIZE_MB },
|
|
38
|
+
),
|
|
39
39
|
);
|
|
40
40
|
clearImage(e);
|
|
41
41
|
return;
|
|
@@ -48,7 +48,6 @@ export const ImageField = ({ field: { name, value }, onChange }) => {
|
|
|
48
48
|
};
|
|
49
49
|
setInputValue(e.target.value);
|
|
50
50
|
|
|
51
|
-
// eslint-disable-next-line fp/no-mutation
|
|
52
51
|
reader.readAsDataURL(file);
|
|
53
52
|
};
|
|
54
53
|
const clearImage = (e) => {
|
|
@@ -35,8 +35,8 @@ const makeOptions = (formatMessage, label) => (cardinality, values) =>
|
|
|
35
35
|
isMultiple(cardinality)
|
|
36
36
|
? translateValues(formatMessage, label)(values)
|
|
37
37
|
: _.union(translateValues(formatMessage, label)(values), [
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
{ text: formatMessage({ id: "selector.no.selection" }), value: null },
|
|
39
|
+
]);
|
|
40
40
|
|
|
41
41
|
const singleValueType = (name, value, options) =>
|
|
42
42
|
_.flow(
|
|
@@ -44,7 +44,7 @@ const singleValueType = (name, value, options) =>
|
|
|
44
44
|
({ value: id, text, external_id }) => ({
|
|
45
45
|
value: { id, name: text, external_id },
|
|
46
46
|
name,
|
|
47
|
-
})
|
|
47
|
+
}),
|
|
48
48
|
)(options);
|
|
49
49
|
|
|
50
50
|
const multipleValueType = (name, value, options) => ({
|
|
@@ -55,7 +55,7 @@ const multipleValueType = (name, value, options) => ({
|
|
|
55
55
|
id,
|
|
56
56
|
name: text,
|
|
57
57
|
external_id,
|
|
58
|
-
}))
|
|
58
|
+
})),
|
|
59
59
|
)(options),
|
|
60
60
|
});
|
|
61
61
|
|
|
@@ -95,7 +95,7 @@ export const StandardDropdown = ({
|
|
|
95
95
|
(o, key) => ({
|
|
96
96
|
...o,
|
|
97
97
|
key,
|
|
98
|
-
})
|
|
98
|
+
}),
|
|
99
99
|
)}
|
|
100
100
|
/>
|
|
101
101
|
);
|
|
@@ -2,10 +2,7 @@ import PropTypes from "prop-types";
|
|
|
2
2
|
import { Form } from "semantic-ui-react";
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
4
|
|
|
5
|
-
export const StringField = ({
|
|
6
|
-
field,
|
|
7
|
-
onChange,
|
|
8
|
-
}) => {
|
|
5
|
+
export const StringField = ({ field, onChange }) => {
|
|
9
6
|
const { name, cardinality, placeholder, value } = field;
|
|
10
7
|
const { formatMessage } = useIntl();
|
|
11
8
|
return cardinality == "+" || cardinality == "*" ? (
|
|
@@ -42,7 +42,7 @@ export const TableField = ({
|
|
|
42
42
|
const columns_name = _.map((column) => column.name)(table_columns);
|
|
43
43
|
return content.map((row) => {
|
|
44
44
|
const field_deleted = _.keys(row).filter(
|
|
45
|
-
(x) => !columns_name.includes(x)
|
|
45
|
+
(x) => !columns_name.includes(x),
|
|
46
46
|
);
|
|
47
47
|
return _.omit(field_deleted)(row);
|
|
48
48
|
});
|
|
@@ -27,7 +27,7 @@ describe("<CheckboxField />", () => {
|
|
|
27
27
|
expect.objectContaining({
|
|
28
28
|
checked: true,
|
|
29
29
|
value: "Si",
|
|
30
|
-
})
|
|
30
|
+
}),
|
|
31
31
|
);
|
|
32
32
|
});
|
|
33
33
|
});
|
|
@@ -59,7 +59,7 @@ describe("<CheckboxField /> Multiple", () => {
|
|
|
59
59
|
await user.click(rendered.getAllByRole("checkbox")[0]);
|
|
60
60
|
expect(onChange).toHaveBeenCalledWith(
|
|
61
61
|
expect.anything(),
|
|
62
|
-
expect.objectContaining({ value: ["foo"] })
|
|
62
|
+
expect.objectContaining({ value: ["foo"] }),
|
|
63
63
|
);
|
|
64
64
|
});
|
|
65
65
|
});
|
|
@@ -45,7 +45,7 @@ describe("<DropdownField />", () => {
|
|
|
45
45
|
const field = { ...fieldData, type: "domain" };
|
|
46
46
|
const rendered = render(
|
|
47
47
|
<DropdownField {...{ ...props, field }} />,
|
|
48
|
-
renderOpts
|
|
48
|
+
renderOpts,
|
|
49
49
|
);
|
|
50
50
|
await waitForLoad(rendered);
|
|
51
51
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -55,7 +55,7 @@ describe("<DropdownField />", () => {
|
|
|
55
55
|
const field = { ...fieldData, type: "system" };
|
|
56
56
|
const rendered = render(
|
|
57
57
|
<DropdownField {...{ ...props, field }} />,
|
|
58
|
-
renderOpts
|
|
58
|
+
renderOpts,
|
|
59
59
|
);
|
|
60
60
|
await waitForLoad(rendered);
|
|
61
61
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -148,9 +148,17 @@ describe("<DynamicField />", () => {
|
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
it("matches the latest snapshot (dynamic_table widget)", async () => {
|
|
151
|
-
const table_columns = [
|
|
152
|
-
|
|
153
|
-
|
|
151
|
+
const table_columns = [
|
|
152
|
+
{ name: "col", type: "string", widget: "string", cardinality: "1" },
|
|
153
|
+
];
|
|
154
|
+
const value = {
|
|
155
|
+
value: [{ col: { origin: "user", value: "foo" } }],
|
|
156
|
+
origin: "user",
|
|
157
|
+
};
|
|
158
|
+
const props = {
|
|
159
|
+
field: { widget: "dynamic_table", values: { table_columns }, value },
|
|
160
|
+
onChange,
|
|
161
|
+
};
|
|
154
162
|
const rendered = render(<DynamicField {...props} />);
|
|
155
163
|
await waitForLoad(rendered);
|
|
156
164
|
expect(rendered.container).toMatchSnapshot();
|