Skip to content

Popconfirm 气泡确认框

点击某个元素弹出一个简单的气泡确认框。

名称分类说明类型默认值
confirmButtonType? 风格确认按钮类型ButtonType'primary'
cancelButtonType? 风格取消按钮类型ButtonType
hideIcon? 风格是否隐藏图标booleanfalse
showArrow? 风格是否显示箭头booleanfalse
effect? 风格主题TooltipEffect'dark'
width? 尺寸弹框宽度number | string150
iconColor? 颜色图标颜色string'#f90'
disabled? 状态是否禁用booleanfalse
hideAfter? 行为隐藏延迟(毫秒)number200
placement? 行为弹出位置Placement'bottom'
title? 内容标题string
confirmButtonText? 内容确认按钮文字string'Yes'
cancelButtonText? 内容取消按钮文字string'No'
icon? 内容图标string'question-circle'
confirm? 事件点击确认按钮时触发(event: MouseEvent) => void
cancel? 事件点击取消按钮时触发(event: MouseEvent) => void
default? 插槽触发 Popconfirm 的元素
reference? 插槽同 default

基础用法

<template>
  <px-popconfirm title="Are you sure to delete this?" @confirm="onConfirm" @cancel="onCancel">
    <px-button type="danger">Delete</px-button>
  </px-popconfirm>
</template>

<script setup lang="ts">
import { PxMessage } from 'sakana-element';

const onConfirm = () => {
  PxMessage.success('Deleted!');
};

const onCancel = () => {
  PxMessage.info('Cancelled');
};
</script>

自定义内容

可以自定义按钮文字和图标。

<template>
  <px-popconfirm
    title="This will permanently delete the file. Continue?"
    confirm-button-text="Yes"
    cancel-button-text="No"
    icon="warning-box"
    icon-color="#f56c6c"
    @confirm="onConfirm"
  >
    <px-button type="danger">Delete File</px-button>
  </px-popconfirm>
</template>

<script setup lang="ts">
import { PxMessage } from 'sakana-element';

const onConfirm = () => {
  PxMessage.success('File deleted!');
};
</script>

弹出位置

使用 placement 属性设置弹出位置。

<template>
  <div style="display: flex; gap: 12px; flex-wrap: wrap;">
    <px-popconfirm title="Top placement" placement="top" @confirm="onConfirm">
      <px-button>Top</px-button>
    </px-popconfirm>
    <px-popconfirm title="Bottom placement" placement="bottom" @confirm="onConfirm">
      <px-button>Bottom</px-button>
    </px-popconfirm>
    <px-popconfirm title="Left placement" placement="left" @confirm="onConfirm">
      <px-button>Left</px-button>
    </px-popconfirm>
    <px-popconfirm title="Right placement" placement="right" @confirm="onConfirm">
      <px-button>Right</px-button>
    </px-popconfirm>
  </div>
</template>

<script setup lang="ts">
import { PxMessage } from 'sakana-element';

const onConfirm = () => {
  PxMessage.success('Confirmed!');
};
</script>

箭头

设置 show-arrow 属性显示指向触发元素的像素风格箭头。

<template>
  <div style="display: flex; gap: 12px;">
    <px-popconfirm title="With arrow" show-arrow @confirm="onConfirm">
      <px-button>Show Arrow</px-button>
    </px-popconfirm>
    <px-popconfirm title="Without arrow" @confirm="onConfirm">
      <px-button>No Arrow</px-button>
    </px-popconfirm>
  </div>
</template>

<script setup lang="ts">
import { PxMessage } from 'sakana-element';

const onConfirm = () => {
  PxMessage.success('Confirmed!');
};
</script>

主题

使用 effect 属性切换深色和浅色主题。

<template>
  <div style="display: flex; gap: 12px;">
    <px-popconfirm title="Dark effect" effect="dark" @confirm="onConfirm">
      <px-button>Dark</px-button>
    </px-popconfirm>
    <px-popconfirm title="Light effect" effect="light" @confirm="onConfirm">
      <px-button>Light</px-button>
    </px-popconfirm>
  </div>
</template>

<script setup lang="ts">
import { PxMessage } from 'sakana-element';

const onConfirm = () => {
  PxMessage.success('Confirmed!');
};
</script>

隐藏图标

设置 hide-icon 属性来隐藏图标。

<template>
  <px-popconfirm title="Confirm action?" hide-icon @confirm="onConfirm">
    <px-button>Action</px-button>
  </px-popconfirm>
</template>

<script setup lang="ts">
import { PxMessage } from 'sakana-element';

const onConfirm = () => {
  PxMessage.success('Action confirmed!');
};
</script>

禁用

设置 disabled 属性阻止气泡确认框显示。

<template>
  <px-popconfirm title="Are you sure?" disabled @confirm="onConfirm">
    <px-button>Disabled Popconfirm</px-button>
  </px-popconfirm>
</template>

<script setup lang="ts">
import { PxMessage } from 'sakana-element';

const onConfirm = () => {
  PxMessage.success('Confirmed!');
};
</script>