UNPKG

react-vite-themes

Version:

A test/experimental React theme system created for learning purposes. Features atomic design components, SCSS variables, and dark/light theme support. Not intended for production use.

32 lines (31 loc) 1.17 kB
import { useCallback } from 'react'; import { useFormContext } from './useFormContext'; export const useFormValidation = () => { const form = useFormContext(); const createCrossFieldValidator = useCallback((_fieldName, validateFn) => ({ required: true, custom: (value) => validateFn(value, form.values) }), [form.values]); const createPasswordConfirmationValidator = useCallback((passwordField) => ({ required: true, custom: (value) => { const password = form.values[passwordField]; return value !== password ? 'Passwords do not match' : null; } }), [form.values]); const createConditionalValidator = useCallback((condition, validator) => ({ ...validator, custom: (value) => { if (!condition(form.values)) { return null; // Skip validation if condition is not met } return validator.custom ? validator.custom(value) : null; } }), [form.values]); return { createCrossFieldValidator, createPasswordConfirmationValidator, createConditionalValidator, form }; };