Skip to content

Commit 11aa9ad

Browse files
authored
fix(react): allow preview panel to be fully collapsed (#445)
1 parent df69da2 commit 11aa9ad

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

packages/react/src/Panels/WorkspacePanel.tsx

+23-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export function WorkspacePanel({ tutorialStore, theme, dialog }: Props) {
5151
const terminalExpanded = useRef(false);
5252

5353
return (
54-
<PanelGroup className={resizePanelStyles.PanelGroup} direction="vertical">
54+
<PanelGroup className={resizePanelStyles.PanelGroup} id="right-panel-group" direction="vertical">
5555
<DialogProvider value={dialog}>
5656
<EditorSection
5757
theme={theme}
@@ -237,11 +237,32 @@ function PreviewsSection({
237237
return () => unsubscribe();
238238
}, [storeRef]);
239239

240+
const MIN_SIZE_IN_PIXELS = 38;
241+
const [panelMinSize, setPanelMinSize] = useState(10);
242+
243+
useEffect(() => {
244+
const panelGroup = document.querySelector('div[data-panel-group-id="right-panel-group"]' as 'div');
245+
246+
if (!panelGroup) {
247+
return;
248+
}
249+
250+
const observer = new ResizeObserver(() => {
251+
const height = panelGroup?.offsetHeight;
252+
setPanelMinSize((MIN_SIZE_IN_PIXELS / height) * 100);
253+
});
254+
observer.observe(panelGroup);
255+
256+
return () => {
257+
observer.disconnect();
258+
};
259+
}, []);
260+
240261
return (
241262
<Panel
242263
id={hasPreviews ? 'previews-opened' : 'previews-closed'}
243264
defaultSize={hasPreviews ? 50 : 0}
244-
minSize={10}
265+
minSize={panelMinSize}
245266
maxSize={hasPreviews ? 100 : 0}
246267
collapsible={!hasPreviews}
247268
className={classNames({

0 commit comments

Comments
 (0)