From 8db95d9ec0872f031fa4cb05ea56aa0f9abb754f Mon Sep 17 00:00:00 2001 From: Vipin Chaudhary Date: Mon, 1 Dec 2025 13:37:20 +0530 Subject: [PATCH] [WIKI-823] fix: callout element emoji search (#8201) * fix: emoji search input * fix: enhance keyboard navigation in EmojiPicker component --- .../src/emoji-icon-picker/emoji-picker.tsx | 13 +++++++++++++ .../src/emoji-icon-picker/emoji/emoji.tsx | 18 +++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/propel/src/emoji-icon-picker/emoji-picker.tsx b/packages/propel/src/emoji-icon-picker/emoji-picker.tsx index fcb22d310..8ef39fa13 100644 --- a/packages/propel/src/emoji-icon-picker/emoji-picker.tsx +++ b/packages/propel/src/emoji-icon-picker/emoji-picker.tsx @@ -108,6 +108,19 @@ export function EmojiPicker(props: TCustomEmojiPicker) { align={finalAlign} sideOffset={8} data-prevent-outside-click="true" + onMouseDown={(e) => e.stopPropagation()} + onClick={(e) => e.stopPropagation()} + onFocus={(e) => e.stopPropagation()} + onKeyDown={(e) => { + if (e.key === "Tab") { + return; + } + if (e.key === "Escape") { + handleToggle(false); + return; + } + e.stopPropagation(); + }} > diff --git a/packages/propel/src/emoji-icon-picker/emoji/emoji.tsx b/packages/propel/src/emoji-icon-picker/emoji/emoji.tsx index ad9d5e05e..546d6ee95 100644 --- a/packages/propel/src/emoji-icon-picker/emoji/emoji.tsx +++ b/packages/propel/src/emoji-icon-picker/emoji/emoji.tsx @@ -1,3 +1,4 @@ +import { useEffect, useRef } from "react"; import { EmojiPicker } from "frimousse"; import { cn } from "../../utils"; @@ -9,6 +10,21 @@ type EmojiRootProps = { export function EmojiRoot(props: EmojiRootProps) { const { onChange, searchPlaceholder = "Search", searchDisabled = false } = props; + const searchWrapperRef = useRef(null); + useEffect(() => { + const focusInput = () => { + const searchWrapper = searchWrapperRef.current; + if (searchWrapper) { + const inputElement = searchWrapper.querySelector("input"); + if (inputElement) { + inputElement.removeAttribute("disabled"); + inputElement.focus(); + } + } + }; + focusInput(); + }, []); + return ( onChange(val.emoji)} >
-
+