项目正在快速迭代中,API 与视觉细节可能随版本调整,请勿用于生产环境。

EbChatWidget 浮动挂件 ​

网页右下角常驻的助手入口:收起时只有一颗悬浮球,点开是面板。窄屏自动换成底部抽屉(EbDrawer direction="btt"),桌面端是自持的浮层(自带焦点圈闭与滚动锁)。

本页组件在独立包 @wil-works/evoke-chat 里,安装与注册见 Chatbot 对话窗口顶部说明。

窗体形态的另外四种不需要新组件——全屏页、侧边抽屉、对话框内嵌、移动端抽屉,用 EbAiConsole 配 EbDrawer / EbDialog 组合即可,见下方「组合配方」。

右下角的悬浮球是真实挂件(演示区内;用 mobile-mode=panel 让窄视口下也保持浮层形态)

用法 ​

导出名为 EbChatWidget。v-model 管开合;内容完全由你放——常见就是一颗 EbChatbot 或 EbAiConsole:

vue
<eb-chat-widget v-model="open" title="智能助手" :badge="unread" disclaimer="…">
  <eb-chatbot v-model="messages" height="100%" @send="onSend" />
</eb-chat-widget>

合规声明门 ​

给了 disclaimer 就先显示同意页,同意后才渲染内容,并抛 consent(让你持久化)。default-consented 可直接跳过(比如已存过同意记录)。同意按钮可用 #disclaimer-actions 替换——动作要自己接,组件把 accept 作为 slot prop 交出:

vue
<eb-chat-widget :disclaimer="text">
  <template #disclaimer-actions="{ accept }">
    <a href="/terms" target="_blank">查看条款</a>
    <eb-button type="primary" @click="accept">同意并开始</eb-button>
  </template>
</eb-chat-widget>

组合配方(其余窗体形态) ​

形态怎么拼
全屏页路由页直接放 EbAiConsole
侧边抽屉EbDrawer + EbAiConsole(direction="rtl")
移动端抽屉EbDrawer direction="btt" + EbAiConsole
对话框内嵌EbDialog(fullscreen 可全屏) + EbAiConsole
右下角挂件本组件

API ​

ChatWidget Props

参数说明类型默认值
modelValue展开态,配合 v-modelbooleanfalse
title面板标题(可用 #title 插槽替换)string—
iconlauncher 图标名stringcustomer-service
launcherTooltiplauncher 悬浮提示;展开时自动换成「收起」string—
badgelauncher 角标,null 不显示numbernull
placement贴边位置bottom-right | bottom-leftbottom-right
width / height桌面浮层尺寸string | number380 / 560
mobileMode窄屏形态:drawer 底部抽屉 / panel 仍用浮层drawer | paneldrawer
drawerSize移动端抽屉高度string | number80%
disclaimer合规声明文本;给了就先显示同意门string—
defaultConsented初始即视为已同意(例如已存过记录)booleanfalse
appendToBody挂到 body 以脱离宿主 overflow / z-index 上下文;关掉则内联渲染,两个形态都跟随booleantrue

ChatWidget Events

参数说明类型默认值
update:modelValue开合意图(launcher 点击、关闭钮)(open: boolean) => void—
open / close受控值真的翻转时触发(状态迁移,不是意图)() => void—
consent同意声明门() => void—

ChatWidget Slots

参数说明类型默认值
default面板内容(未同意声明时不渲染)——
title面板标题区—title 文本
launcher整块替换悬浮球;作用域 { open, toggle }—EbFloatButton
disclaimer-actions同意门按钮;作用域 { accept },动作需自行接—同意并开始

两处刻意的取舍 ​

  • 点击面板外部不关闭。聊天面板里常有需要选中复制的内容,误触关闭的代价比多按一次 Esc 大;Esc 与关闭钮都能关。
  • open / close 表示状态迁移而非意图。受控方不接 update:modelValue 时面板不会展开——要「点了就开」就接 v-model。