Skip to content

Commit 47f8d12

Browse files
feat(Popper): add mouse events for popper content (#7399)
1 parent 5a409a6 commit 47f8d12

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

packages/react-core/src/components/Tooltip/Tooltip.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,10 @@ export interface TooltipProps extends Omit<React.HTMLProps<HTMLDivElement>, 'con
6363
enableFlip?: boolean;
6464
/** Delay in ms before the tooltip appears */
6565
entryDelay?: number;
66-
/** Delay in ms before the tooltip disappears */
66+
/** Delay in ms before the tooltip disappears, Avoid passing in a value of "0", as users should
67+
* be given ample time to move their mouse from the trigger to the tooltip content without the content
68+
* being hidden.
69+
*/
6770
exitDelay?: number;
6871
/**
6972
* The desired position to flip the tooltip to if the initial position is not possible.
@@ -149,7 +152,7 @@ export const Tooltip: React.FunctionComponent<TooltipProps> = ({
149152
enableFlip = true,
150153
className = '',
151154
entryDelay = 300,
152-
exitDelay = 0,
155+
exitDelay = 300,
153156
appendTo = () => document.body,
154157
zIndex = 9999,
155158
maxWidth = tooltipMaxWidth.value,
@@ -318,6 +321,8 @@ export const Tooltip: React.FunctionComponent<TooltipProps> = ({
318321
placement={position}
319322
onMouseEnter={triggerOnMouseenter && show}
320323
onMouseLeave={triggerOnMouseenter && hide}
324+
onPopperMouseEnter={triggerOnMouseenter && show}
325+
onPopperMouseLeave={triggerOnMouseenter && hide}
321326
onFocus={triggerOnFocus && show}
322327
onBlur={triggerOnFocus && hide}
323328
onDocumentClick={triggerOnClick && onDocumentClick}

packages/react-core/src/helpers/Popper/Popper.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ export interface PopperProps {
9595
onTriggerEnter?: (event?: KeyboardEvent) => void;
9696
/** Callback function when popper is clicked */
9797
onPopperClick?: (event?: MouseEvent) => void;
98+
/** Callback function when mouse enters popper content */
99+
onPopperMouseEnter?: (event?: MouseEvent) => void;
100+
/** Callback function when mouse leaves popper content */
101+
onPopperMouseLeave?: (event?: MouseEvent) => void;
98102
/** Callback function when document is clicked */
99103
onDocumentClick?: (event?: MouseEvent, triggerElement?: HTMLElement, popperElement?: HTMLElement) => void;
100104
/** Callback function when keydown event occurs on document */
@@ -140,6 +144,8 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
140144
onTriggerClick,
141145
onTriggerEnter,
142146
onPopperClick,
147+
onPopperMouseEnter,
148+
onPopperMouseLeave,
143149
onDocumentKeyDown,
144150
enableFlip = true,
145151
flipBehavior = 'flip',
@@ -186,6 +192,8 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
186192
addEventListener(onTriggerClick, refOrTrigger, 'click');
187193
addEventListener(onTriggerEnter, refOrTrigger, 'keydown');
188194
addEventListener(onPopperClick, popperElement, 'click');
195+
addEventListener(onPopperMouseEnter, popperElement, 'mouseenter');
196+
addEventListener(onPopperMouseLeave, popperElement, 'mouseleave');
189197
onDocumentClick && addEventListener(onDocumentClickCallback, document, 'click');
190198
addEventListener(onDocumentKeyDown, document, 'keydown');
191199

@@ -203,6 +211,8 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
203211
removeEventListener(onTriggerClick, refOrTrigger, 'click');
204212
removeEventListener(onTriggerEnter, refOrTrigger, 'keydown');
205213
removeEventListener(onPopperClick, popperElement, 'click');
214+
removeEventListener(onPopperMouseEnter, popperElement, 'mouseenter');
215+
removeEventListener(onPopperMouseLeave, popperElement, 'mouseleave');
206216
onDocumentClick && removeEventListener(onDocumentClickCallback, document, 'click');
207217
removeEventListener(onDocumentKeyDown, document, 'keydown');
208218
observer.disconnect();
@@ -217,6 +227,8 @@ export const Popper: React.FunctionComponent<PopperProps> = ({
217227
onTriggerClick,
218228
onTriggerEnter,
219229
onPopperClick,
230+
onPopperMouseEnter,
231+
onPopperMouseLeave,
220232
onDocumentClick,
221233
onDocumentKeyDown,
222234
refElement

0 commit comments

Comments
 (0)