@bigfishtv/cockpit
Version:
46 lines (39 loc) • 1.26 kB
JavaScript
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>
)
}
}