react-conventions
Version:
An open source set of React components that implement Ambassador's Design and UX patterns.
116 lines (108 loc) • 3.88 kB
JavaScript
import React from 'react'
import FormGroup from 'react-conventions/lib/FormGroup'
import Input from 'react-conventions/lib/Input'
import Textarea from 'react-conventions/lib/Textarea'
import Checkbox from 'react-conventions/lib/Checkbox'
import RadioGroup from 'react-conventions/lib/Radio/RadioGroup'
import SelectField from 'react-conventions/lib/SelectField'
import DatePicker from 'react-conventions/lib/DatePicker'
import Button from 'react-conventions/lib/Button'
import ButtonGroup from 'react-conventions/lib/ButtonGroup/ButtonGroup'
import Icon from 'react-conventions/lib/Icon'
import moment from 'moment'
import style from 'react-conventions/lib/FormGroup/style'
let fields = {
selectField: [
{value: '0', display: 'Time since last NPS survey was received'},
{value: '1', display: 'Time since last NPS survey was completed'}
],
selectField2: [
{value: '0', display: 'less than'},
{value: '1', display: 'greater than'}
],
selectField3: [
{value: '0', display: 'months ago'},
{value: '1', display: 'years ago'}
],
buttonGroup: [
{value: 'and', label: 'And'},
{value: 'or', label: 'Or'}
]
};
class ExampleFormGroupInline extends React.Component {
constructor(props) {
super(props);
}
state = {
schema: {
'selectField': {
'value':''
},
'selectField2': {
'value':''
},
'num': {
'value': ''
},
'selectField3': {
'value':''
},
'buttonGroup': {
'value':''
},
'input': {
'value':'3'
},
'selectField4': {
'value':''
},
'selectField5': {
'value':''
},
'selectField6': {
'value':''
},
'date': {
'value': moment().format('YYYY-MM-DD')
}
}
}
handleChange = (fields) => {
console.log(fields);
this.setState({ schema: fields })
}
render() {
const defaultOption = this.state.schema.buttonGroup.value === 'or' ? 1 : 0
return (
<FormGroup
changeCallback={this.handleChange}
schema={this.state.schema}>
<fieldset className={style.row}>
<legend><span>Inline select fields with a couple of extras</span></legend>
<div className={style['fields']}>
<SelectField name='selectField' options={fields.selectField} valueProp='value' displayProp='display' optClass={style.field} />
<SelectField name='selectField2' options={fields.selectField2} valueProp='value' displayProp='display' optClass={style.field} />
<Input name='num' type='text' optClass={style.field} />
<SelectField name='selectField3' options={fields.selectField3} valueProp='value' displayProp='display' optClass={style.field} />
<DatePicker name='date' optClass={style.field} />
</div>
</fieldset>
<fieldset className={style.row}>
<div className={style.field}>
<ButtonGroup name="buttonGroup" options={fields.buttonGroup} defaultOption={defaultOption}></ButtonGroup>
</div>
<div className={style['fields']}>
<SelectField name='selectField4' options={fields.selectField} valueProp='value' displayProp='display' optClass={style.field} />
<SelectField name='selectField5' options={fields.selectField2} valueProp='value' displayProp='display' optClass={style.field} />
<Input name='input' type='text' optClass={style.field} />
<SelectField name='selectField6' options={fields.selectField3} valueProp='value' displayProp='display' optClass={style.field} />
</div>
<div className={style['remove-item']}>
<Icon name='icon-delete-1' height='16' width='16' fill='#233040' />
</div>
</fieldset>
</FormGroup>
)
}
}
export default ExampleFormGroupInline