1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.cloneAndAddKey = cloneAndAddKey;
|
5 | exports.scrollToFirstError = scrollToFirstError;
|
6 |
|
7 | var _react = require('react');
|
8 |
|
9 | var _reactDom = require('react-dom');
|
10 |
|
11 | var _reactDom2 = _interopRequireDefault(_reactDom);
|
12 |
|
13 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14 |
|
15 | function 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 |
|
23 | function 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 |