Fix panel toggle for Gutenberg 9.1

[MAILPOET-3154]
This commit is contained in:
Pavel Dohnal
2020-10-07 11:08:51 +02:00
committed by Veljko V
parent eb75c0c6c5
commit 14b6b88f9b
2 changed files with 6 additions and 16 deletions

View File

@@ -21,11 +21,11 @@ const getRequiredAction = (openedPanels, panelId, toggleTo) => {
* @return {object} Modified state object * @return {object} Modified state object
*/ */
export default (state, action) => { export default (state, action) => {
if (action.toggleTo !== undefined && !['opened', 'closed'].includes(action.toggleTo)) { let toggleTo;
throw new Error(`Unexpected toggleTo value "${action.toggleTo}"`); if (action.toggleTo === true) toggleTo = 'opened';
} if (action.toggleTo === false) toggleTo = 'closed';
const openedPanels = [...state.sidebar.openedPanels]; const openedPanels = [...state.sidebar.openedPanels];
const requiredAction = getRequiredAction(openedPanels, action.id, action.toggleTo); const requiredAction = getRequiredAction(openedPanels, action.id, toggleTo);
if (requiredAction === 'open') { if (requiredAction === 'open') {
openedPanels.push(action.id); openedPanels.push(action.id);
} else if (requiredAction === 'close') { } else if (requiredAction === 'close') {

View File

@@ -46,23 +46,13 @@ describe('Toggle Sidebar Panel Reducer', () => {
const action = { const action = {
type: 'TOGGLE_SIDEBAR_PANEL', type: 'TOGGLE_SIDEBAR_PANEL',
id: 'nice-panel', id: 'nice-panel',
toggleTo: 'opened', toggleTo: true,
}; };
reducer(initialState, action); reducer(initialState, action);
let finalState = reducer(initialState, action); let finalState = reducer(initialState, action);
expect(finalState.sidebar.openedPanels).to.include('nice-panel'); expect(finalState.sidebar.openedPanels).to.include('nice-panel');
action.toggleTo = 'closed'; action.toggleTo = false;
finalState = reducer(initialState, action); finalState = reducer(initialState, action);
expect(finalState.sidebar.openedPanels).to.not.include('nice-panel'); expect(finalState.sidebar.openedPanels).to.not.include('nice-panel');
}); });
it('Should throw an error for unexpected toggleTo value', () => {
const action = {
type: 'TOGGLE_SIDEBAR_PANEL',
id: 'nice-panel',
toggleTo: 'nonsense',
};
expect(() => (reducer(initialState, action)))
.to.throw('Unexpected toggleTo value "nonsense"');
});
}); });