use-state-validate
v3.0.1
Published
Clean featherweight state validation
Downloads
211,247
Maintainers
Readme
use-state-validate
Repo: https://gitlab.com/tkil/use-state-validate
📖 Documentation 📖
Install
# npm
npm install use-state-validate
# yarn
yarn add use-state-validate
# pnpm
pnpm install use-state-validate
import useStateValidate from 'use-state-validate'; // ESM
// or
const useStateValidate = require('use-state-validate'); // CJS
Summary
This package is a custom hook that extends useState to provide validation. use-state-validate is strictly focused on the validation of field values and does not try to handle every facet of form logic. Great effort was spent to make the utility razor thin to help you keep your overall bundle size small.
Basic Use
import useStateValidate, { ruleEmail } from "use-state-validate"
export const SomeComponent = () => {
const field = useStateValidate("", {
label: "Email",
required: true,
cueDelay: 0,
rules: [[ruleEmail(), "Email must be in a valid format"]],
})
return (
<form>
<label htmlFor="email">Email</label>
<input
id="email"
aria-invalid={field.cueInvalid || undefined}
value={field.value}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.setValue(e.target.value)}
/>
{field.cueInvalid && <div aria-live="polite">{field.errors[0]}</div>}
</form>
)
}
See Documentation for full usage and API.
Package size @ Bundlephobia
Changelog
- v3.0.1 - Fixes ruleLength bug on min logic.
- v3.0.0 - Overhaul, leans heavy on cuing concepts for smooth UX. Lib made leaner and more flexible.
- v2.5.4 - Bugfix - required, message type
- v2.5.1 - Bugfix
- v2.4.0 - Adds name to IStateValidateRules and validation wrapper
- v2.3.0 - Exposes IStateValidateRules
- v2.2.0 - Adds types to rules object
- v2.1.0 - Adds types to validation wrapper
- v2.0.3 - React version bugfix
- v2.0.0 - Drops 3rd party dep and this project does its own validation
- v1.0.6 - No breaking changes, but departs from 3rd party dep
- v1.0.5 - Fixes bug where clean used after set does not honor set's mutation
- v1.0.1 - v1.0.4 - Readme updates - no code changes
- v1.0.0 - Hook has been stable in projects, bumping to initial release
- v0.0.x - Initial dev release - ASSUME UNSTABLE