diff --git a/packages/js/email-editor/src/components/template-select/select-modal.tsx b/packages/js/email-editor/src/components/template-select/select-modal.tsx
index e6b41535c4..89475e1c10 100644
--- a/packages/js/email-editor/src/components/template-select/select-modal.tsx
+++ b/packages/js/email-editor/src/components/template-select/select-modal.tsx
@@ -1,4 +1,4 @@
-
+import { useState } from '@wordpress/element';
import { store as editorStore } from '@wordpress/editor';
import { dispatch } from '@wordpress/data';
import {
@@ -15,12 +15,39 @@ import { TemplateCategoriesListSidebar } from './template-categories-list-sideba
const BLANK_TEMPLATE = 'email-general';
-export function SelectTemplateModal( {
- onSelectCallback,
- closeCallback = null,
- previewContent = '',
+function SelectTemplateBody( {
+ initialCategory,
+ templateCategories,
+ templates,
+ handleTemplateSelection,
} ) {
- const [ templates ] = usePreviewTemplates( previewContent );
+ const [ selectedCategory, setSelectedCategory ] = useState(
+ initialCategory?.name
+ );
+
+ return (
+
+
+
+
+
+ );
+}
+
+export function SelectTemplateModal( {
+ onSelectCallback,
+ closeCallback = null,
+ previewContent = '',
+ } ) {
+ const [ templates ] = usePreviewTemplates( previewContent );
const hasTemplates = templates?.length > 0;
@@ -49,44 +76,43 @@ export function SelectTemplateModal( {
handleTemplateSelection( blankTemplate );
};
- const dummyTemplateCategories = [
- {
- name: 'recent',
- label: 'Recent'
- },
- {
- name: 'basic',
- label: 'Basic'
- }
- ];
-
- const onClickCategory = () => {}
+ const dummyTemplateCategories = [
+ {
+ name: 'recent',
+ label: 'Recent',
+ },
+ {
+ name: 'basic',
+ label: 'Basic',
+ },
+ ];
return (
- closeCallback ? closeCallback() : handleCloseWithoutSelection()
- }
+ title={ __( 'Select a template', 'mailpoet' ) }
+ onRequestClose={ () =>
+ closeCallback ? closeCallback() : handleCloseWithoutSelection()
+ }
isFullScreen
>
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
);
}
diff --git a/packages/js/email-editor/src/components/template-select/template-list.tsx b/packages/js/email-editor/src/components/template-select/template-list.tsx
index 0e39c4f3ac..af56f87ef3 100644
--- a/packages/js/email-editor/src/components/template-select/template-list.tsx
+++ b/packages/js/email-editor/src/components/template-select/template-list.tsx
@@ -1,67 +1,83 @@
+import { useMemo } from '@wordpress/element';
// @ts-expect-error No types available for this component
import { BlockPreview } from '@wordpress/block-editor';
import {
- __experimentalHStack as HStack, // eslint-disable-line
+ __experimentalHStack as HStack, // eslint-disable-line
} from '@wordpress/components';
+import { __ } from '@wordpress/i18n';
import { Async } from './async';
-export function TemplateList({templates, onTemplateSelection}) {
+function TemplateListBox( { templates, onTemplateSelection } ) {
+ return (
+
+ { templates.map( ( template ) => (
+
+
{
+ onTemplateSelection( template );
+ } }
+ onKeyPress={ ( event ) => {
+ if ( event.key === 'Enter' || event.key === ' ' ) {
+ onTemplateSelection( template );
+ }
+ } }
+ >
+
+ { __( 'rendering template', 'mailpoet' ) }
+
+ }
+ >
+
- return (
-
-
- {templates.map((template) => (
-
-
{
- onTemplateSelection(template);
- }}
- onKeyPress={(event) => {
- if (
- event.key === 'Enter' ||
- event.key === ' '
- ) {
- onTemplateSelection(template);
- }
- }}
- >
-
rendering template
- }
- >
-
-
-
-
- {
- template.template.title.rendered
- }
-
-
-
-
-
- ))}
-
-
- );
+
+
+ { template.template.title.rendered }
+
+
+
+
+
+ ) ) }
+
+ );
+}
+
+export function TemplateList( {
+ templates,
+ onTemplateSelection,
+ selectedCategory,
+} ) {
+ const filteredTemplates = useMemo(
+ () =>
+ templates.filter(
+ ( template ) => template.category === selectedCategory
+ ),
+ [ selectedCategory, templates ]
+ );
+
+ return (
+
+
+
+ );
}
diff --git a/packages/js/email-editor/src/hooks/use-preview-templates.ts b/packages/js/email-editor/src/hooks/use-preview-templates.ts
index 2132bbf80a..4b4251abb8 100644
--- a/packages/js/email-editor/src/hooks/use-preview-templates.ts
+++ b/packages/js/email-editor/src/hooks/use-preview-templates.ts
@@ -103,6 +103,7 @@ export function usePreviewTemplates(
? contentPatternBlocksGeneral
: contentPatternBlocks,
template,
+ category: 'basic', // TODO: This will be updated once template category is implemented
};
} ),
];
diff --git a/packages/js/email-editor/src/store/types.ts b/packages/js/email-editor/src/store/types.ts
index c032145f9d..801a914f0c 100644
--- a/packages/js/email-editor/src/store/types.ts
+++ b/packages/js/email-editor/src/store/types.ts
@@ -228,8 +228,11 @@ export type TemplatePreview = {
previewContentParsed: BlockInstance[];
emailParsed: BlockInstance[];
template: EmailTemplatePreview;
+ category?: TemplateCategory;
};
+export type TemplateCategory = 'recent' | 'basic';
+
export type Feature =
| 'fullscreenMode'
| 'showIconLabels'