From af3a7ee3413186491679b8de7632031018b34dfa Mon Sep 17 00:00:00 2001 From: Eduard Kuzmenko Date: Sat, 16 Apr 2022 13:25:35 +0300 Subject: [PATCH] Focus search input by pressing Escape --- src/components/appNavigationController.ts | 2 +- src/components/sidebarLeft/index.ts | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/components/appNavigationController.ts b/src/components/appNavigationController.ts index d09b909a..af0ab437 100644 --- a/src/components/appNavigationController.ts +++ b/src/components/appNavigationController.ts @@ -15,7 +15,7 @@ import indexOfAndSplice from "../helpers/array/indexOfAndSplice"; export type NavigationItem = { type: 'left' | 'right' | 'im' | 'chat' | 'popup' | 'media' | 'menu' | 'esg' | 'multiselect' | 'input-helper' | 'autocomplete-helper' | 'markup' | - 'global-search' | 'voice' | 'mobile-search' | 'filters', + 'global-search' | 'voice' | 'mobile-search' | 'filters' | 'global-search-focus', onPop: (canAnimate: boolean) => boolean | void, onEscape?: () => boolean, noHistory?: boolean, diff --git a/src/components/sidebarLeft/index.ts b/src/components/sidebarLeft/index.ts index 6faabf18..3130780e 100644 --- a/src/components/sidebarLeft/index.ts +++ b/src/components/sidebarLeft/index.ts @@ -29,7 +29,7 @@ import AppPeopleNearbyTab from "./tabs/peopleNearby"; import { ButtonMenuItemOptions } from "../buttonMenu"; import CheckboxField from "../checkboxField"; import { IS_MOBILE_SAFARI } from "../../environment/userAgent"; -import appNavigationController from "../appNavigationController"; +import appNavigationController, { NavigationItem } from "../appNavigationController"; import findUpClassName from "../../helpers/dom/findUpClassName"; import findUpTag from "../../helpers/dom/findUpTag"; import PeerTitle from "../peerTitle"; @@ -311,6 +311,20 @@ export class AppSidebarLeft extends SidebarSlider { appUsersManager.getTopPeers('correspondents'); + // Focus search input by pressing Escape + const navigationItem: NavigationItem = { + type: 'global-search-focus', + onPop: () => { + setTimeout(() => { + this.inputSearch.input.focus(); + }, 0); + + return false; + }, + noHistory: true + }; + appNavigationController.pushItem(navigationItem); + appStateManager.getState().then(state => { const recentSearch = state.recentSearch || []; for(let i = 0, length = recentSearch.length; i < length; ++i) { @@ -613,12 +627,13 @@ export class AppSidebarLeft extends SidebarSlider { this.updateBtn.classList.add('is-hidden'); this.toolsBtn.parentElement.firstElementChild.classList.toggle('state-back', true); - if(!IS_MOBILE_SAFARI && !appNavigationController.findItemByType('global-search')) { + const navigationType: NavigationItem['type'] = 'global-search'; + if(!IS_MOBILE_SAFARI && !appNavigationController.findItemByType(navigationType)) { appNavigationController.pushItem({ onPop: () => { close(); }, - type: 'global-search' + type: navigationType }); }