2020-10-16 11:14:45 +08:00
|
|
|
<template>
|
|
|
|
<el-popper
|
|
|
|
v-model:visible="visible"
|
|
|
|
:trigger="['click']"
|
|
|
|
effect="light"
|
2020-11-06 11:42:31 +08:00
|
|
|
popper-class="el-popover"
|
2020-12-03 22:43:18 +08:00
|
|
|
append-to-body
|
2020-10-16 11:14:45 +08:00
|
|
|
>
|
|
|
|
<div class="el-popconfirm">
|
|
|
|
<p class="el-popconfirm__main">
|
|
|
|
<i
|
|
|
|
v-if="!hideIcon"
|
|
|
|
:class="icon"
|
|
|
|
class="el-popconfirm__icon"
|
|
|
|
:style="{color: iconColor}"
|
|
|
|
></i>
|
|
|
|
{{ title }}
|
|
|
|
</p>
|
|
|
|
<div class="el-popconfirm__action">
|
|
|
|
<el-button
|
|
|
|
size="mini"
|
|
|
|
:type="cancelButtonType"
|
|
|
|
@click="cancel"
|
|
|
|
>
|
2020-11-18 22:20:36 +08:00
|
|
|
{{ cancelButtonText_ }}
|
2020-10-16 11:14:45 +08:00
|
|
|
</el-button>
|
|
|
|
<el-button
|
|
|
|
size="mini"
|
|
|
|
:type="confirmButtonType"
|
|
|
|
@click="confirm"
|
|
|
|
>
|
2020-11-18 22:20:36 +08:00
|
|
|
{{ confirmButtonText_ }}
|
2020-10-16 11:14:45 +08:00
|
|
|
</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<template #trigger>
|
|
|
|
<slot name="reference"></slot>
|
|
|
|
</template>
|
|
|
|
</el-popper>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts">
|
2020-11-18 22:20:36 +08:00
|
|
|
import { defineComponent, ref, computed } from 'vue'
|
2020-11-20 20:24:16 +08:00
|
|
|
import ElButton from '@element-plus/button'
|
|
|
|
import ElPopper from '@element-plus/popper'
|
2020-10-16 11:14:45 +08:00
|
|
|
import { t } from '../../locale'
|
2020-11-02 11:05:08 +08:00
|
|
|
|
2020-10-16 11:14:45 +08:00
|
|
|
export default defineComponent({
|
|
|
|
name: 'ElPopconfirm',
|
2020-11-02 11:05:08 +08:00
|
|
|
|
2020-10-16 11:14:45 +08:00
|
|
|
components: {
|
2020-11-02 11:05:08 +08:00
|
|
|
ElButton,
|
2020-10-16 11:14:45 +08:00
|
|
|
ElPopper,
|
|
|
|
},
|
2020-11-02 11:05:08 +08:00
|
|
|
|
2020-10-16 11:14:45 +08:00
|
|
|
props: {
|
|
|
|
title: {
|
|
|
|
type: String,
|
|
|
|
},
|
|
|
|
confirmButtonText: {
|
|
|
|
type: String,
|
|
|
|
},
|
|
|
|
cancelButtonText: {
|
|
|
|
type: String,
|
|
|
|
},
|
|
|
|
confirmButtonType: {
|
|
|
|
type: String,
|
|
|
|
default: 'primary',
|
|
|
|
},
|
|
|
|
cancelButtonType: {
|
|
|
|
type: String,
|
|
|
|
default: 'text',
|
|
|
|
},
|
|
|
|
icon: {
|
|
|
|
type: String,
|
|
|
|
default: 'el-icon-question',
|
|
|
|
},
|
|
|
|
iconColor: {
|
|
|
|
type: String,
|
|
|
|
default: '#f90',
|
|
|
|
},
|
|
|
|
hideIcon: {
|
|
|
|
type: Boolean,
|
|
|
|
default: false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
emits:['confirm','cancel'],
|
|
|
|
setup(props,{ emit }){
|
|
|
|
const visible = ref(false)
|
|
|
|
const confirm = () => {
|
|
|
|
visible.value = false
|
|
|
|
emit('confirm')
|
|
|
|
}
|
|
|
|
const cancel = () => {
|
|
|
|
visible.value = false
|
|
|
|
emit('cancel')
|
|
|
|
}
|
2020-11-18 22:20:36 +08:00
|
|
|
const confirmButtonText_ = computed(() => {
|
|
|
|
return props.confirmButtonText || t('el.popconfirm.confirmButtonText')
|
|
|
|
})
|
|
|
|
const cancelButtonText_ = computed(() => {
|
|
|
|
return props.cancelButtonText || t('el.popconfirm.cancelButtonText')
|
|
|
|
})
|
2020-10-16 11:14:45 +08:00
|
|
|
return {
|
|
|
|
visible,
|
|
|
|
confirm,
|
|
|
|
cancel,
|
2020-11-18 22:20:36 +08:00
|
|
|
confirmButtonText_,
|
|
|
|
cancelButtonText_,
|
2020-10-16 11:14:45 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
})
|
|
|
|
</script>
|