fix: guard overlay positioning refs
This commit is contained in:
parent
48c41e8733
commit
a7c7c08f44
3 changed files with 18 additions and 6 deletions
|
|
@ -186,8 +186,12 @@ export const DropdownMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(
|
|||
if (!isOpen || !triggerRef.current || !contentRef.current) return;
|
||||
|
||||
const updatePosition = () => {
|
||||
const triggerRect = triggerRef.current?.getBoundingClientRect();
|
||||
const contentRect = contentRef.current?.getBoundingClientRect();
|
||||
const triggerElement = triggerRef.current;
|
||||
const contentElement = contentRef.current;
|
||||
if (!triggerElement || !contentElement) return;
|
||||
|
||||
const triggerRect = triggerElement.getBoundingClientRect();
|
||||
const contentRect = contentElement.getBoundingClientRect();
|
||||
const newPosition = calculatePosition(triggerRect, contentRect, placement, offset);
|
||||
setPosition(newPosition);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -191,8 +191,12 @@ export const Popover = forwardRef<HTMLDivElement, PopoverProps>(
|
|||
if (!isOpen || !triggerRef.current || !contentRef.current) return;
|
||||
|
||||
const updatePosition = () => {
|
||||
const triggerRect = triggerRef.current?.getBoundingClientRect();
|
||||
const contentRect = contentRef.current?.getBoundingClientRect();
|
||||
const triggerElement = triggerRef.current;
|
||||
const contentElement = contentRef.current;
|
||||
if (!triggerElement || !contentElement) return;
|
||||
|
||||
const triggerRect = triggerElement.getBoundingClientRect();
|
||||
const contentRect = contentElement.getBoundingClientRect();
|
||||
const newPosition = calculatePosition(triggerRect, contentRect, placement, offset);
|
||||
setPosition(newPosition);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -176,8 +176,12 @@ export const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(
|
|||
if (!isOpen || !triggerRef.current || !contentRef.current) return;
|
||||
|
||||
const updatePosition = () => {
|
||||
const triggerRect = triggerRef.current?.getBoundingClientRect();
|
||||
const contentRect = contentRef.current?.getBoundingClientRect();
|
||||
const triggerElement = triggerRef.current;
|
||||
const contentElement = contentRef.current;
|
||||
if (!triggerElement || !contentElement) return;
|
||||
|
||||
const triggerRect = triggerElement.getBoundingClientRect();
|
||||
const contentRect = contentElement.getBoundingClientRect();
|
||||
const newPosition = calculatePosition(triggerRect, contentRect, placement, offset);
|
||||
setPosition(newPosition);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue