import { Component, ElementRef, afterNextRender, inject, input, viewChild } from '@angular/core'; import { I18nService } from '../i18n.service'; import { DialogsService, type ConfirmRequest } from '../dialogs.service'; import { FocusService } from '../focus.service'; @Component({ selector: 'app-confirm-dialog', template: `

{{ request().title }}

{{ request().body }}

`, }) export class ConfirmDialog { readonly i18n = inject(I18nService); readonly request = input.required(); private readonly confirmBtn = viewChild.required>('confirmBtn'); private readonly dialogs = inject(DialogsService); private readonly focus = inject(FocusService); constructor() { afterNextRender(() => this.confirmBtn().nativeElement.focus()); } submit(): void { const req = this.request(); this.close(); req.onConfirm(); } cancel(): void { this.close(); } private close(): void { this.dialogs.confirm.set(null); this.focus.bump(); } }