diff --git a/dist/react-select.es.js b/dist/react-select.es.js index 1b41b4e170..21c7e10be5 100644 --- a/dist/react-select.es.js +++ b/dist/react-select.es.js @@ -71,17 +71,21 @@ function filterOptions(options, filterValue, excludeOptions, props) { function menuRenderer(_ref) { var focusedOption = _ref.focusedOption, + focusOption = _ref.focusOption, + inputValue = _ref.inputValue, instancePrefix = _ref.instancePrefix, labelKey = _ref.labelKey, onFocus = _ref.onFocus, + onOptionRef = _ref.onOptionRef, onSelect = _ref.onSelect, optionClassName = _ref.optionClassName, optionComponent = _ref.optionComponent, optionRenderer = _ref.optionRenderer, options = _ref.options, + removeValue = _ref.removeValue, + selectValue = _ref.selectValue, valueArray = _ref.valueArray, - valueKey = _ref.valueKey, - onOptionRef = _ref.onOptionRef; + valueKey = _ref.valueKey; var Option = optionComponent; @@ -101,6 +105,8 @@ function menuRenderer(_ref) { Option, { className: optionClass, + focusOption: focusOption, + inputValue: inputValue, instancePrefix: instancePrefix, isDisabled: option.disabled, isFocused: isFocused, @@ -112,9 +118,11 @@ function menuRenderer(_ref) { optionIndex: i, ref: function ref(_ref2) { onOptionRef(_ref2, isFocused); - } + }, + removeValue: removeValue, + selectValue: selectValue }, - optionRenderer(option, i) + optionRenderer(option, i, inputValue) ); }); } @@ -682,7 +690,19 @@ var Select$1 = function (_React$Component) { if (this.menu && this.focused && this.state.isOpen && !this.hasScrolledToOption) { var focusedOptionNode = findDOMNode(this.focused); var menuNode = findDOMNode(this.menu); - menuNode.scrollTop = focusedOptionNode.offsetTop; + + var scrollTop = menuNode.scrollTop; + var scrollBottom = scrollTop + menuNode.offsetHeight; + var optionTop = focusedOptionNode.offsetTop; + var optionBottom = optionTop + focusedOptionNode.offsetHeight; + + if (scrollTop > optionTop || scrollBottom < optionBottom) { + menuNode.scrollTop = focusedOptionNode.offsetTop; + } + + // We still set hasScrolledToOption to true even if we didn't + // actually need to scroll, as we've still confirmed that the + // option is in view. this.hasScrolledToOption = true; } else if (!this.state.isOpen) { this.hasScrolledToOption = false; @@ -800,11 +820,19 @@ var Select$1 = function (_React$Component) { } if (event.target.tagName === 'INPUT') { + if (!this.state.isFocused) { + this._openAfterFocus = this.props.openOnClick; + this.focus(); + } else if (!this.state.isOpen) { + this.setState({ + isOpen: true, + isPseudoFocused: false + }); + } return; } // prevent default event handlers - event.stopPropagation(); event.preventDefault(); // for the non-searchable select, toggle the menu @@ -852,13 +880,17 @@ var Select$1 = function (_React$Component) { } // If the menu isn't open, let the event bubble to the main handleMouseDown if (!this.state.isOpen) { - return; + this.setState({ + isOpen: true + }); } // prevent default event handlers event.stopPropagation(); event.preventDefault(); // close the menu - this.closeMenu(); + if (this.state.isOpen) { + this.closeMenu(); + } } }, { key: 'handleMouseDownOnMenu', @@ -1238,7 +1270,6 @@ var Select$1 = function (_React$Component) { if (event && event.type === 'mousedown' && event.button !== 0) { return; } - event.stopPropagation(); event.preventDefault(); this.setValue(this.getResetValue()); this.setState({ @@ -2172,7 +2203,6 @@ var CreatableSelect = function (_React$Component) { var _props2 = this.props, filterOptions$$1 = _props2.filterOptions, isValidNewOption = _props2.isValidNewOption, - options = _props2.options, promptTextCreator = _props2.promptTextCreator; // TRICKY Check currently selected options as well. @@ -2384,9 +2414,9 @@ function shouldKeyDownEventCreateNewOption(_ref6) { case 188: // COMMA return true; + default: + return false; } - - return false; } // Default prop methods diff --git a/dist/react-select.js b/dist/react-select.js index 04dfa31663..6020ac0b93 100644 --- a/dist/react-select.js +++ b/dist/react-select.js @@ -76,17 +76,21 @@ function filterOptions(options, filterValue, excludeOptions, props) { function menuRenderer(_ref) { var focusedOption = _ref.focusedOption, + focusOption = _ref.focusOption, + inputValue = _ref.inputValue, instancePrefix = _ref.instancePrefix, labelKey = _ref.labelKey, onFocus = _ref.onFocus, + onOptionRef = _ref.onOptionRef, onSelect = _ref.onSelect, optionClassName = _ref.optionClassName, optionComponent = _ref.optionComponent, optionRenderer = _ref.optionRenderer, options = _ref.options, + removeValue = _ref.removeValue, + selectValue = _ref.selectValue, valueArray = _ref.valueArray, - valueKey = _ref.valueKey, - onOptionRef = _ref.onOptionRef; + valueKey = _ref.valueKey; var Option = optionComponent; @@ -106,6 +110,8 @@ function menuRenderer(_ref) { Option, { className: optionClass, + focusOption: focusOption, + inputValue: inputValue, instancePrefix: instancePrefix, isDisabled: option.disabled, isFocused: isFocused, @@ -117,9 +123,11 @@ function menuRenderer(_ref) { optionIndex: i, ref: function ref(_ref2) { onOptionRef(_ref2, isFocused); - } + }, + removeValue: removeValue, + selectValue: selectValue }, - optionRenderer(option, i) + optionRenderer(option, i, inputValue) ); }); } @@ -687,7 +695,19 @@ var Select$1 = function (_React$Component) { if (this.menu && this.focused && this.state.isOpen && !this.hasScrolledToOption) { var focusedOptionNode = reactDom.findDOMNode(this.focused); var menuNode = reactDom.findDOMNode(this.menu); - menuNode.scrollTop = focusedOptionNode.offsetTop; + + var scrollTop = menuNode.scrollTop; + var scrollBottom = scrollTop + menuNode.offsetHeight; + var optionTop = focusedOptionNode.offsetTop; + var optionBottom = optionTop + focusedOptionNode.offsetHeight; + + if (scrollTop > optionTop || scrollBottom < optionBottom) { + menuNode.scrollTop = focusedOptionNode.offsetTop; + } + + // We still set hasScrolledToOption to true even if we didn't + // actually need to scroll, as we've still confirmed that the + // option is in view. this.hasScrolledToOption = true; } else if (!this.state.isOpen) { this.hasScrolledToOption = false; @@ -805,11 +825,19 @@ var Select$1 = function (_React$Component) { } if (event.target.tagName === 'INPUT') { + if (!this.state.isFocused) { + this._openAfterFocus = this.props.openOnClick; + this.focus(); + } else if (!this.state.isOpen) { + this.setState({ + isOpen: true, + isPseudoFocused: false + }); + } return; } // prevent default event handlers - event.stopPropagation(); event.preventDefault(); // for the non-searchable select, toggle the menu @@ -857,13 +885,17 @@ var Select$1 = function (_React$Component) { } // If the menu isn't open, let the event bubble to the main handleMouseDown if (!this.state.isOpen) { - return; + this.setState({ + isOpen: true + }); } // prevent default event handlers event.stopPropagation(); event.preventDefault(); // close the menu - this.closeMenu(); + if (this.state.isOpen) { + this.closeMenu(); + } } }, { key: 'handleMouseDownOnMenu', @@ -1243,7 +1275,6 @@ var Select$1 = function (_React$Component) { if (event && event.type === 'mousedown' && event.button !== 0) { return; } - event.stopPropagation(); event.preventDefault(); this.setValue(this.getResetValue()); this.setState({ @@ -2177,7 +2208,6 @@ var CreatableSelect = function (_React$Component) { var _props2 = this.props, filterOptions$$1 = _props2.filterOptions, isValidNewOption = _props2.isValidNewOption, - options = _props2.options, promptTextCreator = _props2.promptTextCreator; // TRICKY Check currently selected options as well. @@ -2389,9 +2419,9 @@ function shouldKeyDownEventCreateNewOption(_ref6) { case 188: // COMMA return true; + default: + return false; } - - return false; } // Default prop methods diff --git a/dist/react-select.min.js b/dist/react-select.min.js index 213eac1937..3e2688126b 100644 --- a/dist/react-select.min.js +++ b/dist/react-select.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types"),require("react-dom"),require("react-input-autosize"),require("classnames")):"function"==typeof define&&define.amd?define(["react","prop-types","react-dom","react-input-autosize","classnames"],t):e.Select=t(e.React,e.PropTypes,e.ReactDOM,e.AutosizeInput,e.classNames)}(this,function(e,t,u,n,s){"use strict";function o(e){for(var t=0;t-1)return!1;if(n.filterOption)return n.filterOption.call(s,e,t);if(!t)return!0;var i=String(e[n.valueKey]),a=String(e[n.labelKey]);return n.ignoreAccents&&("label"!==n.matchProp&&(i=o(i)),"value"!==n.matchProp&&(a=o(a))),n.ignoreCase&&("label"!==n.matchProp&&(i=i.toLowerCase()),"value"!==n.matchProp&&(a=a.toLowerCase())),"start"===n.matchPos?"label"!==n.matchProp&&i.substr(0,t.length)===t||"value"!==n.matchProp&&a.substr(0,t.length)===t:"label"!==n.matchProp&&i.indexOf(t)>=0||"value"!==n.matchProp&&a.indexOf(t)>=0})}function a(e){var t=e.focusedOption,u=e.instancePrefix,n=(e.labelKey,e.onFocus),o=e.onSelect,i=e.optionClassName,a=e.optionComponent,r=e.optionRenderer,l=e.options,p=e.valueArray,h=e.valueKey,c=e.onOptionRef,d=a;return l.map(function(e,a){var l=p&&p.some(function(t){return t[h]==e[h]}),E=e===t,v=s(i,{"Select-option":!0,"is-selected":l,"is-focused":E,"is-disabled":e.disabled});return f.createElement(d,{className:v,instancePrefix:u,isDisabled:e.disabled,isFocused:E,isSelected:l,key:"option-"+a+"-"+e[h],onFocus:n,onSelect:o,option:e,optionIndex:a,ref:function(e){c(e,E)}},r(e,a))})}function r(e){return f.createElement(S,e)}function l(e){var t=e.option,u=e.options,n=e.labelKey,s=e.valueKey;return 0===u.filter(function(e){return e[n]===t[n]||e[s]===t[s]}).length}function p(e){return!!e.label}function h(e){var t=e.label,u=e.labelKey,n={};return n[e.valueKey]=t,n[u]=t,n.className="Select-create-option-placeholder",n}function c(e){return'Create option "'+e+'"'}function d(e){switch(e.keyCode){case 9:case 13:case 188:return!0}return!1}var f="default"in e?e.default:e;t=t&&t.hasOwnProperty("default")?t.default:t,n=n&&n.hasOwnProperty("default")?n.default:n,s=s&&s.hasOwnProperty("default")?s.default:s;var E=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}],v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b=(function(){function e(e){this.value=e}function t(t){function u(s,o){try{var i=t[s](o),a=i.value;a instanceof e?Promise.resolve(a.value).then(function(e){u("next",e)},function(e){u("throw",e)}):n(i.done?"return":"normal",i.value)}catch(e){n("throw",e)}}function n(e,t){switch(e){case"return":s.resolve({value:t,done:!0});break;case"throw":s.reject(t);break;default:s.resolve({value:t,done:!1})}(s=s.next)?u(s.key,s.arg):o=null}var s,o;this._invoke=function(e,t){return new Promise(function(n,i){var a={key:e,arg:t,resolve:n,reject:i,next:null};o?o=o.next=a:(s=o=a,u(e,t))})},"function"!=typeof t.return&&(this.return=void 0)}"function"==typeof Symbol&&Symbol.asyncIterator&&(t.prototype[Symbol.asyncIterator]=function(){return this}),t.prototype.next=function(e){return this._invoke("next",e)},t.prototype.throw=function(e){return this._invoke("throw",e)},t.prototype.return=function(e){return this._invoke("return",e)}}(),function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}),g=function(){function e(e,t){for(var u=0;u=0||Object.prototype.hasOwnProperty.call(e,n)&&(u[n]=e[n]);return u},O=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},A=function(e){function t(e){b(this,t);var u=O(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return u.handleMouseDown=u.handleMouseDown.bind(u),u.handleMouseEnter=u.handleMouseEnter.bind(u),u.handleMouseMove=u.handleMouseMove.bind(u),u.handleTouchStart=u.handleTouchStart.bind(u),u.handleTouchEnd=u.handleTouchEnd.bind(u),u.handleTouchMove=u.handleTouchMove.bind(u),u.onFocus=u.onFocus.bind(u),u}return F(t,e),g(t,[{key:"blockEvent",value:function(e){e.preventDefault(),e.stopPropagation(),"A"===e.target.tagName&&"href"in e.target&&(e.target.target?window.open(e.target.href,e.target.target):window.location.href=e.target.href)}},{key:"handleMouseDown",value:function(e){e.preventDefault(),e.stopPropagation(),this.props.onSelect(this.props.option,e)}},{key:"handleMouseEnter",value:function(e){this.onFocus(e)}},{key:"handleMouseMove",value:function(e){this.onFocus(e)}},{key:"handleTouchEnd",value:function(e){this.dragging||this.handleMouseDown(e)}},{key:"handleTouchMove",value:function(e){this.dragging=!0}},{key:"handleTouchStart",value:function(e){this.dragging=!1}},{key:"onFocus",value:function(e){this.props.isFocused||this.props.onFocus(this.props.option,e)}},{key:"render",value:function(){var e=this.props,t=e.option,u=e.instancePrefix,n=e.optionIndex,o=s(this.props.className,t.className);return t.disabled?f.createElement("div",{className:o,onMouseDown:this.blockEvent,onClick:this.blockEvent},this.props.children):f.createElement("div",{className:o,style:t.style,role:"option","aria-label":t.label,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd,id:u+"-option-"+n,title:t.title},this.props.children)}}]),t}(f.Component),D=function(e){function t(e){b(this,t);var u=O(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return u.handleMouseDown=u.handleMouseDown.bind(u),u.onRemove=u.onRemove.bind(u),u.handleTouchEndRemove=u.handleTouchEndRemove.bind(u),u.handleTouchMove=u.handleTouchMove.bind(u),u.handleTouchStart=u.handleTouchStart.bind(u),u}return F(t,e),g(t,[{key:"handleMouseDown",value:function(e){if("mousedown"!==e.type||0===e.button)return this.props.onClick?(e.stopPropagation(),void this.props.onClick(this.props.value,e)):void(this.props.value.href&&e.stopPropagation())}},{key:"onRemove",value:function(e){e.preventDefault(),e.stopPropagation(),this.props.onRemove(this.props.value)}},{key:"handleTouchEndRemove",value:function(e){this.dragging||this.onRemove(e)}},{key:"handleTouchMove",value:function(e){this.dragging=!0}},{key:"handleTouchStart",value:function(e){this.dragging=!1}},{key:"renderRemoveIcon",value:function(){if(!this.props.disabled&&this.props.onRemove)return f.createElement("span",{className:"Select-value-icon","aria-hidden":"true",onMouseDown:this.onRemove,onTouchEnd:this.handleTouchEndRemove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove},"×")}},{key:"renderLabel",value:function(){return this.props.onClick||this.props.value.href?f.createElement("a",{className:"Select-value-label",href:this.props.value.href,target:this.props.value.target,onMouseDown:this.handleMouseDown,onTouchEnd:this.handleMouseDown},this.props.children):f.createElement("span",{className:"Select-value-label",role:"option","aria-selected":"true",id:this.props.id},this.props.children)}},{key:"render",value:function(){return f.createElement("div",{className:s("Select-value",this.props.value.className),style:this.props.value.style,title:this.props.value.title},this.renderRemoveIcon(),this.renderLabel())}}]),t}(f.Component),k=function(e){return"string"==typeof e?e:null!==e&&JSON.stringify(e)||""},w=(t.oneOfType([t.string,t.node]),t.oneOfType([t.string,t.number]),1),S=function(e){function t(e){b(this,t);var u=O(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return["clearValue","focusOption","handleInputBlur","handleInputChange","handleInputFocus","handleInputValueChange","handleKeyDown","handleMenuScroll","handleMouseDown","handleMouseDownOnArrow","handleMouseDownOnMenu","handleRequired","handleTouchOutside","handleTouchMove","handleTouchStart","handleTouchEnd","handleTouchEndClearValue","handleValueClick","getOptionLabel","onOptionRef","removeValue","selectValue"].forEach(function(e){return u[e]=u[e].bind(u)}),u.state={inputValue:"",isFocused:!1,isOpen:!1,isPseudoFocused:!1,required:!1},u}return F(t,e),g(t,[{key:"componentWillMount",value:function(){this._instancePrefix="react-select-"+(this.props.instanceId||++w)+"-";var e=this.getValueArray(this.props.value);this.props.required&&this.setState({required:this.handleRequired(e[0],this.props.multi)})}},{key:"componentDidMount",value:function(){void 0!==this.props.autofocus&&"undefined"!=typeof console&&console.warn("Warning: The autofocus prop has changed to autoFocus, support will be removed after react-select@1.0"),(this.props.autoFocus||this.props.autofocus)&&this.focus()}},{key:"componentWillReceiveProps",value:function(e){var t=this.getValueArray(e.value,e);e.required?this.setState({required:this.handleRequired(t[0],e.multi)}):this.props.required&&this.setState({required:!1})}},{key:"componentDidUpdate",value:function(e,t){if(this.menu&&this.focused&&this.state.isOpen&&!this.hasScrolledToOption){var n=u.findDOMNode(this.focused);u.findDOMNode(this.menu).scrollTop=n.offsetTop,this.hasScrolledToOption=!0}else this.state.isOpen||(this.hasScrolledToOption=!1);if(this._scrollToFocusedOptionOnUpdate&&this.focused&&this.menu){this._scrollToFocusedOptionOnUpdate=!1;var s=u.findDOMNode(this.focused),o=u.findDOMNode(this.menu),i=s.getBoundingClientRect(),a=o.getBoundingClientRect();i.bottom>a.bottom?o.scrollTop=s.offsetTop+s.clientHeight-o.offsetHeight:i.topt.offsetHeight&&t.scrollHeight-t.offsetHeight-t.scrollTop<=0&&this.props.onMenuScrollToBottom()}}},{key:"handleRequired",value:function(e,t){return!e||(t?0===e.length:0===Object.keys(e).length)}},{key:"getOptionLabel",value:function(e){return e[this.props.labelKey]}},{key:"getValueArray",value:function(e,t){var u=this,n="object"===(void 0===t?"undefined":v(t))?t:this.props;if(n.multi){if("string"==typeof e&&(e=e.split(n.delimiter)),!Array.isArray(e)){if(null===e||void 0===e)return[];e=[e]}return e.map(function(e){return u.expandValue(e,n)}).filter(function(e){return e})}var s=this.expandValue(e,n);return s?[s]:[]}},{key:"expandValue",value:function(e,t){var u=void 0===e?"undefined":v(e);if("string"!==u&&"number"!==u&&"boolean"!==u)return e;var n=t.options,s=t.valueKey;if(n)for(var o=0;on&&this.focusOption(u[n+1])}},{key:"popValue",value:function(){var e=this.getValueArray(this.props.value);e.length&&!1!==e[e.length-1].clearableValue&&this.setValue(this.props.multi?e.slice(0,e.length-1):null)}},{key:"removeValue",value:function(e){var t=this,u=this.getValueArray(this.props.value);this.setValue(u.filter(function(u){return u[t.props.valueKey]!==e[t.props.valueKey]})),this.focus()}},{key:"clearValue",value:function(e){e&&"mousedown"===e.type&&0!==e.button||(e.stopPropagation(),e.preventDefault(),this.setValue(this.getResetValue()),this.setState({isOpen:!1,inputValue:this.handleInputValueChange("")},this.focus))}},{key:"getResetValue",value:function(){return void 0!==this.props.resetValue?this.props.resetValue:this.props.multi?[]:null}},{key:"focusOption",value:function(e){this.setState({focusedOption:e})}},{key:"focusNextOption",value:function(){this.focusAdjacentOption("next")}},{key:"focusPreviousOption",value:function(){this.focusAdjacentOption("previous")}},{key:"focusPageUpOption",value:function(){this.focusAdjacentOption("page_up")}},{key:"focusPageDownOption",value:function(){this.focusAdjacentOption("page_down")}},{key:"focusStartOption",value:function(){this.focusAdjacentOption("start")}},{key:"focusEndOption",value:function(){this.focusAdjacentOption("end")}},{key:"focusAdjacentOption",value:function(e){var t=this._visibleOptions.map(function(e,t){return{option:e,index:t}}).filter(function(e){return!e.option.disabled});if(this._scrollToFocusedOptionOnUpdate=!0,this.state.isOpen){if(t.length){for(var u=-1,n=0;n0?u-=1:u=t.length-1;else if("start"===e)u=0;else if("end"===e)u=t.length-1;else if("page_up"===e){u=(s=u-this.props.pageSize)<0?0:s}else if("page_down"===e){var s=u+this.props.pageSize;u=s>t.length-1?t.length-1:s}-1===u&&(u=0),this.setState({focusedIndex:t[u].index,focusedOption:t[u].option})}}else this.setState({isOpen:!0,inputValue:"",focusedOption:this._focusedOption||(t.length?t["next"===e?0:t.length-1].option:null)})}},{key:"getFocusedOption",value:function(){return this._focusedOption}},{key:"selectFocusedOption",value:function(){if(this._focusedOption)return this.selectValue(this._focusedOption)}},{key:"renderLoading",value:function(){if(this.props.isLoading)return f.createElement("span",{className:"Select-loading-zone","aria-hidden":"true"},f.createElement("span",{className:"Select-loading"}))}},{key:"renderValue",value:function(e,t){var u=this,n=this.props.valueRenderer||this.getOptionLabel,s=this.props.valueComponent;if(!e.length)return this.state.inputValue?null:f.createElement("div",{className:"Select-placeholder"},this.props.placeholder);var o=this.props.onValueClick?this.handleValueClick:null;return this.props.multi?e.map(function(e,t){return f.createElement(s,{id:u._instancePrefix+"-value-"+t,instancePrefix:u._instancePrefix,disabled:u.props.disabled||!1===e.clearableValue,key:"value-"+t+"-"+e[u.props.valueKey],onClick:o,onRemove:u.removeValue,value:e},n(e,t),f.createElement("span",{className:"Select-aria-only"}," "))}):this.state.inputValue?void 0:(t&&(o=null),f.createElement(s,{id:this._instancePrefix+"-value-item",disabled:this.props.disabled,instancePrefix:this._instancePrefix,onClick:o,value:e[0]},n(e[0])))}},{key:"renderInput",value:function(e,t){var u,o=this,i=s("Select-input",this.props.inputProps.className),a=!!this.state.isOpen,r=s((u={},y(u,this._instancePrefix+"-list",a),y(u,this._instancePrefix+"-backspace-remove-message",this.props.multi&&!this.props.disabled&&this.state.isFocused&&!this.state.inputValue),u)),l=m({},this.props.inputProps,{role:"combobox","aria-expanded":""+a,"aria-owns":r,"aria-haspopup":""+a,"aria-activedescendant":a?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value","aria-describedby":this.props["aria-describedby"],"aria-labelledby":this.props["aria-labelledby"],"aria-label":this.props["aria-label"],className:i,tabIndex:this.props.tabIndex,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,ref:function(e){return o.input=e},required:this.state.required,value:this.state.inputValue});if(this.props.inputRenderer)return this.props.inputRenderer(l);if(this.props.disabled||!this.props.searchable){var p=this.props.inputProps,h=(p.inputClassName,C(p,["inputClassName"])),c=s(y({},this._instancePrefix+"-list",a));return f.createElement("div",m({},h,{role:"combobox","aria-expanded":a,"aria-owns":c,"aria-activedescendant":a?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value","aria-labelledby":this.props["aria-labelledby"],"aria-label":this.props["aria-label"],className:i,tabIndex:this.props.tabIndex||0,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,ref:function(e){return o.input=e},"aria-disabled":""+!!this.props.disabled,style:{border:0,width:1,display:"inline-block"}}))}return this.props.autosize?f.createElement(n,m({id:this.props.id},l,{minWidth:"5"})):f.createElement("div",{className:i,key:"input-wrap"},f.createElement("input",m({id:this.props.id},l)))}},{key:"renderClear",value:function(){var e=this.getValueArray(this.props.value);if(this.props.clearable&&e.length&&!this.props.disabled&&!this.props.isLoading){var t=this.props.clearRenderer();return f.createElement("span",{className:"Select-clear-zone",title:this.props.multi?this.props.clearAllText:this.props.clearValueText,"aria-label":this.props.multi?this.props.clearAllText:this.props.clearValueText,onMouseDown:this.clearValue,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEndClearValue},t)}}},{key:"renderArrow",value:function(){if(this.props.arrowRenderer){var e=this.handleMouseDownOnArrow,t=this.state.isOpen,u=this.props.arrowRenderer({onMouseDown:e,isOpen:t});return u?f.createElement("span",{className:"Select-arrow-zone",onMouseDown:e},u):null}}},{key:"filterOptions",value:function(e){var t=this.state.inputValue,u=this.props.options||[];if(this.props.filterOptions){var n="function"==typeof this.props.filterOptions?this.props.filterOptions:i;return n(u,t,e,{filterOption:this.props.filterOption,ignoreAccents:this.props.ignoreAccents,ignoreCase:this.props.ignoreCase,labelKey:this.props.labelKey,matchPos:this.props.matchPos,matchProp:this.props.matchProp,valueKey:this.props.valueKey,trimFilter:this.props.trimFilter})}return u}},{key:"onOptionRef",value:function(e,t){t&&(this.focused=e)}},{key:"renderMenu",value:function(e,t,u){return e&&e.length?this.props.menuRenderer({focusedOption:u,focusOption:this.focusOption,inputValue:this.state.inputValue,instancePrefix:this._instancePrefix,labelKey:this.props.labelKey,onFocus:this.focusOption,onSelect:this.selectValue,optionClassName:this.props.optionClassName,optionComponent:this.props.optionComponent,optionRenderer:this.props.optionRenderer||this.getOptionLabel,options:e,selectValue:this.selectValue,removeValue:this.removeValue,valueArray:t,valueKey:this.props.valueKey,onOptionRef:this.onOptionRef}):this.props.noResultsText?f.createElement("div",{className:"Select-noresults"},this.props.noResultsText):null}},{key:"renderHiddenField",value:function(e){var t=this;if(this.props.name){if(this.props.joinValues){var u=e.map(function(e){return k(e[t.props.valueKey])}).join(this.props.delimiter);return f.createElement("input",{type:"hidden",ref:function(e){return t.value=e},name:this.props.name,value:u,disabled:this.props.disabled})}return e.map(function(e,u){return f.createElement("input",{key:"hidden."+u,type:"hidden",ref:"value"+u,name:t.props.name,value:k(e[t.props.valueKey]),disabled:t.props.disabled})})}}},{key:"getFocusableOptionIndex",value:function(e){var t=this._visibleOptions;if(!t.length)return null;var u=this.props.valueKey,n=this.state.focusedOption||e;if(n&&!n.disabled){var s=-1;if(t.some(function(e,t){var o=e[u]===n[u];return o&&(s=t),o}),-1!==s)return s}for(var o=0;o-1)return!1;if(n.filterOption)return n.filterOption.call(s,e,t);if(!t)return!0;var i=String(e[n.valueKey]),a=String(e[n.labelKey]);return n.ignoreAccents&&("label"!==n.matchProp&&(i=o(i)),"value"!==n.matchProp&&(a=o(a))),n.ignoreCase&&("label"!==n.matchProp&&(i=i.toLowerCase()),"value"!==n.matchProp&&(a=a.toLowerCase())),"start"===n.matchPos?"label"!==n.matchProp&&i.substr(0,t.length)===t||"value"!==n.matchProp&&a.substr(0,t.length)===t:"label"!==n.matchProp&&i.indexOf(t)>=0||"value"!==n.matchProp&&a.indexOf(t)>=0})}function r(e){var t=e.focusedOption,u=e.focusOption,n=e.inputValue,o=e.instancePrefix,i=(e.labelKey,e.onFocus),a=e.onOptionRef,r=e.onSelect,l=e.optionClassName,p=e.optionComponent,h=e.optionRenderer,c=e.options,d=e.removeValue,f=e.selectValue,v=e.valueArray,b=e.valueKey,g=p;return c.map(function(e,p){var c=v&&v.some(function(t){return t[b]==e[b]}),y=e===t,m=s(l,{"Select-option":!0,"is-selected":c,"is-focused":y,"is-disabled":e.disabled});return E.createElement(g,{className:m,focusOption:u,inputValue:n,instancePrefix:o,isDisabled:e.disabled,isFocused:y,isSelected:c,key:"option-"+p+"-"+e[b],onFocus:i,onSelect:r,option:e,optionIndex:p,ref:function(e){a(e,y)},removeValue:d,selectValue:f},h(e,p,n))})}function l(e){return E.createElement(S,e)}function p(e){var t=e.option,u=e.options,n=e.labelKey,s=e.valueKey;return 0===u.filter(function(e){return e[n]===t[n]||e[s]===t[s]}).length}function h(e){return!!e.label}function c(e){var t=e.label,u=e.labelKey,n={};return n[e.valueKey]=t,n[u]=t,n.className="Select-create-option-placeholder",n}function d(e){return'Create option "'+e+'"'}function f(e){switch(e.keyCode){case 9:case 13:case 188:return!0;default:return!1}}var E="default"in e?e.default:e;t=t&&t.hasOwnProperty("default")?t.default:t,n=n&&n.hasOwnProperty("default")?n.default:n,s=s&&s.hasOwnProperty("default")?s.default:s;var v=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}],b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g=(function(){function e(e){this.value=e}function t(t){function u(s,o){try{var i=t[s](o),a=i.value;a instanceof e?Promise.resolve(a.value).then(function(e){u("next",e)},function(e){u("throw",e)}):n(i.done?"return":"normal",i.value)}catch(e){n("throw",e)}}function n(e,t){switch(e){case"return":s.resolve({value:t,done:!0});break;case"throw":s.reject(t);break;default:s.resolve({value:t,done:!1})}(s=s.next)?u(s.key,s.arg):o=null}var s,o;this._invoke=function(e,t){return new Promise(function(n,i){var a={key:e,arg:t,resolve:n,reject:i,next:null};o?o=o.next=a:(s=o=a,u(e,t))})},"function"!=typeof t.return&&(this.return=void 0)}"function"==typeof Symbol&&Symbol.asyncIterator&&(t.prototype[Symbol.asyncIterator]=function(){return this}),t.prototype.next=function(e){return this._invoke("next",e)},t.prototype.throw=function(e){return this._invoke("throw",e)},t.prototype.return=function(e){return this._invoke("return",e)}}(),function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}),y=function(){function e(e,t){for(var u=0;u=0||Object.prototype.hasOwnProperty.call(e,n)&&(u[n]=e[n]);return u},A=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},D=function(e){function t(e){g(this,t);var u=A(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return u.handleMouseDown=u.handleMouseDown.bind(u),u.handleMouseEnter=u.handleMouseEnter.bind(u),u.handleMouseMove=u.handleMouseMove.bind(u),u.handleTouchStart=u.handleTouchStart.bind(u),u.handleTouchEnd=u.handleTouchEnd.bind(u),u.handleTouchMove=u.handleTouchMove.bind(u),u.onFocus=u.onFocus.bind(u),u}return C(t,e),y(t,[{key:"blockEvent",value:function(e){e.preventDefault(),e.stopPropagation(),"A"===e.target.tagName&&"href"in e.target&&(e.target.target?window.open(e.target.href,e.target.target):window.location.href=e.target.href)}},{key:"handleMouseDown",value:function(e){e.preventDefault(),e.stopPropagation(),this.props.onSelect(this.props.option,e)}},{key:"handleMouseEnter",value:function(e){this.onFocus(e)}},{key:"handleMouseMove",value:function(e){this.onFocus(e)}},{key:"handleTouchEnd",value:function(e){this.dragging||this.handleMouseDown(e)}},{key:"handleTouchMove",value:function(e){this.dragging=!0}},{key:"handleTouchStart",value:function(e){this.dragging=!1}},{key:"onFocus",value:function(e){this.props.isFocused||this.props.onFocus(this.props.option,e)}},{key:"render",value:function(){var e=this.props,t=e.option,u=e.instancePrefix,n=e.optionIndex,o=s(this.props.className,t.className);return t.disabled?E.createElement("div",{className:o,onMouseDown:this.blockEvent,onClick:this.blockEvent},this.props.children):E.createElement("div",{className:o,style:t.style,role:"option","aria-label":t.label,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd,id:u+"-option-"+n,title:t.title},this.props.children)}}]),t}(E.Component),k=function(e){function t(e){g(this,t);var u=A(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return u.handleMouseDown=u.handleMouseDown.bind(u),u.onRemove=u.onRemove.bind(u),u.handleTouchEndRemove=u.handleTouchEndRemove.bind(u),u.handleTouchMove=u.handleTouchMove.bind(u),u.handleTouchStart=u.handleTouchStart.bind(u),u}return C(t,e),y(t,[{key:"handleMouseDown",value:function(e){if("mousedown"!==e.type||0===e.button)return this.props.onClick?(e.stopPropagation(),void this.props.onClick(this.props.value,e)):void(this.props.value.href&&e.stopPropagation())}},{key:"onRemove",value:function(e){e.preventDefault(),e.stopPropagation(),this.props.onRemove(this.props.value)}},{key:"handleTouchEndRemove",value:function(e){this.dragging||this.onRemove(e)}},{key:"handleTouchMove",value:function(e){this.dragging=!0}},{key:"handleTouchStart",value:function(e){this.dragging=!1}},{key:"renderRemoveIcon",value:function(){if(!this.props.disabled&&this.props.onRemove)return E.createElement("span",{className:"Select-value-icon","aria-hidden":"true",onMouseDown:this.onRemove,onTouchEnd:this.handleTouchEndRemove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove},"×")}},{key:"renderLabel",value:function(){return this.props.onClick||this.props.value.href?E.createElement("a",{className:"Select-value-label",href:this.props.value.href,target:this.props.value.target,onMouseDown:this.handleMouseDown,onTouchEnd:this.handleMouseDown},this.props.children):E.createElement("span",{className:"Select-value-label",role:"option","aria-selected":"true",id:this.props.id},this.props.children)}},{key:"render",value:function(){return E.createElement("div",{className:s("Select-value",this.props.value.className),style:this.props.value.style,title:this.props.value.title},this.renderRemoveIcon(),this.renderLabel())}}]),t}(E.Component),w=function(e){return"string"==typeof e?e:null!==e&&JSON.stringify(e)||""},V=(t.oneOfType([t.string,t.node]),t.oneOfType([t.string,t.number]),1),S=function(e){function t(e){g(this,t);var u=A(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return["clearValue","focusOption","handleInputBlur","handleInputChange","handleInputFocus","handleInputValueChange","handleKeyDown","handleMenuScroll","handleMouseDown","handleMouseDownOnArrow","handleMouseDownOnMenu","handleRequired","handleTouchOutside","handleTouchMove","handleTouchStart","handleTouchEnd","handleTouchEndClearValue","handleValueClick","getOptionLabel","onOptionRef","removeValue","selectValue"].forEach(function(e){return u[e]=u[e].bind(u)}),u.state={inputValue:"",isFocused:!1,isOpen:!1,isPseudoFocused:!1,required:!1},u}return C(t,e),y(t,[{key:"componentWillMount",value:function(){this._instancePrefix="react-select-"+(this.props.instanceId||++V)+"-";var e=this.getValueArray(this.props.value);this.props.required&&this.setState({required:this.handleRequired(e[0],this.props.multi)})}},{key:"componentDidMount",value:function(){void 0!==this.props.autofocus&&"undefined"!=typeof console&&console.warn("Warning: The autofocus prop has changed to autoFocus, support will be removed after react-select@1.0"),(this.props.autoFocus||this.props.autofocus)&&this.focus()}},{key:"componentWillReceiveProps",value:function(e){var t=this.getValueArray(e.value,e);e.required?this.setState({required:this.handleRequired(t[0],e.multi)}):this.props.required&&this.setState({required:!1})}},{key:"componentDidUpdate",value:function(e,t){if(this.menu&&this.focused&&this.state.isOpen&&!this.hasScrolledToOption){var n=u.findDOMNode(this.focused),s=u.findDOMNode(this.menu),o=s.scrollTop,i=o+s.offsetHeight,a=n.offsetTop,r=a+n.offsetHeight;(o>a||ic.bottom?p.scrollTop=l.offsetTop+l.clientHeight-p.offsetHeight:h.topt.offsetHeight&&t.scrollHeight-t.offsetHeight-t.scrollTop<=0&&this.props.onMenuScrollToBottom()}}},{key:"handleRequired",value:function(e,t){return!e||(t?0===e.length:0===Object.keys(e).length)}},{key:"getOptionLabel",value:function(e){return e[this.props.labelKey]}},{key:"getValueArray",value:function(e,t){var u=this,n="object"===(void 0===t?"undefined":b(t))?t:this.props;if(n.multi){if("string"==typeof e&&(e=e.split(n.delimiter)),!Array.isArray(e)){if(null===e||void 0===e)return[];e=[e]}return e.map(function(e){return u.expandValue(e,n)}).filter(function(e){return e})}var s=this.expandValue(e,n);return s?[s]:[]}},{key:"expandValue",value:function(e,t){var u=void 0===e?"undefined":b(e);if("string"!==u&&"number"!==u&&"boolean"!==u)return e;var n=t.options,s=t.valueKey;if(n)for(var o=0;on&&this.focusOption(u[n+1])}},{key:"popValue",value:function(){var e=this.getValueArray(this.props.value);e.length&&!1!==e[e.length-1].clearableValue&&this.setValue(this.props.multi?e.slice(0,e.length-1):null)}},{key:"removeValue",value:function(e){var t=this,u=this.getValueArray(this.props.value);this.setValue(u.filter(function(u){return u[t.props.valueKey]!==e[t.props.valueKey]})),this.focus()}},{key:"clearValue",value:function(e){e&&"mousedown"===e.type&&0!==e.button||(e.preventDefault(),this.setValue(this.getResetValue()),this.setState({isOpen:!1,inputValue:this.handleInputValueChange("")},this.focus))}},{key:"getResetValue",value:function(){return void 0!==this.props.resetValue?this.props.resetValue:this.props.multi?[]:null}},{key:"focusOption",value:function(e){this.setState({focusedOption:e})}},{key:"focusNextOption",value:function(){this.focusAdjacentOption("next")}},{key:"focusPreviousOption",value:function(){this.focusAdjacentOption("previous")}},{key:"focusPageUpOption",value:function(){this.focusAdjacentOption("page_up")}},{key:"focusPageDownOption",value:function(){this.focusAdjacentOption("page_down")}},{key:"focusStartOption",value:function(){this.focusAdjacentOption("start")}},{key:"focusEndOption",value:function(){this.focusAdjacentOption("end")}},{key:"focusAdjacentOption",value:function(e){var t=this._visibleOptions.map(function(e,t){return{option:e,index:t}}).filter(function(e){return!e.option.disabled});if(this._scrollToFocusedOptionOnUpdate=!0,this.state.isOpen){if(t.length){for(var u=-1,n=0;n0?u-=1:u=t.length-1;else if("start"===e)u=0;else if("end"===e)u=t.length-1;else if("page_up"===e)u=(s=u-this.props.pageSize)<0?0:s;else if("page_down"===e){var s=u+this.props.pageSize;u=s>t.length-1?t.length-1:s}-1===u&&(u=0),this.setState({focusedIndex:t[u].index,focusedOption:t[u].option})}}else this.setState({isOpen:!0,inputValue:"",focusedOption:this._focusedOption||(t.length?t["next"===e?0:t.length-1].option:null)})}},{key:"getFocusedOption",value:function(){return this._focusedOption}},{key:"selectFocusedOption",value:function(){if(this._focusedOption)return this.selectValue(this._focusedOption)}},{key:"renderLoading",value:function(){if(this.props.isLoading)return E.createElement("span",{className:"Select-loading-zone","aria-hidden":"true"},E.createElement("span",{className:"Select-loading"}))}},{key:"renderValue",value:function(e,t){var u=this,n=this.props.valueRenderer||this.getOptionLabel,s=this.props.valueComponent;if(!e.length)return this.state.inputValue?null:E.createElement("div",{className:"Select-placeholder"},this.props.placeholder);var o=this.props.onValueClick?this.handleValueClick:null;return this.props.multi?e.map(function(e,t){return E.createElement(s,{id:u._instancePrefix+"-value-"+t,instancePrefix:u._instancePrefix,disabled:u.props.disabled||!1===e.clearableValue,key:"value-"+t+"-"+e[u.props.valueKey],onClick:o,onRemove:u.removeValue,value:e},n(e,t),E.createElement("span",{className:"Select-aria-only"}," "))}):this.state.inputValue?void 0:(t&&(o=null),E.createElement(s,{id:this._instancePrefix+"-value-item",disabled:this.props.disabled,instancePrefix:this._instancePrefix,onClick:o,value:e[0]},n(e[0])))}},{key:"renderInput",value:function(e,t){var u,o=this,i=s("Select-input",this.props.inputProps.className),a=!!this.state.isOpen,r=s((u={},m(u,this._instancePrefix+"-list",a),m(u,this._instancePrefix+"-backspace-remove-message",this.props.multi&&!this.props.disabled&&this.state.isFocused&&!this.state.inputValue),u)),l=F({},this.props.inputProps,{role:"combobox","aria-expanded":""+a,"aria-owns":r,"aria-haspopup":""+a,"aria-activedescendant":a?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value","aria-describedby":this.props["aria-describedby"],"aria-labelledby":this.props["aria-labelledby"],"aria-label":this.props["aria-label"],className:i,tabIndex:this.props.tabIndex,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,ref:function(e){return o.input=e},required:this.state.required,value:this.state.inputValue});if(this.props.inputRenderer)return this.props.inputRenderer(l);if(this.props.disabled||!this.props.searchable){var p=this.props.inputProps,h=(p.inputClassName,O(p,["inputClassName"])),c=s(m({},this._instancePrefix+"-list",a));return E.createElement("div",F({},h,{role:"combobox","aria-expanded":a,"aria-owns":c,"aria-activedescendant":a?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value","aria-labelledby":this.props["aria-labelledby"],"aria-label":this.props["aria-label"],className:i,tabIndex:this.props.tabIndex||0,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,ref:function(e){return o.input=e},"aria-disabled":""+!!this.props.disabled,style:{border:0,width:1,display:"inline-block"}}))}return this.props.autosize?E.createElement(n,F({id:this.props.id},l,{minWidth:"5"})):E.createElement("div",{className:i,key:"input-wrap"},E.createElement("input",F({id:this.props.id},l)))}},{key:"renderClear",value:function(){var e=this.getValueArray(this.props.value);if(this.props.clearable&&e.length&&!this.props.disabled&&!this.props.isLoading){var t=this.props.clearRenderer();return E.createElement("span",{className:"Select-clear-zone",title:this.props.multi?this.props.clearAllText:this.props.clearValueText,"aria-label":this.props.multi?this.props.clearAllText:this.props.clearValueText,onMouseDown:this.clearValue,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEndClearValue},t)}}},{key:"renderArrow",value:function(){if(this.props.arrowRenderer){var e=this.handleMouseDownOnArrow,t=this.state.isOpen,u=this.props.arrowRenderer({onMouseDown:e,isOpen:t});return u?E.createElement("span",{className:"Select-arrow-zone",onMouseDown:e},u):null}}},{key:"filterOptions",value:function(e){var t=this.state.inputValue,u=this.props.options||[];if(this.props.filterOptions){var n="function"==typeof this.props.filterOptions?this.props.filterOptions:a;return n(u,t,e,{filterOption:this.props.filterOption,ignoreAccents:this.props.ignoreAccents,ignoreCase:this.props.ignoreCase,labelKey:this.props.labelKey,matchPos:this.props.matchPos,matchProp:this.props.matchProp,valueKey:this.props.valueKey,trimFilter:this.props.trimFilter})}return u}},{key:"onOptionRef",value:function(e,t){t&&(this.focused=e)}},{key:"renderMenu",value:function(e,t,u){return e&&e.length?this.props.menuRenderer({focusedOption:u,focusOption:this.focusOption,inputValue:this.state.inputValue,instancePrefix:this._instancePrefix,labelKey:this.props.labelKey,onFocus:this.focusOption,onSelect:this.selectValue,optionClassName:this.props.optionClassName,optionComponent:this.props.optionComponent,optionRenderer:this.props.optionRenderer||this.getOptionLabel,options:e,selectValue:this.selectValue,removeValue:this.removeValue,valueArray:t,valueKey:this.props.valueKey,onOptionRef:this.onOptionRef}):this.props.noResultsText?E.createElement("div",{className:"Select-noresults"},this.props.noResultsText):null}},{key:"renderHiddenField",value:function(e){var t=this;if(this.props.name){if(this.props.joinValues){var u=e.map(function(e){return w(e[t.props.valueKey])}).join(this.props.delimiter);return E.createElement("input",{type:"hidden",ref:function(e){return t.value=e},name:this.props.name,value:u,disabled:this.props.disabled})}return e.map(function(e,u){return E.createElement("input",{key:"hidden."+u,type:"hidden",ref:"value"+u,name:t.props.name,value:w(e[t.props.valueKey]),disabled:t.props.disabled})})}}},{key:"getFocusableOptionIndex",value:function(e){var t=this._visibleOptions;if(!t.length)return null;var u=this.props.valueKey,n=this.state.focusedOption||e;if(n&&!n.disabled){var s=-1;if(t.some(function(e,t){var o=e[u]===n[u];return o&&(s=t),o}),-1!==s)return s}for(var o=0;o optionTop || scrollBottom < optionBottom) { + menuNode.scrollTop = focusedOptionNode.offsetTop; + } + + // We still set hasScrolledToOption to true even if we didn't + // actually need to scroll, as we've still confirmed that the + // option is in view. this.hasScrolledToOption = true; } else if (!this.state.isOpen) { this.hasScrolledToOption = false; @@ -261,11 +273,19 @@ var Select = function (_React$Component) { } if (event.target.tagName === 'INPUT') { + if (!this.state.isFocused) { + this._openAfterFocus = this.props.openOnClick; + this.focus(); + } else if (!this.state.isOpen) { + this.setState({ + isOpen: true, + isPseudoFocused: false + }); + } return; } // prevent default event handlers - event.stopPropagation(); event.preventDefault(); // for the non-searchable select, toggle the menu @@ -313,13 +333,17 @@ var Select = function (_React$Component) { } // If the menu isn't open, let the event bubble to the main handleMouseDown if (!this.state.isOpen) { - return; + this.setState({ + isOpen: true + }); } // prevent default event handlers event.stopPropagation(); event.preventDefault(); // close the menu - this.closeMenu(); + if (this.state.isOpen) { + this.closeMenu(); + } } }, { key: 'handleMouseDownOnMenu', @@ -699,7 +723,6 @@ var Select = function (_React$Component) { if (event && event.type === 'mousedown' && event.button !== 0) { return; } - event.stopPropagation(); event.preventDefault(); this.setValue(this.getResetValue()); this.setState({ diff --git a/lib/utils/defaultMenuRenderer.js b/lib/utils/defaultMenuRenderer.js index 1c398b7f56..5f1aedacc3 100644 --- a/lib/utils/defaultMenuRenderer.js +++ b/lib/utils/defaultMenuRenderer.js @@ -16,17 +16,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de function menuRenderer(_ref) { var focusedOption = _ref.focusedOption, + focusOption = _ref.focusOption, + inputValue = _ref.inputValue, instancePrefix = _ref.instancePrefix, labelKey = _ref.labelKey, onFocus = _ref.onFocus, + onOptionRef = _ref.onOptionRef, onSelect = _ref.onSelect, optionClassName = _ref.optionClassName, optionComponent = _ref.optionComponent, optionRenderer = _ref.optionRenderer, options = _ref.options, + removeValue = _ref.removeValue, + selectValue = _ref.selectValue, valueArray = _ref.valueArray, - valueKey = _ref.valueKey, - onOptionRef = _ref.onOptionRef; + valueKey = _ref.valueKey; var Option = optionComponent; @@ -46,6 +50,8 @@ function menuRenderer(_ref) { Option, { className: optionClass, + focusOption: focusOption, + inputValue: inputValue, instancePrefix: instancePrefix, isDisabled: option.disabled, isFocused: isFocused, @@ -57,9 +63,11 @@ function menuRenderer(_ref) { optionIndex: i, ref: function ref(_ref2) { onOptionRef(_ref2, isFocused); - } + }, + removeValue: removeValue, + selectValue: selectValue }, - optionRenderer(option, i) + optionRenderer(option, i, inputValue) ); }); }