From fb650b2bdd4c040af40615d934d82f2a50e3970d Mon Sep 17 00:00:00 2001 From: 4gray Date: Sat, 7 Dec 2024 16:29:47 +0100 Subject: [PATCH] feat(recent-playlists): add hotkey (ctrl/cmd + f) for playlist search --- .../recent-playlists/recent-playlists.component.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/app/home/recent-playlists/recent-playlists.component.ts b/src/app/home/recent-playlists/recent-playlists.component.ts index 71937ec95..8322db1fc 100644 --- a/src/app/home/recent-playlists/recent-playlists.component.ts +++ b/src/app/home/recent-playlists/recent-playlists.component.ts @@ -6,11 +6,14 @@ import { import { AsyncPipe, NgFor, NgIf } from '@angular/common'; import { Component, + ElementRef, EventEmitter, + HostListener, Input, NgZone, OnDestroy, Output, + ViewChild, } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialog } from '@angular/material/dialog'; @@ -67,6 +70,8 @@ import { PlaylistItemComponent } from './playlist-item/playlist-item.component'; ], }) export class RecentPlaylistsComponent implements OnDestroy { + @ViewChild('searchQuery') searchQueryInput!: ElementRef; + searchQuery = new BehaviorSubject(''); playlists$ = combineLatest([ @@ -266,4 +271,13 @@ export class RecentPlaylistsComponent implements OnDestroy { onSearchQueryUpdate(searchQuery: string) { this.searchQuery.next(searchQuery); } + + @HostListener('window:keydown.control.f', ['$event']) + @HostListener('window:keydown.meta.f', ['$event']) + onSearchHotkey(event: KeyboardEvent) { + // Prevent default browser search behavior + event.preventDefault(); + event.stopPropagation(); + this.searchQueryInput?.nativeElement?.focus(); + } }