diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts index 3708d7906..89bd74b12 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts @@ -360,7 +360,9 @@ export class FilePreviewScreenComponent if (['Escape'].includes($event.key)) { this.fullScreen = false; this.closeFullScreen(); + this.pdf.deactivateSearch(); this._changeRef.markForCheck(); + window.focus(); } if (['f', 'F'].includes($event.key)) { @@ -368,6 +370,12 @@ export class FilePreviewScreenComponent if ($event.target instanceof HTMLInputElement || $event.target instanceof HTMLTextAreaElement) { return; } + if ($event.ctrlKey) { + this.pdf.focusSearch(); + this.pdf.activateSearch(); + return; + } + this.toggleFullScreen(); return; } diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts index 06cf2e0ec..3b3e9e2d0 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/document-viewer.service.ts @@ -58,8 +58,21 @@ export class REDDocumentViewer { get #keyUp$() { return fromEvent(this.#document, 'keyUp').pipe( tap(stopAndPreventIfNotAllowed), - filter($event => ($event.target as HTMLElement)?.tagName?.toLowerCase() !== 'input'), - filter($event => $event.key.startsWith('Arrow') || $event.key === 'f' || ['h', 'H'].includes($event.key)), + filter($event => { + if (($event.target as HTMLElement)?.tagName?.toLowerCase() === 'input') { + if ($event.key === 'Escape') { + return true; + } + } + return ($event.target as HTMLElement)?.tagName?.toLowerCase() !== 'input'; + }), + filter( + $event => + $event.key.startsWith('Arrow') || + $event.key === 'f' || + ['h', 'H'].includes($event.key) || + ['Escape'].includes($event.key), + ), tap(stopAndPrevent), log('[PDF] Keyboard shortcut'), ); diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts index 7a1c66d4b..84f96c0c9 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/pdf-viewer.service.ts @@ -106,6 +106,21 @@ export class PdfViewer { return page$.pipe(map(page => this.#adjustPage(page))); } + focusSearch() { + const iframeWindow = this.#instance.UI.iframeWindow; + const input = iframeWindow.document.getElementById('SearchPanel__input') as HTMLInputElement; + input.focus(); + input.select(); + } + + activateSearch() { + this.#instance.UI.openElements(['searchPanel']); + } + + deactivateSearch() { + this.#instance.UI.closeElements(['searchPanel']); + } + resetAnnotationActions() { if (this.#instance.UI.annotationPopup.getItems().length) { this.#instance.UI.annotationPopup.update([]); diff --git a/apps/red-ui/src/app/modules/pdf-viewer/utils/constants.ts b/apps/red-ui/src/app/modules/pdf-viewer/utils/constants.ts index 53eaff074..6f3ce0c6d 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/utils/constants.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/utils/constants.ts @@ -67,6 +67,7 @@ export const DISABLED_HOTKEYS = [ 'COMMAND+O', 'CTRL+P', 'COMMAND+P', + 'CTRL+F', 'SPACE', 'UP', 'DOWN',