New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-select-plus

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-select-plus - npm Package Compare versions

Comparing version 1.0.0-beta12 to 1.0.0-beta13

examples/src/components/Virtualized.js

198

.publish/bundle.js

@@ -522,2 +522,4 @@ require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var _react = require('react');

@@ -592,2 +594,3 @@

autofocus: _react2['default'].PropTypes.bool, // autofocus the component on mount
autosize: _react2['default'].PropTypes.bool, // whether to enable autosizing or not
backspaceRemoves: _react2['default'].PropTypes.bool, // whether backspace removes an item if there is no text input

@@ -609,2 +612,3 @@ className: _react2['default'].PropTypes.string, // className for the outer element

isOpen: _react2['default'].PropTypes.bool, // whether the Select dropdown menu is open or not
joinValues: _react2['default'].PropTypes.bool, // joins multiple values into a single form field with the delimiter (legacy mode)
labelKey: _react2['default'].PropTypes.string, // path of the label value in option objects

@@ -615,2 +619,3 @@ matchPos: _react2['default'].PropTypes.string, // (any|start) match the start or entire string when filtering

menuContainerStyle: _react2['default'].PropTypes.object, // optional style to apply to the menu container
menuRenderer: _react2['default'].PropTypes.func, // renders a custom menu with options
menuStyle: _react2['default'].PropTypes.object, // optional style to apply to the menu

@@ -630,2 +635,4 @@ multi: _react2['default'].PropTypes.bool, // multi-value input

onValueClick: _react2['default'].PropTypes.func, // onClick handler for value labels: function (value, event) {}
openAfterFocus: _react2['default'].PropTypes.bool, // boolean to enable opening dropdown when focused
optionClassName: _react2['default'].PropTypes.string, // additional class(es) to apply to the <Option /> elements
optionComponent: _react2['default'].PropTypes.func, // option component to render in dropdown

@@ -636,2 +643,3 @@ optionGroupComponent: _react2['default'].PropTypes.func, // option group component to render in dropdown

placeholder: stringOrNode, // field placeholder, displayed when there's no value
renderInvalidValues: _react2['default'].PropTypes.bool, // boolean to enable rendering values that do not match any options
required: _react2['default'].PropTypes.bool, // applies HTML5 required attribute when needed

@@ -655,2 +663,3 @@ scrollMenuIntoView: _react2['default'].PropTypes.bool, // boolean to enable the viewport to shift so that the full menu fully visible when engaged

addLabelText: 'Add "{label}"?',
autosize: true,
allowCreate: false,

@@ -670,2 +679,3 @@ backspaceRemoves: true,

isLoading: false,
joinValues: false,
labelKey: 'label',

@@ -678,5 +688,7 @@ matchPos: 'any',

onBlurResetsInput: true,
openAfterFocus: false,
optionComponent: _Option2['default'],
optionGroupComponent: _OptionGroup2['default'],
placeholder: 'Select...',
renderInvalidValues: false,
required: false,

@@ -716,2 +728,7 @@ scrollMenuIntoView: true,

}
if (this.props.value !== nextProps.value && nextProps.required) {
this.setState({
required: this.handleRequired(nextProps.value, nextProps.multi)
});
}
},

@@ -764,2 +781,8 @@

this.refs.input.focus();
if (this.props.openAfterFocus) {
this.setState({
isOpen: true
});
}
},

@@ -1005,9 +1028,21 @@

if (typeof value !== 'string' && typeof value !== 'number') return value;
var valueKey = this.props.valueKey;
var _props = this.props;
var labelKey = _props.labelKey;
var valueKey = _props.valueKey;
var renderInvalidValues = _props.renderInvalidValues;
var options = this._flatOptions;
if (!options) return;
if (!options || value === '') return;
for (var i = 0; i < options.length; i++) {
if (options[i][valueKey] === value) return options[i];
}
// no matching option, return an invalid option if renderInvalidValues is enabled
if (renderInvalidValues) {
var _ref;
return _ref = {
invalid: true
}, _defineProperty(_ref, labelKey, value), _defineProperty(_ref, valueKey, value), _ref;
}
},

@@ -1206,13 +1241,28 @@

}
return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
minWidth: '5',
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}));
if (this.props.autosize) {
return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
minWidth: '5',
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}));
}
return _react2['default'].createElement(
'div',
{ className: className },
_react2['default'].createElement('input', _extends({}, this.props.inputProps, {
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}))
);
},

@@ -1320,56 +1370,67 @@

if (options && options.length) {
var _ret2 = (function () {
var OptionGroup = _this4.props.optionGroupComponent;
var Option = _this4.props.optionComponent;
var renderLabel = _this4.props.optionRenderer || _this4.getOptionLabel;
if (this.props.menuRenderer) {
return this.props.menuRenderer({
focusedOption: focusedOption,
focusOption: this.focusOption,
labelKey: this.props.labelKey,
options: options,
selectValue: this.selectValue,
valueArray: valueArray
});
} else {
var _ret2 = (function () {
var OptionGroup = _this4.props.optionGroupComponent;
var Option = _this4.props.optionComponent;
var renderLabel = _this4.props.optionRenderer || _this4.getOptionLabel;
return {
v: options.map(function (option, i) {
if (_this4.isGroup(option)) {
var optionGroupClass = (0, _classnames2['default'])({
'Select-option-group': true
});
return {
v: options.map(function (option, i) {
if (_this4.isGroup(option)) {
var optionGroupClass = (0, _classnames2['default'])({
'Select-option-group': true
});
return _react2['default'].createElement(
OptionGroup,
{
className: optionGroupClass,
key: 'option-group-' + i,
label: renderLabel(option),
option: option
},
_this4.renderMenu(option.options, valueArray, focusedOption)
);
} else {
var isSelected = valueArray && valueArray.indexOf(option) > -1;
var isFocused = option === focusedOption;
var optionRef = isFocused ? 'focused' : null;
var optionClass = (0, _classnames2['default'])({
'Select-option': true,
'is-selected': isSelected,
'is-focused': isFocused,
'is-disabled': option.disabled
});
return _react2['default'].createElement(
OptionGroup,
{
className: optionGroupClass,
key: 'option-group-' + i,
label: renderLabel(option),
option: option
},
_this4.renderMenu(option.options, valueArray, focusedOption)
);
} else {
var isSelected = valueArray && valueArray.indexOf(option) > -1;
var isFocused = option === focusedOption;
var optionRef = isFocused ? 'focused' : null;
var optionClass = (0, _classnames2['default'])(_this4.props.optionClassName, {
'Select-option': true,
'is-selected': isSelected,
'is-focused': isFocused,
'is-disabled': option.disabled
});
return _react2['default'].createElement(
Option,
{
className: optionClass,
isDisabled: option.disabled,
isFocused: isFocused,
key: 'option-' + i + '-' + option[_this4.props.valueKey],
onSelect: _this4.selectValue,
onFocus: _this4.focusOption,
option: option,
isSelected: isSelected,
ref: optionRef
},
renderLabel(option)
);
}
})
};
})();
return _react2['default'].createElement(
Option,
{
className: optionClass,
isDisabled: option.disabled,
isFocused: isFocused,
key: 'option-' + i + '-' + option[_this4.props.valueKey],
onSelect: _this4.selectValue,
onFocus: _this4.focusOption,
option: option,
isSelected: isSelected,
ref: optionRef
},
renderLabel(option)
);
}
})
};
})();
if (typeof _ret2 === 'object') return _ret2.v;
if (typeof _ret2 === 'object') return _ret2.v;
}
} else if (this.props.noResultsText) {

@@ -1390,2 +1451,13 @@ return _react2['default'].createElement(

if (!this.props.name) return;
if (this.props.joinValues) {
var value = valueArray.map(function (i) {
return stringifyValue(i[_this5.props.valueKey]);
}).join(this.props.delimiter);
return _react2['default'].createElement('input', {
type: 'hidden',
ref: 'value',
name: this.props.name,
value: value,
disabled: this.props.disabled });
}
return valueArray.map(function (item, index) {

@@ -1392,0 +1464,0 @@ return _react2['default'].createElement('input', { key: 'hidden.' + index,

@@ -413,2 +413,4 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Select = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var _react = (typeof window !== "undefined" ? window['React'] : typeof global !== "undefined" ? global['React'] : null);

@@ -483,2 +485,3 @@

autofocus: _react2['default'].PropTypes.bool, // autofocus the component on mount
autosize: _react2['default'].PropTypes.bool, // whether to enable autosizing or not
backspaceRemoves: _react2['default'].PropTypes.bool, // whether backspace removes an item if there is no text input

@@ -500,2 +503,3 @@ className: _react2['default'].PropTypes.string, // className for the outer element

isOpen: _react2['default'].PropTypes.bool, // whether the Select dropdown menu is open or not
joinValues: _react2['default'].PropTypes.bool, // joins multiple values into a single form field with the delimiter (legacy mode)
labelKey: _react2['default'].PropTypes.string, // path of the label value in option objects

@@ -506,2 +510,3 @@ matchPos: _react2['default'].PropTypes.string, // (any|start) match the start or entire string when filtering

menuContainerStyle: _react2['default'].PropTypes.object, // optional style to apply to the menu container
menuRenderer: _react2['default'].PropTypes.func, // renders a custom menu with options
menuStyle: _react2['default'].PropTypes.object, // optional style to apply to the menu

@@ -521,2 +526,4 @@ multi: _react2['default'].PropTypes.bool, // multi-value input

onValueClick: _react2['default'].PropTypes.func, // onClick handler for value labels: function (value, event) {}
openAfterFocus: _react2['default'].PropTypes.bool, // boolean to enable opening dropdown when focused
optionClassName: _react2['default'].PropTypes.string, // additional class(es) to apply to the <Option /> elements
optionComponent: _react2['default'].PropTypes.func, // option component to render in dropdown

@@ -527,2 +534,3 @@ optionGroupComponent: _react2['default'].PropTypes.func, // option group component to render in dropdown

placeholder: stringOrNode, // field placeholder, displayed when there's no value
renderInvalidValues: _react2['default'].PropTypes.bool, // boolean to enable rendering values that do not match any options
required: _react2['default'].PropTypes.bool, // applies HTML5 required attribute when needed

@@ -546,2 +554,3 @@ scrollMenuIntoView: _react2['default'].PropTypes.bool, // boolean to enable the viewport to shift so that the full menu fully visible when engaged

addLabelText: 'Add "{label}"?',
autosize: true,
allowCreate: false,

@@ -561,2 +570,3 @@ backspaceRemoves: true,

isLoading: false,
joinValues: false,
labelKey: 'label',

@@ -569,5 +579,7 @@ matchPos: 'any',

onBlurResetsInput: true,
openAfterFocus: false,
optionComponent: _Option2['default'],
optionGroupComponent: _OptionGroup2['default'],
placeholder: 'Select...',
renderInvalidValues: false,
required: false,

@@ -607,2 +619,7 @@ scrollMenuIntoView: true,

}
if (this.props.value !== nextProps.value && nextProps.required) {
this.setState({
required: this.handleRequired(nextProps.value, nextProps.multi)
});
}
},

@@ -655,2 +672,8 @@

this.refs.input.focus();
if (this.props.openAfterFocus) {
this.setState({
isOpen: true
});
}
},

@@ -896,9 +919,21 @@

if (typeof value !== 'string' && typeof value !== 'number') return value;
var valueKey = this.props.valueKey;
var _props = this.props;
var labelKey = _props.labelKey;
var valueKey = _props.valueKey;
var renderInvalidValues = _props.renderInvalidValues;
var options = this._flatOptions;
if (!options) return;
if (!options || value === '') return;
for (var i = 0; i < options.length; i++) {
if (options[i][valueKey] === value) return options[i];
}
// no matching option, return an invalid option if renderInvalidValues is enabled
if (renderInvalidValues) {
var _ref;
return _ref = {
invalid: true
}, _defineProperty(_ref, labelKey, value), _defineProperty(_ref, valueKey, value), _ref;
}
},

@@ -1097,13 +1132,28 @@

}
return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
minWidth: '5',
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}));
if (this.props.autosize) {
return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
minWidth: '5',
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}));
}
return _react2['default'].createElement(
'div',
{ className: className },
_react2['default'].createElement('input', _extends({}, this.props.inputProps, {
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}))
);
},

@@ -1211,56 +1261,67 @@

