36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { Component, inject } from "@angular/core";
|
|
import { FormBuilder, FormControl, ReactiveFormsModule, Validators } from "@angular/forms";
|
|
import { MatRippleModule } from "@angular/material/core";
|
|
import { MatIconModule } from "@angular/material/icon";
|
|
import { Router } from "@angular/router";
|
|
|
|
|
|
@Component({
|
|
selector: 'app-publications-search-bar',
|
|
templateUrl: './publications-search-bar.component.html',
|
|
styleUrl: './publications-search-bar.component.scss',
|
|
imports: [
|
|
MatIconModule,
|
|
MatRippleModule,
|
|
ReactiveFormsModule
|
|
],
|
|
providers: []
|
|
})
|
|
export class PublicationsSearchBarComponent {
|
|
private formBuilder = inject(FormBuilder);
|
|
private router = inject(Router);
|
|
formGroup = this.formBuilder.group({
|
|
criteria: new FormControl<string | undefined>('', [Validators.required])
|
|
});
|
|
|
|
searchPublications(): void {
|
|
const query = this.formGroup.controls.criteria.value
|
|
|
|
if (query?.trim()) {
|
|
const queryParams = { 'query' : this.formGroup.controls.criteria.value ?? '' }
|
|
this.router.navigate(['/publications'], { queryParams });
|
|
} else {
|
|
this.router.navigate(['/home']);
|
|
}
|
|
}
|
|
} |