Skip to content
This repository was archived by the owner on Nov 26, 2021. It is now read-only.

Commit 19e2041

Browse files
committed
add default value
1 parent 056b94d commit 19e2041

File tree

12 files changed

+40
-31
lines changed

12 files changed

+40
-31
lines changed

example/App.jsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,7 @@ export default class extends Component {
1010

1111
state = {
1212
formValues: {
13-
email: '',
14-
phone: '',
15-
birthday: '',
16-
sex: '',
17-
city: '',
18-
hobby: ['2'],
19-
remarks: '',
13+
sex: '1', // default
2014
},
2115
isAllValid: undefined,
2216
};

example/BasicForm.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,15 +140,15 @@ class BasicForm extends Component {
140140
<Radio
141141
id="male"
142142
name="sex"
143-
value="0"
143+
value="1"
144144
/>
145145
male
146146
</label>
147147
<label htmlFor="female">
148148
<Radio
149149
id="female"
150150
name="sex"
151-
value="1"
151+
value="2"
152152
/>
153153
female
154154
</label>

example/ChildForm.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class ChildForm extends Component {
1919
super(props);
2020
// Initializes the values
2121
props.formControl.init({
22-
money: '',
2322
url: '',
2423
});
2524
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-validate-framework",
3-
"version": "0.9.5",
3+
"version": "0.9.6",
44
"description": "React validation framework.",
55
"main": "lib/index.js",
66
"scripts": {

src/Field.jsx

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,45 @@ const propTypes = {
66

77
const contextTypes = {
88
fields: PropTypes.object.isRequired,
9+
initField: PropTypes.func.isRequired,
910
onFormChange: PropTypes.func.isRequired,
1011
};
1112

1213
/**
1314
* Field component
1415
* @param FormComponent
16+
* @param fieldType
1517
* @param name
1618
* @param props
1719
* @param fields
20+
* @param initField
1821
* @param onFormChange
1922
* @constructor
2023
*/
21-
const Field = (FormComponent, { name, ...props }, { fields, onFormChange }) => (
22-
<FormComponent
23-
name={name}
24-
field={fields[name]}
25-
onChange={onFormChange}
26-
{...props}
27-
/>
28-
);
24+
const Field = (FormComponent, fieldType, {
25+
name,
26+
...props
27+
}, {
28+
fields,
29+
initField,
30+
onFormChange,
31+
}) => {
32+
// Initialize field.
33+
if (!fields[name]) {
34+
// Checkbox uses an array
35+
initField({
36+
[name]: fieldType === 'checkbox' ? [] : '',
37+
});
38+
}
39+
return (
40+
<FormComponent
41+
name={name}
42+
field={fields[name]}
43+
onChange={onFormChange}
44+
{...props}
45+
/>
46+
);
47+
};
2948

3049
Field.propTypes = propTypes;
3150
Field.contextTypes = contextTypes;

src/FormControl.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export default (schemas, methods) => FormComponent => (
2525

2626
static childContextTypes = {
2727
fields: PropTypes.object.isRequired,
28+
initField: PropTypes.func.isRequired,
2829
onFormChange: PropTypes.func.isRequired,
2930
};
3031

@@ -66,6 +67,7 @@ export default (schemas, methods) => FormComponent => (
6667
getChildContext() {
6768
return {
6869
fields: this.state.fields,
70+
initField: this.init,
6971
onFormChange: this.onFormChange,
7072
};
7173
}

src/Inputs/Checkbox.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ export default Object.assign(Field.bind(null, ({ field, value, ...props }) => (
88
{...props}
99
type="checkbox"
1010
/>
11-
)), Field);
11+
), 'checkbox'), Field);

src/Inputs/Radio.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ export default Object.assign(Field.bind(null, ({ field, value, ...props }) => (
88
{...props}
99
type="radio"
1010
/>
11-
)), Field);
11+
), 'radio'), Field);

src/Inputs/Select.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ export default Object.assign(Field.bind(null, ({ field, ...props }) => (
77
value={field.value}
88
{...props}
99
/>
10-
)), Field);
10+
), 'select'), Field);

src/Inputs/Text.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ export default Object.assign(Field.bind(null, ({ field, ...props }) => (
88
value={field.value}
99
{...props}
1010
/>
11-
)), Field);
11+
), 'text'), Field);

0 commit comments

Comments
 (0)