Skip to content

Commit 0bad0f2

Browse files
committed
app: Add close all.
Quickly close everything and code at full size. We currently have this option in the block editor only, but it makes sense to easily unclutter everywhere.
1 parent 0f64670 commit 0bad0f2

2 files changed

Lines changed: 39 additions & 17 deletions

File tree

src/app/App.tsx

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
import 'react-splitter-layout/lib/index.css';
55
import './app.scss';
66
import { Button, Classes, Spinner } from '@blueprintjs/core';
7-
import { Console, Manual } from '@blueprintjs/icons';
7+
import { Console, Manual, ZoomToFit } from '@blueprintjs/icons';
88
import React, { useEffect, useState } from 'react';
99

1010
type SideView = 'off' | 'docs';
1111
import SplitterLayout from 'react-splitter-layout';
1212
import { useLocalStorage, useTernaryDarkMode } from 'usehooks-ts';
1313
import Activities from '../activities/Activities';
14+
import { Activity, useActivitiesSelectedActivity } from '../activities/hooks';
1415
import DfuWindowsDriverInstallDialog from '../firmware/dfuWindowsDriverInstallDialog/DfuWindowsDriverInstallDialog';
1516
import { InstallPybricksDialog } from '../firmware/installPybricksDialog/InstallPybricksDialog';
1617
import RestoreOfficialDialog from '../firmware/restoreOfficialDialog/RestoreOfficialDialog';
@@ -100,43 +101,56 @@ const App: React.FunctionComponent = () => {
100101
const { isDarkMode } = useTernaryDarkMode();
101102
const [sideView, setSideView] = useState<SideView>('off');
102103
const [isDragging, setIsDragging] = useState(false);
104+
const [, setSelectedActivity] = useActivitiesSelectedActivity();
103105

104106
const defaultDocsSplit = 30;
105107
const [docsSplit, setDocsSplit] = useLocalStorage(
106108
'app-docs-split',
107109
defaultDocsSplit,
108110
);
109111

112+
const resetDocsSplit = () => {
113+
setDocsSplit(defaultDocsSplit);
114+
resetSplitterSize(
115+
'.splitter-layout.pb-show-docs, .splitter-layout.pb-hide-docs',
116+
defaultDocsSplit,
117+
);
118+
};
119+
110120
const docsOnClick = () => {
111121
if (sideView === 'docs' && docsSplit < 10) {
112-
// Treat manually dragged closed like closed, so clicking will
113-
// visually open it at default size.
114-
setDocsSplit(defaultDocsSplit);
115-
resetSplitterSize(
116-
'.splitter-layout.pb-show-docs, .splitter-layout.pb-hide-docs',
117-
defaultDocsSplit,
118-
);
122+
resetDocsSplit();
119123
} else {
120124
setSideView(sideView === 'docs' ? 'off' : 'docs');
121125
}
122126
};
123127

124-
const defaultTerminalSplit = 30;
128+
const defaultTerminalSplit = 20;
125129
const [terminalSplit, setTerminalSplit] = useLocalStorage(
126130
'app-terminal-split',
127131
defaultTerminalSplit,
128132
);
129133
const [terminalVisible, setTerminalVisible] = useState(true);
130134

135+
const resetTerminalSplit = () => {
136+
setTerminalSplit(defaultTerminalSplit);
137+
resetSplitterSize(
138+
'.splitter-layout.pb-show-terminal, .splitter-layout.pb-hide-terminal',
139+
defaultTerminalSplit,
140+
);
141+
};
142+
143+
const resetView = () => {
144+
resetDocsSplit();
145+
setSideView('off');
146+
resetTerminalSplit();
147+
setTerminalVisible(false);
148+
setSelectedActivity(Activity.None);
149+
};
150+
131151
const terminalOnClick = () => {
132152
if (terminalVisible && terminalSplit < 10) {
133-
// Treat manually dragged closed like closed, so clicking will
134-
// visually open it at default size.
135-
setTerminalSplit(defaultTerminalSplit);
136-
resetSplitterSize(
137-
'.splitter-layout.pb-show-terminal, .splitter-layout.pb-hide-terminal',
138-
defaultTerminalSplit,
139-
);
153+
resetTerminalSplit();
140154
} else {
141155
setTerminalVisible(!terminalVisible);
142156
}
@@ -211,6 +225,13 @@ const App: React.FunctionComponent = () => {
211225
<Editor />
212226
</React.Suspense>
213227
<div className="pb-app-side-view-buttons">
228+
<Button
229+
large
230+
intent="primary"
231+
icon={<ZoomToFit />}
232+
title={i18n.translate('closeAll')}
233+
onClick={resetView}
234+
/>
214235
<Button
215236
large
216237
intent="primary"

src/app/translations/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@
1212
"terminal": {
1313
"show": "Show terminal",
1414
"hide": "Hide terminal"
15-
}
15+
},
16+
"closeAll": "Close panels"
1617
}

0 commit comments

Comments
 (0)