expo-router 7.0.0-canary-20260114-d8e19f5 → 7.0.0-canary-20260119-70f7c28
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/android/build.gradle +2 -2
- package/build/ExpoRoot.d.ts.map +1 -1
- package/build/ExpoRoot.js +2 -0
- package/build/ExpoRoot.js.map +1 -1
- package/build/global.d.ts +29 -0
- package/build/global.d.ts.map +1 -0
- package/build/global.js +3 -0
- package/build/global.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/layouts/Stack.d.ts.map +1 -1
- package/build/layouts/Stack.js +3 -0
- package/build/layouts/Stack.js.map +1 -1
- package/build/layouts/Stack.web.js +1 -0
- package/build/layouts/Stack.web.js.map +1 -1
- package/build/layouts/StackClient.d.ts +13 -14
- package/build/layouts/StackClient.d.ts.map +1 -1
- package/build/layouts/StackClient.js +3 -2
- package/build/layouts/StackClient.js.map +1 -1
- package/build/layouts/stack-utils/StackHeaderComponent.d.ts +12 -23
- package/build/layouts/stack-utils/StackHeaderComponent.d.ts.map +1 -1
- package/build/layouts/stack-utils/StackHeaderComponent.js +15 -55
- package/build/layouts/stack-utils/StackHeaderComponent.js.map +1 -1
- package/build/layouts/stack-utils/StackScreen.d.ts +5 -0
- package/build/layouts/stack-utils/StackScreen.d.ts.map +1 -1
- package/build/layouts/stack-utils/StackScreen.js +34 -7
- package/build/layouts/stack-utils/StackScreen.js.map +1 -1
- package/build/layouts/stack-utils/StackSearchBar.d.ts +28 -0
- package/build/layouts/stack-utils/StackSearchBar.d.ts.map +1 -1
- package/build/layouts/stack-utils/StackSearchBar.js +29 -0
- package/build/layouts/stack-utils/StackSearchBar.js.map +1 -1
- package/build/layouts/stack-utils/common-primitives.d.ts +6 -6
- package/build/layouts/stack-utils/common-primitives.d.ts.map +1 -1
- package/build/layouts/stack-utils/common-primitives.js +4 -4
- package/build/layouts/stack-utils/common-primitives.js.map +1 -1
- package/build/layouts/stack-utils/index.d.ts +4 -23
- package/build/layouts/stack-utils/index.d.ts.map +1 -1
- package/build/layouts/stack-utils/index.js +18 -35
- package/build/layouts/stack-utils/index.js.map +1 -1
- package/build/layouts/stack-utils/screen/StackScreenBackButton.d.ts +68 -0
- package/build/layouts/stack-utils/screen/StackScreenBackButton.d.ts.map +1 -0
- package/build/layouts/stack-utils/screen/StackScreenBackButton.js +58 -0
- package/build/layouts/stack-utils/screen/StackScreenBackButton.js.map +1 -0
- package/build/layouts/stack-utils/screen/StackScreenTitle.d.ts +58 -0
- package/build/layouts/stack-utils/screen/StackScreenTitle.d.ts.map +1 -0
- package/build/layouts/stack-utils/screen/StackScreenTitle.js +75 -0
- package/build/layouts/stack-utils/screen/StackScreenTitle.js.map +1 -0
- package/build/layouts/stack-utils/screen/index.d.ts +3 -0
- package/build/layouts/stack-utils/screen/index.d.ts.map +1 -0
- package/build/layouts/stack-utils/screen/index.js +10 -0
- package/build/layouts/stack-utils/screen/index.js.map +1 -0
- package/build/layouts/stack-utils/shared.js +3 -3
- package/build/layouts/stack-utils/shared.js.map +1 -1
- package/build/layouts/stack-utils/toolbar/StackToolbar.d.ts +3 -0
- package/build/layouts/stack-utils/toolbar/StackToolbar.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbar.js +24 -0
- package/build/layouts/stack-utils/toolbar/StackToolbar.js.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarButton.d.ts +144 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarButton.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarButton.js +68 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarButton.js.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarClient.d.ts +104 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarClient.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarClient.js +214 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarClient.js.map +1 -0
- package/build/layouts/stack-utils/{StackHeaderMenu.d.ts → toolbar/StackToolbarMenu.d.ts} +58 -106
- package/build/layouts/stack-utils/toolbar/StackToolbarMenu.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarMenu.js +190 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarMenu.js.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarSearchBarSlot.d.ts +48 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarSearchBarSlot.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarSearchBarSlot.js +44 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarSearchBarSlot.js.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarSpacer.d.ts +80 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarSpacer.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarSpacer.js +77 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarSpacer.js.map +1 -0
- package/build/layouts/stack-utils/{StackHeaderView.d.ts → toolbar/StackToolbarView.d.ts} +21 -17
- package/build/layouts/stack-utils/toolbar/StackToolbarView.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarView.js +61 -0
- package/build/layouts/stack-utils/toolbar/StackToolbarView.js.map +1 -0
- package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.d.ts +93 -0
- package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.js +89 -0
- package/build/layouts/stack-utils/toolbar/bottom-toolbar-native-elements.js.map +1 -0
- package/build/layouts/stack-utils/toolbar/context.d.ts +9 -0
- package/build/layouts/stack-utils/toolbar/context.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/context.js +16 -0
- package/build/layouts/stack-utils/toolbar/context.js.map +1 -0
- package/build/layouts/stack-utils/toolbar/index.d.ts +10 -0
- package/build/layouts/stack-utils/toolbar/index.d.ts.map +1 -0
- package/build/layouts/stack-utils/toolbar/index.js +23 -0
- package/build/layouts/stack-utils/toolbar/index.js.map +1 -0
- package/build/link/LinkWithPreview.d.ts.map +1 -1
- package/build/link/LinkWithPreview.js +8 -5
- package/build/link/LinkWithPreview.js.map +1 -1
- package/build/link/NativeMenuContext.d.ts +5 -0
- package/build/link/NativeMenuContext.d.ts.map +1 -0
- package/build/link/NativeMenuContext.js +9 -0
- package/build/link/NativeMenuContext.js.map +1 -0
- package/build/link/elements.d.ts +41 -0
- package/build/link/elements.d.ts.map +1 -1
- package/build/link/elements.js +3 -2
- package/build/link/elements.js.map +1 -1
- package/build/link/preview/native.d.ts +2 -0
- package/build/link/preview/native.d.ts.map +1 -1
- package/build/link/preview/native.js +3 -1
- package/build/link/preview/native.js.map +1 -1
- package/build/native-tabs/NativeBottomTabsNavigator.d.ts +1 -1
- package/build/native-tabs/NativeBottomTabsNavigator.d.ts.map +1 -1
- package/build/native-tabs/NativeBottomTabsNavigator.js +2 -1
- package/build/native-tabs/NativeBottomTabsNavigator.js.map +1 -1
- package/build/native-tabs/NativeTabTrigger.d.ts.map +1 -1
- package/build/native-tabs/NativeTabTrigger.js +6 -4
- package/build/native-tabs/NativeTabTrigger.js.map +1 -1
- package/build/native-tabs/NativeTabsView.d.ts.map +1 -1
- package/build/native-tabs/NativeTabsView.js +0 -3
- package/build/native-tabs/NativeTabsView.js.map +1 -1
- package/build/native-tabs/common/elements.d.ts +10 -0
- package/build/native-tabs/common/elements.d.ts.map +1 -1
- package/build/native-tabs/common/elements.js.map +1 -1
- package/build/native-tabs/types.d.ts +6 -0
- package/build/native-tabs/types.d.ts.map +1 -1
- package/build/native-tabs/types.js.map +1 -1
- package/build/native-tabs/utils/icon.d.ts +2 -0
- package/build/native-tabs/utils/icon.d.ts.map +1 -1
- package/build/native-tabs/utils/icon.js +3 -0
- package/build/native-tabs/utils/icon.js.map +1 -1
- package/build/navigationEvents/index.d.ts +7 -24
- package/build/navigationEvents/index.d.ts.map +1 -1
- package/build/navigationEvents/index.js +47 -12
- package/build/navigationEvents/index.js.map +1 -1
- package/build/navigationEvents/types.d.ts +23 -0
- package/build/navigationEvents/types.d.ts.map +1 -0
- package/build/navigationEvents/types.js +3 -0
- package/build/navigationEvents/types.js.map +1 -0
- package/build/navigationEvents/utils.d.ts +9 -0
- package/build/navigationEvents/utils.d.ts.map +1 -0
- package/build/navigationEvents/utils.js +25 -0
- package/build/navigationEvents/utils.js.map +1 -0
- package/build/primitives/types.d.ts +6 -6
- package/build/primitives/types.d.ts.map +1 -1
- package/build/primitives/types.js.map +1 -1
- package/build/screensFeatureFlags.d.ts +2 -0
- package/build/screensFeatureFlags.d.ts.map +1 -0
- package/build/screensFeatureFlags.js +20 -0
- package/build/screensFeatureFlags.js.map +1 -0
- package/build/toolbar/native.types.d.ts +0 -14
- package/build/toolbar/native.types.d.ts.map +1 -1
- package/build/toolbar/native.types.js.map +1 -1
- package/build/ui/TabRouter.d.ts +14 -2
- package/build/ui/TabRouter.d.ts.map +1 -1
- package/build/ui/TabRouter.js +34 -4
- package/build/ui/TabRouter.js.map +1 -1
- package/build/useScreens.d.ts.map +1 -1
- package/build/useScreens.js +30 -15
- package/build/useScreens.js.map +1 -1
- package/expo-module.config.json +1 -1
- package/ios/LinkPreview/LinkPreviewNativeActionView.swift +18 -2
- package/ios/LinkPreview/LinkPreviewNativeModule.swift +3 -0
- package/ios/LinkPreview/LinkPreviewNativeNavigation.swift +2 -2
- package/ios/LinkPreview/LinkZoomTransition.swift +2 -2
- package/ios/Toolbar/RouterToolbarHostView.swift +68 -43
- package/ios/Toolbar/RouterToolbarItemView.swift +89 -21
- package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.module} +7 -7
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.module.md5 +1 -0
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.module.sha1 +1 -0
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.module.sha256 +1 -0
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.module.sha512 +1 -0
- package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.pom} +1 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.pom.md5 +1 -0
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.pom.sha1 +1 -0
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.pom.sha256 +1 -0
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.pom.sha512 +1 -0
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
- package/package.json +11 -13
- package/plugin/build/index.js +1 -1
- package/plugin/options.json +5 -0
- package/plugin/src/index.ts +1 -1
- package/build/layouts/stack-utils/StackHeaderBackButton.d.ts +0 -14
- package/build/layouts/stack-utils/StackHeaderBackButton.d.ts.map +0 -1
- package/build/layouts/stack-utils/StackHeaderBackButton.js +0 -19
- package/build/layouts/stack-utils/StackHeaderBackButton.js.map +0 -1
- package/build/layouts/stack-utils/StackHeaderButton.d.ts +0 -114
- package/build/layouts/stack-utils/StackHeaderButton.d.ts.map +0 -1
- package/build/layouts/stack-utils/StackHeaderButton.js +0 -49
- package/build/layouts/stack-utils/StackHeaderButton.js.map +0 -1
- package/build/layouts/stack-utils/StackHeaderLeftRight.d.ts +0 -119
- package/build/layouts/stack-utils/StackHeaderLeftRight.d.ts.map +0 -1
- package/build/layouts/stack-utils/StackHeaderLeftRight.js +0 -206
- package/build/layouts/stack-utils/StackHeaderLeftRight.js.map +0 -1
- package/build/layouts/stack-utils/StackHeaderMenu.d.ts.map +0 -1
- package/build/layouts/stack-utils/StackHeaderMenu.js +0 -214
- package/build/layouts/stack-utils/StackHeaderMenu.js.map +0 -1
- package/build/layouts/stack-utils/StackHeaderSpacer.d.ts +0 -46
- package/build/layouts/stack-utils/StackHeaderSpacer.d.ts.map +0 -1
- package/build/layouts/stack-utils/StackHeaderSpacer.js +0 -44
- package/build/layouts/stack-utils/StackHeaderSpacer.js.map +0 -1
- package/build/layouts/stack-utils/StackHeaderTitle.d.ts +0 -22
- package/build/layouts/stack-utils/StackHeaderTitle.d.ts.map +0 -1
- package/build/layouts/stack-utils/StackHeaderTitle.js +0 -36
- package/build/layouts/stack-utils/StackHeaderTitle.js.map +0 -1
- package/build/layouts/stack-utils/StackHeaderView.d.ts.map +0 -1
- package/build/layouts/stack-utils/StackHeaderView.js +0 -56
- package/build/layouts/stack-utils/StackHeaderView.js.map +0 -1
- package/build/toolbar/elements.d.ts +0 -417
- package/build/toolbar/elements.d.ts.map +0 -1
- package/build/toolbar/elements.js +0 -188
- package/build/toolbar/elements.js.map +0 -1
- package/build/toolbar/index.d.ts +0 -42
- package/build/toolbar/index.d.ts.map +0 -1
- package/build/toolbar/index.js +0 -49
- package/build/toolbar/index.js.map +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module.md5 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module.sha1 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module.sha256 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.module.sha512 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom.md5 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom.sha1 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom.sha256 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.pom.sha512 +0 -1
- package/unstable-toolbar.d.ts +0 -1
- package/unstable-toolbar.js +0 -1
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28-sources.jar} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar.md5 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28-sources.jar.md5} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar.sha1 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28-sources.jar.sha1} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar.sha256 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28-sources.jar.sha256} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5-sources.jar.sha512 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28-sources.jar.sha512} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.aar} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar.md5 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.aar.md5} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar.sha1 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.aar.sha1} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar.sha256 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.aar.sha256} +0 -0
- /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20260114-d8e19f5/expo.modules.router-7.0.0-canary-20260114-d8e19f5.aar.sha512 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.aar.sha512} +0 -0
|
@@ -4,42 +4,32 @@ exports.StackHeaderComponent = StackHeaderComponent;
|
|
|
4
4
|
exports.appendStackHeaderPropsToOptions = appendStackHeaderPropsToOptions;
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const react_native_1 = require("react-native");
|
|
7
|
-
const StackHeaderBackButton_1 = require("./StackHeaderBackButton");
|
|
8
|
-
const StackHeaderLeftRight_1 = require("./StackHeaderLeftRight");
|
|
9
|
-
const StackHeaderTitle_1 = require("./StackHeaderTitle");
|
|
10
|
-
const StackSearchBar_1 = require("./StackSearchBar");
|
|
11
|
-
const children_1 = require("../../utils/children");
|
|
12
7
|
const Screen_1 = require("../../views/Screen");
|
|
13
8
|
/**
|
|
14
|
-
* The component used to configure
|
|
9
|
+
* The component used to configure header styling for a stack screen.
|
|
15
10
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
11
|
+
* Use this component to set header appearance properties like blur effect, background color,
|
|
12
|
+
* and shadow visibility.
|
|
18
13
|
*
|
|
14
|
+
* @example
|
|
19
15
|
* ```tsx
|
|
20
16
|
* import { Stack } from 'expo-router';
|
|
21
17
|
*
|
|
22
18
|
* export default function Page() {
|
|
23
19
|
* return (
|
|
24
20
|
* <>
|
|
25
|
-
* <Stack.Header
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* </Stack.Header.Left>
|
|
30
|
-
* <Stack.Header.Right>
|
|
31
|
-
* <Stack.Header.Button onPress={() => alert('Right pressed')} />
|
|
32
|
-
* </Stack.Header.Right>
|
|
33
|
-
* </Stack.Header>
|
|
21
|
+
* <Stack.Header
|
|
22
|
+
* blurEffect="systemMaterial"
|
|
23
|
+
* style={{ backgroundColor: '#fff' }}
|
|
24
|
+
* />
|
|
34
25
|
* <ScreenContent />
|
|
35
26
|
* </>
|
|
36
27
|
* );
|
|
37
28
|
* }
|
|
38
29
|
* ```
|
|
39
30
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* Example (inside a layout):
|
|
31
|
+
* @example
|
|
32
|
+
* When used inside a layout with Stack.Screen:
|
|
43
33
|
* ```tsx
|
|
44
34
|
* import { Stack } from 'expo-router';
|
|
45
35
|
*
|
|
@@ -47,12 +37,7 @@ const Screen_1 = require("../../views/Screen");
|
|
|
47
37
|
* return (
|
|
48
38
|
* <Stack>
|
|
49
39
|
* <Stack.Screen name="index">
|
|
50
|
-
* <Stack.Header
|
|
51
|
-
* <Stack.Header.Title>Layout title</Stack.Header.Title>
|
|
52
|
-
* <Stack.Header.Right>
|
|
53
|
-
* <Stack.Header.Button onPress={() => alert('Right pressed')} />
|
|
54
|
-
* </Stack.Header.Right>
|
|
55
|
-
* </Stack.Header>
|
|
40
|
+
* <Stack.Header blurEffect="systemMaterial" />
|
|
56
41
|
* </Stack.Screen>
|
|
57
42
|
* </Stack>
|
|
58
43
|
* );
|
|
@@ -74,7 +59,10 @@ function appendStackHeaderPropsToOptions(options, props) {
|
|
|
74
59
|
if (props.asChild) {
|
|
75
60
|
return { ...options, header: () => props.children };
|
|
76
61
|
}
|
|
77
|
-
|
|
62
|
+
if (props.children && !props.asChild) {
|
|
63
|
+
console.warn(`To render a custom header, set the 'asChild' prop to true on Stack.Header.`);
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
78
66
|
...options,
|
|
79
67
|
headerShown: !props.hidden,
|
|
80
68
|
headerBlurEffect: props.blurEffect,
|
|
@@ -87,33 +75,5 @@ function appendStackHeaderPropsToOptions(options, props) {
|
|
|
87
75
|
headerShadowVisible: flattenedStyle?.shadowColor !== 'transparent',
|
|
88
76
|
headerLargeTitleShadowVisible: flattenedLargeStyle?.shadowColor !== 'transparent',
|
|
89
77
|
};
|
|
90
|
-
function appendChildOptions(child, options) {
|
|
91
|
-
let updatedOptions = options;
|
|
92
|
-
if ((0, children_1.isChildOfType)(child, StackHeaderTitle_1.StackHeaderTitle)) {
|
|
93
|
-
updatedOptions = (0, StackHeaderTitle_1.appendStackHeaderTitlePropsToOptions)(updatedOptions, child.props);
|
|
94
|
-
}
|
|
95
|
-
else if ((0, children_1.isChildOfType)(child, StackHeaderLeftRight_1.StackHeaderLeft)) {
|
|
96
|
-
updatedOptions = (0, StackHeaderLeftRight_1.appendStackHeaderLeftPropsToOptions)(updatedOptions, child.props);
|
|
97
|
-
}
|
|
98
|
-
else if ((0, children_1.isChildOfType)(child, StackHeaderLeftRight_1.StackHeaderRight)) {
|
|
99
|
-
updatedOptions = (0, StackHeaderLeftRight_1.appendStackHeaderRightPropsToOptions)(updatedOptions, child.props);
|
|
100
|
-
}
|
|
101
|
-
else if ((0, children_1.isChildOfType)(child, StackHeaderBackButton_1.StackHeaderBackButton)) {
|
|
102
|
-
updatedOptions = (0, StackHeaderBackButton_1.appendStackHeaderBackButtonPropsToOptions)(updatedOptions, child.props);
|
|
103
|
-
}
|
|
104
|
-
else if ((0, children_1.isChildOfType)(child, StackSearchBar_1.StackSearchBar)) {
|
|
105
|
-
updatedOptions = (0, StackSearchBar_1.appendStackSearchBarPropsToOptions)(updatedOptions, child.props);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
console.warn(`Warning: Unknown child element passed to Stack.Header: ${child.type.name ?? child.type}`);
|
|
109
|
-
}
|
|
110
|
-
return updatedOptions;
|
|
111
|
-
}
|
|
112
|
-
react_1.Children.forEach(props.children, (child) => {
|
|
113
|
-
if ((0, react_1.isValidElement)(child)) {
|
|
114
|
-
updatedOptions = appendChildOptions(child, updatedOptions);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
return updatedOptions;
|
|
118
78
|
}
|
|
119
79
|
//# sourceMappingURL=StackHeaderComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackHeaderComponent.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderComponent.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"StackHeaderComponent.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderComponent.tsx"],"names":[],"mappings":";;AA+FA,oDAKC;AAED,0EAgCC;AArID,iCAAgD;AAChD,+CAA2E;AAG3E,+CAA4C;AAmD5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,SAAgB,oBAAoB,CAAC,KAAuB;IAC1D,0DAA0D;IAC1D,gDAAgD;IAChD,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,+BAA+B,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,eAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,EAAG,CAAC;AAC7C,CAAC;AAED,SAAgB,+BAA+B,CAC7C,OAAqC,EACrC,KAAuB;IAEvB,MAAM,cAAc,GAAG,yBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,mBAAmB,GAAG,yBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEjE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QACV,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM;QAC1B,gBAAgB,EAAE,KAAK,CAAC,UAAU;QAClC,WAAW,EAAE;YACX,eAAe,EAAE,cAAc,EAAE,eAAqC;SACvE;QACD,gBAAgB,EAAE;YAChB,eAAe,EAAE,mBAAmB,EAAE,eAAqC;SAC5E;QACD,mBAAmB,EAAE,cAAc,EAAE,WAAW,KAAK,aAAa;QAClE,6BAA6B,EAAE,mBAAmB,EAAE,WAAW,KAAK,aAAa;KAClF,CAAC;AACJ,CAAC","sourcesContent":["import { NativeStackNavigationOptions } from '@react-navigation/native-stack';\nimport { useMemo, type ReactNode } from 'react';\nimport { StyleSheet, type ColorValue, type StyleProp } from 'react-native';\nimport type { ScreenStackHeaderConfigProps } from 'react-native-screens';\n\nimport { Screen } from '../../views/Screen';\n\nexport interface StackHeaderProps {\n /**\n * Child elements for custom header when `asChild` is true.\n */\n children?: ReactNode;\n /**\n * Whether to hide the header completely. When set to `true`, the header will not be rendered.\n *\n * @default false\n */\n hidden?: boolean;\n /**\n * When `true`, renders children as a custom header component, replacing the default header entirely.\n * Use this to implement fully custom header layouts.\n *\n * @default false\n */\n asChild?: boolean;\n /**\n * The blur effect to apply to the header background on iOS.\n * Common values include 'regular', 'prominent', 'systemMaterial', etc.\n *\n * @platform ios\n */\n blurEffect?: ScreenStackHeaderConfigProps['blurEffect'];\n /**\n * Style properties for the standard-sized header.\n * - `color`: Tint color for header elements (similar to tintColor in React Navigation)\n * - `backgroundColor`: Background color of the header\n * - `shadowColor`: Set to 'transparent' to hide the header shadow/border\n */\n style?: StyleProp<{\n color?: ColorValue; // tintColor from ReactNavigation\n backgroundColor?: ScreenStackHeaderConfigProps['backgroundColor'];\n shadowColor?: undefined | 'transparent';\n }>;\n /**\n * Style properties for the large title header (iOS).\n * - `backgroundColor`: Background color of the large title header\n * - `shadowColor`: Set to 'transparent' to hide the large title shadow/border\n *\n * @platform ios\n */\n largeStyle?: StyleProp<{\n backgroundColor?: ScreenStackHeaderConfigProps['largeTitleBackgroundColor'];\n shadowColor?: undefined | 'transparent';\n }>;\n}\n\n/**\n * The component used to configure header styling for a stack screen.\n *\n * Use this component to set header appearance properties like blur effect, background color,\n * and shadow visibility.\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * export default function Page() {\n * return (\n * <>\n * <Stack.Header\n * blurEffect=\"systemMaterial\"\n * style={{ backgroundColor: '#fff' }}\n * />\n * <ScreenContent />\n * </>\n * );\n * }\n * ```\n *\n * @example\n * When used inside a layout with Stack.Screen:\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * export default function Layout() {\n * return (\n * <Stack>\n * <Stack.Screen name=\"index\">\n * <Stack.Header blurEffect=\"systemMaterial\" />\n * </Stack.Screen>\n * </Stack>\n * );\n * }\n * ```\n */\nexport function StackHeaderComponent(props: StackHeaderProps) {\n // This component will only render when used inside a page\n // but only if it is not wrapped in Stack.Screen\n const updatedOptions = useMemo(() => appendStackHeaderPropsToOptions({}, props), [props]);\n return <Screen options={updatedOptions} />;\n}\n\nexport function appendStackHeaderPropsToOptions(\n options: NativeStackNavigationOptions,\n props: StackHeaderProps\n): NativeStackNavigationOptions {\n const flattenedStyle = StyleSheet.flatten(props.style);\n const flattenedLargeStyle = StyleSheet.flatten(props.largeStyle);\n\n if (props.hidden) {\n return { ...options, headerShown: false };\n }\n\n if (props.asChild) {\n return { ...options, header: () => props.children };\n }\n\n if (props.children && !props.asChild) {\n console.warn(`To render a custom header, set the 'asChild' prop to true on Stack.Header.`);\n }\n\n return {\n ...options,\n headerShown: !props.hidden,\n headerBlurEffect: props.blurEffect,\n headerStyle: {\n backgroundColor: flattenedStyle?.backgroundColor as string | undefined,\n },\n headerLargeStyle: {\n backgroundColor: flattenedLargeStyle?.backgroundColor as string | undefined,\n },\n headerShadowVisible: flattenedStyle?.shadowColor !== 'transparent',\n headerLargeTitleShadowVisible: flattenedLargeStyle?.shadowColor !== 'transparent',\n };\n}\n"]}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { NativeStackNavigationOptions } from '@react-navigation/native-stack';
|
|
2
2
|
import { type PropsWithChildren } from 'react';
|
|
3
|
+
import { StackScreenTitle, StackScreenBackButton } from './screen';
|
|
3
4
|
export interface StackScreenProps extends PropsWithChildren {
|
|
4
5
|
name?: string;
|
|
5
6
|
options?: NativeStackNavigationOptions;
|
|
6
7
|
}
|
|
7
8
|
export declare function StackScreen({ children, options, ...rest }: StackScreenProps): import("react").JSX.Element;
|
|
9
|
+
export declare namespace StackScreen {
|
|
10
|
+
var Title: typeof StackScreenTitle;
|
|
11
|
+
var BackButton: typeof StackScreenBackButton;
|
|
12
|
+
}
|
|
8
13
|
export declare function appendScreenStackPropsToOptions(options: NativeStackNavigationOptions, props: StackScreenProps): NativeStackNavigationOptions;
|
|
9
14
|
//# sourceMappingURL=StackScreen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackScreen.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackScreen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAqC,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"StackScreen.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackScreen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAqC,KAAK,iBAAiB,EAAkB,MAAM,OAAO,CAAC;AAGlG,OAAO,EACL,gBAAgB,EAEhB,qBAAqB,EAEtB,MAAM,UAAU,CAAC;AAKlB,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,4BAA4B,CAAC;CACxC;AAUD,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,+BAmB3E;yBAnBe,WAAW;;;;AAwB3B,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,4BAA4B,EACrC,KAAK,EAAE,gBAAgB,GACtB,4BAA4B,CA2C9B"}
|
|
@@ -5,24 +5,51 @@ exports.StackScreen = StackScreen;
|
|
|
5
5
|
exports.appendScreenStackPropsToOptions = appendScreenStackPropsToOptions;
|
|
6
6
|
const react_1 = require("react");
|
|
7
7
|
const StackHeaderComponent_1 = require("./StackHeaderComponent");
|
|
8
|
+
const screen_1 = require("./screen");
|
|
9
|
+
const toolbar_1 = require("./toolbar");
|
|
10
|
+
const children_1 = require("../../utils/children");
|
|
8
11
|
const Screen_1 = require("../../views/Screen");
|
|
12
|
+
function extractBottomToolbars(children) {
|
|
13
|
+
return ((0, children_1.getAllChildrenOfType)(children, toolbar_1.StackToolbar).filter((child) => child.props.placement === 'bottom' || child.props.placement === undefined) ?? []);
|
|
14
|
+
}
|
|
9
15
|
function StackScreen({ children, options, ...rest }) {
|
|
10
16
|
// This component will only render when used inside a page.
|
|
11
17
|
const updatedOptions = (0, react_1.useMemo)(() => appendScreenStackPropsToOptions(options ?? {}, {
|
|
12
18
|
children,
|
|
13
19
|
}), [options, children]);
|
|
14
|
-
|
|
20
|
+
const bottomToolbars = (0, react_1.useMemo)(() => extractBottomToolbars(children), [children]);
|
|
21
|
+
return (<>
|
|
22
|
+
<Screen_1.Screen {...rest} options={updatedOptions}/>
|
|
23
|
+
{/* Bottom toolbar is a native component rendered separately */}
|
|
24
|
+
{bottomToolbars}
|
|
25
|
+
</>);
|
|
15
26
|
}
|
|
27
|
+
StackScreen.Title = screen_1.StackScreenTitle;
|
|
28
|
+
StackScreen.BackButton = screen_1.StackScreenBackButton;
|
|
16
29
|
function appendScreenStackPropsToOptions(options, props) {
|
|
17
30
|
let updatedOptions = { ...options, ...props.options };
|
|
18
|
-
function appendChildOptions(child,
|
|
19
|
-
if (child
|
|
20
|
-
|
|
31
|
+
function appendChildOptions(child, opts) {
|
|
32
|
+
if ((0, children_1.isChildOfType)(child, StackHeaderComponent_1.StackHeaderComponent)) {
|
|
33
|
+
return (0, StackHeaderComponent_1.appendStackHeaderPropsToOptions)(opts, child.props);
|
|
34
|
+
}
|
|
35
|
+
if ((0, children_1.isChildOfType)(child, screen_1.StackScreenTitle)) {
|
|
36
|
+
return (0, screen_1.appendStackScreenTitlePropsToOptions)(opts, child.props);
|
|
37
|
+
}
|
|
38
|
+
if ((0, children_1.isChildOfType)(child, screen_1.StackScreenBackButton)) {
|
|
39
|
+
return (0, screen_1.appendStackScreenBackButtonPropsToOptions)(opts, child.props);
|
|
21
40
|
}
|
|
22
|
-
|
|
23
|
-
|
|
41
|
+
if ((0, children_1.isChildOfType)(child, toolbar_1.StackToolbar)) {
|
|
42
|
+
const placement = child.props.placement ?? 'bottom';
|
|
43
|
+
if (placement === 'bottom') {
|
|
44
|
+
throw new Error(`Stack.Toolbar with placement="bottom" cannot be used inside Stack.Screen in _layout.tsx. Please move it to the page component.`);
|
|
45
|
+
}
|
|
46
|
+
return (0, toolbar_1.appendStackToolbarPropsToOptions)(opts, child.props);
|
|
24
47
|
}
|
|
25
|
-
|
|
48
|
+
const typeName = typeof child.type === 'function'
|
|
49
|
+
? child.type.name || 'Unknown'
|
|
50
|
+
: String(child.type);
|
|
51
|
+
console.warn(`Unknown child element passed to Stack.Screen: ${typeName}`);
|
|
52
|
+
return opts;
|
|
26
53
|
}
|
|
27
54
|
react_1.Children.forEach(props.children, (child) => {
|
|
28
55
|
if ((0, react_1.isValidElement)(child)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackScreen.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackScreen.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"StackScreen.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackScreen.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AA4Bb,kCAmBC;AAKD,0EA8CC;AAhGD,iCAAkG;AAElG,iEAA+F;AAC/F,qCAKkB;AAClB,uCAAmG;AACnG,mDAA2E;AAC3E,+CAA4C;AAO5C,SAAS,qBAAqB,CAAC,QAAmB;IAChD,OAAO,CACL,IAAA,+BAAoB,EAAC,QAAQ,EAAE,sBAAY,CAAC,CAAC,MAAM,CACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CACrF,IAAI,EAAE,CACR,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAoB;IAC1E,2DAA2D;IAC3D,MAAM,cAAc,GAAG,IAAA,eAAO,EAC5B,GAAG,EAAE,CACH,+BAA+B,CAAC,OAAO,IAAI,EAAE,EAAE;QAC7C,QAAQ;KACT,CAAC,EACJ,CAAC,OAAO,EAAE,QAAQ,CAAC,CACpB,CAAC;IAEF,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAElF,OAAO,CACL,EACE;MAAA,CAAC,eAAM,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,EAC1C;MAAA,CAAC,8DAA8D,CAC/D;MAAA,CAAC,cAAc,CACjB;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,WAAW,CAAC,KAAK,GAAG,yBAAgB,CAAC;AACrC,WAAW,CAAC,UAAU,GAAG,8BAAqB,CAAC;AAE/C,SAAgB,+BAA+B,CAC7C,OAAqC,EACrC,KAAuB;IAEvB,IAAI,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAEtD,SAAS,kBAAkB,CAAC,KAAyB,EAAE,IAAkC;QACvF,IAAI,IAAA,wBAAa,EAAC,KAAK,EAAE,2CAAoB,CAAC,EAAE,CAAC;YAC/C,OAAO,IAAA,sDAA+B,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,IAAA,wBAAa,EAAC,KAAK,EAAE,yBAAgB,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAA,6CAAoC,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,IAAA,wBAAa,EAAC,KAAK,EAAE,8BAAqB,CAAC,EAAE,CAAC;YAChD,OAAO,IAAA,kDAAyC,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,IAAA,wBAAa,EAAC,KAAK,EAAE,sBAAY,CAAC,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC;YAEpD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,gIAAgI,CACjI,CAAC;YACJ,CAAC;YAED,OAAO,IAAA,0CAAgC,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,QAAQ,GACZ,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;YAC9B,CAAC,CAAE,KAAK,CAAC,IAA0B,CAAC,IAAI,IAAI,SAAS;YACrD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,iDAAiD,QAAQ,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACzC,IAAI,IAAA,sBAAc,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,cAAc,GAAG,kBAAkB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["'use client';\nimport { NativeStackNavigationOptions } from '@react-navigation/native-stack';\nimport { Children, isValidElement, useMemo, type PropsWithChildren, type ReactNode } from 'react';\n\nimport { StackHeaderComponent, appendStackHeaderPropsToOptions } from './StackHeaderComponent';\nimport {\n StackScreenTitle,\n appendStackScreenTitlePropsToOptions,\n StackScreenBackButton,\n appendStackScreenBackButtonPropsToOptions,\n} from './screen';\nimport { StackToolbar, appendStackToolbarPropsToOptions, type StackToolbarProps } from './toolbar';\nimport { getAllChildrenOfType, isChildOfType } from '../../utils/children';\nimport { Screen } from '../../views/Screen';\n\nexport interface StackScreenProps extends PropsWithChildren {\n name?: string;\n options?: NativeStackNavigationOptions;\n}\n\nfunction extractBottomToolbars(children: ReactNode): React.ReactElement<StackToolbarProps>[] {\n return (\n getAllChildrenOfType(children, StackToolbar).filter(\n (child) => child.props.placement === 'bottom' || child.props.placement === undefined\n ) ?? []\n );\n}\n\nexport function StackScreen({ children, options, ...rest }: StackScreenProps) {\n // This component will only render when used inside a page.\n const updatedOptions = useMemo(\n () =>\n appendScreenStackPropsToOptions(options ?? {}, {\n children,\n }),\n [options, children]\n );\n\n const bottomToolbars = useMemo(() => extractBottomToolbars(children), [children]);\n\n return (\n <>\n <Screen {...rest} options={updatedOptions} />\n {/* Bottom toolbar is a native component rendered separately */}\n {bottomToolbars}\n </>\n );\n}\n\nStackScreen.Title = StackScreenTitle;\nStackScreen.BackButton = StackScreenBackButton;\n\nexport function appendScreenStackPropsToOptions(\n options: NativeStackNavigationOptions,\n props: StackScreenProps\n): NativeStackNavigationOptions {\n let updatedOptions = { ...options, ...props.options };\n\n function appendChildOptions(child: React.ReactElement, opts: NativeStackNavigationOptions) {\n if (isChildOfType(child, StackHeaderComponent)) {\n return appendStackHeaderPropsToOptions(opts, child.props);\n }\n\n if (isChildOfType(child, StackScreenTitle)) {\n return appendStackScreenTitlePropsToOptions(opts, child.props);\n }\n\n if (isChildOfType(child, StackScreenBackButton)) {\n return appendStackScreenBackButtonPropsToOptions(opts, child.props);\n }\n\n if (isChildOfType(child, StackToolbar)) {\n const placement = child.props.placement ?? 'bottom';\n\n if (placement === 'bottom') {\n throw new Error(\n `Stack.Toolbar with placement=\"bottom\" cannot be used inside Stack.Screen in _layout.tsx. Please move it to the page component.`\n );\n }\n\n return appendStackToolbarPropsToOptions(opts, child.props);\n }\n\n const typeName =\n typeof child.type === 'function'\n ? (child.type as { name?: string }).name || 'Unknown'\n : String(child.type);\n console.warn(`Unknown child element passed to Stack.Screen: ${typeName}`);\n return opts;\n }\n\n Children.forEach(props.children, (child) => {\n if (isValidElement(child)) {\n updatedOptions = appendChildOptions(child, updatedOptions);\n }\n });\n\n return updatedOptions;\n}\n"]}
|
|
@@ -2,6 +2,34 @@ import { NativeStackNavigationOptions } from '@react-navigation/native-stack';
|
|
|
2
2
|
import type { SearchBarProps } from 'react-native-screens';
|
|
3
3
|
export interface StackSearchBarProps extends SearchBarProps {
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* A search bar component that integrates with the native stack header.
|
|
7
|
+
*
|
|
8
|
+
* > **Note:** Using `Stack.SearchBar` will automatically make the header visible
|
|
9
|
+
* (`headerShown: true`), as the search bar is rendered as part of the native header.
|
|
10
|
+
*
|
|
11
|
+
* To display the search bar in the bottom toolbar on iOS 26+, use
|
|
12
|
+
* `Stack.Toolbar.SearchBarSlot` inside `Stack.Toolbar`.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* import { Stack } from 'expo-router';
|
|
17
|
+
*
|
|
18
|
+
* export default function Page() {
|
|
19
|
+
* return (
|
|
20
|
+
* <>
|
|
21
|
+
* <Stack.SearchBar
|
|
22
|
+
* placeholder="Search..."
|
|
23
|
+
* onChangeText={(text) => console.log(text)}
|
|
24
|
+
* />
|
|
25
|
+
* <ScreenContent />
|
|
26
|
+
* </>
|
|
27
|
+
* );
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @platform ios
|
|
32
|
+
*/
|
|
5
33
|
export declare function StackSearchBar(props: StackSearchBarProps): import("react").JSX.Element;
|
|
6
34
|
export declare function appendStackSearchBarPropsToOptions(options: NativeStackNavigationOptions, props: StackSearchBarProps): NativeStackNavigationOptions;
|
|
7
35
|
//# sourceMappingURL=StackSearchBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackSearchBar.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackSearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D,MAAM,WAAW,mBAAoB,SAAQ,cAAc;CAAG;AAE9D,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,+BAGxD;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,4BAA4B,EACrC,KAAK,EAAE,mBAAmB,GACzB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"StackSearchBar.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackSearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D,MAAM,WAAW,mBAAoB,SAAQ,cAAc;CAAG;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,+BAGxD;AAED,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,4BAA4B,EACrC,KAAK,EAAE,mBAAmB,GACzB,4BAA4B,CAQ9B"}
|
|
@@ -4,6 +4,34 @@ exports.StackSearchBar = StackSearchBar;
|
|
|
4
4
|
exports.appendStackSearchBarPropsToOptions = appendStackSearchBarPropsToOptions;
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const Screen_1 = require("../../views/Screen");
|
|
7
|
+
/**
|
|
8
|
+
* A search bar component that integrates with the native stack header.
|
|
9
|
+
*
|
|
10
|
+
* > **Note:** Using `Stack.SearchBar` will automatically make the header visible
|
|
11
|
+
* (`headerShown: true`), as the search bar is rendered as part of the native header.
|
|
12
|
+
*
|
|
13
|
+
* To display the search bar in the bottom toolbar on iOS 26+, use
|
|
14
|
+
* `Stack.Toolbar.SearchBarSlot` inside `Stack.Toolbar`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* import { Stack } from 'expo-router';
|
|
19
|
+
*
|
|
20
|
+
* export default function Page() {
|
|
21
|
+
* return (
|
|
22
|
+
* <>
|
|
23
|
+
* <Stack.SearchBar
|
|
24
|
+
* placeholder="Search..."
|
|
25
|
+
* onChangeText={(text) => console.log(text)}
|
|
26
|
+
* />
|
|
27
|
+
* <ScreenContent />
|
|
28
|
+
* </>
|
|
29
|
+
* );
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @platform ios
|
|
34
|
+
*/
|
|
7
35
|
function StackSearchBar(props) {
|
|
8
36
|
const updatedOptions = (0, react_1.useMemo)(() => appendStackSearchBarPropsToOptions({}, props), [props]);
|
|
9
37
|
return <Screen_1.Screen options={updatedOptions}/>;
|
|
@@ -11,6 +39,7 @@ function StackSearchBar(props) {
|
|
|
11
39
|
function appendStackSearchBarPropsToOptions(options, props) {
|
|
12
40
|
return {
|
|
13
41
|
...options,
|
|
42
|
+
headerShown: true,
|
|
14
43
|
headerSearchBarOptions: {
|
|
15
44
|
...props,
|
|
16
45
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackSearchBar.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackSearchBar.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"StackSearchBar.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackSearchBar.tsx"],"names":[],"mappings":";;AAuCA,wCAGC;AAED,gFAWC;AAtDD,iCAAgC;AAGhC,+CAA4C;AAO5C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,SAAgB,cAAc,CAAC,KAA0B;IACvD,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,kCAAkC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7F,OAAO,CAAC,eAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,EAAG,CAAC;AAC7C,CAAC;AAED,SAAgB,kCAAkC,CAChD,OAAqC,EACrC,KAA0B;IAE1B,OAAO;QACL,GAAG,OAAO;QACV,WAAW,EAAE,IAAI;QACjB,sBAAsB,EAAE;YACtB,GAAG,KAAK;SACT;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { NativeStackNavigationOptions } from '@react-navigation/native-stack';\nimport { useMemo } from 'react';\nimport type { SearchBarProps } from 'react-native-screens';\n\nimport { Screen } from '../../views/Screen';\n\n// TODO: Discuss adding SearchBarSlot to react-native-screens header items\n// and exposing it as Stack.Header.SearchBarPreferredSlot\n// https://linear.app/expo/issue/ENG-18555\nexport interface StackSearchBarProps extends SearchBarProps {}\n\n/**\n * A search bar component that integrates with the native stack header.\n *\n * > **Note:** Using `Stack.SearchBar` will automatically make the header visible\n * (`headerShown: true`), as the search bar is rendered as part of the native header.\n *\n * To display the search bar in the bottom toolbar on iOS 26+, use\n * `Stack.Toolbar.SearchBarSlot` inside `Stack.Toolbar`.\n *\n * @example\n * ```tsx\n * import { Stack } from 'expo-router';\n *\n * export default function Page() {\n * return (\n * <>\n * <Stack.SearchBar\n * placeholder=\"Search...\"\n * onChangeText={(text) => console.log(text)}\n * />\n * <ScreenContent />\n * </>\n * );\n * }\n * ```\n *\n * @platform ios\n */\nexport function StackSearchBar(props: StackSearchBarProps) {\n const updatedOptions = useMemo(() => appendStackSearchBarPropsToOptions({}, props), [props]);\n return <Screen options={updatedOptions} />;\n}\n\nexport function appendStackSearchBarPropsToOptions(\n options: NativeStackNavigationOptions,\n props: StackSearchBarProps\n): NativeStackNavigationOptions {\n return {\n ...options,\n headerShown: true,\n headerSearchBarOptions: {\n ...props,\n },\n };\n}\n"]}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { type ImageSourcePropType, type StyleProp, type TextStyle } from 'react-native';
|
|
2
2
|
import type { SFSymbol } from 'sf-symbols-typescript';
|
|
3
|
-
export interface
|
|
3
|
+
export interface StackToolbarLabelProps {
|
|
4
4
|
/**
|
|
5
5
|
* The text to display as the label for the tab.
|
|
6
6
|
*/
|
|
7
7
|
children?: string;
|
|
8
8
|
}
|
|
9
|
-
export declare const
|
|
10
|
-
export type
|
|
9
|
+
export declare const StackToolbarLabel: React.FC<StackToolbarLabelProps>;
|
|
10
|
+
export type StackToolbarIconProps = {
|
|
11
11
|
src: ImageSourcePropType;
|
|
12
12
|
} | {
|
|
13
13
|
sf: SFSymbol;
|
|
14
14
|
};
|
|
15
|
-
export declare const
|
|
16
|
-
export interface
|
|
15
|
+
export declare const StackToolbarIcon: React.FC<StackToolbarIconProps>;
|
|
16
|
+
export interface StackToolbarBadgeProps {
|
|
17
17
|
/**
|
|
18
18
|
* The text to display as the badge
|
|
19
19
|
*/
|
|
20
20
|
children?: string;
|
|
21
21
|
style?: StyleProp<Pick<TextStyle, 'fontFamily' | 'fontSize' | 'color' | 'fontWeight' | 'backgroundColor'>>;
|
|
22
22
|
}
|
|
23
|
-
export declare const
|
|
23
|
+
export declare const StackToolbarBadge: React.FC<StackToolbarBadgeProps>;
|
|
24
24
|
//# sourceMappingURL=common-primitives.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-primitives.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/common-primitives.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"common-primitives.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/common-primitives.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAS,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAC7B;IAEE,GAAG,EAAE,mBAAmB,CAAC;CAC1B,GACD;IACE,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AAEN,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAQ,CAAC;AAEtE,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,SAAS,CACf,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,iBAAiB,CAAC,CACxF,CAAC;CACH;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAS,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.StackToolbarBadge = exports.StackToolbarIcon = exports.StackToolbarLabel = void 0;
|
|
4
4
|
const primitives_1 = require("../../primitives");
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.
|
|
5
|
+
exports.StackToolbarLabel = primitives_1.Label;
|
|
6
|
+
exports.StackToolbarIcon = primitives_1.Icon;
|
|
7
|
+
exports.StackToolbarBadge = primitives_1.Badge;
|
|
8
8
|
//# sourceMappingURL=common-primitives.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-primitives.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/common-primitives.tsx"],"names":[],"mappings":";;;AAGA,iDAAsD;AASzC,QAAA,
|
|
1
|
+
{"version":3,"file":"common-primitives.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/common-primitives.tsx"],"names":[],"mappings":";;;AAGA,iDAAsD;AASzC,QAAA,iBAAiB,GAAqC,kBAAK,CAAC;AAW5D,QAAA,gBAAgB,GAAoC,iBAAI,CAAC;AAazD,QAAA,iBAAiB,GAAqC,kBAAK,CAAC","sourcesContent":["import { type ImageSourcePropType, type StyleProp, type TextStyle } from 'react-native';\nimport type { SFSymbol } from 'sf-symbols-typescript';\n\nimport { Badge, Icon, Label } from '../../primitives';\n\nexport interface StackToolbarLabelProps {\n /**\n * The text to display as the label for the tab.\n */\n children?: string;\n}\n\nexport const StackToolbarLabel: React.FC<StackToolbarLabelProps> = Label;\n\nexport type StackToolbarIconProps =\n | {\n // TODO: add support for vector icons\n src: ImageSourcePropType;\n }\n | {\n sf: SFSymbol;\n };\n\nexport const StackToolbarIcon: React.FC<StackToolbarIconProps> = Icon;\n\nexport interface StackToolbarBadgeProps {\n /**\n * The text to display as the badge\n */\n children?: string;\n\n style?: StyleProp<\n Pick<TextStyle, 'fontFamily' | 'fontSize' | 'color' | 'fontWeight' | 'backgroundColor'>\n >;\n}\n\nexport const StackToolbarBadge: React.FC<StackToolbarBadgeProps> = Badge;\n"]}
|
|
@@ -1,28 +1,9 @@
|
|
|
1
|
-
import { StackHeaderBackButton, type StackHeaderBackButtonProps } from './StackHeaderBackButton';
|
|
2
|
-
import { StackHeaderButton, type StackHeaderButtonProps } from './StackHeaderButton';
|
|
3
1
|
import { StackHeaderComponent, type StackHeaderProps } from './StackHeaderComponent';
|
|
4
|
-
import { StackHeaderLeft, type StackHeaderLeftProps, StackHeaderRight, type StackHeaderRightProps } from './StackHeaderLeftRight';
|
|
5
|
-
import { StackHeaderMenu, StackHeaderMenuAction, type StackHeaderMenuActionProps, type StackHeaderMenuProps } from './StackHeaderMenu';
|
|
6
|
-
import { StackHeaderSpacer, type StackHeaderSpacerProps } from './StackHeaderSpacer';
|
|
7
|
-
import { StackHeaderTitle, type StackHeaderTitleProps } from './StackHeaderTitle';
|
|
8
|
-
import { StackHeaderView, type StackHeaderViewProps } from './StackHeaderView';
|
|
9
2
|
import { StackSearchBar, type StackSearchBarProps } from './StackSearchBar';
|
|
10
|
-
import { StackHeaderBadge, StackHeaderIcon, StackHeaderLabel, type StackHeaderBadgeProps, type StackHeaderIconProps, type StackHeaderLabelProps } from './common-primitives';
|
|
11
3
|
import type { StackHeaderItemSharedProps } from './shared';
|
|
12
|
-
export declare const StackHeader: typeof StackHeaderComponent
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Title: typeof StackHeaderTitle;
|
|
17
|
-
Button: import("react").FC<StackHeaderButtonProps>;
|
|
18
|
-
Badge: import("react").FC<StackHeaderBadgeProps>;
|
|
19
|
-
Label: import("react").FC<StackHeaderLabelProps>;
|
|
20
|
-
Icon: import("react").FC<StackHeaderIconProps>;
|
|
21
|
-
Menu: import("react").FC<StackHeaderMenuProps>;
|
|
22
|
-
MenuAction: import("react").FC<StackHeaderMenuActionProps>;
|
|
23
|
-
View: import("react").FC<StackHeaderViewProps>;
|
|
24
|
-
Spacer: import("react").FC<StackHeaderSpacerProps>;
|
|
25
|
-
};
|
|
26
|
-
export { StackHeaderBackButton, type StackHeaderBackButtonProps, type StackHeaderProps, StackHeaderLeft, type StackHeaderLeftProps, StackHeaderRight, type StackHeaderRightProps, StackSearchBar, type StackSearchBarProps, StackHeaderTitle, type StackHeaderTitleProps, StackHeaderButton, type StackHeaderButtonProps, StackHeaderBadge, type StackHeaderBadgeProps, StackHeaderLabel, type StackHeaderLabelProps, StackHeaderIcon, type StackHeaderIconProps, StackHeaderMenu, type StackHeaderMenuProps, StackHeaderMenuAction, type StackHeaderMenuActionProps, StackHeaderView, type StackHeaderViewProps, StackHeaderSpacer, type StackHeaderSpacerProps, type StackHeaderItemSharedProps, };
|
|
4
|
+
export declare const StackHeader: typeof StackHeaderComponent;
|
|
5
|
+
export { type StackHeaderProps, StackSearchBar, type StackSearchBarProps, type StackHeaderItemSharedProps, };
|
|
6
|
+
export * from './toolbar';
|
|
7
|
+
export * from './screen';
|
|
27
8
|
export { StackScreen, appendScreenStackPropsToOptions, type StackScreenProps } from './StackScreen';
|
|
28
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AAE3D,eAAO,MAAM,WAAW,6BAAuB,CAAC;AAEhD,OAAO,EACL,KAAK,gBAAgB,EACrB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,GAChC,CAAC;AAEF,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,43 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.appendScreenStackPropsToOptions = exports.StackScreen = exports.
|
|
4
|
-
const StackHeaderBackButton_1 = require("./StackHeaderBackButton");
|
|
5
|
-
Object.defineProperty(exports, "StackHeaderBackButton", { enumerable: true, get: function () { return StackHeaderBackButton_1.StackHeaderBackButton; } });
|
|
6
|
-
const StackHeaderButton_1 = require("./StackHeaderButton");
|
|
7
|
-
Object.defineProperty(exports, "StackHeaderButton", { enumerable: true, get: function () { return StackHeaderButton_1.StackHeaderButton; } });
|
|
17
|
+
exports.appendScreenStackPropsToOptions = exports.StackScreen = exports.StackSearchBar = exports.StackHeader = void 0;
|
|
8
18
|
const StackHeaderComponent_1 = require("./StackHeaderComponent");
|
|
9
|
-
const StackHeaderLeftRight_1 = require("./StackHeaderLeftRight");
|
|
10
|
-
Object.defineProperty(exports, "StackHeaderLeft", { enumerable: true, get: function () { return StackHeaderLeftRight_1.StackHeaderLeft; } });
|
|
11
|
-
Object.defineProperty(exports, "StackHeaderRight", { enumerable: true, get: function () { return StackHeaderLeftRight_1.StackHeaderRight; } });
|
|
12
|
-
const StackHeaderMenu_1 = require("./StackHeaderMenu");
|
|
13
|
-
Object.defineProperty(exports, "StackHeaderMenu", { enumerable: true, get: function () { return StackHeaderMenu_1.StackHeaderMenu; } });
|
|
14
|
-
Object.defineProperty(exports, "StackHeaderMenuAction", { enumerable: true, get: function () { return StackHeaderMenu_1.StackHeaderMenuAction; } });
|
|
15
|
-
const StackHeaderSpacer_1 = require("./StackHeaderSpacer");
|
|
16
|
-
Object.defineProperty(exports, "StackHeaderSpacer", { enumerable: true, get: function () { return StackHeaderSpacer_1.StackHeaderSpacer; } });
|
|
17
|
-
const StackHeaderTitle_1 = require("./StackHeaderTitle");
|
|
18
|
-
Object.defineProperty(exports, "StackHeaderTitle", { enumerable: true, get: function () { return StackHeaderTitle_1.StackHeaderTitle; } });
|
|
19
|
-
const StackHeaderView_1 = require("./StackHeaderView");
|
|
20
|
-
Object.defineProperty(exports, "StackHeaderView", { enumerable: true, get: function () { return StackHeaderView_1.StackHeaderView; } });
|
|
21
19
|
const StackSearchBar_1 = require("./StackSearchBar");
|
|
22
20
|
Object.defineProperty(exports, "StackSearchBar", { enumerable: true, get: function () { return StackSearchBar_1.StackSearchBar; } });
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
Object.defineProperty(exports, "StackHeaderLabel", { enumerable: true, get: function () { return common_primitives_1.StackHeaderLabel; } });
|
|
27
|
-
exports.StackHeader = Object.assign(StackHeaderComponent_1.StackHeaderComponent, {
|
|
28
|
-
Left: StackHeaderLeftRight_1.StackHeaderLeft,
|
|
29
|
-
Right: StackHeaderLeftRight_1.StackHeaderRight,
|
|
30
|
-
BackButton: StackHeaderBackButton_1.StackHeaderBackButton,
|
|
31
|
-
Title: StackHeaderTitle_1.StackHeaderTitle,
|
|
32
|
-
Button: StackHeaderButton_1.StackHeaderButton,
|
|
33
|
-
Badge: common_primitives_1.StackHeaderBadge,
|
|
34
|
-
Label: common_primitives_1.StackHeaderLabel,
|
|
35
|
-
Icon: common_primitives_1.StackHeaderIcon,
|
|
36
|
-
Menu: StackHeaderMenu_1.StackHeaderMenu,
|
|
37
|
-
MenuAction: StackHeaderMenu_1.StackHeaderMenuAction,
|
|
38
|
-
View: StackHeaderView_1.StackHeaderView,
|
|
39
|
-
Spacer: StackHeaderSpacer_1.StackHeaderSpacer,
|
|
40
|
-
});
|
|
21
|
+
exports.StackHeader = StackHeaderComponent_1.StackHeaderComponent;
|
|
22
|
+
__exportStar(require("./toolbar"), exports);
|
|
23
|
+
__exportStar(require("./screen"), exports);
|
|
41
24
|
var StackScreen_1 = require("./StackScreen");
|
|
42
25
|
Object.defineProperty(exports, "StackScreen", { enumerable: true, get: function () { return StackScreen_1.StackScreen; } });
|
|
43
26
|
Object.defineProperty(exports, "appendScreenStackPropsToOptions", { enumerable: true, get: function () { return StackScreen_1.appendScreenStackPropsToOptions; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iEAAqF;AACrF,qDAA4E;AAO1E,+FAPO,+BAAc,OAOP;AAJH,QAAA,WAAW,GAAG,2CAAoB,CAAC;AAShD,4CAA0B;AAC1B,2CAAyB;AAEzB,6CAAoG;AAA3F,0GAAA,WAAW,OAAA;AAAE,8HAAA,+BAA+B,OAAA","sourcesContent":["import { StackHeaderComponent, type StackHeaderProps } from './StackHeaderComponent';\nimport { StackSearchBar, type StackSearchBarProps } from './StackSearchBar';\nimport type { StackHeaderItemSharedProps } from './shared';\n\nexport const StackHeader = StackHeaderComponent;\n\nexport {\n type StackHeaderProps,\n StackSearchBar,\n type StackSearchBarProps,\n type StackHeaderItemSharedProps,\n};\n\nexport * from './toolbar';\nexport * from './screen';\n\nexport { StackScreen, appendScreenStackPropsToOptions, type StackScreenProps } from './StackScreen';\n"]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { NativeStackNavigationOptions } from '@react-navigation/native-stack';
|
|
2
|
+
import type { ImageSourcePropType } from 'react-native';
|
|
3
|
+
import type { ScreenStackHeaderConfigProps } from 'react-native-screens';
|
|
4
|
+
export interface StackScreenBackButtonProps {
|
|
5
|
+
/**
|
|
6
|
+
* The title to display for the back button.
|
|
7
|
+
*/
|
|
8
|
+
children?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Style for the back button title.
|
|
11
|
+
*/
|
|
12
|
+
style?: NativeStackNavigationOptions['headerBackTitleStyle'];
|
|
13
|
+
/**
|
|
14
|
+
* Whether to show a context menu when long pressing the back button.
|
|
15
|
+
*/
|
|
16
|
+
withMenu?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The display mode for the back button.
|
|
19
|
+
*/
|
|
20
|
+
displayMode?: ScreenStackHeaderConfigProps['backButtonDisplayMode'];
|
|
21
|
+
/**
|
|
22
|
+
* Whether to hide the back button.
|
|
23
|
+
*/
|
|
24
|
+
hidden?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Custom image source for the back button.
|
|
27
|
+
*/
|
|
28
|
+
src?: ImageSourcePropType;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Component to configure the back button.
|
|
32
|
+
*
|
|
33
|
+
* Can be used inside Stack.Screen in a layout or directly inside a screen component.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* import { Stack } from 'expo-router';
|
|
38
|
+
*
|
|
39
|
+
* export default function Layout() {
|
|
40
|
+
* return (
|
|
41
|
+
* <Stack>
|
|
42
|
+
* <Stack.Screen name="detail">
|
|
43
|
+
* <Stack.Screen.BackButton displayMode="minimal">Back</Stack.Screen.BackButton>
|
|
44
|
+
* </Stack.Screen>
|
|
45
|
+
* </Stack>
|
|
46
|
+
* );
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```tsx
|
|
52
|
+
* import { Stack } from 'expo-router';
|
|
53
|
+
*
|
|
54
|
+
* export default function Page() {
|
|
55
|
+
* return (
|
|
56
|
+
* <>
|
|
57
|
+
* <Stack.Screen.BackButton hidden />
|
|
58
|
+
* <ScreenContent />
|
|
59
|
+
* </>
|
|
60
|
+
* );
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @platform ios
|
|
65
|
+
*/
|
|
66
|
+
export declare function StackScreenBackButton(props: StackScreenBackButtonProps): import("react").JSX.Element;
|
|
67
|
+
export declare function appendStackScreenBackButtonPropsToOptions(options: NativeStackNavigationOptions, props: StackScreenBackButtonProps): NativeStackNavigationOptions;
|
|
68
|
+
//# sourceMappingURL=StackScreenBackButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StackScreenBackButton.d.ts","sourceRoot":"","sources":["../../../../src/layouts/stack-utils/screen/StackScreenBackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAIzE,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;IAC7D;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,4BAA4B,CAAC,uBAAuB,CAAC,CAAC;IACpE;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,GAAG,CAAC,EAAE,mBAAmB,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,+BAMtE;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,4BAA4B,EACrC,KAAK,EAAE,0BAA0B,GAChC,4BAA4B,CAU9B"}
|