UNPKG

4.53 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4exports.default = undefined;
5
6var _extends2 = require('babel-runtime/helpers/extends');
7
8var _extends3 = _interopRequireDefault(_extends2);
9
10var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
11
12var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
13
14var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
15
16var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
17
18var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
19
20var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
21
22var _inherits2 = require('babel-runtime/helpers/inherits');
23
24var _inherits3 = _interopRequireDefault(_inherits2);
25
26var _class, _temp2; /* istanbul ignore file */
27
28
29var _react = require('react');
30
31var _react2 = _interopRequireDefault(_react);
32
33var _propTypes = require('prop-types');
34
35var _propTypes2 = _interopRequireDefault(_propTypes);
36
37var _reactDom = require('react-dom');
38
39var _menu = require('../../menu');
40
41var _menu2 = _interopRequireDefault(_menu);
42
43function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44
45var SelectMenu = (_temp2 = _class = function (_Component) {
46 (0, _inherits3.default)(SelectMenu, _Component);
47
48 function SelectMenu() {
49 var _temp, _this, _ret;
50
51 (0, _classCallCheck3.default)(this, SelectMenu);
52
53 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
54 args[_key] = arguments[_key];
55 }
56
57 return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.saveRef = function (ref) {
58 _this.menuEl = ref;
59 }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
60 }
61
62 SelectMenu.prototype.componentDidMount = function componentDidMount() {
63 this.scrollToSelectedItem();
64 };
65
66 SelectMenu.prototype.scrollToSelectedItem = function scrollToSelectedItem() {
67 var _props = this.props,
68 prefix = _props.prefix,
69 dataSource = _props.dataSource,
70 value = _props.value;
71
72
73 var selectedIndex = dataSource.findIndex(function (item) {
74 return item.value === value;
75 });
76
77 if (selectedIndex === -1) {
78 return;
79 }
80
81 var itemSelector = '.' + prefix + 'menu-item';
82 var menu = (0, _reactDom.findDOMNode)(this.menuEl);
83 var targetItem = menu.querySelectorAll(itemSelector)[selectedIndex];
84 if (targetItem) {
85 menu.scrollTop = targetItem.offsetTop - Math.floor((menu.clientHeight / targetItem.clientHeight - 1) / 2) * targetItem.clientHeight;
86 }
87 };
88
89 SelectMenu.prototype.render = function render() {
90 var _props2 = this.props,
91 prefix = _props2.prefix,
92 dataSource = _props2.dataSource,
93 onChange = _props2.onChange,
94 value = _props2.value,
95 className = _props2.className,
96 others = (0, _objectWithoutProperties3.default)(_props2, ['prefix', 'dataSource', 'onChange', 'value', 'className']);
97
98 return _react2.default.createElement(
99 _menu2.default,
100 (0, _extends3.default)({}, others, {
101 ref: this.saveRef,
102 selectMode: 'single',
103 selectedKeys: [String(value)],
104 onSelect: function onSelect(selectKeys) {
105 return onChange(Number(selectKeys[0]));
106 },
107 role: 'listbox',
108 className: prefix + 'calendar-panel-menu ' + className
109 }),
110 dataSource.map(function (_ref) {
111 var label = _ref.label,
112 value = _ref.value;
113 return _react2.default.createElement(
114 _menu2.default.Item,
115 { key: value },
116 label
117 );
118 })
119 );
120 };
121
122 return SelectMenu;
123}(_react.Component), _class.isNextMenu = true, _class.propTypes = {
124 dataSource: _propTypes2.default.arrayOf(_propTypes2.default.object),
125 value: _propTypes2.default.number,
126 prefix: _propTypes2.default.string,
127 onChange: _propTypes2.default.func,
128 children: _propTypes2.default.node
129}, _temp2);
130SelectMenu.displayName = 'SelectMenu';
131exports.default = SelectMenu;
132module.exports = exports['default'];
\No newline at end of file