cksform
v0.1.6
Published
Simple, lightweight, easy to use react hook form, leveraging HTML5 api for validation
Maintainers
Readme
cksform
Simple react form library using hook
npm install cksformQucik Start
import React from 'react';
import useCKSForm from 'cksform';
const initialValue = {
title: '',
name: '',
age: '',
dob: '',
email_id: '',
mobile_no: ''
}
const Errors = ({ errors = {}, fieldName }) {
const fieldErrors = errors[fieldName];
if (!Array.isArray(fieldErrors) || fieldErrors.length === 0) {
return null;
}
return (
<ul className="error">
{fieldErrors.map((error, index) => (<li key={index}>{error}</li>))}
</ul>
)
}
export default function () {
const { formData, onChangeField, errors, handleSubmit, validateField } = useCKSForm(initialValue);
return (
<form noValidate autoComplete="off">
<label>Title: </label>
<div>
<input type="text" name="title"
required minLength={3}
value={formData.title}
onChange={onChangeField}
onBlur={validateField}
data-display-name="Title" />
<Errors errors={errors} fieldName="title" />
</div>
<label>Name: </label>
<div>
<input type="text" name="name" required
data-display-name="Name"
onChange={onChangeField}
value={formData.name} />
<Errors errors={errors} fieldName="name" />
</div>
<label>Age: </label>
<div>
<input type="number" name="age"
required min="18" max="65"
value={formData.age}
onChange={onChangeField}
onBlur={validateField}
data-display-name="Age" />
<Errors errors={errors} fieldName="age" />
</div>
<label>Date of Birth: </label>
<div>
<input type="date" name="dob"
required min="2018-09-01" max="2025-02-04"
value={formData.dob}
onChange={onChangeField}
onBlur={validateField}
data-display-name="Date of birth" />
<Errors errors={errors} fieldName="dob" />
</div>
<label>Email: </label>
<div>
<input type="email" name="email_id"
required minLength="10"
value={formData.email_id}
onChange={onChangeField}
onBlur={validateField}
data-em-type-mismatch="Invalid email id provided"
data-display-name="Email ID" />
<Errors errors={errors} fieldName="email_id" />
</div>
<label>Contact No: </label>
<div>
<input type="text" name="mobile_no"
required min="2018-09-01" max="2025-02-04"
value={formData.mobile_no}
onChange={onChangeField}
onBlur={validateField}
data-display-name="Mobile No" />
<Errors errors={errors} fieldName="mobile_no" />
</div>
<p />
<input type="button" value="Submit" onClick={handleSubmit()} />
</form>
)
}