@react-navigation/stack 7.8.3 → 7.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/utils/useKeyboardManager.js +50 -26
- package/lib/module/utils/useKeyboardManager.js.map +1 -1
- package/lib/module/views/Stack/CardContainer.js +13 -14
- package/lib/module/views/Stack/CardContainer.js.map +1 -1
- package/lib/typescript/src/utils/useKeyboardManager.d.ts +9 -2
- package/lib/typescript/src/utils/useKeyboardManager.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/CardContainer.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/utils/useKeyboardManager.tsx +65 -32
- package/src/views/Stack/CardContainer.tsx +5 -16
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Keyboard, TextInput } from 'react-native';
|
|
5
|
-
export function useKeyboardManager(
|
|
5
|
+
export function useKeyboardManager({
|
|
6
|
+
enabled,
|
|
7
|
+
focused
|
|
8
|
+
}) {
|
|
6
9
|
// Numeric id of the previously focused text input
|
|
7
10
|
// When a gesture didn't change the tab, we can restore the focused input with this
|
|
8
11
|
const previouslyFocusedTextInputRef = React.useRef(undefined);
|
|
9
12
|
const startTimestampRef = React.useRef(0);
|
|
10
13
|
const keyboardTimeoutRef = React.useRef(undefined);
|
|
14
|
+
const enabledRef = React.useRef(enabled);
|
|
11
15
|
const clearKeyboardTimeout = React.useCallback(() => {
|
|
12
16
|
if (keyboardTimeoutRef.current !== undefined) {
|
|
13
17
|
clearTimeout(keyboardTimeoutRef.current);
|
|
@@ -15,7 +19,7 @@ export function useKeyboardManager(isEnabled) {
|
|
|
15
19
|
}
|
|
16
20
|
}, []);
|
|
17
21
|
const onPageChangeStart = React.useCallback(() => {
|
|
18
|
-
if (!
|
|
22
|
+
if (!enabledRef.current) {
|
|
19
23
|
return;
|
|
20
24
|
}
|
|
21
25
|
clearKeyboardTimeout();
|
|
@@ -29,30 +33,9 @@ export function useKeyboardManager(isEnabled) {
|
|
|
29
33
|
|
|
30
34
|
// Store timestamp for touch start
|
|
31
35
|
startTimestampRef.current = Date.now();
|
|
32
|
-
}, [clearKeyboardTimeout
|
|
33
|
-
const onPageChangeConfirm = React.useCallback(force => {
|
|
34
|
-
if (!isEnabled()) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
clearKeyboardTimeout();
|
|
38
|
-
if (force) {
|
|
39
|
-
// Always dismiss input, even if we don't have a ref to it
|
|
40
|
-
// We might not have the ref if onPageChangeStart was never called
|
|
41
|
-
// This can happen if page change was not from a gesture
|
|
42
|
-
Keyboard.dismiss();
|
|
43
|
-
} else {
|
|
44
|
-
const input = previouslyFocusedTextInputRef.current;
|
|
45
|
-
|
|
46
|
-
// Dismiss the keyboard only if an input was a focused before
|
|
47
|
-
// This makes sure we don't dismiss input on going back and focusing an input
|
|
48
|
-
input?.blur();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Cleanup the ID on successful page change
|
|
52
|
-
previouslyFocusedTextInputRef.current = undefined;
|
|
53
|
-
}, [clearKeyboardTimeout, isEnabled]);
|
|
36
|
+
}, [clearKeyboardTimeout]);
|
|
54
37
|
const onPageChangeCancel = React.useCallback(() => {
|
|
55
|
-
if (!
|
|
38
|
+
if (!enabledRef.current) {
|
|
56
39
|
return;
|
|
57
40
|
}
|
|
58
41
|
clearKeyboardTimeout();
|
|
@@ -77,7 +60,48 @@ export function useKeyboardManager(isEnabled) {
|
|
|
77
60
|
previouslyFocusedTextInputRef.current = undefined;
|
|
78
61
|
}
|
|
79
62
|
}
|
|
80
|
-
}, [clearKeyboardTimeout
|
|
63
|
+
}, [clearKeyboardTimeout]);
|
|
64
|
+
const onPageChangeConfirm = React.useCallback(({
|
|
65
|
+
gesture,
|
|
66
|
+
active,
|
|
67
|
+
closing
|
|
68
|
+
}) => {
|
|
69
|
+
if (!enabledRef.current) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (!closing) {
|
|
73
|
+
onPageChangeCancel();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
clearKeyboardTimeout();
|
|
77
|
+
if (!gesture) {
|
|
78
|
+
// Always dismiss input, even if we don't have a ref to it
|
|
79
|
+
// We might not have the ref if onPageChangeStart was never called
|
|
80
|
+
// This can happen if page change was not from a gesture
|
|
81
|
+
Keyboard.dismiss();
|
|
82
|
+
} else if (active) {
|
|
83
|
+
const input = previouslyFocusedTextInputRef.current;
|
|
84
|
+
|
|
85
|
+
// Dismiss the keyboard only if an input was a focused before
|
|
86
|
+
// This makes sure we don't dismiss input on going back and focusing an input
|
|
87
|
+
input?.blur();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Cleanup the ID on successful page change
|
|
91
|
+
previouslyFocusedTextInputRef.current = undefined;
|
|
92
|
+
}, [clearKeyboardTimeout, onPageChangeCancel]);
|
|
93
|
+
|
|
94
|
+
// Dismiss keyboard when screen loses focus (e.g. when pushing a new screen).
|
|
95
|
+
// This handles the "navigate forward" case so we don't dismiss the new screen's
|
|
96
|
+
// auto-focused input from handleTransition.
|
|
97
|
+
React.useLayoutEffect(() => {
|
|
98
|
+
if (enabledRef.current && !focused) {
|
|
99
|
+
Keyboard.dismiss();
|
|
100
|
+
}
|
|
101
|
+
}, [focused]);
|
|
102
|
+
React.useLayoutEffect(() => {
|
|
103
|
+
enabledRef.current = enabled;
|
|
104
|
+
});
|
|
81
105
|
React.useEffect(() => {
|
|
82
106
|
return () => clearKeyboardTimeout();
|
|
83
107
|
}, [clearKeyboardTimeout]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Keyboard","TextInput","useKeyboardManager","
|
|
1
|
+
{"version":3,"names":["React","Keyboard","TextInput","useKeyboardManager","enabled","focused","previouslyFocusedTextInputRef","useRef","undefined","startTimestampRef","keyboardTimeoutRef","enabledRef","clearKeyboardTimeout","useCallback","current","clearTimeout","onPageChangeStart","input","State","currentlyFocusedInput","blur","Date","now","onPageChangeCancel","setTimeout","focus","onPageChangeConfirm","gesture","active","closing","dismiss","useLayoutEffect","useEffect"],"sourceRoot":"../../../src","sources":["utils/useKeyboardManager.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -48,17 +48,18 @@ function CardContainerInner({
|
|
|
48
48
|
direction
|
|
49
49
|
} = useLocale();
|
|
50
50
|
const parentHeaderHeight = React.useContext(HeaderHeightContext);
|
|
51
|
+
const {
|
|
52
|
+
options
|
|
53
|
+
} = scene.descriptor;
|
|
54
|
+
const enabled = focused && options.keyboardHandlingEnabled !== false;
|
|
51
55
|
const {
|
|
52
56
|
onPageChangeStart,
|
|
53
57
|
onPageChangeCancel,
|
|
54
58
|
onPageChangeConfirm
|
|
55
|
-
} = useKeyboardManager(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
} = scene.descriptor;
|
|
60
|
-
return navigation.isFocused() && options.keyboardHandlingEnabled !== false;
|
|
61
|
-
}, [scene.descriptor]));
|
|
59
|
+
} = useKeyboardManager({
|
|
60
|
+
enabled,
|
|
61
|
+
focused
|
|
62
|
+
});
|
|
62
63
|
const handleOpen = () => {
|
|
63
64
|
const {
|
|
64
65
|
route
|
|
@@ -115,13 +116,11 @@ function CardContainerInner({
|
|
|
115
116
|
const {
|
|
116
117
|
route
|
|
117
118
|
} = scene.descriptor;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
onPageChangeCancel?.();
|
|
124
|
-
}
|
|
119
|
+
onPageChangeConfirm?.({
|
|
120
|
+
gesture,
|
|
121
|
+
active,
|
|
122
|
+
closing
|
|
123
|
+
});
|
|
125
124
|
onTransitionStart?.({
|
|
126
125
|
route
|
|
127
126
|
}, closing);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","useLinkBuilder","useLocale","useTheme","React","StyleSheet","View","ModalPresentationContext","useKeyboardManager","Card","CardA11yWrapper","jsx","_jsx","jsxs","_jsxs","EPSILON","CardContainerInner","interpolationIndex","index","active","opening","closing","gesture","focused","modal","getPreviousScene","getFocusedRoute","hasAbsoluteFloatHeader","headerHeight","onHeaderHeightChange","isParentHeaderShown","isNextScreenTransparent","detachCurrentScreen","layout","onCloseRoute","onOpenRoute","onGestureCancel","onGestureEnd","onGestureStart","onTransitionEnd","onTransitionStart","preloaded","renderHeader","safeAreaInsetBottom","safeAreaInsetLeft","safeAreaInsetRight","safeAreaInsetTop","scene","wrapperRef","useRef","direction","parentHeaderHeight","useContext","
|
|
1
|
+
{"version":3,"names":["getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","useLinkBuilder","useLocale","useTheme","React","StyleSheet","View","ModalPresentationContext","useKeyboardManager","Card","CardA11yWrapper","jsx","_jsx","jsxs","_jsxs","EPSILON","CardContainerInner","interpolationIndex","index","active","opening","closing","gesture","focused","modal","getPreviousScene","getFocusedRoute","hasAbsoluteFloatHeader","headerHeight","onHeaderHeightChange","isParentHeaderShown","isNextScreenTransparent","detachCurrentScreen","layout","onCloseRoute","onOpenRoute","onGestureCancel","onGestureEnd","onGestureStart","onTransitionEnd","onTransitionStart","preloaded","renderHeader","safeAreaInsetBottom","safeAreaInsetLeft","safeAreaInsetRight","safeAreaInsetTop","scene","wrapperRef","useRef","direction","parentHeaderHeight","useContext","options","descriptor","enabled","keyboardHandlingEnabled","onPageChangeStart","onPageChangeCancel","onPageChangeConfirm","handleOpen","route","handleClose","handleGestureBegin","handleGestureCanceled","handleGestureEnd","handleTransition","current","setInert","insets","top","right","bottom","left","colors","useEffect","listener","progress","next","addListener","value","removeListener","presentation","animation","cardOverlay","cardOverlayEnabled","cardShadowEnabled","cardStyle","cardStyleInterpolator","gestureDirection","gestureEnabled","gestureResponseDistance","gestureVelocityImpact","headerMode","headerShown","transitionSpec","buildHref","previousScene","backTitle","href","name","params","canGoBack","headerBack","useMemo","title","undefined","animated","ref","children","onOpen","onClose","overlay","overlayEnabled","shadowEnabled","onTransition","onGestureBegin","onGestureCanceled","styleInterpolator","pageOverflowEnabled","containerStyle","marginTop","contentStyle","backgroundColor","background","style","styles","container","Provider","mode","scenes","onContentHeightChange","header","render","CardContainer","memo","create","flex","zIndex"],"sourceRoot":"../../../../src","sources":["views/Stack/CardContainer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
export declare function useKeyboardManager(
|
|
1
|
+
export declare function useKeyboardManager({ enabled, focused, }: {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
focused: boolean;
|
|
4
|
+
}): {
|
|
2
5
|
onPageChangeStart: () => void;
|
|
3
|
-
onPageChangeConfirm: (
|
|
6
|
+
onPageChangeConfirm: ({ gesture, active, closing, }: {
|
|
7
|
+
gesture: boolean;
|
|
8
|
+
active: boolean;
|
|
9
|
+
closing: boolean;
|
|
10
|
+
}) => void;
|
|
4
11
|
onPageChangeCancel: () => void;
|
|
5
12
|
};
|
|
6
13
|
//# sourceMappingURL=useKeyboardManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyboardManager.d.ts","sourceRoot":"","sources":["../../../../src/utils/useKeyboardManager.tsx"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"useKeyboardManager.d.ts","sourceRoot":"","sources":["../../../../src/utils/useKeyboardManager.tsx"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;;yDAqEM;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;KAClB;;EAqDJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardContainer.d.ts","sourceRoot":"","sources":["../../../../../src/views/Stack/CardContainer.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CardContainer.d.ts","sourceRoot":"","sources":["../../../../../src/views/Stack/CardContainer.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/stack",
|
|
3
3
|
"description": "Stack navigator component for iOS and Android with animated transitions and gestures",
|
|
4
|
-
"version": "7.8.
|
|
4
|
+
"version": "7.8.5",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native-component",
|
|
7
7
|
"react-component",
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"clean": "del lib"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@react-navigation/elements": "^2.9.
|
|
48
|
+
"@react-navigation/elements": "^2.9.10",
|
|
49
49
|
"color": "^4.2.3",
|
|
50
50
|
"use-latest-callback": "^0.2.4"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@jest/globals": "^30.0.0",
|
|
54
|
-
"@react-navigation/native": "^7.1.
|
|
54
|
+
"@react-navigation/native": "^7.1.33",
|
|
55
55
|
"@testing-library/react-native": "^13.2.1",
|
|
56
56
|
"@types/color": "^4.2.0",
|
|
57
57
|
"@types/react": "~19.0.10",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"typescript": "^5.9.2"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
69
|
-
"@react-navigation/native": "^7.1.
|
|
69
|
+
"@react-navigation/native": "^7.1.33",
|
|
70
70
|
"react": ">= 18.2.0",
|
|
71
71
|
"react-native": "*",
|
|
72
72
|
"react-native-gesture-handler": ">= 2.0.0",
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
]
|
|
92
92
|
]
|
|
93
93
|
},
|
|
94
|
-
"gitHead": "
|
|
94
|
+
"gitHead": "bec4f7d19749fef6741a88d072c1cd2ab733f46d"
|
|
95
95
|
}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { type HostInstance, Keyboard, TextInput } from 'react-native';
|
|
3
3
|
|
|
4
|
-
export function useKeyboardManager(
|
|
4
|
+
export function useKeyboardManager({
|
|
5
|
+
enabled,
|
|
6
|
+
focused,
|
|
7
|
+
}: {
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
focused: boolean;
|
|
10
|
+
}) {
|
|
5
11
|
// Numeric id of the previously focused text input
|
|
6
12
|
// When a gesture didn't change the tab, we can restore the focused input with this
|
|
7
13
|
const previouslyFocusedTextInputRef = React.useRef<HostInstance>(undefined);
|
|
8
14
|
const startTimestampRef = React.useRef<number>(0);
|
|
9
15
|
const keyboardTimeoutRef = React.useRef<NodeJS.Timeout>(undefined);
|
|
16
|
+
const enabledRef = React.useRef(enabled);
|
|
10
17
|
|
|
11
18
|
const clearKeyboardTimeout = React.useCallback(() => {
|
|
12
19
|
if (keyboardTimeoutRef.current !== undefined) {
|
|
@@ -16,7 +23,7 @@ export function useKeyboardManager(isEnabled: () => boolean) {
|
|
|
16
23
|
}, []);
|
|
17
24
|
|
|
18
25
|
const onPageChangeStart = React.useCallback(() => {
|
|
19
|
-
if (!
|
|
26
|
+
if (!enabledRef.current) {
|
|
20
27
|
return;
|
|
21
28
|
}
|
|
22
29
|
|
|
@@ -32,37 +39,10 @@ export function useKeyboardManager(isEnabled: () => boolean) {
|
|
|
32
39
|
|
|
33
40
|
// Store timestamp for touch start
|
|
34
41
|
startTimestampRef.current = Date.now();
|
|
35
|
-
}, [clearKeyboardTimeout
|
|
36
|
-
|
|
37
|
-
const onPageChangeConfirm = React.useCallback(
|
|
38
|
-
(force: boolean) => {
|
|
39
|
-
if (!isEnabled()) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
clearKeyboardTimeout();
|
|
44
|
-
|
|
45
|
-
if (force) {
|
|
46
|
-
// Always dismiss input, even if we don't have a ref to it
|
|
47
|
-
// We might not have the ref if onPageChangeStart was never called
|
|
48
|
-
// This can happen if page change was not from a gesture
|
|
49
|
-
Keyboard.dismiss();
|
|
50
|
-
} else {
|
|
51
|
-
const input = previouslyFocusedTextInputRef.current;
|
|
52
|
-
|
|
53
|
-
// Dismiss the keyboard only if an input was a focused before
|
|
54
|
-
// This makes sure we don't dismiss input on going back and focusing an input
|
|
55
|
-
input?.blur();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Cleanup the ID on successful page change
|
|
59
|
-
previouslyFocusedTextInputRef.current = undefined;
|
|
60
|
-
},
|
|
61
|
-
[clearKeyboardTimeout, isEnabled]
|
|
62
|
-
);
|
|
42
|
+
}, [clearKeyboardTimeout]);
|
|
63
43
|
|
|
64
44
|
const onPageChangeCancel = React.useCallback(() => {
|
|
65
|
-
if (!
|
|
45
|
+
if (!enabledRef.current) {
|
|
66
46
|
return;
|
|
67
47
|
}
|
|
68
48
|
|
|
@@ -89,7 +69,60 @@ export function useKeyboardManager(isEnabled: () => boolean) {
|
|
|
89
69
|
previouslyFocusedTextInputRef.current = undefined;
|
|
90
70
|
}
|
|
91
71
|
}
|
|
92
|
-
}, [clearKeyboardTimeout
|
|
72
|
+
}, [clearKeyboardTimeout]);
|
|
73
|
+
|
|
74
|
+
const onPageChangeConfirm = React.useCallback(
|
|
75
|
+
({
|
|
76
|
+
gesture,
|
|
77
|
+
active,
|
|
78
|
+
closing,
|
|
79
|
+
}: {
|
|
80
|
+
gesture: boolean;
|
|
81
|
+
active: boolean;
|
|
82
|
+
closing: boolean;
|
|
83
|
+
}) => {
|
|
84
|
+
if (!enabledRef.current) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (!closing) {
|
|
89
|
+
onPageChangeCancel();
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
clearKeyboardTimeout();
|
|
94
|
+
|
|
95
|
+
if (!gesture) {
|
|
96
|
+
// Always dismiss input, even if we don't have a ref to it
|
|
97
|
+
// We might not have the ref if onPageChangeStart was never called
|
|
98
|
+
// This can happen if page change was not from a gesture
|
|
99
|
+
Keyboard.dismiss();
|
|
100
|
+
} else if (active) {
|
|
101
|
+
const input = previouslyFocusedTextInputRef.current;
|
|
102
|
+
|
|
103
|
+
// Dismiss the keyboard only if an input was a focused before
|
|
104
|
+
// This makes sure we don't dismiss input on going back and focusing an input
|
|
105
|
+
input?.blur();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Cleanup the ID on successful page change
|
|
109
|
+
previouslyFocusedTextInputRef.current = undefined;
|
|
110
|
+
},
|
|
111
|
+
[clearKeyboardTimeout, onPageChangeCancel]
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
// Dismiss keyboard when screen loses focus (e.g. when pushing a new screen).
|
|
115
|
+
// This handles the "navigate forward" case so we don't dismiss the new screen's
|
|
116
|
+
// auto-focused input from handleTransition.
|
|
117
|
+
React.useLayoutEffect(() => {
|
|
118
|
+
if (enabledRef.current && !focused) {
|
|
119
|
+
Keyboard.dismiss();
|
|
120
|
+
}
|
|
121
|
+
}, [focused]);
|
|
122
|
+
|
|
123
|
+
React.useLayoutEffect(() => {
|
|
124
|
+
enabledRef.current = enabled;
|
|
125
|
+
});
|
|
93
126
|
|
|
94
127
|
React.useEffect(() => {
|
|
95
128
|
return () => clearKeyboardTimeout();
|
|
@@ -101,16 +101,11 @@ function CardContainerInner({
|
|
|
101
101
|
|
|
102
102
|
const parentHeaderHeight = React.useContext(HeaderHeightContext);
|
|
103
103
|
|
|
104
|
+
const { options } = scene.descriptor;
|
|
105
|
+
const enabled = focused && options.keyboardHandlingEnabled !== false;
|
|
106
|
+
|
|
104
107
|
const { onPageChangeStart, onPageChangeCancel, onPageChangeConfirm } =
|
|
105
|
-
useKeyboardManager(
|
|
106
|
-
React.useCallback(() => {
|
|
107
|
-
const { options, navigation } = scene.descriptor;
|
|
108
|
-
|
|
109
|
-
return (
|
|
110
|
-
navigation.isFocused() && options.keyboardHandlingEnabled !== false
|
|
111
|
-
);
|
|
112
|
-
}, [scene.descriptor])
|
|
113
|
-
);
|
|
108
|
+
useKeyboardManager({ enabled, focused });
|
|
114
109
|
|
|
115
110
|
const handleOpen = () => {
|
|
116
111
|
const { route } = scene.descriptor;
|
|
@@ -157,13 +152,7 @@ function CardContainerInner({
|
|
|
157
152
|
|
|
158
153
|
const { route } = scene.descriptor;
|
|
159
154
|
|
|
160
|
-
|
|
161
|
-
onPageChangeConfirm?.(true);
|
|
162
|
-
} else if (active && closing) {
|
|
163
|
-
onPageChangeConfirm?.(false);
|
|
164
|
-
} else {
|
|
165
|
-
onPageChangeCancel?.();
|
|
166
|
-
}
|
|
155
|
+
onPageChangeConfirm?.({ gesture, active, closing });
|
|
167
156
|
|
|
168
157
|
onTransitionStart?.({ route }, closing);
|
|
169
158
|
};
|