1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.default = undefined;
|
5 |
|
6 | var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
7 |
|
8 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
9 |
|
10 | var _extends2 = require('babel-runtime/helpers/extends');
|
11 |
|
12 | var _extends3 = _interopRequireDefault(_extends2);
|
13 |
|
14 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
15 |
|
16 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
17 |
|
18 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
19 |
|
20 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
21 |
|
22 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
23 |
|
24 | var _inherits3 = _interopRequireDefault(_inherits2);
|
25 |
|
26 | var _class, _temp2;
|
27 |
|
28 | var _react = require('react');
|
29 |
|
30 | var _react2 = _interopRequireDefault(_react);
|
31 |
|
32 | var _propTypes = require('prop-types');
|
33 |
|
34 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
35 |
|
36 | var _reactDom = require('react-dom');
|
37 |
|
38 | var _menu = require('../menu');
|
39 |
|
40 | var _menu2 = _interopRequireDefault(_menu);
|
41 |
|
42 | var _virtualList = require('../virtual-list');
|
43 |
|
44 | var _virtualList2 = _interopRequireDefault(_virtualList);
|
45 |
|
46 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
47 |
|
48 | var CascaderMenu = (_temp2 = _class = function (_Component) {
|
49 | (0, _inherits3.default)(CascaderMenu, _Component);
|
50 |
|
51 | function CascaderMenu() {
|
52 | var _temp, _this, _ret;
|
53 |
|
54 | (0, _classCallCheck3.default)(this, CascaderMenu);
|
55 |
|
56 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
57 | args[_key] = arguments[_key];
|
58 | }
|
59 |
|
60 | return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.saveMenuRef = function (ref) {
|
61 | _this.menuEl = ref;
|
62 | }, _this.saveVirtualRef = function (ref) {
|
63 | _this.virtualEl = ref;
|
64 | }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
|
65 | }
|
66 |
|
67 | CascaderMenu.prototype.componentDidMount = function componentDidMount() {
|
68 | this.scrollToSelectedItem();
|
69 | };
|
70 |
|
71 | CascaderMenu.prototype.scrollToSelectedItem = function scrollToSelectedItem() {
|
72 | var _props = this.props,
|
73 | prefix = _props.prefix,
|
74 | useVirtual = _props.useVirtual,
|
75 | children = _props.children;
|
76 |
|
77 | if (!children || children.length === 0) {
|
78 | return;
|
79 | }
|
80 | var selectedIndex = children.findIndex(function (item) {
|
81 | return !!item.props.checked || !!item.props.selected || !!item.props.expanded;
|
82 | });
|
83 |
|
84 | if (selectedIndex === -1) {
|
85 | return;
|
86 | }
|
87 |
|
88 | if (useVirtual) {
|
89 | var instance = this.virtualEl.getInstance();
|
90 | setTimeout(function () {
|
91 | return instance.scrollTo(selectedIndex);
|
92 | }, 0);
|
93 | } else {
|
94 | var itemSelector = '.' + prefix + 'menu-item';
|
95 | var menu = (0, _reactDom.findDOMNode)(this.menuEl);
|
96 | var targetItem = menu.querySelectorAll(itemSelector)[selectedIndex];
|
97 | if (targetItem) {
|
98 | menu.scrollTop = targetItem.offsetTop - Math.floor((menu.clientHeight / targetItem.clientHeight - 1) / 2) * targetItem.clientHeight;
|
99 | }
|
100 | }
|
101 | };
|
102 |
|
103 | CascaderMenu.prototype.renderMenu = function renderMenu(items, ref, props) {
|
104 | var _this2 = this;
|
105 |
|
106 | return _react2.default.createElement(
|
107 | _menu2.default,
|
108 | (0, _extends3.default)({ ref: ref, role: 'listbox' }, props),
|
109 | items.map(function (node) {
|
110 | if (_react2.default.isValidElement(node) && node.type.menuChildType === 'item') {
|
111 | return _react2.default.cloneElement(node, {
|
112 | menu: _this2
|
113 | });
|
114 | }
|
115 |
|
116 | return node;
|
117 | })
|
118 | );
|
119 | };
|
120 |
|
121 | CascaderMenu.prototype.render = function render() {
|
122 | var _this3 = this;
|
123 |
|
124 | var _props2 = this.props,
|
125 | prefix = _props2.prefix,
|
126 | useVirtual = _props2.useVirtual,
|
127 | className = _props2.className,
|
128 | style = _props2.style,
|
129 | children = _props2.children,
|
130 | others = (0, _objectWithoutProperties3.default)(_props2, ['prefix', 'useVirtual', 'className', 'style', 'children']);
|
131 |
|
132 | var menuProps = (0, _extends3.default)({
|
133 | labelToggleChecked: false,
|
134 | className: prefix + 'cascader-menu'
|
135 | }, others);
|
136 | return _react2.default.createElement(
|
137 | 'div',
|
138 | {
|
139 | ref: this.saveMenuRef,
|
140 | className: prefix + 'cascader-menu-wrapper ' + (className ? className : ''),
|
141 | style: style
|
142 | },
|
143 | useVirtual ? _react2.default.createElement(
|
144 | _virtualList2.default,
|
145 | {
|
146 | ref: this.saveVirtualRef,
|
147 | itemsRenderer: function itemsRenderer(items, ref) {
|
148 | return _this3.renderMenu(items, ref, menuProps);
|
149 | }
|
150 | },
|
151 | children
|
152 | ) : this.renderMenu(children, undefined, menuProps)
|
153 | );
|
154 | };
|
155 |
|
156 | return CascaderMenu;
|
157 | }(_react.Component), _class.propTypes = {
|
158 | prefix: _propTypes2.default.string,
|
159 | className: _propTypes2.default.string,
|
160 | useVirtual: _propTypes2.default.bool,
|
161 | children: _propTypes2.default.node
|
162 | }, _temp2);
|
163 | CascaderMenu.displayName = 'CascaderMenu';
|
164 | exports.default = CascaderMenu;
|
165 | module.exports = exports['default']; |
\ | No newline at end of file |