@react-navigation/stack 8.0.0-alpha.33 → 8.0.0-alpha.35
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 +25 -4
- package/lib/module/utils/useKeyboardManager.js.map +1 -1
- package/lib/module/views/Stack/CardContainer.js +5 -2
- package/lib/module/views/Stack/CardContainer.js.map +1 -1
- package/lib/typescript/src/utils/useKeyboardManager.d.ts +4 -1
- 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 +32 -3
- package/src/views/Stack/CardContainer.tsx +8 -3
|
@@ -4,7 +4,8 @@ import * as React from 'react';
|
|
|
4
4
|
import { Keyboard, TextInput } from 'react-native';
|
|
5
5
|
export function useKeyboardManager({
|
|
6
6
|
enabled,
|
|
7
|
-
focused
|
|
7
|
+
focused,
|
|
8
|
+
contentRef
|
|
8
9
|
}) {
|
|
9
10
|
// Numeric id of the previously focused text input
|
|
10
11
|
// When a gesture didn't change the tab, we can restore the focused input with this
|
|
@@ -12,6 +13,7 @@ export function useKeyboardManager({
|
|
|
12
13
|
const startTimestampRef = React.useRef(0);
|
|
13
14
|
const keyboardTimeoutRef = React.useRef(undefined);
|
|
14
15
|
const enabledRef = React.useRef(enabled);
|
|
16
|
+
const focusedRef = React.useRef(focused);
|
|
15
17
|
const clearKeyboardTimeout = React.useCallback(() => {
|
|
16
18
|
if (keyboardTimeoutRef.current !== undefined) {
|
|
17
19
|
clearTimeout(keyboardTimeoutRef.current);
|
|
@@ -19,7 +21,7 @@ export function useKeyboardManager({
|
|
|
19
21
|
}
|
|
20
22
|
}, []);
|
|
21
23
|
const onPageChangeStart = React.useCallback(() => {
|
|
22
|
-
if (!enabledRef.current) {
|
|
24
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
23
25
|
return;
|
|
24
26
|
}
|
|
25
27
|
clearKeyboardTimeout();
|
|
@@ -35,7 +37,7 @@ export function useKeyboardManager({
|
|
|
35
37
|
startTimestampRef.current = Date.now();
|
|
36
38
|
}, [clearKeyboardTimeout]);
|
|
37
39
|
const onPageChangeCancel = React.useCallback(() => {
|
|
38
|
-
if (!enabledRef.current) {
|
|
40
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
39
41
|
return;
|
|
40
42
|
}
|
|
41
43
|
clearKeyboardTimeout();
|
|
@@ -66,7 +68,7 @@ export function useKeyboardManager({
|
|
|
66
68
|
active,
|
|
67
69
|
closing
|
|
68
70
|
}) => {
|
|
69
|
-
if (!enabledRef.current) {
|
|
71
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
70
72
|
return;
|
|
71
73
|
}
|
|
72
74
|
if (!closing) {
|
|
@@ -99,8 +101,27 @@ export function useKeyboardManager({
|
|
|
99
101
|
Keyboard.dismiss();
|
|
100
102
|
}
|
|
101
103
|
}, [focused]);
|
|
104
|
+
|
|
105
|
+
// Dismiss keyboard if native focus is restored to an input in an unfocused screen.
|
|
106
|
+
// This can happen after dismissing a native alert when `autoFocus` is used on iOS.
|
|
107
|
+
React.useEffect(() => {
|
|
108
|
+
const blurInputInScreen = () => {
|
|
109
|
+
if (focusedRef.current || !enabledRef.current) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const input = TextInput.State.currentlyFocusedInput();
|
|
113
|
+
if (input && contentRef.current?.contains(input)) {
|
|
114
|
+
input.blur();
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const subscriptions = [Keyboard.addListener('keyboardWillShow', blurInputInScreen), Keyboard.addListener('keyboardDidShow', blurInputInScreen)];
|
|
118
|
+
return () => {
|
|
119
|
+
subscriptions.forEach(subscription => subscription.remove());
|
|
120
|
+
};
|
|
121
|
+
}, [contentRef]);
|
|
102
122
|
React.useLayoutEffect(() => {
|
|
103
123
|
enabledRef.current = enabled;
|
|
124
|
+
focusedRef.current = focused;
|
|
104
125
|
});
|
|
105
126
|
React.useEffect(() => {
|
|
106
127
|
return () => clearKeyboardTimeout();
|
|
@@ -1 +1 @@
|
|
|
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":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAA4BC,QAAQ,EAAEC,SAAS,QAAQ,cAAc;AAErE,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,OAAO;EACPC;
|
|
1
|
+
{"version":3,"names":["React","Keyboard","TextInput","useKeyboardManager","enabled","focused","contentRef","previouslyFocusedTextInputRef","useRef","undefined","startTimestampRef","keyboardTimeoutRef","enabledRef","focusedRef","clearKeyboardTimeout","useCallback","current","clearTimeout","onPageChangeStart","input","State","currentlyFocusedInput","blur","Date","now","onPageChangeCancel","setTimeout","focus","onPageChangeConfirm","gesture","active","closing","dismiss","useLayoutEffect","useEffect","blurInputInScreen","contains","subscriptions","addListener","forEach","subscription","remove"],"sourceRoot":"../../../src","sources":["utils/useKeyboardManager.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -46,14 +46,16 @@ function CardContainerInner({
|
|
|
46
46
|
const {
|
|
47
47
|
options
|
|
48
48
|
} = scene.descriptor;
|
|
49
|
-
const enabled =
|
|
49
|
+
const enabled = options.keyboardHandlingEnabled !== false;
|
|
50
|
+
const contentRef = React.useRef(null);
|
|
50
51
|
const {
|
|
51
52
|
onPageChangeStart,
|
|
52
53
|
onPageChangeCancel,
|
|
53
54
|
onPageChangeConfirm
|
|
54
55
|
} = useKeyboardManager({
|
|
55
56
|
enabled,
|
|
56
|
-
focused
|
|
57
|
+
focused,
|
|
58
|
+
contentRef
|
|
57
59
|
});
|
|
58
60
|
const handleOpen = () => {
|
|
59
61
|
const {
|
|
@@ -203,6 +205,7 @@ function CardContainerInner({
|
|
|
203
205
|
backgroundColor: presentation === 'transparentModal' ? 'transparent' : colors.background
|
|
204
206
|
}, cardStyle],
|
|
205
207
|
children: /*#__PURE__*/_jsx(View, {
|
|
208
|
+
ref: contentRef,
|
|
206
209
|
style: styles.container,
|
|
207
210
|
children: /*#__PURE__*/_jsxs(ModalPresentationContext.Provider, {
|
|
208
211
|
value: modal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","useLinkBuilder","useLocale","useTheme","React","StyleSheet","View","ModalPresentationContext","useKeyboardManager","Card","jsx","_jsx","jsxs","_jsxs","CardContainerInner","interpolationIndex","index","active","opening","closing","gesture","focused","modal","getPreviousScene","getFocusedRoute","headerHeight","onHeaderHeightChange","isParentHeaderShown","layout","onCloseRoute","onOpenRoute","onGestureCancel","onGestureEnd","onGestureStart","onTransitionEnd","onTransitionStart","preloaded","renderHeader","safeAreaInsetBottom","safeAreaInsetLeft","safeAreaInsetRight","safeAreaInsetTop","scene","children","direction","parentHeaderHeight","use","options","descriptor","enabled","keyboardHandlingEnabled","onPageChangeStart","onPageChangeCancel","onPageChangeConfirm","handleOpen","route","handleClose","handleGestureBegin","handleGestureCanceled","handleGestureEnd","handleTransition","insets","top","right","bottom","left","colors","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","current","progress","next","onOpen","onClose","overlay","overlayEnabled","shadowEnabled","onTransition","onGestureBegin","onGestureCanceled","styleInterpolator","pageOverflowEnabled","contentStyle","backgroundColor","background","style","styles","container","Provider","value","mode","scenes","contentHeight","onContentHeightChange","header","CardContainer","memo","create","flex","zIndex"],"sourceRoot":"../../../../src","sources":["views/Stack/CardContainer.tsx"],"mappings":";;AAAA,SACEA,cAAc,EACdC,iBAAiB,EACjBC,mBAAmB,EACnBC,kBAAkB,QACb,4BAA4B;AACnC,SAEEC,cAAc,EACdC,SAAS,EACTC,QAAQ,QACH,0BAA0B;AACjC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAAmBC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAGzD,SAASC,wBAAwB,QAAQ,yCAAsC;AAC/E,SAASC,kBAAkB,QAAQ,mCAAgC;AAKnE,SAASC,IAAI,QAAQ,WAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAwC9B,SAASC,kBAAkBA,CAAC;EAC1BC,kBAAkB;EAClBC,KAAK;EACLC,MAAM;EACNC,OAAO;EACPC,OAAO;EACPC,OAAO;EACPC,OAAO;EACPC,KAAK;EACLC,gBAAgB;EAChBC,eAAe;EACfC,YAAY;EACZC,oBAAoB;EACpBC,mBAAmB;EACnBC,MAAM;EACNC,YAAY;EACZC,WAAW;EACXC,eAAe;EACfC,YAAY;EACZC,cAAc;EACdC,eAAe;EACfC,iBAAiB;EACjBC,SAAS;EACTC,YAAY;EACZC,mBAAmB;EACnBC,iBAAiB;EACjBC,kBAAkB;EAClBC,gBAAgB;EAChBC,KAAK;EACLC;AACK,CAAC,EAAE;EACR,MAAM;IAAEC;EAAU,CAAC,GAAG1C,SAAS,CAAC,CAAC;EAEjC,MAAM2C,kBAAkB,GAAGzC,KAAK,CAAC0C,GAAG,CAAC/C,mBAAmB,CAAC;EAEzD,MAAM;IAAEgD;EAAQ,CAAC,GAAGL,KAAK,CAACM,UAAU;EACpC,MAAMC,OAAO,
|
|
1
|
+
{"version":3,"names":["getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","useLinkBuilder","useLocale","useTheme","React","StyleSheet","View","ModalPresentationContext","useKeyboardManager","Card","jsx","_jsx","jsxs","_jsxs","CardContainerInner","interpolationIndex","index","active","opening","closing","gesture","focused","modal","getPreviousScene","getFocusedRoute","headerHeight","onHeaderHeightChange","isParentHeaderShown","layout","onCloseRoute","onOpenRoute","onGestureCancel","onGestureEnd","onGestureStart","onTransitionEnd","onTransitionStart","preloaded","renderHeader","safeAreaInsetBottom","safeAreaInsetLeft","safeAreaInsetRight","safeAreaInsetTop","scene","children","direction","parentHeaderHeight","use","options","descriptor","enabled","keyboardHandlingEnabled","contentRef","useRef","onPageChangeStart","onPageChangeCancel","onPageChangeConfirm","handleOpen","route","handleClose","handleGestureBegin","handleGestureCanceled","handleGestureEnd","handleTransition","insets","top","right","bottom","left","colors","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","current","progress","next","onOpen","onClose","overlay","overlayEnabled","shadowEnabled","onTransition","onGestureBegin","onGestureCanceled","styleInterpolator","pageOverflowEnabled","contentStyle","backgroundColor","background","ref","style","styles","container","Provider","value","mode","scenes","contentHeight","onContentHeightChange","header","CardContainer","memo","create","flex","zIndex"],"sourceRoot":"../../../../src","sources":["views/Stack/CardContainer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type HostInstance } from 'react-native';
|
|
3
|
+
export declare function useKeyboardManager({ enabled, focused, contentRef, }: {
|
|
2
4
|
enabled: boolean;
|
|
3
5
|
focused: boolean;
|
|
6
|
+
contentRef: React.RefObject<HostInstance | null>;
|
|
4
7
|
}): {
|
|
5
8
|
onPageChangeStart: () => void;
|
|
6
9
|
onPageChangeConfirm: ({ gesture, active, closing, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyboardManager.d.ts","sourceRoot":"","sources":["../../../../src/utils/useKeyboardManager.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useKeyboardManager.d.ts","sourceRoot":"","sources":["../../../../src/utils/useKeyboardManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,cAAc,CAAC;AAEtE,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,OAAO,EACP,UAAU,GACX,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CAClD;;yDAuEM;QACD,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;KAClB;;EA+EJ"}
|
|
@@ -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": "8.0.0-alpha.
|
|
4
|
+
"version": "8.0.0-alpha.35",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native-component",
|
|
7
7
|
"react-component",
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
"clean": "del lib"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@react-navigation/elements": "^3.0.0-alpha.
|
|
48
|
+
"@react-navigation/elements": "^3.0.0-alpha.30",
|
|
49
49
|
"use-latest-callback": "^0.3.3"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@jest/globals": "^30.3.0",
|
|
53
|
-
"@react-navigation/native": "^8.0.0-alpha.
|
|
53
|
+
"@react-navigation/native": "^8.0.0-alpha.27",
|
|
54
54
|
"@testing-library/react-native": "^13.3.3",
|
|
55
55
|
"@types/react": "~19.2.2",
|
|
56
56
|
"del-cli": "^7.0.0",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"typescript": "^6.0.2"
|
|
65
65
|
},
|
|
66
66
|
"peerDependencies": {
|
|
67
|
-
"@react-navigation/native": "^8.0.0-alpha.
|
|
67
|
+
"@react-navigation/native": "^8.0.0-alpha.27",
|
|
68
68
|
"react": ">= 19.2.0",
|
|
69
69
|
"react-native": "*",
|
|
70
70
|
"react-native-gesture-handler": ">= 2.0.0",
|
|
@@ -89,5 +89,5 @@
|
|
|
89
89
|
]
|
|
90
90
|
]
|
|
91
91
|
},
|
|
92
|
-
"gitHead": "
|
|
92
|
+
"gitHead": "b7aefd9b75d991723412d30505221d00debf3665"
|
|
93
93
|
}
|
|
@@ -4,9 +4,11 @@ import { type HostInstance, Keyboard, TextInput } from 'react-native';
|
|
|
4
4
|
export function useKeyboardManager({
|
|
5
5
|
enabled,
|
|
6
6
|
focused,
|
|
7
|
+
contentRef,
|
|
7
8
|
}: {
|
|
8
9
|
enabled: boolean;
|
|
9
10
|
focused: boolean;
|
|
11
|
+
contentRef: React.RefObject<HostInstance | null>;
|
|
10
12
|
}) {
|
|
11
13
|
// Numeric id of the previously focused text input
|
|
12
14
|
// When a gesture didn't change the tab, we can restore the focused input with this
|
|
@@ -15,6 +17,7 @@ export function useKeyboardManager({
|
|
|
15
17
|
const keyboardTimeoutRef =
|
|
16
18
|
React.useRef<ReturnType<typeof setTimeout>>(undefined);
|
|
17
19
|
const enabledRef = React.useRef(enabled);
|
|
20
|
+
const focusedRef = React.useRef(focused);
|
|
18
21
|
|
|
19
22
|
const clearKeyboardTimeout = React.useCallback(() => {
|
|
20
23
|
if (keyboardTimeoutRef.current !== undefined) {
|
|
@@ -24,7 +27,7 @@ export function useKeyboardManager({
|
|
|
24
27
|
}, []);
|
|
25
28
|
|
|
26
29
|
const onPageChangeStart = React.useCallback(() => {
|
|
27
|
-
if (!enabledRef.current) {
|
|
30
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
28
31
|
return;
|
|
29
32
|
}
|
|
30
33
|
|
|
@@ -43,7 +46,7 @@ export function useKeyboardManager({
|
|
|
43
46
|
}, [clearKeyboardTimeout]);
|
|
44
47
|
|
|
45
48
|
const onPageChangeCancel = React.useCallback(() => {
|
|
46
|
-
if (!enabledRef.current) {
|
|
49
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
47
50
|
return;
|
|
48
51
|
}
|
|
49
52
|
|
|
@@ -82,7 +85,7 @@ export function useKeyboardManager({
|
|
|
82
85
|
active: boolean;
|
|
83
86
|
closing: boolean;
|
|
84
87
|
}) => {
|
|
85
|
-
if (!enabledRef.current) {
|
|
88
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
86
89
|
return;
|
|
87
90
|
}
|
|
88
91
|
|
|
@@ -121,8 +124,34 @@ export function useKeyboardManager({
|
|
|
121
124
|
}
|
|
122
125
|
}, [focused]);
|
|
123
126
|
|
|
127
|
+
// Dismiss keyboard if native focus is restored to an input in an unfocused screen.
|
|
128
|
+
// This can happen after dismissing a native alert when `autoFocus` is used on iOS.
|
|
129
|
+
React.useEffect(() => {
|
|
130
|
+
const blurInputInScreen = () => {
|
|
131
|
+
if (focusedRef.current || !enabledRef.current) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const input = TextInput.State.currentlyFocusedInput();
|
|
136
|
+
|
|
137
|
+
if (input && contentRef.current?.contains(input)) {
|
|
138
|
+
input.blur();
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
const subscriptions = [
|
|
143
|
+
Keyboard.addListener('keyboardWillShow', blurInputInScreen),
|
|
144
|
+
Keyboard.addListener('keyboardDidShow', blurInputInScreen),
|
|
145
|
+
];
|
|
146
|
+
|
|
147
|
+
return () => {
|
|
148
|
+
subscriptions.forEach((subscription) => subscription.remove());
|
|
149
|
+
};
|
|
150
|
+
}, [contentRef]);
|
|
151
|
+
|
|
124
152
|
React.useLayoutEffect(() => {
|
|
125
153
|
enabledRef.current = enabled;
|
|
154
|
+
focusedRef.current = focused;
|
|
126
155
|
});
|
|
127
156
|
|
|
128
157
|
React.useEffect(() => {
|
|
@@ -96,10 +96,15 @@ function CardContainerInner({
|
|
|
96
96
|
const parentHeaderHeight = React.use(HeaderHeightContext);
|
|
97
97
|
|
|
98
98
|
const { options } = scene.descriptor;
|
|
99
|
-
const enabled =
|
|
99
|
+
const enabled = options.keyboardHandlingEnabled !== false;
|
|
100
|
+
const contentRef = React.useRef<View>(null);
|
|
100
101
|
|
|
101
102
|
const { onPageChangeStart, onPageChangeCancel, onPageChangeConfirm } =
|
|
102
|
-
useKeyboardManager({
|
|
103
|
+
useKeyboardManager({
|
|
104
|
+
enabled,
|
|
105
|
+
focused,
|
|
106
|
+
contentRef,
|
|
107
|
+
});
|
|
103
108
|
|
|
104
109
|
const handleOpen = () => {
|
|
105
110
|
const { route } = scene.descriptor;
|
|
@@ -241,7 +246,7 @@ function CardContainerInner({
|
|
|
241
246
|
cardStyle,
|
|
242
247
|
]}
|
|
243
248
|
>
|
|
244
|
-
<View style={styles.container}>
|
|
249
|
+
<View ref={contentRef} style={styles.container}>
|
|
245
250
|
<ModalPresentationContext.Provider value={modal}>
|
|
246
251
|
{headerMode !== 'float'
|
|
247
252
|
? renderHeader({
|