import { Component, Inject } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog'; import { MatButtonModule } from '@angular/material/button'; import { MatSelectModule } from '@angular/material/select'; import { MatFormFieldModule } from '@angular/material/form-field'; export interface ConfirmDialogData { title: string; message: string; confirmText?: string; cancelText?: string; confirmColor?: 'primary' | 'accent' | 'warn'; showVersionSelect?: boolean; versions?: any[]; showDropdown?: boolean; dropdownOptions?: Array<{value: any, label: string}>; dropdownPlaceholder?: string; } @Component({ selector: 'app-confirm-dialog', standalone: true, imports: [ CommonModule, FormsModule, MatDialogModule, MatButtonModule, MatSelectModule, MatFormFieldModule ], template: `

{{ data.title }}

{{ data.message }}

@if (data.showVersionSelect && data.versions) { Select Source Version @for (version of data.versions; track version.id) { Version {{ version.id }} - {{ version.caption }} @if (version.published) { (Published) } } } @if (data.showDropdown && data.dropdownOptions) { {{ data.dropdownPlaceholder || 'Select an option' }} @for (option of data.dropdownOptions; track option.value) { {{ option.label }} } }
`, styles: [` mat-dialog-content { padding: 20px 24px; min-width: 400px; } p { margin: 0 0 16px 0; color: rgba(0,0,0,0.87); line-height: 1.5; } .full-width { width: 100%; } .published-badge { color: #4caf50; font-weight: 500; margin-left: 8px; } mat-dialog-actions { padding: 16px 24px; } `] }) export default class ConfirmDialogComponent { selectedVersionId: number | null = null; selectedValue: any = undefined; constructor( public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: ConfirmDialogData ) { // Pre-select first version if available if (data.showVersionSelect && data.versions && data.versions.length > 0) { this.selectedVersionId = data.versions[0].id; } // Dropdown için başlangıç değeri undefined olsun (seçim yapılmamış) if (data.showDropdown) { this.selectedValue = undefined; } } onConfirm(): void { if (this.data.showVersionSelect) { this.dialogRef.close(this.selectedVersionId); } else if (this.data.showDropdown) { this.dialogRef.close({ confirmed: true, selectedValue: this.selectedValue }); } else { this.dialogRef.close(true); } } onCancel(): void { this.dialogRef.close(false); } }