Skip to content

Popconfirm ​

A simple confirmation dialog of an element click action.

NameCategoryDescriptionTypeDefault
confirmButtonType? StyleConfirm button typeButtonType'primary'
cancelButtonType? StyleCancel button typeButtonType—
hideIcon? StyleWhether to hide iconbooleanfalse
showArrow? StyleWhether to show arrowbooleanfalse
effect? StyleTooltip themeTooltipEffect'dark'
width? SizePop-up widthnumber | string150
iconColor? ColorIcon colorstring'#f90'
disabled? StateWhether disabledbooleanfalse
hideAfter? BehaviorHide delay (ms)number200
placement? BehaviorPopover placementPlacement'bottom'
title? ContentTitlestring—
confirmButtonText? ContentConfirm button textstring'Yes'
cancelButtonText? ContentCancel button textstring'No'
icon? ContentIconstring'question-circle'
confirm? EventTriggered when confirm is clicked(event: MouseEvent) => void—
cancel? EventTriggered when cancel is clicked(event: MouseEvent) => void—
default? SlotElement that triggers Popconfirm—
reference? SlotSame as default—

Basic Usage ​

<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>

Customize ​

Customize button text and icon.

<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 ​

Use placement to set the pop-up position.

<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>

Arrow ​

Set show-arrow to display a pixel-art arrow pointing to the trigger.

<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 ​

Use effect to switch between dark and light themes.

<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 ​

Set hide-icon to hide the 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 ​

Set disabled to prevent the popconfirm from showing.

<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>