ssc-refer
Version:
React refer component for SSC 3.0
1,658 lines (1,364 loc) • 1.79 MB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("react"), require("react-dom"));
else if(typeof define === 'function' && define.amd)
define(["react", "react-dom"], factory);
else if(typeof exports === 'object')
exports["SSCComp"] = factory(require("react"), require("react-dom"));
else
root["SSCComp"] = factory(root["React"], root["ReactDOM"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_47__, __WEBPACK_EXTERNAL_MODULE_48__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
exports.__esModule = true;
exports.Refers = undefined;
var _Refers2 = __webpack_require__(1);
var _Refers3 = _interopRequireDefault(_Refers2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports.Refers = _Refers3['default'];
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
exports.__esModule = true;
var _extends2 = __webpack_require__(2);
var _extends3 = _interopRequireDefault(_extends2);
var _stringify = __webpack_require__(41);
var _stringify2 = _interopRequireDefault(_stringify);
var _classnames = __webpack_require__(43);
var _classnames2 = _interopRequireDefault(_classnames);
var _lodash = __webpack_require__(44);
var _reactOnclickoutside = __webpack_require__(46);
var _reactOnclickoutside2 = _interopRequireDefault(_reactOnclickoutside);
var _react = __webpack_require__(47);
var _react2 = _interopRequireDefault(_react);
var _propTypes = __webpack_require__(56);
var _propTypes2 = _interopRequireDefault(_propTypes);
var _ClearButton = __webpack_require__(62);
var _ClearButton2 = _interopRequireDefault(_ClearButton);
var _Loader = __webpack_require__(63);
var _Loader2 = _interopRequireDefault(_Loader);
var _Overlay = __webpack_require__(64);
var _Overlay2 = _interopRequireDefault(_Overlay);
var _TokenizerInput = __webpack_require__(119);
var _TokenizerInput2 = _interopRequireDefault(_TokenizerInput);
var _TypeaheadInput = __webpack_require__(128);
var _TypeaheadInput2 = _interopRequireDefault(_TypeaheadInput);
var _TypeaheadMenu = __webpack_require__(130);
var _TypeaheadMenu2 = _interopRequireDefault(_TypeaheadMenu);
var _ReferList = __webpack_require__(139);
var _ReferList2 = _interopRequireDefault(_ReferList);
var _ReferTable = __webpack_require__(308);
var _ReferTable2 = _interopRequireDefault(_ReferTable);
var _ReferTreeTable = __webpack_require__(332);
var _ReferTreeTable2 = _interopRequireDefault(_ReferTreeTable);
var _addCustomOption = __webpack_require__(377);
var _addCustomOption2 = _interopRequireDefault(_addCustomOption);
var _defaultFilterBy = __webpack_require__(378);
var _defaultFilterBy2 = _interopRequireDefault(_defaultFilterBy);
var _getHintText = __webpack_require__(381);
var _getHintText2 = _interopRequireDefault(_getHintText);
var _getInputText = __webpack_require__(382);
var _getInputText2 = _interopRequireDefault(_getInputText);
var _getOptionLabel = __webpack_require__(126);
var _getOptionLabel2 = _interopRequireDefault(_getOptionLabel);
var _getTruncatedOptions = __webpack_require__(383);
var _getTruncatedOptions2 = _interopRequireDefault(_getTruncatedOptions);
var _warn = __webpack_require__(380);
var _warn2 = _interopRequireDefault(_warn);
var _superagent = __webpack_require__(384);
var _superagent2 = _interopRequireDefault(_superagent);
var _keyCode = __webpack_require__(125);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
* Refer
*/
var Refers = _react2['default'].createClass({
displayName: 'Refers',
propTypes: {
/**
* Allows the creation of new selections on the fly. Note that any new items
* will be added to the list of selections, but not the list of original
* options unless handled as such by `Typeahead`'s parent.
*/
allowNew: _propTypes2['default'].bool,
/**
* Autofocus the input when the component initially mounts.
*/
autoFocus: _propTypes2['default'].bool,
/**
* Whether to render the menu inline or attach to `document.body`.
*/
bodyContainer: _propTypes2['default'].bool,
/**
* Whether or not filtering should be case-sensitive.
*/
caseSensitive: _propTypes2['default'].bool,
/**
* Displays a button to clear the input when there are selections.
*/
clearButton: _propTypes2['default'].bool,
/**
* Specify any pre-selected options. Use only if you want the component to
* be uncontrolled.
*/
defaultSelected: _propTypes2['default'].array,
/**
* Specify whether the menu should appear above the input.
*/
dropup: _propTypes2['default'].bool,
/**
* Either an array of fields in `option` to search, or a custom filtering
* callback.
*/
filterBy: _propTypes2['default'].oneOfType([_propTypes2['default'].arrayOf(_propTypes2['default'].string.isRequired), _propTypes2['default'].func]),
/**
* Whether the filter should ignore accents and other diacritical marks.
*/
ignoreDiacritics: _propTypes2['default'].bool,
/**
* Indicate whether an asynchromous data fetch is happening.
*/
/**
* Indicate whether an asynchromous data fetch is happening.
*/
isLoading: _propTypes2['default'].bool,
/**
* Specify the option key to use for display or a function returning the
* display string. By default, the selector will use the `label` key.
*/
labelKey: _propTypes2['default'].oneOfType([_propTypes2['default'].string, _propTypes2['default'].func]),
/**
* Maximum number of results to display by default. Mostly done for
* performance reasons so as not to render too many DOM nodes in the case of
* large data sets.
*/
maxResults: _propTypes2['default'].number,
/**
* Number of input characters that must be entered before showing results.
*/
minLength: _propTypes2['default'].number,
/**
* Whether or not multiple selections are allowed.
*/
multiple: _propTypes2['default'].bool,
/**
* Callback fired when the input is blurred. Receives an event.
*/
onBlur: _propTypes2['default'].func,
/**
* Callback fired whenever items are added or removed. Receives an array of
* the selected options.
*/
onChange: _propTypes2['default'].func,
/**
* Callback fired when the input is focused. Receives an event.
*/
onFocus: _propTypes2['default'].func,
/**
* Callback for handling changes to the user-input text.
*/
onInputChange: _propTypes2['default'].func,
/**
* Give user the ability to display additional results if the number of
* results exceeds `maxResults`.
*/
paginate: _propTypes2['default'].bool,
/**
* Callback for custom menu rendering.
*/
renderMenu: _propTypes2['default'].func,
/**
* The selected option(s) displayed in the input. Use this prop if you want
* to control the component via its parent.
*/
selected: _propTypes2['default'].array,
/**
* set refer data url ,for example `http://YOURHOST/queryRefJSON`
*/
referDataUrl: _propTypes2['default'].string.isRequired,
/**
* set refOptions ,for example `{"refCode":"dept","refType":"tree","rootName":"部门"}`
*/
referConditions: _propTypes2['default'].object.isRequired,
/**
* Is debug mode.
*/
requestHeader: _propTypes2['default'].object,
/**
* set refer type, for example: list, cascader, table, treetable, default type is list.
*/
referType: _propTypes2['default'].string.isRequired,
/**
* set custom columns for table display, for example `[{"field":"name", "label":"名称"},{"field":"code","label":"编码"},{"field":"addr","label":"地址"}]`
*/
tableColumns: _propTypes2['default'].array,
/**
* set refer whether to display the Disabled button
*/
showDisabledBtn: _propTypes2['default'].bool,
/**
* 显示停用按钮名称,默认值:'显示停用'
*/
showDisabledBtnText: _propTypes2['default'].string,
/**
* 隐藏停用按钮名称,默认值:'隐藏停用'
*/
showDisabledBtnText_Not: _propTypes2['default'].string,
/**
* set refer whether to display Disabled data
*/
showDisabled: _propTypes2['default'].bool,
/**
* Is debug mode.
*/
debugMode: _propTypes2['default'].bool,
/**
* search icon style
*/
searchIcon: _propTypes2['default'].string
},
getDefaultProps: function getDefaultProps() {
return {
allowNew: false,
autoFocus: false,
bodyContainer: false,
caseSensitive: false,
clearButton: false,
defaultSelected: [],
dropup: false,
filterBy: [],
ignoreDiacritics: true,
isLoading: false,
labelKey: 'label',
maxResults: 100,
minLength: 0,
multiple: false,
onBlur: _lodash.noop,
onChange: _lodash.noop,
onFocus: _lodash.noop,
onInputChange: _lodash.noop,
paginate: true,
selected: [],
referDataUrl: 'http://172.20.4.220/ficloud/refbase_ctr/queryRefJSON',
referConditions: {},
requestHeader: {},
referType: 'list',
debugMode: false,
showDisabledBtn: false,
showDisabledBtnText: '显示停用',
showDisabledBtnText_Not: '隐藏停用',
showDisabled: false,
searchIcon: 'glyphicon glyphicon-search refer-search-icon'
};
},
childContextTypes: {
activeIndex: _propTypes2['default'].number.isRequired,
onActiveItemChange: _propTypes2['default'].func.isRequired,
onInitialItemChange: _propTypes2['default'].func.isRequired,
onMenuItemClick: _propTypes2['default'].func.isRequired
},
getChildContext: function getChildContext() {
return {
activeIndex: this.state.activeIndex,
onActiveItemChange: this._handleActiveItemChange,
onInitialItemChange: this._handleInitialItemChange,
onMenuItemClick: this._handleAddOption
};
},
getInitialState: function getInitialState() {
var _props = this.props,
defaultSelected = _props.defaultSelected,
maxResults = _props.maxResults,
showDisabled = _props.showDisabled;
var selected = this.props.selected.slice();
if (defaultSelected && defaultSelected.length) {
selected = defaultSelected;
}
return {
activeIndex: -1,
activeItem: null,
initialItem: null,
selected: selected,
showMenu: false,
shownResults: maxResults,
text: '',
isAbove: true,
responseData: [],
styleStatus: { position: 'relative' },
showDisabled: showDisabled === undefined ? false : showDisabled
};
},
componentWillMount: function componentWillMount() {
var _props2 = this.props,
allowNew = _props2.allowNew,
labelKey = _props2.labelKey;
(0, _warn2['default'])(!(typeof labelKey === 'function' && allowNew), '`labelKey` must be a string if creating new options is allowed.');
},
componentDidMount: function componentDidMount() {
this.props.autoFocus && this.focus();
},
componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
var multiple = nextProps.multiple,
selected = nextProps.selected;
if (!(0, _lodash.isEqual)(selected, this.props.selected)) {
// If new selections are passed in via props, treat the component as a
// controlled input.
this.setState({ selected: selected });
}
if (multiple !== this.props.multiple) {
this.setState({ text: '' });
}
},
render: function render() {
var _props3 = this.props,
allowNew = _props3.allowNew,
className = _props3.className,
dropup = _props3.dropup,
labelKey = _props3.labelKey,
paginate = _props3.paginate,
searchIcon = _props3.searchIcon;
var _state = this.state,
shownResults = _state.shownResults,
text = _state.text;
// First filter the results by the input string.
var results = this._getFilteredResults();
// This must come before we truncate.
var shouldPaginate = paginate && results.length > shownResults;
// Truncate if necessary.
if (shouldPaginate) {
results = (0, _getTruncatedOptions2['default'])(results, shownResults);
}
// Add the custom option.
if (allowNew) {
results = (0, _addCustomOption2['default'])(results, text, labelKey);
}
return _react2['default'].createElement(
'div',
{
className: (0, _classnames2['default'])('bootstrap-typeahead', 'open', {
'dropup': dropup
}, className),
style: this.state.styleStatus },
this._renderInput(results),
this._renderAux(),
this._renderMenu(results, shouldPaginate)
);
},
_getFilteredResults: function _getFilteredResults() {
var _props4 = this.props,
caseSensitive = _props4.caseSensitive,
filterBy = _props4.filterBy,
ignoreDiacritics = _props4.ignoreDiacritics,
labelKey = _props4.labelKey,
minLength = _props4.minLength,
multiple = _props4.multiple;
var _state2 = this.state,
selected = _state2.selected,
text = _state2.text;
if (text.length < minLength) {
return [];
}
var callback = Array.isArray(filterBy) ? function (option) {
return (0, _defaultFilterBy2['default'])(option, text, labelKey, multiple && !!(0, _lodash.find)(selected, function (o) {
return (0, _lodash.isEqual)(o, option);
}), { caseSensitive: caseSensitive, ignoreDiacritics: ignoreDiacritics, fields: filterBy });
} : function (option) {
return filterBy(option, text);
};
return this.state.responseData.filter(callback);
},
getFilteredSelected: function getFilteredSelected(responseData, selectedData) {
var result = void 0;
result = responseData.filter(function (item) {
var flag = false;
selectedData.map(function (obj) {
if ((0, _stringify2['default'])(obj) === (0, _stringify2['default'])(item)) flag = true;
});
return !flag;
});
return result;
},
_loadData: function _loadData() {
var _props5 = this.props,
referDataUrl = _props5.referDataUrl,
referConditions = _props5.referConditions,
requestHeader = _props5.requestHeader,
debugMode = _props5.debugMode,
selected = _props5.selected;
var _this = this;
referConditions['disableshow'] = _this.state.showDisabled;
_superagent2['default'].post(referDataUrl).set(requestHeader).set('Content-Type', 'application/json').send((0, _stringify2['default'])(referConditions)).end(function (err, res) {
if (err || !res.ok) {
if (debugMode) console.log('network error!' + err);
} else {
var data = JSON.parse(res.text);
if (data['success'] === undefined) {
if (debugMode) console.log('response data format is error,for example: no success key');
return false;
}
if (!data['success']) {
if (debugMode) console.log('response data success is false' + data['message']);
} else {
if ((0, _lodash.isArray)(data.data) && data.data.length >= 0) {
_this.setState({ responseData: _this.getFilteredSelected(data.data, selected) });
} else {
if (debugMode) console.log('Message:' + 'Data format error, maybe no data !');
}
}
}
});
},
blur: function blur() {
this.refs.input.blur();
this._hideDropdown();
},
/**
* Public method to allow external clearing of the input. Clears both text
* and selection(s).
*/
clear: function clear() {
var _getInitialState = this.getInitialState(),
activeIndex = _getInitialState.activeIndex,
activeItem = _getInitialState.activeItem,
showMenu = _getInitialState.showMenu;
var selected = [];
var text = '';
this.setState({
activeIndex: activeIndex,
activeItem: activeItem,
selected: selected,
showMenu: showMenu,
text: text
});
this.props.onChange(selected);
this.props.onInputChange(text);
},
focus: function focus() {
this.refs.input.focus();
},
getData: function getData() {
return this.state.selected;
},
getInputTextValue: function getInputTextValue() {
var _props6 = this.props,
bsSize = _props6.bsSize,
disabled = _props6.disabled,
labelKey = _props6.labelKey,
minLength = _props6.minLength,
multiple = _props6.multiple,
name = _props6.name,
placeholder = _props6.placeholder,
renderToken = _props6.renderToken;
var _state3 = this.state,
activeIndex = _state3.activeIndex,
activeItem = _state3.activeItem,
initialItem = _state3.initialItem,
selected = _state3.selected,
text = _state3.text;
return (0, _getInputText2['default'])({ activeItem: activeItem, labelKey: labelKey, multiple: multiple, selected: selected, text: text });
},
hideRefers: function hideRefers() {
this.setState({
styleStatus: { display: 'none' }
});
},
showRefers: function showRefers() {
this.setState({
styleStatus: { position: 'relative' }
});
},
_renderInput: function _renderInput(results) {
var _this2 = this;
var _props7 = this.props,
bsSize = _props7.bsSize,
disabled = _props7.disabled,
labelKey = _props7.labelKey,
minLength = _props7.minLength,
multiple = _props7.multiple,
name = _props7.name,
placeholder = _props7.placeholder,
renderToken = _props7.renderToken,
searchIcon = _props7.searchIcon,
showDisabledBtn = _props7.showDisabledBtn,
showDisabledBtnText = _props7.showDisabledBtnText,
showDisabledBtnText_Not = _props7.showDisabledBtnText_Not;
var _state4 = this.state,
activeIndex = _state4.activeIndex,
activeItem = _state4.activeItem,
initialItem = _state4.initialItem,
selected = _state4.selected,
text = _state4.text;
var Input = multiple ? _TokenizerInput2['default'] : _TypeaheadInput2['default'];
var inputProps = { bsSize: bsSize, disabled: disabled, name: name, placeholder: placeholder, renderToken: renderToken };
return _react2['default'].createElement(
'div',
{ className: 'input-group' },
_react2['default'].createElement(Input, (0, _extends3['default'])({}, inputProps, {
activeIndex: activeIndex,
activeItem: activeItem,
hasAux: !!this._renderAux(),
hintText: (0, _getHintText2['default'])({
activeItem: activeItem,
initialItem: initialItem,
labelKey: labelKey,
minLength: minLength,
selected: selected,
text: text
}),
initialItem: initialItem,
labelKey: labelKey,
onAdd: this._handleAddOption,
onBlur: this._handleBlur,
onChange: this._handleTextChange,
onFocus: this._handleFocus.bind(this, disabled),
onKeyDown: function onKeyDown(e) {
return _this2._handleKeydown(results, e);
},
onRemove: this._handleRemoveOption,
options: results,
ref: 'input',
selected: selected.slice(),
value: (0, _getInputText2['default'])({ activeItem: activeItem, labelKey: labelKey, multiple: multiple, selected: selected, text: text })
})),
_react2['default'].createElement(
'span',
{ className: "input-group-addon cursor-style", onClick: this._handleFocus.bind(this, disabled),
style: disabled ? { 'cursor': 'no-drop' } : {} },
_react2['default'].createElement('span', { className: (0, _classnames2['default'])(searchIcon) })
),
showDisabledBtn === false ? null : _react2['default'].createElement(
'span',
{ className: 'input-group-addon cursor-style', style: disabled ? { 'cursor': 'no-drop' } : {},
title: this.state.showDisabled ? showDisabledBtnText_Not || '隐藏停用' : showDisabledBtnText || '显示停用',
onClick: this._handleEnable.bind(this, disabled) },
_react2['default'].createElement('span', { className: this.state.showDisabled ? 'icon-show-disabled red' : 'icon-show-disabled' })
)
);
},
_renderMenu: function _renderMenu(results, shouldPaginate) {
var _this3 = this;
var _props8 = this.props,
align = _props8.align,
bodyContainer = _props8.bodyContainer,
dropup = _props8.dropup,
emptyLabel = _props8.emptyLabel,
labelKey = _props8.labelKey,
maxHeight = _props8.maxHeight,
minLength = _props8.minLength,
newSelectionPrefix = _props8.newSelectionPrefix,
paginationText = _props8.paginationText,
renderMenu = _props8.renderMenu,
renderMenuItemChildren = _props8.renderMenuItemChildren,
referType = _props8.referType,
tableColumns = _props8.tableColumns;
var _state5 = this.state,
showMenu = _state5.showMenu,
text = _state5.text;
var menuProps = {
align: align,
dropup: dropup,
emptyLabel: emptyLabel,
labelKey: labelKey,
maxHeight: maxHeight,
newSelectionPrefix: newSelectionPrefix,
paginationText: paginationText,
onPaginate: this._handlePagination,
paginate: shouldPaginate,
text: text,
tableColumns: tableColumns
};
var list = renderMenu ? renderMenu(results, menuProps) : _react2['default'].createElement(_TypeaheadMenu2['default'], (0, _extends3['default'])({}, menuProps, {
options: results,
renderMenuItemChildren: renderMenuItemChildren
}));
var typeObj = _lodash.noop;
switch (referType) {
case 'list':
typeObj = list;
break;
case 'cascader':
var cascader = renderMenu ? renderMenu(results, menuProps) : _react2['default'].createElement(_ReferList2['default'], (0, _extends3['default'])({}, menuProps, {
options: results,
renderMenuItemChildren: renderMenuItemChildren
}));
typeObj = cascader;
break;
case 'table':
var table = renderMenu ? renderMenu(results, menuProps) : _react2['default'].createElement(_ReferTable2['default'], (0, _extends3['default'])({}, menuProps, {
options: results,
onClickItem: this._handleAddOption
}));
typeObj = table;
break;
case 'treetable':
var treetable = renderMenu ? renderMenu(results, menuProps) : _react2['default'].createElement(_ReferTreeTable2['default'], (0, _extends3['default'])({}, menuProps, {
options: results,
onClickItem: this._handleAddOption
}));
typeObj = treetable;
break;
default:
typeObj = list;
}
return _react2['default'].createElement(
_Overlay2['default'],
{
container: bodyContainer ? document.body : this,
show: showMenu && text.length >= minLength,
target: function target() {
return _this3.refs.input;
} },
typeObj
);
},
_renderAux: function _renderAux() {
var _props9 = this.props,
bsSize = _props9.bsSize,
clearButton = _props9.clearButton,
disabled = _props9.disabled,
isLoading = _props9.isLoading;
if (isLoading) {
return _react2['default'].createElement(_Loader2['default'], { bsSize: bsSize });
}
if (clearButton && !disabled && this.state.selected.length) {
return _react2['default'].createElement(_ClearButton2['default'], {
bsSize: bsSize,
className: 'bootstrap-typeahead-clear-button',
onClick: this.clear
});
}
},
_handleActiveItemChange: function _handleActiveItemChange(activeItem) {
this.setState({ activeItem: activeItem });
},
_handleBlur: function _handleBlur(e) {
// Note: Don't hide the menu here, since that interferes with other actions
// like making a selection by clicking on a menu item.
if (this.props.onBlur) {
this.props.onBlur(e);
}
},
_handleFocus: function _handleFocus(disabled, e) {
if (disabled) {
return;
}
this.props.onFocus(e);
var multiple = this.props.multiple;
if (!multiple) {
// this.clear();
}
this._loadData();
this.setState({ showMenu: true });
},
_handleEnable: function _handleEnable(disabled, e) {
if (disabled) {
return;
}
this._handleBlur(e);
var showDisabled = this.state.showDisabled === undefined ? this.getInitialState() : this.state.showDisabled;
this.setState({ showDisabled: !showDisabled, showMenu: false });
},
_handleInitialItemChange: function _handleInitialItemChange(initialItem) {
var currentItem = this.state.initialItem;
if (!currentItem) {
this.setState({ initialItem: initialItem });
return;
}
var labelKey = this.props.labelKey;
// Don't update the initial item if it hasn't changed. For custom items,
// compare the `labelKey` values since a unique id is generated each time,
// causing the comparison to always return false otherwise.
if ((0, _lodash.isEqual)(initialItem, currentItem) || initialItem.customOption && initialItem[labelKey] === currentItem[labelKey]) {
return;
}
this.setState({ initialItem: initialItem });
},
_handleTextChange: function _handleTextChange(text) {
var _getInitialState2 = this.getInitialState(),
activeIndex = _getInitialState2.activeIndex,
activeItem = _getInitialState2.activeItem;
this.setState({
activeIndex: activeIndex,
activeItem: activeItem,
showMenu: true,
text: text
});
this.props.onInputChange(text);
},
_handleChange: function _handleChange(text, e) {
this._handleTextChange(text);
this.props.onChange(e);
},
_handleKeydown: function _handleKeydown(options, e) {
var _state6 = this.state,
activeItem = _state6.activeItem,
showMenu = _state6.showMenu;
switch (e.keyCode) {
case _keyCode.UP:
case _keyCode.DOWN:
// Don't cycle through the options if the menu is hidden.
if (!showMenu) {
return;
}
var activeIndex = this.state.activeIndex;
// Prevents input cursor from going to the beginning when pressing up.
e.preventDefault();
// Increment or decrement index based on user keystroke.
activeIndex += e.keyCode === _keyCode.UP ? -1 : 1;
// If we've reached the end, go back to the beginning or vice-versa.
if (activeIndex === options.length) {
activeIndex = -1;
} else if (activeIndex === -2) {
activeIndex = options.length - 1;
}
var newState = { activeIndex: activeIndex };
if (activeIndex === -1) {
// Reset the active item if there is no active index.
newState.activeItem = null;
}
this.setState(newState);
break;
case _keyCode.ESC:
case _keyCode.TAB:
// Prevent closing dialogs.
e.keyCode === _keyCode.ESC && e.preventDefault();
this._hideDropdown();
break;
case _keyCode.RETURN:
// Prevent submitting forms.
e.preventDefault();
if (showMenu) {
activeItem && this._handleAddOption(activeItem);
}
break;
}
},
_handleAddOption: function _handleAddOption(selectedOption) {
var _props10 = this.props,
multiple = _props10.multiple,
labelKey = _props10.labelKey,
onChange = _props10.onChange,
onInputChange = _props10.onInputChange;
var selected = void 0;
var text = void 0;
if (multiple) {
// If multiple selections are allowed, add the new selection to the
// existing selections.
selected = this.state.selected.concat(selectedOption);
text = '';
} else {
// If only a single selection is allowed, replace the existing selection
// with the new one.
selected = [selectedOption];
text = (0, _getOptionLabel2['default'])(selectedOption, labelKey);
}
this.setState({
initialItem: selectedOption,
selected: selected,
text: text
});
this._hideDropdown();
onChange(selected);
onInputChange(text);
},
_handlePagination: function _handlePagination(e) {
var shownResults = this.state.shownResults + this.props.maxResults;
// Keep the input focused when paginating.
this.focus();
this.setState({ shownResults: shownResults });
},
_handleRemoveOption: function _handleRemoveOption(removedOption) {
var selected = this.state.selected.slice();
selected = selected.filter(function (option) {
return !(0, _lodash.isEqual)(option, removedOption);
});
// Make sure the input stays focused after the item is removed.
this.focus();
this.setState({ selected: selected });
this._hideDropdown();
this.props.onChange(selected);
},
/**
* From `onClickOutside` HOC.
*/
handleClickOutside: function handleClickOutside(e) {
this.state.showMenu && this._hideDropdown();
},
_hideDropdown: function _hideDropdown() {
var _getInitialState3 = this.getInitialState(),
activeIndex = _getInitialState3.activeIndex,
activeItem = _getInitialState3.activeItem,
showMenu = _getInitialState3.showMenu,
shownResults = _getInitialState3.shownResults;
this.setState({
activeIndex: activeIndex,
activeItem: activeItem,
showMenu: showMenu,
shownResults: shownResults
});
}
});
exports['default'] = (0, _reactOnclickoutside2['default'])(Refers);
module.exports = exports['default'];
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
var _assign = __webpack_require__(3);
var _assign2 = _interopRequireDefault(_assign);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = _assign2.default || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = { "default": __webpack_require__(4), __esModule: true };
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(5);
module.exports = __webpack_require__(8).Object.assign;
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
// 19.1.3.1 Object.assign(target, source)
var $export = __webpack_require__(6);
$export($export.S + $export.F, 'Object', { assign: __webpack_require__(22) });
/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(7);
var core = __webpack_require__(8);
var ctx = __webpack_require__(9);
var hide = __webpack_require__(11);
var has = __webpack_require__(21);
var PROTOTYPE = 'prototype';
var $export = function (type, name, source) {
var IS_FORCED = type & $export.F;
var IS_GLOBAL = type & $export.G;
var IS_STATIC = type & $export.S;
var IS_PROTO = type & $export.P;
var IS_BIND = type & $export.B;
var IS_WRAP = type & $export.W;
var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
var expProto = exports[PROTOTYPE];
var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
var key, own, out;
if (IS_GLOBAL) source = name;
for (key in source) {
// contains in native
own = !IS_FORCED && target && target[key] !== undefined;
if (own && has(exports, key)) continue;
// export native or passed
out = own ? target[key] : source[key];
// prevent global pollution for namespaces
exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
// bind timers to global for call from export context
: IS_BIND && own ? ctx(out, global)
// wrap global constructors for prevent change them in library
: IS_WRAP && target[key] == out ? (function (C) {
var F = function (a, b, c) {
if (this instanceof C) {
switch (arguments.length) {
case 0: return new C();
case 1: return new C(a);
case 2: return new C(a, b);
} return new C(a, b, c);
} return C.apply(this, arguments);
};
F[PROTOTYPE] = C[PROTOTYPE];
return F;
// make static versions for prototype methods
})(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
// export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
if (IS_PROTO) {
(exports.virtual || (exports.virtual = {}))[key] = out;
// export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
}
}
};
// type bitmap
$export.F = 1; // forced
$export.G = 2; // global
$export.S = 4; // static
$export.P = 8; // proto
$export.B = 16; // bind
$export.W = 32; // wrap
$export.U = 64; // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;
/***/ }),
/* 7 */
/***/ (function(module, exports) {
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
? window : typeof self != 'undefined' && self.Math == Math ? self
// eslint-disable-next-line no-new-func
: Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef
/***/ }),
/* 8 */
/***/ (function(module, exports) {
var core = module.exports = { version: '2.6.9' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef
/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {
// optional / simple context binding
var aFunction = __webpack_require__(10);
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/* 10 */
/***/ (function(module, exports) {
module.exports = function (it) {
if (typeof it != 'function') throw TypeError(it + ' is not a function!');
return it;
};
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
var dP = __webpack_require__(12);
var createDesc = __webpack_require__(20);
module.exports = __webpack_require__(16) ? function (object, key, value) {
return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(13);
var IE8_DOM_DEFINE = __webpack_require__(15);
var toPrimitive = __webpack_require__(19);
var dP = Object.defineProperty;
exports.f = __webpack_require__(16) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return dP(O, P, Attributes);
} catch (e) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(14);
module.exports = function (it) {
if (!isObject(it)) throw TypeError(it + ' is not an object!');
return it;
};
/***/ }),
/* 14 */
/***/ (function(module, exports) {
module.exports = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = !__webpack_require__(16) && !__webpack_require__(17)(function () {
return Object.defineProperty(__webpack_require__(18)('div'), 'a', { get: function () { return 7; } }).a != 7;
});
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(17)(function () {
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});
/***/ }),
/* 17 */
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return !!exec();
} catch (e) {
return true;
}
};
/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(14);
var document = __webpack_require__(7).document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return is ? document.createElement(it) : {};
};
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(14);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
if (!isObject(it)) return it;
var fn, val;
if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/* 20 */
/***/ (function(module, exports) {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/* 21 */
/***/ (function(module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
return hasOwnProperty.call(it, key);
};
/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {
'use strict';
// 19.1.2.1 Object.assign(target, source, ...)
var DESCRIPTORS = __webpack_require__(16);
var getKeys = __webpack_require__(23);
var gOPS = __webpack_require__(38);
var pIE = __webpack_require__(39);
var toObject = __webpack_require__(40);
var IObject = __webpack_require__(26);
var $assign = Object.assign;
// should work with symbols and should have deterministic property order (V8 bug)
module.exports = !$assign || __webpack_require__(17)(function () {
var A = {};
var B = {};
// eslint-disable-next-line no-undef
var S = Symbol();
var K = 'abcdefghijklmnopqrst';
A[S] = 7;
K.split('').forEach(function (k) { B[k] = k; });
return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
var T = toObject(target);
var aLen = arguments.length;
var index = 1;
var getSymbols = gOPS.f;
var isEnum = pIE.f;
while (aLen > index) {
var S = IObject(arguments[index++]);
var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
var length = keys.length;
var j = 0;
var key;
while (length > j) {
key = keys[j++];
if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
}
} return T;
} : $assign;
/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {
// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(24);
var enumBugKeys = __webpack_require__(37);
module.exports = Object.keys || function keys(O) {
return $keys(O, enumBugKeys);
};
/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(21);
var toIObject = __webpack_require__(25);
var arrayIndexOf = __webpack_require__(29)(false);
var IE_PROTO = __webpack_require__(33)('IE_PROTO');
module.exports = function (object, names) {
var O = toIObject(object);
var i = 0;
var result = [];
var key;
for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i) if (has(O, key = names[i++])) {
~arrayIndexOf(result, key) || result.push(key);
}
return result;
};
/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {
// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(26);
var defined = __webpack_require__(28);
module.exports = function (it) {
return IObject(defined(it));
};
/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {
// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(27);
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
return cof(it) == 'String' ? it.split('') : Object(it);
};
/***/ }),
/* 27 */
/***/ (function(module, exports) {
var toString = {}.toString;
module.exports = function (it) {
return toString.call(it).slice(8, -1);
};
/***/ }),
/* 28 */
/***/ (function(module, exports) {
// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {
// false -> Array#indexOf
// true -> Array#includes
var toIObject = __webpack_require__(25);
var toLength = __webpack_require__(30);
var toAbsoluteIndex = __webpack_require__(32);
module.exports = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) if (IS_INCLUDES || index in O) {
if (O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {
// 7.1.15 ToLength
var toInteger = __webpack_require__(31);
var min = Math.min;
module.exports = function (it) {
return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};
/***/ }),
/* 31 */
/***/ (function(module, exports) {
// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};
/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(31);
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
index = toInteger(index);
return index < 0 ? max(index + length, 0) : min(index, length);
};
/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__(34)('keys');
var uid = __webpack_require__(36);
module.exports = function (key) {
return shared[key] || (shared[key] = uid(key));
};
/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {
var core = __webpack_require__(8);
var global = __webpack_require__(7);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: core.version,
mode: __webpack_require__(35) ? 'pure' : 'global',
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/* 35 */
/***/ (function(module, exports) {
module.exports = true;
/***/ }),
/* 36 */
/***/ (function(module, exports) {
var id = 0;
var px = Math.random();
module.exports = function (key) {
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};
/***/ }),
/* 37 */
/***/ (function(module, exports) {
// IE 8- don't enum bug keys
module.exports = (
'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');
/***/ }),
/* 38 */
/***/ (function(module, exports) {
exports.f = Object.getOwnPropertySymbols;
/***/ }),
/* 39 */
/***/ (function(module, exports) {
exports.f = {}.propertyIsEnumerable;
/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {
// 7.1.13 ToObject(argument)
var defined = __webpack_require__(28);
module.exports = function (it) {
return Object(defined(it));
};
/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = { "default": __webpack_require__(42), __esModule: true };
/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {
var core = __webpack_require__(8);
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
return $JSON.stringify.apply($JSON, arguments);
};
/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
Copyright (c) 2017 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/* global define */
(function () {
'use strict';
var hasOwn = {}.hasOwnProperty;
function classNames () {
var classes = [];
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (!arg) continue;
var argType = typeof arg;
if (argType === 'string' || argType === 'number') {
classes.push(arg);
} else if (Array.isArray(arg) && arg.length) {
var inner = classNames.apply(null, arg);
if (inner) {
classes.push(inner);
}
} else if (argType === 'object') {
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
classes.push(key);
}
}
}
}
return classes.join(' ');
}
if (typeof module !== 'undefined' && module.exports) {
classNames.default = classNames;
module.exports = classNames;
} else if (true) {
// register as 'classnames', consistent with npm package name
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
return classNames;
}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {
window.classNames = classNames;
}
}());
/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {/**
* @license
* L