UNPKG

react-cm-ui

Version:
784 lines (691 loc) 32.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _lodash = _interopRequireDefault(require("lodash")); var _classnames = _interopRequireDefault(require("classnames")); var _reactResponsive = _interopRequireDefault(require("react-responsive")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactDom = _interopRequireDefault(require("react-dom")); var _reactCustomScrollbars = _interopRequireDefault(require("react-custom-scrollbars")); var _reactSelect = _interopRequireDefault(require("react-select")); var _button = _interopRequireDefault(require("../button")); var _domUtils = _interopRequireDefault(require("../../utils/domUtils")); var _dropdownItem = _interopRequireDefault(require("./dropdownItem")); var _icon = _interopRequireDefault(require("../../dataDisplay/icon")); var _modal = _interopRequireDefault(require("../../surfaces/modal")); var _utils = _interopRequireDefault(require("../../utils/utils")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var CustomSelect = /*#__PURE__*/function (_Select) { _inherits(CustomSelect, _Select); var _super = _createSuper(CustomSelect); function CustomSelect() { _classCallCheck(this, CustomSelect); return _super.apply(this, arguments); } _createClass(CustomSelect, [{ key: "renderHiddenField", value: function renderHiddenField(valueArray) { var options = this._visibleOptions = this.filterOptions(this.props.multi && this.props.removeSelected ? valueArray : null); var menu = this.renderMenu(options, valueArray); var styles = Object.assign({}, this.props.menuContainerStyle, { visibility: 'hidden' }); return /*#__PURE__*/_react["default"].createElement("div", { className: "Select-menu-outer", style: styles }, /*#__PURE__*/_react["default"].createElement("div", { role: "listbox", tabIndex: -1, className: "Select-menu", id: this._instancePrefix + '-list', style: this.props.menuStyle }, menu)); } }]); return CustomSelect; }(_reactSelect["default"]); var customCreatableSelect = function customCreatableSelect(props) { return /*#__PURE__*/_react["default"].createElement(CustomSelect, props); }; var Dropdown = /*#__PURE__*/function (_React$Component) { _inherits(Dropdown, _React$Component); var _super2 = _createSuper(Dropdown); function Dropdown(props) { var _this; _classCallCheck(this, Dropdown); _this = _super2.call(this, props); _this.state = { isModalOpen: false, menuIsOpen: false, menuPositionStyle: {}, menuXPosition: 'left', menuYPosition: 'top', value: props.value || null }; _this._onClickOutside = _this._onClickOutside.bind(_assertThisInitialized(_this)); _this._onDropdownMenuReposition = _this._onDropdownMenuReposition.bind(_assertThisInitialized(_this)); _this._onDropdownMenuResize = _this._onDropdownMenuResize.bind(_assertThisInitialized(_this)); return _this; } _createClass(Dropdown, [{ key: "componentDidUpdate", value: function componentDidUpdate(prevProps) { var _this$props = this.props, autoScrollSelection = _this$props.autoScrollSelection, options = _this$props.options, selection = _this$props.selection, selectionMatchProp = _this$props.selectionMatchProp, currentPropsValue = _this$props.value; var previousPropsValue = prevProps.value; if (!_lodash["default"].isEqual(currentPropsValue, previousPropsValue)) { this.setState({ menuIsOpen: false, value: currentPropsValue }); } if (selection && autoScrollSelection && this.dropdownMenu && currentPropsValue) { var itemHeight = this.dropdownMenu.getScrollHeight() / _lodash["default"].size(options); var pageSize = this.dropdownMenu.getClientHeight() / itemHeight; var selectionIndex = _lodash["default"].findIndex(options, function (o) { if (selectionMatchProp === 'any') { var hasValue = _lodash["default"].has(o, 'value'); var hasLabel = _lodash["default"].has(o, 'label'); if (!hasValue && !hasLabel) { return false; } return hasValue && o['value'] === currentPropsValue['value'] || o['value'] === currentPropsValue || hasLabel && o['label'] === currentPropsValue['label'] || o['label'] === currentPropsValue; } return o[selectionMatchProp] === currentPropsValue[selectionMatchProp]; }); var scrollRatio = selectionIndex / pageSize; if (scrollRatio >= 1) { this.dropdownMenu.scrollTop(scrollRatio * pageSize * itemHeight); } } } }, { key: "render", value: function render() { var _this2 = this; var _this$props2 = this.props, button = _this$props2.button, buttonColor = _this$props2.buttonColor, buttonCompact = _this$props2.buttonCompact, children = _this$props2.children, className = _this$props2.className, clearable = _this$props2.clearable, disable = _this$props2.disable, fluid = _this$props2.fluid, iconColor = _this$props2.iconColor, iconInverse = _this$props2.iconInverse, iconPosition = _this$props2.iconPosition, iconSize = _this$props2.iconSize, iconTitle = _this$props2.iconTitle, iconType = _this$props2.iconType, id = _this$props2.id, inverse = _this$props2.inverse, label = _this$props2.label, labelStyle = _this$props2.labelStyle, options = _this$props2.options, placeholder = _this$props2.placeholder, searchable = _this$props2.searchable, selection = _this$props2.selection, selectionCreatable = _this$props2.selectionCreatable, selectionMatchProp = _this$props2.selectionMatchProp, selectionMenuContainerStyle = _this$props2.selectionMenuContainerStyle, selectionMenuStyle = _this$props2.selectionMenuStyle, selectionMobile = _this$props2.selectionMobile, selectionOptionComponent = _this$props2.selectionOptionComponent, selectionValueComponent = _this$props2.selectionValueComponent, selectionMultiple = _this$props2.selectionMultiple, selectionRequired = _this$props2.selectionRequired, selectionUnderline = _this$props2.selectionUnderline, style = _this$props2.style, tabIndex = _this$props2.tabIndex, text = _this$props2.text, theme = _this$props2.theme; var _this$state = this.state, menuIsOpen = _this$state.menuIsOpen, menuPositionStyle = _this$state.menuPositionStyle; var containerClasses = (0, _classnames["default"])('ui', 'dropdown', className, { 'dropdown-button': button, 'dropdown-button-compact': buttonCompact, 'dropdown-color-alert': buttonColor === 'alert', 'dropdown-color-disable': disable || buttonColor === 'disable', 'dropdown-color-inverse': buttonColor === 'inverse', 'dropdown-color-light': buttonColor === 'light', 'dropdown-color-outline': buttonColor === 'outline', 'dropdown-color-primary': !buttonColor || buttonColor === 'primary', 'dropdown-color-alternate': buttonColor === 'alternate', 'dropdown-color-secondary': buttonColor === 'secondary', 'dropdown-color-success': buttonColor === 'success', 'dropdown-color-transparent': buttonColor === 'transparent', 'dropdown-color-warning': buttonColor === 'warning', 'dropdown-disable': disable, 'dropdown-fluid': fluid, 'dropdown-icon': iconType, 'dropdown-inverse': inverse, 'dropdown-is-active': menuIsOpen, 'dropdown-menu-theme-dark': theme === 'dark', 'dropdown-menu-theme-light': theme === 'light', 'dropdown-selection': selection, 'dropdown-selection-underline': selectionUnderline }); var dropdownIconTitle = iconTitle || placeholder; if (_lodash["default"].isEmpty(dropdownIconTitle) && _lodash["default"].isString(text)) { dropdownIconTitle = text; } var items, labelJSX; if (label) { labelJSX = /*#__PURE__*/_react["default"].createElement("label", { className: "label", style: labelStyle }, label, selectionRequired && !this.state.value ? /*#__PURE__*/_react["default"].createElement("span", { className: "input-required-indicator" }, "*") : null); } if (children && !selection) { items = _react["default"].Children.map(children, function (child, index) { if (!_lodash["default"].isNil(child)) { var _child$props = child.props, itemIconInverse = _child$props.iconInverse, itemIconType = _child$props.iconType, itemLabel = _child$props.label, itemDisabled = _child$props.disabled; var _child$props2 = child.props, itemIconColor = _child$props2.iconColor, itemId = _child$props2.id; var itemClass = (0, _classnames["default"])('dropdown-item', child.props.className, { 'dropdown-item-is-selected': _this2.state.value ? _this2.state.value.label === itemLabel : false, 'dropdown-item-is-disabled': itemDisabled }); if (itemDisabled) { itemIconColor = 'static'; } var value = { id: itemId || null, label: itemLabel }; if (id && itemId) { itemId = "".concat(id, "_").concat(itemId); } return /*#__PURE__*/_react["default"].createElement("li", { className: itemClass, id: itemId, key: 'dropdown-menu-item-' + index }, /*#__PURE__*/_react["default"].createElement("span", { onClick: _this2._onDropdownMenuItemClick.bind(_this2, value) }, itemIconType ? /*#__PURE__*/_react["default"].createElement(_icon["default"], { inverse: itemIconInverse, color: itemIconColor, title: value.label, type: itemIconType }) : null, value.label)); } }); } if (selection) { if (!selectionCreatable) { return /*#__PURE__*/_react["default"].createElement(_reactResponsive["default"], { maxWidth: 767 }, function (matches) { if (selectionMobile && matches) { return /*#__PURE__*/_react["default"].createElement("div", { className: containerClasses, ref: function ref(_ref) { _this2.dropdownContainer = _ref; }, style: style }, labelJSX, /*#__PURE__*/_react["default"].createElement("div", { className: "dropdown-selection-mobile-button", onClick: _this2._onSelectionMobileModalToggle.bind(_this2) }, placeholder && !_this2.state.value ? /*#__PURE__*/_react["default"].createElement("span", { className: "placeholder" }, placeholder) : /*#__PURE__*/_react["default"].createElement("span", { className: "label" }, _this2.state.value.label), /*#__PURE__*/_react["default"].createElement(_icon["default"], { color: disable ? 'disable' : null, compact: true, title: dropdownIconTitle, type: "arrows-alt" })), /*#__PURE__*/_react["default"].createElement(_modal["default"], { isOpen: _this2.state.isModalOpen, onClose: _this2._onSelectionMobileModalToggle.bind(_this2), title: placeholder }, _this2._onSelectionMobileItemRenderer())); } else { return /*#__PURE__*/_react["default"].createElement("div", { className: containerClasses, id: id, ref: function ref(_ref2) { _this2.dropdownContainer = _ref2; }, style: style }, labelJSX, /*#__PURE__*/_react["default"].createElement(CustomSelect, { arrowRenderer: function arrowRenderer() { return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_icon["default"], { compact: true, size: selectionUnderline ? 10 : iconSize || 16, title: dropdownIconTitle, type: iconType ? iconType : selectionUnderline ? 'caret-down' : 'chevron-down' })); }, clearRenderer: function clearRenderer() { return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_icon["default"], { compact: true, size: selectionUnderline ? 10 : iconSize || 16, title: 'Clear Selection', type: "times" })); }, clearable: !clearable ? clearable : true, disabled: disable, matchProp: selectionMatchProp || 'any', menuContainerStyle: selectionMenuContainerStyle, menuRenderer: _this2._menuRenderer.bind(_this2), menuStyle: selectionMenuStyle, multi: selectionMultiple, name: "firstSelect", onChange: _this2._onChange.bind(_this2), onOpen: _this2._onSelectionMenuOpen.bind(_this2), optionComponent: selectionOptionComponent, options: options, placeholder: placeholder, searchable: !searchable ? searchable : true, tabIndex: _lodash["default"].isNumber(tabIndex) ? tabIndex.toString() : tabIndex, value: _this2.state.value, valueComponent: selectionValueComponent })); } }); } else if (selectionCreatable) { return /*#__PURE__*/_react["default"].createElement("div", { className: containerClasses, id: id, ref: function ref(_ref3) { _this2.dropdownContainer = _ref3; }, style: style }, labelJSX, /*#__PURE__*/_react["default"].createElement(_reactSelect["default"].Creatable, { arrowRenderer: function arrowRenderer() { return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_icon["default"], { compact: true, size: 16, title: dropdownIconTitle, type: "chevron-down" })); }, clearRenderer: function clearRenderer() { return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_icon["default"], { compact: true, size: 16, title: 'Clear Selection', type: "times" })); }, clearable: !clearable ? clearable : true, disabled: disable, menuContainerStyle: selectionMenuContainerStyle, menuRenderer: this._menuRenderer.bind(this), menuStyle: selectionMenuStyle, multi: selectionMultiple, name: "firstSelect", onChange: this._onChange.bind(this), onOpen: this._onSelectionMenuOpen.bind(this), optionComponent: selectionOptionComponent, options: options, placeholder: placeholder, searchable: !searchable ? searchable : true, tabIndex: _lodash["default"].isNumber(tabIndex) ? tabIndex.toString() : tabIndex, value: this.state.value, valueComponent: selectionValueComponent }, customCreatableSelect)); } } return /*#__PURE__*/_react["default"].createElement("div", { className: containerClasses, id: id, onClick: this._onDropdownClick.bind(this), ref: function ref(dropdownContainer) { _this2.dropdownContainer = dropdownContainer; }, style: style }, iconPosition === 'left' ? /*#__PURE__*/_react["default"].createElement(_icon["default"], { color: this.state.menuIsOpen && !button ? 'highlight' : button ? iconColor || null : null, inverse: iconInverse, size: iconSize || 'small', title: dropdownIconTitle, type: iconType || 'chevron-down' }) : null, labelJSX, placeholder || text || this.state.value ? /*#__PURE__*/_react["default"].createElement("span", { className: "dropdown-selection-value" }, text ? text : this.state.value ? this.state.value.label : placeholder) : null, !iconPosition || iconPosition === 'right' ? /*#__PURE__*/_react["default"].createElement(_icon["default"], { color: this.state.menuIsOpen && !button ? 'highlight' : button ? iconColor || null : null, compact: true, inverse: iconInverse, size: iconSize || 'small', title: dropdownIconTitle, type: iconType || 'chevron-down' }) : null, /*#__PURE__*/_react["default"].createElement("ul", { className: "dropdown-menu", onClick: this._onDropdownMenuClick.bind(this), ref: function ref(el) { return _this2.dropdownMenu = el; }, style: Object.assign({}, menuPositionStyle, { opacity: menuIsOpen ? 1 : 0, visibility: menuIsOpen ? 'visible' : 'hidden' }) }, items)); } }, { key: "componentDidMount", value: function componentDidMount() { var button = this.props.button; if (button) { console.warn('Dropdown (react-cm-ui): The prop \'button\' is deprecated. Please use the DropdownButton component instead.'); } document.addEventListener('click', this._onClickOutside); document.addEventListener('scroll', this._onDropdownMenuReposition); window.addEventListener('resize', this._onDropdownMenuResize); this._onDropdownMenuReposition(); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { document.removeEventListener('click', this._onClickOutside); document.removeEventListener('scroll', this._onDropdownMenuReposition); window.removeEventListener('resize', this._onDropdownMenuResize); } }, { key: "_menuRenderer", value: function _menuRenderer(params) { var _this3 = this; var selectionOptionComponent = this.props.selectionOptionComponent; var focusedOption = params.focusedOption, _onFocus = params.onFocus, options = params.options, selectValue = params.selectValue, valueArray = params.valueArray, valueKey = params.valueKey; var items = _lodash["default"].map(options, function (o, i) { var isFocused = o === focusedOption; var isSelected = _lodash["default"].some(valueArray, function (x) { return x[valueKey] === o[valueKey]; }); if (selectionOptionComponent) { var OptionComponent = selectionOptionComponent; return /*#__PURE__*/_react["default"].createElement(OptionComponent, { isFocused: isFocused, isSelected: isSelected, key: "select-option-key-".concat(i), onFocus: function onFocus() { return _onFocus(o); }, onSelect: function onSelect() { return selectValue(o); }, option: o }); } var classes = (0, _classnames["default"])('Select-option', { 'is-disabled': o.disabled, 'is-focused': isFocused, 'is-selected': isSelected }); return /*#__PURE__*/_react["default"].createElement("div", { className: classes, key: "select-option-key-".concat(i), onClick: function onClick() { return params.selectValue(o); }, onMouseOver: function onMouseOver() { return params.focusOption(o); } }, o.label); }); return /*#__PURE__*/_react["default"].createElement(_reactCustomScrollbars["default"], { autoHeight: true, autoHeightMax: this.props.menuMaxHeight || 180, autoHeightMin: this.props.menuMinHeight, autoHide: true, className: "select-menu-scrollbar", ref: function ref(el) { _this3.dropdownMenu = el; } }, items); } }, { key: "_onChange", value: function _onChange(selectedOption) { var _this$props3 = this.props, collapseMenuOnChange = _this$props3.collapseMenuOnChange, onChange = _this$props3.onChange, onClose = _this$props3.onClose; if (!_lodash["default"].isUndefined(onChange)) { onChange(selectedOption); if (collapseMenuOnChange) { this.setState({ menuIsOpen: false }); } } else { var updatedState = { value: selectedOption }; if (collapseMenuOnChange) { updatedState.menuIsOpen = false; if (_lodash["default"].isFunction(onClose)) { onClose(); } } this.setState(updatedState); } } }, { key: "_onClickOutside", value: function _onClickOutside(event) { var menuIsOpen = this.state.menuIsOpen; if (this.dropdownContainer && _reactDom["default"].findDOMNode(this.dropdownContainer).contains(event.target) && menuIsOpen) { return; } this.setState({ menuIsOpen: false }); var onClose = this.props.onClose; if (_lodash["default"].isFunction(onClose)) { onClose(); } } }, { key: "_onDropdownClick", value: function _onDropdownClick(event) { event.stopPropagation(); var _this$props4 = this.props, disable = _this$props4.disable, onOpen = _this$props4.onOpen, onClose = _this$props4.onClose; var updatedMenuOpenState = !this.state.menuIsOpen; if (!disable) { this.setState({ menuIsOpen: updatedMenuOpenState }); if (updatedMenuOpenState) { if (_lodash["default"].isFunction(onOpen)) { onOpen(); } } else { if (_lodash["default"].isFunction(onClose)) { onClose(); } } } } }, { key: "_onDropdownMenuItemClick", value: function _onDropdownMenuItemClick(selectedOption, event) { event.stopPropagation(); this._onChange(selectedOption); } }, { key: "_onDropdownMenuClick", value: function _onDropdownMenuClick(event) { // Prevents click event from bubbling up and closing the menu event.stopPropagation(); } }, { key: "_onDropdownMenuReposition", value: function _onDropdownMenuReposition() { var dropdownContainerEl = _reactDom["default"].findDOMNode(this.dropdownContainer); var dropdownMenuEl = _reactDom["default"].findDOMNode(this.dropdownMenu); var dropdownMenuObj = _domUtils["default"].isInViewport(dropdownMenuEl, dropdownContainerEl); var isInTop = dropdownMenuObj.isInTop; var isInRight = dropdownMenuObj.isInRight; var isInBottom = dropdownMenuObj.isInBottom; var topBias = dropdownMenuObj.topBias; var bottomBias = dropdownMenuObj.bottomBias; var menuXPosition, menuYPosition; if (isInRight) { menuXPosition = 'left'; } else { menuXPosition = 'right'; } if (isInBottom) { menuYPosition = 'top'; } else if (isInTop) { menuYPosition = 'bottom'; } else { if (topBias < 0) { menuYPosition = 'bottom'; } else if (bottomBias < 0) { menuYPosition = 'top'; } else { menuYPosition = topBias < bottomBias ? 'top' : 'bottom'; } } this.setState({ menuXPosition: menuXPosition, menuYPosition: menuYPosition, menuPositionStyle: { bottom: menuYPosition === 'bottom' ? '100%' : null, left: menuXPosition === 'left' ? 0 : null, right: menuXPosition === 'right' ? 0 : null, top: menuYPosition === 'top' ? '100%' : null } }); } }, { key: "_onDropdownMenuResize", value: function _onDropdownMenuResize() { this._onDropdownMenuReposition(); } }, { key: "_onSelectionMenuOpen", value: function _onSelectionMenuOpen() { // debugger; var onOpen = this.props.onOpen; if (_lodash["default"].isFunction(onOpen)) { onOpen(); } } }, { key: "_onSelectionMobileModalToggle", value: function _onSelectionMobileModalToggle() { this.setState({ isModalOpen: !this.state.isModalOpen }); } }, { key: "_onSelectionMobileItemClick", value: function _onSelectionMobileItemClick(selectedOption) { this._onChange(selectedOption); this._onSelectionMobileModalToggle(); } }, { key: "_onSelectionMobileItemRenderer", value: function _onSelectionMobileItemRenderer() { var _this4 = this; var items = _lodash["default"].map(this.props.options, function (o, i) { return /*#__PURE__*/_react["default"].createElement(_button["default"], { className: "Select-option", color: "light", compact: true, fluid: true, inverse: true, key: "select-option-key-".concat(i), onClick: _this4._onSelectionMobileItemClick.bind(_this4, o), style: { margin: '3px 0', textAlign: 'left' } }, o.label); }); return items; } }]); return Dropdown; }(_react["default"].Component); Dropdown.Item = _dropdownItem["default"]; Dropdown.propTypes = { autoScrollSelection: _propTypes["default"].bool, button: _propTypes["default"].bool, buttonColor: _propTypes["default"].oneOf(_utils["default"].colorEnums()), buttonCompact: _propTypes["default"].bool, className: _propTypes["default"].string, clearable: _propTypes["default"].bool, collapseMenuOnChange: _propTypes["default"].bool, disable: _propTypes["default"].bool, fluid: _propTypes["default"].bool, iconColor: _propTypes["default"].oneOf(_utils["default"].colorEnums()), iconInverse: _propTypes["default"].bool, iconPosition: _propTypes["default"].oneOf(['left', 'right']), iconSize: _propTypes["default"].oneOfType([_propTypes["default"].oneOf(_utils["default"].sizeEnums()), _propTypes["default"].number]), iconTitle: _propTypes["default"].string, iconType: _propTypes["default"].string, id: _propTypes["default"].string, inverse: _propTypes["default"].bool, label: _propTypes["default"].string, labelStyle: _propTypes["default"].shape({}), menuMaxHeight: _propTypes["default"].number, menuMinHeight: _propTypes["default"].number, onChange: _propTypes["default"].func, onClose: _propTypes["default"].func, onOpen: _propTypes["default"].func, options: _propTypes["default"].array, placeholder: _propTypes["default"].string, searchable: _propTypes["default"].bool, selection: _propTypes["default"].bool, selectionCreatable: _propTypes["default"].bool, selectionMatchProp: _propTypes["default"].oneOf(['any', 'label', 'value']), selectionMenuContainerStyle: _propTypes["default"].shape({}), selectionMenuStyle: _propTypes["default"].shape({}), selectionMobile: _propTypes["default"].bool, selectionMultiple: _propTypes["default"].bool, selectionOptionComponent: _propTypes["default"].func, selectionRequired: _propTypes["default"].bool, selectionUnderline: _propTypes["default"].bool, selectionValueComponent: _propTypes["default"].func, style: _propTypes["default"].shape({}), tabIndex: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]), text: _propTypes["default"].oneOfType([_propTypes["default"].shape({}), _propTypes["default"].string]), theme: _propTypes["default"].oneOf(_utils["default"].themeEnums()), value: _propTypes["default"].oneOfType([_propTypes["default"].array, _propTypes["default"].number, _propTypes["default"].shape({}), _propTypes["default"].string]) }; Dropdown.defaultProps = { autoScrollSelection: false }; var _default = Dropdown; exports["default"] = _default;