UNPKG

@vnmfify/core

Version:

```shell npm i @vnmfify/core -S ```

55 lines (47 loc) 2.9 kB
import _isEmpty from "lodash/isEmpty"; import _first from "lodash/first"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import { useForceUpdate } from "@vnmfify/hooks"; import { useCallback, useContext, useEffect, useMemo } from "react"; import { useRendered } from "../utils/state"; import FormContext from "./form.context"; import useForm from "./use-form"; export default function useFormError(name) { var { name: formName } = useContext(FormContext); var form = useForm(formName); var forceUpdate = useForceUpdate(); var onErrorChange = useCallback(() => forceUpdate(), [forceUpdate]); useEffect(() => { form === null || form === void 0 ? void 0 : form.addEventListener("fields.".concat(name, ".error.change"), onErrorChange); return () => form === null || form === void 0 ? void 0 : form.removeEventListener("fields.".concat(name, ".error.change"), onErrorChange); }, [form, name, onErrorChange]); var getError = useCallback(() => _first(form === null || form === void 0 ? void 0 : form.getErrors(name)), [form, name]); var setError = useCallback(error => { if (name) { form === null || form === void 0 ? void 0 : form.setErrors([_objectSpread(_objectSpread({}, error), {}, { name })]); } }, [form, name]); var resetError = useCallback(() => setError({ errors: [] }), [setError]); var validateStatus = useRendered(() => { var _getError; return _isEmpty((_getError = getError()) === null || _getError === void 0 ? void 0 : _getError.errors) ? "valid" : "invalid"; }); return useMemo(() => ({ validateStatus, get error() { return getError(); }, getError, setError, resetError }), [getError, resetError, setError, validateStatus]); } //# sourceMappingURL=use-form-error.js.map