diff --git a/src/lib/forms/ArrayField.js b/src/lib/forms/ArrayField.js
index a5ec2c19..b5c5c7ed 100644
--- a/src/lib/forms/ArrayField.js
+++ b/src/lib/forms/ArrayField.js
@@ -90,6 +90,8 @@ export class ArrayField extends Component {
const valuesToDisplay = this.getValues(values, fieldPath);
return (
+ {helpText && }
+
{valuesToDisplay.map((value, index, array) => {
@@ -112,8 +114,6 @@ export class ArrayField extends Component {
);
})}
- {helpText && }
-
{
- const { fieldPath, label, required, className, editor, editorConfig } = this.props;
+ const { fieldPath, label, required, className, editor, editorConfig, disabled } =
+ this.props;
+
const value = getIn(formikBag.form.values, fieldPath, "");
const initialValue = getIn(formikBag.form.initialValues, fieldPath, "");
const error =
@@ -30,6 +32,7 @@ export class RichInputField extends Component {
required={required}
error={error}
className={className}
+ disabled={disabled}
>
{React.isValidElement(label) ? (
label
@@ -48,6 +51,7 @@ export class RichInputField extends Component {
formikBag.form.setFieldValue(fieldPath, editor.getContent());
formikBag.form.setFieldTouched(fieldPath, true);
}}
+ disabled={disabled}
/>
)}
@@ -57,7 +61,6 @@ export class RichInputField extends Component {
render() {
const { optimized, fieldPath } = this.props;
-
const FormikField = optimized ? FastField : Field;
return (
@@ -74,6 +77,7 @@ RichInputField.propTypes = {
label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
required: PropTypes.bool,
editorConfig: PropTypes.object,
+ disabled: PropTypes.bool,
};
RichInputField.defaultProps = {
@@ -83,4 +87,5 @@ RichInputField.defaultProps = {
label: "",
editor: undefined,
editorConfig: undefined,
+ disabled: false,
};
diff --git a/src/lib/forms/SelectField.js b/src/lib/forms/SelectField.js
index 12575c5f..122c8de0 100644
--- a/src/lib/forms/SelectField.js
+++ b/src/lib/forms/SelectField.js
@@ -53,6 +53,8 @@ export class SelectField extends Component {
onChange,
onAddItem,
multiple,
+ disabled,
+ required,
...uiProps
} = cmpProps;
const _defaultValue = multiple ? [] : "";
@@ -66,6 +68,8 @@ export class SelectField extends Component {
error={this.renderError(meta, initialValue, initialErrors, value, errors)}
label={{ children: label }}
name={fieldPath}
+ disabled={disabled}
+ required={required}
onBlur={handleBlur}
onChange={(event, data) => {
if (onChange) {
@@ -90,15 +94,18 @@ export class SelectField extends Component {
};
render() {
- const { optimized, fieldPath, ...uiProps } = this.props;
+ const { optimized, fieldPath, helpText, ...uiProps } = this.props;
const FormikField = optimized ? FastField : Field;
return (
-
+ <>
+
+ {helpText && }
+ >
);
}
}
@@ -113,6 +120,7 @@ SelectField.propTypes = {
onChange: PropTypes.func,
onAddItem: PropTypes.func,
multiple: PropTypes.bool,
+ helpText: PropTypes.string,
};
SelectField.defaultProps = {
@@ -123,4 +131,5 @@ SelectField.defaultProps = {
onChange: undefined,
onAddItem: undefined,
multiple: false,
+ helpText: undefined,
};
diff --git a/src/lib/forms/TextField.js b/src/lib/forms/TextField.js
index 54f8dcbf..50c3265c 100644
--- a/src/lib/forms/TextField.js
+++ b/src/lib/forms/TextField.js
@@ -31,6 +31,8 @@ export class TextField extends Component {
className="invenio-text-input-field"
id={fieldPath}
name={fieldPath}
+ required={required}
+ disabled={disabled}
>
{({ field, meta }) => {
const computedError =
diff --git a/src/lib/forms/widgets/custom_fields/SubjectAutocompleteDropdown.js b/src/lib/forms/widgets/custom_fields/SubjectAutocompleteDropdown.js
index d4c1d050..b0f8dd4f 100644
--- a/src/lib/forms/widgets/custom_fields/SubjectAutocompleteDropdown.js
+++ b/src/lib/forms/widgets/custom_fields/SubjectAutocompleteDropdown.js
@@ -36,6 +36,7 @@ export class SubjectAutocompleteDropdown extends Component {
width,
allowAdditions,
noQueryMessage,
+ disabled,
...uiProps
} = this.props;
const labelContent = label ? (
@@ -87,6 +88,7 @@ export class SubjectAutocompleteDropdown extends Component {
value={getIn(values, fieldPath, []).map((val) => val.id ?? val.subject)}
allowAdditions={allowAdditions}
width={width}
+ disabled={disabled}
/>
)}
@@ -106,6 +108,7 @@ SubjectAutocompleteDropdown.propTypes = {
width: PropTypes.number,
allowAdditions: PropTypes.bool,
noQueryMessage: PropTypes.string,
+ disabled: PropTypes.bool,
};
SubjectAutocompleteDropdown.defaultProps = {
@@ -119,4 +122,5 @@ SubjectAutocompleteDropdown.defaultProps = {
width: undefined,
noQueryMessage: "Search or create subjects...",
allowAdditions: true,
+ disabled: false,
};