Dialog

Informa a usuarios preservando el estado de la página actual.

Uso básico

Dialog abre una caja de diálogo, y es bastante personalizable.

Establezca el model-value / v-model con un Boolean, y el Dialog se mostrará cuando el valor enlazado sea true. El diálogo tiene dos partes: body y footer, este último requiere un slot llamado footer. El atributo opcional title (vacío por defecto) es para definir un título. Por último, este ejemplo muestra cómo se utiliza before-close.

TIP

before-close solo funciona cuando el usuario hace clic en el icono de cerrar o en el backdrop. Si tiene botones que cierran el diálogo en el slot con nombre footer, puede añadir lo que se debería hacer con before-close en el manejador de eventos de clic de los botones.

Contenido personalizado

El contenido del Diálogo puede ser cualquier cosa, incluso una tabla o un formulario. Este ejemplo muestra cómo usar Element Plus Table y Form con Dialog.

Cabecera personalizada

El slot header se puede utilizar para personalizar el área donde se muestra el título. Para mantener la accesibilidad, utilice el atributo title cuando use el slot, o utilice la propiedad titleId para especificar qué elemento debe ser leído como el título del diálogo.

Diálogo anidado

Si un Diálogo está anidado en otro Diálogo, se requiere append-to-body.

Normalmente no recomendamos usar Dialog anidado. Si necesita múltiples Diálogos mostrados en la página, puede aplanarlos para que sean hermanos. Si debe anidar un Diálogo dentro de otro Diálogo, establezca append-to-body del Diálogo anidado como true, y lo añadirá al cuerpo en lugar de su nodo padre, para que ambos Diálogos puedan ser correctamente renderizados.

Contenido centrado

El contenido del diálogo se puede centrar.

Establezca center en true para centrar horizontalmente el encabezado y el pie de página del cuadro de diálogo. center solo afecta al encabezado y pie de página de Dialog. El cuerpo del diálogo puede ser cualquier cosa, así que a veces puede que no se vea bien cuando se centra. Necesita escribir algo de CSS si desea centrar el cuerpo también.

TIP

El contenido del Diálogo se muestra perezosamente, lo que significa que el slot por defecto se renderiza en el DOM después de que se abra. Por lo tanto, si necesita realizar una manipulación DOM o acceder a un componente usando ref, hágalo en el callback del evento open.

Alinear el diálogo al centro

Abrir diálogo desde el centro de la pantalla.

Configurando align-center a true centrará el diálogo tanto horizontal como verticalmente. La propiedad top no funcionará al mismo tiempo porque el diálogo está centrado verticalmente en una flexbox.

Destruir al cerrar

Cuando esta característica está activada, el contenido en el slot predeterminado se destruirá con una directiva v-if. Habilite esto cuando tenga problemas de rendimiento.

Note que al activar esta función, el contenido no será renderizado antes del transition.beforeEnter enviado, solo habrá overlay header (si existe) y footer (si existe).

Diálogo arrastrable

Intento de arrastre para la parte del header.

Set draggable to true to drag. Set overflow 2.5.4 to true can drag overflow the viewport.

TIP

Cuando se usa modal = false, por favor asegúrese de que append-to-body se estableció a true, porque Dialog es posicionado por position: relative, cuando modal es removido, Dialog se colocará basándose en la posición actual en el DOM, en lugar de Document.Body, por lo que el estilo será desordenado.

API

Attributes

NombreDescripciónTipoDefault
model-value / v-modelvisibilidad del diálogoboolean
titletítulo del diálogo. También se puede pasar con un slot con nombre (ver la tabla siguiente)string''
widthwidth of Dialog, default is 50%string / number''
fullscreensi el diálogo ocupa la pantalla completabooleanfalse
topvalue for margin-top of Dialog CSS, default is 15vhstring''
modalsi se muestra una máscarabooleantrue
modal-classcustom class names for maskstring
append-to-bodywhether to append Dialog itself to body. A nested Dialog should have this attribute set to truebooleanfalse
append-to 2.4.3which element the Dialog appends to. Will override append-to-bodystring / HTMLElementbody
lock-scrollwhether scroll of body is disabled while Dialog is displayedbooleantrue
open-delaythe Time(milliseconds) before opennumber0
close-delaythe Time(milliseconds) before closenumber0
close-on-click-modalwhether the Dialog can be closed by clicking the maskbooleantrue
close-on-press-escapewhether the Dialog can be closed by pressing ESCbooleantrue
show-closewhether to show a close buttonbooleantrue
before-closecallback before Dialog closes, and it will prevent Dialog from closing, use done to close the dialogFunction
draggableenable dragging feature for Dialogbooleanfalse
overflow 2.5.4draggable Dialog can overflow the viewportbooleanfalse
centerwhether to align the header and footer in centerbooleanfalse
align-center 2.2.16whether to align the dialog both horizontally and verticallybooleanfalse
destroy-on-closedestroy elements in Dialog when closedbooleanfalse
close-iconcustom close icon, default is Closestring / Component
z-indexsame as z-index in native CSS, z-order of dialognumber
header-aria-level a11yheader's aria-level attributestring2
custom-class deprecatedcustom class names for Dialogstring''

WARNING

custom-class has been deprecated, and will be removed in 2.4.0, please use class.

Slots

NombreDescripción
contenido del diálogo
headercontenido de la cabecera del diálogo. Reemplazar esto elimina el título, pero no elimina el botón cerrar.
footercontenido del pie de página del diálogo
title deprecatedworks the same as the header slot. Use el slot header en lugar de este slot.

WARNING

title has been deprecated, and will be removed in 2.4.0, please use header.

Events

NombreDescripciónType
opense dispara cuando se abre el DialogFunction
openedse dispara cuando la animación de apertura del Dialog terminaFunction
closese dispara cuando el Diálogo se cierraFunction
closedse dispara cuando finaliza la animación de cierre del DiálogFunction
open-auto-focusse dispara después que el Dialog se abre y el contenido obtiene el focoFunction
close-auto-focusse dispara después que el Dialog se cierra y el contenido obtiene el focoFunction

Exposes

NameDescriptionType
resetPosition 2.8.1reset positionFunction

FAQ

Usando el diálogo en SFC, el estilo de ámbito no tiene efecto.

Typical issue: #10515

PS: Since the dialog is rendered using Teleport, the style of the root node is recommended to be written globally.

Cuando se muestra y oculta el diálogo, hay una situación en la que los elementos de la página son desplazados de ida y vuelta.

Typical issue: #10481

PS: It is recommended to place the scroll area inside a vue mounted node, e.g. <div id="app" />, and use the overflow: hidden style for the body.

Fuente

ComponentesStyleDocumentación

Contribuidores