Close sticker picker on Escape keyup

This commit is contained in:
Scott Nonnenberg 2019-05-29 15:11:41 -07:00
parent 020d78e62b
commit 46b4cf56a3
3 changed files with 34 additions and 0 deletions

View file

@ -7,6 +7,7 @@ import { LocalizerType } from '../../types/Util';
export type OwnProps = {
readonly i18n: LocalizerType;
readonly onClose: () => unknown;
readonly onClickAddPack: () => unknown;
readonly onPickSticker: (packId: string, stickerId: number) => unknown;
readonly packs: ReadonlyArray<StickerPackType>;
@ -59,6 +60,7 @@ export const StickerPicker = React.memo(
i18n,
packs,
recentStickers,
onClose,
onClickAddPack,
onPickSticker,
showPickerHint,
@ -96,6 +98,24 @@ export const StickerPicker = React.memo(
[setPacksPage]
);
// Handle escape key
React.useEffect(
() => {
const handler = (e: KeyboardEvent) => {
if (e.key === 'Escape') {
onClose();
}
};
document.addEventListener('keyup', handler);
return () => {
document.removeEventListener('keyup', handler);
};
},
[onClose]
);
const isEmpty = stickers.length === 0;
const downloadError =
selectedPack &&