Syncfusion vue blockeditor
Skill syncfusion/vue-ui-components-skills/skills/syncfusion-vue-blockeditor
Implement Syncfusion Vue BlockEditor component for block-based content editing with rich text, images, tables, and interactive blocks. Use this skill ALWAYS when user needs block editor, notion-style editor, content blocks, rich text blocks, document editor with blocks, modular content editor, or mentions @syncfusion/ej2-vue-blockeditor, BlockEditor, block-based editing, content management editor, collaborative editing, real-time collaboration. Covers all 14 block types, 5 content types, drag-and-drop, menus, methods, events, real-time collaborative editing with Yjs support, user presence and remote cursors, version history, and Composition API patterns.From its SKILL.md
npx -y skills add syncfusion/vue-ui-components-skills --skill syncfusion-vue-blockeditorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.9 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it
Syncfusion Vue BlockEditor Component
The Syncfusion Vue BlockEditor is a powerful block-based content editor that enables users to create, format, and organize content using various block types. This skill guides you through implementing the BlockEditor component with Vue 3 Composition API, covering all 14 block types, menus, methods, events, and advanced features.
Component Overview
The Vue BlockEditor component provides:
- 14 Block Types: Paragraph, Heading (1-4), BulletList, NumberedList, Checklist, Code, Image, Table, Quote, Callout, Divider, Collapsible (Paragraph/Heading), Template
- 5 Content Types: Text, Link, Mention, Label, InlineCode
- 4 Interactive Menus: Slash Command (
/), Context Menu (right-click), Block Action Menu, Inline Toolbar - Drag & Drop: Visual block reordering with handles
- 20+ Methods: Block CRUD, selection, data export (JSON/HTML), formatting
- 14 Events: Block changes, drag/drop, paste, file upload, focus/blur
- Advanced Features: Syntax highlighting, image upload, table editing, undo/redo, keyboard shortcuts
Documentation and Navigation Guide
Getting Started & Installation
π Read: references/getting-started.md
- Vue 3 + Vite project setup
- Package installation (
@syncfusion/ej2-vue-blockeditor) - CSS theme imports (Material, Bootstrap, Fluent, Tailwind)
- Component registration with Composition API (
<script setup>) - Basic BlockEditor initialization
- First render example
Block Types & Structure
π Read: references/block-types.md
- All 14 block types with examples
- BlockModel structure (id, blockType, content, properties)
- Block properties configuration
- Custom templates
- Indent and CSS class customization
- Block type selection guide
Inline Content & Formatting
π Read: references/inline-content.md
- ContentModel structure
- 5 content types (Text, Link, Mention, Label, InlineCode)
- Inline styles (bold, italic, underline, strikethrough, color, background)
- Link properties and URL configuration
- User mentions with
usersarray - Label/tag configuration with trigger characters
- Inline formatting examples
Typography Blocks
π Read: references/typography-blocks.md
- Paragraph blocks with placeholders
- Heading blocks (levels 1-4)
- Heading level selection
- Divider blocks for section separation
- Placeholder customization
- Typography examples
List Blocks
π Read: references/list-blocks.md
- BulletList (unordered lists)
- NumberedList (ordered lists)
- Checklist with
isCheckedstate - List placeholder customization
- Interactive checklist examples
Nested & Collapsible Blocks
π Read: references/nested-blocks.md
- Children property for nested structures
- Parent-child relationships (
parentId) - CollapsibleHeading (levels 1-4)
- CollapsibleParagraph blocks
isExpandedstate configuration- Quote blocks with multi-line support
- Callout blocks for important information
- Nested block examples
Special Blocks (Code, Image, Table)
π Read: references/special-blocks.md
- Code blocks with syntax highlighting
codeBlockSettings(languages, defaultLanguage)- Image blocks with upload and resize
imageBlockSettings(saveUrl, path, maxFileSize, allowedTypes)- Table blocks with rows, columns, cells
- Table properties (width, enableHeader, enableRowNumbers)
- Table resizing and multiple row/column selection
- File upload configuration
Editor Menus & Toolbars
π Read: references/editor-menus.md
- Slash Command Menu (
/trigger) -commandMenuSettings - Context Menu (right-click) -
contextMenuSettings - Block Action Menu (hover drag handle) -
blockActionMenuSettings - Inline Toolbar (text selection) -
inlineToolbarSettings - Transform settings for block type conversion
- Font color and background color settings
- Menu customization and events
- Custom menu items
Methods & Programmatic Control
π Read: references/methods-api.md
- Block management:
addBlock(),removeBlock(),updateBlock(),moveBlock() - Selection:
setSelection(),getSelectedBlocks(),selectBlock(),selectAllBlocks() - Cursor:
setCursorPosition(),focusIn(),focusOut() - Data export:
getDataAsJson(),getDataAsHtml(),print() - Formatting:
executeToolbarAction(),enableToolbarItems(),disableToolbarItems() - HTML parsing:
parseHtmlToBlocks(),renderBlocksFromJson() - Method usage with Composition API patterns
Events & Lifecycle
π Read: references/events-lifecycle.md
- Block change events:
blockChanged - Drag & drop:
blockDragStart,blockDragging,blockDropped - Focus events:
focus,blur - Selection:
selectionChanged - Paste:
beforePasteCleanup,afterPasteCleanup - File upload:
beforeFileUpload,fileUploading,fileUploadSuccess,fileUploadFailed - Created event
- Event handler patterns with Composition API
Features & Configuration
π Read: references/features-configuration.md
- Drag and drop:
enableDragAndDrop - Paste cleanup:
pasteCleanupSettings(deniedTags, keepFormat, plainText) - Undo/redo:
undoRedoStack(default: 30) - Keyboard shortcuts:
keyConfigcustomization - Read-only mode:
readOnly - Persistence:
enablePersistence - Custom styling:
cssClass - Height/width:
height,width
Collaborative Editing
π Read: references/collaborative-editing.md
- Real-time collaborative editing with Yjs CRDT framework
- Yjs providers (y-websocket, y-webrtc, y-indexeddb, Hocuspocus, Liveblocks, PartyKit)
collaborationSettingsconfiguration (adapter, provider, enableAwareness, versionHistory)- User presence and remote cursors with
enableAwareness - User identification with
usersarray andcurrentUserId - Version history with snapshots, restore, compare, export/import
- Collaboration-aware undo/redo operations
- Best practices for development and production deployment
Accessibility & Globalization
π Read: references/accessibility-globalization.md
- WCAG 2.2 and Section 508 compliance
- WAI-ARIA attributes
- Keyboard navigation shortcuts
- Localization:
localeproperty with L10n - RTL support:
enableRtl - Security:
enableHtmlSanitizer(XSS prevention),enableHtmlEncode - Localization examples (German, Arabic, etc.)
Quick Start Example
Install the theme package that matches your application. This example uses Tailwind 3:
npm install @syncfusion/ej2-tailwind3-theme
<template>
<div>
<ejs-blockeditor
ref="blockEditor"
:blocks="blocks"
:users="users"
:enableDragAndDrop="true"
@blockChanged="onBlockChanged"
/>
</div>
</template>
<script setup>
import { ref } from 'vue';
import { BlockEditorComponent as EjsBlockeditor, ContentType } from '@syncfusion/ej2-vue-blockeditor';
const blockEditor = ref(null);
const blocks = [
{
id: 'heading-1',
blockType: 'Heading',
properties: { level: 1 },
content: [
{ contentType: ContentType.Text, content: 'Welcome to BlockEditor' }
]
},
{
id: 'intro-para',
blockType: 'Paragraph',
content: [
{ contentType: ContentType.Text, content: 'Create content using blocks. Type ' },
{ contentType: ContentType.Text, content: '/', properties: { styles: { bold: true } } },
{ contentType: ContentType.Text, content: ' for commands.' }
]
},
{
id: 'checklist-1',
blockType: 'Checklist',
properties: { isChecked: false },
content: [
{ contentType: ContentType.Text, content: 'Complete the tutorial' }
]
}
];
const users = [
{ id: 'user1', user: 'John Doe' },
{ id: 'user2', user: 'Jane Smith' }
];
const onBlockChanged = (args) => {
console.log('Block changed:', args.changes);
};
</script>
<style>
@import '../node_modules/@syncfusion/ej2-tailwind3-theme/styles/blockeditor/index.css';
</style>
What ships with it: 13 files
235.8 KB alongside SKILL.md
references/
- accessibility-globalization.md24.0 KB
- block-types.md17.2 KB
- collaborative-editing.md16.7 KB
- editor-menus.md23.8 KB
- events-lifecycle.md18.2 KB
- features-configuration.md18.7 KB
- getting-started.md9.6 KB
- inline-content.md19.5 KB
- list-blocks.md13.7 KB
- methods-api.md25.0 KB
- nested-blocks.md16.4 KB
- special-blocks.md19.7 KB
- typography-blocks.md13.4 KB