Skip to content

SuggestionPills 建议按钮组

代码示例

基本示例

使用配置式来配置按钮组的内部元素

元素超长会隐藏,会自动显示展开按钮。展开按钮也可以通过 v-model:show-all 控制

目前按钮支持3种类型,分别是:popover, menu 和默认的普通按钮

loading

如果你想自定义弹出容器的边距,使用 :deep(.tr-suggestion-pills__more-wrapper) 选择器

less
:deep(.tr-suggestion-pills__more-wrapper) {
  left: 40px;
}

由于目前弹窗是位于 SuggestionPills 内部,无法使用 mask 来实现右侧超出的按钮渐变。需要手动加上下面的样式

less
:deep(.tr-suggestion-pills__container) {
  &::before {
    content: '';
    position: absolute;
    inset: 0;
    // 背景色需要和容器背景色一致
    background: linear-gradient(to right, rgba(rgb(248, 248, 248), 0) 90%, rgba(rgb(248, 248, 248), 1));
    pointer-events: none;
  }
}

使用插槽(不推荐)

如果是使用默认插槽,TrSuggestionPillsitem-click 事件是无效的。而且无法添加展开收起逻辑

loading

API

SuggestionPillsProps

药丸组件属性配置。

属性类型默认值说明
itemsSuggestionPillItem[]-建议药丸项数据数组
showAllboolean-是否展开全部元素 (v-model)
showAllButtonOn'hover' | 'always''hover'显示"更多"按钮的时机
overflowMode'expand' | 'scroll''expand'控制多余项的展示方式:expand为展开显示,scroll为横向滚动显示
autoScrollOnHoverbooleanfalse鼠标悬停时是否自动滚动到可见区域

SuggestionPillsSlots

药丸组件插槽定义。

插槽名类型说明状态
default() => VNode | VNode[]自定义内容插槽已废弃

SuggestionPillsEmits

药丸组件事件定义。

事件名参数说明
item-clickitem: SuggestionPillItem点击药丸项时触发
click-outsideevent: MouseEvent点击组件外部区域时触发

SuggestionPillButtonProps

药丸按钮属性配置。

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

SuggestionPillButtonSlots

药丸按钮插槽定义。

插槽名类型说明
default() => unknown自定义内容插槽
icon() => unknown自定义图标插槽

Types

SuggestionPillAction

建议药丸动作配置类型:

typescript
type SuggestionPillAction = SuggestionPillPopoverAction | SuggestionPillMenuAction

SuggestionPillPopoverAction

弹出框动作配置:

typescript
{
  type: 'popover'
  props: SuggestionPopoverProps & SuggestionPopoverEventProps
  slots?: Omit<SuggestionPopoverSlots, 'default'>
  events?: SuggestionPopoverEvents // 已废弃,请使用 props 中的 onXXX 事件
}

SuggestionPillMenuAction

下拉菜单动作配置:

typescript
{
  type: 'menu'
  props: DropdownMenuProps & DropdownMenuEventProps
  events?: DropdownMenuEvents // 已废弃,请使用 props 中的 onXXX 事件
}

SuggestionPillBaseItem

建议药丸基础项类型:

typescript
type SuggestionPillBaseItem<T> = {
  id: string
  action?: SuggestionPillAction
} & T

SuggestionPillItem

建议药丸项类型:

typescript
type SuggestionPillItem<T = Record<string, unknown>> = SuggestionPillBaseItem<T> &
  ({ text: string; icon?: VNode | Component } | { text?: string; icon: VNode | Component })