@nomios/web-uikit
Version:
Nomios' living web UIKit
53 lines (46 loc) • 1.76 kB
JavaScript
import _omit from "lodash/omit";
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; }
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import Select from 'react-select';
import { CustomControl, CustomInput, CustomOption, CustomMenu, CustomMenuList, CustomValueContainer, NullComponent, DefaultTrigger } from './custom-components';
class Dropdown extends Component {
constructor(...args) {
super(...args);
_defineProperty(this, "handleChange", data => this.props.onChange && this.props.onChange(_omit(data, 'render')));
}
render() {
return React.createElement(Select, Object.assign({}, this.props, {
onChange: this.handleChange,
components: {
Control: CustomControl,
Input: CustomInput,
Option: CustomOption,
Menu: CustomMenu,
MenuList: CustomMenuList,
ValueContainer: CustomValueContainer,
IndicatorsContainer: NullComponent,
Placeholder: NullComponent,
SingleValue: NullComponent
}
}));
}
}
Dropdown.propTypes = {
arrowPlacement: PropTypes.oneOf(['left', 'center', 'right', 'none']),
menuListClassName: PropTypes.string,
controlClassName: PropTypes.string,
triggerClassName: PropTypes.string,
optionClassName: PropTypes.string,
menuClassName: PropTypes.string,
renderTrigger: PropTypes.func,
placeholder: PropTypes.string,
renderOption: PropTypes.func,
onChange: PropTypes.func
};
Dropdown.defaultProps = {
placeholder: 'Select from the list',
renderTrigger: DefaultTrigger,
arrowPlacement: 'none'
};
export default Dropdown;