Editor 极简编辑器

可得到html标签内容,且能插入自定义元素,含有提及和字数统计功能的极简编辑器。

该组件基于 TiptapElTooltip 封装而来。

基础用法

使用v-model双向绑定html值。使用enter事件来处理什么(比如发送消息之类的)

按住ctrl+entershift+enter回车换行。

禁用

使用disabled属性控制编辑器是否可以编辑

禁用

resize 缩放

使用resize属性来缩放高度,如需缩放宽度,重写 css resize: both即可

宽高

使用style样式来直接控制编辑器的宽高

提及

使用prefix属性来修改唤醒词。使用options属性来注入提及列表的值

options也可以是返回Promise实例的函数。

自定义提及列表

使用header label footer插槽,分别对列表的头部,内容,尾部进行自定义 ui。

如何你想完全自定义提及列表,建议使用content插槽

插入

使用 组件实例的insertHtml方法来插入文本 html 自定义元素

插入任意内容(component 插件)

Tiptap 是不支持插入任意原生标签的,且支持的元素(比如 h1 和 p)也不支持编写内联样式。于是 editor 内置了component 插件用来解决此问题,使用姿势和 vue 中的component类似

component 插件相比 vue 中的component有一些限制。1:子内容只能最为组件的默认插槽,其他插槽不支持 2:属性只能传递字符串,引用类型不支持 3:上述问题可以通过把复杂的业务 UI 封装到一个 Vue 组件中(ui 的交互全在该组件中编写),最后用component渲染即可

字数统计及限制

使用maxlength属性来控制最大输入字数

0 / 50

表情包插入

配合ElEmoji表情包来插入图片

可以使用setImage方法

视频插入

使用setVideo方法来插入视频,参数参考 ISetVideOptions

工具栏配置

使用toolbar-list来配置需要展示的工具

上传图片时,可以根据配置onChange回调拿到相关参数,调用后端接口获取真实 url,然后进行回显

转换为纯文本(html2text)

Tiptap 支持自定义标签来渲染任意 ui,但是调用实例 getText 方法并不会返回文本,下面这个案例是把自定义标签解析成对应的值传给后端

html 内容可以用来回显编辑器的内容,有时需要解析 html 变成纯文本给后端,可以使用getTextContent方法即可,回车换行符 br 默认替换成了\n

极简编辑器

使用ElEditorToolbar组件来渲染工具栏,使用character-count插槽来渲染文字统计。

编辑器内部的样式可以按照不同业务需求自定义样式

如果当做富文本编辑器时,记得使用disable-enter-emit属性来关闭其内部回车发送事件

字符统计: 0

API

属性

属性名说明类型默认值
v-model绑定的 htmlstring-
maxlength最大输入长度string-
options提及选项列表array|function-
prefix触发字段的前缀。 字符串长度必须且只能为 1string@
extensionstiptap 扩展包array-
disabled是否禁用booleanfalse
disable-enter-emit是否禁用回车 enter 事件booleanfalse
border编辑器是否有边框booleantrue

Methods

方法名说明参数
insertHtml插入文本或 htmlFunction
resetHtml重置文本或 htmlFunction
getHtml获取 html 值-
getText获取 纯文本-
setImage插入图片Function

Slots

插槽名说明参数
prepend编辑器前置插槽-
append编辑器后置插槽-
header提及列表头插槽-
label提及列表 label 插槽Object
footer提及列表尾部插槽-
content完全自定义提及列表插槽Object

ElEditorToolbar 属性

属性名说明类型默认值
editor编辑器实例Object-
toolbar-list工具栏列表Array-
configure工具栏配置Object-

源代码

组件样式文档

贡献者