Skip to main content

syncfusion-javascript-rich-text-editor

Implements the Syncfusion Rich Text Editor and Markdown Editor using TypeScript (ej2-richtexteditor). Supports both HTML (WYSIWYG) and Markdown modes via editorMode on a single RichTextEditor class. Use this skill for toolbar setup, image/media/table handling, inline or iframe editing, AI assistant, smart editing, import/export, and all content editor scenarios.

Source facts

Repository
syncfusion/javascript-ui-controls-skills
Last source activity
July 28, 2026 at 05:08
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
20 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
syncfusion-javascript-rich-text-editor
description
Implements the Syncfusion Rich Text Editor and Markdown Editor using TypeScript (ej2-richtexteditor). Supports both HTML (WYSIWYG) and Markdown modes via editorMode on a single RichTextEditor class. Use this skill for toolbar setup, image/media/table handling, inline or iframe editing, AI assistant, smart editing, import/export, and all content editor scenarios.
metadata
{"author":"Syncfusion Inc","version":"34.1.29","category":"File Viewers & Editors"}
# Implementing Syncfusion Rich Text Editor A unified skill for implementing the Syncfusion Rich Text Editor (RTE) and Markdown Editor in TypeScript. Both editors share the **same `RichTextEditor` class and `@syncfusion/ej2-richtexteditor` package** — the only difference is the `editorMode` property and which feature module you inject. ## Editor Mode Decision Guide > **User wants WYSIWYG / formatted HTML content?** → Use `editorMode: 'HTML'` (default), inject `HtmlEditor` > > **User wants markdown / plain text with preview?** → Use `editorMode: 'Markdown'`, inject `MarkdownEditor` > > **User wants iframe isolation?** → Add `iframeSettings: { enable: true }` to HTML mode > > **User wants inline editing?** → Add `inlineMode: { enable: true }` to HTML mode ## When to Use This Skill Use this skill when the user needs to: - **Build a rich text / WYSIWYG editor** for blog posts, comments, emails, CMS content - **Build a markdown editor** with live preview for documentation, note-taking, developer tools - **Customize the toolbar** — add/remove items, change layout, add custom tools - **Insert media** — images, audio, video, file browser integration - **Enable smart editing** — @mention, slash commands, emoji picker, mail merge - **Add AI writing assistance** to the editor - **Handle editor value** — get/set HTML or markdown content, auto-save, character count - **Work with tables and links** inside the editor - **Configure validation** — form integration, XHTML validation, read-only mode - **Style or theme** the editor — fonts, colors, CSS customization - **Import/export content** — Word/PDF/Markdown import and export **Trigger keywords:** RichTextEditor, MarkdownEditor, editorMode, WYSIWYG, rich text, markdown editor, content editor, text formatting, ej2-richtexteditor, HtmlEditor, inline editor, iframe editor --- ## Navigation Guide ### Getting Started 📄 **Read:** [references/getting-started.md](references/getting-started.md) - Package installation and CSS imports - Module injection (HtmlEditor vs MarkdownEditor) - HTML editor initialization - Markdown editor initialization - Toolbar configuration at setup - Feature module reference table ### Editor Modes & Types 📄 **Read:** [references/editor-modes.md](references/editor-modes.md) - HTML mode vs Markdown mode decision - Iframe editor (style-isolated editing) - Inline editing (toolbar appears on selection) - Resizable editor - editorMode API and switching modes ### Toolbar Configuration 📄 **Read:** [references/toolbar.md](references/toolbar.md) - Toolbar types: Expand, MultiRow, Scrollable, Popup - Toolbar position: Top / Bottom - Sticky (floating) toolbar - Quick toolbars for image, link, table, audio, video, text - Separator usage (`|` and `-`) ### Tools (Built-in & Custom) 📄 **Read:** [references/tools.md](references/tools.md) - Complete built-in tools catalog (text, font, alignment, lists, etc.) - Adding and removing toolbar tools - Creating custom toolbar commands - Enabling / disabling toolbar items programmatically - Text formatting, styling, fullscreen tools ### Editor Value (Get/Set/Save) 📄 **Read:** [references/editor-value.md](references/editor-value.md) - Set initial content with `value` / `valueTemplate` - Get HTML content: `editor.value`, `getHtml()`, `getText()` - Change events and auto-save (`saveInterval`) - Character count and max length - Encoded HTML output (`enableHtmlEncode`) - Source code editing (SourceCode tool) - Placeholder text ### Insert Image & Media 📄 **Read:** [references/insert-image-media.md](references/insert-image-media.md) - Insert images (URL, upload, drag-drop) - Insert audio and video - File browser integration - Upload configuration (server upload, rename) - Image/media quick toolbar ### Tables 📄 **Read:** [references/table.md](references/table.md) - Creating tables (toolbar, programmatic) - Table quick toolbar operations - Cell properties, alignment, merge/split - Table style customization ### Links 📄 **Read:** [references/link.md](references/link.md) - Insert hyperlinks - Link quick toolbar (Open, Edit, Remove) - Auto-linking URLs ### Smart Editing 📄 **Read:** [references/smart-editing.md](references/smart-editing.md) - @mention integration - Slash menu / slash commands - Emoji picker - Mail merge with dynamic placeholders ### AI Assistant 📄 **Read:** [references/ai-assistant.md](references/ai-assistant.md) - Integrating AI assistant panel - AI assistant properties and configuration - Customizing AI suggestions UI ### Markdown-Specific Features 📄 **Read:** [references/markdown-features.md](references/markdown-features.md) - Supported markdown syntax (headings, lists, bold, italic, etc.) - Custom markdown format definitions - Live markdown preview (split-pane) - Insert image / table in markdown mode - Mention support in markdown mode - Toolbar items specific to markdown ### Content Operations 📄 **Read:** [references/content-operations.md](references/content-operations.md) - Code block support - Text selection API - Clipboard cleanup - Paste cleanup (Word paste, HTML cleanup) - Undo/redo configuration - Execute command programmatically (`executeCommand`) - Enter key configuration (P, BR, DIV) ### Import & Export 📄 **Read:** [references/import-export.md](references/import-export.md) - Import Word/HTML documents into the editor - Export editor content to Word / PDF - Markdown import/export ### Style & Appearance 📄 **Read:** [references/style-appearance.md](references/style-appearance.md) - CSS customization and `cssClass` - Style encapsulation - Adding custom Google fonts - Spell and grammar check - Globalization (RTL, localization) - Tailwind CSS preflight workarounds - Default font configuration - Placeholder text styling ### Validation & Security 📄 **Read:** [references/validation-security.md](references/validation-security.md) - HTML form integration with RTE - XHTML validation and XSS prevention - Read-only mode ### How-To Scenarios 📄 **Read:** [references/how-to.md](references/how-to.md) - RTE inside Dialog - RTE inside Tab control - File attachment support - File size restrictions - Format code blocks - Custom shortcut keys - Save functionality - Cursor position control - Rename images on server ### Properties Reference 📄 **Read:** [references/properties.md](references/properties.md) - Complete list of all `RichTextEditor` properties with types, defaults, and descriptions - Sub-type details for complex model properties (toolbar, image, table, font, color, AI assistant, etc.) - Code examples for key properties ### Methods Reference 📄 **Read:** [references/methods.md](references/methods.md) - Complete list of all public instance methods with signatures and return types - Parameter details and usage examples - `executeCommand` with full `CommandName` enum and argument interfaces - Static `Inject` method and available module list ### Events Reference 📄 **Read:** [references/events.md](references/events.md) - Complete list of all component events with types and event argument details - Lifecycle events: `created`, `destroyed`, `blur`, `focus`, `change` - Upload events for images, audio, and video - AI Assistant events: `aiAssistantPromptRequest`, `aiAssistantToolbarClick`, `aiAssistantStopRespondingClick` - Toolbar, popup, dialog, quick toolbar, resize, and selection events --- ## Quick Start ```bash npm install @syncfusion/ej2-angular-richtexteditor ``` ```bash npm install @syncfusion/ej2-tailwind3-theme ``` ### HTML Editor (WYSIWYG) ```css /* styles.css */ @import '../node_modules/@syncfusion/ej2-tailwind3-theme/styles/rich-text-editor/index.css'; ``` ```typescript import { RichTextEditor, Toolbar, Link, Image, HtmlEditor, QuickToolbar } from '@syncfusion/ej2-richtexteditor'; RichTextEditor.Inject(Toolbar, Link, Image, HtmlEditor, QuickToolbar); const editor = new RichTextEditor({ toolbarSettings: { items: ['Bold', 'Italic', 'Underline', '|', 'Formats', 'Alignments', 'OrderedList', 'UnorderedList', '|', 'CreateLink', 'Image', '|', 'SourceCode', 'Undo', 'Redo'] }, value: '<p>Start editing here...</p>' }); editor.appendTo('#editor'); ``` ```html <!-- index.html --> <div id="editor"></div> ``` ### Markdown Editor ```typescript import { RichTextEditor, Toolbar, Link, Image, MarkdownEditor } from '@syncfusion/ej2-richtexteditor'; RichTextEditor.Inject(Toolbar, Link, Image, MarkdownEditor); const editor = new RichTextEditor({ editorMode: 'Markdown', toolbarSettings: { items: ['Bold', 'Italic', 'StrikeThrough', 'InlineCode', '|', 'Formats', 'Blockquote', '|', 'OrderedList', 'UnorderedList', 'CreateLink', 'Image', 'CreateTable', '|', 'Undo', 'Redo'] }, value: '## Hello Markdown\n\nStart writing here...' }); editor.appendTo('#editor'); ``` --- ## Common Patterns ### Get editor value on form submit ```typescript const form = document.getElementById('myForm'); form.addEventListener('submit', () => { const content = editor.value; // HTML string or Markdown string console.log(content); }); ``` ### Auto-save content ```typescript const editor = new RichTextEditor({ saveInterval: 5000, // save every 5 seconds of inactivity change: (args) => { localStorage.setItem('draft', args.value); } }); ``` ### Read-only mode ```typescript editor.readonly = true; ``` ### Programmatically set content ```typescript editor.value = '<p>New content</p>'; editor.dataBind(); // apply the change ``` --- ## Module Injection Reference | Feature | Module to Inject | |---------|-----------------| | HTML editing | `HtmlEditor` | | Markdown editing | `MarkdownEditor` | | Toolbar | `Toolbar` | | Hyperlinks | `Link` | | Images | `Image` | | Audio | `Audio` | | Video | `Video` | | Tables | `Table` | | Quick toolbars | `QuickToolbar` | | Paste cleanup | `PasteCleanup` | | Character count | `Count` | | Resize | `Resize` | | File manager | `FileManager` | | Mention | `Mention` (from ej2-dropdowns) | > Inject only what you need — each module adds to bundle size. Always call `RichTextEditor.Inject(...)` before `new RichTextEditor(...)`.
View on GitHub