diff --git a/packages/koenig-lexical/demo/DemoApp.jsx b/packages/koenig-lexical/demo/DemoApp.jsx index 382289fd0..fec670ecb 100644 --- a/packages/koenig-lexical/demo/DemoApp.jsx +++ b/packages/koenig-lexical/demo/DemoApp.jsx @@ -5,7 +5,6 @@ import FloatingButton from './components/FloatingButton'; import InitialContentToggle from './components/InitialContentToggle'; import LockIcon from './assets/icons/kg-lock.svg?react'; import React, {useState} from 'react'; -import ReplacementStringsPlugin from '../src/plugins/ReplacementStringsPlugin'; import Sidebar from './components/Sidebar'; import TitleTextBox from './components/TitleTextBox'; import Watermark from './components/Watermark'; @@ -16,9 +15,10 @@ import emailContent from './content/email-content.json'; import minimalContent from './content/minimal-content.json'; import {$getRoot, $isDecoratorNode} from 'lexical'; import { - BASIC_NODES, BASIC_TRANSFORMERS, EMAIL_NODES, EMAIL_TRANSFORMERS, - KoenigComposableEditor, KoenigComposer, KoenigEditor, ListPlugin, MINIMAL_NODES, - MINIMAL_TRANSFORMERS, RestrictContentPlugin, TKCountPlugin, WordCountPlugin + BASIC_NODES, BASIC_TRANSFORMERS, EMAIL_NODES, + KoenigComposableEditor, KoenigComposer, KoenigEditor, KoenigEmailEditor, + MINIMAL_NODES, MINIMAL_TRANSFORMERS, RestrictContentPlugin, + TKCountPlugin, WordCountPlugin } from '../src'; import {defaultHeaders as defaultUnsplashHeaders} from './utils/unsplashConfig'; import {fetchEmbed} from './utils/fetchEmbed'; @@ -159,17 +159,13 @@ function DemoEditor({editorType, registerAPI, cursorDidExitAtTop, darkMode, setW ); } else if (editorType === 'email') { return ( - - - - + ); } diff --git a/packages/koenig-lexical/src/components/KoenigEmailEditor.jsx b/packages/koenig-lexical/src/components/KoenigEmailEditor.jsx new file mode 100644 index 000000000..a3eeaffe0 --- /dev/null +++ b/packages/koenig-lexical/src/components/KoenigEmailEditor.jsx @@ -0,0 +1,31 @@ +import '../styles/index.css'; +import HorizontalRulePlugin from '../plugins/HorizontalRulePlugin'; +import KoenigComposableEditor from './KoenigComposableEditor'; +import React from 'react'; +import ReplacementStringsPlugin from '../plugins/ReplacementStringsPlugin'; +import {ButtonPlugin} from '../plugins/ButtonPlugin'; +import {CalloutPlugin} from '../plugins/CalloutPlugin'; +import {EMAIL_TRANSFORMERS} from '../plugins/MarkdownShortcutPlugin'; +import {ListPlugin} from '@lexical/react/LexicalListPlugin'; + +const KoenigEmailEditor = ({ + children, + ...props +}) => { + return ( + + + + + + + {children} + + ); +}; + +export default KoenigEmailEditor; diff --git a/packages/koenig-lexical/src/index.js b/packages/koenig-lexical/src/index.js index f5ee8ec65..a30fec012 100644 --- a/packages/koenig-lexical/src/index.js +++ b/packages/koenig-lexical/src/index.js @@ -4,6 +4,7 @@ import KoenigCardWrapper from './components/KoenigCardWrapper'; import KoenigComposableEditor from './components/KoenigComposableEditor'; import KoenigComposer from './components/KoenigComposer'; import KoenigEditor from './components/KoenigEditor'; +import KoenigEmailEditor from './components/KoenigEmailEditor'; import KoenigNestedComposer from './components/KoenigNestedComposer'; /* Plugins */ @@ -64,6 +65,7 @@ export { KoenigComposableEditor, KoenigComposer, KoenigEditor, + KoenigEmailEditor, KoenigNestedComposer, KoenigCardWrapper, diff --git a/packages/koenig-lexical/src/nodes/EmailNodes.js b/packages/koenig-lexical/src/nodes/EmailNodes.js index 1f1d0126b..e9f7d6708 100644 --- a/packages/koenig-lexical/src/nodes/EmailNodes.js +++ b/packages/koenig-lexical/src/nodes/EmailNodes.js @@ -10,6 +10,8 @@ import {LinkNode} from '@lexical/link'; import {ListItemNode, ListNode} from '@lexical/list'; import {AsideNode} from './AsideNode'; +import {ButtonNode} from './ButtonNode'; +import {CalloutNode} from './CalloutNode'; import {HorizontalRuleNode} from './HorizontalRuleNode'; const EMAIL_NODES = [ @@ -23,6 +25,8 @@ const EMAIL_NODES = [ ListNode, ListItemNode, LinkNode, + ButtonNode, + CalloutNode, HorizontalRuleNode ]; diff --git a/packages/koenig-lexical/test/e2e/editors/email-editor.test.js b/packages/koenig-lexical/test/e2e/editors/email-editor.test.js index c7b233ce0..c0e811989 100644 --- a/packages/koenig-lexical/test/e2e/editors/email-editor.test.js +++ b/packages/koenig-lexical/test/e2e/editors/email-editor.test.js @@ -93,7 +93,7 @@ test.describe('Koenig Editor with email template nodes', async function () { test('can create horizontal rules with --- shortcut', async function () { await focusEditor(page); - await page.keyboard.type('--- '); + await page.keyboard.type('---'); await assertHTML(page, html`