UNPKG

focus-formik-error

Version:
63 lines (50 loc) 8.01 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.FocusError = FocusError; var _react = _interopRequireWildcard(require("react")); var _formik = require("formik"); var _flattenToLodashFormat = _interopRequireDefault(require("./flattenToLodashFormat")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function FocusError(_ref) { var _ref$formik = _ref.formik, isSubmitting = _ref$formik.isSubmitting, touched = _ref$formik.touched, isValidating = _ref$formik.isValidating, errors = _ref$formik.errors, _ref$focusDelay = _ref.focusDelay, focusDelay = _ref$focusDelay === void 0 ? 100 : _ref$focusDelay; (0, _react.useEffect)(function () { if (isSubmitting && !isValidating) { // Flatten touched as a way to check nested keys easily and // fix the depth problem when the error text is created // by a React component like react-intl. var flattedTouched = (0, _flattenToLodashFormat["default"])(touched); var errorNames = Object.keys(flattedTouched).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=\"".concat(errorKey, "\"]"); if (!errorElement) { errorElement = document.querySelector(selector); return; } }); // This is to avoid the other components autofocus when submitting setTimeout(function () { errorElement && errorElement.focus(); }, focusDelay); } } }, [isSubmitting, isValidating, errors, touched, focusDelay]); return /*#__PURE__*/_react["default"].createElement(_react.Fragment, null); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Gb2N1c0Vycm9yLnRzeCJdLCJuYW1lcyI6WyJGb2N1c0Vycm9yIiwiZm9ybWlrIiwiaXNTdWJtaXR0aW5nIiwidG91Y2hlZCIsImlzVmFsaWRhdGluZyIsImVycm9ycyIsImZvY3VzRGVsYXkiLCJmbGF0dGVkVG91Y2hlZCIsImVycm9yTmFtZXMiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicHJldiIsImtleSIsInB1c2giLCJsZW5ndGgiLCJkb2N1bWVudCIsImVycm9yRWxlbWVudCIsImZvckVhY2giLCJlcnJvcktleSIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsInNldFRpbWVvdXQiLCJmb2N1cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBc0JPLFNBQVNBLFVBQVQsT0FHYTtBQUFBLHlCQUZsQkMsTUFFa0I7QUFBQSxNQUZSQyxZQUVRLGVBRlJBLFlBRVE7QUFBQSxNQUZNQyxPQUVOLGVBRk1BLE9BRU47QUFBQSxNQUZlQyxZQUVmLGVBRmVBLFlBRWY7QUFBQSxNQUY2QkMsTUFFN0IsZUFGNkJBLE1BRTdCO0FBQUEsNkJBRGxCQyxVQUNrQjtBQUFBLE1BRGxCQSxVQUNrQixnQ0FETCxHQUNLO0FBQ2xCLHdCQUFVLFlBQU07QUFDZCxRQUFJSixZQUFZLElBQUksQ0FBQ0UsWUFBckIsRUFBbUM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsVUFBTUcsY0FBYyxHQUFHLHVDQUFzQkosT0FBdEIsQ0FBdkI7QUFFQSxVQUFNSyxVQUFVLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSCxjQUFaLEVBQTRCSSxNQUE1QixDQUFtQyxVQUFDQyxJQUFELEVBQU9DLEdBQVAsRUFBZTtBQUNuRSxZQUFJLG1CQUFNUixNQUFOLEVBQWNRLEdBQWQsQ0FBSixFQUF3QjtBQUN0QkQsVUFBQUEsSUFBSSxDQUFDRSxJQUFMLENBQVVELEdBQVY7QUFDRDs7QUFDRCxlQUFPRCxJQUFQO0FBQ0QsT0FMa0IsRUFLaEIsRUFMZ0IsQ0FBbkI7O0FBT0EsVUFBSUosVUFBVSxDQUFDTyxNQUFYLElBQXFCLE9BQU9DLFFBQVAsS0FBb0IsV0FBN0MsRUFBMEQ7QUFDeEQsWUFBSUMsWUFBSjtBQUVBVCxRQUFBQSxVQUFVLENBQUNVLE9BQVgsQ0FBbUIsVUFBQ0MsUUFBRCxFQUFjO0FBQy9CLGNBQU1DLFFBQVEscUJBQWFELFFBQWIsUUFBZDs7QUFDQSxjQUFJLENBQUNGLFlBQUwsRUFBbUI7QUFDakJBLFlBQUFBLFlBQVksR0FBR0QsUUFBUSxDQUFDSyxhQUFULENBQXVCRCxRQUF2QixDQUFmO0FBQ0E7QUFDRDtBQUNGLFNBTkQsRUFId0QsQ0FXeEQ7O0FBQ0FFLFFBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2ZMLFVBQUFBLFlBQVksSUFBSUEsWUFBWSxDQUFDTSxLQUFiLEVBQWhCO0FBQ0QsU0FGUyxFQUVQakIsVUFGTyxDQUFWO0FBR0Q7QUFDRjtBQUNGLEdBL0JELEVBK0JHLENBQUNKLFlBQUQsRUFBZUUsWUFBZixFQUE2QkMsTUFBN0IsRUFBcUNGLE9BQXJDLEVBQThDRyxVQUE5QyxDQS9CSDtBQWlDQSxzQkFBTyxnQ0FBQyxlQUFELE9BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBnZXRJbiwgRm9ybWlrQ29udGV4dFR5cGUsIEZvcm1pa1ZhbHVlcyB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBmbGF0dGVuVG9Mb2Rhc2hGb3JtYXQgZnJvbSBcIi4vZmxhdHRlblRvTG9kYXNoRm9ybWF0XCI7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgZm9jdXMgdGhlIGZpcnN0IGVycm9yIGluIHRoZSBGb3JtaWsgZm9ybSBhZnRlciB0aGUgdmFsaWRhdGlvbi5cbiAqIE5vdGU6IFRoZSBmaXJzdCBpcyBub3QgbmVjZXNzYXJ5IHRoZSBmaXJzdCBvbiB0aGUgc2NyZWVuLCBpdCdzIGp1c3QgdGhlIGZpcnN0XG4gKiBrZXkgaW4gdGhlIHRvdWNoZWQgb2JqZWN0LCBvcmRlciBpcyBub3QgZ3VhcmFudGVlZC5cbiAqICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9jdXNFcnJvclByb3BzIHtcbiAgLyoqXG4gICAqIFZhbHVlcyBmcm9tIEZvcm1payBwcm92aWRlci5cbiAgICovXG4gIGZvcm1pazogUGljazxcbiAgRm9ybWlrQ29udGV4dFR5cGU8Rm9ybWlrVmFsdWVzPixcbiAgICBcImlzU3VibWl0dGluZ1wiIHwgXCJ0b3VjaGVkXCIgfCBcImlzVmFsaWRhdGluZ1wiIHwgXCJlcnJvcnNcIlxuICA+O1xuICAvKipcbiAgICogVGltZSBpbiBtcyB0byBleGVjdXRlIHRoZSBmb2N1cyBpbiB0aGUgY29tcG9uZW50IHdpdGggdGhlIGVycm9yLCBieSBkZWZhdWx0IDEwMG1zLlxuICAgKi9cbiAgZm9jdXNEZWxheT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZvY3VzRXJyb3Ioe1xuICBmb3JtaWs6IHsgaXNTdWJtaXR0aW5nLCB0b3VjaGVkLCBpc1ZhbGlkYXRpbmcsIGVycm9ycyB9LFxuICBmb2N1c0RlbGF5ID0gMTAwLFxufTogRm9jdXNFcnJvclByb3BzKSB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU3VibWl0dGluZyAmJiAhaXNWYWxpZGF0aW5nKSB7XG4gICAgICAvLyBGbGF0dGVuIHRvdWNoZWQgYXMgYSB3YXkgdG8gY2hlY2sgbmVzdGVkIGtleXMgZWFzaWx5IGFuZFxuICAgICAgLy8gZml4IHRoZSBkZXB0aCBwcm9ibGVtIHdoZW4gdGhlIGVycm9yIHRleHQgaXMgY3JlYXRlZFxuICAgICAgLy8gYnkgYSBSZWFjdCBjb21wb25lbnQgbGlrZSByZWFjdC1pbnRsLlxuICAgICAgY29uc3QgZmxhdHRlZFRvdWNoZWQgPSBmbGF0dGVuVG9Mb2Rhc2hGb3JtYXQodG91Y2hlZCk7XG5cbiAgICAgIGNvbnN0IGVycm9yTmFtZXMgPSBPYmplY3Qua2V5cyhmbGF0dGVkVG91Y2hlZCkucmVkdWNlKChwcmV2LCBrZXkpID0+IHtcbiAgICAgICAgaWYgKGdldEluKGVycm9ycywga2V5KSkge1xuICAgICAgICAgIHByZXYucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSwgW10gYXMgc3RyaW5nW10pO1xuXG4gICAgICBpZiAoZXJyb3JOYW1lcy5sZW5ndGggJiYgdHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxldCBlcnJvckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgICAgICBlcnJvck5hbWVzLmZvckVhY2goKGVycm9yS2V5KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBgW25hbWU9XCIke2Vycm9yS2V5fVwiXWA7XG4gICAgICAgICAgaWYgKCFlcnJvckVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVycm9yRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVGhpcyBpcyB0byBhdm9pZCB0aGUgb3RoZXIgY29tcG9uZW50cyBhdXRvZm9jdXMgd2hlbiBzdWJtaXR0aW5nXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGVycm9yRWxlbWVudCAmJiBlcnJvckVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSwgZm9jdXNEZWxheSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nLCBpc1ZhbGlkYXRpbmcsIGVycm9ycywgdG91Y2hlZCwgZm9jdXNEZWxheV0pO1xuXG4gIHJldHVybiA8RnJhZ21lbnQgLz47XG59XG4iXX0=