Dialog 模态框

基于 Popup 进一步封装

import { DuDialog } from 'dangoui'

示例

<template>
  <PreviewBlock title="基础">
    <DuButton type="secondary" @click="visible = true">打开弹窗</DuButton>
  </PreviewBlock>
  <DuDialog
    v-model:visible="visible"
    title="基础"
    @confirm="handleConfirm"
    @cancel="handleCancel"
  />

  <PreviewBlock title="按钮纵向排列">
    <DuButton type="secondary" @click="commonVisible = true">打开弹窗</DuButton>
  </PreviewBlock>
  <DuDialog
    v-model:visible="commonVisible"
    @close="close"
    @confirm="handleConfirm"
    title="按钮纵向排列"
    actionLayout="vertical"
  ></DuDialog>
  <PreviewBlock title="默认插槽">
    <DuButton type="secondary" @click="commonVisible = true">打开弹窗</DuButton>
  </PreviewBlock>
  <DuDialog
    v-model:visible="commonVisible"
    @close="close"
    @confirm="handleConfirm"
    title="按钮纵向排列"
    actionLayout="vertical"
  >
    我是内容
  </DuDialog>

  <PreviewBlock title="API 模式调用">
    <DuButton type="secondary" @click="handleOpenDialog">打开弹窗</DuButton>
  </PreviewBlock>
  <DuDialog title="按钮纵向排列" ref="dialogRef" actionLayout="vertical">
    <template #footer>
      <DuButton type="outline" @click="handleCancel" full size="large">
        取消
      </DuButton>
      <DuButton type="primary" @click="handleConfirm" full size="large">
        确认
      </DuButton>
    </template>
  </DuDialog>
</template>

<script setup lang="ts">
import { DuDialog, DuButton } from 'dangoui'

const visible = ref(false)
const verticalVisible = ref(false)
const controlledVisible = ref(false)
const commonVisible = ref(false)
const actionVisible = ref(false)
const dialogRef = ref(null)

function handleCancel() {
  console.log('取消')
}
function handleConfirm() {
  commonVisible.value = false
  console.log('确认')
}

function close() {
  console.log('关闭触发')
}

function handleOpenDialog() {
  dialogRef.value.open({
    title: 'API 模式调用',
    content: '这是一个 API 模式调用的弹窗',
  })
}
</script>
0

API

属性

属性名类型默认值说明
ext-classstring | string[] | Record<string, boolean>""extClass
ext-stylestring | { [x: string]: string | number; }""extStyle
visibleboolean - 是否展示弹窗
titlestring""弹窗标题
header-visiblebooleantrue是否展示内置的头部栏
closablebooleanfalse是否展示关闭按钮(当内置头部栏展示时有效)
mask-classstring | string[] | Record<string, boolean>""maskClass
mask-stylestring | { [x: string]: string | number; }""maskStyle
disable-portalbooleanfalse禁止将 Popup 渲染到根节点
action-layout"horizontal" | "vertical""horizontal"按钮排列方式:水平或者垂直
ok-textstring"\u786E\u5B9A"okText,确定按钮的文字
cancel-textstring"\u53D6\u6D88"cancelText,取消按钮的文字
title-align"default" | "center" - 标题对齐方式,default 为左对齐
mask-clickboolean - 点击遮罩层是否关闭

插槽

名称
default
footer

事件

名称类型
confirm(event: "confirm", ...args: any[]): void
close(event: "close", ...args: any[]): void
update:visible(event: "update:visible", ...args: any[]): void
cancel(event: "cancel", ...args: any[]): void
本页包含