@undermuz/use-form
Version:
React library for build forms
161 lines (160 loc) • 3.88 kB
JavaScript
// 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
};