@e-group/material-formik
Version:
Custom react components for integrate redux-form.
40 lines (33 loc) • 1.24 kB
JavaScript
;
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
};
}