Componente Modal para Angular | ng-hub-ui-modal

Componente modal accesible para Angular con apilado, modo fullscreen, plantillas, manejo de teclado y variables CSS para apps standalone.

Referencia API

Aquí tienes el contrato completo de modal: todo lo que puedes enlazar, escuchar, proyectar y personalizar, reunido en un solo sitio. Enlaza lo que necesites y dale el estilo que quieras — es standalone y reactivo con signals.

Inputs

Ajusta modal a tu gusto con 14 inputs. Se enlazan como cualquier @Input de Angular.

NombreTipoPor defectoDescripción
animationbooleanSi es true, la apertura y el cierre del modal se animarán. Por defecto: true
backdropboolean | "static"Si es true, se creará el elemento de backdrop. Alternativamente, especifica "static" para un backdrop que no cierra el modal al hacer clic. Por defecto: true
centeredbooleanSi es true, el modal se centrará verticalmente. Por defecto: false
placementHubModalPlacementControla dónde se ubica el modal dentro del viewport. Por defecto: HubModalPlacement.Center
keyboardbooleanSi es true, el modal se cerrará al pulsar la tecla Escape. Por defecto: true
closeOnNavigationbooleanSi es true, el modal se cerrará cuando el usuario navegue hacia atrás en el historial del navegador (history.back(), botón atrás del navegador). Por defecto: true
size"sm" | "lg" | "xl" | stringTamaño de la ventana del modal
windowClassstringUna clase personalizada para añadir a la ventana del modal
backdropClassstringUna clase personalizada para añadir al backdrop del modal
dismissSelectorstringSelector personalizado para los elementos que pueden activar el descarte de la ventana del modal. Por defecto: "[data-dismiss=\"modal\"]"
closeSelectorstringSelector personalizado para los elementos que pueden activar el cierre de la ventana del modal. Por defecto: "[data-close=\"modal\"]"
headerSelectorstringSelector personalizado para el elemento de cabecera de la ventana del modal
footerSelectorstringSelector personalizado para el elemento de pie de la ventana del modal
dataanyDatos adicionales que se deben pasar a la ventana del modal cuando se abre

Outputs

Reacciona a lo que hace modal: 1 eventos a los que enganchar tu lógica.

NombreTipoDescripción
dismissanyLo emite la ventana del modal cuando el usuario descarta el modal, p. ej. pulsando Escape, haciendo clic en el backdrop o activando el botón de cierre integrado. El payload es la razón del descarte (ModalDismissReasons.ESC, ModalDismissReasons.BACKDROP_CLICK o un valor personalizado).

Métodos

Controla modal desde el código — 17 métodos en su superficie programática.

NombreFirmaDevuelveDescripción
HubModal.openopen<C, R, D>(content: Type<C> | TemplateRef<any> | string, options?: HubModalOptions<D>): HubModalRef<C, R>HubModalRef<C, R>Abre una nueva ventana de modal con el contenido dado (tipo de componente, TemplateRef o string) y las opciones, y devuelve un HubModalRef para controlarla. Los componentes de contenido pueden inyectar HubActiveModal y el token HUB_MODAL_DATA para interactuar con el modal y leer el payload de datos.
HubModal.dismissAlldismissAll(reason?: any): voidDescarta todas las ventanas de modal mostradas actualmente con la razón proporcionada.
HubModal.hasOpenModalshasOpenModals(): booleanbooleanIndica si hay actualmente ventanas de modal abiertas en la aplicación.
HubModal.activeInstancesactiveInstances: EventEmitter<HubModalRef[]>EventEmitter<HubModalRef[]>Emisor de eventos que emite la lista de instancias HubModalRef abiertas actualmente cada vez que se abre o se elimina un modal.
HubModalRef.closeclose(result?: R): voidCierra el modal con un valor de resultado opcional. La promesa HubModalRef.result se resuelve con el valor proporcionado.
HubModalRef.dismissdismiss(reason?: any): voidDescarta el modal con un valor de razón opcional. La promesa HubModalRef.result se rechaza con el valor proporcionado. Respeta el guard beforeDismiss cuando se configuró uno.
HubModalRef.updateupdate(options: HubModalUpdatableOptions): voidActualiza opciones de un modal abierto (atributos aria, centered, placement, fullscreen, backdropClass, size, variant, windowClass, modalDialogClass).
HubModalRef.componentInstancecomponentInstance: C | voidC | voidLa instancia del componente usado como contenido del modal. Devuelve undefined cuando se usó un TemplateRef como contenido o cuando el modal está cerrado.
HubModalRef.resultresult: Promise<R>Promise<R>Promesa que se resuelve con el resultado de cierre cuando el modal se cierra y se rechaza con la razón del descarte cuando se descarta.
HubModalRef.closedclosed: Observable<R>Observable<R>Observable que emite el resultado pasado a close() cuando el modal se cierra.
HubModalRef.dismisseddismissed: Observable<any>Observable<any>Observable que emite la razón del descarte cuando el modal se descarta — el valor pasado a dismiss(), o una razón interna como el clic en el backdrop o Escape.
HubModalRef.shownshown: Observable<void>Observable<void>Observable que emite y se completa una vez que el modal es totalmente visible y su animación de apertura ha terminado.
HubModalRef.hiddenhidden: Observable<void>Observable<void>Observable que emite y se completa una vez que tanto la ventana del modal como el backdrop están ocultos, las animaciones han terminado y sus elementos se han eliminado del DOM.
HubActiveModal.closeclose(result?: R): voidCierra el modal que aloja el componente de contenido, resolviendo la promesa HubModalRef.result con el valor de resultado opcional.
HubActiveModal.dismissdismiss(reason?: any): voidDescarta el modal que aloja el componente de contenido, rechazando la promesa HubModalRef.result con el valor de razón opcional.
HubActiveModal.updateupdate(options: HubModalUpdatableOptions): voidActualiza opciones del modal abierto desde dentro del componente de contenido.
HubActiveModal.datadata: DDEl payload tipado pasado a través de HubModalOptions.data. Equivale a inyectar el token HUB_MODAL_DATA; se resuelve a null cuando no se proporcionó la opción data.

Templates

Hazlo tuyo — 1 plantillas para proyectar tu propio marcado.

NombreDescripciónEjemplo
Modal TemplateReferencia de plantilla que se puede pasar al servicio de modal<ng-template #modalTemplate let-close="close" let-dismiss="dismiss"> <div class="modal-header"> <h4 class="modal-title">Modal Title</h4> </div> <div class="modal-body"> Modal content goes here </div> <div class="modal-footer"> <button class="btn btn-secondary" (click)="dismiss()">Cancel</button> <button class="btn btn-primary" (click)="close('result')">OK</button> </div> </ng-template>