mirror of
https://github.com/ansible/awx.git
synced 2026-05-07 01:17:37 -02:30
switch to PatternFly Tooltip everywhere
This commit is contained in:
@@ -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--PaddingBottom: 0.71rem;
|
||||||
--pf-c-tooltip__content--PaddingLeft: 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
|
// pf empty state overrides
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import {
|
|||||||
Toolbar,
|
Toolbar,
|
||||||
ToolbarGroup,
|
ToolbarGroup,
|
||||||
ToolbarItem,
|
ToolbarItem,
|
||||||
|
Tooltip,
|
||||||
} from '@patternfly/react-core';
|
} from '@patternfly/react-core';
|
||||||
import {
|
import {
|
||||||
BarsIcon,
|
BarsIcon,
|
||||||
@@ -30,7 +31,6 @@ import {
|
|||||||
Link
|
Link
|
||||||
} from 'react-router-dom';
|
} from 'react-router-dom';
|
||||||
|
|
||||||
import Tooltip from '../Tooltip';
|
|
||||||
import VerticalSeparator from '../VerticalSeparator';
|
import VerticalSeparator from '../VerticalSeparator';
|
||||||
|
|
||||||
const flexGrowStyling = {
|
const flexGrowStyling = {
|
||||||
@@ -291,7 +291,7 @@ class DataListToolbar extends React.Component {
|
|||||||
<LevelItem>
|
<LevelItem>
|
||||||
{ showDelete && (
|
{ showDelete && (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
message={i18n._(t`Delete`)}
|
content={i18n._(t`Delete`)}
|
||||||
position="top"
|
position="top"
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { Link } from 'react-router-dom';
|
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 { TimesIcon } from '@patternfly/react-icons';
|
||||||
import Tooltip from '../Tooltip';
|
|
||||||
import './tabs.scss';
|
import './tabs.scss';
|
||||||
|
|
||||||
const Tabs = ({ children, labelText, closeButton }) => (
|
const Tabs = ({ children, labelText, closeButton }) => (
|
||||||
@@ -17,7 +16,7 @@ const Tabs = ({ children, labelText, closeButton }) => (
|
|||||||
{closeButton
|
{closeButton
|
||||||
&& (
|
&& (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
message={closeButton.text}
|
content={closeButton.text}
|
||||||
position="top"
|
position="top"
|
||||||
>
|
>
|
||||||
<Link to={closeButton.link}>
|
<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;
|
|
||||||
Reference in New Issue
Block a user