1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 | exports.default = undefined;
|
5 |
|
6 | var _extends2 = require('babel-runtime/helpers/extends');
|
7 |
|
8 | var _extends3 = _interopRequireDefault(_extends2);
|
9 |
|
10 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
11 |
|
12 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
13 |
|
14 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
15 |
|
16 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
17 |
|
18 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
19 |
|
20 | var _inherits3 = _interopRequireDefault(_inherits2);
|
21 |
|
22 | var _class, _temp;
|
23 |
|
24 | var _react = require('react');
|
25 |
|
26 | var _react2 = _interopRequireDefault(_react);
|
27 |
|
28 | var _propTypes = require('prop-types');
|
29 |
|
30 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
31 |
|
32 | var _classnames = require('classnames');
|
33 |
|
34 | var _classnames2 = _interopRequireDefault(_classnames);
|
35 |
|
36 | var _icon = require('../../icon');
|
37 |
|
38 | var _icon2 = _interopRequireDefault(_icon);
|
39 |
|
40 | var _util = require('../../util');
|
41 |
|
42 | var _item = require('./item');
|
43 |
|
44 | var _item2 = _interopRequireDefault(_item);
|
45 |
|
46 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
47 |
|
48 | var bindCtx = _util.func.bindCtx;
|
49 | var pickOthers = _util.obj.pickOthers;
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 | var SelectableItem = (_temp = _class = function (_Component) {
|
57 | (0, _inherits3.default)(SelectableItem, _Component);
|
58 |
|
59 | function SelectableItem(props) {
|
60 | (0, _classCallCheck3.default)(this, SelectableItem);
|
61 |
|
62 | var _this = (0, _possibleConstructorReturn3.default)(this, _Component.call(this, props));
|
63 |
|
64 | bindCtx(_this, ['handleKeyDown', 'handleClick']);
|
65 | return _this;
|
66 | }
|
67 |
|
68 | SelectableItem.prototype.getSelected = function getSelected() {
|
69 | var _props = this.props,
|
70 | _key = _props._key,
|
71 | root = _props.root,
|
72 | selected = _props.selected;
|
73 | var selectMode = root.props.selectMode;
|
74 | var selectedKeys = root.state.selectedKeys;
|
75 |
|
76 | return selected || !!selectMode && selectedKeys.indexOf(_key) > -1;
|
77 | };
|
78 |
|
79 | SelectableItem.prototype.handleSelect = function handleSelect(e) {
|
80 | var _props2 = this.props,
|
81 | _key = _props2._key,
|
82 | root = _props2.root,
|
83 | onSelect = _props2.onSelect;
|
84 |
|
85 | if (onSelect) {
|
86 | onSelect(!this.getSelected(), this, e);
|
87 | } else {
|
88 | root.handleSelect(_key, !this.getSelected(), this);
|
89 | }
|
90 | };
|
91 |
|
92 | SelectableItem.prototype.handleKeyDown = function handleKeyDown(e) {
|
93 | if (e.keyCode === _util.KEYCODE.SPACE && !this.props.disabled) {
|
94 | this.handleSelect(e);
|
95 | }
|
96 |
|
97 | this.props.onKeyDown && this.props.onKeyDown(e);
|
98 | };
|
99 |
|
100 | SelectableItem.prototype.handleClick = function handleClick(e) {
|
101 | this.handleSelect(e);
|
102 |
|
103 | this.props.onClick && this.props.onClick(e);
|
104 | };
|
105 |
|
106 | SelectableItem.prototype.renderSelectedIcon = function renderSelectedIcon(selected) {
|
107 | var _cx;
|
108 |
|
109 | var _props3 = this.props,
|
110 | root = _props3.root,
|
111 | inlineIndent = _props3.inlineIndent,
|
112 | needIndent = _props3.needIndent,
|
113 | hasSelectedIcon = _props3.hasSelectedIcon,
|
114 | isSelectIconRight = _props3.isSelectIconRight,
|
115 | type = _props3.type;
|
116 | var _root$props = root.props,
|
117 | prefix = _root$props.prefix,
|
118 | rootSelectedIcon = _root$props.hasSelectedIcon,
|
119 | rootSelectIconRight = _root$props.isSelectIconRight,
|
120 | icons = _root$props.icons;
|
121 |
|
122 |
|
123 | var iconsSelect = icons.select;
|
124 |
|
125 | if (!(0, _react.isValidElement)(icons.select) && icons.select) {
|
126 | iconsSelect = _react2.default.createElement(
|
127 | 'span',
|
128 | null,
|
129 | icons.select
|
130 | );
|
131 | }
|
132 |
|
133 | var cls = (0, _classnames2.default)((_cx = {}, _cx[prefix + 'menu-icon-selected'] = true, _cx[prefix + 'menu-symbol-icon-selected'] = !iconsSelect, _cx[prefix + 'menu-icon-right'] = ('isSelectIconRight' in this.props ? isSelectIconRight : rootSelectIconRight) && type !== 'submenu', _cx));
|
134 |
|
135 | return ('hasSelectedIcon' in this.props ? hasSelectedIcon : rootSelectedIcon) && selected ? _react2.default.cloneElement(iconsSelect || _react2.default.createElement(_icon2.default, { type: 'select' }), {
|
136 | style: needIndent && inlineIndent > 0 ? { left: inlineIndent + 'px' } : null,
|
137 | className: cls
|
138 | }) : null;
|
139 | };
|
140 |
|
141 | SelectableItem.prototype.render = function render() {
|
142 | var _cx2;
|
143 |
|
144 | var _props4 = this.props,
|
145 | _key = _props4._key,
|
146 | root = _props4.root,
|
147 | className = _props4.className,
|
148 | disabled = _props4.disabled,
|
149 | helper = _props4.helper,
|
150 | children = _props4.children,
|
151 | needIndent = _props4.needIndent;
|
152 | var prefix = root.props.prefix;
|
153 |
|
154 | var others = pickOthers(Object.keys(SelectableItem.propTypes), this.props);
|
155 | var selected = this.getSelected();
|
156 |
|
157 | var newProps = (0, _extends3.default)({
|
158 | _key: _key,
|
159 | root: root,
|
160 | disabled: disabled,
|
161 | type: 'item',
|
162 | className: (0, _classnames2.default)((_cx2 = {}, _cx2[prefix + 'selected'] = selected, _cx2[className] = !!className, _cx2)),
|
163 | onKeyDown: this.handleKeyDown,
|
164 | onClick: !disabled ? this.handleClick : this.props.onClick,
|
165 | needIndent: needIndent
|
166 | }, others);
|
167 |
|
168 | if (!('title' in newProps) && typeof children === 'string') {
|
169 | newProps.title = children;
|
170 | }
|
171 |
|
172 | var textProps = {};
|
173 |
|
174 | if ('selectMode' in root.props) {
|
175 | textProps['aria-selected'] = selected;
|
176 | }
|
177 |
|
178 | return _react2.default.createElement(
|
179 | _item2.default,
|
180 | newProps,
|
181 | this.renderSelectedIcon(selected),
|
182 | _react2.default.createElement(
|
183 | 'span',
|
184 | (0, _extends3.default)({ className: prefix + 'menu-item-text' }, textProps),
|
185 | children
|
186 | ),
|
187 | helper ? _react2.default.createElement(
|
188 | 'div',
|
189 | { className: prefix + 'menu-item-helper' },
|
190 | helper
|
191 | ) : null
|
192 | );
|
193 | };
|
194 |
|
195 | return SelectableItem;
|
196 | }(_react.Component), _class.menuChildType = 'item', _class.propTypes = {
|
197 | _key: _propTypes2.default.string,
|
198 | root: _propTypes2.default.object,
|
199 | selected: _propTypes2.default.bool,
|
200 | onSelect: _propTypes2.default.func,
|
201 | inlineIndent: _propTypes2.default.number,
|
202 | |
203 |
|
204 |
|
205 | disabled: _propTypes2.default.bool,
|
206 | |
207 |
|
208 |
|
209 | helper: _propTypes2.default.node,
|
210 | |
211 |
|
212 |
|
213 | children: _propTypes2.default.node,
|
214 | className: _propTypes2.default.string,
|
215 | onKeyDown: _propTypes2.default.func,
|
216 | onClick: _propTypes2.default.func,
|
217 | needIndent: _propTypes2.default.bool,
|
218 | hasSelectedIcon: _propTypes2.default.bool,
|
219 | isSelectIconRight: _propTypes2.default.bool,
|
220 | icons: _propTypes2.default.object
|
221 | }, _class.defaultProps = {
|
222 | disabled: false,
|
223 | needIndent: true,
|
224 | icons: {}
|
225 | }, _temp);
|
226 | SelectableItem.displayName = 'SelectableItem';
|
227 | exports.default = SelectableItem;
|
228 | module.exports = exports['default']; |
\ | No newline at end of file |