Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 1x 1x 1x 1x 1x 12x 12x 12x 3x 2x 1x | import { TITLE_MAX_LENGTH, TITLE_MIN_LENGTH } from '../../constants/picture.constants';
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
import { ButtonComponent, MODAL_DATA, ModalData } from '@drevo-web/ui';
export interface ReplaceFileDialogData {
readonly currentTitle: string;
readonly previewUrl: string;
}
export interface ReplaceFileDialogResult {
readonly title: string;
}
@Component({
selector: 'app-replace-file-dialog',
imports: [ReactiveFormsModule, ButtonComponent],
templateUrl: './replace-file-dialog.component.html',
styleUrl: './replace-file-dialog.component.scss',
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ReplaceFileDialogComponent {
private readonly modalData = inject<ModalData<ReplaceFileDialogData, ReplaceFileDialogResult>>(MODAL_DATA);
readonly previewUrl = this.modalData.data.previewUrl;
readonly titleControl = new FormControl(this.modalData.data.currentTitle, {
nonNullable: true,
validators: [Validators.required, Validators.minLength(TITLE_MIN_LENGTH), Validators.maxLength(TITLE_MAX_LENGTH)],
});
confirm(): void {
if (this.titleControl.invalid) return;
this.modalData.close({ title: this.titleControl.value.trim() });
}
cancel(): void {
this.modalData.close();
}
}
|