Skip to content

Commit 31b7646

Browse files
authored
Merge pull request Expensify#73062 from bernhardoj/fix/72454-keyboard-shows-while-delete-confirm-modal-is-visible
Fix keyboard is shown while waypoint delete confirm modal is visible
2 parents d23c52b + 3b43830 commit 31b7646

6 files changed

Lines changed: 19 additions & 3 deletions

File tree

src/components/FocusTrap/FocusTrapForModal/FocusTrapForModalProps.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ type FocusTrapForModalProps = {
77
active: boolean;
88
initialFocus?: FocusTrapOptions['initialFocus'];
99
shouldPreventScroll?: boolean;
10+
shouldReturnFocus?: boolean;
1011
};
1112

1213
export default FocusTrapForModalProps;

src/components/FocusTrap/FocusTrapForModal/index.web.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import blurActiveElement from '@libs/Accessibility/blurActiveElement';
55
import ReportActionComposeFocusManager from '@libs/ReportActionComposeFocusManager';
66
import type FocusTrapForModalProps from './FocusTrapForModalProps';
77

8-
function FocusTrapForModal({children, active, initialFocus = false, shouldPreventScroll = false}: FocusTrapForModalProps) {
8+
function FocusTrapForModal({children, active, initialFocus = false, shouldPreventScroll = false, shouldReturnFocus = true}: FocusTrapForModalProps) {
99
return (
1010
<FocusTrap
1111
active={active}
@@ -20,7 +20,10 @@ function FocusTrapForModal({children, active, initialFocus = false, shouldPreven
2020
if (ReportActionComposeFocusManager.isFocused()) {
2121
return false;
2222
}
23-
return element;
23+
if (shouldReturnFocus) {
24+
return element;
25+
}
26+
return false;
2427
},
2528
}}
2629
>

src/components/Modal/BaseModal.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ function BaseModal({
354354
customBackdrop={shouldUseCustomBackdrop ? <Overlay onPress={handleBackdropPress} /> : undefined}
355355
type={type}
356356
shouldIgnoreBackHandlerDuringTransition={shouldIgnoreBackHandlerDuringTransition}
357+
shouldEnableNewFocusManagement={shouldEnableNewFocusManagement}
357358
>
358359
<Animated.View
359360
onLayout={onViewLayout}

src/components/Modal/ReanimatedModal/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ function ReanimatedModal({
4646
shouldPreventScrollOnFocus,
4747
initialFocus,
4848
shouldIgnoreBackHandlerDuringTransition = false,
49+
shouldEnableNewFocusManagement,
4950
...props
5051
}: ReanimatedModalProps) {
5152
const [isVisibleState, setIsVisibleState] = useState(isVisible);
@@ -239,6 +240,7 @@ function ReanimatedModal({
239240
<FocusTrapForModal
240241
active={modalVisibility}
241242
initialFocus={initialFocus}
243+
shouldReturnFocus={!shouldEnableNewFocusManagement}
242244
shouldPreventScroll={shouldPreventScrollOnFocus}
243245
>
244246
{isVisibleState && containerView}

src/components/Modal/ReanimatedModal/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,12 @@ type ReanimatedModalProps = ViewProps &
137137
/** Whether to use a custom backdrop for the modal? (This prevents focus issues on desktop) */
138138
initialFocus?: FocusTrapOptions['initialFocus'];
139139

140+
/**
141+
* Whether the modal should enable the new focus manager.
142+
* We are attempting to migrate to a new refocus manager, adding this property for gradual migration.
143+
* */
144+
shouldEnableNewFocusManagement?: boolean;
145+
140146
/** Whether to ignore the back handler during transition */
141147
shouldIgnoreBackHandlerDuringTransition?: boolean;
142148
};

src/components/PopoverMenu.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,10 @@ function BasePopoverMenu({
526526
shouldUseModalPaddingStyle={shouldUseModalPaddingStyle}
527527
testID={testID}
528528
>
529-
<FocusTrapForModal active={isVisible}>
529+
<FocusTrapForModal
530+
active={isVisible}
531+
shouldReturnFocus={!shouldEnableNewFocusManagement}
532+
>
530533
<View
531534
onLayout={onLayout}
532535
style={[menuContainerStyle, containerStyles, {paddingTop, paddingBottom, paddingVertical, ...(isWebOrDesktop ? styles.flex1 : styles.flexGrow1)}]}

0 commit comments

Comments
 (0)