Skip to content

Commit 280b856

Browse files
authored
fix: open panes at default size on expand from collapsed state (usebruno#8133)
* fix(tabs): open panes at default size on expand from collapsed state * chore: shorten comment in pane expand reducers * test(tabs): add tabs collapse/expand reducer tests * test(tabs): assert expand reducers preserve the other pane's collapse flag
1 parent 216d8e7 commit 280b856

2 files changed

Lines changed: 65 additions & 14 deletions

File tree

packages/bruno-app/src/providers/ReduxStore/slices/tabs.js

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,6 @@ export const tabsSlice = createSlice({
104104
requestPaneHeight: null,
105105
requestPaneCollapsed: false,
106106
responsePaneCollapsed: false,
107-
requestPaneWidthBeforeCollapse: null,
108-
requestPaneHeightBeforeCollapse: null,
109107
requestPaneTab: requestPaneTab || defaultRequestPaneTab,
110108
responsePaneTab: 'response',
111109
responseFormat: null,
@@ -135,8 +133,6 @@ export const tabsSlice = createSlice({
135133
requestPaneHeight: null,
136134
requestPaneCollapsed: false,
137135
responsePaneCollapsed: false,
138-
requestPaneWidthBeforeCollapse: null,
139-
requestPaneHeightBeforeCollapse: null,
140136
requestPaneTab: requestPaneTab || defaultRequestPaneTab,
141137
responsePaneTab: 'response',
142138
responseFormat: null,
@@ -383,8 +379,6 @@ export const tabsSlice = createSlice({
383379
if (tab) {
384380
tab.requestPaneCollapsed = true;
385381
tab.responsePaneCollapsed = false;
386-
tab.requestPaneWidthBeforeCollapse = tab.requestPaneWidth;
387-
tab.requestPaneHeightBeforeCollapse = tab.requestPaneHeight;
388382
}
389383
},
390384
collapseResponsePane: (state, action) => {
@@ -398,20 +392,18 @@ export const tabsSlice = createSlice({
398392
const tab = find(state.tabs, (t) => t.uid === action.payload.uid);
399393
if (tab) {
400394
tab.requestPaneCollapsed = false;
401-
if (tab.requestPaneWidthBeforeCollapse != null) {
402-
tab.requestPaneWidth = tab.requestPaneWidthBeforeCollapse;
403-
}
404-
if (tab.requestPaneHeightBeforeCollapse != null) {
405-
tab.requestPaneHeight = tab.requestPaneHeightBeforeCollapse;
406-
}
407-
tab.requestPaneWidthBeforeCollapse = null;
408-
tab.requestPaneHeightBeforeCollapse = null;
395+
// reset so the panes return to their default size on expand
396+
tab.requestPaneWidth = null;
397+
tab.requestPaneHeight = null;
409398
}
410399
},
411400
expandResponsePane: (state, action) => {
412401
const tab = find(state.tabs, (t) => t.uid === action.payload.uid);
413402
if (tab) {
414403
tab.responsePaneCollapsed = false;
404+
// reset so the panes return to their default size on expand
405+
tab.requestPaneWidth = null;
406+
tab.requestPaneHeight = null;
415407
}
416408
},
417409
reorderTabs: (state, action) => {
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import reducer, {
2+
collapseRequestPane,
3+
collapseResponsePane,
4+
expandRequestPane,
5+
expandResponsePane
6+
} from './tabs';
7+
8+
const makeState = (overrides = {}) => ({
9+
tabs: [{
10+
uid: 'tab-1',
11+
collectionUid: 'col-1',
12+
type: 'http-request',
13+
requestPaneWidth: 500,
14+
requestPaneHeight: 400,
15+
requestPaneCollapsed: false,
16+
responsePaneCollapsed: false,
17+
...overrides
18+
}],
19+
activeTabUid: 'tab-1',
20+
recentlyClosedTabs: []
21+
});
22+
23+
describe('tabs slice - collapse/expand reducers', () => {
24+
it('collapseRequestPane flips flags and preserves stored dimensions', () => {
25+
const next = reducer(makeState({ responsePaneCollapsed: true }), collapseRequestPane({ uid: 'tab-1' }));
26+
27+
expect(next.tabs[0].requestPaneCollapsed).toBe(true);
28+
expect(next.tabs[0].responsePaneCollapsed).toBe(false);
29+
expect(next.tabs[0].requestPaneWidth).toBe(500);
30+
expect(next.tabs[0].requestPaneHeight).toBe(400);
31+
});
32+
33+
it('collapseResponsePane flips flags and preserves stored dimensions', () => {
34+
const next = reducer(makeState({ requestPaneCollapsed: true }), collapseResponsePane({ uid: 'tab-1' }));
35+
36+
expect(next.tabs[0].requestPaneCollapsed).toBe(false);
37+
expect(next.tabs[0].responsePaneCollapsed).toBe(true);
38+
expect(next.tabs[0].requestPaneWidth).toBe(500);
39+
expect(next.tabs[0].requestPaneHeight).toBe(400);
40+
});
41+
42+
it('expandRequestPane flips flag and resets stored dimensions to default', () => {
43+
const next = reducer(makeState({ requestPaneCollapsed: true }), expandRequestPane({ uid: 'tab-1' }));
44+
45+
expect(next.tabs[0].requestPaneCollapsed).toBe(false);
46+
expect(next.tabs[0].responsePaneCollapsed).toBe(false);
47+
expect(next.tabs[0].requestPaneWidth).toBeNull();
48+
expect(next.tabs[0].requestPaneHeight).toBeNull();
49+
});
50+
51+
it('expandResponsePane flips flag and resets stored dimensions to default', () => {
52+
const next = reducer(makeState({ responsePaneCollapsed: true }), expandResponsePane({ uid: 'tab-1' }));
53+
54+
expect(next.tabs[0].responsePaneCollapsed).toBe(false);
55+
expect(next.tabs[0].requestPaneCollapsed).toBe(false);
56+
expect(next.tabs[0].requestPaneWidth).toBeNull();
57+
expect(next.tabs[0].requestPaneHeight).toBeNull();
58+
});
59+
});

0 commit comments

Comments
 (0)