Right now there is no stable version available for this library. We're just working on it. 🚀

Popover

Popover 是一种非模态对话框,会悬浮在其触发元素周围。它通常用于在某个元素之上叠加展示额外的丰富内容。

StorybookSourceRecipe Source

Anatomy

NexUI 导出了 4 个 Popover 相关组件:

  • Popover: 用于显示 Popover 的根组件。
  • PopoverTrigger: 用于触发 Popover 打开的组件。
  • PopoverContent: 用于显示 Popover 内容的组件。
  • PopoverClose: 用于触发 Popover 关闭的组件。
import { Popover, PopoverTrigger, PopoverContent, PopoverClose, } from '@nex-ui/react'

Usage

Colors

Placements

Offset

PopoverContent 的 offset 属性可以设置 Popover 偏移量,包括主轴和交叉轴的偏移。设置 false 可禁用偏移。

Flip

PopoverContent 的 flip 属性可以更改 Popover 的位置,使其保持在视图中。默认值为 { mainAxis: true, crossAxis: true }。设置 false 可禁用翻转行为。

Shift

PopoverContent 的 shift 属性可以移动 Popover 以保持其在视图中。默认为 true。

With Form

Popover 会处理其弹窗内容内的焦点。这意味着您可以将 Popover 与表单元素搭配使用,完全没有问题。当 Popover 关闭时,焦点会返回至触发元素。

Controlled

Open: No

API

Popover Props

PropTypeDefaultDescription
childrenReactNode-通常是 PopoverTrigger 和 PopoverContent 组件。
openboolean-控制 Popover 的打开状态。(受控)
defaultOpenboolean-Popover 的默认打开状态。(非受控)
onOpenChange(open: boolean) => void-当 Popover 打开/关闭时触发回调函数。
onClose() => void-当 Popover 关闭时触发回调函数。

PopoverContent Props

PopoverContent 继承 as (默认为 'div') 的 Props。

PropTypeDefaultDescription
childrenReactNode-Popover 的内容。
refRef-用于转发 Popover 根元素的 ref。
classNameClassValue-用于 Popover 根元素的 className。
asElementType'div'用于 Popover 根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。
sxInterpolation-用于 Popover 根元素的 sx 属性。
classNamesPartial<Record<Slots, ClassValue>>-用于 Popover 各个部分的 classNames。
slotPropsPartial<Record<Slots, ComponentProps>>-用于 Popover 各个部分的 slotProps。
color'default'|'blue'|'orange'|'yellow'|'cyan'|'red'|'green'|'pink'|'purple'|'gray''default'Popover 的颜色。
maxWidthCSSObject["maxWidth"]300Popover 的最大宽度。
widthCSSObject["width"]-Popover 的宽度。
minWidthCSSObject["minWidth"]-Popover 的最小宽度。
radius'none'|'sm'|'md'|'lg''md'Popover 的圆角大小。
containerHTMLElement | null|() => HTMLElement | nulldocument.body放置 Portal 的容器元素。
placement'top'|'top-start'|'top-end'|'bottom'|'bottom-start'|'bottom-end'|'left'|'left-start'|'left-end'|'right'|'right-start'|'right-end''bottom'Popover 出现的位置。
motionPropsHTMLMotionProps-自定义 Popover 动画的属性。
offsetfalse|number|{ mainAxis?: number; crossAxis?: number }5设置 Popover 的偏移量,或禁用偏移。
flipfalse|{ mainAxis?: boolean; crossAxis?: boolean }{ mainAxis: true, crossAxis: true }更改 Popover 的位置,使其保持在视图中。
shiftbooleantrue移动 Popover 元素以使其保持在可见范围内。
keepMountedbooleanfalse即使 Popover 未打开也保持其挂载状态。
closeOnEscapebooleantrue按下 Escape 键时是否关闭 Popover 。
closeOnDetachedbooleantrue当触发元素被完全遮挡时是否关闭 Popover 。
disableAnimationbooleanfalse是否禁用 Popover 的动画效果。
loopFocusbooleantrue是否在 Popover 内循环焦点。
restoreFocusbooleantrue是否在 Popover 关闭时恢复焦点到之前聚焦的元素。
autoFocusbooleanfalse是否在 Popover 打开时自动聚焦到第一个可聚焦元素。
size'sm'|'md'|'lg''md'Popover 的大小。

PopoverContent Slots

Slot NameClass NameDefault ComponentDescription
paper.nui-popover-content-paper'div'Popover 的内容容器。

PopoverTrigger Props

PropTypeDefaultDescription
childrenReactElement-触发元素,点击时显示 Popover 。
closeOnClickbooleanfalse点击触发元素时是否关闭 Popover 。

PopoverClose Props

PropTypeDefaultDescription
childrenReactElement-触发元素,点击时关闭 Popover 。
最后更新时间