Компонент Modal для Angular | ng-hub-ui-modal

Доступный компонент modal для Angular с наложением, полноэкранным режимом, шаблонами, обработкой клавиатуры и CSS-переменными для standalone-приложений.

Справочник API

Вот полный контракт modal: всё, что можно привязать, прослушать, спроецировать и тематизировать, собрано в одном месте. Подключите то, что нужно, и оформите так, как хотите — это standalone и дружит с сигналами.

Входные свойства

Настройте modal с помощью 14 входных свойств. Привязывайте их, как любой @Input в Angular.

ИмяТипПо умолчаниюОписание
animationbooleanЕсли true, открытие и закрытие modal будут анимированы. По умолчанию: true
backdropboolean | "static"Если true, будет создан элемент backdrop. В качестве альтернативы укажите "static" для backdrop, который не закрывает modal при клике. По умолчанию: true
centeredbooleanЕсли true, modal будет центрирован по вертикали. По умолчанию: false
placementHubModalPlacementУправляет тем, где размещается modal в области просмотра. По умолчанию: HubModalPlacement.Center
keyboardbooleanЕсли true, modal будет закрыт при нажатии клавиши Escape. По умолчанию: true
closeOnNavigationbooleanЕсли true, modal будет закрыт, когда пользователь переходит назад в истории браузера (history.back(), кнопка «Назад» браузера). По умолчанию: true
size"sm" | "lg" | "xl" | stringРазмер окна modal
windowClassstringПользовательский класс, добавляемый к окну modal
backdropClassstringПользовательский класс, добавляемый к backdrop modal
dismissSelectorstringПользовательский селектор для элементов, которые могут вызвать закрытие (dismiss) окна modal. По умолчанию: "[data-dismiss=\"modal\"]"
closeSelectorstringПользовательский селектор для элементов, которые могут вызвать закрытие (close) окна modal. По умолчанию: "[data-close=\"modal\"]"
headerSelectorstringПользовательский селектор для элемента заголовка окна modal
footerSelectorstringПользовательский селектор для элемента подвала окна modal
dataanyДополнительные данные, которые необходимо передать окну modal при его открытии

События

Реагируйте на то, что делает modal, — 1 событий, к которым можно подключить вашу логику.

ИмяТипОписание
dismissanyИспускается окном modal, когда пользователь отклоняет (dismiss) его — например, нажатием Escape, кликом по backdrop или встроенной кнопкой закрытия. Полезная нагрузка — причина отклонения (ModalDismissReasons.ESC, ModalDismissReasons.BACKDROP_CLICK или пользовательское значение).

Методы

Управляйте modal из кода — 17 методов его программного интерфейса.

ИмяСигнатураВозвращаетОписание
HubModal.openopen<C, R, D>(content: Type<C> | TemplateRef<any> | string, options?: HubModalOptions<D>): HubModalRef<C, R>HubModalRef<C, R>Открывает новое окно modal с указанным содержимым (тип компонента, TemplateRef или строка) и опциями и возвращает HubModalRef для управления им. Компоненты содержимого могут внедрить HubActiveModal и токен HUB_MODAL_DATA, чтобы взаимодействовать с modal и читать полезную нагрузку data.
HubModal.dismissAlldismissAll(reason?: any): voidОтклоняет все отображаемые в данный момент окна modal с указанной причиной.
HubModal.hasOpenModalshasOpenModals(): booleanbooleanПоказывает, есть ли в приложении открытые окна modal в данный момент.
HubModal.activeInstancesactiveInstances: EventEmitter<HubModalRef[]>EventEmitter<HubModalRef[]>Эмиттер событий, испускающий список открытых в данный момент экземпляров HubModalRef при каждом открытии или удалении modal.
HubModalRef.closeclose(result?: R): voidЗакрывает modal с необязательным значением результата. Promise HubModalRef.result разрешается переданным значением.
HubModalRef.dismissdismiss(reason?: any): voidОтклоняет modal с необязательным значением причины. Promise HubModalRef.result отклоняется с переданным значением. Учитывает защиту beforeDismiss, если она настроена.
HubModalRef.updateupdate(options: HubModalUpdatableOptions): voidОбновляет опции открытого modal (aria-атрибуты, centered, placement, fullscreen, backdropClass, size, variant, windowClass, modalDialogClass).
HubModalRef.componentInstancecomponentInstance: C | voidC | voidЭкземпляр компонента, использованного как содержимое modal. Возвращает undefined, если содержимым был TemplateRef или modal закрыт.
HubModalRef.resultresult: Promise<R>Promise<R>Promise, который разрешается результатом закрытия, когда modal закрывается, и отклоняется причиной отклонения, когда modal отклоняется (dismiss).
HubModalRef.closedclosed: Observable<R>Observable<R>Observable, испускающий результат, переданный в close(), когда modal закрывается.
HubModalRef.dismisseddismissed: Observable<any>Observable<any>Observable, испускающий причину отклонения, когда modal отклоняется — значение, переданное в dismiss(), либо внутреннюю причину, такую как клик по backdrop или Escape.
HubModalRef.shownshown: Observable<void>Observable<void>Observable, который испускает значение и завершается, как только modal полностью видим и его анимация открытия закончилась.
HubModalRef.hiddenhidden: Observable<void>Observable<void>Observable, который испускает значение и завершается, когда и окно modal, и backdrop скрыты, анимации завершены, а их элементы удалены из DOM.
HubActiveModal.closeclose(result?: R): voidЗакрывает modal, содержащий компонент содержимого, разрешая Promise HubModalRef.result необязательным значением результата.
HubActiveModal.dismissdismiss(reason?: any): voidОтклоняет modal, содержащий компонент содержимого, отклоняя Promise HubModalRef.result необязательным значением причины.
HubActiveModal.updateupdate(options: HubModalUpdatableOptions): voidОбновляет опции открытого modal изнутри компонента содержимого.
HubActiveModal.datadata: DDТипизированная полезная нагрузка, переданная через HubModalOptions.data. Эквивалентно внедрению токена HUB_MODAL_DATA; принимает значение null, если опция data не была передана.

Шаблоны

Сделайте его своим — 1 слотов шаблона позволяют проецировать собственную разметку.

ИмяОписаниеПример
Modal TemplateСсылка на шаблон, которую можно передать в modal service<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>