Data driven forms

import React from 'react';

import FormRenderer from '@data-driven-forms/react-form-renderer/form-renderer';

import componentTypes from '@data-driven-forms/react-form-renderer/component-types';

import componentMapper from '@data-driven-forms/pf4-component-mapper/component-mapper';

import FormTemplate from '@data-driven-forms/pf4-component-mapper/form-template';

const validatorMapper = {

'same-email': () => (

value, allValues

) => (

value !== allValues.email ?

'Email does not match' :

undefined

)

}

const schema = {

fields: [{

component: componentTypes.TEXT_FIELD,

name: 'name',

label: 'Your name',

isRequired: true,

validate: [{ type: validatorTypes.REQUIRED }]

}, {

component: componentTypes.TEXT_FIELD,

name: 'email',

label: 'Email',

isRequired: true,

validate: [

{ type: validatorTypes.REQUIRED },

{

type: validatorTypes.PATTERN,

pattern: '[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,}$',

message: 'Not valid email'

}

]

},{

component: componentTypes.TEXT_FIELD,

name: 'confirm-email',

label: 'Confirm email',

type: 'email',

isRequired: true,

validate: [{ type: 'same-email' }]

},{

component: componentTypes.CHECKBOX,

name: 'newsletters',

label: 'I want to receive newsletter'

}]

}

const Form = () => (

<FormRenderer

schema={schema}

componentMapper={componentMapper}

FormTemplate={FormTemplate}

onSubmit={console.log}

validatorMapper={validatorMapper}

/>