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, };