Refactor inserter sidebar open state to form editor store
[MAILPOET-3654]
This commit is contained in:
committed by
Veljko V
parent
cfcb4fd661
commit
0d0ac4c6f2
@@ -276,6 +276,7 @@
|
|||||||
"assets/js/src/form_editor/store/reducers/history_record.ts",
|
"assets/js/src/form_editor/store/reducers/history_record.ts",
|
||||||
"assets/js/src/form_editor/store/reducers/toggle_form.ts",
|
"assets/js/src/form_editor/store/reducers/toggle_form.ts",
|
||||||
"assets/js/src/form_editor/store/reducers/toggle_fullscreen.ts",
|
"assets/js/src/form_editor/store/reducers/toggle_fullscreen.ts",
|
||||||
|
"assets/js/src/form_editor/store/reducers/toggle_sidebar.ts",
|
||||||
"assets/js/src/form_editor/store/reducers/tutorial_dismiss.ts",
|
"assets/js/src/form_editor/store/reducers/tutorial_dismiss.ts",
|
||||||
"assets/js/src/form_editor/template_selection.tsx",
|
"assets/js/src/form_editor/template_selection.tsx",
|
||||||
"assets/js/src/form_editor/translations.ts",
|
"assets/js/src/form_editor/translations.ts",
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import React, { useState } from 'react';
|
import React from 'react';
|
||||||
import '@wordpress/core-data';
|
import '@wordpress/core-data';
|
||||||
import { useSelect, useDispatch } from '@wordpress/data';
|
import { useSelect, useDispatch } from '@wordpress/data';
|
||||||
import {
|
import {
|
||||||
@@ -39,11 +39,16 @@ import Fullscreen from './fullscreen';
|
|||||||
* https://developer.wordpress.org/block-editor/packages/packages-block-editor/
|
* https://developer.wordpress.org/block-editor/packages/packages-block-editor/
|
||||||
*/
|
*/
|
||||||
export default () => {
|
export default () => {
|
||||||
const [isInserterOpen, setIsInserterOpen] = useState(false);
|
|
||||||
const sidebarOpened = useSelect(
|
const sidebarOpened = useSelect(
|
||||||
(sel) => sel('mailpoet-form-editor').getSidebarOpened(),
|
(sel) => sel('mailpoet-form-editor').getSidebarOpened(),
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const isInserterOpened = useSelect(
|
||||||
|
(sel) => sel('mailpoet-form-editor').isInserterOpened(),
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
const formBlocks = useSelect(
|
const formBlocks = useSelect(
|
||||||
(sel) => sel('mailpoet-form-editor').getFormBlocks(),
|
(sel) => sel('mailpoet-form-editor').getFormBlocks(),
|
||||||
[]
|
[]
|
||||||
@@ -67,7 +72,7 @@ export default () => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const { blocksChangedInBlockEditor } = useDispatch('mailpoet-form-editor');
|
const { blocksChangedInBlockEditor, toggleInserter } = useDispatch('mailpoet-form-editor');
|
||||||
|
|
||||||
// Editor settings - see @wordpress/block-editor/src/store/defaults.js
|
// Editor settings - see @wordpress/block-editor/src/store/defaults.js
|
||||||
const editorSettings = {
|
const editorSettings = {
|
||||||
@@ -82,7 +87,7 @@ export default () => {
|
|||||||
__experimentalFetchLinkSuggestions: fetchLinkSuggestions,
|
__experimentalFetchLinkSuggestions: fetchLinkSuggestions,
|
||||||
__experimentalBlockPatterns: [], // we don't want patterns in our inserter
|
__experimentalBlockPatterns: [], // we don't want patterns in our inserter
|
||||||
__experimentalBlockPatternCategories: [],
|
__experimentalBlockPatternCategories: [],
|
||||||
__experimentalSetIsInserterOpened: setIsInserterOpen,
|
__experimentalSetIsInserterOpened: toggleInserter,
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -93,8 +98,8 @@ export default () => {
|
|||||||
<div className="interface-interface-skeleton__editor">
|
<div className="interface-interface-skeleton__editor">
|
||||||
<div className="interface-interface-skeleton__header">
|
<div className="interface-interface-skeleton__header">
|
||||||
<Header
|
<Header
|
||||||
isInserterOpened={isInserterOpen}
|
isInserterOpened={isInserterOpened}
|
||||||
setIsInserterOpened={setIsInserterOpen}
|
setIsInserterOpened={toggleInserter}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="interface-interface-skeleton__body">
|
<div className="interface-interface-skeleton__body">
|
||||||
@@ -105,9 +110,9 @@ export default () => {
|
|||||||
settings={editorSettings}
|
settings={editorSettings}
|
||||||
useSubRegistry={false}
|
useSubRegistry={false}
|
||||||
>
|
>
|
||||||
{(isInserterOpen) && (
|
{(isInserterOpened) && (
|
||||||
<div className="interface-interface-skeleton__secondary-sidebar">
|
<div className="interface-interface-skeleton__secondary-sidebar">
|
||||||
<Inserter setIsInserterOpened={setIsInserterOpen} />
|
<Inserter setIsInserterOpened={toggleInserter} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className="interface-interface-skeleton__content">
|
<div className="interface-interface-skeleton__content">
|
||||||
|
@@ -10,6 +10,13 @@ export function toggleSidebar(toggleTo) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function toggleInserter(toggleTo) {
|
||||||
|
return {
|
||||||
|
type: 'TOGGLE_INSERTER_SIDEBAR',
|
||||||
|
toggleTo: !!toggleTo,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function toggleForm(enabled) {
|
export function toggleForm(enabled) {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
return {
|
return {
|
||||||
|
@@ -19,7 +19,7 @@ import saveFormDone from './reducers/save_form_done.jsx';
|
|||||||
import saveFormFailed from './reducers/save_form_failed.jsx';
|
import saveFormFailed from './reducers/save_form_failed.jsx';
|
||||||
import saveFormStartedFactory from './reducers/save_form_started.jsx';
|
import saveFormStartedFactory from './reducers/save_form_started.jsx';
|
||||||
import switchDefaultSidebarTab from './reducers/switch_sidebar_tab.jsx';
|
import switchDefaultSidebarTab from './reducers/switch_sidebar_tab.jsx';
|
||||||
import toggleSidebar from './reducers/toggle_sidebar.jsx';
|
import { toggleSidebar, toggleInserterSidebar } from './reducers/toggle_sidebar.ts';
|
||||||
import toggleSidebarPanel from './reducers/toggle_sidebar_panel.jsx';
|
import toggleSidebarPanel from './reducers/toggle_sidebar_panel.jsx';
|
||||||
import changeFormBlocks from './reducers/change_form_blocks.jsx';
|
import changeFormBlocks from './reducers/change_form_blocks.jsx';
|
||||||
import saveCustomFieldDone from './reducers/save_custom_field_done.jsx';
|
import saveCustomFieldDone from './reducers/save_custom_field_done.jsx';
|
||||||
@@ -72,6 +72,7 @@ const mainReducer = (state, action) => {
|
|||||||
case 'SAVE_CUSTOM_FIELD_STARTED': return saveCustomFieldStarted(state);
|
case 'SAVE_CUSTOM_FIELD_STARTED': return saveCustomFieldStarted(state);
|
||||||
case 'SWITCH_DEFAULT_SIDEBAR_TAB': return switchDefaultSidebarTab(state, action);
|
case 'SWITCH_DEFAULT_SIDEBAR_TAB': return switchDefaultSidebarTab(state, action);
|
||||||
case 'TOGGLE_SIDEBAR': return toggleSidebar(state, action);
|
case 'TOGGLE_SIDEBAR': return toggleSidebar(state, action);
|
||||||
|
case 'TOGGLE_INSERTER_SIDEBAR': return toggleInserterSidebar(state, action);
|
||||||
case 'TOGGLE_SIDEBAR_PANEL': return toggleSidebarPanel(state, action);
|
case 'TOGGLE_SIDEBAR_PANEL': return toggleSidebarPanel(state, action);
|
||||||
case 'DELETE_CUSTOM_FIELD_STARTED': return customFieldDeleteStart(state, action);
|
case 'DELETE_CUSTOM_FIELD_STARTED': return customFieldDeleteStart(state, action);
|
||||||
case 'DELETE_CUSTOM_FIELD_DONE': return customFieldDeleteDone(state, action);
|
case 'DELETE_CUSTOM_FIELD_DONE': return customFieldDeleteDone(state, action);
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
export default (state, action) => ({
|
|
||||||
...state,
|
|
||||||
sidebarOpened: action.toggleTo,
|
|
||||||
});
|
|
14
assets/js/src/form_editor/store/reducers/toggle_sidebar.ts
Normal file
14
assets/js/src/form_editor/store/reducers/toggle_sidebar.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
type ToggleAction = {
|
||||||
|
type: string;
|
||||||
|
toggleTo: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const toggleSidebar = (state, action: ToggleAction) => ({
|
||||||
|
...state,
|
||||||
|
sidebarOpened: action.toggleTo,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const toggleInserterSidebar = (state, action: ToggleAction) => ({
|
||||||
|
...state,
|
||||||
|
isInserterOpened: action.toggleTo,
|
||||||
|
});
|
@@ -22,6 +22,9 @@ export default {
|
|||||||
isFullscreenEnabled(state) {
|
isFullscreenEnabled(state) {
|
||||||
return state.fullscreenStatus;
|
return state.fullscreenStatus;
|
||||||
},
|
},
|
||||||
|
isInserterOpened(state) {
|
||||||
|
return state.isInserterOpened;
|
||||||
|
},
|
||||||
getSidebarOpened(state) {
|
getSidebarOpened(state) {
|
||||||
return state.sidebarOpened;
|
return state.sidebarOpened;
|
||||||
},
|
},
|
||||||
|
@@ -64,6 +64,7 @@ export default () => {
|
|||||||
isFormSaving: false,
|
isFormSaving: false,
|
||||||
isCustomFieldSaving: false,
|
isCustomFieldSaving: false,
|
||||||
isCustomFieldCreating: false,
|
isCustomFieldCreating: false,
|
||||||
|
isInserterOpened: false,
|
||||||
notices: [],
|
notices: [],
|
||||||
hasUnsavedChanges: false,
|
hasUnsavedChanges: false,
|
||||||
sidebar: {
|
sidebar: {
|
||||||
|
Reference in New Issue
Block a user