import React from 'react'; import ReactDOM from 'react-dom'; import Formsy from 'formsy-react'; import MyInput from './../components/Input'; import MySelect from './../components/Select'; import MyRadioGroup from './../components/RadioGroup'; import MyMultiCheckboxSet from './../components/MultiCheckboxSet'; const Fields = props => { function onRemove(pos) { return event => { event.preventDefault(); props.onRemove(pos); }; } return (
{props.data.map((field, i) => (
{ field.type === 'input' ? ( ) : ( ) }
)) }
); }; class App extends React.Component { constructor(props) { super(props); this.state = { fields: [], canSubmit: false }; this.addField = this.addField.bind(this); this.removeField = this.removeField.bind(this); this.enableButton = this.enableButton.bind(this); this.disableButton = this.disableButton.bind(this); } submit(data) { alert(JSON.stringify(data, null, 4)); } addField(fieldData) { fieldData.validations = fieldData.validations.length ? fieldData.validations.reduce((a, b) => Object.assign({}, a, b)) : null; fieldData.id = Date.now(); this.setState({ fields: this.state.fields.concat(fieldData) }); } removeField(pos) { const fields = this.state.fields; this.setState({ fields: fields.slice(0, pos).concat(fields.slice(pos+1)) }) } enableButton() { this.setState({ canSubmit: true }); } disableButton() { this.setState({ canSubmit: false }); } render() { const { fields, canSubmit } = this.state; return (
JSON.stringify(a) === JSON.stringify(b)} items={[ {isEmail: true}, {isEmptyString: true}, {isNumeric: true}, {isAlphanumeric: true}, {equals: 5}, {minLength: 3}, {maxLength: 7} ]} />
); } } ReactDOM.render(, document.getElementById('example'));