Skip to content

Commit 2a4ce13

Browse files
committed
fix(game-client): stabilize notification window shrink
1 parent 3f81e47 commit 2a4ce13

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

apps/game-client/src/components/draggable-window.test.tsx

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,23 @@ const flushAnimationFrame = async () => {
5757
});
5858
};
5959

60+
const mockElementRenderedHeight = (element: HTMLElement, height: number) => {
61+
Object.defineProperty(element, "getBoundingClientRect", {
62+
configurable: true,
63+
value: () => ({
64+
width: 0,
65+
height,
66+
top: 0,
67+
right: 0,
68+
bottom: height,
69+
left: 0,
70+
x: 0,
71+
y: 0,
72+
toJSON: () => ({}),
73+
}),
74+
});
75+
};
76+
6077
const createScrollAreaChildren = () => (
6178
<div className="ll:flex ll:h-full ll:w-full ll:flex-col ll:overflow-hidden">
6279
<div data-radix-scroll-area-viewport="">
@@ -392,6 +409,7 @@ describe("DraggableWindow", () => {
392409
configurable: true,
393410
value: 160,
394411
});
412+
mockElementRenderedHeight(viewportContent, 160);
395413

396414
await triggerResizeObservers();
397415
await flushAnimationFrame();
@@ -449,6 +467,7 @@ describe("DraggableWindow", () => {
449467
configurable: true,
450468
value: 160,
451469
});
470+
mockElementRenderedHeight(rerenderedElements.viewportContent, 160);
452471

453472
await triggerMutationObservers();
454473
await triggerResizeObservers();
@@ -512,6 +531,7 @@ describe("DraggableWindow", () => {
512531
writable: true,
513532
value: 160,
514533
});
534+
mockElementRenderedHeight(viewportContent, 160);
515535

516536
await triggerResizeObservers();
517537
await flushAnimationFrame();
@@ -528,13 +548,14 @@ describe("DraggableWindow", () => {
528548
Object.defineProperty(viewportContent, "scrollHeight", {
529549
configurable: true,
530550
writable: true,
531-
value: 60,
551+
value: 160,
532552
});
533553
Object.defineProperty(viewportElement, "scrollHeight", {
534554
configurable: true,
535555
writable: true,
536556
value: 160,
537557
});
558+
mockElementRenderedHeight(viewportContent, 60);
538559

539560
await triggerResizeObservers();
540561
await flushAnimationFrame();

apps/game-client/src/components/draggable-window.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ const getMeasuredContentHeight = (contentElement: HTMLDivElement) => {
109109
const viewportContent = viewportElement.firstElementChild;
110110
const nextMeasuredHeight =
111111
viewportContent instanceof HTMLElement
112-
? viewportContent.scrollHeight
112+
? Math.round(viewportContent.getBoundingClientRect().height) ||
113+
viewportContent.scrollHeight
113114
: viewportElement.scrollHeight;
114115

115116
return Math.max(maxScrollHeight, nextMeasuredHeight);

0 commit comments

Comments
 (0)