Syncfusion vue blockeditor
Skill syncfusion/vue-ui-components-skills/skills/syncfusion-vue-blockeditor
This repository contains agent prompts for creating skills and organizing AI agent capabilities.
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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
8.9 KB, 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>