Skip to content

PenModal 对话框组件

代码示例

vue
<template>
    <!-- 对话框 -->
    <pen-modal v-model="visible" :title="title" :loading="loading" @save="saveEvent">
        <!-- 对话框内容 -->
    </pen-modal>
</template>

<script setup lang="ts">
import { ref } from 'vue';

const { visible, loading, title, saveEvent } = useModal(() => {
    // 保存回调
    loading.value = true;
    setTimeout(() => {
        loading.value = false;
        visible.value = false;
        // 保存事件
    }, 1000);
});
</script>

插槽

插槽名说明
default默认插槽,可以自定义对话框的内容

属性类型

ts
import type { DialogProps } from 'element-plus';

// PenModal 组件的属性,继承自DialogProps
interface Props extends Partial<DialogProps> {
    loading?: boolean // 确认按钮的loading状态
    showFooter?: boolean // 是否显示底部按钮
    showConfirmBtn?: boolean // 是否显示确认按钮
    confirmText?: string // 确认按钮文字
    save?: () => void // 确认按钮点击事件
}

事件

事件名说明
openDialog 打开的回调
openedDialog 打开动画结束时的回调
closeDialog 关闭的回调
closedDialog 关闭动画结束时的回调
open-auto-focus输入焦点聚焦在 Dialog 内容时的回调
close-auto-focus输入焦点从 Dialog 内容失焦时的回调
save确认按钮点击事件