123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /* @flow */
-
- import Tooltip from '@atlaskit/tooltip';
- import React from 'react';
-
- import AbstractToolbarButton from '../AbstractToolbarButton';
- import type { Props as AbstractToolbarButtonProps }
- from '../AbstractToolbarButton';
-
- /**
- * The type of the React {@code Component} props of {@link ToolbarButton}.
- */
- type Props = AbstractToolbarButtonProps & {
-
- /**
- * The text to display in the tooltip.
- */
- tooltip: string,
-
- /**
- * From which direction the tooltip should appear, relative to the
- * button.
- */
- tooltipPosition: string
- };
-
- /**
- * Represents a button in the toolbar.
- *
- * @extends AbstractToolbarButton
- */
- class ToolbarButton extends AbstractToolbarButton<Props> {
- /**
- * Default values for {@code ToolbarButton} component's properties.
- *
- * @static
- */
- static defaultProps = {
- tooltipPosition: 'top'
- };
-
- /**
- * Renders the button of this {@code ToolbarButton}.
- *
- * @param {Object} children - The children, if any, to be rendered inside
- * the button. Presumably, contains the icon of this {@code ToolbarButton}.
- * @protected
- * @returns {ReactElement} The button of this {@code ToolbarButton}.
- */
- _renderButton(children) {
- return (
- <div
- aria-label = { this.props.accessibilityLabel }
- className = 'toolbox-button'
- onClick = { this.props.onClick }>
- { this.props.tooltip
- ? <Tooltip
- content = { this.props.tooltip }
- position = { this.props.tooltipPosition }>
- { children }
- </Tooltip>
- : children }
- </div>
- );
- }
-
- /**
- * Renders the icon of this {@code ToolbarButton}.
- *
- * @inheritdoc
- */
- _renderIcon() {
- return (
- <div className = 'toolbox-icon'>
- <i className = { this.props.iconName } />
- </div>
- );
- }
- }
-
- export default ToolbarButton;
|