UNPKG

rc-select

Version:
217 lines (175 loc) 7.47 kB
'use strict'; exports.__esModule = true; var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _rcTrigger = require('rc-trigger'); var _rcTrigger2 = _interopRequireDefault(_rcTrigger); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _DropdownMenu = require('./DropdownMenu'); var _DropdownMenu2 = _interopRequireDefault(_DropdownMenu); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _util = require('./util'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } _rcTrigger2['default'].displayName = 'Trigger'; var BUILT_IN_PLACEMENTS = { bottomLeft: { points: ['tl', 'bl'], offset: [0, 4], overflow: { adjustX: 0, adjustY: 1 } }, topLeft: { points: ['bl', 'tl'], offset: [0, -4], overflow: { adjustX: 0, adjustY: 1 } } }; var SelectTrigger = function (_React$Component) { (0, _inherits3['default'])(SelectTrigger, _React$Component); function SelectTrigger() { var _temp, _this, _ret; (0, _classCallCheck3['default'])(this, SelectTrigger); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3['default'])(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { dropdownWidth: null }, _this.setDropdownWidth = function () { var width = _reactDom2['default'].findDOMNode(_this).offsetWidth; if (width !== _this.state.dropdownWidth) { _this.setState({ dropdownWidth: width }); } }, _this.getInnerMenu = function () { return _this.dropdownMenuRef && _this.dropdownMenuRef.menuRef; }, _this.getPopupDOMNode = function () { return _this.triggerRef.getPopupDomNode(); }, _this.getDropdownElement = function (newProps) { var props = _this.props; return _react2['default'].createElement(_DropdownMenu2['default'], (0, _extends3['default'])({ ref: (0, _util.saveRef)(_this, 'dropdownMenuRef') }, newProps, { prefixCls: _this.getDropdownPrefixCls(), onMenuSelect: props.onMenuSelect, onMenuDeselect: props.onMenuDeselect, onPopupScroll: props.onPopupScroll, value: props.value, firstActiveValue: props.firstActiveValue, defaultActiveFirstOption: props.defaultActiveFirstOption, dropdownMenuStyle: props.dropdownMenuStyle })); }, _this.getDropdownTransitionName = function () { var props = _this.props; var transitionName = props.transitionName; if (!transitionName && props.animation) { transitionName = _this.getDropdownPrefixCls() + '-' + props.animation; } return transitionName; }, _this.getDropdownPrefixCls = function () { return _this.props.prefixCls + '-dropdown'; }, _temp), (0, _possibleConstructorReturn3['default'])(_this, _ret); } SelectTrigger.prototype.componentDidMount = function componentDidMount() { this.setDropdownWidth(); }; SelectTrigger.prototype.componentDidUpdate = function componentDidUpdate() { this.setDropdownWidth(); }; SelectTrigger.prototype.render = function render() { var _popupClassName; var _props = this.props, onPopupFocus = _props.onPopupFocus, props = (0, _objectWithoutProperties3['default'])(_props, ['onPopupFocus']); var multiple = props.multiple, visible = props.visible, inputValue = props.inputValue, dropdownAlign = props.dropdownAlign, disabled = props.disabled, showSearch = props.showSearch, dropdownClassName = props.dropdownClassName, dropdownStyle = props.dropdownStyle, dropdownMatchSelectWidth = props.dropdownMatchSelectWidth; var dropdownPrefixCls = this.getDropdownPrefixCls(); var popupClassName = (_popupClassName = {}, _popupClassName[dropdownClassName] = !!dropdownClassName, _popupClassName[dropdownPrefixCls + '--' + (multiple ? 'multiple' : 'single')] = 1, _popupClassName); var popupElement = this.getDropdownElement({ menuItems: props.options, onPopupFocus: onPopupFocus, multiple: multiple, inputValue: inputValue, visible: visible }); var hideAction = void 0; if (disabled) { hideAction = []; } else if ((0, _util.isSingleMode)(props) && !showSearch) { hideAction = ['click']; } else { hideAction = ['blur']; } var popupStyle = (0, _extends3['default'])({}, dropdownStyle); var widthProp = dropdownMatchSelectWidth ? 'width' : 'minWidth'; if (this.state.dropdownWidth) { popupStyle[widthProp] = this.state.dropdownWidth + 'px'; } return _react2['default'].createElement( _rcTrigger2['default'], (0, _extends3['default'])({}, props, { showAction: disabled ? [] : this.props.showAction, hideAction: hideAction, ref: (0, _util.saveRef)(this, 'triggerRef'), popupPlacement: 'bottomLeft', builtinPlacements: BUILT_IN_PLACEMENTS, prefixCls: dropdownPrefixCls, popupTransitionName: this.getDropdownTransitionName(), onPopupVisibleChange: props.onDropdownVisibleChange, popup: popupElement, popupAlign: dropdownAlign, popupVisible: visible, getPopupContainer: props.getPopupContainer, popupClassName: (0, _classnames2['default'])(popupClassName), popupStyle: popupStyle }), props.children ); }; return SelectTrigger; }(_react2['default'].Component); SelectTrigger.propTypes = { onPopupFocus: _propTypes2['default'].func, onPopupScroll: _propTypes2['default'].func, dropdownMatchSelectWidth: _propTypes2['default'].bool, dropdownAlign: _propTypes2['default'].object, visible: _propTypes2['default'].bool, disabled: _propTypes2['default'].bool, showSearch: _propTypes2['default'].bool, dropdownClassName: _propTypes2['default'].string, multiple: _propTypes2['default'].bool, inputValue: _propTypes2['default'].string, filterOption: _propTypes2['default'].any, options: _propTypes2['default'].any, prefixCls: _propTypes2['default'].string, popupClassName: _propTypes2['default'].string, children: _propTypes2['default'].any, showAction: _propTypes2['default'].arrayOf(_propTypes2['default'].string) }; exports['default'] = SelectTrigger; SelectTrigger.displayName = 'SelectTrigger'; module.exports = exports['default'];