UNPKG

@bigfishtv/cockpit

Version:

68 lines (62 loc) 2.17 kB
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> ) } }