游乐游手机版
首页/前端开发/文章详情

TinyRobot SuggestionPills紧凑型建议按钮组组件新版功能特性解析

时间:2026-06-15 06:58
TinyRobot的SuggestionPills组件为AI对话界面提供紧凑的胶囊按钮建议选项,支持横向排列、溢出时展开或滚动模式,可自定义文本与图标,具备自动滚动、点击外部收起及与下拉菜单组合使用的能力。

TinyRobot SuggestionPills:紧凑的建议按钮组组件

在 AI 对话界面中,用户常常需要在入口处快速选取预设的操作或提问方向。传统的下拉菜单或长列表虽然能容纳大量选项,但交互路径长,不够直观。而采用 Pill 风格的建议按钮,则提供了一种更紧凑、更直观的方案——将建议项以胶囊按钮的形式排列展示,用户一目了然,点击即达。

TinyRobot SuggestionPills紧凑的建议按钮组组件

SuggestionPills 正是 TinyRobot 为这一场景提供的组件,它具备以下核心能力:

  • 紧凑排列:多个建议项以胶囊按钮横向排列,节省纵向空间。
  • 溢出处理:当建议项超出容器宽度时,支持展开(expand)或横向滚动(scroll)两种模式。
  • 展开/收起:通过 showAll 控制是否展开全部项,并支持 hover 和 always 两种"更多"按钮显示时机。
  • 自动滚动:支持鼠标悬停或点击时自动滚动到可见区域。
  • 自定义按钮:每个药丸按钮可自定义文本和图标,还支持与 DropdownMenu 组合使用。
  • 点击外部:提供 click-outside 事件,方便实现点击组件外部收起等交互。

基本用法:带 items 的 SuggestionPills

最简单的用法是在 SuggestionPills 内直接放置多个 SuggestionPillButton,每个按钮对应一个建议项。


SuggestionPillItem 类型定义了每个按钮的数据结构,texticon 至少需要提供一个:

type SuggestionPillItem =
  | { text: string; icon?: VNode | Component }
  | { text?: string; icon: VNode | Component }

showAll 切换:展开收起折叠项

当建议项较多时,SuggestionPills 默认只显示容器宽度范围内的项,超出的部分被折叠。通过 v-model:showAll 可以控制是否展开全部项。


showAllButtonOn 属性控制"更多"按钮的显示时机:

  • 'hover'(默认):鼠标悬停在组件上时才显示"更多"按钮。
  • 'always':始终显示"更多"按钮。

  

overflowMode:展开 vs 滚动

overflowMode 决定了当建议项超出容器宽度时的展示方式,有两个选项:

  • 'expand'(默认):超出的项折叠隐藏,通过 showAll 展开。
  • 'scroll':所有项横向排列,通过横向滚动查看。

自定义药丸按钮:带图标

SuggestionPillButton 支持通过 icon 插槽或 item.icon 属性添加图标。下面演示使用 icon 插槽自定义图标:


也可以通过 item 属性直接传入图标组件,无需使用插槽:


autoScrollOn 行为

autoScrollOn 属性控制药丸按钮在溢出容器时是否自动滚动到可见区域,支持两种触发方式:

  • 'mouseenter':鼠标悬停到按钮上时自动滚动。
  • 'click':点击按钮时自动滚动。

配合 DropdownMenu 实现更多选项

在实际场景中,药丸按钮点击后可能需要展示更多操作选项。这时可以将 TrSuggestionPillButton 作为 TrDropdownMenu 的触发器,实现"按钮点击 → 弹出下拉菜单"的交互。


API 参考

SuggestionPillsProps

属性类型必填默认值说明
showAllboolean-是否展开全部元素,支持 v-model
showAllButtonOn'hover' | 'always''hover'显示"更多"按钮的时机
overflowMode'expand' | 'scroll''expand'控制多余项的展示方式:expand 为展开显示,scroll 为横向滚动显示
autoScrollOn'mouseenter' | 'click'-鼠标悬停或点击时是否自动滚动到可见区域

SuggestionPillButtonProps

属性类型必填说明
itemSuggestionPillItem药丸项数据

Slots

SuggestionPills 插槽:

插槽名说明
default自定义内容插槽

SuggestionPillButton 插槽:

插槽名说明
default自定义内容插槽
icon自定义图标插槽

Events

事件名参数说明
click-outsideevent: MouseEvent点击组件外部区域时触发

Types

type SuggestionPillItem =
  | { text: string; icon?: VNode | Component }
  | { text?: string; icon: VNode | Component }
来源:https://juejin.cn/post/7649985520412459054
上一篇TinyRobot Container优雅构建AI对话容器 下一篇Vue&ViteConf 2026 将于7月18日在上海举办 尤雨溪现场发表主题演讲
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
checked表单属性与CSS变量实现换肤原理
前端开发 · 2026-07-02

checked表单属性与CSS变量实现换肤原理

先聊一个有意思的现象:不需要编写任何 JavaScript,仅靠一个 :checked 伪类,就能驱动整个主题切换系统。听起来很神奇,但原理其实并不复杂——核心在于,:checked 是浏览器原生状态的实时镜像,而不是 JS 模拟出来的开关。 用户点击 ,或者用键盘空格键选中它,状态更新的那一刻,C

HTML meta标签页面定时跳转实现
前端开发 · 2026-07-02

HTML meta标签页面定时跳转实现

说到前端开发中最简洁的页面跳转方式,meta http-equiv= "refresh " 绝对算得上一个经典方案。不过别看它结构简单,格式上稍有疏忽,页面就可能原地卡死,或者直接跳到一个错误地址。下面把几个最容易踩坑的细节彻底讲清楚,帮你避开这些常见陷阱。 使用 http-equiv= "refresh

Cypress跨测试用例状态传递的不推荐但可选方案
前端开发 · 2026-07-02

Cypress跨测试用例状态传递的不推荐但可选方案

Cypress 默认的设计哲学很干脆:每个测试用例都必须是独立小王国,谁也不靠谁。这意味着 it() 执行前,浏览器上下文会被“一键还原”——页面状态、LocalStorage、Cookies 统统清空,强制维护测试隔离。这一规则让很多新手头疼:明明前一个测试已经创建了员工,后一个测试怎么就没法直接

全面深度解析HTML主体main标签唯一性原则与使用规范
前端开发 · 2026-07-02

全面深度解析HTML主体main标签唯一性原则与使用规范

在进行前端无障碍审计时,不少开发者会遇到一个奇怪的场景:浏览器不报错,但Lighthouse却直接标红“duplicate-main”。这其实是语义层与渲染层之间的根本差异。 为什么浏览器不报错但 Lighthouse 直接标红 duplicate-main 关键原因就在于:`main` 是语义锚点

HTML main标签在文档结构中的唯一性详解
前端开发 · 2026-07-02

HTML main标签在文档结构中的唯一性详解

先做一个快速检测:打开你最近开发的一个页面,按下 Ctrl+F 搜索 。如果搜索结果里出现2个以上,那这篇文章建议你认真读完。 本期要聊的主题,是HTML标签中一个看似简单、实际极易踩坑的核心知识点:main标签的唯一性。很多开发者知道这个标签的存在,但真正写到项目里,尤其是用了React、Vue这