Skip to content

Commit 6ecbf8f

Browse files
authored
Merge pull request Expensify#65770 from Eskalifer1/fix/62703
fix:62703: focus composer after emoji picker select
2 parents 71f4dd3 + 7936c1e commit 6ecbf8f

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

src/components/EmojiPicker/EmojiPicker.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ import useResponsiveLayout from '@hooks/useResponsiveLayout';
1111
import useStyleUtils from '@hooks/useStyleUtils';
1212
import useThemeStyles from '@hooks/useThemeStyles';
1313
import useWindowDimensions from '@hooks/useWindowDimensions';
14+
import blurActiveElement from '@libs/Accessibility/blurActiveElement';
1415
import type {AnchorOrigin, EmojiPickerRef, EmojiPopoverAnchor, OnEmojiSelected, OnModalHideValue, OnWillShowPicker} from '@libs/actions/EmojiPickerAction';
1516
import {isMobileChrome} from '@libs/Browser';
1617
import calculateAnchorPosition from '@libs/calculateAnchorPosition';
18+
import DomUtils from '@libs/DomUtils';
1719
import {close} from '@userActions/Modal';
1820
import CONST from '@src/CONST';
1921
import EmojiPickerMenu from './EmojiPickerMenu';
@@ -116,6 +118,10 @@ function EmojiPicker({viewportOffsetTop}: EmojiPickerProps, ref: ForwardedRef<Em
116118
* Hide the emoji picker menu.
117119
*/
118120
const hideEmojiPicker = (isNavigating?: boolean) => {
121+
const activeElementId = DomUtils.getActiveElement()?.id;
122+
if (activeElementId !== CONST.COMPOSER.NATIVE_ID) {
123+
blurActiveElement();
124+
}
119125
const currOnModalHide = onModalHide.current;
120126
onModalHide.current = () => {
121127
if (currOnModalHide) {

src/libs/focusComposerWithDelay/setTextInputSelection.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ const setSelectionRange = shouldSetSelectionRange();
66

77
const setTextInputSelection = (textInput: InputType, forcedSelectionRange: Selection) => {
88
if (setSelectionRange) {
9-
(textInput as HTMLTextAreaElement).setSelectionRange(forcedSelectionRange.start, forcedSelectionRange.end);
9+
(textInput as HTMLTextAreaElement).setSelectionRange?.(forcedSelectionRange.start, forcedSelectionRange.end);
1010
} else {
11-
(textInput as TextInput).setSelection(forcedSelectionRange.start, forcedSelectionRange.end);
11+
(textInput as TextInput).setSelection?.(forcedSelectionRange.start, forcedSelectionRange.end);
1212
}
1313
};
1414

0 commit comments

Comments
 (0)