import React from 'react';
import ReactDOM from 'react-dom';
import Formsy from 'formsy-react';
import MyInput from './../components/Input';
const currentYear = new Date().getFullYear();
const validators = {
time: {
regexp: /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/,
message: 'Not valid time'
},
decimal: {
regexp: /(^\d*\.?\d*[0-9]+\d*$)|(^[0-9]+\d*\.\d*$)/,
message: 'Please type decimal value'
},
binary: {
regexp: /^([0-1])*$/,
message: '10101000'
}
};
Formsy.addValidationRule('isYearOfBirth', (values, value) => {
value = parseInt(value);
if (typeof value !== 'number') {
return false;
}
return value < currentYear && value > currentYear - 130;
});
const App = React.createClass({
submit(data) {
alert(JSON.stringify(data, null, 4));
},
render() {
return (
);
}
});
const DynamicInput = React.createClass({
mixins: [Formsy.Mixin],
getInitialState() {
return { validationType: 'time' };
},
changeValue(event) {
this.setValue(event.currentTarget.value);
},
changeValidation(validationType) {
this.setState({ validationType: validationType });
this.setValue(this.getValue());
},
validate() {
const value = this.getValue();
console.log(value, this.state.validationType);
return value ? validators[this.state.validationType].regexp.test(value) : true;
},
getCustomErrorMessage() {
return this.showError() ? validators[this.state.validationType].message : '';
},
render() {
const className = 'form-group' + (this.props.className || ' ') + (this.showRequired() ? 'required' : this.showError() ? 'error' : null);
const errorMessage = this.getCustomErrorMessage();
return (
{errorMessage}
);
}
});
const Validations = React.createClass({
changeValidation(e) {
this.props.changeValidation(e.target.value);
},
render() {
const { validationType } = this.props;
return (
);
}
});
ReactDOM.render(, document.getElementById('example'));