Popover 气泡卡片

基于 reka-ui 的浮层容器,用于承载自定义内容(表单、详情、操作列表等)。

点击或悬浮触发,在目标附近弹出浮层,用于承载自定义内容(表单、详情、操作列表等)。

何时使用

  • 需要在目标附近弹出临时内容时。
  • 内容比 tooltip 更丰富(表单、列表、卡片等)时。

导入

import { Popover, PopoverTrigger, PopoverContent } from "@reglow/reui";

代码演示

基础用法

<script setup lang="ts">
import { ref } from "vue";
import { Popover, PopoverTrigger, PopoverContent, Button } from "@/components/reui";

const open = ref(false);
</script>

<template>
  <Popover v-model:open="open">
    <PopoverTrigger as-child>
      <Button variant="outline">点击打开</Button>
    </PopoverTrigger>
    <PopoverContent class="w-80">
      <div class="grid gap-4">
        <div class="space-y-2">
          <h4 class="font-medium leading-none">尺寸</h4>
          <p class="text-sm text-muted-foreground">设置弹层的尺寸。</p>
        </div>
      </div>
    </PopoverContent>
  </Popover>
</template>

弹出方向

通过 side 控制弹出方向,align 控制对齐方式。

<template>
  <Popover>
    <PopoverTrigger as-child>
      <Button variant="outline">上方弹出</Button>
    </PopoverTrigger>
    <PopoverContent side="top" align="center">
      <p class="text-sm">从上方弹出</p>
    </PopoverContent>
  </Popover>
</template>

表单内容

<template>
  <Popover>
    <PopoverTrigger as-child>
      <Button variant="outline">设置宽度</Button>
    </PopoverTrigger>
    <PopoverContent class="w-80">
      <div class="grid gap-4">
        <div class="space-y-2">
          <h4 class="font-medium leading-none">宽度</h4>
          <p class="text-sm text-muted-foreground">设置元素的宽度。</p>
        </div>
        <div class="grid gap-2">
          <Input placeholder="100px" />
          <Button size="sm">应用</Button>
        </div>
      </div>
    </PopoverContent>
  </Popover>
</template>

API

Popover Props

参数说明类型默认值
open是否展开(v-model:open)booleanfalse
defaultOpen默认是否展开booleanfalse
modal是否模态booleanfalse

PopoverTrigger Props

参数说明类型默认值
as-child是否将 props 透传给子元素booleanfalse

PopoverContent Props

参数说明类型默认值
side弹出方向"top" | "right" | "bottom" | "left""bottom"
align对齐方式"start" | "center" | "end""center"
sideOffset侧边偏移(px)number4
alignOffset对齐偏移(px)number0
class附加类名string-

组件组成

组件说明
Popover根容器(reka-ui PopoverRoot props)
PopoverTrigger触发器,支持 as-child
PopoverContent内容面板,自动设置最小宽度为触发器宽度