Set BlockList layout

[MAILPOET-5688]
This commit is contained in:
Jan Lysý
2023-11-24 18:06:01 +01:00
committed by Rostislav Wolný
parent e1df697ce7
commit aa40d7eb7b
8 changed files with 46 additions and 4 deletions

View File

@ -46,6 +46,7 @@ export function BlockEditor() {
hasFixedToolbar, hasFixedToolbar,
focusMode, focusMode,
layoutStyles, layoutStyles,
layout,
} = useSelect( } = useSelect(
(select) => ({ (select) => ({
isFullscreenActive: select(storeName).isFeatureActive('fullscreenMode'), isFullscreenActive: select(storeName).isFeatureActive('fullscreenMode'),
@ -60,6 +61,7 @@ export function BlockEditor() {
hasFixedToolbar: select(storeName).isFeatureActive('fixedToolbar'), hasFixedToolbar: select(storeName).isFeatureActive('fixedToolbar'),
focusMode: select(storeName).isFeatureActive('focusMode'), focusMode: select(storeName).isFeatureActive('focusMode'),
layoutStyles: select(storeName).getLayoutStyles(), layoutStyles: select(storeName).getLayoutStyles(),
layout: select(storeName).getLayout(),
}), }),
[], [],
); );
@ -164,7 +166,12 @@ export function BlockEditor() {
<BlockTools> <BlockTools>
<WritingFlow> <WritingFlow>
<ObserveTyping> <ObserveTyping>
<BlockList className="is-layout-constrained" /> <BlockList
className="is-layout-constrained"
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore We have an older package of @wordpress/block-editor that doesn't contain the correct type
layout={layout}
/>
</ObserveTyping> </ObserveTyping>
</WritingFlow> </WritingFlow>
</BlockTools> </BlockTools>

View File

@ -1,5 +1,9 @@
import { State } from './types'; import { State } from './types';
import { getEditorSettings, getEmailLayoutStyles } from './settings'; import {
getEditorLayout,
getEditorSettings,
getEmailLayoutStyles,
} from './settings';
export function getInitialState(): State { export function getInitialState(): State {
const searchParams = new URLSearchParams(window.location.search); const searchParams = new URLSearchParams(window.location.search);
@ -14,6 +18,7 @@ export function getInitialState(): State {
postId, postId,
editorSettings: getEditorSettings(), editorSettings: getEditorSettings(),
layoutStyles: getEmailLayoutStyles(), layoutStyles: getEmailLayoutStyles(),
layout: getEditorLayout(),
preview: { preview: {
deviceType: 'Desktop', deviceType: 'Desktop',
toEmail: window.MailPoetEmailEditor.current_wp_user_email, toEmail: window.MailPoetEmailEditor.current_wp_user_email,

View File

@ -84,3 +84,7 @@ export function getPreviewState(state: State): State['preview'] {
export function getLayoutStyles(state: State): State['layoutStyles'] { export function getLayoutStyles(state: State): State['layoutStyles'] {
return state.layoutStyles; return state.layoutStyles;
} }
export function getLayout(state: State): State['layout'] {
return state.layout;
}

View File

@ -1,4 +1,8 @@
import { EmailEditorSettings, EmailLayoutStyles } from './types'; import {
EmailEditorSettings,
EmailLayoutStyles,
EmailEditorLayout,
} from './types';
export function getEditorSettings(): EmailEditorSettings { export function getEditorSettings(): EmailEditorSettings {
return window.MailPoetEmailEditor.editor_settings as EmailEditorSettings; return window.MailPoetEmailEditor.editor_settings as EmailEditorSettings;
@ -7,3 +11,7 @@ export function getEditorSettings(): EmailEditorSettings {
export function getEmailLayoutStyles(): EmailLayoutStyles { export function getEmailLayoutStyles(): EmailLayoutStyles {
return window.MailPoetEmailEditor.email_layout_styles as EmailLayoutStyles; return window.MailPoetEmailEditor.email_layout_styles as EmailLayoutStyles;
} }
export function getEditorLayout(): EmailEditorLayout {
return window.MailPoetEmailEditor.editor_layout as EmailEditorLayout;
}

View File

@ -36,6 +36,11 @@ export type EmailLayoutStyles = {
}; };
}; };
export type EmailEditorLayout = {
type: string;
contentSize: string;
};
export type State = { export type State = {
inserterSidebar: { inserterSidebar: {
isOpened: boolean; isOpened: boolean;
@ -46,6 +51,7 @@ export type State = {
postId: number; postId: number;
editorSettings: EmailEditorSettings; editorSettings: EmailEditorSettings;
layoutStyles: EmailLayoutStyles; layoutStyles: EmailLayoutStyles;
layout: EmailEditorLayout;
preview: { preview: {
deviceType: string; deviceType: string;
toEmail: string; toEmail: string;

View File

@ -5,6 +5,7 @@ interface Window {
api_version: string; api_version: string;
current_wp_user_email: string; current_wp_user_email: string;
editor_settings: unknown; // Can't import type in global.d.ts. Typed in getEditorSettings() in store/settings.ts editor_settings: unknown; // Can't import type in global.d.ts. Typed in getEditorSettings() in store/settings.ts
email_layout_styles: unknown; // Can't import type in global.d.ts. Typed in getEditorSettings() in store/settings.ts email_layout_styles: unknown; // Can't import type in global.d.ts. Typed in getEmailLayoutStyles() in store/settings.ts
editor_layout: unknown; // Can't import type in global.d.ts. Typed in getEmailLayout() in store/settings.ts
}; };
} }

View File

@ -59,6 +59,7 @@ class EmailEditor {
'current_wp_user_email' => esc_js($currentUserEmail), 'current_wp_user_email' => esc_js($currentUserEmail),
'editor_settings' => $this->settingsController->getSettings(), 'editor_settings' => $this->settingsController->getSettings(),
'email_layout_styles' => $this->settingsController->getEmailLayoutStyles(), 'email_layout_styles' => $this->settingsController->getEmailLayoutStyles(),
'editor_layout' => $this->settingsController->getLayout(),
] ]
); );

View File

@ -111,6 +111,16 @@ class SettingsController {
return $settings; return $settings;
} }
/**
* @return array{contentSize: string, layout: string}
*/
public function getLayout(): array {
return [
'contentSize' => self::EMAIL_WIDTH,
'layout' => 'constrained',
];
}
public function getEmailContentStyles(): array { public function getEmailContentStyles(): array {
return self::DEFAULT_EMAIL_CONTENT_STYLES; return self::DEFAULT_EMAIL_CONTENT_STYLES;
} }