Skip to content

Commit 64d1fbc

Browse files
committed
Updated error display on autocomplete based on updated schema
1 parent 04d3fdb commit 64d1fbc

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

geonode_mapstore_client/client/js/plugins/MetadataEditor/components/_fields/SchemaField.jsx

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88

99
import React from 'react';
1010
import axios from '@mapstore/framework/libs/ajax';
11-
import isArray from 'lodash/isArray';
11+
import castArray from 'lodash/castArray';
1212
import isEmpty from 'lodash/isEmpty';
1313
import isString from 'lodash/isString';
14-
import get from 'lodash/get';
1514
import Autocomplete from '@js/components/Autocomplete/Autocomplete';
1615
import DefaultSchemaField from '@rjsf/core/lib/components/fields/SchemaField';
1716

@@ -41,9 +40,19 @@ const SchemaField = (props) => {
4140
const isSingleSelect = schema?.type === 'object' && !isEmpty(schema?.properties);
4241

4342
if (autocomplete && (isMultiSelect || isSingleSelect)) {
44-
const errors = !hideError ? isArray(errorSchema)
45-
? errorSchema.map(error => get(error, 'id.__errors', [])).flat()
46-
: get(errorSchema, '__errors', []) : [];
43+
const errors = (!hideError ? castArray(errorSchema) : [])
44+
.reduce((acc, errorEntry) => {
45+
if (errorEntry?.__errors) {
46+
acc.push({ messages: errorEntry.__errors });
47+
} else {
48+
Object.keys(errorEntry || {}).forEach((key) => {
49+
if (errorEntry[key]?.__errors) {
50+
acc.push({ key, messages: errorEntry[key].__errors });
51+
}
52+
});
53+
}
54+
return acc;
55+
}, []);
4756
const autocompleteOptions = isString(autocomplete)
4857
? { url: autocomplete }
4958
: autocomplete;
@@ -112,15 +121,17 @@ const SchemaField = (props) => {
112121
};
113122
});
114123
},
115-
error: isEmpty(errors) ? null : <ul>
116-
{errors.map((error, idx) => {
124+
error: isEmpty(errors) ? null : <>
125+
{errors.map((entry, idx) => {
117126
return (
118-
<li key={idx} className="gn-error-message">
119-
{error}
120-
</li>
127+
<ul key={idx} className="text-danger">
128+
{castArray(entry.messages).map((message, mIdx) => {
129+
return <li key={mIdx}>{entry.key ? `${entry.key}: ` : ''}{message}</li>;
130+
})}
131+
</ul>
121132
);
122133
})}
123-
</ul>
134+
</>
124135
};
125136

126137
return <Autocomplete {...autoCompleteProps}/>;

geonode_mapstore_client/client/themes/geonode/less/_metadata.less

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
.border-color-var(@theme-vars[main-border-color]);
2020
}
2121
.has-error {
22-
label, .help-title, .gn-error-message, .gn-metadata-form-description {
22+
label, .help-title, .gn-metadata-form-description {
2323
.color-var(@theme-vars[danger])
2424
}
2525
}

0 commit comments

Comments
 (0)