
syncfusion-angular-blockeditor
Implement the Syncfusion Angular Block Editor component. Use this skill for block-based editing with advanced formatting, custom menus, event handling, content management, security features, real-time collaborative editing, globalization support, and extensive customization options for Angular applications.
- Installs
- 304
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/syncfusion/angular-ui-components-skills --skill syncfusion-angular-blockeditor- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads syncfusion-angular-blockeditor automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Syncfusion Angular Block Editor Component
Component Overview
The Syncfusion Angular Block Editor is a powerful block-based editor component for Angular applications. It provides a document-centric editing experience similar to modern content management systems, with extensive support for formatting, customization, and advanced features.
Key Capabilities:
- Block Management - Compose documents with various block types (paragraphs, headings, lists, tables, code, images)
- Text Formatting - Bold, italic, underline, strikethrough, colors, highlights, and inline styles
- Advanced Menus - Slash commands, context menus, inline toolbars, and block action menus
- Events & Interactions - Comprehensive event handling for content changes, selection, drag-drop, paste operations
- Content Management - Import/export as JSON, HTML, or Markdown with full serialization control
- Methods - Programmatically add, remove, move, and update blocks with full API access
- Security Features - Built-in HTML sanitization and XSS prevention for safe content
- Collaborative Editing - Real-time multi-user editing powered by Yjs, with user presence, remote cursors, and version history
- Toolbar Configuration - Customizable slash commands and block action menus with grouping
- Templates - Custom templates for blocks, placeholders, and empty states
- Globalization - Multi-language support, RTL languages, and locale-based keyboard shortcuts
- Customizable UI - Themes, CSS variables, responsive sizing, read-only mode, and placeholder text
Quick Navigation Guide
Getting Started
Start here if you're new to Block Editor or need setup instructions.
Read When:
- Installing Node.js v18+ and Angular CLI v14+
- Setting up a new Angular application
- Installing the Syncfusion Block Editor package
- Configuring CSS themes and styles
- Creating your first Block Editor component instance
- Running your Angular application
👉 Getting Started
Core Concepts
Learn the fundamental architecture and data structures.
Read When:
- Understanding block types and their purposes
- Learning about BlockModel and ContentModel
- Grasping how blocks are organized and related
- Understanding different content types within blocks
👉 Core Concepts
Block Management Methods
Programmatically manipulate editor content and structure.
Read When:
- Adding, removing, or moving blocks
- Updating block properties
- Querying block count and data
- Building dynamic document structures
👉 Block Management Methods
Selection and Cursor Methods
Control user selection and cursor positioning.
Read When:
- Setting cursor position programmatically
- Selecting text or blocks
- Implementing text selection features
- Managing ranges and selections
- Execute toolbar actions programmatically (executeToolbarAction)
👉 Selection and Cursor Methods
Utility Methods
Control editor focus, toolbar state, and printing functionality.
Read When:
- Focusing or blurring the editor programmatically
- Enabling or disabling toolbar items dynamically
- Implementing conditional toolbar access
- Printing editor content
- Managing editor state based on user actions
👉 Utility Methods
Configuration Properties
Configure editor styling, security settings, users and labels.
Read When:
- Applying custom CSS classes for theming
- Implementing dark mode or custom themes
- Configuring HTML encoding for security
- Setting up XSS prevention
- Integrating with CSS frameworks (Bootstrap, Tailwind, Material)
- Configuring users for multi-user editing
- Adding user avatars and identification
- Implementing @mentions functionality
- Creating label/tag systems (#tags)
- Setting up project management labels
- Tracking content by user or category
👉 Configuration Properties
Editor Menus
Configure slash commands, context menus, and toolbars.
Read When:
- Customizing the slash command menu (/)
- Adding context menu items
- Configuring block action menus
- Creating inline toolbars
- Adding custom menu items
👉 Editor Menus
Events and Callbacks
Handle user interactions and content changes.
Read When:
- Implementing auto-save functionality
- Validating content changes
- Tracking user interactions
- Responding to selection changes
- Handling paste operations
👉 Events and Callbacks
Formatting and Styles
Apply text formatting and styling.
Read When:
- Making text bold, italic, underlined
- Applying colors and backgrounds
- Using advanced text styles (superscript, code, etc.)
- Formatting block types (headings, quotes, etc.)
- Creating styled content
👉 Formatting and Styles
Data Structures and Lists
Work with list blocks and table structures.
Read When:
- Creating bullet or numbered lists
- Adding checklists with checkboxes
- Building tables with rows and columns
- Creating nested indented content
- Working with toggle/collapsible blocks
👉 Data Structures and Lists
Advanced Features
Explore undo/redo, drag-drop, code blocks, and templates.
Read When:
- Configuring undo/redo stack size
- Customizing drag and drop behavior
- Adding code blocks with syntax highlighting
- Creating custom template blocks
- Building complex document layouts
👉 Advanced Features
Data Export and Import
Convert between formats and persist content.
Read When:
- Exporting editor content as JSON
- Converting to HTML or Markdown
- Importing from JSON or HTML files
- Parsing external HTML content
- Printing documents
- Synchronizing with servers
👉 Data Export and Import
Collaborative Editing
Enable real-time multi-user editing with Yjs and version control.
Read When:
- Getting started with real-time collaboration using y-websocket
- Choosing and configuring a Yjs provider (y-websocket, y-webrtc, Hocuspocus, Liveblocks, PartyKit)
- Setting up a WebSocket server for collaboration
- Displaying user presence, remote cursors, and text selections
- Configuring the current user and active collaborators
- Implementing document version history with snapshots
- Creating, restoring, comparing, exporting, and importing document snapshots
- Handling version history events (snapshotCreated, snapshotRestored)
- Persisting snapshots using IndexedDB or custom storage backends
👉 Collaborative Editing
Keyboard Shortcuts and Globalization
Configure shortcuts and multi-language support.
Read When:
- Customizing keyboard shortcuts
- Setting up platform-specific shortcuts
- Implementing internationalization
- Supporting RTL languages
- Configuring language-specific settings
👉 Keyboard Shortcuts and Globalization
Security and Paste Handling
Secure the editor and manage content pasting.
Read When:
- Enabling HTML sanitization
- Preventing XSS attacks
- Configuring paste cleanup rules
- Managing allowed styles and tags
- Implementing read-only mode
- Validating user input
👉 Security and Paste Handling
Appearance and Customization
Style and customize the editor appearance.
Read When:
- Setting custom width/height
- Applying built-in themes or defining custom themes
- Overriding
--color-sf-*CSS variables - Targeting Block Editor CSS classes (
.e-blockeditor,.e-active,.e-selected,.e-list-item,.e-dropdownbase,.e-table-element) and IDs (#blockeditor_contextmenu,#blockeditor_code-ddl_popup) - Switching between multiple themes at runtime
- Customizing fonts and typography
- Creating responsive editors
- Generating a fully customized theme with Syncfusion Theme Studio
👉 Appearance and Customization
Quick Start Example
1. Install Dependencies
npm install @syncfusion/ej2-angular-blockeditor
2. Create Component
import { Component } from '@angular/core';
import { BlockEditorModule } from '@syncfusion/ej2-angular-blockeditor';
@Component({
selector: 'app-editor',
template: `<ejs-blockeditor [height]="'500px'" />`,
standalone: true,
imports: [BlockEditorModule]
})
export class EditorComponent {}
3. Import CSS
Install the theme package that matches your application. This example uses Material 3:
npm install @syncfusion/ej2-material3-theme
Add the following stylesheet in src/styles.css.
@import '../node_modules/@syncfusion/ej2-material3-theme/styles/blockeditor/index.css';
4. Add to Module/Bootstrap
// app.config.ts
import { importProvidersFrom } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
export const appConfig = {
providers: [
importProvidersFrom(BrowserModule)
]
};
// OR in app.module.ts
@NgModule({
imports: [BlockEditorModule]
})
export class AppModule {}
Common Patterns
Pattern 1: Document Auto-Save
@Component({
selector: 'app-autosave-editor',
template: `
<div>
<span>Status: {{ saveStatus }}</span>
<ejs-blockeditor #editor (blockChanged)="onContentChange()"></ejs-blockeditor>
</div>
`,
standalone: true,
imports: [BlockEditorModule]
})
export class AutosaveEditorComponent {
@ViewChild('editor') editor!: BlockEditorComponent;
public saveStatus = 'Saved';
private saveTimeout: any;
public onContentChange(): void {
this.saveStatus = 'Unsaved';
clearTimeout(this.saveTimeout);
this.saveTimeout = setTimeout(() => {
const content = this.editor.getDataAsJson();
this.saveToServer(content);
}, 1000);
}
private saveToServer(content: any): void {
// Save to backend
this.saveStatus = 'Saved';
}
}
Pattern 2: Formatted Document Export
@Component({
selector: 'app-document-exporter',
template: `
<div>
<button (click)="exportJson()">Export JSON</button>
<button (click)="exportHtml()">Export HTML</button>
<button (click)="exportMarkdown()">Export Markdown</button>
<ejs-blockeditor #editor></ejs-blockeditor>
</div>
`,
standalone: true,
imports: [BlockEditorModule]
})
export class DocumentExporterComponent {
@ViewChild('editor') editor!: BlockEditorComponent;
public exportJson(): void {
const data = this.editor.getDataAsJson();
this.downloadFile(JSON.stringify(data, null, 2), 'document.json', 'application/json');
}
public exportHtml(): void {
const html = this.editor.getDataAsHtml();
this.downloadFile(html, 'document.html', 'text/html');
}
public exportMarkdown(): void {
// Convert to markdown format
const data = this.editor.getDataAsJson();
const markdown = this.convertToMarkdown(data);
this.downloadFile(markdown, 'document.md', 'text/markdown');
}
private downloadFile(content: string, filename: string, type: string): void {
const blob = new Blob([content], { type });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = filename;
link.click();
}
private convertToMarkdown(blocks: any[]): string {
// Implementation details in Data Export and Import reference
return '';
}
}
Troubleshooting Guide
Issue: Editor not displaying
Solution: Ensure CSS is imported in main.ts or global styles
@import '../node_modules/@syncfusion/ej2-base/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-navigations/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-dropdowns/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-angular-blockeditor/styles/material3.css';
Issue: Content not saving
Solution: Use getDataAsJson() method to retrieve content
const content = this.blockEditor.getDataAsJson();
Issue: Events not firing
Solution: Ensure component is standalone and imports are correct
@Component({
standalone: true,
imports: [BlockEditorModule]
})
FAQ
What does the syncfusion-angular-blockeditor skill do?
Implement the Syncfusion Angular Block Editor component. Use this skill for block-based editing with advanced formatting, custom menus, event handling, content management, security features, real-time collaborative editing, globalization support, and extensive customization options for Angular applications.
How do I install syncfusion-angular-blockeditor?
Run npx skills add https://github.com/syncfusion/angular-ui-components-skills --skill syncfusion-angular-blockeditor in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/syncfusion-angular-blockeditor/ (personal) or .claude/skills/syncfusion-angular-blockeditor/ (project).
Which AI agents can use syncfusion-angular-blockeditor?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is syncfusion-angular-blockeditor safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains syncfusion-angular-blockeditor?
It is published by syncfusion in syncfusion/angular-ui-components-skills. It has 304 recorded installs.
More from syncfusion/angular-ui-components-skills
syncfusion-angular-grid
syncfusion/angular-ui-components-skills
Implements Syncfusion Angular Grid component for feature-rich data tables and grids. Use this when working with data display, sorting, filtering, grouping, aggregates, editing, or exporting. This skill covers grid configuration, CRUD operations, virtual scrolling or infinite scrolling, hierarchy grids, state persistence, and advanced data management features for data-intensive applications.
syncfusion-angular-common
syncfusion/angular-ui-components-skills
Common utilities and features for Syncfusion Angular components. Use this skill when the user needs to implement animations, drag-and-drop, state persistence, RTL support, localization, globalization, security, templates, and advanced features for Syncfusion Angular components.
syncfusion-angular-chart
syncfusion/angular-ui-components-skills
Implement Syncfusion Angular Chart component for professional data visualization. Use this when creating or customizing charts such as line, bar, column, area, pie, financial (candlestick, OHLC), scatter, bubble, or stock charts. Supports axes configuration, series binding, legends, tooltips, zooming, real-time updates, technical indicators, themes, export, and accessibility features.
syncfusion-angular-license
syncfusion/angular-ui-components-skills
Open the skill to read its SKILL.md instructions.
syncfusion-angular-themes
syncfusion/angular-ui-components-skills
Use this skill when users need to apply themes, customize appearance, switch dark mode, use CSS variables, configure icons, or modify visual styling for Syncfusion Angular components. Covers icon library, size modes, and Theme Studio integration.
syncfusion-angular-rich-text-editor
syncfusion/angular-ui-components-skills
Open the skill to read its SKILL.md instructions.
Popular frontend & design skills
setup-matt-pocock-skills
mattpocock/skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
frontend-design
anthropics/skills
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
hyperframes-animation
heygen-com/hyperframes
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.
prototype
mattpocock/skills
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
hyperframes-core
heygen-com/hyperframes
The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.
vercel-react-best-practices
vercel-labs/agent-skills
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.