import { Component, Input, OnInit } from '@angular/core'; import { Validators } from '@angular/forms'; import { InputRegexService } from '@core/services/input-regex.service'; import { ReferenceFieldAPI } from '@core/typings/api/reference-fields.typing'; import { RegexValidator, TypeSafeFormBuilder, TypeSafeFormGroup } from '@yourcause/common'; import { YCModalComponent } from '@yourcause/common/modals'; import { ReleaseNoteFromApi } from '../release-notes.typing'; export interface ReleaseNoteFormGroup { releaseNumber: string; releaseNotesUrl: string; announcementDate: string; startDate: string; endDate: string; } @Component({ selector: 'gc-create-edit-release-notes-modal', templateUrl: './create-edit-release-notes-modal.component.html', styleUrls: ['./create-edit-release-notes-modal.component.scss'] }) export class CreateEditReleaseNotesModalComponent extends YCModalComponent< ReleaseNoteFormGroup > implements OnInit { @Input() row: ReleaseNoteFromApi; formGroup: TypeSafeFormGroup; constructor ( private formBuilder: TypeSafeFormBuilder, private inputRegexService: InputRegexService ) { super(); } ngOnInit () { this.formGroup = this.formBuilder.group({ releaseNumber: [this.row?.releaseNumber ?? '', Validators.required], releaseNotesUrl: [ this.row?.releaseNotesUrl ?? '', [ Validators.required, RegexValidator(ReferenceFieldAPI.ReferenceFieldFormattingValues.URL_OPT_HTTP, this.inputRegexService.urlErrorObj) ] ], announcementDate: [this.row?.announcementDate ?? '', Validators.required], startDate: [this.row?.startDate ?? '', Validators.required], endDate: [this.row?.endDate ?? '', Validators.required] }); } save () { this.closeModal.emit(this.formGroup.value); } }