import React, { Component } from "react"; import PropTypes from "prop-types"; import { noop } from "lodash"; import classnames from "classnames"; import ClickOutside from "components/ClickOutside"; import Button from "components/buttons/Button"; import Icon from "components/Icon"; const baseClass = "dropdown-button"; export class DropdownButton extends Component { static propTypes = { children: PropTypes.node, className: PropTypes.string, disabled: PropTypes.bool, options: PropTypes.arrayOf( PropTypes.shape({ disabled: PropTypes.bool, label: PropTypes.string, onClick: PropTypes.func, }) ).isRequired, size: PropTypes.string, tabIndex: PropTypes.number, type: PropTypes.string, variant: PropTypes.string, showCaret: PropTypes.bool, }; static defaultProps = { onChange: noop, }; constructor(props) { super(props); this.state = { isOpen: false }; } setDOMNode = (DOMNode) => { this.DOMNode = DOMNode; }; toggleDropdown = () => { const { isOpen } = this.state; this.setState({ isOpen: !isOpen }); }; optionClick = (evt, onClick) => { this.setState({ isOpen: false }); onClick(evt); }; renderOptions = (opt, idx) => { const { optionClick } = this; const { disabled, label, onClick } = opt; return (