diff --git a/site/src/components/Tooltips/HelpTooltip/HelpTooltip.stories.tsx b/site/src/components/Tooltips/HelpTooltip/HelpTooltip.stories.tsx index 8d2d3ad802cd7..30e9e7fd49ad8 100644 --- a/site/src/components/Tooltips/HelpTooltip/HelpTooltip.stories.tsx +++ b/site/src/components/Tooltips/HelpTooltip/HelpTooltip.stories.tsx @@ -16,7 +16,7 @@ export default { const Template: Story = (args) => ( What is a template? - A template is a common configuration for your team`'`s workspaces. + A template is a common configuration for your team's workspaces. Creating a template Updating a template diff --git a/site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx b/site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx index 66629943c0961..6e767c01d53c7 100644 --- a/site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx +++ b/site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx @@ -3,7 +3,7 @@ import Popover from "@material-ui/core/Popover" import { makeStyles } from "@material-ui/core/styles" import HelpIcon from "@material-ui/icons/HelpOutline" import OpenInNewIcon from "@material-ui/icons/OpenInNew" -import React, { createContext, useContext, useState } from "react" +import React, { createContext, useContext, useRef, useState } from "react" import { Stack } from "../../Stack/Stack" type Icon = typeof HelpIcon @@ -29,31 +29,36 @@ const useHelpTooltip = () => { export const HelpTooltip: React.FC = ({ children, open, size = "medium" }) => { const styles = useStyles({ size }) - const [anchorEl, setAnchorEl] = useState(null) - open = open ?? Boolean(anchorEl) - const id = open ? "help-popover" : undefined + const anchorRef = useRef(null) + const [isOpen, setIsOpen] = useState(!!open) + const id = isOpen ? "help-popover" : undefined const onClose = () => { - setAnchorEl(null) + setIsOpen(false) } return ( <> = ({ children, open, size = vertical: "top", horizontal: "left", }} + PaperProps={{ + onMouseEnter: () => { + setIsOpen(true) + }, + onMouseLeave: () => { + setIsOpen(false) + }, + }} > - {children} + {children} ) @@ -166,11 +179,16 @@ const useStyles = makeStyles((theme) => ({ height: ({ size }: { size?: Size }) => theme.spacing(getIconSpacingFromSize(size)), }, + popover: { + pointerEvents: "none", + }, + popoverPaper: { marginTop: theme.spacing(0.5), width: theme.spacing(38), padding: theme.spacing(2.5), color: theme.palette.text.secondary, + pointerEvents: "auto", }, title: {