@bigfishtv/cockpit
Version:
68 lines (62 loc) • 2.17 kB
JavaScript
import PropTypes from 'prop-types'
import React, { Component } from 'react'
import Icon from '../../Icon'
import DropdownButton from '../../button/dropdown/DropdownButton'
import DropdownItem from '../../button/dropdown/DropdownItem'
import DropdownItemDivider from '../../button/dropdown/DropdownItemDivider'
/**
* Default PanelToolbar used in Panel
*/
export default class PanelToolbar extends Component {
static propTypes = {
collapsed: PropTypes.bool,
collapsible: PropTypes.bool,
removable: PropTypes.bool,
duplicable: PropTypes.bool,
reorderable: PropTypes.bool,
publishable: PropTypes.bool,
onDuplicate: PropTypes.func,
onToggleCollapsed: PropTypes.func,
onRemove: PropTypes.func,
onReorder: PropTypes.func,
}
render() {
const {
children,
collapsed,
collapsible,
duplicable,
removable,
reorderable,
publishable,
onDuplicate,
onToggleCollapsed,
onRemove,
onReorder,
onPublishEdit,
} = this.props
if (!(collapsible || duplicable || removable || reorderable || children)) {
return null
}
if (collapsible && !(duplicable || removable || reorderable)) {
return (
<button type="button" className="button button-icon dropdown-toggle" onClick={onToggleCollapsed}>
<Icon name={collapsed ? 'chevron-down' : 'chevron-up'} />
</button>
)
}
return (
<DropdownButton style="icon" caret={false} pullRight={true} text={<Icon name="hamburger" />}>
{collapsible && !collapsed && <DropdownItem text="Collapse All" onClick={onToggleCollapsed} icon="collapse" />}
{collapsible && collapsed && <DropdownItem text="Expand All" onClick={onToggleCollapsed} icon="expand" />}
{reorderable && <DropdownItem text="Reorder" onClick={onReorder} icon="list-view" />}
{publishable && <DropdownItem text="Publish Settings" onClick={onPublishEdit} icon="calendar" />}
{duplicable && <DropdownItem text="Duplicate" onClick={onDuplicate} icon="duplicate" />}
{children && <DropdownItemDivider />}
{children}
{removable && <DropdownItemDivider />}
{removable && <DropdownItem text="Remove" onClick={onRemove} icon="delete" />}
</DropdownButton>
)
}
}