Skip to content

Commit 000b5c0

Browse files
authored
Fix potential TypeError from accessing null ref in React 19.1.0 (#1517)
1 parent ee8a7ce commit 000b5c0

File tree

6 files changed

+23
-13
lines changed

6 files changed

+23
-13
lines changed

dist/cjs/components/MenuList.cjs

+4-1
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ const MenuList = ({
123123
if (e.target === e.currentTarget) submenuCtx$1.off();
124124
};
125125
const handlePosition = react.useCallback(noOverflowCheck => {
126+
const menuElt = menuRef.current;
127+
const containerElt = containerRef.current;
128+
if (!menuElt || !containerElt) return;
126129
const anchorRect = anchorRef ? anchorRef.current?.getBoundingClientRect() : anchorPoint ? {
127130
left: anchorPoint.x,
128131
right: anchorPoint.x,
@@ -140,7 +143,7 @@ const MenuList = ({
140143
if (!scrollNodes.menu) {
141144
scrollNodes.menu = (boundingBoxRef ? boundingBoxRef.current : utils.getScrollAncestor(rootMenuRef.current)) || window;
142145
}
143-
const positionHelpers = getPositionHelpers.getPositionHelpers(containerRef, menuRef, scrollNodes.menu, boundingBoxPadding);
146+
const positionHelpers = getPositionHelpers.getPositionHelpers(containerElt, menuElt, scrollNodes.menu, boundingBoxPadding);
144147
let {
145148
arrowX,
146149
arrowY,

dist/cjs/positionUtils/getPositionHelpers.cjs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
var getNormalizedClientRect = require('./getNormalizedClientRect.cjs');
44
var utils = require('../utils/utils.cjs');
55

6-
const getPositionHelpers = (containerRef, menuRef, menuScroll, boundingBoxPadding) => {
7-
const menuRect = getNormalizedClientRect.getNormalizedClientRect(menuRef.current);
8-
const containerRect = containerRef.current.getBoundingClientRect();
6+
const getPositionHelpers = (containerElt, menuElt, menuScroll, boundingBoxPadding) => {
7+
const menuRect = getNormalizedClientRect.getNormalizedClientRect(menuElt);
8+
const containerRect = containerElt.getBoundingClientRect();
99
const boundingRect = menuScroll === window ? {
1010
left: 0,
1111
top: 0,

dist/esm/components/MenuList.mjs

+4-1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ const MenuList = ({
121121
if (e.target === e.currentTarget) submenuCtx.off();
122122
};
123123
const handlePosition = useCallback(noOverflowCheck => {
124+
const menuElt = menuRef.current;
125+
const containerElt = containerRef.current;
126+
if (!menuElt || !containerElt) return;
124127
const anchorRect = anchorRef ? anchorRef.current?.getBoundingClientRect() : anchorPoint ? {
125128
left: anchorPoint.x,
126129
right: anchorPoint.x,
@@ -138,7 +141,7 @@ const MenuList = ({
138141
if (!scrollNodes.menu) {
139142
scrollNodes.menu = (boundingBoxRef ? boundingBoxRef.current : getScrollAncestor(rootMenuRef.current)) || window;
140143
}
141-
const positionHelpers = getPositionHelpers(containerRef, menuRef, scrollNodes.menu, boundingBoxPadding);
144+
const positionHelpers = getPositionHelpers(containerElt, menuElt, scrollNodes.menu, boundingBoxPadding);
142145
let {
143146
arrowX,
144147
arrowY,

dist/esm/positionUtils/getPositionHelpers.mjs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { getNormalizedClientRect } from './getNormalizedClientRect.mjs';
22
import { parsePadding } from '../utils/utils.mjs';
33

4-
const getPositionHelpers = (containerRef, menuRef, menuScroll, boundingBoxPadding) => {
5-
const menuRect = getNormalizedClientRect(menuRef.current);
6-
const containerRect = containerRef.current.getBoundingClientRect();
4+
const getPositionHelpers = (containerElt, menuElt, menuScroll, boundingBoxPadding) => {
5+
const menuRect = getNormalizedClientRect(menuElt);
6+
const containerRect = containerElt.getBoundingClientRect();
77
const boundingRect = menuScroll === window ? {
88
left: 0,
99
top: 0,

src/components/MenuList.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ export const MenuList = ({
145145

146146
const handlePosition = useCallback(
147147
(noOverflowCheck) => {
148+
const menuElt = menuRef.current;
149+
const containerElt = containerRef.current;
150+
if (!menuElt || !containerElt) return;
151+
148152
const anchorRect = anchorRef
149153
? anchorRef.current?.getBoundingClientRect()
150154
: anchorPoint
@@ -174,8 +178,8 @@ export const MenuList = ({
174178
}
175179

176180
const positionHelpers = getPositionHelpers(
177-
containerRef,
178-
menuRef,
181+
containerElt,
182+
menuElt,
179183
scrollNodes.menu,
180184
boundingBoxPadding
181185
);

src/positionUtils/getPositionHelpers.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { parsePadding } from '../utils';
22
import { getNormalizedClientRect } from './getNormalizedClientRect';
33

4-
export const getPositionHelpers = (containerRef, menuRef, menuScroll, boundingBoxPadding) => {
5-
const menuRect = getNormalizedClientRect(menuRef.current);
6-
const containerRect = containerRef.current.getBoundingClientRect();
4+
export const getPositionHelpers = (containerElt, menuElt, menuScroll, boundingBoxPadding) => {
5+
const menuRect = getNormalizedClientRect(menuElt);
6+
const containerRect = containerElt.getBoundingClientRect();
77
const boundingRect =
88
menuScroll === window
99
? {

0 commit comments

Comments
 (0)