Skip to content

Instantly share code, notes, and snippets.

View mkozhukharenko's full-sized avatar

Nikolay mkozhukharenko

View GitHub Profile
import { observable } from 'mobx'
import GenericFormStore from './../common/generic-form.store'
export default class LoginStore extends GenericFormStore {
@observable
form = {/* form model */}
}
import {action, toJS} from 'mobx'
import Validator from 'validatorjs';
class FormStore {
getFlattenedValues = (valueKey = 'value') => {
let data = {};
let form = toJS(this.form).fields;
Object.keys(form).map(key => {
data[key] = form[key][valueKey]
});
import React, { Component } from 'react';
import { observer } from 'mobx-react';
import LoginForm from './login/login-form.component';
import LoginStore from './login/login.store';
let loginStore = LoginStore();
@observer
class App extends Component {
render() {
import React, { Component, PropTypes } from 'react';
import FormInput from './../common/form-input'
import { observer } from 'mobx-react'
@observer
class LoginForm extends Component {
render() {
const {form, onChange} = this.props;
return (
<form onSubmit={this.submit}>
@mkozhukharenko
mkozhukharenko / onFieldChange.js
Last active October 30, 2016 16:03
onFieldChange implementation with validation
import {action, observable} from 'mobx';
import Validator from 'validatorjs';
class LoginStore {
@observable
form = {
fields: {
email: {
value: '',
error: null,
@mkozhukharenko
mkozhukharenko / form-input.componen.jsx
Last active March 15, 2017 11:48
Form input component
import React, { PropTypes } from 'react';
import classNames from 'classnames'
let getFormInputClasses = ({valid, error}) => classNames('form-input', {
'form-input--error': !!error,
})
let FormInput = (props) => (
<span className={getFormInputClasses(props)}>
<input {...props}
@mkozhukharenko
mkozhukharenko / input-component.jsx
Last active October 30, 2016 15:38
Input component
<FormInput name="name"
value={form.fields.name.value}
error={form.fields.name.error}
onChange={form.onFieldChange}
placeholder="Enter your name"/>
@mkozhukharenko
mkozhukharenko / validatorjs-example.js
Last active January 28, 2021 18:27
Example of validatorjs usage
import Validator from 'validatorjs'
var data = {
name: 'John',
email: 'not-valid-email'
};
var rules = {
name: 'required',
email: 'required|email'
};
var validation = new Validator(data, rules);
@mkozhukharenko
mkozhukharenko / login-form-model.js
Last active October 30, 2016 16:04
Login Form model
import { observable } from 'mobx'
export default class LoginStore {
@observable
form = {
fields: {
email: {
value: '', // binds to input value
error: null // shows beneif the input
},
@mkozhukharenko
mkozhukharenko / get-values.js
Created October 11, 2016 14:02
React and MobX form validation - full example here https://github.com/mkozhukharenko/mobx-form-validation
// trun {fiels: {email: 'val', err:''}} to {email: 'val'}
var getValues = () => {
let data = {};
let form = toJS(this.form).fields;
Object.keys(form).map(key => {
data[key] = form[key].value
});
return data
}