UNPKG

@e-group/material-formik

Version:

Custom react components for integrate redux-form.

40 lines (33 loc) 1.24 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useFieldStatus; var React = _interopRequireWildcard(require("react")); var _formik = require("formik"); function useFieldStatus(field, form, disabledProp) { const isSubmitting = form.isSubmitting, touchedProp = form.touched, errors = form.errors, submitCount = form.submitCount, setFieldTouched = form.setFieldTouched; const fieldError = (0, _formik.getIn)(errors, field.name); const touched = (0, _formik.getIn)(touchedProp, field.name); const showError = touched && !!fieldError; const disabled = disabledProp !== null && disabledProp !== void 0 ? disabledProp : isSubmitting; // Equals to field.value !== undefined && field.value !== null const hasValue = !(field.value == null); // Need this to solve touched issue. // https://github.com/formium/formik/issues/445 React.useEffect(() => { if (submitCount > 0) { setFieldTouched(field.name); } }, [field.name, setFieldTouched, submitCount]); return { touched, fieldError, showError, disabled, hasValue }; }