Skip to content

Commit 234a88f

Browse files
author
Jonatan E. Salas
authored
Merge pull request #80 from nikhilarunw/feature-disabled
Added disabled attribute in autoform field
2 parents 06b3540 + 5cc480a commit 234a88f

File tree

8 files changed

+26
-19
lines changed

8 files changed

+26
-19
lines changed

src/components/common/FormControl.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ class FormControl extends Component {
2424
};
2525

2626
getInput = () => {
27-
let { value, placeholder, componentClass, children, rows, inputType, min, max } = this.props;
28-
let formControlProps = { value, placeholder, componentClass, rows, min, max };
27+
let { value, placeholder, componentClass, children, rows, inputType, min, max, disabled } = this.props;
28+
let formControlProps = { value, placeholder, componentClass, rows, min, max, disabled };
2929

3030
return (
3131
<BootstrapFormControl type={inputType} ref="input" onChange={this.handleChange} onBlur={this.handleBlur} {...formControlProps}>

src/components/common/Input.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class Input extends Component {
2525
let {
2626
error, touched, displayName, name, help, fieldLayout, innerSize, children, inputType,
2727
value, placeholder, addonBefore, addonAfter, onChange, onBlur, componentClass, rows,
28-
min, max
28+
min, max, disabled
2929
} = this.props;
3030

3131
let formGroupProps = {
@@ -52,7 +52,8 @@ class Input extends Component {
5252
componentClass,
5353
rows,
5454
min,
55-
max
55+
max,
56+
disabled
5657
};
5758

5859
return (

src/components/field/ArrayContainer.js

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React, { Component, PropTypes } from 'react';
22
import GlyphButton from '../common/GlyphButton.js';
33
import Alert from 'react-bootstrap/lib/Alert';
4+
import Button from 'react-bootstrap/lib/Button'
45
import FormGroup from '../common/FormGroup';
56
import ArrayContainerItem from '../common/ArrayContainerItem';
67

@@ -51,8 +52,10 @@ class ArrayContainer extends Component {
5152
};
5253

5354
buildGroupComponent = (field) => {
54-
let { componentFactory, layout } = this.props;
55-
55+
let { componentFactory, layout, disabled } = this.props;
56+
57+
field = field.map((field)=>( { ...field, disabled} ));
58+
5659
return componentFactory.buildGroupComponent({
5760
component: layout.component,
5861
layout: layout,
@@ -63,7 +66,7 @@ class ArrayContainer extends Component {
6366

6467
getComponents = () => {
6568
let { fields } = this.props;
66-
69+
6770
return fields.map((field, index) => (
6871
<ArrayContainerItem key={index} index={index} onAction={this.handleItemAction}>
6972
{ this.buildGroupComponent(field) }
@@ -72,7 +75,7 @@ class ArrayContainer extends Component {
7275
};
7376

7477
getAddBar = () => {
75-
let { addText } = this.props;
78+
let { addText, disabled } = this.props;
7679

7780
let text = addText ? addText : "Add";
7881
let components = this.getComponents();
@@ -81,7 +84,7 @@ class ArrayContainer extends Component {
8184
return (
8285
<div className="add-bar">
8386
<span>
84-
<GlyphButton glyph="plus" text={text} bsSize="small" onClick={this.handleAdd}/>
87+
<GlyphButton glyph="plus" text={text} bsSize="small" onClick={this.handleAdd} disabled={disabled}/>
8588
</span>
8689
</div>
8790
);
@@ -93,14 +96,15 @@ class ArrayContainer extends Component {
9396

9497
getAllComponents = () => {
9598
//TODO: We should replace a for button!
99+
const { disabled } = this.props;
96100
let components = this.getComponents();
97101

98102
if (components.length) {
99103
return components;
100104
} else {
101105
return (
102106
<Alert bsStyle="warning">
103-
This array is empty. Consider <a onClick={ this.handleAdd }>adding a new item</a>.
107+
This array is empty. Consider <Button bsStyle="link" disabled={disabled} onClick={ this.handleAdd }>adding a new item</Button>.
104108
</Alert>
105109
);
106110
}

src/components/field/CheckBox.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import Col from 'react-bootstrap/lib/Col';
55

66
class Checkbox extends Component {
77
getContent = () => {
8-
let { value, name, displayName, error, touched, onChange, onBlur } = this.props;
8+
let { value, name, displayName, error, touched, onChange, onBlur, disabled } = this.props;
99
let validationState = error && touched ? 'error' : null;
10-
let checkboxProps = { checked: value, onChange, onBlur, validationState };
10+
let checkboxProps = { checked: value, onChange, onBlur, validationState, disabled };
1111

1212
return (
1313
<BootstrapCheckbox className="cb-fix" {...checkboxProps}>

src/components/field/DateTimePicker.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class DateTimePicker extends Component {
7979
};
8080

8181
render() {
82-
let { value, name, displayName, help, error, touched, onBlur, format, type, fieldLayout } = this.props;
82+
let { value, name, displayName, help, error, touched, onBlur, format, type, fieldLayout, disabled } = this.props;
8383
let localizer = getDateLocalizer();
8484

8585
if (typeof value == 'string') {
@@ -91,7 +91,7 @@ class DateTimePicker extends Component {
9191
}
9292
}
9393

94-
let reactWidgetsProps = { value, displayName, onChange: this.onChange, onBlur, format };
94+
let reactWidgetsProps = { value, displayName, onChange: this.onChange, onBlur, format, disabled };
9595
let formGroupProps = { error, touched, displayName, name, help, fieldLayout };
9696

9797
this.setReactWidgetsProps(reactWidgetsProps, type);

src/components/field/EntityContainer.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class EntityContainer extends Component {
1919
};
2020

2121
_renderComponents = () => {
22-
let { componentFactory, layout, fields } = this.props;
23-
22+
let { componentFactory, layout, fields, disabled } = this.props;
23+
fields = fields.map((field)=>({ ...field, disabled}));
2424
return componentFactory.buildGroupComponent({
2525
component: layout.component,
2626
layout: layout,
@@ -60,6 +60,7 @@ EntityContainer.props = {
6060
visited: PropTypes.bool,
6161
autofilled: PropTypes.bool,
6262
required: PropTypes.bool,
63+
disabled: PropTypes.bool,
6364

6465
//String props
6566
group: PropTypes.string,

src/components/field/Lookup.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class Lookup extends Component {
1414
};
1515

1616
render() {
17-
let {value, name, displayName, help, error, touched, onChange, onBlur, options, fieldLayout} = this.props;
17+
let {value, name, displayName, help, error, touched, onChange, onBlur, options, fieldLayout, disabled} = this.props;
1818
let formGroupProps = {error, touched, displayName, name, help, fieldLayout};
1919
let selectProps;
2020

@@ -23,6 +23,7 @@ class Lookup extends Component {
2323
options,
2424
value,
2525
name,
26+
disabled,
2627
onChange,
2728
onBlur: (event) => onBlur()
2829
};

src/components/field/Radio.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ class Radio extends Component {
99
};
1010

1111
getOptions = (value) => {
12-
let { options, name, fieldLayout } = this.props;
12+
let { options, name, fieldLayout, disabled } = this.props;
1313

1414
// these props don't vary per item
15-
let invariantRadioProps = { inline: fieldLayout == 'inline', name, onChange: this.handleChange };
15+
let invariantRadioProps = { inline: fieldLayout == 'inline', name, onChange: this.handleChange, disabled };
1616

1717
return options.map((item, index) => (
1818
<BootstrapRadio key={index} value={item.value} checked={item.value == value} {...invariantRadioProps}>

0 commit comments

Comments
 (0)