UNPKG

@undermuz/use-form

Version:
161 lines (160 loc) 3.88 kB
// src/useForm/helpers.ts import { useCallback } from "react"; import { FORM_ACTIONS } from "./reducer.js"; var isFormHasErrors = (settings, store, checkOnlyFilled = true) => { const { debug } = settings; const state = store.getState(); const { validate, touched, fields } = state; const newErrors = validate( { ...state, touched: checkOnlyFilled ? touched : Object.keys(fields) }, debug ); return [Object.keys(newErrors).length > 0, newErrors]; }; var useHasFormErrors = (settings, store, _dispatch) => { return useCallback((checkOnlyFilled = true) => { return isFormHasErrors(settings, store, checkOnlyFilled); }, []); }; var useIsFormValid = (settings, store, _dispatch) => { return useCallback((checkOnlyFilled = true) => { return !isFormHasErrors(settings, store, checkOnlyFilled)[0]; }, []); }; var useValidate = (_settings, _store, dispatch) => { return useCallback((checkOnlyFilled = true) => { dispatch({ type: FORM_ACTIONS.VALIDATE_FORM, payload: {}, silent: false, checkOnlyFilled }); }, []); }; var useSetTouched = (_settings, _store, dispatch) => { return useCallback( (newTouched, silent = false, checkOnlyFilled = true) => { dispatch({ type: FORM_ACTIONS.SET_TOUCHED, payload: { touched: newTouched }, silent, checkOnlyFilled }); }, [] ); }; var useSetValues = (_settings, _store, dispatch) => { return useCallback( (newValues, silent = false, checkOnlyFilled = true, type = "system") => { dispatch({ type: FORM_ACTIONS.SET_VALUES, payload: { values: newValues, type }, silent, checkOnlyFilled }); }, [] ); }; var useSetTests = (_settings, _store, dispatch) => { return useCallback( (newTests, silent = false, checkOnlyFilled = true) => { dispatch({ type: FORM_ACTIONS.SET_TESTS, payload: { tests: newTests }, silent, checkOnlyFilled }); }, [] ); }; var useSetErrors = (_settings, _store, dispatch) => { return useCallback((newErrors) => { dispatch({ type: FORM_ACTIONS.SET_ERRORS, payload: { errors: newErrors } }); }, []); }; var useSetCustomErrors = (_settings, _store, dispatch) => { return useCallback((newErrors) => { dispatch({ type: FORM_ACTIONS.SET_CUSTOM_ERRORS, payload: { errors: newErrors } }); }, []); }; var useSetCustomErrorByName = (_settings, _store, dispatch) => { return useCallback((name, value) => { dispatch({ type: FORM_ACTIONS.SET_CUSTOM_ERROR_FIELD, payload: { name, value } }); }, []); }; var useSetFieldValue = (_settings, _store, dispatch) => { return useCallback( (name, value, silent = false, checkOnlyFilled = true, type = "system") => { dispatch({ type: FORM_ACTIONS.SET_VALUE, payload: { name, value, type }, silent, checkOnlyFilled }); }, [] ); }; var useSetFieldTouched = (_settings, _store, dispatch) => { return useCallback( (name, value = true, silent = false) => { dispatch({ type: FORM_ACTIONS.SET_TOUCHED_FIELD, payload: { name, value }, silent }); }, [] ); }; var useSetValidate = (_settings, _store, dispatch) => { return useCallback( (newValidate, silent = false, checkOnlyFilled = true) => { dispatch({ type: FORM_ACTIONS.SET_VALIDATE, payload: newValidate, silent, checkOnlyFilled }); }, [] ); }; export { isFormHasErrors, useHasFormErrors, useIsFormValid, useSetCustomErrorByName, useSetCustomErrors, useSetErrors, useSetFieldTouched, useSetFieldValue, useSetTests, useSetTouched, useSetValidate, useSetValues, useValidate };