2017-10-06 16:14:45 +00:00
|
|
|
import Tooltip from '@atlaskit/tooltip';
|
2017-09-27 21:23:31 +00:00
|
|
|
import PropTypes from 'prop-types';
|
2018-04-10 03:27:19 +00:00
|
|
|
import React from 'react';
|
2017-02-16 23:02:40 +00:00
|
|
|
|
2018-04-10 03:27:19 +00:00
|
|
|
import AbstractToolbarButton from './AbstractToolbarButton';
|
2017-02-16 23:02:40 +00:00
|
|
|
|
|
|
|
/**
|
2018-04-10 03:27:19 +00:00
|
|
|
* Represents a button in the toolbar.
|
2017-02-16 23:02:40 +00:00
|
|
|
*
|
|
|
|
* @extends AbstractToolbarButton
|
|
|
|
*/
|
2018-04-10 03:27:19 +00:00
|
|
|
class ToolbarButton extends AbstractToolbarButton {
|
|
|
|
/**
|
|
|
|
* Default values for {@code ToolbarButton} component's properties.
|
|
|
|
*
|
|
|
|
* @static
|
|
|
|
*/
|
|
|
|
static defaultProps = {
|
|
|
|
tooltipPosition: 'top'
|
|
|
|
};
|
2017-08-15 22:39:42 +00:00
|
|
|
|
2017-02-16 23:02:40 +00:00
|
|
|
/**
|
2018-04-10 03:27:19 +00:00
|
|
|
* {@code ToolbarButton} component's property types.
|
2017-02-16 23:02:40 +00:00
|
|
|
*
|
|
|
|
* @static
|
|
|
|
*/
|
|
|
|
static propTypes = {
|
2018-04-10 03:27:19 +00:00
|
|
|
...AbstractToolbarButton.propTypes,
|
2017-02-16 23:02:40 +00:00
|
|
|
|
|
|
|
/**
|
2018-04-10 03:27:19 +00:00
|
|
|
* The text to display in the tooltip.
|
2017-02-16 23:02:40 +00:00
|
|
|
*/
|
2018-04-10 03:27:19 +00:00
|
|
|
tooltip: PropTypes.string,
|
2017-02-16 23:02:40 +00:00
|
|
|
|
|
|
|
/**
|
2018-04-10 03:27:19 +00:00
|
|
|
* From which direction the tooltip should appear, relative to the
|
|
|
|
* button.
|
2017-02-16 23:02:40 +00:00
|
|
|
*/
|
2018-04-10 03:27:19 +00:00
|
|
|
tooltipPosition: PropTypes.string
|
2017-02-16 23:02:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2018-04-10 03:27:19 +00:00
|
|
|
* Renders the button of this {@code ToolbarButton}.
|
2017-02-16 23:02:40 +00:00
|
|
|
*
|
2018-04-10 03:27:19 +00:00
|
|
|
* @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}.
|
2017-02-16 23:02:40 +00:00
|
|
|
*/
|
2018-04-10 03:27:19 +00:00
|
|
|
_renderButton(children) {
|
|
|
|
return (
|
|
|
|
<div
|
|
|
|
aria-label = { this.props.accessibilityLabel }
|
|
|
|
className = 'toolbox-button'
|
|
|
|
onClick = { this.props.onClick }>
|
2018-04-12 21:14:14 +00:00
|
|
|
{ this.props.tooltip
|
|
|
|
? <Tooltip
|
2018-04-16 17:21:01 +00:00
|
|
|
content = { this.props.tooltip }
|
2018-04-12 21:14:14 +00:00
|
|
|
position = { this.props.tooltipPosition }>
|
|
|
|
{ children }
|
|
|
|
</Tooltip>
|
|
|
|
: children }
|
2018-04-10 03:27:19 +00:00
|
|
|
</div>
|
|
|
|
);
|
2017-02-16 23:02:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2018-04-10 03:27:19 +00:00
|
|
|
* Renders the icon of this {@code ToolbarButton}.
|
2017-02-16 23:02:40 +00:00
|
|
|
*
|
|
|
|
* @inheritdoc
|
|
|
|
*/
|
2018-04-10 03:27:19 +00:00
|
|
|
_renderIcon() {
|
2017-12-26 20:28:32 +00:00
|
|
|
return (
|
2018-04-10 03:27:19 +00:00
|
|
|
<div className = 'toolbox-icon'>
|
|
|
|
<i className = { this.props.iconName } />
|
2017-12-26 20:28:32 +00:00
|
|
|
</div>
|
|
|
|
);
|
2017-02-16 23:02:40 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-04-10 03:27:19 +00:00
|
|
|
export default ToolbarButton;
|