Skip to content

Commit a0dad9f

Browse files
authored
Merge pull request Expensify#60106 from linhvovan29546/fix/ignore-scrolling-on-mobile-chorme-after-long-press
fix: ignore scrolling on mobile chrome after long press item
2 parents c7a135b + e435acd commit a0dad9f

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

src/components/Search/SearchList.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,15 @@ function SearchList(
294294
onSelectRow={onSelectRow}
295295
onFocus={(event: NativeSyntheticEvent<ExtendedTargetedEvent>) => {
296296
// Prevent unexpected scrolling on mobile Chrome after the context menu closes by ignoring programmatic focus not triggered by direct user interaction.
297-
if (isMobileChrome() && event.nativeEvent && !event.nativeEvent.sourceCapabilities) {
298-
return;
297+
if (isMobileChrome() && event.nativeEvent) {
298+
if (!event.nativeEvent.sourceCapabilities) {
299+
return;
300+
}
301+
// Ignore the focus if it's caused by a touch event on mobile chrome.
302+
// For example, a long press will trigger a focus event on mobile chrome
303+
if (event.nativeEvent.sourceCapabilities.firesTouchEvents) {
304+
return;
305+
}
299306
}
300307
setFocusedIndex(index);
301308
}}

src/components/SelectionList/types.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,10 @@ type ListItemFocusEventHandler = (event: NativeSyntheticEvent<ExtendedTargetedEv
9999

100100
type ExtendedTargetedEvent = TargetedEvent & {
101101
/** Provides information about the input device responsible for the event, or null if triggered programmatically, available in some browsers */
102-
sourceCapabilities?: unknown;
102+
sourceCapabilities?: {
103+
/** A boolean value that indicates whether the device dispatches touch events. */
104+
firesTouchEvents: boolean;
105+
};
103106
};
104107

105108
type ListItem = {

0 commit comments

Comments
 (0)