UNPKG

appirio-tech-react-components-test10

Version:

Topcoder UI Kit library of components for our React apps.

358 lines (327 loc) 10.4 kB
import React from 'react' import _ from 'lodash' import Checkbox from './Checkbox' import PasswordInput from './PasswordInput' import PhoneInput from './PhoneInput' import RadioGroup from './RadioGroup' import SelectDropdown from '../SelectDropdown/SelectDropdown' import SliderRadioGroup from './SliderRadioGroup' import SliderStandard from './SliderStandard' import SwitchButton from '../SwitchButton/SwitchButton' import Textarea from './Textarea' import TextInput from './TextInput' import TiledCheckboxGroup from './TiledCheckboxGroup' import TiledRadioGroup from './TiledRadioGroup' import Formsy from 'formsy-react' import FormsyDropdowns from './FormsyDropdowns' import './FormExamples.scss' const timeOptions = _.map(_.range(1, 25), (v) => { const value = v+':00' return { value, label: value } }) const opts = [ { title: 'ASAP', value: 'opt ASAP ', desc: null }, { title: '1 - 2 months', value: 'opt 1 - 2 months ', desc: null }, { title: '2 - 3 months', value: 'opt 2 - 3 months ', desc: null } ] const opt2s = [ { label: 'ASAP', value: 'opt ASAP', quoteUp: 10 }, { label: '1 - 2 months', value: 'opt 1 - 2 months', quoteUp: 20 }, { label: '2 - 3 months', value: 'opt 2 - 3 months', quoteUp: 30 } ] const opt3s = [ { title: 'selectDropdown1', value: 'selectDropdown1' }, { title: 'selectDropdown2', value: 'selectDropdown2' }, { title: 'selectDropdown3', value: 'selectDropdown3' } ] const ISOCountries = [ { alpha2: 'AF', alpha3: 'AFG', code: 4, numericString: '004', name: 'Afghanistan' }, { alpha2: 'AX', alpha3: 'ALA', code: 248, numericString: '248', name: 'Åland Islands' }, { alpha2: 'AL', alpha3: 'ALB', code: 8, numericString: '008', name: 'Albania' }, { alpha2: 'DZ', alpha3: 'DZA', code: 12, numericString: '012', name: 'Algeria' } ] class FormExamples extends React.Component { constructor(props) { super(props) this.state = {} this.onChange = this.onChange.bind(this) this.onBlank = this.onBlank.bind(this) this.submitForm = this.submitForm.bind(this) } onBlank() {} submitForm(){ alert(JSON.stringify(this.state, '', 2)) } onChange(name, value) { if(name === 'dropdowns') { this.setState({ dropdowns: value }) } if (name === 'checkBox') { this.setState({ checkBoxvalue: _.toString(value) }) } if (name === 'password') { this.setState({ passwordInputvalue: value }) } if (name === 'phone') { this.setState({ phoneInputvalue: value }) } if (name === 'radioGroup') { this.setState({ radioGroupvalue: value }) } if (name === 'selectDropdown') { this.setState({ selectDropdownvalue: value }) } if (name === 'sliderRadioGroup') { this.setState({ sliderRadioGroupvalue: value }) } if (name === 'sliderStandard') { this.setState({ sliderStandardvalue: value }) } if (name === 'switchButton') { this.setState({ switchButtonvalue: _.toString(value) }) } if (name === 'textarea') { this.setState({ textareavalue: value }) } if (name === 'textInput') { this.setState({ textInputvalue: value }) } if (name === 'tiledCheckboxGroup') { this.setState({ tiledCheckboxGroupvalue: value }) } if (name === 'tiledRadioGroup') { this.setState({ tiledRadioGroupvalue: value }) } } render() { return ( <div className="form-container"> <Formsy.Form> <div className="field-title"> DropDowns: </div> <FormsyDropdowns name="dropdowns" lProps={{ label:'Start Time', value:'', options: timeOptions, placeholder:'- Select Time -' }} rProps={{ label:'End Time', value:'', options: timeOptions, placeholder:'- Select Time -' }} onChange={this.onChange} /> <div className="field-title"> Checkbox: </div> <Checkbox checked={this.state.checkBoxvalue} name="checkBox" onChange={this.onChange} label="show me the money" /> <div className="field-value"> Selected value: {this.state.checkBoxvalue} </div> <div className="field-title"> PasswordInput: </div> <PasswordInput wrapperClass={'input-container'} label="Password" type="password" name="password" validationError="Please enter password" onChange={this.onChange} value={this.state.passwordInputvalue ? this.state.passwordInputvalue : ''} /> <div className="field-value"> Selected value: {this.state.passwordInputvalue} </div> <div className="field-title"> PhoneInput: </div> <div className="phone-input-field"> <PhoneInput validations={this.onBlank} wrapperClass={'phone-input-container'} name="phone" type="phone" listCountry={ISOCountries} forceCountry={this.onBlank} onChangeCountry={this.onBlank} onOutsideClick={this.onBlank} onChange={this.onChange} value={this.state.phoneInputvalue ? this.state.phoneInputvalue : ''} /> </div> <div className="field-value"> Selected value: {this.state.phoneInputvalue} </div> <div className="field-title"> RadioGroup: </div> <RadioGroup name="radioGroup" wrapperClass="test" options={opt2s} onChange={this.onChange} value={this.state.radioGroupvalue ? this.state.radioGroupvalue : ''} /> <div className="field-value"> Selected value: {this.state.radioGroupvalue} </div> <div className="field-title"> SelectDropdown: </div> <SelectDropdown theme="default" name="selectDropdown" className="sort-filter" options={opt3s} // eslint-disable-next-line react/jsx-no-bind onSelect={(e) => this.onChange('selectDropdown', e.value)} /> <div className="field-value"> Selected value: {this.state.selectDropdownvalue} </div> <div className="field-title"> SliderRadioGroup: </div> <div className="slider-radio-group"> <SliderRadioGroup name="sliderRadioGroup" wrapperClass="test" min={0} max={20} step={10} options={opts} onChange={this.onChange} value={this.state.sliderRadioGroupvalue ? this.state.sliderRadioGroupvalue : ''} /> </div> <div className="field-value padding-top-20"> Selected value: {this.state.sliderRadioGroupvalue} </div> <div className="field-title"> SliderStandard: </div> <div className="slider-radio-group padding-top-20"> <SliderStandard name="sliderStandard" wrapperClass="test" min={0} max={1000} step={10} minLabel="0" maxLabel="1000" onChange={this.onChange} value={this.state.sliderStandardvalue ? this.state.sliderStandardvalue : ''} /> </div> <div className="field-value"> Selected value: {this.state.sliderStandardvalue} </div> <div className="field-title"> SwitchButton: </div> <SwitchButton name="switchButton" // eslint-disable-next-line react/jsx-no-bind onChange={(e) => this.onChange('switchButton', e.target.checked)} label="Private" /> <div className="field-value"> Selected value: {this.state.switchButtonvalue} </div> <div className="field-title"> Textarea: </div> <Textarea name="textarea" onChange={this.onChange} /> <div className="field-value"> Selected value: {this.state.textareavalue} </div> <div className="field-title"> TextInput: </div> <TextInput wrapperClass={'input-container'} type="text" name="textInput" onChange={this.onChange} value={this.state.textInputvalue ? this.state.textInputvalue : ''} /> <div className="field-value"> Selected value: {this.state.textInputvalue} </div> <div className="field-title"> TiledCheckboxGroup: </div> <TiledCheckboxGroup name="tiledCheckboxGroup" wrapperClass="test" options={opts} onChange={this.onChange} value={this.state.tiledCheckboxGroupvalue ? this.state.tiledCheckboxGroupvalue : ''} /> <div className="field-value"> Selected value: {this.state.tiledCheckboxGroupvalue} </div> <div className="field-title"> TiledRadioGroup: </div> <TiledRadioGroup name="tiledRadioGroup" wrapperClass="test" options={opts} onChange={this.onChange} value={this.state.tiledRadioGroupvalue ? this.state.tiledRadioGroupvalue : ''} /> <div className="field-value"> Selected value: {this.state.tiledRadioGroupvalue ? this.state.tiledRadioGroupvalue : ''} </div> <div className="padding-top-20 padding-bottom-30"> <button type="submit" onClick={this.submitForm} className="tc-btn tc-btn-sm tc-btn-primary flex middle center" >Submit</button> </div> </Formsy.Form> </div> ) } } export default FormExamples