mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix Tooltip not showing when switching hotbars (#5519)
This commit is contained in:
parent
b414f9e06d
commit
fba5892c8a
@ -0,0 +1,50 @@
|
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
|
exports[`<Tooltip /> does not render to DOM if not visibile 1`] = `
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
id="my-target"
|
||||||
|
>
|
||||||
|
Target Text
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`<Tooltip /> renders to DOM when forced to by visibile prop 1`] = `
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
class="Tooltip visible"
|
||||||
|
role="tooltip"
|
||||||
|
>
|
||||||
|
I am a tooltip
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
id="my-target"
|
||||||
|
>
|
||||||
|
Target Text
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`<Tooltip /> renders to DOM when hovering over target 1`] = `
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<div
|
||||||
|
class="Tooltip right"
|
||||||
|
role="tooltip"
|
||||||
|
style="left: 10px; top: 0px;"
|
||||||
|
>
|
||||||
|
I am a tooltip
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
id="my-target"
|
||||||
|
>
|
||||||
|
Target Text
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
`;
|
||||||
63
src/renderer/components/tooltip/tooltip.test.tsx
Normal file
63
src/renderer/components/tooltip/tooltip.test.tsx
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { render } from "@testing-library/react";
|
||||||
|
import userEvent from "@testing-library/user-event";
|
||||||
|
import assert from "assert";
|
||||||
|
import React from "react";
|
||||||
|
import { Tooltip } from "./tooltip";
|
||||||
|
|
||||||
|
describe("<Tooltip />", () => {
|
||||||
|
it("does not render to DOM if not visibile", () => {
|
||||||
|
const result = render((
|
||||||
|
<>
|
||||||
|
<Tooltip targetId="my-target" usePortal={false}>I am a tooltip</Tooltip>
|
||||||
|
<div id="my-target">Target Text</div>
|
||||||
|
</>
|
||||||
|
));
|
||||||
|
|
||||||
|
expect(result.baseElement).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders to DOM when hovering over target", () => {
|
||||||
|
const result = render((
|
||||||
|
<>
|
||||||
|
<Tooltip
|
||||||
|
targetId="my-target"
|
||||||
|
data-testid="tooltip"
|
||||||
|
usePortal={false}
|
||||||
|
>
|
||||||
|
I am a tooltip
|
||||||
|
</Tooltip>
|
||||||
|
<div id="my-target">Target Text</div>
|
||||||
|
</>
|
||||||
|
));
|
||||||
|
|
||||||
|
const target = result.baseElement.querySelector("#my-target");
|
||||||
|
|
||||||
|
assert(target);
|
||||||
|
|
||||||
|
userEvent.hover(target);
|
||||||
|
expect(result.baseElement).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("renders to DOM when forced to by visibile prop", () => {
|
||||||
|
const result = render((
|
||||||
|
<>
|
||||||
|
<Tooltip
|
||||||
|
targetId="my-target"
|
||||||
|
data-testid="tooltip"
|
||||||
|
visible={true}
|
||||||
|
usePortal={false}
|
||||||
|
>
|
||||||
|
I am a tooltip
|
||||||
|
</Tooltip>
|
||||||
|
<div id="my-target">Target Text</div>
|
||||||
|
</>
|
||||||
|
));
|
||||||
|
|
||||||
|
expect(result.baseElement).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -55,7 +55,7 @@ export class Tooltip extends React.Component<TooltipProps> {
|
|||||||
|
|
||||||
@observable.ref elem: HTMLDivElement | null = null;
|
@observable.ref elem: HTMLDivElement | null = null;
|
||||||
@observable activePosition?: TooltipPosition;
|
@observable activePosition?: TooltipPosition;
|
||||||
@observable isVisible = this.props.visible ?? false;
|
@observable isVisible = false;
|
||||||
@observable isContentVisible = false; // animation manager
|
@observable isContentVisible = false; // animation manager
|
||||||
|
|
||||||
constructor(props: TooltipProps) {
|
constructor(props: TooltipProps) {
|
||||||
@ -217,13 +217,14 @@ export class Tooltip extends React.Component<TooltipProps> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
if (!this.isVisible) {
|
const { style, formatters, usePortal, children, visible = this.isVisible } = this.props;
|
||||||
|
|
||||||
|
if (!visible) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { style, formatters, usePortal, children } = this.props;
|
|
||||||
const className = cssNames("Tooltip", this.props.className, formatters, this.activePosition, {
|
const className = cssNames("Tooltip", this.props.className, formatters, this.activePosition, {
|
||||||
visible: this.isContentVisible,
|
visible: this.isContentVisible || this.props.visible,
|
||||||
formatter: !!formatters,
|
formatter: !!formatters,
|
||||||
});
|
});
|
||||||
const tooltip = (
|
const tooltip = (
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user