ui/perfherder/alerts/BadgeTooltip.jsx (52 lines of code) (raw):
import React from 'react';
import PropTypes from 'prop-types';
import { UncontrolledTooltip } from 'reactstrap';
import Badge from 'reactstrap/lib/Badge';
export default class BadgeTooltip extends React.Component {
constructor(props) {
super(props);
this.tooltipRef = React.createRef();
}
render() {
const {
text,
tooltipText,
placement,
textClass,
innerClassName,
autohide,
} = this.props;
return (
<React.Fragment>
<span ref={this.tooltipRef} className={`${textClass} pb-1`}>
<Badge color="light" data-testid="alert-noise-profile">
{text}
</Badge>
</span>
<UncontrolledTooltip
placement={placement}
target={this.tooltipRef}
innerClassName={innerClassName}
autohide={autohide}
>
{tooltipText}
</UncontrolledTooltip>
</React.Fragment>
);
}
}
BadgeTooltip.propTypes = {
text: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.string]).isRequired,
tooltipText: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.string])
.isRequired,
textClass: PropTypes.string,
placement: PropTypes.string,
innerClassName: PropTypes.string,
autohide: PropTypes.bool,
};
BadgeTooltip.defaultProps = {
textClass: '',
placement: 'top',
innerClassName: '',
autohide: true,
};