Skip to content

Commit 8ba29a4

Browse files
Fix ResizeObserver compatibility for test environments
- Add check for ResizeObserver availability before using it - Fallback to simple width measurement when ResizeObserver is not available - Improve fallback chain for borderBoxSize/contentBoxSize measurements - Ensures tests pass in environments without ResizeObserver support
1 parent bdc3a90 commit 8ba29a4

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

packages/components/src/ui/select.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,19 @@ export function Select({
5757
React.useEffect(() => {
5858
if (!triggerRef.current) return;
5959

60+
// Check if ResizeObserver is available
61+
if (typeof ResizeObserver === 'undefined') {
62+
// Fallback to simple width measurement
63+
setMenuWidth(triggerRef.current.offsetWidth);
64+
return;
65+
}
66+
6067
const observer = new ResizeObserver((entries) => {
6168
for (const entry of entries) {
62-
// Use borderBoxSize for more accurate measurements
63-
const width = entry.borderBoxSize?.[0]?.inlineSize || entry.target.offsetWidth;
69+
// Use borderBoxSize for more accurate measurements with fallback
70+
const width = entry.borderBoxSize?.[0]?.inlineSize ??
71+
entry.contentBoxSize?.[0]?.inlineSize ??
72+
entry.target.offsetWidth;
6473
setMenuWidth(width);
6574
}
6675
});

0 commit comments

Comments
 (0)