@braineet/ui
Version:
Braineet design system
41 lines (40 loc) • 1.46 kB
JavaScript
;
exports.__esModule = true;
exports.default = exports.FocusError = void 0;
var _react = require("react");
var _formik = require("formik");
var FocusError = exports.FocusError = function FocusError(_ref) {
var _ref$focusDelay = _ref.focusDelay,
focusDelay = _ref$focusDelay === void 0 ? 100 : _ref$focusDelay,
onFocus = _ref.onFocus;
var _useFormikContext = (0, _formik.useFormikContext)(),
isSubmitting = _useFormikContext.isSubmitting,
touched = _useFormikContext.touched,
isValidating = _useFormikContext.isValidating,
errors = _useFormikContext.errors;
(0, _react.useEffect)(function () {
if (isSubmitting && !isValidating) {
var errorNames = Object.keys(touched).reduce(function (prev, key) {
if ((0, _formik.getIn)(errors, key)) {
prev.push(key);
}
return prev;
}, []);
if (errorNames.length && typeof document !== 'undefined') {
var errorElement;
errorNames.forEach(function (errorKey) {
var selector = "[name=\"" + errorKey + "\"]";
if (!errorElement) {
errorElement = document.querySelector(selector);
}
});
setTimeout(function () {
if (errorElement) errorElement.focus();
if (onFocus) onFocus();
}, focusDelay);
}
}
}, [isSubmitting, isValidating, errors, touched, focusDelay]);
return null;
};
var _default = exports.default = FocusError;