syncfusion/vue-ui-components-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-a…

First seen Apr 16, 2026

Installation

$ npx skills add syncfusion/vue-ui-components-skills --skill syncfusion-vue-blockeditor

Summary

  • 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.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from syncfusion/vue-ui-components-skills · top by installs.

npx skills add syncfusion/vue-ui-components-skills

Browse all from syncfusion/vue-ui-components-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Default branch master
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version34.1.29
More metadata
author
Syncfusion Inc
version
34.1.29

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 9,111 B
  • docs SUMMARY.md 696 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 52 installs

SKILL.md

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](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](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](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 users array
  • Label/tag configuration with trigger characters
  • Inline formatting examples

Typography Blocks

📄 Read: [references/typography-blocks.md](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](references/list-blocks.md)

  • BulletList (unordered lists)
  • NumberedList (ordered lists)
  • Checklist with isChecked state
  • List placeholder customization
  • Interactive checklist examples

Nested & Collapsible Blocks

📄 Read: [references/nested-blocks.md](references/nested-blocks.md)

  • Children property for nested structures
  • Parent-child relationships (parentId)
  • CollapsibleHeading (levels 1-4)
  • CollapsibleParagraph blocks
  • isExpanded state 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](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](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](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](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](references/features-configuration.md)

  • Drag and drop: enableDragAndDrop
  • Paste cleanup: pasteCleanupSettings (deniedTags, keepFormat, plainText)
  • Undo/redo: undoRedoStack (default: 30)
  • Keyboard shortcuts: keyConfig customization
  • Read-only mode: readOnly
  • Persistence: enablePersistence
  • Custom styling: cssClass
  • Height/width: height, width

Collaborative Editing

📄 Read: [references/collaborative-editing.md](references/collaborative-editing.md)

  • Real-time collaborative editing with Yjs CRDT framework
  • Yjs providers (y-websocket, y-webrtc, y-indexeddb, Hocuspocus, Liveblocks, PartyKit)
  • collaborationSettings configuration (adapter, provider, enableAwareness, versionHistory)
  • User presence and remote cursors with enableAwareness
  • User identification with users array and currentUserId
  • 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](references/accessibility-globalization.md)

  • WCAG 2.2 and Section 508 compliance
  • WAI-ARIA attributes
  • Keyboard navigation shortcuts
  • Localization: locale property 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>