expo-router 7.0.0-canary-20260113-4879b86 → 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/split-view/split-view.d.ts.map +1 -1
- package/build/split-view/split-view.js +0 -7
- package/build/split-view/split-view.js.map +1 -1
- 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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.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 +3 -4
- package/plugin/options.json +2 -2
- package/plugin/src/index.ts +3 -9
- 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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.module.md5 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.module.sha1 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.module.sha256 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.module.sha512 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.pom.md5 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.pom.sha1 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.pom.sha256 +0 -1
- package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86-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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86-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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86-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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86-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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86-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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.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-20260113-4879b86/expo.modules.router-7.0.0-canary-20260113-4879b86.aar.sha512 → 7.0.0-canary-20260119-70f7c28/expo.modules.router-7.0.0-canary-20260119-70f7c28.aar.sha512} +0 -0
|
@@ -3,7 +3,11 @@ import UIKit
|
|
|
3
3
|
|
|
4
4
|
class RouterToolbarItemView: RouterViewWithLogger {
|
|
5
5
|
var identifier: String = ""
|
|
6
|
-
|
|
6
|
+
// Properties requiring full rebuild
|
|
7
|
+
@ReactiveProp(needsFullRebuild: true) var type: ItemType?
|
|
8
|
+
@ReactiveProp(needsFullRebuild: true) var customView: UIView?
|
|
9
|
+
|
|
10
|
+
// Properties allowing in-place updates
|
|
7
11
|
@ReactiveProp var title: String?
|
|
8
12
|
@ReactiveProp var systemImageName: String?
|
|
9
13
|
var customImage: SharedRef<UIImage>? {
|
|
@@ -11,14 +15,12 @@ class RouterToolbarItemView: RouterViewWithLogger {
|
|
|
11
15
|
performUpdate()
|
|
12
16
|
}
|
|
13
17
|
}
|
|
14
|
-
@ReactiveProp var customView: UIView?
|
|
15
18
|
@ReactiveProp var customTintColor: UIColor?
|
|
16
19
|
@ReactiveProp var hidesSharedBackground: Bool = false
|
|
17
20
|
@ReactiveProp var sharesBackground: Bool = true
|
|
18
21
|
@ReactiveProp var barButtonItemStyle: UIBarButtonItem.Style?
|
|
19
22
|
@ReactiveProp var width: Double?
|
|
20
|
-
|
|
21
|
-
@ReactiveProp var routerHidden: Bool = false
|
|
23
|
+
|
|
22
24
|
@ReactiveProp var selected: Bool = false
|
|
23
25
|
@ReactiveProp var possibleTitles: Set<String>?
|
|
24
26
|
@ReactiveProp var badgeConfiguration: BadgeConfiguration?
|
|
@@ -27,12 +29,29 @@ class RouterToolbarItemView: RouterViewWithLogger {
|
|
|
27
29
|
@ReactiveProp var routerAccessibilityHint: String?
|
|
28
30
|
@ReactiveProp var disabled: Bool = false
|
|
29
31
|
|
|
32
|
+
// Using "routerHidden" to avoid conflict with UIView's "isHidden"
|
|
33
|
+
// This property is not applied in this component, but read by the host
|
|
34
|
+
@ReactiveProp var routerHidden: Bool = false
|
|
35
|
+
|
|
30
36
|
var host: RouterToolbarHostView?
|
|
37
|
+
private var currentBarButtonItem: UIBarButtonItem?
|
|
31
38
|
|
|
32
39
|
let onSelected = EventDispatcher()
|
|
33
40
|
|
|
41
|
+
func performRebuild() {
|
|
42
|
+
// There is no need to rebuild if not mounted
|
|
43
|
+
guard self.host != nil else { return }
|
|
44
|
+
rebuildBarButtonItem()
|
|
45
|
+
self.host?.updateToolbarItems()
|
|
46
|
+
}
|
|
47
|
+
|
|
34
48
|
func performUpdate() {
|
|
35
|
-
|
|
49
|
+
// There is no need to update if not mounted
|
|
50
|
+
guard self.host != nil else { return }
|
|
51
|
+
updateBarButtonItem()
|
|
52
|
+
// Even though we update in place, we need to notify the host
|
|
53
|
+
// so the toolbar array reference is updated and UIKit refreshes
|
|
54
|
+
self.host?.updateToolbarItems()
|
|
36
55
|
}
|
|
37
56
|
|
|
38
57
|
@objc func handleAction() {
|
|
@@ -40,7 +59,32 @@ class RouterToolbarItemView: RouterViewWithLogger {
|
|
|
40
59
|
}
|
|
41
60
|
|
|
42
61
|
var barButtonItem: UIBarButtonItem {
|
|
62
|
+
if let item = currentBarButtonItem {
|
|
63
|
+
return item
|
|
64
|
+
}
|
|
65
|
+
// If no item exists yet, create one
|
|
66
|
+
rebuildBarButtonItem()
|
|
67
|
+
return currentBarButtonItem ?? UIBarButtonItem()
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
private func updateBarButtonItem() {
|
|
71
|
+
guard let item = currentBarButtonItem else {
|
|
72
|
+
// If no current item exists, create one
|
|
73
|
+
rebuildBarButtonItem()
|
|
74
|
+
self.host?.updateToolbarItem(withId: self.identifier)
|
|
75
|
+
return
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Update content properties (title, image, etc.) for normal buttons
|
|
79
|
+
applyContentProperties(to: item)
|
|
80
|
+
|
|
81
|
+
// Update all common properties
|
|
82
|
+
applyCommonProperties(to: item)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private func rebuildBarButtonItem() {
|
|
43
86
|
var item = UIBarButtonItem()
|
|
87
|
+
|
|
44
88
|
if let customView {
|
|
45
89
|
item = UIBarButtonItem(customView: customView)
|
|
46
90
|
} else if type == .fluidSpacer {
|
|
@@ -48,29 +92,44 @@ class RouterToolbarItemView: RouterViewWithLogger {
|
|
|
48
92
|
} else if type == .fixedSpacer {
|
|
49
93
|
item = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
|
|
50
94
|
} else if type == .searchBar {
|
|
51
|
-
if #available(iOS 16, *) {
|
|
52
|
-
// Hide the item if no search bar is provided
|
|
53
|
-
item.isHidden = true
|
|
54
|
-
}
|
|
55
95
|
guard #available(iOS 26.0, *), let controller = self.host?.findViewController() else {
|
|
56
96
|
// Check for iOS 26, should already be guarded by the JS side, so this warning will only fire if controller is nil
|
|
57
97
|
logger?.warn(
|
|
58
98
|
"[expo-router] navigationItem.searchBarPlacementBarButtonItem not available. This is most likely a bug in expo-router."
|
|
59
99
|
)
|
|
60
|
-
|
|
100
|
+
currentBarButtonItem = nil
|
|
101
|
+
return
|
|
61
102
|
}
|
|
62
103
|
guard let navController = controller.navigationController else {
|
|
63
|
-
|
|
104
|
+
currentBarButtonItem = nil
|
|
105
|
+
return
|
|
64
106
|
}
|
|
65
107
|
guard navController.isNavigationBarHidden == false else {
|
|
66
108
|
logger?.warn(
|
|
67
109
|
"[expo-router] Toolbar.SearchBarPreferredSlot should only be used when stack header is shown."
|
|
68
110
|
)
|
|
69
|
-
|
|
111
|
+
currentBarButtonItem = nil
|
|
112
|
+
return
|
|
70
113
|
}
|
|
71
114
|
|
|
72
115
|
item = controller.navigationItem.searchBarPlacementBarButtonItem
|
|
73
116
|
} else {
|
|
117
|
+
// Normal button - apply content properties during initial creation
|
|
118
|
+
applyContentProperties(to: item)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Set target and action for interactive buttons
|
|
122
|
+
item.target = self
|
|
123
|
+
item.action = #selector(handleAction)
|
|
124
|
+
|
|
125
|
+
applyCommonProperties(to: item)
|
|
126
|
+
|
|
127
|
+
currentBarButtonItem = item
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
private func applyContentProperties(to item: UIBarButtonItem) {
|
|
131
|
+
// Only apply content properties for normal buttons
|
|
132
|
+
if type == .normal || type == nil {
|
|
74
133
|
if let title {
|
|
75
134
|
item.title = title
|
|
76
135
|
}
|
|
@@ -89,6 +148,9 @@ class RouterToolbarItemView: RouterViewWithLogger {
|
|
|
89
148
|
RouterFontUtils.setTitleStyle(fromConfig: titleStyle, for: item)
|
|
90
149
|
}
|
|
91
150
|
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
private func applyCommonProperties(to item: UIBarButtonItem) {
|
|
92
154
|
if #available(iOS 26.0, *) {
|
|
93
155
|
item.hidesSharedBackground = hidesSharedBackground
|
|
94
156
|
item.sharesBackground = sharesBackground
|
|
@@ -96,14 +158,9 @@ class RouterToolbarItemView: RouterViewWithLogger {
|
|
|
96
158
|
if let barButtonItemStyle {
|
|
97
159
|
item.style = barButtonItemStyle
|
|
98
160
|
}
|
|
99
|
-
item.target = self
|
|
100
|
-
item.action = #selector(handleAction)
|
|
101
161
|
if let width = width {
|
|
102
162
|
item.width = CGFloat(width)
|
|
103
163
|
}
|
|
104
|
-
if #available(iOS 16.0, *) {
|
|
105
|
-
item.isHidden = routerHidden
|
|
106
|
-
}
|
|
107
164
|
item.isSelected = selected
|
|
108
165
|
if let routerAccessibilityLabel = routerAccessibilityLabel {
|
|
109
166
|
item.accessibilityLabel = routerAccessibilityLabel
|
|
@@ -137,8 +194,6 @@ class RouterToolbarItemView: RouterViewWithLogger {
|
|
|
137
194
|
item.badge = badge
|
|
138
195
|
}
|
|
139
196
|
}
|
|
140
|
-
|
|
141
|
-
return item
|
|
142
197
|
}
|
|
143
198
|
|
|
144
199
|
required init(appContext: AppContext? = nil) {
|
|
@@ -189,9 +244,11 @@ struct TitleStyle: Equatable {
|
|
|
189
244
|
@propertyWrapper
|
|
190
245
|
struct ReactiveProp<Value: Equatable> {
|
|
191
246
|
private var value: Value
|
|
247
|
+
let needsFullRebuild: Bool
|
|
192
248
|
|
|
193
|
-
init(wrappedValue: Value) {
|
|
249
|
+
init(wrappedValue: Value, needsFullRebuild: Bool = false) {
|
|
194
250
|
self.value = wrappedValue
|
|
251
|
+
self.needsFullRebuild = needsFullRebuild
|
|
195
252
|
}
|
|
196
253
|
|
|
197
254
|
static subscript<EnclosingSelf: RouterToolbarItemView>(
|
|
@@ -206,7 +263,11 @@ struct ReactiveProp<Value: Equatable> {
|
|
|
206
263
|
let oldValue = instance[keyPath: storageKeyPath].value
|
|
207
264
|
if oldValue != newValue {
|
|
208
265
|
instance[keyPath: storageKeyPath].value = newValue
|
|
209
|
-
instance.
|
|
266
|
+
if instance[keyPath: storageKeyPath].needsFullRebuild {
|
|
267
|
+
instance.performRebuild()
|
|
268
|
+
} else {
|
|
269
|
+
instance.performUpdate()
|
|
270
|
+
}
|
|
210
271
|
}
|
|
211
272
|
}
|
|
212
273
|
}
|
|
@@ -217,3 +278,10 @@ struct ReactiveProp<Value: Equatable> {
|
|
|
217
278
|
set { fatalError() }
|
|
218
279
|
}
|
|
219
280
|
}
|
|
281
|
+
|
|
282
|
+
extension ReactiveProp where Value: ExpressibleByNilLiteral {
|
|
283
|
+
init(needsFullRebuild: Bool = false) {
|
|
284
|
+
self.value = nil
|
|
285
|
+
self.needsFullRebuild = needsFullRebuild
|
|
286
|
+
}
|
|
287
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"component": {
|
|
4
4
|
"group": "expo.modules.router",
|
|
5
5
|
"module": "expo.modules.router",
|
|
6
|
-
"version": "7.0.0-canary-
|
|
6
|
+
"version": "7.0.0-canary-20260119-70f7c28",
|
|
7
7
|
"attributes": {
|
|
8
8
|
"org.gradle.status": "release"
|
|
9
9
|
}
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
{
|
|
27
|
-
"name": "expo.modules.router-7.0.0-canary-
|
|
28
|
-
"url": "expo.modules.router-7.0.0-canary-
|
|
27
|
+
"name": "expo.modules.router-7.0.0-canary-20260119-70f7c28.aar",
|
|
28
|
+
"url": "expo.modules.router-7.0.0-canary-20260119-70f7c28.aar",
|
|
29
29
|
"size": 13665,
|
|
30
30
|
"sha512": "0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554",
|
|
31
31
|
"sha256": "054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
],
|
|
61
61
|
"files": [
|
|
62
62
|
{
|
|
63
|
-
"name": "expo.modules.router-7.0.0-canary-
|
|
64
|
-
"url": "expo.modules.router-7.0.0-canary-
|
|
63
|
+
"name": "expo.modules.router-7.0.0-canary-20260119-70f7c28.aar",
|
|
64
|
+
"url": "expo.modules.router-7.0.0-canary-20260119-70f7c28.aar",
|
|
65
65
|
"size": 13665,
|
|
66
66
|
"sha512": "0c996832cda246cbf02acf875f7c3add8610a0e5e7c466bbe5fa2f073a6a644933eec90d1bff2a7fac7fd3c0c5bdae8a695373cebdec4f9853ce116658960554",
|
|
67
67
|
"sha256": "054876f9b960d2ed5b7762c66b32c7e994f942c05013456f5e41e1fe6c71ee54",
|
|
@@ -80,8 +80,8 @@
|
|
|
80
80
|
},
|
|
81
81
|
"files": [
|
|
82
82
|
{
|
|
83
|
-
"name": "expo.modules.router-7.0.0-canary-
|
|
84
|
-
"url": "expo.modules.router-7.0.0-canary-
|
|
83
|
+
"name": "expo.modules.router-7.0.0-canary-20260119-70f7c28-sources.jar",
|
|
84
|
+
"url": "expo.modules.router-7.0.0-canary-20260119-70f7c28-sources.jar",
|
|
85
85
|
"size": 2318,
|
|
86
86
|
"sha512": "9864add8e93e3c0a9a9c930aaed67016b15054c3fafd59a0bd3a5402d7cdc5827be84c22c2c137f3e5acb4e39270d9bfb9ca3fe11234458d4f2e0d4c78747f48",
|
|
87
87
|
"sha256": "d5dff6259e86de721fc0f07fe740a5e18088e19b76738719b0a6f94caef06224",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
11b8480e59748399d02040e2a028c7b7
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
e743dddc31f2dd22ba2c44a943ba287badc82b7a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dc2d047c1378071e59cdab45be1da38e4742cc191d323757ef99a7912d943e6c
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
a55d5da6929e191fac4d4e1f694ed277eea559c7ec184330404dca31ae0f5556491140098f4149400d813b0d1ce1dea9285c617c79784929d77e93736337b2b0
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<modelVersion>4.0.0</modelVersion>
|
|
10
10
|
<groupId>expo.modules.router</groupId>
|
|
11
11
|
<artifactId>expo.modules.router</artifactId>
|
|
12
|
-
<version>7.0.0-canary-
|
|
12
|
+
<version>7.0.0-canary-20260119-70f7c28</version>
|
|
13
13
|
<packaging>aar</packaging>
|
|
14
14
|
<name>expo.modules.router</name>
|
|
15
15
|
<url>https://github.com/expo/expo</url>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7bde9e9e6e8ccec77bcf9bd040310d85
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
b037c14311d0cf28f7323d1fb266f09c6d464510
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
97d335647fc14d009ef930db1f1501568ec68f41e460e0074ceb0c077360365b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
db9186302bc8a06aaec1661211f7750b6db4b7bc6b99361a40b1e59688fbc05847b005859de4d51c55a4dc3c5f2ed00377286501fbf0ce60137372be356dce11
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
<groupId>expo.modules.router</groupId>
|
|
4
4
|
<artifactId>expo.modules.router</artifactId>
|
|
5
5
|
<versioning>
|
|
6
|
-
<latest>7.0.0-canary-
|
|
7
|
-
<release>7.0.0-canary-
|
|
6
|
+
<latest>7.0.0-canary-20260119-70f7c28</latest>
|
|
7
|
+
<release>7.0.0-canary-20260119-70f7c28</release>
|
|
8
8
|
<versions>
|
|
9
|
-
<version>7.0.0-canary-
|
|
9
|
+
<version>7.0.0-canary-20260119-70f7c28</version>
|
|
10
10
|
</versions>
|
|
11
|
-
<lastUpdated>
|
|
11
|
+
<lastUpdated>20260119134313</lastUpdated>
|
|
12
12
|
</versioning>
|
|
13
13
|
</metadata>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
609239af60bbb7ce594939852a879b05
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
94bc4f09fd24accb81eb17f5e0858f1d5d1ef957
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3a0f2cc7f88630222bd33993b0555389c1ee8fb374d2398d3c307d3208aea3b9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
5b8f5b544667f8921d46a0dd1b7c4c6085e41b34c897e5261dca770cc4b7ad13a9df87dd37c67bd5cc4cc1036b7986996234c16f0fa3b96a9bf92834eb6e0a87
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-router",
|
|
3
|
-
"version": "7.0.0-canary-
|
|
3
|
+
"version": "7.0.0-canary-20260119-70f7c28",
|
|
4
4
|
"description": "Expo Router is a file-based router for React Native and web applications.",
|
|
5
5
|
"author": "650 Industries, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,8 +42,6 @@
|
|
|
42
42
|
"unstable-native-tabs.d.ts",
|
|
43
43
|
"unstable-split-view.js",
|
|
44
44
|
"unstable-split-view.d.ts",
|
|
45
|
-
"unstable-toolbar.js",
|
|
46
|
-
"unstable-toolbar.d.ts",
|
|
47
45
|
"node",
|
|
48
46
|
"plugin",
|
|
49
47
|
"rsc",
|
|
@@ -83,13 +81,13 @@
|
|
|
83
81
|
"expo"
|
|
84
82
|
],
|
|
85
83
|
"peerDependencies": {
|
|
86
|
-
"@expo/metro-runtime": "6.2.0-canary-
|
|
87
|
-
"@expo/log-box": "0.0.13-canary-
|
|
84
|
+
"@expo/metro-runtime": "6.2.0-canary-20260119-70f7c28",
|
|
85
|
+
"@expo/log-box": "0.0.13-canary-20260119-70f7c28",
|
|
88
86
|
"@react-navigation/drawer": "^7.7.2",
|
|
89
87
|
"@testing-library/react-native": ">= 12.0.0",
|
|
90
|
-
"expo": "55.0.0-canary-
|
|
91
|
-
"expo-constants": "18.1.0-canary-
|
|
92
|
-
"expo-linking": "8.0.12-canary-
|
|
88
|
+
"expo": "55.0.0-canary-20260119-70f7c28",
|
|
89
|
+
"expo-constants": "18.1.0-canary-20260119-70f7c28",
|
|
90
|
+
"expo-linking": "8.0.12-canary-20260119-70f7c28",
|
|
93
91
|
"react": "*",
|
|
94
92
|
"react-dom": "*",
|
|
95
93
|
"react-native": "*",
|
|
@@ -134,8 +132,8 @@
|
|
|
134
132
|
"react-server-dom-webpack": "~19.0.3"
|
|
135
133
|
},
|
|
136
134
|
"dependencies": {
|
|
137
|
-
"@expo/metro-runtime": "6.2.0-canary-
|
|
138
|
-
"@expo/schema-utils": "0.1.9-canary-
|
|
135
|
+
"@expo/metro-runtime": "6.2.0-canary-20260119-70f7c28",
|
|
136
|
+
"@expo/schema-utils": "0.1.9-canary-20260119-70f7c28",
|
|
139
137
|
"@radix-ui/react-slot": "1.2.0",
|
|
140
138
|
"@radix-ui/react-tabs": "^1.1.12",
|
|
141
139
|
"@react-navigation/bottom-tabs": "^7.7.3",
|
|
@@ -144,9 +142,9 @@
|
|
|
144
142
|
"client-only": "^0.0.1",
|
|
145
143
|
"debug": "^4.3.4",
|
|
146
144
|
"escape-string-regexp": "^4.0.0",
|
|
147
|
-
"expo-image": "3.1.0-canary-
|
|
148
|
-
"expo-server": "1.1.0-canary-
|
|
149
|
-
"expo-symbols": "1.1.0-canary-
|
|
145
|
+
"expo-image": "3.1.0-canary-20260119-70f7c28",
|
|
146
|
+
"expo-server": "1.1.0-canary-20260119-70f7c28",
|
|
147
|
+
"expo-symbols": "1.1.0-canary-20260119-70f7c28",
|
|
150
148
|
"fast-deep-equal": "^3.1.3",
|
|
151
149
|
"invariant": "^2.2.4",
|
|
152
150
|
"nanoid": "^3.3.8",
|
package/plugin/build/index.js
CHANGED
|
@@ -21,11 +21,10 @@ const withExpoHeadIos = (config) => {
|
|
|
21
21
|
return config;
|
|
22
22
|
});
|
|
23
23
|
};
|
|
24
|
-
const withGammaScreens = (config
|
|
25
|
-
const value = props?.unstable_splitView ?? false;
|
|
24
|
+
const withGammaScreens = (config) => {
|
|
26
25
|
return (0, config_plugins_1.withPodfile)(config, (config) => {
|
|
27
26
|
if (!config.modResults.contents.includes('RNS_GAMMA_ENABLED')) {
|
|
28
|
-
config.modResults.contents =
|
|
27
|
+
config.modResults.contents = `# Set by expo-router. This enables Fabric-only features from react-native-screens\nENV['RNS_GAMMA_ENABLED'] ||= '1'\n${config.modResults.contents}`;
|
|
29
28
|
}
|
|
30
29
|
return config;
|
|
31
30
|
});
|
|
@@ -34,7 +33,7 @@ const withRouter = (config, _props) => {
|
|
|
34
33
|
const props = _props || {};
|
|
35
34
|
(0, schema_utils_1.validate)(schema, props);
|
|
36
35
|
withExpoHeadIos(config);
|
|
37
|
-
withGammaScreens(config
|
|
36
|
+
withGammaScreens(config);
|
|
38
37
|
return {
|
|
39
38
|
...config,
|
|
40
39
|
extra: {
|
package/plugin/options.json
CHANGED
|
@@ -168,8 +168,8 @@
|
|
|
168
168
|
"type": "boolean",
|
|
169
169
|
"default": false
|
|
170
170
|
},
|
|
171
|
-
"
|
|
172
|
-
"description": "
|
|
171
|
+
"disableSynchronousScreensUpdates": {
|
|
172
|
+
"description": "Disable synchronous layout updates for native screens.",
|
|
173
173
|
"type": "boolean",
|
|
174
174
|
"default": false
|
|
175
175
|
}
|
package/plugin/src/index.ts
CHANGED
|
@@ -23,16 +23,10 @@ const withExpoHeadIos: ConfigPlugin = (config) => {
|
|
|
23
23
|
});
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
const withGammaScreens: ConfigPlugin
|
|
27
|
-
{
|
|
28
|
-
/** Enable experimental data loader support. Requires `web.output: 'static'` to be set in app config. */
|
|
29
|
-
unstable_splitView?: boolean;
|
|
30
|
-
} | void
|
|
31
|
-
> = (config, props) => {
|
|
32
|
-
const value = props?.unstable_splitView ?? false;
|
|
26
|
+
const withGammaScreens: ConfigPlugin = (config) => {
|
|
33
27
|
return withPodfile(config, (config) => {
|
|
34
28
|
if (!config.modResults.contents.includes('RNS_GAMMA_ENABLED')) {
|
|
35
|
-
config.modResults.contents =
|
|
29
|
+
config.modResults.contents = `# Set by expo-router. This enables Fabric-only features from react-native-screens\nENV['RNS_GAMMA_ENABLED'] ||= '1'\n${config.modResults.contents}`;
|
|
36
30
|
}
|
|
37
31
|
return config;
|
|
38
32
|
});
|
|
@@ -66,7 +60,7 @@ const withRouter: ConfigPlugin<
|
|
|
66
60
|
validate(schema, props);
|
|
67
61
|
|
|
68
62
|
withExpoHeadIos(config);
|
|
69
|
-
withGammaScreens(config
|
|
63
|
+
withGammaScreens(config);
|
|
70
64
|
|
|
71
65
|
return {
|
|
72
66
|
...config,
|
|
@@ -1,14 +0,0 @@
|
|
|
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 StackHeaderBackButtonProps {
|
|
5
|
-
children?: string;
|
|
6
|
-
style?: NativeStackNavigationOptions['headerBackTitleStyle'];
|
|
7
|
-
withMenu?: boolean;
|
|
8
|
-
displayMode?: ScreenStackHeaderConfigProps['backButtonDisplayMode'];
|
|
9
|
-
hidden?: boolean;
|
|
10
|
-
src?: ImageSourcePropType;
|
|
11
|
-
}
|
|
12
|
-
export declare function StackHeaderBackButton(props: StackHeaderBackButtonProps): null;
|
|
13
|
-
export declare function appendStackHeaderBackButtonPropsToOptions(options: NativeStackNavigationOptions, props: StackHeaderBackButtonProps): NativeStackNavigationOptions;
|
|
14
|
-
//# sourceMappingURL=StackHeaderBackButton.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StackHeaderBackButton.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderBackButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,4BAA4B,CAAC,uBAAuB,CAAC,CAAC;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,mBAAmB,CAAC;CAC3B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,QAEtE;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,4BAA4B,EACrC,KAAK,EAAE,0BAA0B,GAChC,4BAA4B,CAU9B"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StackHeaderBackButton = StackHeaderBackButton;
|
|
4
|
-
exports.appendStackHeaderBackButtonPropsToOptions = appendStackHeaderBackButtonPropsToOptions;
|
|
5
|
-
function StackHeaderBackButton(props) {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
function appendStackHeaderBackButtonPropsToOptions(options, props) {
|
|
9
|
-
return {
|
|
10
|
-
...options,
|
|
11
|
-
headerBackTitle: props.children,
|
|
12
|
-
headerBackTitleStyle: props.style,
|
|
13
|
-
headerBackImageSource: props.src,
|
|
14
|
-
headerBackButtonDisplayMode: props.displayMode,
|
|
15
|
-
headerBackButtonMenuEnabled: props.withMenu,
|
|
16
|
-
headerBackVisible: !props.hidden,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=StackHeaderBackButton.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StackHeaderBackButton.js","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderBackButton.tsx"],"names":[],"mappings":";;AAaA,sDAEC;AAED,8FAaC;AAjBD,SAAgB,qBAAqB,CAAC,KAAiC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,yCAAyC,CACvD,OAAqC,EACrC,KAAiC;IAEjC,OAAO;QACL,GAAG,OAAO;QACV,eAAe,EAAE,KAAK,CAAC,QAAQ;QAC/B,oBAAoB,EAAE,KAAK,CAAC,KAAK;QACjC,qBAAqB,EAAE,KAAK,CAAC,GAAG;QAChC,2BAA2B,EAAE,KAAK,CAAC,WAAW;QAC9C,2BAA2B,EAAE,KAAK,CAAC,QAAQ;QAC3C,iBAAiB,EAAE,CAAC,KAAK,CAAC,MAAM;KACjC,CAAC;AACJ,CAAC","sourcesContent":["import { NativeStackNavigationOptions } from '@react-navigation/native-stack';\nimport type { ImageSourcePropType } from 'react-native';\nimport type { ScreenStackHeaderConfigProps } from 'react-native-screens';\n\nexport interface StackHeaderBackButtonProps {\n children?: string;\n style?: NativeStackNavigationOptions['headerBackTitleStyle'];\n withMenu?: boolean;\n displayMode?: ScreenStackHeaderConfigProps['backButtonDisplayMode'];\n hidden?: boolean;\n src?: ImageSourcePropType;\n}\n\nexport function StackHeaderBackButton(props: StackHeaderBackButtonProps) {\n return null;\n}\n\nexport function appendStackHeaderBackButtonPropsToOptions(\n options: NativeStackNavigationOptions,\n props: StackHeaderBackButtonProps\n): NativeStackNavigationOptions {\n return {\n ...options,\n headerBackTitle: props.children,\n headerBackTitleStyle: props.style,\n headerBackImageSource: props.src,\n headerBackButtonDisplayMode: props.displayMode,\n headerBackButtonMenuEnabled: props.withMenu,\n headerBackVisible: !props.hidden,\n };\n}\n"]}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import type { NativeStackHeaderItemButton } from '@react-navigation/native-stack';
|
|
2
|
-
import type { ReactNode } from 'react';
|
|
3
|
-
import { type StackHeaderItemSharedProps } from './shared';
|
|
4
|
-
export interface StackHeaderButtonProps {
|
|
5
|
-
accessibilityLabel?: string;
|
|
6
|
-
accessibilityHint?: string;
|
|
7
|
-
/**
|
|
8
|
-
* There are two ways to specify the content of the header item:
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```tsx
|
|
12
|
-
* import { Stack } from 'expo-router';
|
|
13
|
-
*
|
|
14
|
-
* ...
|
|
15
|
-
* <Stack.Header.Button icon="star.fill">As text passed as children</Stack.Header.Button>
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```tsx
|
|
20
|
-
* import { Stack } from 'expo-router';
|
|
21
|
-
*
|
|
22
|
-
* ...
|
|
23
|
-
* <Stack.Header.Button>
|
|
24
|
-
* <Stack.Header.Icon sf="star.fill" />
|
|
25
|
-
* <Stack.Header.Label>As components</Stack.Header.Label>
|
|
26
|
-
* <Stack.Header.Badge>3</Stack.Header.Badge>
|
|
27
|
-
* </Stack.Header.Button>
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* **Note**: When icon is used, the label will not be shown and will be used for accessibility purposes only.
|
|
31
|
-
*/
|
|
32
|
-
children?: ReactNode;
|
|
33
|
-
disabled?: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Whether the button should be hidden.
|
|
36
|
-
*
|
|
37
|
-
* @default false
|
|
38
|
-
*/
|
|
39
|
-
hidden?: boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Whether to hide the shared background.
|
|
42
|
-
*
|
|
43
|
-
* @see [Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information.
|
|
44
|
-
*
|
|
45
|
-
* @platform iOS 26+
|
|
46
|
-
*/
|
|
47
|
-
hidesSharedBackground?: boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Icon to display in the button.
|
|
50
|
-
*
|
|
51
|
-
* Can be a string representing an SFSymbol or an image source.
|
|
52
|
-
*/
|
|
53
|
-
icon?: StackHeaderItemSharedProps['icon'];
|
|
54
|
-
onPress?: () => void;
|
|
55
|
-
/**
|
|
56
|
-
* Whether to separate the background of this item from other header items.
|
|
57
|
-
*
|
|
58
|
-
* @default false
|
|
59
|
-
*/
|
|
60
|
-
separateBackground?: boolean;
|
|
61
|
-
/**
|
|
62
|
-
* Whether the button is in a selected state
|
|
63
|
-
*
|
|
64
|
-
* @see [Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/isselected) for more information.
|
|
65
|
-
*/
|
|
66
|
-
selected?: boolean;
|
|
67
|
-
/**
|
|
68
|
-
* Style for the label of the header item.
|
|
69
|
-
*/
|
|
70
|
-
style?: StackHeaderItemSharedProps['style'];
|
|
71
|
-
/**
|
|
72
|
-
* The tint color to apply to the button item
|
|
73
|
-
*
|
|
74
|
-
* @see [Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/tintcolor) for more information.
|
|
75
|
-
*/
|
|
76
|
-
tintColor?: StackHeaderItemSharedProps['tintColor'];
|
|
77
|
-
/**
|
|
78
|
-
* @default 'plain'
|
|
79
|
-
*/
|
|
80
|
-
variant?: StackHeaderItemSharedProps['variant'];
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* A header button used inside `Stack.Header.Left` or `Stack.Header.Right`.
|
|
84
|
-
*
|
|
85
|
-
* @example
|
|
86
|
-
* ```tsx
|
|
87
|
-
* import { Stack } from 'expo-router';
|
|
88
|
-
*
|
|
89
|
-
* export default function Screen() {
|
|
90
|
-
* return (
|
|
91
|
-
* <>
|
|
92
|
-
* <ScreenContent />
|
|
93
|
-
* <Stack.Screen>
|
|
94
|
-
* <Stack.Header>
|
|
95
|
-
* <Stack.Header.Left>
|
|
96
|
-
* <Stack.Header.Button tintColor="blue" icon="arrow.left.circle" onPress={() => alert('Left pressed')} />
|
|
97
|
-
* <Stack.Header.Button style={{ color: 'green' }} onPress={() => alert('2 pressed')}>
|
|
98
|
-
* <Stack.Header.Label>2</Stack.Header.Label>
|
|
99
|
-
* </Stack.Header.Button>
|
|
100
|
-
* </Stack.Header.Left>
|
|
101
|
-
* </Stack.Header>
|
|
102
|
-
* </Stack.Screen>
|
|
103
|
-
* </>
|
|
104
|
-
* );
|
|
105
|
-
* }
|
|
106
|
-
* ```
|
|
107
|
-
*
|
|
108
|
-
* @see [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/toolbars) for more information about navigation bar items on iOS.
|
|
109
|
-
*
|
|
110
|
-
* @platform ios
|
|
111
|
-
*/
|
|
112
|
-
export declare const StackHeaderButton: React.FC<StackHeaderButtonProps>;
|
|
113
|
-
export declare function convertStackHeaderButtonPropsToRNHeaderItem(props: StackHeaderButtonProps): NativeStackHeaderItemButton | undefined;
|
|
114
|
-
//# sourceMappingURL=StackHeaderButton.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StackHeaderButton.d.ts","sourceRoot":"","sources":["../../../src/layouts/stack-utils/StackHeaderButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC5C;;;;OAIG;IACH,SAAS,CAAC,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACpD;;OAEG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAc,CAAC;AAE9E,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,sBAAsB,GAC5B,2BAA2B,GAAG,SAAS,CAUzC"}
|