Popover.tsx

Popover.tsx

基本信息

  • 类型: React 组件 (shadcn/ui)
  • 路径: ./src/components/ui/popover.tsx

功能描述

气泡卡片组件,用于显示内容的浮动卡片。基于 Radix UI,支持多种对齐方式和动画效果。

导出内容

  • Popover - 气泡卡片根组件
  • PopoverTrigger - 触发器
  • PopoverContent - 内容容器
  • PopoverAnchor - 锚点元素

Props 接口

Popover

属性类型必填默认值说明
openboolean-是否打开
onOpenChange(open: boolean) => void-状态变化回调
...propsReact.ComponentProps<typeof PopoverPrimitive.Root>-Radix Popover 属性

PopoverContent

属性类型必填默认值说明
align`'start' \'center' \'end'`'center'对齐方式
sideOffsetnumber4与触发器的距离
classNamestring-自定义CSS类名
...propsReact.ComponentProps<typeof PopoverPrimitive.Content>-Content属性

PopoverTrigger / PopoverAnchor

属性类型必填默认值说明
...propsReact.ComponentProps<typeof PopoverPrimitive.Trigger/Anchor>-Radix 属性

依赖

  • @radix-ui/react-popover - Radix UI 气泡卡片原语
  • @/lib/utils - 工具函数 (cn)

使用示例

import {
  Popover,
  PopoverContent,
  PopoverTrigger,
} from "@/components/ui/popover";
import { Button } from "@/components/ui/button";

<Popover>
  <PopoverTrigger asChild>
    <Button variant="outline">打开气泡卡片</Button>
  </PopoverTrigger>
  <PopoverContent className="w-80">
    <div className="grid gap-4">
      <div className="space-y-2">
        <h4 className="font-medium leading-none">尺寸</h4>
        <p className="text-sm text-muted-foreground">
          设置物品的宽度和高度。
        </p>
      </div>
      {/* 表单内容 */}
    </div>
  </PopoverContent>
</Popover>

// 对齐方式
<Popover>
  <PopoverTrigger>触发器</PopoverTrigger>
  <PopoverContent align="start" sideOffset={8}>
    左对齐内容
  </PopoverContent>
</Popover>
← 返回目录