react-select-plus
Advanced tools
Comparing version 1.0.0-beta12 to 1.0.0-beta13
@@ -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:"×"}}))},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:"×"}}))},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
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
1581199
80
34173
341
23
13
Updatedclassnames@^2.2.4
Updatedreact-input-autosize@^0.6.13