mirror of
https://github.com/ansible/awx.git
synced 2026-01-13 19:10:07 -03:30
switch to PatternFly Tooltip everywhere
This commit is contained in:
parent
601214f6d4
commit
188eaede43
@ -1,69 +0,0 @@
|
||||
import React from 'react';
|
||||
import { mount } from 'enzyme';
|
||||
import Tooltip from '../../src/components/Tooltip';
|
||||
|
||||
describe('<Tooltip />', () => {
|
||||
let elem;
|
||||
let content;
|
||||
let mouseOverHandler;
|
||||
let mouseOutHandler;
|
||||
const child = (<span>foo</span>);
|
||||
const message = 'hi';
|
||||
|
||||
test('initially renders without crashing', () => {
|
||||
elem = mount(
|
||||
<Tooltip message={message}>
|
||||
{child}
|
||||
</Tooltip>
|
||||
);
|
||||
expect(elem.length).toBe(1);
|
||||
});
|
||||
|
||||
test('shows/hides with mouse over and leave', () => {
|
||||
elem = mount(
|
||||
<Tooltip message={message}>
|
||||
{child}
|
||||
</Tooltip>
|
||||
);
|
||||
mouseOverHandler = elem.find('.mouseOverHandler');
|
||||
mouseOutHandler = elem.find('.mouseOutHandler');
|
||||
expect(elem.state().isDisplayed).toBe(false);
|
||||
elem.update();
|
||||
content = elem.find('.pf-c-tooltip__content');
|
||||
expect(content.length).toBe(0);
|
||||
mouseOverHandler.props().onMouseOver();
|
||||
expect(elem.state().isDisplayed).toBe(true);
|
||||
elem.update();
|
||||
content = elem.find('.pf-c-tooltip__content');
|
||||
expect(content.length).toBe(1);
|
||||
mouseOutHandler.props().onMouseLeave();
|
||||
expect(elem.state().isDisplayed).toBe(false);
|
||||
elem.update();
|
||||
content = elem.find('.pf-c-tooltip__content');
|
||||
expect(content.length).toBe(0);
|
||||
});
|
||||
|
||||
test('shows/hides with focus and blur', () => {
|
||||
elem = mount(
|
||||
<Tooltip message={message}>
|
||||
{child}
|
||||
</Tooltip>
|
||||
);
|
||||
mouseOverHandler = elem.find('.mouseOverHandler');
|
||||
mouseOutHandler = elem.find('.mouseOutHandler');
|
||||
expect(elem.state().isDisplayed).toBe(false);
|
||||
elem.update();
|
||||
content = elem.find('.pf-c-tooltip__content');
|
||||
expect(content.length).toBe(0);
|
||||
mouseOverHandler.props().onFocus();
|
||||
expect(elem.state().isDisplayed).toBe(true);
|
||||
elem.update();
|
||||
content = elem.find('.pf-c-tooltip__content');
|
||||
expect(content.length).toBe(1);
|
||||
mouseOutHandler.props().onBlur();
|
||||
expect(elem.state().isDisplayed).toBe(false);
|
||||
elem.update();
|
||||
content = elem.find('.pf-c-tooltip__content');
|
||||
expect(content.length).toBe(0);
|
||||
});
|
||||
});
|
||||
@ -216,6 +216,10 @@
|
||||
--pf-c-tooltip__content--PaddingBottom: 0.71rem;
|
||||
--pf-c-tooltip__content--PaddingLeft: 0.71rem;
|
||||
}
|
||||
// higher specificity needed to override PF styles added dynamically to page
|
||||
.pf-c-tooltip .pf-c-tooltip__content {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
//
|
||||
// pf empty state overrides
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
Toolbar,
|
||||
ToolbarGroup,
|
||||
ToolbarItem,
|
||||
Tooltip,
|
||||
} from '@patternfly/react-core';
|
||||
import {
|
||||
BarsIcon,
|
||||
@ -30,7 +31,6 @@ import {
|
||||
Link
|
||||
} from 'react-router-dom';
|
||||
|
||||
import Tooltip from '../Tooltip';
|
||||
import VerticalSeparator from '../VerticalSeparator';
|
||||
|
||||
const flexGrowStyling = {
|
||||
@ -291,7 +291,7 @@ class DataListToolbar extends React.Component {
|
||||
<LevelItem>
|
||||
{ showDelete && (
|
||||
<Tooltip
|
||||
message={i18n._(t`Delete`)}
|
||||
content={i18n._(t`Delete`)}
|
||||
position="top"
|
||||
>
|
||||
<Button
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { Button } from '@patternfly/react-core';
|
||||
import { Button, Tooltip } from '@patternfly/react-core';
|
||||
import { TimesIcon } from '@patternfly/react-icons';
|
||||
import Tooltip from '../Tooltip';
|
||||
import './tabs.scss';
|
||||
|
||||
const Tabs = ({ children, labelText, closeButton }) => (
|
||||
@ -17,7 +16,7 @@ const Tabs = ({ children, labelText, closeButton }) => (
|
||||
{closeButton
|
||||
&& (
|
||||
<Tooltip
|
||||
message={closeButton.text}
|
||||
content={closeButton.text}
|
||||
position="top"
|
||||
>
|
||||
<Link to={closeButton.link}>
|
||||
|
||||
@ -1,96 +0,0 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
const toolTipContent = {
|
||||
padding: '10px',
|
||||
minWidth: '100px',
|
||||
};
|
||||
|
||||
class Tooltip extends React.Component {
|
||||
transforms = {
|
||||
top: {
|
||||
bottom: '100%',
|
||||
left: '50%',
|
||||
transform: 'translate(-50%, -25%)'
|
||||
},
|
||||
bottom: {
|
||||
top: '100%',
|
||||
left: '50%',
|
||||
transform: 'translate(-50%, 25%)'
|
||||
},
|
||||
left: {
|
||||
top: '50%',
|
||||
right: '100%',
|
||||
transform: 'translate(-25%, -50%)'
|
||||
},
|
||||
right: {
|
||||
bottom: '100%',
|
||||
left: '50%',
|
||||
transform: 'translate(25%, 50%)'
|
||||
},
|
||||
};
|
||||
|
||||
constructor (props) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
isDisplayed: false
|
||||
};
|
||||
}
|
||||
|
||||
render () {
|
||||
const {
|
||||
children,
|
||||
message,
|
||||
position,
|
||||
} = this.props;
|
||||
const {
|
||||
isDisplayed
|
||||
} = this.state;
|
||||
|
||||
if (message === '') {
|
||||
return null;
|
||||
}
|
||||
return (
|
||||
<span
|
||||
style={{ position: 'relative' }}
|
||||
className="mouseOutHandler"
|
||||
onMouseLeave={() => this.setState({ isDisplayed: false })}
|
||||
onBlur={() => this.setState({ isDisplayed: false })}
|
||||
>
|
||||
{ isDisplayed
|
||||
&& (
|
||||
<div
|
||||
style={{ position: 'absolute', zIndex: '10', ...this.transforms[position] }}
|
||||
className={`pf-c-tooltip pf-m-${position}`}
|
||||
>
|
||||
<div className="pf-c-tooltip__arrow" />
|
||||
<div className="pf-c-tooltip__content" style={toolTipContent}>
|
||||
{ message }
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
<span
|
||||
className="mouseOverHandler"
|
||||
onMouseOver={() => this.setState({ isDisplayed: true })}
|
||||
onFocus={() => this.setState({ isDisplayed: true })}
|
||||
>
|
||||
{ children }
|
||||
</span>
|
||||
</span>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Tooltip.propTypes = {
|
||||
children: PropTypes.element.isRequired,
|
||||
message: PropTypes.string.isRequired,
|
||||
position: PropTypes.string,
|
||||
};
|
||||
|
||||
Tooltip.defaultProps = {
|
||||
position: 'top',
|
||||
};
|
||||
|
||||
export default Tooltip;
|
||||
@ -1,3 +0,0 @@
|
||||
import Tooltip from './Tooltip';
|
||||
|
||||
export default Tooltip;
|
||||
Loading…
x
Reference in New Issue
Block a user