UNPKG

@bigfishtv/cockpit

Version:

46 lines (39 loc) 1.26 kB
import PropTypes from 'prop-types' import React, { Component } from 'react' import DropdownAction from './DropdownAction' import DropdownItem from './DropdownItem' /** * Wraps DropdownAction using keyed options prop and onClick prop for easy construction */ export default class DropdownLinks extends Component { static propTypes = { /** Text to prepend to all options e.g. 'Add New' */ prepend: PropTypes.string, /** keyed object with keys being option text and value being url */ options: PropTypes.object, /** onClick callback for all dropdown items, arguments are: key, url */ onClick: PropTypes.func, } static defaultProps = { prepend: 'Add New', options: {}, onClick: (key, url) => (window.location.href = url), } render() { const { options, onClick, prepend } = this.props const optionKeys = Object.keys(options) if (!optionKeys.length) return null return ( <DropdownAction text={prepend + ' ' + optionKeys[0]} style="primary" size="large" pullRight={true} onClick={() => onClick(optionKeys[0], options[optionKeys[0]])}> {optionKeys.map((key, i) => ( <DropdownItem key={i} text={prepend + ' ' + key} onClick={() => onClick(key, options[key])} /> ))} </DropdownAction> ) } }