if (options && options.length) {
var _ret2 = (function () {
var OptionGroup = _this4.props.optionGroupComponent;
var Option = _this4.props.optionComponent;
var renderLabel = _this4.props.optionRenderer || _this4.getOptionLabel;
if (this.props.menuRenderer) {
return this.props.menuRenderer({
focusedOption: focusedOption,
focusOption: this.focusOption,
labelKey: this.props.labelKey,
options: options,
selectValue: this.selectValue,
valueArray: valueArray
});
} else {
var _ret2 = (function () {
var OptionGroup = _this4.props.optionGroupComponent;
var Option = _this4.props.optionComponent;
var renderLabel = _this4.props.optionRenderer || _this4.getOptionLabel;
return {
v: options.map(function (option, i) {
if (_this4.isGroup(option)) {
var optionGroupClass = (0, _classnames2['default'])({
'Select-option-group': true
});
return {
v: options.map(function (option, i) {
if (_this4.isGroup(option)) {
var optionGroupClass = (0, _classnames2['default'])({
'Select-option-group': true
});
return _react2['default'].createElement(
OptionGroup,
{
className: optionGroupClass,
key: 'option-group-' + i,
label: renderLabel(option),
option: option
},
_this4.renderMenu(option.options, valueArray, focusedOption)
);
} else {
var isSelected = valueArray && valueArray.indexOf(option) > -1;
var isFocused = option === focusedOption;
var optionRef = isFocused ? 'focused' : null;
var optionClass = (0, _classnames2['default'])({
'Select-option': true,
'is-selected': isSelected,
'is-focused': isFocused,
'is-disabled': option.disabled
});
return _react2['default'].createElement(
OptionGroup,
{
className: optionGroupClass,
key: 'option-group-' + i,
label: renderLabel(option),
option: option
},
_this4.renderMenu(option.options, valueArray, focusedOption)
);
} else {
var isSelected = valueArray && valueArray.indexOf(option) > -1;
var isFocused = option === focusedOption;
var optionRef = isFocused ? 'focused' : null;
var optionClass = (0, _classnames2['default'])(_this4.props.optionClassName, {
'Select-option': true,
'is-selected': isSelected,
'is-focused': isFocused,
'is-disabled': option.disabled
});
return _react2['default'].createElement(
Option,
{
className: optionClass,
isDisabled: option.disabled,
isFocused: isFocused,
key: 'option-' + i + '-' + option[_this4.props.valueKey],
onSelect: _this4.selectValue,
onFocus: _this4.focusOption,
option: option,
isSelected: isSelected,
ref: optionRef
},
renderLabel(option)
);
}
})
};
})();
return _react2['default'].createElement(
Option,
{
className: optionClass,
isDisabled: option.disabled,
isFocused: isFocused,
key: 'option-' + i + '-' + option[_this4.props.valueKey],
onSelect: _this4.selectValue,
onFocus: _this4.focusOption,
option: option,
isSelected: isSelected,
ref: optionRef
},
renderLabel(option)
);
}
})
};
})();
if (typeof _ret2 === 'object') return _ret2.v;
if (typeof _ret2 === 'object') return _ret2.v;
}
} else if (this.props.noResultsText) {

@@ -1281,2 +1342,13 @@ return _react2['default'].createElement(

if (!this.props.name) return;
if (this.props.joinValues) {
var value = valueArray.map(function (i) {
return stringifyValue(i[_this5.props.valueKey]);
}).join(this.props.delimiter);
return _react2['default'].createElement('input', {
type: 'hidden',
ref: 'value',
name: this.props.name,
value: value,
disabled: this.props.disabled });
}
return valueArray.map(function (item, index) {

@@ -1283,0 +1355,0 @@ return _react2['default'].createElement('input', { key: 'hidden.' + index,

@@ -67,3 +67,4 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Select = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){

minimumInput: _react2['default'].PropTypes.number, // the minimum number of characters that trigger loadOptions
noResultsText: _react2['default'].PropTypes.string, // placeholder displayed when there are no matching search results (shared with Select)
noResultsText: stringOrNode, // placeholder displayed when there are no matching search results (shared with Select)
onInputChange: _react2['default'].PropTypes.func, // onInputChange handler: function (inputValue) {}
placeholder: stringOrNode, // field placeholder, displayed when there's no value (shared with Select)

@@ -130,2 +131,9 @@ searchPromptText: _react2['default'].PropTypes.string, // label to prompt for search input

loadOptions: function loadOptions(input) {
if (this.props.onInputChange) {
var nextState = this.props.onInputChange(input);
// Note: != used deliberately here to catch undefined and null
if (nextState != null) {
input = '' + nextState;
}
}
if (this.props.ignoreAccents) input = (0, _utilsStripDiacritics2['default'])(input);

@@ -484,3 +492,3 @@ if (this.props.ignoreCase) input = input.toLowerCase();

allowCreate: _react2['default'].PropTypes.bool, // whether to allow creation of new entries
autoBlur: _react2['default'].PropTypes.bool,
autoBlur: _react2['default'].PropTypes.bool, // automatically blur the component when an option is selected
autofocus: _react2['default'].PropTypes.bool, // autofocus the component on mount

@@ -502,2 +510,3 @@ autosize: _react2['default'].PropTypes.bool, // whether to enable autosizing or not

inputProps: _react2['default'].PropTypes.object, // custom attributes for the Input
inputRenderer: _react2['default'].PropTypes.func, // returns a custom input component
isLoading: _react2['default'].PropTypes.bool, // whether the Select is loading externally or not (such as options being loaded)

@@ -527,2 +536,3 @@ isOpen: _react2['default'].PropTypes.bool, // whether the Select dropdown menu is open or not

openAfterFocus: _react2['default'].PropTypes.bool, // boolean to enable opening dropdown when focused
openOnFocus: _react2['default'].PropTypes.bool, // always open options menu on focus
optionClassName: _react2['default'].PropTypes.string, // additional class(es) to apply to the <Option /> elements

@@ -536,2 +546,3 @@ optionComponent: _react2['default'].PropTypes.func, // option component to render in dropdown

required: _react2['default'].PropTypes.bool, // applies HTML5 required attribute when needed
resetValue: _react2['default'].PropTypes.any, // value to use when you clear the control
scrollMenuIntoView: _react2['default'].PropTypes.bool, // boolean to enable the viewport to shift so that the full menu fully visible when engaged

@@ -542,2 +553,3 @@ searchable: _react2['default'].PropTypes.bool, // whether to enable searching feature or not

tabIndex: _react2['default'].PropTypes.string, // optional tab index of the control
tabSelectsValue: _react2['default'].PropTypes.bool, // whether to treat tabbing out while focused to be value selection
value: _react2['default'].PropTypes.any, // initial field value

@@ -584,5 +596,7 @@ valueComponent: _react2['default'].PropTypes.func, // value component to render

required: false,
resetValue: null,
scrollMenuIntoView: true,
searchable: true,
simpleValue: false,
tabSelectsValue: true,
valueComponent: _Value2['default'],

@@ -600,3 +614,3 @@ valueKey: 'value'

isPseudoFocused: false,
required: this.props.required && this.handleRequired(this.props.value, this.props.multi)
required: false
};

@@ -607,2 +621,10 @@ },

this._flatOptions = this.flattenOptions(this.props.options);
var valueArray = this.getValueArray(this.props.value);
if (this.props.required) {
this.setState({
required: this.handleRequired(valueArray[0], this.props.multi)
});
}
},

@@ -620,5 +642,8 @@

}
if (this.props.value !== nextProps.value && nextProps.required) {
var valueArray = this.getValueArray(nextProps.value);
if (nextProps.required) {
this.setState({
required: this.handleRequired(nextProps.value, nextProps.multi)
required: this.handleRequired(valueArray[0], nextProps.multi)
});

@@ -639,4 +664,5 @@ }

var focusedOptionNode = _reactDom2['default'].findDOMNode(this.refs.focused);
var focusedOptionParent = focusedOptionNode.parentElement;
var menuNode = _reactDom2['default'].findDOMNode(this.refs.menu);
menuNode.scrollTop = focusedOptionNode.offsetTop;
menuNode.scrollTop = focusedOptionParent.className === 'Select-menu' ? focusedOptionNode.offsetTop : focusedOptionParent.offsetTop;
this.hasScrolledToOption = true;

@@ -647,5 +673,2 @@ } else if (!this.state.isOpen) {

if (prevState.inputValue !== this.state.inputValue && this.props.onInputChange) {
this.props.onInputChange(this.state.inputValue);
}
if (this._scrollToFocusedOptionOnUpdate && this.refs.focused && this.refs.menu) {

@@ -664,3 +687,3 @@ this._scrollToFocusedOptionOnUpdate = false;

if (window.innerHeight < menuContainerRect.bottom + this.props.menuBuffer) {
window.scrollTo(0, window.scrollY + menuContainerRect.bottom + this.props.menuBuffer - window.innerHeight);
window.scrollBy(0, menuContainerRect.bottom + this.props.menuBuffer - window.innerHeight);
}

@@ -789,3 +812,3 @@ }

handleInputFocus: function handleInputFocus(event) {
var isOpen = this.state.isOpen || this._openAfterFocus;
var isOpen = this.state.isOpen || this._openAfterFocus || this.props.openOnFocus;
if (this.props.onFocus) {

@@ -802,3 +825,4 @@ this.props.onFocus(event);

handleInputBlur: function handleInputBlur(event) {
if (this.refs.menu && document.activeElement.isEqualNode(this.refs.menu)) {
if (this.refs.menu && document.activeElement === this.refs.menu) {
this.focus();
return;

@@ -822,6 +846,14 @@ }

handleInputChange: function handleInputChange(event) {
var newInputValue = event.target.value;
if (this.state.inputValue !== event.target.value && this.props.onInputChange) {
var nextState = this.props.onInputChange(newInputValue);
// Note: != used deliberately here to catch undefined and null
if (nextState != null) {
newInputValue = '' + nextState;
}
}
this.setState({
isOpen: true,
isPseudoFocused: false,
inputValue: event.target.value
inputValue: newInputValue
});

@@ -842,3 +874,3 @@ },

// tab
if (event.shiftKey || !this.state.isOpen) {
if (event.shiftKey || !this.state.isOpen || !this.props.tabSelectsValue) {
return;

@@ -908,4 +940,3 @@ }

getValueArray: function getValueArray() {
var value = this.props.value;
getValueArray: function getValueArray(value) {
if (this.props.multi) {

@@ -985,3 +1016,3 @@ if (typeof value === 'string') value = value.split(this.props.delimiter);

addValue: function addValue(value) {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
this.setValue(valueArray.concat(value));

@@ -991,3 +1022,3 @@ },

popValue: function popValue() {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
if (!valueArray.length) return;

@@ -999,3 +1030,3 @@ if (valueArray[valueArray.length - 1].clearableValue === false) return;

removeValue: function removeValue(value) {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
this.setValue(valueArray.filter(function (i) {

@@ -1015,3 +1046,3 @@ return i !== value;

event.preventDefault();
this.setValue(null);
this.setValue(this.props.resetValue);
this.setState({

@@ -1133,38 +1164,42 @@ isOpen: false,

renderInput: function renderInput(valueArray) {
var className = (0, _classnames2['default'])('Select-input', this.props.inputProps.className);
if (this.props.disabled || !this.props.searchable) {
return _react2['default'].createElement('div', _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex || 0,
onBlur: this.handleInputBlur,
onFocus: this.handleInputFocus,
ref: 'input',
style: { border: 0, width: 1, display: 'inline-block' } }));
if (this.props.inputRenderer) {
return this.props.inputRenderer();
} else {
var className = (0, _classnames2['default'])('Select-input', this.props.inputProps.className);
if (this.props.disabled || !this.props.searchable) {
return _react2['default'].createElement('div', _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex || 0,
onBlur: this.handleInputBlur,
onFocus: this.handleInputFocus,
ref: 'input',
style: { border: 0, width: 1, display: 'inline-block' } }));
}
if (this.props.autosize) {
return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
minWidth: '5',
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}));
}
return _react2['default'].createElement(
'div',
{ className: className },
_react2['default'].createElement('input', _extends({}, this.props.inputProps, {
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}))
);
}
if (this.props.autosize) {
return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
minWidth: '5',
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}));
}
return _react2['default'].createElement(
'div',
{ className: className },
_react2['default'].createElement('input', _extends({}, this.props.inputProps, {
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}))
);
},

@@ -1383,4 +1418,29 @@

renderOuter: function renderOuter(options, valueArray, focusedOption) {
var Dropdown = this.props.dropdownComponent;
var menu = this.renderMenu(options, valueArray, focusedOption);
if (!menu) {
return null;
}
return _react2['default'].createElement(
Dropdown,
null,
_react2['default'].createElement(
'div',
{ ref: 'menuContainer', className: 'Select-menu-outer', style: this.props.menuContainerStyle },
_react2['default'].createElement(
'div',
{ ref: 'menu', className: 'Select-menu',
style: this.props.menuStyle,
onScroll: this.handleMenuScroll,
onMouseDown: this.handleMouseDownOnMenu },
menu
)
)
);
},
render: function render() {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
var options = this.filterOptions(this.props.options || [], this.props.multi ? valueArray : null);

@@ -1393,2 +1453,3 @@ this._visibleOptions = this.flattenOptions(options);

'Select--multi': this.props.multi,
'Select--single': !this.props.multi,
'is-disabled': this.props.disabled,

@@ -1402,3 +1463,3 @@ 'is-focused': this.state.isFocused,

});
var Dropdown = this.props.dropdownComponent;
return _react2['default'].createElement(

@@ -1424,18 +1485,3 @@ 'div',

),
isOpen ? _react2['default'].createElement(
Dropdown,
null,
_react2['default'].createElement(
'div',
{ ref: 'menuContainer', className: 'Select-menu-outer', style: this.props.menuContainerStyle },
_react2['default'].createElement(
'div',
{ ref: 'menu', className: 'Select-menu',
style: this.props.menuStyle,
onScroll: this.handleMenuScroll,
onMouseDown: this.handleMouseDownOnMenu },
this.renderMenu(options, !this.props.multi ? valueArray : null, focusedOption)
)
)
) : null
isOpen ? this.renderOuter(options, !this.props.multi ? valueArray : null, focusedOption) : null
);

@@ -1442,0 +1488,0 @@ }

@@ -1,2 +0,2 @@

!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Select=e()}}(function(){return function e(t,u,s){function o(i,r){if(!u[i]){if(!t[i]){var a="function"==typeof require&&require;if(!r&&a)return a(i,!0);if(n)return n(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var p=u[i]={exports:{}};t[i][0].call(p.exports,function(e){var u=t[i][1][e];return o(u?u:e)},p,p.exports,e,t,u,s)}return u[i].exports}for(var n="function"==typeof require&&require,i=0;i<s.length;i++)o(s[i]);return o}({1:[function(e,t,u){(function(u){"use strict";function s(e){return e&&e.__esModule?e:{"default":e}}function o(e){return e&&"object"!=typeof e&&(e={}),e?e:null}function n(e,t,u){e&&(e[t]=u)}function i(e,t){if(e)for(var u=t.length;u>=0;--u){var s=t.slice(0,u);if(e[s]&&(t===s||e[s].complete))return e[s]}}function r(e,t){return e&&"function"==typeof e.then?e.then(function(e){t(null,e)},function(e){t(e)}):void 0}var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var u=arguments[t];for(var s in u)Object.prototype.hasOwnProperty.call(u,s)&&(e[s]=u[s])}return e},l="undefined"!=typeof window?window.React:"undefined"!=typeof u?u.React:null,p=s(l),d=e("./Select"),c=s(d),f=e("./utils/stripDiacritics"),h=s(f),E=0,g=p["default"].PropTypes.oneOfType([p["default"].PropTypes.string,p["default"].PropTypes.node]),b=p["default"].createClass({displayName:"Async",propTypes:{cache:p["default"].PropTypes.any,ignoreAccents:p["default"].PropTypes.bool,ignoreCase:p["default"].PropTypes.bool,isLoading:p["default"].PropTypes.bool,loadOptions:p["default"].PropTypes.func.isRequired,loadingPlaceholder:p["default"].PropTypes.string,minimumInput:p["default"].PropTypes.number,noResultsText:p["default"].PropTypes.string,placeholder:g,searchPromptText:p["default"].PropTypes.string,searchingText:p["default"].PropTypes.string},getDefaultProps:function(){return{cache:!0,ignoreAccents:!0,ignoreCase:!0,loadingPlaceholder:"Loading...",minimumInput:0,searchingText:"Searching...",searchPromptText:"Type to search"}},getInitialState:function(){return{cache:o(this.props.cache),isLoading:!1,options:[]}},componentWillMount:function(){this._lastInput=""},componentDidMount:function(){this.loadOptions("")},componentWillReceiveProps:function(e){e.cache!==this.props.cache&&this.setState({cache:o(e.cache)})},focus:function(){this.refs.select.focus()},resetState:function(){this._currentRequestId=-1,this.setState({isLoading:!1,options:[]})},getResponseHandler:function(e){var t=this,u=this._currentRequestId=E++;return function(s,o){if(s)throw s;t.isMounted()&&(n(t.state.cache,e,o),u===t._currentRequestId&&t.setState({isLoading:!1,options:o&&o.options||[]}))}},loadOptions:function(e){if(this.props.ignoreAccents&&(e=(0,h["default"])(e)),this.props.ignoreCase&&(e=e.toLowerCase()),this._lastInput=e,e.length<this.props.minimumInput)return this.resetState();var t=i(this.state.cache,e);if(t)return this.setState({options:t.options});this.setState({isLoading:!0});var u=this.getResponseHandler(e);return r(this.props.loadOptions(e,u),u)},render:function(){var e=this.props.noResultsText,t=this.state,u=t.isLoading,s=t.options;this.props.isLoading&&(u=!0);var o=u?this.props.loadingPlaceholder:this.props.placeholder;return s.length||(this._lastInput.length<this.props.minimumInput&&(e=this.props.searchPromptText),u&&(e=this.props.searchingText)),p["default"].createElement(c["default"],a({},this.props,{ref:"select",isLoading:u,noResultsText:e,onInputChange:this.loadOptions,options:s,placeholder:o}))}});t.exports=b}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./Select":5,"./utils/stripDiacritics":7}],2:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var s="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,o=u(s),n=o["default"].createClass({displayName:"Dropdown",propTypes:{children:o["default"].PropTypes.node},render:function(){return this.props.children}});t.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var s="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,o=u(s),n="undefined"!=typeof window?window.classNames:"undefined"!=typeof e?e.classNames:null,i=u(n),r=o["default"].createClass({displayName:"Option",propTypes:{children:o["default"].PropTypes.node,className:o["default"].PropTypes.string,isDisabled:o["default"].PropTypes.bool,isFocused:o["default"].PropTypes.bool,isSelected:o["default"].PropTypes.bool,onFocus:o["default"].PropTypes.func,onSelect:o["default"].PropTypes.func,onUnfocus:o["default"].PropTypes.func,option:o["default"].PropTypes.object.isRequired},blockEvent: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)},handleMouseDown:function(e){e.preventDefault(),e.stopPropagation(),this.props.onSelect(this.props.option,e)},handleMouseEnter:function(e){this.onFocus(e)},handleMouseMove:function(e){this.onFocus(e)},handleTouchEnd:function(e){this.dragging||this.handleMouseDown(e)},handleTouchMove:function(e){this.dragging=!0},handleTouchStart:function(e){this.dragging=!1},onFocus:function(e){this.props.isFocused||this.props.onFocus(this.props.option,e)},render:function(){var e=this.props.option,t=(0,i["default"])(this.props.className,e.className);return e.disabled?o["default"].createElement("div",{className:t,onMouseDown:this.blockEvent,onClick:this.blockEvent},this.props.children):o["default"].createElement("div",{className:t,style:e.style,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd,title:e.title},this.props.children)}});t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var s="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,o=u(s),n="undefined"!=typeof window?window.classNames:"undefined"!=typeof e?e.classNames:null,i=u(n),r=o["default"].createClass({displayName:"OptionGroup",propTypes:{children:o["default"].PropTypes.any,className:o["default"].PropTypes.string,label:o["default"].PropTypes.node,option:o["default"].PropTypes.object.isRequired},blockEvent: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)},handleMouseDown:function(e){e.preventDefault(),e.stopPropagation()},handleTouchEnd:function(e){this.dragging||this.handleMouseDown(e)},handleTouchMove:function(e){this.dragging=!0},handleTouchStart:function(e){this.dragging=!1},render:function(){var e=this.props.option,t=(0,i["default"])(this.props.className,e.className);return e.disabled?o["default"].createElement("div",{className:t,onMouseDown:this.blockEvent,onClick:this.blockEvent},this.props.children):o["default"].createElement("div",{className:t,style:e.style,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd,title:e.title},o["default"].createElement("div",{className:"Select-option-group-label"},this.props.label),this.props.children)}});t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],5:[function(e,t,u){(function(s){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t,u){return t in e?Object.defineProperty(e,t,{value:u,enumerable:!0,configurable:!0,writable:!0}):e[t]=u,e}function i(e){var t={};for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u]);return t}function r(e){return"object"==typeof e?JSON.stringify(e):e}Object.defineProperty(u,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var u=arguments[t];for(var s in u)Object.prototype.hasOwnProperty.call(u,s)&&(e[s]=u[s])}return e},l="undefined"!=typeof window?window.React:"undefined"!=typeof s?s.React:null,p=o(l),d="undefined"!=typeof window?window.ReactDOM:"undefined"!=typeof s?s.ReactDOM:null,c=o(d),f="undefined"!=typeof window?window.AutosizeInput:"undefined"!=typeof s?s.AutosizeInput:null,h=o(f),E="undefined"!=typeof window?window.classNames:"undefined"!=typeof s?s.classNames:null,g=o(E),b=e("./utils/stripDiacritics"),y=o(b),F=e("./Async"),m=o(F),v=e("./Dropdown"),A=o(v),C=e("./Option"),T=o(C),D=e("./OptionGroup"),w=o(D),P=e("./Value"),O=o(P),B=p["default"].PropTypes.oneOfType([p["default"].PropTypes.string,p["default"].PropTypes.node]),M=p["default"].createClass({displayName:"Select",propTypes:{addLabelText:p["default"].PropTypes.string,allowCreate:p["default"].PropTypes.bool,autoBlur:p["default"].PropTypes.bool,autofocus:p["default"].PropTypes.bool,autosize:p["default"].PropTypes.bool,backspaceRemoves:p["default"].PropTypes.bool,className:p["default"].PropTypes.string,clearAllText:B,clearValueText:B,clearable:p["default"].PropTypes.bool,delimiter:p["default"].PropTypes.string,disabled:p["default"].PropTypes.bool,dropdownComponent:p["default"].PropTypes.func,escapeClearsValue:p["default"].PropTypes.bool,filterOption:p["default"].PropTypes.func,filterOptions:p["default"].PropTypes.any,ignoreAccents:p["default"].PropTypes.bool,ignoreCase:p["default"].PropTypes.bool,inputProps:p["default"].PropTypes.object,isLoading:p["default"].PropTypes.bool,isOpen:p["default"].PropTypes.bool,joinValues:p["default"].PropTypes.bool,labelKey:p["default"].PropTypes.string,matchPos:p["default"].PropTypes.string,matchProp:p["default"].PropTypes.string,menuBuffer:p["default"].PropTypes.number,menuContainerStyle:p["default"].PropTypes.object,menuRenderer:p["default"].PropTypes.func,menuStyle:p["default"].PropTypes.object,multi:p["default"].PropTypes.bool,name:p["default"].PropTypes.string,newOptionCreator:p["default"].PropTypes.func,noResultsText:B,onBlur:p["default"].PropTypes.func,onBlurResetsInput:p["default"].PropTypes.bool,onChange:p["default"].PropTypes.func,onClose:p["default"].PropTypes.func,onFocus:p["default"].PropTypes.func,onInputChange:p["default"].PropTypes.func,onMenuScrollToBottom:p["default"].PropTypes.func,onOpen:p["default"].PropTypes.func,onValueClick:p["default"].PropTypes.func,openAfterFocus:p["default"].PropTypes.bool,optionClassName:p["default"].PropTypes.string,optionComponent:p["default"].PropTypes.func,optionGroupComponent:p["default"].PropTypes.func,optionRenderer:p["default"].PropTypes.func,options:p["default"].PropTypes.array,placeholder:B,renderInvalidValues:p["default"].PropTypes.bool,required:p["default"].PropTypes.bool,scrollMenuIntoView:p["default"].PropTypes.bool,searchable:p["default"].PropTypes.bool,simpleValue:p["default"].PropTypes.bool,style:p["default"].PropTypes.object,tabIndex:p["default"].PropTypes.string,value:p["default"].PropTypes.any,valueComponent:p["default"].PropTypes.func,valueKey:p["default"].PropTypes.string,valueRenderer:p["default"].PropTypes.func,wrapperStyle:p["default"].PropTypes.object},statics:{Async:m["default"]},getDefaultProps:function(){return{addLabelText:'Add "{label}"?',autosize:!0,allowCreate:!1,backspaceRemoves:!0,clearable:!0,clearAllText:"Clear all",clearValueText:"Clear value",delimiter:",",disabled:!1,dropdownComponent:A["default"],escapeClearsValue:!0,filterOptions:!0,ignoreAccents:!0,ignoreCase:!0,inputProps:{},isLoading:!1,joinValues:!1,labelKey:"label",matchPos:"any",matchProp:"any",menuBuffer:0,multi:!1,noResultsText:"No results found",onBlurResetsInput:!0,openAfterFocus:!1,optionComponent:T["default"],optionGroupComponent:w["default"],placeholder:"Select...",renderInvalidValues:!1,required:!1,scrollMenuIntoView:!0,searchable:!0,simpleValue:!1,valueComponent:O["default"],valueKey:"value"}},getInitialState:function(){return{inputValue:"",isFocused:!1,isLoading:!1,isOpen:!1,isPseudoFocused:!1,required:this.props.required&&this.handleRequired(this.props.value,this.props.multi)}},componentWillMount:function(){this._flatOptions=this.flattenOptions(this.props.options)},componentDidMount:function(){this.props.autofocus&&this.focus()},componentWillReceiveProps:function(e){e.options!==this.props.options&&(this._flatOptions=this.flattenOptions(e.options)),this.props.value!==e.value&&e.required&&this.setState({required:this.handleRequired(e.value,e.multi)})},componentWillUpdate:function(e,t){if(t.isOpen!==this.state.isOpen){var u=t.isOpen?e.onOpen:e.onClose;u&&u()}},componentDidUpdate:function(e,t){if(this.refs.menu&&this.refs.focused&&this.state.isOpen&&!this.hasScrolledToOption){var u=c["default"].findDOMNode(this.refs.focused),s=c["default"].findDOMNode(this.refs.menu);s.scrollTop=u.offsetTop,this.hasScrolledToOption=!0}else this.state.isOpen||(this.hasScrolledToOption=!1);if(t.inputValue!==this.state.inputValue&&this.props.onInputChange&&this.props.onInputChange(this.state.inputValue),this._scrollToFocusedOptionOnUpdate&&this.refs.focused&&this.refs.menu){this._scrollToFocusedOptionOnUpdate=!1;var o=c["default"].findDOMNode(this.refs.focused),n=c["default"].findDOMNode(this.refs.menu),i=o.getBoundingClientRect(),r=n.getBoundingClientRect();(i.bottom>r.bottom||i.top<r.top)&&(n.scrollTop=o.offsetTop+o.clientHeight-n.offsetHeight)}if(this.props.scrollMenuIntoView&&this.refs.menuContainer){var a=this.refs.menuContainer.getBoundingClientRect();window.innerHeight<a.bottom+this.props.menuBuffer&&window.scrollTo(0,window.scrollY+a.bottom+this.props.menuBuffer-window.innerHeight)}e.disabled!==this.props.disabled&&this.setState({isFocused:!1})},focus:function(){this.refs.input&&(this.refs.input.focus(),this.props.openAfterFocus&&this.setState({isOpen:!0}))},blurInput:function(){this.refs.input&&this.refs.input.blur()},handleTouchMove:function(e){this.dragging=!0},handleTouchStart:function(e){this.dragging=!1},handleTouchEnd:function(e){this.dragging||this.handleMouseDown(e)},handleTouchEndClearValue:function(e){this.dragging||this.clearValue(e)},handleMouseDown:function(e){return this.props.disabled||"mousedown"===e.type&&0!==e.button?void 0:(e.stopPropagation(),e.preventDefault(),this.props.searchable?void(this.state.isFocused?this.setState({isOpen:!0,isPseudoFocused:!1}):(this._openAfterFocus=!0,this.focus())):(this.focus(),this.setState({isOpen:!this.state.isOpen})))},handleMouseDownOnArrow:function(e){this.props.disabled||"mousedown"===e.type&&0!==e.button||this.state.isOpen&&(e.stopPropagation(),e.preventDefault(),this.closeMenu())},handleMouseDownOnMenu:function(e){this.props.disabled||"mousedown"===e.type&&0!==e.button||(e.stopPropagation(),e.preventDefault(),this._openAfterFocus=!0,this.focus())},closeMenu:function(){this.setState({isOpen:!1,isPseudoFocused:this.state.isFocused&&!this.props.multi,inputValue:""}),this.hasScrolledToOption=!1},handleInputFocus:function(e){var t=this.state.isOpen||this._openAfterFocus;this.props.onFocus&&this.props.onFocus(e),this.setState({isFocused:!0,isOpen:t}),this._openAfterFocus=!1},handleInputBlur:function(e){if(!this.refs.menu||!document.activeElement.isEqualNode(this.refs.menu)){this.props.onBlur&&this.props.onBlur(e);var t={isFocused:!1,isOpen:!1,isPseudoFocused:!1};this.props.onBlurResetsInput&&(t.inputValue=""),this.setState(t)}},handleInputChange:function(e){this.setState({isOpen:!0,isPseudoFocused:!1,inputValue:e.target.value})},handleKeyDown:function(e){if(!this.props.disabled){switch(e.keyCode){case 8:return void(!this.state.inputValue&&this.props.backspaceRemoves&&(e.preventDefault(),this.popValue()));case 9:if(e.shiftKey||!this.state.isOpen)return;return void this.selectFocusedOption();case 13:if(!this.state.isOpen)return;e.stopPropagation(),this.selectFocusedOption();break;case 27:this.state.isOpen?this.closeMenu():this.props.clearable&&this.props.escapeClearsValue&&this.clearValue(e);break;case 38:this.focusPreviousOption();break;case 40:this.focusNextOption();break;default:return}e.preventDefault()}},handleValueClick:function(e,t){this.props.onValueClick&&this.props.onValueClick(e,t)},handleMenuScroll:function(e){if(this.props.onMenuScrollToBottom){var t=e.target;t.scrollHeight>t.offsetHeight&&!(t.scrollHeight-t.offsetHeight-t.scrollTop)&&this.props.onMenuScrollToBottom()}},handleRequired:function(e,t){return e?t?0===e.length:0===Object.keys(e).length:!0},getOptionLabel:function(e){return e[this.props.labelKey]},getValueArray:function(){var e=this.props.value;if(this.props.multi){if("string"==typeof e&&(e=e.split(this.props.delimiter)),!Array.isArray(e)){if(null===e||void 0===e)return[];e=[e]}return e.map(this.expandValue).filter(function(e){return e})}var t=this.expandValue(e);return t?[t]:[]},expandValue:function(e){if("string"!=typeof e&&"number"!=typeof e)return e;var t=this.props,u=t.labelKey,s=t.valueKey,o=t.renderInvalidValues,i=this._flatOptions;if(i&&""!==e){for(var r=0;r<i.length;r++)if(i[r][s]===e)return i[r];if(o){var a;return a={invalid:!0},n(a,u,e),n(a,s,e),a}}},setValue:function(e){var t=this;if(this.props.autoBlur&&this.blurInput(),this.props.onChange){if(this.props.required){var u=this.handleRequired(e,this.props.multi);this.setState({required:u})}this.props.simpleValue&&e&&(e=this.props.multi?e.map(function(e){return e[t.props.valueKey]}).join(this.props.delimiter):e[this.props.valueKey]),this.props.onChange(e)}},selectValue:function(e){this.hasScrolledToOption=!1,this.props.multi?(this.addValue(e),this.setState({inputValue:""})):(this.setValue(e),this.setState({isOpen:!1,inputValue:"",isPseudoFocused:this.state.isFocused}))},addValue:function(e){var t=this.getValueArray();this.setValue(t.concat(e))},popValue:function(){var e=this.getValueArray();e.length&&e[e.length-1].clearableValue!==!1&&this.setValue(e.slice(0,e.length-1))},removeValue:function(e){var t=this.getValueArray();this.setValue(t.filter(function(t){return t!==e})),this.focus()},clearValue:function(e){e&&"mousedown"===e.type&&0!==e.button||(e.stopPropagation(),e.preventDefault(),this.setValue(null),this.setState({isOpen:!1,inputValue:""},this.focus))},focusOption:function(e){this.setState({focusedOption:e})},focusNextOption:function(){this.focusAdjacentOption("next")},focusPreviousOption:function(){this.focusAdjacentOption("previous")},focusAdjacentOption:function(e){var t=this._visibleOptions.filter(function(e){return!e.disabled});if(this._scrollToFocusedOptionOnUpdate=!0,!this.state.isOpen)return void this.setState({isOpen:!0,inputValue:"",focusedOption:this._focusedOption||t["next"===e?0:t.length-1]});if(t.length){for(var u=-1,s=0;s<t.length;s++)if(this._focusedOption===t[s]){u=s;break}var o=t[0];"next"===e&&u>-1&&u<t.length-1?o=t[u+1]:"previous"===e&&(o=u>0?t[u-1]:t[t.length-1]),this.setState({focusedOption:o})}},selectFocusedOption:function(){return this._focusedOption?this.selectValue(this._focusedOption):void 0},renderLoading:function(){return this.props.isLoading?p["default"].createElement("span",{className:"Select-loading-zone","aria-hidden":"true"},p["default"].createElement("span",{className:"Select-loading"})):void 0},renderValue:function(e,t){var u=this,s=this.props.valueRenderer||this.getOptionLabel,o=this.props.valueComponent;if(!e.length)return this.state.inputValue?null:p["default"].createElement("div",{className:"Select-placeholder"},this.props.placeholder);var n=this.props.onValueClick?this.handleValueClick:null;return this.props.multi?e.map(function(e,t){return p["default"].createElement(o,{disabled:u.props.disabled||e.clearableValue===!1,key:"value-"+t+"-"+e[u.props.valueKey],onClick:n,onRemove:u.removeValue,value:e},s(e))}):this.state.inputValue?void 0:(t&&(n=null),p["default"].createElement(o,{disabled:this.props.disabled,onClick:n,value:e[0]},s(e[0])))},renderInput:function(e){var t=(0,g["default"])("Select-input",this.props.inputProps.className);return this.props.disabled||!this.props.searchable?p["default"].createElement("div",a({},this.props.inputProps,{className:t,tabIndex:this.props.tabIndex||0,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,ref:"input",style:{border:0,width:1,display:"inline-block"}})):this.props.autosize?p["default"].createElement(h["default"],a({},this.props.inputProps,{className:t,tabIndex:this.props.tabIndex,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,minWidth:"5",ref:"input",required:this.state.required,value:this.state.inputValue})):p["default"].createElement("div",{className:t},p["default"].createElement("input",a({},this.props.inputProps,{tabIndex:this.props.tabIndex,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,ref:"input",required:this.state.required,value:this.state.inputValue})))},renderClear:function(){return!this.props.clearable||!this.props.value||this.props.multi&&!this.props.value.length||this.props.disabled||this.props.isLoading?void 0:p["default"].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},p["default"].createElement("span",{className:"Select-clear",dangerouslySetInnerHTML:{__html:"&times;"}}))},renderArrow:function(){return p["default"].createElement("span",{className:"Select-arrow-zone",onMouseDown:this.handleMouseDownOnArrow},p["default"].createElement("span",{className:"Select-arrow",onMouseDown:this.handleMouseDownOnArrow}))},filterOptions:function(e,t){var u=this,s=null,o=this.state.inputValue;if("function"==typeof this.props.filterOptions)return this.props.filterOptions.call(this,e,o,t);if(!this.props.filterOptions)return e;var n=function(){u.props.ignoreAccents&&(o=(0,y["default"])(o)),u.props.ignoreCase&&(o=o.toLowerCase()),t&&(s=t.map(function(e){return e[u.props.valueKey]}));var n=function(e){if(s&&s.indexOf(e[u.props.valueKey])>-1)return!1;if(u.props.filterOption)return u.props.filterOption.call(u,e,o);if(!o)return!0;var t=String(e[u.props.valueKey]),n=String(e[u.props.labelKey]);return u.props.ignoreAccents&&("label"!==u.props.matchProp&&(t=(0,y["default"])(t)),"value"!==u.props.matchProp&&(n=(0,y["default"])(n))),u.props.ignoreCase&&("label"!==u.props.matchProp&&(t=t.toLowerCase()),"value"!==u.props.matchProp&&(n=n.toLowerCase())),"start"===u.props.matchPos?"label"!==u.props.matchProp&&t.substr(0,o.length)===o||"value"!==u.props.matchProp&&n.substr(0,o.length)===o:"label"!==u.props.matchProp&&t.indexOf(o)>=0||"value"!==u.props.matchProp&&n.indexOf(o)>=0},r=[];return e.forEach(function(e){if(u.isGroup(e)){var s=i(e);s.options=u.filterOptions(e.options,t),s.options.length&&r.push(s)}else n(e)&&r.push(e)}),{v:r}}();return"object"==typeof n?n.v:void 0},isGroup:function(e){return e&&Array.isArray(e.options)},flattenOptions:function(e){if(e){for(var t=[],u=0;u<e.length;u++)this.isGroup(e[u])?t=t.concat(this.flattenOptions(e[u].options)):t.push(e[u]);return t}},renderMenu:function(e,t,u){var s=this;if(!e||!e.length)return this.props.noResultsText?p["default"].createElement("div",{className:"Select-noresults"},this.props.noResultsText):null;if(this.props.menuRenderer)return this.props.menuRenderer({focusedOption:u,focusOption:this.focusOption,labelKey:this.props.labelKey,options:e,selectValue:this.selectValue,valueArray:t});var o=function(){var o=s.props.optionGroupComponent,n=s.props.optionComponent,i=s.props.optionRenderer||s.getOptionLabel;return{v:e.map(function(e,r){if(s.isGroup(e)){var a=(0,g["default"])({"Select-option-group":!0});return p["default"].createElement(o,{className:a,key:"option-group-"+r,label:i(e),option:e},s.renderMenu(e.options,t,u))}var l=t&&t.indexOf(e)>-1,d=e===u,c=d?"focused":null,f=(0,g["default"])(s.props.optionClassName,{"Select-option":!0,"is-selected":l,"is-focused":d,"is-disabled":e.disabled});return p["default"].createElement(n,{className:f,isDisabled:e.disabled,isFocused:d,key:"option-"+r+"-"+e[s.props.valueKey],onSelect:s.selectValue,onFocus:s.focusOption,option:e,isSelected:l,ref:c},i(e))})}}();return"object"==typeof o?o.v:void 0},renderHiddenField:function(e){var t=this;if(this.props.name){if(this.props.joinValues){var u=e.map(function(e){return r(e[t.props.valueKey])}).join(this.props.delimiter);return p["default"].createElement("input",{type:"hidden",ref:"value",name:this.props.name,value:u,disabled:this.props.disabled})}return e.map(function(e,u){return p["default"].createElement("input",{key:"hidden."+u,type:"hidden",ref:"value"+u,name:t.props.name,value:r(e[t.props.valueKey]),disabled:t.props.disabled})})}},getFocusableOption:function(e){var t=this._visibleOptions;if(t.length){var u=this.state.focusedOption||e;if(u&&t.indexOf(u)>-1)return u;for(var s=0;s<t.length;s++)if(!t[s].disabled)return t[s]}},render:function(){var e=this.getValueArray(),t=this.filterOptions(this.props.options||[],this.props.multi?e:null);this._visibleOptions=this.flattenOptions(t);var u="boolean"==typeof this.props.isOpen?this.props.isOpen:this.state.isOpen;this.props.multi&&!t.length&&e.length&&!this.state.inputValue&&(u=!1);var s=this._focusedOption=this.getFocusableOption(e[0]),o=(0,g["default"])("Select",this.props.className,{"Select--multi":this.props.multi,"is-disabled":this.props.disabled,"is-focused":this.state.isFocused,"is-loading":this.props.isLoading,"is-open":u,"is-pseudo-focused":this.state.isPseudoFocused,"is-searchable":this.props.searchable,"has-value":e.length}),n=this.props.dropdownComponent;return p["default"].createElement("div",{ref:"wrapper",className:o,style:this.props.wrapperStyle},this.renderHiddenField(e),p["default"].createElement("div",{ref:"control",className:"Select-control",style:this.props.style,onKeyDown:this.handleKeyDown,onMouseDown:this.handleMouseDown,onTouchEnd:this.handleTouchEnd,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove},this.renderValue(e,u),this.renderInput(e),this.renderLoading(),this.renderClear(),this.renderArrow()),u?p["default"].createElement(n,null,p["default"].createElement("div",{ref:"menuContainer",className:"Select-menu-outer",style:this.props.menuContainerStyle},p["default"].createElement("div",{ref:"menu",className:"Select-menu",style:this.props.menuStyle,onScroll:this.handleMenuScroll,onMouseDown:this.handleMouseDownOnMenu},this.renderMenu(t,this.props.multi?null:e,s)))):null)}});u["default"]=M,t.exports=u["default"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./Async":1,"./Dropdown":2,"./Option":3,"./OptionGroup":4,"./Value":6,"./utils/stripDiacritics":7}],6:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var s="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,o=u(s),n="undefined"!=typeof window?window.classNames:"undefined"!=typeof e?e.classNames:null,i=u(n),r=o["default"].createClass({displayName:"Value",propTypes:{children:o["default"].PropTypes.node,disabled:o["default"].PropTypes.bool,onClick:o["default"].PropTypes.func,onRemove:o["default"].PropTypes.func,value:o["default"].PropTypes.object.isRequired},handleMouseDown:function(e){return"mousedown"!==e.type||0===e.button?this.props.onClick?(e.stopPropagation(),void this.props.onClick(this.props.value,e)):void(this.props.value.href&&e.stopPropagation()):void 0},onRemove:function(e){e.preventDefault(),e.stopPropagation(),this.props.onRemove(this.props.value)},handleTouchEndRemove:function(e){this.dragging||this.onRemove(e)},handleTouchMove:function(e){this.dragging=!0},handleTouchStart:function(e){this.dragging=!1},renderRemoveIcon:function(){return!this.props.disabled&&this.props.onRemove?o["default"].createElement("span",{className:"Select-value-icon",onMouseDown:this.onRemove,onTouchEnd:this.handleTouchEndRemove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove},"×"):void 0},renderLabel:function(){var e="Select-value-label";return this.props.onClick||this.props.value.href?o["default"].createElement("a",{className:e,href:this.props.value.href,target:this.props.value.target,onMouseDown:this.handleMouseDown,onTouchEnd:this.handleMouseDown},this.props.children):o["default"].createElement("span",{className:e},this.props.children)},render:function(){return o["default"].createElement("div",{className:(0,i["default"])("Select-value",this.props.value.className),style:this.props.value.style,title:this.props.value.title},this.renderRemoveIcon(),this.renderLabel())}});t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(e,t,u){"use strict";var s=[{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}];t.exports=function(e){for(var t=0;t<s.length;t++)e=e.replace(s[t].letters,s[t].base);return e}},{}]},{},[5])(5)});
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Select=e()}}(function(){return function e(t,u,s){function o(i,r){if(!u[i]){if(!t[i]){var a="function"==typeof require&&require;if(!r&&a)return a(i,!0);if(n)return n(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var p=u[i]={exports:{}};t[i][0].call(p.exports,function(e){var u=t[i][1][e];return o(u?u:e)},p,p.exports,e,t,u,s)}return u[i].exports}for(var n="function"==typeof require&&require,i=0;i<s.length;i++)o(s[i]);return o}({1:[function(e,t,u){(function(u){"use strict";function s(e){return e&&e.__esModule?e:{"default":e}}function o(e){return e&&"object"!=typeof e&&(e={}),e?e:null}function n(e,t,u){e&&(e[t]=u)}function i(e,t){if(e)for(var u=t.length;u>=0;--u){var s=t.slice(0,u);if(e[s]&&(t===s||e[s].complete))return e[s]}}function r(e,t){return e&&"function"==typeof e.then?e.then(function(e){t(null,e)},function(e){t(e)}):void 0}var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var u=arguments[t];for(var s in u)Object.prototype.hasOwnProperty.call(u,s)&&(e[s]=u[s])}return e},l="undefined"!=typeof window?window.React:"undefined"!=typeof u?u.React:null,p=s(l),d=e("./Select"),c=s(d),f=e("./utils/stripDiacritics"),h=s(f),E=0,g=p["default"].PropTypes.oneOfType([p["default"].PropTypes.string,p["default"].PropTypes.node]),b=p["default"].createClass({displayName:"Async",propTypes:{cache:p["default"].PropTypes.any,ignoreAccents:p["default"].PropTypes.bool,ignoreCase:p["default"].PropTypes.bool,isLoading:p["default"].PropTypes.bool,loadOptions:p["default"].PropTypes.func.isRequired,loadingPlaceholder:p["default"].PropTypes.string,minimumInput:p["default"].PropTypes.number,noResultsText:g,onInputChange:p["default"].PropTypes.func,placeholder:g,searchPromptText:p["default"].PropTypes.string,searchingText:p["default"].PropTypes.string},getDefaultProps:function(){return{cache:!0,ignoreAccents:!0,ignoreCase:!0,loadingPlaceholder:"Loading...",minimumInput:0,searchingText:"Searching...",searchPromptText:"Type to search"}},getInitialState:function(){return{cache:o(this.props.cache),isLoading:!1,options:[]}},componentWillMount:function(){this._lastInput=""},componentDidMount:function(){this.loadOptions("")},componentWillReceiveProps:function(e){e.cache!==this.props.cache&&this.setState({cache:o(e.cache)})},focus:function(){this.refs.select.focus()},resetState:function(){this._currentRequestId=-1,this.setState({isLoading:!1,options:[]})},getResponseHandler:function(e){var t=this,u=this._currentRequestId=E++;return function(s,o){if(s)throw s;t.isMounted()&&(n(t.state.cache,e,o),u===t._currentRequestId&&t.setState({isLoading:!1,options:o&&o.options||[]}))}},loadOptions:function(e){if(this.props.onInputChange){var t=this.props.onInputChange(e);null!=t&&(e=""+t)}if(this.props.ignoreAccents&&(e=(0,h["default"])(e)),this.props.ignoreCase&&(e=e.toLowerCase()),this._lastInput=e,e.length<this.props.minimumInput)return this.resetState();var u=i(this.state.cache,e);if(u)return this.setState({options:u.options});this.setState({isLoading:!0});var s=this.getResponseHandler(e);return r(this.props.loadOptions(e,s),s)},render:function(){var e=this.props.noResultsText,t=this.state,u=t.isLoading,s=t.options;this.props.isLoading&&(u=!0);var o=u?this.props.loadingPlaceholder:this.props.placeholder;return s.length||(this._lastInput.length<this.props.minimumInput&&(e=this.props.searchPromptText),u&&(e=this.props.searchingText)),p["default"].createElement(c["default"],a({},this.props,{ref:"select",isLoading:u,noResultsText:e,onInputChange:this.loadOptions,options:s,placeholder:o}))}});t.exports=b}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./Select":5,"./utils/stripDiacritics":7}],2:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var s="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,o=u(s),n=o["default"].createClass({displayName:"Dropdown",propTypes:{children:o["default"].PropTypes.node},render:function(){return this.props.children}});t.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var s="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,o=u(s),n="undefined"!=typeof window?window.classNames:"undefined"!=typeof e?e.classNames:null,i=u(n),r=o["default"].createClass({displayName:"Option",propTypes:{children:o["default"].PropTypes.node,className:o["default"].PropTypes.string,isDisabled:o["default"].PropTypes.bool,isFocused:o["default"].PropTypes.bool,isSelected:o["default"].PropTypes.bool,onFocus:o["default"].PropTypes.func,onSelect:o["default"].PropTypes.func,onUnfocus:o["default"].PropTypes.func,option:o["default"].PropTypes.object.isRequired},blockEvent: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)},handleMouseDown:function(e){e.preventDefault(),e.stopPropagation(),this.props.onSelect(this.props.option,e)},handleMouseEnter:function(e){this.onFocus(e)},handleMouseMove:function(e){this.onFocus(e)},handleTouchEnd:function(e){this.dragging||this.handleMouseDown(e)},handleTouchMove:function(e){this.dragging=!0},handleTouchStart:function(e){this.dragging=!1},onFocus:function(e){this.props.isFocused||this.props.onFocus(this.props.option,e)},render:function(){var e=this.props.option,t=(0,i["default"])(this.props.className,e.className);return e.disabled?o["default"].createElement("div",{className:t,onMouseDown:this.blockEvent,onClick:this.blockEvent},this.props.children):o["default"].createElement("div",{className:t,style:e.style,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd,title:e.title},this.props.children)}});t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var s="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,o=u(s),n="undefined"!=typeof window?window.classNames:"undefined"!=typeof e?e.classNames:null,i=u(n),r=o["default"].createClass({displayName:"OptionGroup",propTypes:{children:o["default"].PropTypes.any,className:o["default"].PropTypes.string,label:o["default"].PropTypes.node,option:o["default"].PropTypes.object.isRequired},blockEvent: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)},handleMouseDown:function(e){e.preventDefault(),e.stopPropagation()},handleTouchEnd:function(e){this.dragging||this.handleMouseDown(e)},handleTouchMove:function(e){this.dragging=!0},handleTouchStart:function(e){this.dragging=!1},render:function(){var e=this.props.option,t=(0,i["default"])(this.props.className,e.className);return e.disabled?o["default"].createElement("div",{className:t,onMouseDown:this.blockEvent,onClick:this.blockEvent},this.props.children):o["default"].createElement("div",{className:t,style:e.style,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd,title:e.title},o["default"].createElement("div",{className:"Select-option-group-label"},this.props.label),this.props.children)}});t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],5:[function(e,t,u){(function(s){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function n(e,t,u){return t in e?Object.defineProperty(e,t,{value:u,enumerable:!0,configurable:!0,writable:!0}):e[t]=u,e}function i(e){var t={};for(var u in e)e.hasOwnProperty(u)&&(t[u]=e[u]);return t}function r(e){return"object"==typeof e?JSON.stringify(e):e}Object.defineProperty(u,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var u=arguments[t];for(var s in u)Object.prototype.hasOwnProperty.call(u,s)&&(e[s]=u[s])}return e},l="undefined"!=typeof window?window.React:"undefined"!=typeof s?s.React:null,p=o(l),d="undefined"!=typeof window?window.ReactDOM:"undefined"!=typeof s?s.ReactDOM:null,c=o(d),f="undefined"!=typeof window?window.AutosizeInput:"undefined"!=typeof s?s.AutosizeInput:null,h=o(f),E="undefined"!=typeof window?window.classNames:"undefined"!=typeof s?s.classNames:null,g=o(E),b=e("./utils/stripDiacritics"),y=o(b),F=e("./Async"),m=o(F),v=e("./Dropdown"),A=o(v),C=e("./Option"),T=o(C),D=e("./OptionGroup"),w=o(D),P=e("./Value"),O=o(P),B=p["default"].PropTypes.oneOfType([p["default"].PropTypes.string,p["default"].PropTypes.node]),S=p["default"].createClass({displayName:"Select",propTypes:{addLabelText:p["default"].PropTypes.string,allowCreate:p["default"].PropTypes.bool,autoBlur:p["default"].PropTypes.bool,autofocus:p["default"].PropTypes.bool,autosize:p["default"].PropTypes.bool,backspaceRemoves:p["default"].PropTypes.bool,className:p["default"].PropTypes.string,clearAllText:B,clearValueText:B,clearable:p["default"].PropTypes.bool,delimiter:p["default"].PropTypes.string,disabled:p["default"].PropTypes.bool,dropdownComponent:p["default"].PropTypes.func,escapeClearsValue:p["default"].PropTypes.bool,filterOption:p["default"].PropTypes.func,filterOptions:p["default"].PropTypes.any,ignoreAccents:p["default"].PropTypes.bool,ignoreCase:p["default"].PropTypes.bool,inputProps:p["default"].PropTypes.object,inputRenderer:p["default"].PropTypes.func,isLoading:p["default"].PropTypes.bool,isOpen:p["default"].PropTypes.bool,joinValues:p["default"].PropTypes.bool,labelKey:p["default"].PropTypes.string,matchPos:p["default"].PropTypes.string,matchProp:p["default"].PropTypes.string,menuBuffer:p["default"].PropTypes.number,menuContainerStyle:p["default"].PropTypes.object,menuRenderer:p["default"].PropTypes.func,menuStyle:p["default"].PropTypes.object,multi:p["default"].PropTypes.bool,name:p["default"].PropTypes.string,newOptionCreator:p["default"].PropTypes.func,noResultsText:B,onBlur:p["default"].PropTypes.func,onBlurResetsInput:p["default"].PropTypes.bool,onChange:p["default"].PropTypes.func,onClose:p["default"].PropTypes.func,onFocus:p["default"].PropTypes.func,onInputChange:p["default"].PropTypes.func,onMenuScrollToBottom:p["default"].PropTypes.func,onOpen:p["default"].PropTypes.func,onValueClick:p["default"].PropTypes.func,openAfterFocus:p["default"].PropTypes.bool,openOnFocus:p["default"].PropTypes.bool,optionClassName:p["default"].PropTypes.string,optionComponent:p["default"].PropTypes.func,optionGroupComponent:p["default"].PropTypes.func,optionRenderer:p["default"].PropTypes.func,options:p["default"].PropTypes.array,placeholder:B,renderInvalidValues:p["default"].PropTypes.bool,required:p["default"].PropTypes.bool,resetValue:p["default"].PropTypes.any,scrollMenuIntoView:p["default"].PropTypes.bool,searchable:p["default"].PropTypes.bool,simpleValue:p["default"].PropTypes.bool,style:p["default"].PropTypes.object,tabIndex:p["default"].PropTypes.string,tabSelectsValue:p["default"].PropTypes.bool,value:p["default"].PropTypes.any,valueComponent:p["default"].PropTypes.func,valueKey:p["default"].PropTypes.string,valueRenderer:p["default"].PropTypes.func,wrapperStyle:p["default"].PropTypes.object},statics:{Async:m["default"]},getDefaultProps:function(){return{addLabelText:'Add "{label}"?',autosize:!0,allowCreate:!1,backspaceRemoves:!0,clearable:!0,clearAllText:"Clear all",clearValueText:"Clear value",delimiter:",",disabled:!1,dropdownComponent:A["default"],escapeClearsValue:!0,filterOptions:!0,ignoreAccents:!0,ignoreCase:!0,inputProps:{},isLoading:!1,joinValues:!1,labelKey:"label",matchPos:"any",matchProp:"any",menuBuffer:0,multi:!1,noResultsText:"No results found",onBlurResetsInput:!0,openAfterFocus:!1,optionComponent:T["default"],optionGroupComponent:w["default"],placeholder:"Select...",renderInvalidValues:!1,required:!1,resetValue:null,scrollMenuIntoView:!0,searchable:!0,simpleValue:!1,tabSelectsValue:!0,valueComponent:O["default"],valueKey:"value"}},getInitialState:function(){return{inputValue:"",isFocused:!1,isLoading:!1,isOpen:!1,isPseudoFocused:!1,required:!1}},componentWillMount:function(){this._flatOptions=this.flattenOptions(this.props.options);var e=this.getValueArray(this.props.value);this.props.required&&this.setState({required:this.handleRequired(e[0],this.props.multi)})},componentDidMount:function(){this.props.autofocus&&this.focus()},componentWillReceiveProps:function(e){e.options!==this.props.options&&(this._flatOptions=this.flattenOptions(e.options));var t=this.getValueArray(e.value);e.required&&this.setState({required:this.handleRequired(t[0],e.multi)})},componentWillUpdate:function(e,t){if(t.isOpen!==this.state.isOpen){var u=t.isOpen?e.onOpen:e.onClose;u&&u()}},componentDidUpdate:function(e,t){if(this.refs.menu&&this.refs.focused&&this.state.isOpen&&!this.hasScrolledToOption){var u=c["default"].findDOMNode(this.refs.focused),s=u.parentElement,o=c["default"].findDOMNode(this.refs.menu);o.scrollTop="Select-menu"===s.className?u.offsetTop:s.offsetTop,this.hasScrolledToOption=!0}else this.state.isOpen||(this.hasScrolledToOption=!1);if(this._scrollToFocusedOptionOnUpdate&&this.refs.focused&&this.refs.menu){this._scrollToFocusedOptionOnUpdate=!1;var n=c["default"].findDOMNode(this.refs.focused),i=c["default"].findDOMNode(this.refs.menu),r=n.getBoundingClientRect(),a=i.getBoundingClientRect();(r.bottom>a.bottom||r.top<a.top)&&(i.scrollTop=n.offsetTop+n.clientHeight-i.offsetHeight)}if(this.props.scrollMenuIntoView&&this.refs.menuContainer){var l=this.refs.menuContainer.getBoundingClientRect();window.innerHeight<l.bottom+this.props.menuBuffer&&window.scrollBy(0,l.bottom+this.props.menuBuffer-window.innerHeight)}e.disabled!==this.props.disabled&&this.setState({isFocused:!1})},focus:function(){this.refs.input&&(this.refs.input.focus(),this.props.openAfterFocus&&this.setState({isOpen:!0}))},blurInput:function(){this.refs.input&&this.refs.input.blur()},handleTouchMove:function(e){this.dragging=!0},handleTouchStart:function(e){this.dragging=!1},handleTouchEnd:function(e){this.dragging||this.handleMouseDown(e)},handleTouchEndClearValue:function(e){this.dragging||this.clearValue(e)},handleMouseDown:function(e){return this.props.disabled||"mousedown"===e.type&&0!==e.button?void 0:(e.stopPropagation(),e.preventDefault(),this.props.searchable?void(this.state.isFocused?this.setState({isOpen:!0,isPseudoFocused:!1}):(this._openAfterFocus=!0,this.focus())):(this.focus(),this.setState({isOpen:!this.state.isOpen})))},handleMouseDownOnArrow:function(e){this.props.disabled||"mousedown"===e.type&&0!==e.button||this.state.isOpen&&(e.stopPropagation(),e.preventDefault(),this.closeMenu())},handleMouseDownOnMenu:function(e){this.props.disabled||"mousedown"===e.type&&0!==e.button||(e.stopPropagation(),e.preventDefault(),this._openAfterFocus=!0,this.focus())},closeMenu:function(){this.setState({isOpen:!1,isPseudoFocused:this.state.isFocused&&!this.props.multi,inputValue:""}),this.hasScrolledToOption=!1},handleInputFocus:function(e){var t=this.state.isOpen||this._openAfterFocus||this.props.openOnFocus;this.props.onFocus&&this.props.onFocus(e),this.setState({isFocused:!0,isOpen:t}),this._openAfterFocus=!1},handleInputBlur:function(e){if(this.refs.menu&&document.activeElement===this.refs.menu)return void this.focus();this.props.onBlur&&this.props.onBlur(e);var t={isFocused:!1,isOpen:!1,isPseudoFocused:!1};this.props.onBlurResetsInput&&(t.inputValue=""),this.setState(t)},handleInputChange:function(e){var t=e.target.value;if(this.state.inputValue!==e.target.value&&this.props.onInputChange){var u=this.props.onInputChange(t);null!=u&&(t=""+u)}this.setState({isOpen:!0,isPseudoFocused:!1,inputValue:t})},handleKeyDown:function(e){if(!this.props.disabled){switch(e.keyCode){case 8:return void(!this.state.inputValue&&this.props.backspaceRemoves&&(e.preventDefault(),this.popValue()));case 9:if(e.shiftKey||!this.state.isOpen||!this.props.tabSelectsValue)return;return void this.selectFocusedOption();case 13:if(!this.state.isOpen)return;e.stopPropagation(),this.selectFocusedOption();break;case 27:this.state.isOpen?this.closeMenu():this.props.clearable&&this.props.escapeClearsValue&&this.clearValue(e);break;case 38:this.focusPreviousOption();break;case 40:this.focusNextOption();break;default:return}e.preventDefault()}},handleValueClick:function(e,t){this.props.onValueClick&&this.props.onValueClick(e,t)},handleMenuScroll:function(e){if(this.props.onMenuScrollToBottom){var t=e.target;t.scrollHeight>t.offsetHeight&&!(t.scrollHeight-t.offsetHeight-t.scrollTop)&&this.props.onMenuScrollToBottom()}},handleRequired:function(e,t){return e?t?0===e.length:0===Object.keys(e).length:!0},getOptionLabel:function(e){return e[this.props.labelKey]},getValueArray:function(e){if(this.props.multi){if("string"==typeof e&&(e=e.split(this.props.delimiter)),!Array.isArray(e)){if(null===e||void 0===e)return[];e=[e]}return e.map(this.expandValue).filter(function(e){return e})}var t=this.expandValue(e);return t?[t]:[]},expandValue:function(e){if("string"!=typeof e&&"number"!=typeof e)return e;var t=this.props,u=t.labelKey,s=t.valueKey,o=t.renderInvalidValues,i=this._flatOptions;if(i&&""!==e){for(var r=0;r<i.length;r++)if(i[r][s]===e)return i[r];if(o){var a;return a={invalid:!0},n(a,u,e),n(a,s,e),a}}},setValue:function(e){var t=this;if(this.props.autoBlur&&this.blurInput(),this.props.onChange){if(this.props.required){var u=this.handleRequired(e,this.props.multi);this.setState({required:u})}this.props.simpleValue&&e&&(e=this.props.multi?e.map(function(e){return e[t.props.valueKey]}).join(this.props.delimiter):e[this.props.valueKey]),this.props.onChange(e)}},selectValue:function(e){this.hasScrolledToOption=!1,this.props.multi?(this.addValue(e),this.setState({inputValue:""})):(this.setValue(e),this.setState({isOpen:!1,inputValue:"",isPseudoFocused:this.state.isFocused}))},addValue:function(e){var t=this.getValueArray(this.props.value);this.setValue(t.concat(e))},popValue:function(){var e=this.getValueArray(this.props.value);e.length&&e[e.length-1].clearableValue!==!1&&this.setValue(e.slice(0,e.length-1))},removeValue:function(e){var t=this.getValueArray(this.props.value);this.setValue(t.filter(function(t){return t!==e})),this.focus()},clearValue:function(e){e&&"mousedown"===e.type&&0!==e.button||(e.stopPropagation(),e.preventDefault(),this.setValue(this.props.resetValue),this.setState({isOpen:!1,inputValue:""},this.focus))},focusOption:function(e){this.setState({focusedOption:e})},focusNextOption:function(){this.focusAdjacentOption("next")},focusPreviousOption:function(){this.focusAdjacentOption("previous")},focusAdjacentOption:function(e){var t=this._visibleOptions.filter(function(e){return!e.disabled});if(this._scrollToFocusedOptionOnUpdate=!0,!this.state.isOpen)return void this.setState({isOpen:!0,inputValue:"",focusedOption:this._focusedOption||t["next"===e?0:t.length-1]});if(t.length){for(var u=-1,s=0;s<t.length;s++)if(this._focusedOption===t[s]){u=s;break}var o=t[0];"next"===e&&u>-1&&u<t.length-1?o=t[u+1]:"previous"===e&&(o=u>0?t[u-1]:t[t.length-1]),this.setState({focusedOption:o})}},selectFocusedOption:function(){return this._focusedOption?this.selectValue(this._focusedOption):void 0},renderLoading:function(){return this.props.isLoading?p["default"].createElement("span",{className:"Select-loading-zone","aria-hidden":"true"},p["default"].createElement("span",{className:"Select-loading"})):void 0},renderValue:function(e,t){var u=this,s=this.props.valueRenderer||this.getOptionLabel,o=this.props.valueComponent;if(!e.length)return this.state.inputValue?null:p["default"].createElement("div",{className:"Select-placeholder"},this.props.placeholder);var n=this.props.onValueClick?this.handleValueClick:null;return this.props.multi?e.map(function(e,t){return p["default"].createElement(o,{disabled:u.props.disabled||e.clearableValue===!1,key:"value-"+t+"-"+e[u.props.valueKey],onClick:n,onRemove:u.removeValue,value:e},s(e))}):this.state.inputValue?void 0:(t&&(n=null),p["default"].createElement(o,{disabled:this.props.disabled,onClick:n,value:e[0]},s(e[0])))},renderInput:function(e){if(this.props.inputRenderer)return this.props.inputRenderer();var t=(0,g["default"])("Select-input",this.props.inputProps.className);return this.props.disabled||!this.props.searchable?p["default"].createElement("div",a({},this.props.inputProps,{className:t,tabIndex:this.props.tabIndex||0,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,ref:"input",style:{border:0,width:1,display:"inline-block"}})):this.props.autosize?p["default"].createElement(h["default"],a({},this.props.inputProps,{className:t,tabIndex:this.props.tabIndex,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,minWidth:"5",ref:"input",required:this.state.required,value:this.state.inputValue})):p["default"].createElement("div",{className:t},p["default"].createElement("input",a({},this.props.inputProps,{tabIndex:this.props.tabIndex,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,ref:"input",required:this.state.required,value:this.state.inputValue})))},renderClear:function(){return!this.props.clearable||!this.props.value||this.props.multi&&!this.props.value.length||this.props.disabled||this.props.isLoading?void 0:p["default"].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},p["default"].createElement("span",{className:"Select-clear",dangerouslySetInnerHTML:{__html:"&times;"}}))},renderArrow:function(){return p["default"].createElement("span",{className:"Select-arrow-zone",onMouseDown:this.handleMouseDownOnArrow},p["default"].createElement("span",{className:"Select-arrow",onMouseDown:this.handleMouseDownOnArrow}))},filterOptions:function(e,t){var u=this,s=null,o=this.state.inputValue;if("function"==typeof this.props.filterOptions)return this.props.filterOptions.call(this,e,o,t);if(!this.props.filterOptions)return e;var n=function(){u.props.ignoreAccents&&(o=(0,y["default"])(o)),u.props.ignoreCase&&(o=o.toLowerCase()),t&&(s=t.map(function(e){return e[u.props.valueKey]}));var n=function(e){if(s&&s.indexOf(e[u.props.valueKey])>-1)return!1;if(u.props.filterOption)return u.props.filterOption.call(u,e,o);if(!o)return!0;var t=String(e[u.props.valueKey]),n=String(e[u.props.labelKey]);return u.props.ignoreAccents&&("label"!==u.props.matchProp&&(t=(0,y["default"])(t)),"value"!==u.props.matchProp&&(n=(0,y["default"])(n))),u.props.ignoreCase&&("label"!==u.props.matchProp&&(t=t.toLowerCase()),"value"!==u.props.matchProp&&(n=n.toLowerCase())),"start"===u.props.matchPos?"label"!==u.props.matchProp&&t.substr(0,o.length)===o||"value"!==u.props.matchProp&&n.substr(0,o.length)===o:"label"!==u.props.matchProp&&t.indexOf(o)>=0||"value"!==u.props.matchProp&&n.indexOf(o)>=0},r=[];return e.forEach(function(e){if(u.isGroup(e)){var s=i(e);s.options=u.filterOptions(e.options,t),s.options.length&&r.push(s)}else n(e)&&r.push(e)}),{v:r}}();return"object"==typeof n?n.v:void 0},isGroup:function(e){return e&&Array.isArray(e.options)},flattenOptions:function(e){if(e){for(var t=[],u=0;u<e.length;u++)this.isGroup(e[u])?t=t.concat(this.flattenOptions(e[u].options)):t.push(e[u]);return t}},renderMenu:function(e,t,u){var s=this;if(!e||!e.length)return this.props.noResultsText?p["default"].createElement("div",{className:"Select-noresults"},this.props.noResultsText):null;if(this.props.menuRenderer)return this.props.menuRenderer({focusedOption:u,focusOption:this.focusOption,labelKey:this.props.labelKey,options:e,selectValue:this.selectValue,valueArray:t});var o=function(){var o=s.props.optionGroupComponent,n=s.props.optionComponent,i=s.props.optionRenderer||s.getOptionLabel;return{v:e.map(function(e,r){if(s.isGroup(e)){var a=(0,g["default"])({"Select-option-group":!0});return p["default"].createElement(o,{className:a,key:"option-group-"+r,label:i(e),option:e},s.renderMenu(e.options,t,u))}var l=t&&t.indexOf(e)>-1,d=e===u,c=d?"focused":null,f=(0,g["default"])(s.props.optionClassName,{"Select-option":!0,"is-selected":l,"is-focused":d,"is-disabled":e.disabled});return p["default"].createElement(n,{className:f,isDisabled:e.disabled,isFocused:d,key:"option-"+r+"-"+e[s.props.valueKey],onSelect:s.selectValue,onFocus:s.focusOption,option:e,isSelected:l,ref:c},i(e))})}}();return"object"==typeof o?o.v:void 0},renderHiddenField:function(e){var t=this;if(this.props.name){if(this.props.joinValues){var u=e.map(function(e){return r(e[t.props.valueKey])}).join(this.props.delimiter);return p["default"].createElement("input",{type:"hidden",ref:"value",name:this.props.name,value:u,disabled:this.props.disabled})}return e.map(function(e,u){return p["default"].createElement("input",{key:"hidden."+u,type:"hidden",ref:"value"+u,name:t.props.name,value:r(e[t.props.valueKey]),disabled:t.props.disabled})})}},getFocusableOption:function(e){var t=this._visibleOptions;if(t.length){var u=this.state.focusedOption||e;if(u&&t.indexOf(u)>-1)return u;for(var s=0;s<t.length;s++)if(!t[s].disabled)return t[s]}},renderOuter:function(e,t,u){var s=this.props.dropdownComponent,o=this.renderMenu(e,t,u);return o?p["default"].createElement(s,null,p["default"].createElement("div",{ref:"menuContainer",className:"Select-menu-outer",style:this.props.menuContainerStyle},p["default"].createElement("div",{ref:"menu",className:"Select-menu",style:this.props.menuStyle,onScroll:this.handleMenuScroll,onMouseDown:this.handleMouseDownOnMenu},o))):null},render:function(){var e=this.getValueArray(this.props.value),t=this.filterOptions(this.props.options||[],this.props.multi?e:null);this._visibleOptions=this.flattenOptions(t);var u="boolean"==typeof this.props.isOpen?this.props.isOpen:this.state.isOpen;this.props.multi&&!t.length&&e.length&&!this.state.inputValue&&(u=!1);var s=this._focusedOption=this.getFocusableOption(e[0]),o=(0,g["default"])("Select",this.props.className,{"Select--multi":this.props.multi,"Select--single":!this.props.multi,"is-disabled":this.props.disabled,"is-focused":this.state.isFocused,"is-loading":this.props.isLoading,"is-open":u,"is-pseudo-focused":this.state.isPseudoFocused,"is-searchable":this.props.searchable,"has-value":e.length});return p["default"].createElement("div",{ref:"wrapper",className:o,style:this.props.wrapperStyle},this.renderHiddenField(e),p["default"].createElement("div",{ref:"control",className:"Select-control",style:this.props.style,onKeyDown:this.handleKeyDown,onMouseDown:this.handleMouseDown,onTouchEnd:this.handleTouchEnd,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove},this.renderValue(e,u),this.renderInput(e),this.renderLoading(),this.renderClear(),this.renderArrow()),u?this.renderOuter(t,this.props.multi?null:e,s):null)}});u["default"]=S,t.exports=u["default"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./Async":1,"./Dropdown":2,"./Option":3,"./OptionGroup":4,"./Value":6,"./utils/stripDiacritics":7}],6:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}var s="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,o=u(s),n="undefined"!=typeof window?window.classNames:"undefined"!=typeof e?e.classNames:null,i=u(n),r=o["default"].createClass({displayName:"Value",propTypes:{children:o["default"].PropTypes.node,disabled:o["default"].PropTypes.bool,onClick:o["default"].PropTypes.func,onRemove:o["default"].PropTypes.func,value:o["default"].PropTypes.object.isRequired},handleMouseDown:function(e){return"mousedown"!==e.type||0===e.button?this.props.onClick?(e.stopPropagation(),void this.props.onClick(this.props.value,e)):void(this.props.value.href&&e.stopPropagation()):void 0},onRemove:function(e){e.preventDefault(),e.stopPropagation(),this.props.onRemove(this.props.value)},handleTouchEndRemove:function(e){this.dragging||this.onRemove(e)},handleTouchMove:function(e){this.dragging=!0},handleTouchStart:function(e){this.dragging=!1},renderRemoveIcon:function(){return!this.props.disabled&&this.props.onRemove?o["default"].createElement("span",{className:"Select-value-icon",onMouseDown:this.onRemove,onTouchEnd:this.handleTouchEndRemove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove},"×"):void 0},renderLabel:function(){var e="Select-value-label";return this.props.onClick||this.props.value.href?o["default"].createElement("a",{className:e,href:this.props.value.href,target:this.props.value.target,onMouseDown:this.handleMouseDown,onTouchEnd:this.handleMouseDown},this.props.children):o["default"].createElement("span",{className:e},this.props.children)},render:function(){return o["default"].createElement("div",{className:(0,i["default"])("Select-value",this.props.value.className),style:this.props.value.style,title:this.props.value.title},this.renderRemoveIcon(),this.renderLabel())}});t.exports=r}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(e,t,u){"use strict";var s=[{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}];t.exports=function(e){for(var t=0;t<s.length;t++)e=e.replace(s[t].letters,s[t].base);return e}},{}]},{},[5])(5)});

@@ -13,3 +13,3 @@ /* eslint react/prop-types: 0 */

import NumericSelect from './components/NumericSelect';
import Cities from './components/Cities';
import Virtualized from './components/Virtualized';
import States from './components/States';

@@ -19,5 +19,5 @@

<div>
<Cities label="Cities" searchable />
<States label="States" searchable />
<Multiselect label="Multiselect" />
<Virtualized label="Virtualized" />
<Contributors label="Contributors (Async)" />

@@ -24,0 +24,0 @@ <NumericSelect label="Numeric Values" />

import React from 'react';
import Select from 'react-select';
import Select from 'react-select-plus';
import { AutoSizer, VirtualScroll } from 'react-virtualized';

@@ -4,0 +4,0 @@

## v1.0.0-beta13 / 2016-05-30
* added; `inputRenderer` prop, allows you to override the input component, thanks [Sean Burke](https://github.com/leftmostcat)
* added; `openOnFocus` prop, causes the menu to always open when the select control is focused, thanks [HuysentruytRuben](https://github.com/HuysentruytRuben)
* added; `react-virtualised-select` HOC example, thanks [Brian Vaughn](https://github.com/bvaughn)
* added; `tabSelectsValue` prop can be set to false to prevent selection of focused option when tab is pressed, thanks [Byron Anderson](https://github.com/byronanderson)
* added; ability to override `resetValue` when clearing the control, thanks [Alexander Luberg](https://github.com/LubergAlexander)
* added; input can be updated with `onInputChange`, thanks [Brett DeWoody](https://github.com/brettdewoody)
* added; Styles for .is-selected class, thanks [Danny Herran](https://github.com/dherran)
* fixed; `noResultsText` prop type is now `stringOrNode` for Async component, thanks [Michael Groeneman](https://github.com/mgroeneman)
* fixed; `onInputChange` is wrapped by Async component, thanks [Eric O'Connell](https://github.com/drd)
* fixed; `scrollMenuIntoView` behaviour in IE10, thanks [Ivan Jager](https://github.com/aij)
* fixed; isEqualNode replaced with strict equality check, thanks [Alexandre Balhier](https://github.com/abalhier)
* fixed; issue with value object not being passed to `handleRequired`, thanks [Andrew Hite](https://github.com/andyhite)
* fixed; the menu-outer container is no longer rendered when it does not contain anything, thanks [Kuan](https://github.com/khankuan)
* improved; better support for IE8 in styles, thanks [Rockallite Wulf](https://github.com/rockallite)
* fixed; when opening the menu, scroll to the top of the group containing the focused option rather than to the option itself, thanks [mattics](https://github.com/mattics)
## v1.0.0-beta12 / 2016-04-02

@@ -12,2 +30,4 @@

* fixed; multi=true was breaking with option groups, thanks [Alex Olshansky](https://github.com/clbn)
* changed; multiple selected values are now submitted using multiple inputs, thanks [Trinh Hoang Nhu](https://github.com/james4388)
* added; `joinValues` prop to revert the above change and submit multiple values in a single field with the delimiter

@@ -14,0 +34,0 @@ ## v1.0.0-beta10 / 2016-02-23

@@ -65,3 +65,4 @@ 'use strict';

minimumInput: _react2['default'].PropTypes.number, // the minimum number of characters that trigger loadOptions
noResultsText: _react2['default'].PropTypes.string, // placeholder displayed when there are no matching search results (shared with Select)
noResultsText: stringOrNode, // placeholder displayed when there are no matching search results (shared with Select)
onInputChange: _react2['default'].PropTypes.func, // onInputChange handler: function (inputValue) {}
placeholder: stringOrNode, // field placeholder, displayed when there's no value (shared with Select)

@@ -128,2 +129,9 @@ searchPromptText: _react2['default'].PropTypes.string, // label to prompt for search input

loadOptions: function loadOptions(input) {
if (this.props.onInputChange) {
var nextState = this.props.onInputChange(input);
// Note: != used deliberately here to catch undefined and null
if (nextState != null) {
input = '' + nextState;
}
}
if (this.props.ignoreAccents) input = (0, _utilsStripDiacritics2['default'])(input);

@@ -130,0 +138,0 @@ if (this.props.ignoreCase) input = input.toLowerCase();

@@ -80,3 +80,3 @@ 'use strict';

allowCreate: _react2['default'].PropTypes.bool, // whether to allow creation of new entries
autoBlur: _react2['default'].PropTypes.bool,
autoBlur: _react2['default'].PropTypes.bool, // automatically blur the component when an option is selected
autofocus: _react2['default'].PropTypes.bool, // autofocus the component on mount

@@ -98,2 +98,3 @@ autosize: _react2['default'].PropTypes.bool, // whether to enable autosizing or not

inputProps: _react2['default'].PropTypes.object, // custom attributes for the Input
inputRenderer: _react2['default'].PropTypes.func, // returns a custom input component
isLoading: _react2['default'].PropTypes.bool, // whether the Select is loading externally or not (such as options being loaded)

@@ -123,2 +124,3 @@ isOpen: _react2['default'].PropTypes.bool, // whether the Select dropdown menu is open or not

openAfterFocus: _react2['default'].PropTypes.bool, // boolean to enable opening dropdown when focused
openOnFocus: _react2['default'].PropTypes.bool, // always open options menu on focus
optionClassName: _react2['default'].PropTypes.string, // additional class(es) to apply to the <Option /> elements

@@ -132,2 +134,3 @@ optionComponent: _react2['default'].PropTypes.func, // option component to render in dropdown

required: _react2['default'].PropTypes.bool, // applies HTML5 required attribute when needed
resetValue: _react2['default'].PropTypes.any, // value to use when you clear the control
scrollMenuIntoView: _react2['default'].PropTypes.bool, // boolean to enable the viewport to shift so that the full menu fully visible when engaged

@@ -138,2 +141,3 @@ searchable: _react2['default'].PropTypes.bool, // whether to enable searching feature or not

tabIndex: _react2['default'].PropTypes.string, // optional tab index of the control
tabSelectsValue: _react2['default'].PropTypes.bool, // whether to treat tabbing out while focused to be value selection
value: _react2['default'].PropTypes.any, // initial field value

@@ -180,5 +184,7 @@ valueComponent: _react2['default'].PropTypes.func, // value component to render

required: false,
resetValue: null,
scrollMenuIntoView: true,
searchable: true,
simpleValue: false,
tabSelectsValue: true,
valueComponent: _Value2['default'],

@@ -196,3 +202,3 @@ valueKey: 'value'

isPseudoFocused: false,
required: this.props.required && this.handleRequired(this.props.value, this.props.multi)
required: false
};

@@ -203,2 +209,10 @@ },

this._flatOptions = this.flattenOptions(this.props.options);
var valueArray = this.getValueArray(this.props.value);
if (this.props.required) {
this.setState({
required: this.handleRequired(valueArray[0], this.props.multi)
});
}
},

@@ -216,5 +230,8 @@

}
if (this.props.value !== nextProps.value && nextProps.required) {
var valueArray = this.getValueArray(nextProps.value);
if (nextProps.required) {
this.setState({
required: this.handleRequired(nextProps.value, nextProps.multi)
required: this.handleRequired(valueArray[0], nextProps.multi)
});

@@ -235,4 +252,5 @@ }

var focusedOptionNode = _reactDom2['default'].findDOMNode(this.refs.focused);
var focusedOptionParent = focusedOptionNode.parentElement;
var menuNode = _reactDom2['default'].findDOMNode(this.refs.menu);
menuNode.scrollTop = focusedOptionNode.offsetTop;
menuNode.scrollTop = focusedOptionParent.className === 'Select-menu' ? focusedOptionNode.offsetTop : focusedOptionParent.offsetTop;
this.hasScrolledToOption = true;

@@ -243,5 +261,2 @@ } else if (!this.state.isOpen) {

if (prevState.inputValue !== this.state.inputValue && this.props.onInputChange) {
this.props.onInputChange(this.state.inputValue);
}
if (this._scrollToFocusedOptionOnUpdate && this.refs.focused && this.refs.menu) {

@@ -260,3 +275,3 @@ this._scrollToFocusedOptionOnUpdate = false;

if (window.innerHeight < menuContainerRect.bottom + this.props.menuBuffer) {
window.scrollTo(0, window.scrollY + menuContainerRect.bottom + this.props.menuBuffer - window.innerHeight);
window.scrollBy(0, menuContainerRect.bottom + this.props.menuBuffer - window.innerHeight);
}

@@ -385,3 +400,3 @@ }

handleInputFocus: function handleInputFocus(event) {
var isOpen = this.state.isOpen || this._openAfterFocus;
var isOpen = this.state.isOpen || this._openAfterFocus || this.props.openOnFocus;
if (this.props.onFocus) {

@@ -398,3 +413,4 @@ this.props.onFocus(event);

handleInputBlur: function handleInputBlur(event) {
if (this.refs.menu && document.activeElement.isEqualNode(this.refs.menu)) {
if (this.refs.menu && document.activeElement === this.refs.menu) {
this.focus();
return;

@@ -418,6 +434,14 @@ }

handleInputChange: function handleInputChange(event) {
var newInputValue = event.target.value;
if (this.state.inputValue !== event.target.value && this.props.onInputChange) {
var nextState = this.props.onInputChange(newInputValue);
// Note: != used deliberately here to catch undefined and null
if (nextState != null) {
newInputValue = '' + nextState;
}
}
this.setState({
isOpen: true,
isPseudoFocused: false,
inputValue: event.target.value
inputValue: newInputValue
});

@@ -438,3 +462,3 @@ },

// tab
if (event.shiftKey || !this.state.isOpen) {
if (event.shiftKey || !this.state.isOpen || !this.props.tabSelectsValue) {
return;

@@ -504,4 +528,3 @@ }

getValueArray: function getValueArray() {
var value = this.props.value;
getValueArray: function getValueArray(value) {
if (this.props.multi) {

@@ -581,3 +604,3 @@ if (typeof value === 'string') value = value.split(this.props.delimiter);

addValue: function addValue(value) {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
this.setValue(valueArray.concat(value));

@@ -587,3 +610,3 @@ },

popValue: function popValue() {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
if (!valueArray.length) return;

@@ -595,3 +618,3 @@ if (valueArray[valueArray.length - 1].clearableValue === false) return;

removeValue: function removeValue(value) {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
this.setValue(valueArray.filter(function (i) {

@@ -611,3 +634,3 @@ return i !== value;

event.preventDefault();
this.setValue(null);
this.setValue(this.props.resetValue);
this.setState({

@@ -729,38 +752,42 @@ isOpen: false,

renderInput: function renderInput(valueArray) {
var className = (0, _classnames2['default'])('Select-input', this.props.inputProps.className);
if (this.props.disabled || !this.props.searchable) {
return _react2['default'].createElement('div', _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex || 0,
onBlur: this.handleInputBlur,
onFocus: this.handleInputFocus,
ref: 'input',
style: { border: 0, width: 1, display: 'inline-block' } }));
if (this.props.inputRenderer) {
return this.props.inputRenderer();
} else {
var className = (0, _classnames2['default'])('Select-input', this.props.inputProps.className);
if (this.props.disabled || !this.props.searchable) {
return _react2['default'].createElement('div', _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex || 0,
onBlur: this.handleInputBlur,
onFocus: this.handleInputFocus,
ref: 'input',
style: { border: 0, width: 1, display: 'inline-block' } }));
}
if (this.props.autosize) {
return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
minWidth: '5',
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}));
}
return _react2['default'].createElement(
'div',
{ className: className },
_react2['default'].createElement('input', _extends({}, this.props.inputProps, {
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}))
);
}
if (this.props.autosize) {
return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, this.props.inputProps, {
className: className,
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
minWidth: '5',
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}));
}
return _react2['default'].createElement(
'div',
{ className: className },
_react2['default'].createElement('input', _extends({}, this.props.inputProps, {
tabIndex: this.props.tabIndex,
onBlur: this.handleInputBlur,
onChange: this.handleInputChange,
onFocus: this.handleInputFocus,
ref: 'input',
required: this.state.required,
value: this.state.inputValue
}))
);
},

@@ -979,4 +1006,29 @@

renderOuter: function renderOuter(options, valueArray, focusedOption) {
var Dropdown = this.props.dropdownComponent;
var menu = this.renderMenu(options, valueArray, focusedOption);
if (!menu) {
return null;
}
return _react2['default'].createElement(
Dropdown,
null,
_react2['default'].createElement(
'div',
{ ref: 'menuContainer', className: 'Select-menu-outer', style: this.props.menuContainerStyle },
_react2['default'].createElement(
'div',
{ ref: 'menu', className: 'Select-menu',
style: this.props.menuStyle,
onScroll: this.handleMenuScroll,
onMouseDown: this.handleMouseDownOnMenu },
menu
)
)
);
},
render: function render() {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
var options = this.filterOptions(this.props.options || [], this.props.multi ? valueArray : null);

@@ -989,2 +1041,3 @@ this._visibleOptions = this.flattenOptions(options);

'Select--multi': this.props.multi,
'Select--single': !this.props.multi,
'is-disabled': this.props.disabled,

@@ -998,3 +1051,3 @@ 'is-focused': this.state.isFocused,

});
var Dropdown = this.props.dropdownComponent;
return _react2['default'].createElement(

@@ -1020,18 +1073,3 @@ 'div',

),
isOpen ? _react2['default'].createElement(
Dropdown,
null,
_react2['default'].createElement(
'div',
{ ref: 'menuContainer', className: 'Select-menu-outer', style: this.props.menuContainerStyle },
_react2['default'].createElement(
'div',
{ ref: 'menu', className: 'Select-menu',
style: this.props.menuStyle,
onScroll: this.handleMenuScroll,
onMouseDown: this.handleMouseDownOnMenu },
this.renderMenu(options, !this.props.multi ? valueArray : null, focusedOption)
)
)
) : null
isOpen ? this.renderOuter(options, !this.props.multi ? valueArray : null, focusedOption) : null
);

@@ -1038,0 +1076,0 @@ }

{
"name": "react-select-plus",
"version": "1.0.0-beta12",
"version": "1.0.0-beta13",
"description": "A Select control built with and for ReactJS",
"main": "lib/Select.js",
"style": "dist/react-select.min.css",
"style": "dist/react-select-plus.min.css",
"author": "HubSpot",

@@ -14,4 +14,4 @@ "license": "MIT",

"dependencies": {
"classnames": "^2.2.3",
"react-input-autosize": "^0.6.10"
"classnames": "^2.2.4",
"react-input-autosize": "^0.6.13"
},

@@ -21,25 +21,27 @@ "devDependencies": {

"babel-eslint": "^4.1.3",
"chai": "^3.4.1",
"coveralls": "^2.11.6",
"chai": "^3.5.0",
"coveralls": "^2.11.9",
"eslint": "^1.10.3",
"eslint-plugin-react": "^3.15.0",
"gulp": "^3.9.0",
"istanbul": "^0.4.2",
"jsdom": "^7.2.2",
"mocha": "^2.3.4",
"react": "^0.14 || ^15.0.0-rc || ^15.0.0",
"react-addons-test-utils": "^0.14 || ^15.0.0-rc || ^15.0.0",
"gulp": "^3.9.1",
"istanbul": "^0.4.3",
"jsdom": "^8.4.1",
"mocha": "^2.4.5",
"react": "^15.0",
"react-addons-shallow-compare": "^15.0.1",
"react-addons-test-utils": "^15.0",
"react-component-gulp-tasks": "^0.7.7",
"react-dom": "^0.14 || ^15.0.0-rc || ^15.0.0",
"react-gravatar": "^2.3.0",
"react-virtualized": "^6.0.2",
"sinon": "^1.17.2",
"unexpected": "^10.7.0",
"unexpected-dom": "^3.0.2",
"unexpected-react": "^0.5.1",
"unexpected-sinon": "^9.0.4"
"react-dom": "^15.0",
"react-gravatar": "^2.4.3",
"react-virtualized": "^6.3.0",
"react-virtualized-select": "^0.0.4",
"sinon": "^1.17.3",
"unexpected": "^10.13.2",
"unexpected-dom": "^3.1.0",
"unexpected-react": "^3.1.3",
"unexpected-sinon": "^10.2.0"
},
"peerDependencies": {
"react": "^0.14 || ^15.0.0-rc || ^15.0.0",
"react-dom": "^0.14 || ^15.0.0-rc || ^15.0.0"
"react": "^0.14 || ^15.0.0-rc || ^15.0",
"react-dom": "^0.14 || ^15.0.0-rc || ^15.0"
},

@@ -64,3 +66,3 @@ "browserify-shim": {

"start": "gulp dev",
"test": "mocha --compilers js:babel/register",
"test": "npm run lint && mocha --compilers js:babel/register",
"watch": "gulp watch:lib"

@@ -67,0 +69,0 @@ },

@@ -82,4 +82,5 @@ React-Select-Plus

* Selected options will be removed from the dropdown menu
* The values of the selected items are joined using the `delimiter` property to create the input value
* A simple value, if provided, will be split using the `delimiter` property
* The selected values are submitted in multiple `<input type="hidden">` fields, use `joinValues` to submit joined values in a single field instead
* The values of the selected items are joined using the `delimiter` prop to create the input value when `joinValues` is true
* A simple value, if provided, will be split using the `delimiter` prop
* The `onChange` event provides an array of the selected options as the second argument

@@ -249,2 +250,18 @@ * The first argument to `onChange` is always a string, regardless of whether the values of the selected options are numbers or strings

### Updating input values with onInputChange
You can manipulate the input using the onInputChange and returning a new value.
```js
function cleanInput(inputValue) {
// Strip all non-number characters from the input
return inputValue.replace(/[^0-9]/g, "");
}
<Select
name="form-field-name"
onInputChange={cleanInput}
/>
```
### Further options

@@ -256,6 +273,6 @@

addLabelText | string | 'Add "{label}"?' | text to display when `allowCreate` is true
autosize | bool | true | If enabled, the input will expand as the length of its value increases
allowCreate | bool | false | allow new options to be created in multi mode (displays an "Add \<option> ?" item when a value not already in the `options` array is entered)
autoBlur | bool | false | Blurs the input element after a selection has been made. Handy for lowering the keyboard on mobile devices
allowCreate | bool | false | allow new options to be created in multi mode (displays an "Add \<option> ?" item when a value not already in the `options` array is entered)
autoload | bool | true | whether to auto-load the default async options set
autosize | bool | true | If enabled, the input will expand as the length of its value increases
backspaceRemoves | bool | true | whether pressing backspace removes the last item when there is no input value

@@ -267,2 +284,3 @@ cache | bool | true | enables the options cache for `asyncOptions` (default: `true`)

clearValueText | string | 'Clear value' | title for the "clear" control
resetValue | any | null | value to use when you clear the control
delimiter | string | ',' | delimiter to use to join multiple values

@@ -280,3 +298,2 @@ disabled | bool | false | whether the Select is disabled or not

matchProp | string | 'any' | (any, label, value) which option property to filter on
scrollMenuIntoView | bool | true | whether the viewport will shift to display the entire menu when engaged
menuBuffer | number | 0 | buffer of px between the base of the dropdown and the viewport to shift if menu doesnt fit in viewport

@@ -291,7 +308,8 @@ menuRenderer | func | undefined | Renders a custom menu with options; accepts the following named parameters: `menuRenderer({ focusedOption, focusOption, options, selectValue, valueArray })`

onChange | func | undefined | onChange handler: `function(newValue) {}`
onClose | func | undefined | handler for when the menu closes: `function () {}`
onFocus | func | undefined | onFocus handler: `function(event) {}`
onInputChange | func | undefined | onInputChange handler: `function(inputValue) {}`
onOpen | func | undefined | handler for when the menu opens: `function () {}`
onValueClick | func | undefined | onClick handler for value labels: `function (value, event) {}`
onOpen | func | undefined | handler for when the menu opens: `function () {}`
onClose | func | undefined | handler for when the menu closes: `function () {}`
openOnFocus | bool | false | open the options menu when the input gets focus (requires searchable = true)
optionRenderer | func | undefined | function which returns a custom way to render the options in the menu

@@ -301,5 +319,7 @@ options | array | undefined | array of options

renderInvalidValues | bool | false | if a `value` does not match any `options`, render it anyway
scrollMenuIntoView | bool | true | whether the viewport will shift to display the entire menu when engaged
searchable | bool | true | whether to enable searching feature or not
searchingText | string | 'Searching...' | message to display whilst options are loading via asyncOptions, or when `isLoading` is true
searchPromptText | string | 'Type to search' | label to prompt for search input
tabSelectsValue | bool | true | whether to select the currently focused value when the `[tab]` key is pressed
value | any | undefined | initial field value

@@ -306,0 +326,0 @@ valueKey | string | 'value' | the option property to use for the value

@@ -53,3 +53,4 @@ import React from 'react';

minimumInput: React.PropTypes.number, // the minimum number of characters that trigger loadOptions
noResultsText: React.PropTypes.string, // placeholder displayed when there are no matching search results (shared with Select)
noResultsText: stringOrNode, // placeholder displayed when there are no matching search results (shared with Select)
onInputChange: React.PropTypes.func, // onInputChange handler: function (inputValue) {}
placeholder: stringOrNode, // field placeholder, displayed when there's no value (shared with Select)

@@ -114,2 +115,9 @@ searchPromptText: React.PropTypes.string, // label to prompt for search input

loadOptions (input) {
if (this.props.onInputChange) {
let nextState = this.props.onInputChange(input);
// Note: != used deliberately here to catch undefined and null
if (nextState != null) {
input = '' + nextState;
}
}
if (this.props.ignoreAccents) input = stripDiacritics(input);

@@ -116,0 +124,0 @@ if (this.props.ignoreCase) input = input.toLowerCase();

@@ -44,5 +44,5 @@ import React from 'react';

allowCreate: React.PropTypes.bool, // whether to allow creation of new entries
autoBlur: React.PropTypes.bool,
autoBlur: React.PropTypes.bool, // automatically blur the component when an option is selected
autofocus: React.PropTypes.bool, // autofocus the component on mount
autosize: React.PropTypes.bool, // whether to enable autosizing or not
autosize: React.PropTypes.bool, // whether to enable autosizing or not
backspaceRemoves: React.PropTypes.bool, // whether backspace removes an item if there is no text input

@@ -62,2 +62,3 @@ className: React.PropTypes.string, // className for the outer element

inputProps: React.PropTypes.object, // custom attributes for the Input
inputRenderer: React.PropTypes.func, // returns a custom input component
isLoading: React.PropTypes.bool, // whether the Select is loading externally or not (such as options being loaded)

@@ -71,3 +72,3 @@ isOpen: React.PropTypes.bool, // whether the Select dropdown menu is open or not

menuContainerStyle: React.PropTypes.object, // optional style to apply to the menu container
menuRenderer: React.PropTypes.func, // renders a custom menu with options
menuRenderer: React.PropTypes.func, // renders a custom menu with options
menuStyle: React.PropTypes.object, // optional style to apply to the menu

@@ -88,2 +89,3 @@ multi: React.PropTypes.bool, // multi-value input

openAfterFocus: React.PropTypes.bool, // boolean to enable opening dropdown when focused
openOnFocus: React.PropTypes.bool, // always open options menu on focus
optionClassName: React.PropTypes.string, // additional class(es) to apply to the <Option /> elements

@@ -97,2 +99,3 @@ optionComponent: React.PropTypes.func, // option component to render in dropdown

required: React.PropTypes.bool, // applies HTML5 required attribute when needed
resetValue: React.PropTypes.any, // value to use when you clear the control
scrollMenuIntoView: React.PropTypes.bool, // boolean to enable the viewport to shift so that the full menu fully visible when engaged

@@ -103,2 +106,3 @@ searchable: React.PropTypes.bool, // whether to enable searching feature or not

tabIndex: React.PropTypes.string, // optional tab index of the control
tabSelectsValue: React.PropTypes.bool, // whether to treat tabbing out while focused to be value selection
value: React.PropTypes.any, // initial field value

@@ -145,5 +149,7 @@ valueComponent: React.PropTypes.func, // value component to render

required: false,
resetValue: null,
scrollMenuIntoView: true,
searchable: true,
simpleValue: false,
tabSelectsValue: true,
valueComponent: Value,

@@ -161,3 +167,3 @@ valueKey: 'value',

isPseudoFocused: false,
required: this.props.required && this.handleRequired(this.props.value, this.props.multi)
required: false,
};

@@ -168,2 +174,10 @@ },

this._flatOptions = this.flattenOptions(this.props.options);
const valueArray = this.getValueArray(this.props.value);
if (this.props.required) {
this.setState({
required: this.handleRequired(valueArray[0], this.props.multi),
});
}
},

@@ -181,5 +195,8 @@

}
if (this.props.value !== nextProps.value && nextProps.required) {
const valueArray = this.getValueArray(nextProps.value);
if (nextProps.required) {
this.setState({
required: this.handleRequired(nextProps.value, nextProps.multi),
required: this.handleRequired(valueArray[0], nextProps.multi),
});

@@ -200,4 +217,7 @@ }

let focusedOptionNode = ReactDOM.findDOMNode(this.refs.focused);
let focusedOptionParent = focusedOptionNode.parentElement;
let menuNode = ReactDOM.findDOMNode(this.refs.menu);
menuNode.scrollTop = focusedOptionNode.offsetTop;
menuNode.scrollTop = focusedOptionParent.className === 'Select-menu' ?
focusedOptionNode.offsetTop :
focusedOptionParent.offsetTop;
this.hasScrolledToOption = true;

@@ -208,5 +228,2 @@ } else if (!this.state.isOpen) {

if (prevState.inputValue !== this.state.inputValue && this.props.onInputChange) {
this.props.onInputChange(this.state.inputValue);
}
if (this._scrollToFocusedOptionOnUpdate && this.refs.focused && this.refs.menu) {

@@ -225,3 +242,3 @@ this._scrollToFocusedOptionOnUpdate = false;

if (window.innerHeight < menuContainerRect.bottom + this.props.menuBuffer) {
window.scrollTo(0, window.scrollY + menuContainerRect.bottom + this.props.menuBuffer - window.innerHeight);
window.scrollBy(0, menuContainerRect.bottom + this.props.menuBuffer - window.innerHeight);
}

@@ -330,4 +347,4 @@ }

// button, or if the component is disabled, ignore it.
if (this.props.disabled || (event.type === 'mousedown' && event.button !== 0)) {
return;
if (this.props.disabled || (event.type === 'mousedown' && event.button !== 0)) {
return;
}

@@ -351,3 +368,3 @@ event.stopPropagation();

handleInputFocus (event) {
var isOpen = this.state.isOpen || this._openAfterFocus;
var isOpen = this.state.isOpen || this._openAfterFocus || this.props.openOnFocus;
if (this.props.onFocus) {

@@ -364,5 +381,6 @@ this.props.onFocus(event);

handleInputBlur (event) {
if (this.refs.menu && document.activeElement.isEqualNode(this.refs.menu)) {
return;
}
if (this.refs.menu && document.activeElement === this.refs.menu) {
this.focus();
return;
}

@@ -384,6 +402,14 @@ if (this.props.onBlur) {

handleInputChange (event) {
let newInputValue = event.target.value;
if (this.state.inputValue !== event.target.value && this.props.onInputChange) {
let nextState = this.props.onInputChange(newInputValue);
// Note: != used deliberately here to catch undefined and null
if (nextState != null) {
newInputValue = '' + nextState;
}
}
this.setState({
isOpen: true,
isPseudoFocused: false,
inputValue: event.target.value,
inputValue: newInputValue
});

@@ -402,3 +428,3 @@ },

case 9: // tab
if (event.shiftKey || !this.state.isOpen) {
if (event.shiftKey || !this.state.isOpen || !this.props.tabSelectsValue) {
return;

@@ -462,4 +488,3 @@ }

getValueArray () {
let value = this.props.value;
getValueArray (value) {
if (this.props.multi) {

@@ -529,3 +554,3 @@ if (typeof value === 'string') value = value.split(this.props.delimiter);

addValue (value) {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
this.setValue(valueArray.concat(value));

@@ -535,3 +560,3 @@ },

popValue () {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
if (!valueArray.length) return;

@@ -543,3 +568,3 @@ if (valueArray[valueArray.length-1].clearableValue === false) return;

removeValue (value) {
var valueArray = this.getValueArray();
var valueArray = this.getValueArray(this.props.value);
this.setValue(valueArray.filter(i => i !== value));

@@ -557,3 +582,3 @@ this.focus();

event.preventDefault();
this.setValue(null);
this.setValue(this.props.resetValue);
this.setState({

@@ -667,45 +692,49 @@ isOpen: false,

renderInput (valueArray) {
var className = classNames('Select-input', this.props.inputProps.className);
if (this.props.disabled || !this.props.searchable) {
if (this.props.inputRenderer) {
return this.props.inputRenderer();
} else {
var className = classNames('Select-input', this.props.inputProps.className);
if (this.props.disabled || !this.props.searchable) {
return (
<div
{...this.props.inputProps}
className={className}
tabIndex={this.props.tabIndex || 0}
onBlur={this.handleInputBlur}
onFocus={this.handleInputFocus}
ref="input"
style={{ border: 0, width: 1, display:'inline-block' }}/>
);
}
if (this.props.autosize) {
return (
<Input
{...this.props.inputProps}
className={className}
tabIndex={this.props.tabIndex}
onBlur={this.handleInputBlur}
onChange={this.handleInputChange}
onFocus={this.handleInputFocus}
minWidth="5"
ref="input"
required={this.state.required}
value={this.state.inputValue}
/>
);
}
return (
<div
{...this.props.inputProps}
className={className}
tabIndex={this.props.tabIndex || 0}
onBlur={this.handleInputBlur}
onFocus={this.handleInputFocus}
ref="input"
style={{ border: 0, width: 1, display:'inline-block' }}/>
<div className={ className }>
<input
{...this.props.inputProps}
tabIndex={this.props.tabIndex}
onBlur={this.handleInputBlur}
onChange={this.handleInputChange}
onFocus={this.handleInputFocus}
ref="input"
required={this.state.required}
value={this.state.inputValue}
/>
</div>
);
}
if (this.props.autosize) {
return (
<Input
{...this.props.inputProps}
className={className}
tabIndex={this.props.tabIndex}
onBlur={this.handleInputBlur}
onChange={this.handleInputChange}
onFocus={this.handleInputFocus}
minWidth="5"
ref="input"
required={this.state.required}
value={this.state.inputValue}
/>
);
}
return (
<div className={ className }>
<input
{...this.props.inputProps}
tabIndex={this.props.tabIndex}
onBlur={this.handleInputBlur}
onChange={this.handleInputChange}
onFocus={this.handleInputFocus}
ref="input"
required={this.state.required}
value={this.state.inputValue}
/>
</div>
);
},

@@ -910,4 +939,25 @@

renderOuter (options, valueArray, focusedOption) {
let Dropdown = this.props.dropdownComponent;
let menu = this.renderMenu(options, valueArray, focusedOption);
if (!menu) {
return null;
}
return (
<Dropdown>
<div ref="menuContainer" className="Select-menu-outer" style={this.props.menuContainerStyle}>
<div ref="menu" className="Select-menu"
style={this.props.menuStyle}
onScroll={this.handleMenuScroll}
onMouseDown={this.handleMouseDownOnMenu}>
{menu}
</div>
</div>
</Dropdown>
);
},
render () {
let valueArray = this.getValueArray();
let valueArray = this.getValueArray(this.props.value);
let options = this.filterOptions(this.props.options || [], this.props.multi ? valueArray : null);

@@ -920,2 +970,3 @@ this._visibleOptions = this.flattenOptions(options);

'Select--multi': this.props.multi,
'Select--single': !this.props.multi,
'is-disabled': this.props.disabled,

@@ -929,3 +980,3 @@ 'is-focused': this.state.isFocused,

});
let Dropdown = this.props.dropdownComponent;
return (

@@ -948,14 +999,3 @@ <div ref="wrapper" className={className} style={this.props.wrapperStyle}>

</div>
{isOpen ? (
<Dropdown>
<div ref="menuContainer" className="Select-menu-outer" style={this.props.menuContainerStyle}>
<div ref="menu" className="Select-menu"
style={this.props.menuStyle}
onScroll={this.handleMenuScroll}
onMouseDown={this.handleMouseDownOnMenu}>
{this.renderMenu(options, !this.props.multi ? valueArray : null, focusedOption)}
</div>
</div>
</Dropdown>
) : null}
{isOpen ? this.renderOuter(options, !this.props.multi ? valueArray : null, focusedOption) : null}
</div>

@@ -962,0 +1002,0 @@ );

@@ -165,2 +165,23 @@ 'use strict';

describe('with an onInputChange prop', () => {
let input;
const onInputChange = v => input = v;
beforeEach(() => {
// Render an instance of the component
renderer.render(<Select.Async
loadOptions={loadOptions}
minimumInput={1}
onInputChange={onInputChange}
/>);
});
it('calls through to the provided onInputChange function', () => {
typeSearchText('hi');
return expect(input, 'to equal', 'hi');
});
});
describe('with an isLoading prop', () => {

@@ -167,0 +188,0 @@

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc