element-plus-vue-mention
v1.0.5
Published
A mention feature based on Element-Plus
Maintainers
Readme
前言
本组件是在基础之上,原来的提及不支持自定义回显(input,textarea),换成了div[contenteditable=true],
所以支持之前提及的属性和插槽,不支持input的属性和插槽
多给了一个zoom,用于在VueFlow等可以缩放的组件中定位使用
原项目地址:https://element-plus.org/zh-CN/component/mention.html 参考文档
源码地址:https://gitee.com/misszhou/element-plus-vue-mention
有bug请联系 [email protected]
使用
import install from 'element-plus-vue-mention'
const app = createApp(App)
install(app) <element-plus-vue-mention
@mousedown.stop
@touchstart.stop
@click.stop
popper-class="textarea-input-mention-popper"
:zoom="1" v-model="content" :options="options" :inputStyle="{ color: 'red' }" :prefix="['@']"
:containerStyle="{ height: '100%' }">
</element-plus-vue-mention>例子
<script setup lang="ts">
import { ref } from 'vue'
const options = [
{ label: '流程开始', value: 'VARIABLE_NODE_ID', disabled: true, icon: 'src/assets/images/workflowStart.svg' },
{ label: '使用者ID', value: 'userId', parent: 'VARIABLE_NODE_ID'},
{ label: '文件链接', value: 'userFiles', parent: 'VARIABLE_NODE_ID' },
{ label: '许女士', value: 'xu', disabled: true, icon: 'src/assets/images/workflowStart.svg' },
{ label: '周天天', value: 'erzi', parent: 'xu' },
{ label: '我是单个的', value: 'single' },
]
const zoom = ref(1);
const content = ref("{{$VARIABLE_NODE_ID.userId$}}你111说{{$对对对d$}} {{$fdd$}} {{$3444$}}你{{$dddsd$}}是{{$VARIABLE_NODE_ID.userFiles$}}谁:? {{$VARIABLE_NODE_ID.userId$}} 没有这回事啊")
</script>
<template>
<div class="mention">
<element-plus-vue-mention v-model="content" :options="options" :inputStyle="{ color: 'red' }" :prefix="['@']" :zoom="zoom"
:containerStyle="{ height: '100%' }">
<!-- 支持el-mention除input(input换成了div+contenteditable)的其他属性和插槽 -->
</element-plus-vue-mention>
</div>
<div class="content">
{{ content }}
</div>
</template>
<style scoped>
.content {
text-align: left;
margin-top: 20px;
height: 200px;
width: 500px;
padding: 4px;
overflow-y: auto;
border-radius: 4px;
border: 1px solid rgb(232, 235, 240);
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
filter: drop-shadow(0 0 2em #42b883aa);
}
</style>
效果

