UNPKG

1.79 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4exports.cloneAndAddKey = cloneAndAddKey;
5exports.scrollToFirstError = scrollToFirstError;
6
7var _react = require('react');
8
9var _reactDom = require('react-dom');
10
11var _reactDom2 = _interopRequireDefault(_reactDom);
12
13function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
15function cloneAndAddKey(element) {
16 if (element && (0, _react.isValidElement)(element)) {
17 var key = element.key || 'error';
18 return (0, _react.cloneElement)(element, { key: key });
19 }
20 return element;
21}
22
23function scrollToFirstError(_ref) {
24 var errorsGroup = _ref.errorsGroup,
25 options = _ref.options,
26 instance = _ref.instance;
27
28 if (errorsGroup && options.scrollToFirstError) {
29 var firstNode = void 0;
30 var firstTop = void 0;
31 for (var i in errorsGroup) {
32 if (errorsGroup.hasOwnProperty(i)) {
33 var node = _reactDom2.default.findDOMNode(instance[i]);
34 if (!node) {
35 return;
36 }
37 var top = node.offsetTop;
38 if (firstTop === undefined || firstTop > top) {
39 firstTop = top;
40 firstNode = node;
41 }
42 }
43 }
44
45 if (firstNode) {
46 if (typeof options.scrollToFirstError === 'number' && window && typeof window.scrollTo === 'function') {
47 var offsetLeft = document && document.body && document.body.offsetLeft ? document.body.offsetLeft : 0;
48 window.scrollTo(offsetLeft, firstTop + options.scrollToFirstError);
49 } else if (firstNode.scrollIntoViewIfNeeded) {
50 firstNode.scrollIntoViewIfNeeded(true);
51 }
52 }
53 }
54}
\No newline at end of file