组件/Popover 弹出层

Popover 弹出层

锚定在触发元素旁的轻量浮层

已验证自 0.3.4

用法

基础

示例加载中...

触发与面板

trigger 决定点击或悬停打开,panelBackground 等 panel* 属性控制面板外观。

示例加载中...

后台导航

Tabs 固定一级分区,轻操作放进 TxDropdownMenu,短说明放进 TxPopover,高密度配置放进 TxDrawer。

示例加载中...

最佳实践

  • 只放短说明、紧凑筛选和一两个轻量操作;超过一屏或需要多字段配置时改用 Drawer。
  • reference 内含输入框或自管焦点时设 toggleOnReferenceClick=false,如 TxSearchSelect。
  • 带本地状态的筛选器和小表单保留 keepAliveContent;纯静态说明可以关闭。
  • 选项面板用 maxHeight 或内部滚动,不要让 Popover 盖住视口。
  • 只在几个触发器挨得很近、需要指明归属时开启 showArrow。

API 参考

属性

属性名类型默认值说明
modelValueboolean-是否打开(v-model);省略时为非受控。
disabledbooleanfalse禁止打开,并关闭已打开的面板。
eagerbooleanfalse首次打开前就挂载内容。
placementPopoverPlacement'bottom-start'首选方向。
offsetnumber自动计算与 reference 的间距:无箭头为 6,有箭头为 max(8, arrowSize / 2 + 2)。
widthnumber0面板宽度;0 时与 reference 等宽。
minWidthnumber0最小宽度。
maxWidthnumber360最大宽度。
maxHeightnumber420最大高度,超出后在面板内滚动。
unlimitedHeightbooleanfalse取消高度上限,供自管滚动的面板使用。
referenceFullWidthbooleanfalsereference 容器占满宽度。
referenceClassBaseAnchorClassValue-reference 包装层的额外 class。
showArrowbooleanfalse显示箭头。
arrowSizenumber12箭头尺寸(px)。
trigger'click' | 'hover' | 'manual''click'触发方式;manual 不绑定 reference 交互,开合由 modelValue 决定。
openDelaynumber见 menu 预设(120)悬停打开延迟(ms);不传时由共享延迟服务提供。
closeDelaynumber见 menu 预设(100)悬停关闭延迟(ms);不传时由共享延迟服务提供。
animationBaseAnchorAnimationOptions{ type: 'expand' }透传给 BaseAnchor 的动画配置;各类型使用自己的默认时序。
virtualReferenceBaseAnchorVirtualReference-按任意矩形(如指针位置、选区)定位,取代 reference。
matchReferenceWidthbooleanwidth <= 0width 为 0 时与 reference 等宽;设为 false 则按内容定宽。
keepAliveContentbooleantrue关闭后保留内容及其状态。
toggleOnReferenceClickbooleantrigger === 'click'点击 reference 时切换开合。
panelVariant'solid' | 'dashed' | 'plain''solid'面板边框形态。
panelBackground'pure' | 'mask' | 'blur' | 'glass' | 'refraction''refraction'面板背景。
panelShadow'none' | 'soft' | 'medium''soft'面板阴影。
panelRadiusnumber18面板圆角(px)。
panelPaddingnumber10面板内边距(px)。
panelCardBaseAnchorPanelCardProps-透传给面板卡片的高级配置。
closeOnClickOutsidebooleantrue点击外部时关闭;hover 模式下不生效。
closeOnEscbooleantrue按 Esc 时关闭。

事件

事件名参数说明
open-组件自身打开面板时触发。
close-组件自身关闭面板时触发。
update:modelValueboolean请求变更开合状态时触发,受控与非受控都会派发。

插槽

插槽名参数说明
reference-触发内容,渲染在 reference 包装层内。
default{ side: string }面板内容;side 为最终落位方向。

暴露方法

名称类型说明
updatePosition() => void重新计算定位;virtualReference 的矩形变化后调用。

概述

  • 传 modelValue 时受控,否则内部维护开合。
  • trigger="click" 时点击 reference 切换,点击外部或按 Esc 关闭;hover 时按延迟开合,不响应外部点击。
  • 悬停去往面板的路上由悬停桥与安全三角兜住:穿过 offset 间隙、停在面板内边距上或斜向经过其他悬停触发器,面板都不会关闭或被抢走。

技术实现

  • 基于 TxTooltip(layer="menu")构建,延迟与同层互斥由共享的锚点延迟服务调度。
  • 源码:packages/tuffex/packages/components/src/popover/。
查看源码
packages/tuffex/packages/components/src/popover/index.ts