Use @wordpress/editor store with email editor components
MAILPOET-6303
This commit is contained in:
committed by
Rostislav Wolný
parent
e37997e2e1
commit
f945ea8388
@ -1,5 +1,5 @@
|
|||||||
import { BlockSelectionClearer } from '@wordpress/block-editor';
|
import { BlockSelectionClearer } from '@wordpress/block-editor';
|
||||||
import { UnsavedChangesWarning } from '@wordpress/editor';
|
import { store as editorStore, UnsavedChangesWarning } from '@wordpress/editor';
|
||||||
import { uploadMedia } from '@wordpress/media-utils';
|
import { uploadMedia } from '@wordpress/media-utils';
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import { useSelect, useDispatch } from '@wordpress/data';
|
import { useSelect, useDispatch } from '@wordpress/data';
|
||||||
@ -42,10 +42,10 @@ export function Layout() {
|
|||||||
isFullscreenActive:
|
isFullscreenActive:
|
||||||
select( storeName ).isFeatureActive( 'fullscreenMode' ),
|
select( storeName ).isFeatureActive( 'fullscreenMode' ),
|
||||||
isSidebarOpened: select( storeName ).isSidebarOpened(),
|
isSidebarOpened: select( storeName ).isSidebarOpened(),
|
||||||
isInserterSidebarOpened:
|
// @ts-expect-error isInserterOpened is missing in types.
|
||||||
select( storeName ).isInserterSidebarOpened(),
|
isInserterSidebarOpened: select( editorStore ).isInserterOpened(),
|
||||||
isListviewSidebarOpened:
|
// @ts-expect-error isListViewOpened is missing in types.
|
||||||
select( storeName ).isListviewSidebarOpened(),
|
isListviewSidebarOpened: select( editorStore ).isListViewOpened(),
|
||||||
initialSettings: select( storeName ).getInitialEditorSettings(),
|
initialSettings: select( storeName ).getInitialEditorSettings(),
|
||||||
previewDeviceType: select( storeName ).getDeviceType(),
|
previewDeviceType: select( storeName ).getDeviceType(),
|
||||||
canUserEditMedia: select( coreStore ).canUser( 'create', 'media' ),
|
canUserEditMedia: select( coreStore ).canUser( 'create', 'media' ),
|
||||||
@ -57,7 +57,8 @@ export function Layout() {
|
|||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
const { toggleInserterSidebar } = useDispatch( storeName );
|
// @ts-expect-error isInserterOpened is missing in types.
|
||||||
|
const { setIsInserterOpened } = useDispatch( editorStore );
|
||||||
|
|
||||||
const [ emailCss ] = useEmailCss();
|
const [ emailCss ] = useEmailCss();
|
||||||
const className = classnames( 'edit-post-layout', {
|
const className = classnames( 'edit-post-layout', {
|
||||||
@ -105,7 +106,7 @@ export function Layout() {
|
|||||||
onClick={ () => {
|
onClick={ () => {
|
||||||
// Clear inserter sidebar when canvas is clicked.
|
// Clear inserter sidebar when canvas is clicked.
|
||||||
if ( isInserterSidebarOpened ) {
|
if ( isInserterSidebarOpened ) {
|
||||||
void toggleInserterSidebar();
|
void setIsInserterOpened( false );
|
||||||
}
|
}
|
||||||
} }
|
} }
|
||||||
>
|
>
|
||||||
|
@ -48,9 +48,10 @@ export function Header() {
|
|||||||
const [ isBlockToolsCollapsed, setIsBlockToolsCollapsed ] =
|
const [ isBlockToolsCollapsed, setIsBlockToolsCollapsed ] =
|
||||||
useState( false );
|
useState( false );
|
||||||
|
|
||||||
const { toggleInserterSidebar, toggleListviewSidebar } =
|
|
||||||
useDispatch( storeName );
|
|
||||||
const { undo: undoAction, redo: redoAction } = useDispatch( coreDataStore );
|
const { undo: undoAction, redo: redoAction } = useDispatch( coreDataStore );
|
||||||
|
// @ts-expect-error missing types.
|
||||||
|
const { setIsInserterOpened, setIsListViewOpened } =
|
||||||
|
useDispatch( editorStore );
|
||||||
const {
|
const {
|
||||||
isInserterSidebarOpened,
|
isInserterSidebarOpened,
|
||||||
isListviewSidebarOpened,
|
isListviewSidebarOpened,
|
||||||
@ -67,10 +68,10 @@ export function Header() {
|
|||||||
const editorSettings = _getEditorSettings();
|
const editorSettings = _getEditorSettings();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isInserterSidebarOpened:
|
// @ts-expect-error missing types.
|
||||||
select( storeName ).isInserterSidebarOpened(),
|
isInserterSidebarOpened: select( editorStore ).isInserterOpened(),
|
||||||
isListviewSidebarOpened:
|
// @ts-expect-error missing types.
|
||||||
select( storeName ).isListviewSidebarOpened(),
|
isListviewSidebarOpened: select( editorStore ).isListViewOpened(),
|
||||||
isFixedToolbarActive: select( preferencesStore ).get(
|
isFixedToolbarActive: select( preferencesStore ).get(
|
||||||
'core',
|
'core',
|
||||||
'fixedToolbar'
|
'fixedToolbar'
|
||||||
@ -88,6 +89,20 @@ export function Header() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const toggleTheInserterSidebar = () => {
|
||||||
|
if ( isInserterSidebarOpened ) {
|
||||||
|
return setIsInserterOpened( false );
|
||||||
|
}
|
||||||
|
return setIsInserterOpened( true );
|
||||||
|
};
|
||||||
|
|
||||||
|
const toggleTheListviewSidebar = () => {
|
||||||
|
if ( isListviewSidebarOpened ) {
|
||||||
|
return setIsListViewOpened( false );
|
||||||
|
}
|
||||||
|
return setIsListViewOpened( true );
|
||||||
|
};
|
||||||
|
|
||||||
const shortLabelInserter = ! isInserterSidebarOpened
|
const shortLabelInserter = ! isInserterSidebarOpened
|
||||||
? __( 'Add', 'mailpoet' )
|
? __( 'Add', 'mailpoet' )
|
||||||
: __( 'Close', 'mailpoet' );
|
: __( 'Close', 'mailpoet' );
|
||||||
@ -107,7 +122,7 @@ export function Header() {
|
|||||||
variant="primary"
|
variant="primary"
|
||||||
isPressed={ isInserterSidebarOpened }
|
isPressed={ isInserterSidebarOpened }
|
||||||
onMouseDown={ preventDefault }
|
onMouseDown={ preventDefault }
|
||||||
onClick={ toggleInserterSidebar }
|
onClick={ toggleTheInserterSidebar }
|
||||||
disabled={ false }
|
disabled={ false }
|
||||||
icon={ plus }
|
icon={ plus }
|
||||||
label={ shortLabelInserter }
|
label={ shortLabelInserter }
|
||||||
@ -144,7 +159,7 @@ export function Header() {
|
|||||||
className="editor-header-toolbar__document-overview-toggle edit-post-header-toolbar__document-overview-toggle"
|
className="editor-header-toolbar__document-overview-toggle edit-post-header-toolbar__document-overview-toggle"
|
||||||
isPressed={ isListviewSidebarOpened }
|
isPressed={ isListviewSidebarOpened }
|
||||||
onMouseDown={ preventDefault }
|
onMouseDown={ preventDefault }
|
||||||
onClick={ toggleListviewSidebar }
|
onClick={ toggleTheListviewSidebar }
|
||||||
disabled={ false }
|
disabled={ false }
|
||||||
icon={ listView }
|
icon={ listView }
|
||||||
label={ __( 'List view', 'mailpoet' ) }
|
label={ __( 'List view', 'mailpoet' ) }
|
||||||
|
@ -4,7 +4,6 @@ import {
|
|||||||
} from '@wordpress/block-editor';
|
} from '@wordpress/block-editor';
|
||||||
import { useDispatch, useSelect } from '@wordpress/data';
|
import { useDispatch, useSelect } from '@wordpress/data';
|
||||||
import { store as editorStore } from '@wordpress/editor';
|
import { store as editorStore } from '@wordpress/editor';
|
||||||
import { storeName } from '../../store';
|
|
||||||
|
|
||||||
export function InserterSidebar() {
|
export function InserterSidebar() {
|
||||||
const { postContentId, isEditingEmailContent } = useSelect( ( select ) => {
|
const { postContentId, isEditingEmailContent } = useSelect( ( select ) => {
|
||||||
@ -18,7 +17,8 @@ export function InserterSidebar() {
|
|||||||
};
|
};
|
||||||
} );
|
} );
|
||||||
|
|
||||||
const { toggleInserterSidebar } = useDispatch( storeName );
|
// @ts-expect-error missing types.
|
||||||
|
const { setIsInserterOpened } = useDispatch( editorStore );
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="editor-inserter-sidebar">
|
<div className="editor-inserter-sidebar">
|
||||||
@ -30,7 +30,7 @@ export function InserterSidebar() {
|
|||||||
rootClientId={
|
rootClientId={
|
||||||
isEditingEmailContent ? postContentId : null
|
isEditingEmailContent ? postContentId : null
|
||||||
}
|
}
|
||||||
onClose={ toggleInserterSidebar }
|
onClose={ () => setIsInserterOpened( false ) }
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,20 +14,6 @@ export const toggleFeature =
|
|||||||
( { registry } ): unknown =>
|
( { registry } ): unknown =>
|
||||||
registry.dispatch( preferencesStore ).toggle( storeName, feature );
|
registry.dispatch( preferencesStore ).toggle( storeName, feature );
|
||||||
|
|
||||||
export const toggleInserterSidebar =
|
|
||||||
() =>
|
|
||||||
( { registry } ) => {
|
|
||||||
const status = registry.select( editorStore ).isInserterOpened();
|
|
||||||
void registry.dispatch( editorStore ).setIsInserterOpened( ! status );
|
|
||||||
};
|
|
||||||
|
|
||||||
export const toggleListviewSidebar =
|
|
||||||
() =>
|
|
||||||
( { registry } ) => {
|
|
||||||
const status = registry.select( editorStore ).isListViewOpened();
|
|
||||||
void registry.dispatch( editorStore ).setIsListViewOpened( ! status );
|
|
||||||
};
|
|
||||||
|
|
||||||
export const changePreviewDeviceType =
|
export const changePreviewDeviceType =
|
||||||
( deviceType: string ) =>
|
( deviceType: string ) =>
|
||||||
( { registry } ) =>
|
( { registry } ) =>
|
||||||
|
@ -231,18 +231,6 @@ export function getEmailPostId( state: State ): number {
|
|||||||
return state.postId;
|
return state.postId;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const isInserterSidebarOpened = createRegistrySelector(
|
|
||||||
( select ) => () =>
|
|
||||||
// @ts-expect-error isInserterOpened is missing in types.
|
|
||||||
select( editorStore ).isInserterOpened() as boolean
|
|
||||||
);
|
|
||||||
|
|
||||||
export const isListviewSidebarOpened = createRegistrySelector(
|
|
||||||
( select ) => () =>
|
|
||||||
// @ts-expect-error isListViewOpened is missing in types.
|
|
||||||
select( editorStore ).isListViewOpened() as boolean
|
|
||||||
);
|
|
||||||
|
|
||||||
export function getSettingsSidebarActiveTab( state: State ): string {
|
export function getSettingsSidebarActiveTab( state: State ): string {
|
||||||
return state.settingsSidebar.activeTab;
|
return state.settingsSidebar.activeTab;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user