Editor Config

If you first-time use wangEditor, please see Get Started it to learn basic usage.

import { IEditorConfig } from '@wangeditor/editor'

const editorConfig: Partial<IEditorConfig> = {  // TS syntax
// const editorConfig = {                       // JS syntax
    /* editor config */
}

// create editor, or Vue React <Editor> component




 



TIP

You can use editor.getConfig() to checkout editor's default config

placeholder

editorConfig.placeholder = 'Type your text'

readOnly

Default value is false.
You can use editor.enable() and editor.disable() to toggle readOnly. see Editor API.

editorConfig.readOnly = true

autoFocus

Default value is true.

editorConfig.autoFocus = false

scroll

Default value is true. You can scroll editor area.

If you set false, do not set editor-container a fixed height, just set min-height.

editorConfig.scroll = false

TIP

When you need to set false?

maxLength onMaxLength

See demoopen in new window.

import { IDomEditor } from '@wangeditor/editor'

editorConfig.maxLength = 1000
editorConfig.onMaxLength = function (editor: IDomEditor) {   // TS syntax
// editorConfig.onMaxLength = function (editor) {            // JS syntax
    // trigger this when exceed maxlength
}

TIP

If you have no strong demand, do not set maxLength.
Cause it may affect performance when text is too large.

hoverbarKeys

You can use editor.getConfig().hoverbarKeys to checkout default config.

TIP

If you only unwanted hoverbar when select text, set mode: 'simple' when creating editor

Use element type

You can config hoverbar menu keys by element type.

  • You can checkout every element's type by editor.children , see the picture below
  • You can use editor.getAllMenuKeys() to checkout all embedded menu keys

editorConfig.hoverbarKeys = {
    'link': {
        // rewrite link element's hoverbar
        menuKeys: ['editLink', 'unLink', 'viewLink'],
    },
    'image': {
        // clear image element's hoverbar
        menuKeys: [],
    },
    // others...
}

Custom match function

You can also custom a match function instead of use element type.

import { SlateNode, IDomEditor } from '@wangeditor/editor'

editorConfig.hoverbarKeys = {
    'text': {
        match: (editor: IDomEditor, n: SlateNode) => {    // TS syntax
        // match: (editor, n) => {                        // JS syntax
            // match your node exactly
        },
        menuKeys: [ ... ], // custom your menu keys
    },
    // others...
}

You can see source codeopen in new window of all default hoverbar keys config.

onCreated

import { IDomEditor } from '@wangeditor/editor'

editorConfig.onCreated = (editor: IDomEditor) => {   // TS syntax
// editorConfig.onCreated = (editor) => {            // JS syntax
    // editor created
}

onChange

import { IDomEditor } from '@wangeditor/editor'

editorConfig.onChange = (editor: IDomEditor) => {  // TS syntax
// editorConfig.onChange = (editor:) => {             // JS syntax
    // editor's content or selection changed
    console.log('content', editor.children)
}

onDestroyed

You can use editor.destroy() to destroy editor. see API.

import { IDomEditor } from '@wangeditor/editor'

editorConfig.onDestroyed = (editor: IDomEditor) => {  // TS syntax
// editorConfig.onDestroyed = (editor) => {           // JS syntax
    // editor destroyed
}

onFocus

import { IDomEditor } from '@wangeditor/editor'

editorConfig.onFocus = (editor: IDomEditor) => {  // TS syntax
// editorConfig.onFocus = (editor) => {           // JS syntax
    // editor focused
}

onBlur

import { IDomEditor } from '@wangeditor/editor'

editorConfig.onBlur = (editor: IDomEditor) => {  // TS syntax
// editorConfig.onBlur = (editor) => {           // JS syntax
    // editor blur
}

customPaste

You can prevent default paste event, redefine your custom paste logic.

import { IDomEditor } from '@wangeditor/editor'

editorConfig.customPaste = (editor: IDomEditor, event: ClipboardEvent): boolean => {  // TS syntax
// editorConfig.customPaste = (editor, event) => {                                    // JS syntax

    // event is ClipboardEvent type, see https://developer.mozilla.org/zh-CN/docs/Web/API/ClipboardEvent

    // const html = event.clipboardData.getData('text/html') // get paste html
    // const text = event.clipboardData.getData('text/plain') // get paste text
    // const rtf = event.clipboardData.getData('text/rtf') // get paste rtf data (word, wsp...)

    // insert your custom text (sync)
    editor.insertText('xxx')

    // insert your custom text (async)
    setTimeout(() => {
        editor.insertText('yy')
    }, 1000)

    // 1. prevent default paste event.
    event.preventDefault()
    return false

    // 2. continue default paste event.
    // return true
}

customAlert

Redefine your custom editor alert.

import { message } from 'antd'

editorConfig.customAlert = (s: string, t: string) => {   // TS syntax
// editorConfig.customAlert = (s, t) => {                // JS syntax
    switch (t) {
        case 'success':
            message.success(s)
            break
        case 'info':
            message.info(s)
            break
        case 'warning':
            message.warning(s)
            break
        case 'error':
            message.error(s)
            break
        default:
            message.info(s)
            break
    }
}

EXTEND_CONF

Use in third-party plugin, like mention pluginopen in new window.

Last Updated:
Contributors: 王福朋