Skip to content

Commit 72adf4c

Browse files
committed
ref(cmdk) fix panel container
1 parent 8a0a9a0 commit 72adf4c

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

static/app/utils/useDimensions.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ interface Props<Element extends HTMLElement> {
1010
* Returns a ref to be added to an element and returns the dimensions of that element
1111
*/
1212
export function useDimensions<Element extends HTMLElement>({elementRef}: Props<Element>) {
13-
const [dimensions, setDimensions] = useState({height: 0, width: 0});
13+
const [dimensions, setDimensions] = useState({height: 0, width: 0, top: 0, left: 0});
1414

1515
const element = elementRef.current;
1616

@@ -19,13 +19,17 @@ export function useDimensions<Element extends HTMLElement>({elementRef}: Props<E
1919
setDimensions({
2020
height: element?.clientHeight || 0,
2121
width: element?.clientWidth || 0,
22+
top: element?.offsetTop || 0,
23+
left: element?.offsetLeft || 0,
2224
});
2325
}, [element]);
2426

2527
const onResize = useCallback(() => {
2628
setDimensions({
2729
height: element?.clientHeight || 0,
2830
width: element?.clientWidth || 0,
31+
top: element?.offsetTop || 0,
32+
left: element?.offsetLeft || 0,
2933
});
3034
}, [element]);
3135

static/app/views/dashboards/widgetBuilder/components/newWidgetBuilder.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ export function WidgetBuilderV2({
9292
);
9393

9494
const navigationElementRef = useRef<HTMLDivElement>(null);
95+
const mainContentElementRef = useRef<HTMLDivElement>(null);
9596

9697
useEffect(() => {
9798
if (navigationElementRef.current) return;
@@ -104,7 +105,17 @@ export function WidgetBuilderV2({
104105
}
105106
}, []);
106107

108+
useEffect(() => {
109+
if (mainContentElementRef.current) return;
110+
111+
const mainContentElement = document.querySelector('main');
112+
if (mainContentElement) {
113+
mainContentElementRef.current = mainContentElement as HTMLDivElement;
114+
}
115+
}, []);
116+
107117
const dimensions = useDimensions({elementRef: navigationElementRef});
118+
const mainContentDimensions = useDimensions({elementRef: mainContentElementRef});
108119

109120
const handleDragEnd = ({over}: any) => {
110121
setTranslate(snapPreviewToCorners(over));
@@ -168,12 +179,12 @@ export function WidgetBuilderV2({
168179
? isMediumScreen
169180
? {
170181
left: 0,
171-
top: `${dimensions.height ?? 0}px`,
182+
top: `${mainContentDimensions.top ?? 0}px`,
172183
willChange: 'top',
173184
}
174185
: {
175186
left: `${dimensions.width ?? 0}px`,
176-
top: 0,
187+
top: `${mainContentDimensions.top ?? 0}px`,
177188
willChange: 'left',
178189
}
179190
: undefined

0 commit comments

Comments
 (0)