react-native-screens 5.0.0-alpha.2 → 5.0.0-alpha.4
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/Package.swift +87 -0
- package/README.md +0 -11
- package/android/build.gradle +1 -0
- package/android/consumer-rules.pro +3 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderConfigViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderSubviewViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledViewGroup.kt +18 -3
- package/android/src/main/cpp/NativeProxy.cpp +30 -6
- package/android/src/main/cpp/NativeProxy.h +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +7 -3
- package/android/src/main/java/com/swmansion/rnscreens/common/colorscheme/ColorSchemeCoordinator.kt +11 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetAppearanceCoordinator.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetBehaviorController.kt +51 -20
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetDimensionsCoordinator.kt +159 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetNativeDismissCoordinator.kt +2 -8
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetAvailableHeightProvider.kt +44 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetContainer.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialog.kt +36 -4
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetDialogManager.kt +107 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeDelegate.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeProvider.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetDialogEventEmitter.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetConfig.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/model/FormSheetDetents.kt +152 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetAnimatorFactory.kt +9 -10
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDimmingManager.kt +103 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDismissalOrigin.kt +22 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentation.kt +173 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentationManager.kt +290 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationState.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetStackRegistry.kt +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/FragmentManagerExt.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/FragmentManagerHelper.kt +0 -3
- package/android/src/main/java/com/swmansion/rnscreens/helpers/NoTintDrawable.kt +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
- package/android/src/main/java/com/swmansion/rnscreens/helpers/ViewFinder.kt +0 -17
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +32 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenContainer.kt +35 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderConfig.kt +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderSubviewManager.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackViewManager.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/DimmingView.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/stack/views/ScreensCoordinatorLayout.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapper.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapperViewManager.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDetentChangedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/react/modals/formsheet/event/FormSheetDismissEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissPreventedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetSyncFlushEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetContentView.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHost.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostEventEmitter.kt +17 -10
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostViewManager.kt +11 -9
- package/android/src/main/java/com/swmansion/rnscreens/safearea/OnInterfaceInsetsChangeListener.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaProvider.kt +8 -8
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaView.kt +3 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +360 -101
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +211 -113
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +156 -24
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderToolbar.kt +74 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +162 -228
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +385 -12
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +29 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +8 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +27 -280
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +28 -20
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +3 -55
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +1 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuItemConfig.kt +1 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +57 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueue.kt +23 -9
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperation.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperationExecutor.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +159 -21
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerDelegate.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerUpdateCoordinator.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +27 -5
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackUpdateBatchStateProviding.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/PreventNativeDismissCallback.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +50 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceApplicator.kt +106 -10
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +46 -7
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceModel.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/CustomBottomNavigationView.kt +21 -1
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +72 -36
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainerDelegate.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +22 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +58 -17
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenDelegate.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIcon.kt +82 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIconTinting.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenViewManager.kt +26 -19
- package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +20 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/RNSLog.kt +22 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
- package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
- package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
- package/ios/RNSEnums.h +16 -1
- package/ios/conversion/RNSConversions.h +7 -108
- package/ios/helpers/image/RNSImageLoadingHelper.h +7 -0
- package/ios/helpers/image/RNSImageLoadingHelper.mm +9 -0
- package/ios/legacy/RNSBarButtonItem.mm +15 -0
- package/ios/legacy/RNSConvert.h +6 -0
- package/ios/legacy/RNSConvert.mm +17 -0
- package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
- package/ios/legacy/RNSModalScreen.mm +1 -1
- package/ios/legacy/RNSNavigationBar.h +31 -0
- package/ios/legacy/RNSNavigationBar.mm +15 -0
- package/ios/legacy/RNSScreen.mm +130 -31
- package/ios/legacy/RNSScreenContentWrapper.mm +4 -1
- package/ios/legacy/RNSScreenStack.mm +202 -15
- package/ios/legacy/RNSScreenStackHeaderConfig.h +30 -0
- package/ios/legacy/RNSScreenStackHeaderConfig.mm +72 -17
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +34 -1
- package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
- package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
- package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
- package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
- package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
- package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
- package/ios/safe-area/RNSSafeAreaViewComponentView.mm +3 -14
- package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
- package/ios/split/RNSSplitAppearanceApplicator.h +4 -4
- package/ios/split/RNSSplitAppearanceApplicator.mm +53 -56
- package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
- package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
- package/ios/split/RNSSplitHostComponentView.h +5 -15
- package/ios/split/RNSSplitHostComponentView.mm +55 -6
- package/ios/split/RNSSplitHostController.h +25 -6
- package/ios/split/RNSSplitHostController.mm +24 -92
- package/ios/split/RNSSplitHostProviders.h +67 -0
- package/ios/split/RNSSplitScreenComponentView.h +0 -39
- package/ios/split/RNSSplitScreenComponentView.mm +27 -10
- package/ios/split/RNSSplitScreenController.h +26 -3
- package/ios/split/RNSSplitScreenController.mm +13 -30
- package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
- package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
- package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
- package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
- package/ios/stack/conversion/RNSConversions-Stack.h +62 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +134 -0
- package/ios/stack/header/RNSHeaderItemVisibilityPriority.h +9 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +14 -1
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +103 -37
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +11 -0
- package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderContentFactory.mm +3 -0
- package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +12 -3
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +72 -5
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +7 -0
- package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +13 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +24 -0
- package/ios/stack/header/RNSStackHeaderMenuFinder.h +8 -1
- package/ios/stack/header/RNSStackHeaderMenuFinder.mm +26 -9
- package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
- package/ios/stack/host/RNSStackNavigationBar.h +25 -0
- package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
- package/ios/stack/host/RNSStackNavigationController.mm +13 -5
- package/ios/stack/host/RNSStackOperation.h +0 -2
- package/ios/stack/screen/RNSStackScreenComponentView.h +2 -1
- package/ios/stack/screen/RNSStackScreenComponentView.mm +32 -2
- package/ios/stack/screen/RNSStackScreenController.mm +12 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +8 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +179 -24
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +110 -16
- package/ios/tabs/RNSTabBarItemCoordinator.h +16 -0
- package/ios/tabs/RNSTabBarItemCoordinator.mm +143 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.h +24 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.mm +22 -0
- package/ios/tabs/conversion/RNSConversions-Tabs.h +100 -0
- package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +105 -74
- package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
- package/ios/tabs/host/RNSTabBarController.h +16 -0
- package/ios/tabs/host/RNSTabBarController.mm +516 -107
- package/ios/tabs/host/RNSTabsHostComponentView.h +4 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +41 -4
- package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
- package/ios/tabs/screen/RNSTabsScreenComponentView.h +21 -0
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +56 -56
- package/ios/tabs/screen/RNSTabsScreenViewController.mm +1 -0
- package/ios/utils/RNSDefines.h +15 -7
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +37 -21
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +41 -4
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js +17 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.js +17 -7
- package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.web.js +0 -2
- package/lib/commonjs/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/commonjs/components/stack/index.js.map +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/host/{TabsHost.web.js → TabsHost.js} +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/commonjs/components/tabs/index.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/{TabsScreen.web.js → TabsScreen.js} +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js → tabs/screen/TabsScreenIcon.types.js} +1 -1
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackItem.js +31 -11
- package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.android.js +39 -23
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +43 -6
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.js +10 -0
- package/lib/module/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.js +18 -8
- package/lib/module/components/stack/host/StackHost.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.web.js +0 -3
- package/lib/module/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/module/components/stack/index.js.map +1 -1
- package/lib/module/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/{src/components/tabs/host/TabsHost.web.tsx → lib/module/components/tabs/host/TabsHost.js} +1 -2
- package/lib/module/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/{src/components/tabs/screen/TabsScreen.web.tsx → lib/module/components/tabs/screen/TabsScreen.js} +1 -2
- package/lib/module/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/module/components/tabs/screen/TabsScreenIcon.types.js +2 -0
- package/lib/module/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackItem.js +31 -11
- package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +620 -24
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts +8 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts.map +1 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +361 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +4 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +7 -0
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +47 -0
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.web.d.ts +1 -3
- package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
- package/lib/typescript/components/stack/index.d.ts +4 -3
- package/lib/typescript/components/stack/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.d.ts +5 -0
- package/lib/typescript/components/tabs/host/TabsHost.d.ts.map +1 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +72 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/index.d.ts +4 -6
- package/lib/typescript/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts +42 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts +5 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts +78 -13
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts +91 -0
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -0
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +52 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +29 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +8 -0
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +3 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +4 -0
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +10 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts +25 -0
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +4 -0
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
- package/lib/typescript/legacy/types.d.ts +30 -0
- package/lib/typescript/legacy/types.d.ts.map +1 -1
- package/package.json +11 -8
- package/react-native.config.js +3 -0
- package/src/components/modals/form-sheet/FormSheet.types.ts +1 -1
- package/src/components/stack/header/StackHeaderConfig.android.tsx +54 -43
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +641 -24
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +55 -17
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +384 -2
- package/src/components/stack/header/StackHeaderConfig.tsx +12 -0
- package/src/components/stack/header/StackHeaderConfig.types.ts +4 -2
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +9 -1
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +7 -0
- package/src/components/stack/host/StackHost.tsx +12 -3
- package/src/components/stack/host/StackHost.types.ts +50 -0
- package/src/components/stack/host/StackHost.web.tsx +1 -4
- package/src/components/stack/index.ts +14 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +3 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +76 -0
- package/src/components/tabs/host/TabsHost.tsx +7 -0
- package/src/components/tabs/host/TabsHost.types.ts +3 -0
- package/src/components/tabs/index.ts +9 -0
- package/src/components/tabs/screen/TabsScreen.android.tsx +8 -3
- package/src/components/tabs/screen/TabsScreen.android.types.ts +42 -7
- package/src/components/tabs/screen/TabsScreen.ios.tsx +22 -5
- package/src/components/tabs/screen/TabsScreen.ios.types.ts +79 -17
- package/src/components/tabs/screen/TabsScreen.tsx +7 -0
- package/src/components/tabs/screen/TabsScreenIcon.types.ts +117 -0
- package/src/components/tabs/screen/index.ts +1 -0
- package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -0
- package/src/fabric/legacy/ScreenStackNativeComponent.ts +2 -0
- package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +78 -0
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +43 -0
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +13 -0
- package/src/fabric/stack/StackHostNativeComponent.ts +11 -2
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +8 -0
- package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +9 -0
- package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +20 -2
- package/src/legacy/components/ScreenStackItem.tsx +59 -12
- package/src/legacy/types.ts +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenModalFragment.kt +0 -281
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogRootView.kt +0 -104
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogScreen.kt +0 -26
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +0 -134
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +0 -162
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +0 -106
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +0 -198
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +0 -83
- package/ios/conversion/RNSConversions-Stack.h +0 -32
- package/ios/conversion/RNSConversions-Stack.mm +0 -41
- package/ios/conversion/always_false.h +0 -31
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js +0 -10
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/commonjs/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/module/components/stack/header/StackHeaderConfig.d.js +0 -2
- package/lib/module/components/stack/header/StackHeaderConfig.web.js +0 -4
- package/lib/module/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/module/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.web.js +0 -4
- package/lib/module/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/module/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.web.js +0 -4
- package/lib/module/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +0 -7
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +0 -7
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +0 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +0 -1
- package/src/components/stack/header/StackHeaderConfig.d.ts +0 -22
- package/src/components/stack/header/StackHeaderConfig.web.tsx +0 -5
- package/src/components/tabs/host/TabsHost.d.ts +0 -12
- package/src/components/tabs/screen/TabsScreen.d.ts +0 -12
- /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
import React, {
|
|
2
2
|
type ComponentRef,
|
|
3
|
-
type Ref,
|
|
4
|
-
forwardRef,
|
|
5
3
|
useCallback,
|
|
6
4
|
useEffect,
|
|
7
5
|
useImperativeHandle,
|
|
8
6
|
useMemo,
|
|
9
7
|
useRef,
|
|
10
8
|
} from 'react';
|
|
11
|
-
import type {
|
|
12
|
-
StackHeaderConfigProps,
|
|
13
|
-
StackHeaderConfigRef,
|
|
14
|
-
} from './StackHeaderConfig.types';
|
|
9
|
+
import type { StackHeaderConfigProps } from './StackHeaderConfig.types';
|
|
15
10
|
import StackHeaderConfigIOSNativeComponent, {
|
|
16
11
|
Commands as StackHeaderConfigIOSNativeCommands,
|
|
12
|
+
HeaderAppearance,
|
|
17
13
|
MenuItemPressEvent,
|
|
18
14
|
MenuSelectionChangeEvent,
|
|
19
15
|
NativeMenuElementOptionsIOS,
|
|
@@ -22,8 +18,9 @@ import type { StackHeaderItemPlacement } from './ios/StackHeaderItem.ios.types';
|
|
|
22
18
|
import { StackHeaderItemSpacerPlacement } from './ios/StackHeaderItemSpacer.ios.types';
|
|
23
19
|
import StackHeaderItemSpacer from './ios/StackHeaderItemSpacer.ios';
|
|
24
20
|
import StackHeaderItem from './ios/StackHeaderItem.ios';
|
|
25
|
-
import { NativeSyntheticEvent, StyleSheet } from 'react-native';
|
|
21
|
+
import { NativeSyntheticEvent, StyleSheet, processColor } from 'react-native';
|
|
26
22
|
import type {
|
|
23
|
+
StackHeaderAppearanceIOS,
|
|
27
24
|
StackHeaderInlineCustomItemIOS,
|
|
28
25
|
StackHeaderInlineItemIOS,
|
|
29
26
|
StackHeaderMenuItemOptionsIOS,
|
|
@@ -37,13 +34,10 @@ import { resolveIconAssetSources, resolveMenuIcons } from './ios/iconUtils.ios';
|
|
|
37
34
|
/**
|
|
38
35
|
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
|
|
39
36
|
*/
|
|
40
|
-
function StackHeaderConfig(
|
|
41
|
-
props: StackHeaderConfigProps,
|
|
42
|
-
forwardedRef: Ref<StackHeaderConfigRef>,
|
|
43
|
-
) {
|
|
37
|
+
function StackHeaderConfig(props: StackHeaderConfigProps) {
|
|
44
38
|
// android props are safely dropped
|
|
45
39
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
46
|
-
const { ios, android, ...restProps } = props;
|
|
40
|
+
const { ref: forwardedRef, ios, android, ...restProps } = props;
|
|
47
41
|
|
|
48
42
|
const {
|
|
49
43
|
leadingItems,
|
|
@@ -55,6 +49,14 @@ function StackHeaderConfig(
|
|
|
55
49
|
largeTitle,
|
|
56
50
|
largeSubtitle,
|
|
57
51
|
largeTitleEnabled,
|
|
52
|
+
prompt,
|
|
53
|
+
minimizationBehavior,
|
|
54
|
+
restorationBehavior,
|
|
55
|
+
backButtonTitle,
|
|
56
|
+
backButtonDisplayMode,
|
|
57
|
+
backButtonMenuEnabled,
|
|
58
|
+
standardAppearance,
|
|
59
|
+
scrollEdgeAppearance,
|
|
58
60
|
} = ios ?? {};
|
|
59
61
|
|
|
60
62
|
const nativeRef =
|
|
@@ -102,10 +104,10 @@ function StackHeaderConfig(
|
|
|
102
104
|
[
|
|
103
105
|
...(leadingItems ?? [])
|
|
104
106
|
.filter(it => it && it.type === 'item')
|
|
105
|
-
.
|
|
107
|
+
.flatMap(it => [it.menu, it.menuRepresentation]),
|
|
106
108
|
...(trailingItems ?? [])
|
|
107
109
|
.filter(it => it && it.type === 'item')
|
|
108
|
-
.
|
|
110
|
+
.flatMap(it => [it.menu, it.menuRepresentation]),
|
|
109
111
|
titleMenu,
|
|
110
112
|
].filter(it => !!it),
|
|
111
113
|
[leadingItems, trailingItems, titleMenu],
|
|
@@ -151,9 +153,17 @@ function StackHeaderConfig(
|
|
|
151
153
|
ref={nativeRef}
|
|
152
154
|
{...restProps}
|
|
153
155
|
collapsable={false}
|
|
156
|
+
backButtonTitle={backButtonTitle}
|
|
157
|
+
backButtonDisplayMode={backButtonDisplayMode}
|
|
158
|
+
backButtonMenuEnabled={backButtonMenuEnabled}
|
|
154
159
|
largeTitle={largeTitle}
|
|
155
160
|
largeSubtitle={largeSubtitle}
|
|
156
161
|
largeTitleEnabled={!!largeTitleEnabled}
|
|
162
|
+
prompt={prompt}
|
|
163
|
+
minimizationBehavior={minimizationBehavior}
|
|
164
|
+
restorationBehavior={restorationBehavior}
|
|
165
|
+
standardAppearance={mapAppearanceToNativeProp(standardAppearance)}
|
|
166
|
+
scrollEdgeAppearance={mapAppearanceToNativeProp(scrollEdgeAppearance)}
|
|
157
167
|
titleMenu={resolvedTitleMenu}
|
|
158
168
|
style={styles.config}
|
|
159
169
|
onMenuItemPress={handleMenuItemPress}
|
|
@@ -168,6 +178,36 @@ function StackHeaderConfig(
|
|
|
168
178
|
);
|
|
169
179
|
}
|
|
170
180
|
|
|
181
|
+
function mapAppearanceToNativeProp(
|
|
182
|
+
appearance?: StackHeaderAppearanceIOS,
|
|
183
|
+
): HeaderAppearance | undefined {
|
|
184
|
+
if (!appearance) return undefined;
|
|
185
|
+
|
|
186
|
+
const {
|
|
187
|
+
titleFontColor,
|
|
188
|
+
titleFontWeight,
|
|
189
|
+
largeTitleFontColor,
|
|
190
|
+
largeTitleFontWeight,
|
|
191
|
+
subtitleFontColor,
|
|
192
|
+
subtitleFontWeight,
|
|
193
|
+
} = appearance;
|
|
194
|
+
|
|
195
|
+
return {
|
|
196
|
+
...appearance,
|
|
197
|
+
titleFontColor: processColor(titleFontColor),
|
|
198
|
+
titleFontWeight:
|
|
199
|
+
titleFontWeight !== undefined ? String(titleFontWeight) : undefined,
|
|
200
|
+
largeTitleFontColor: processColor(largeTitleFontColor),
|
|
201
|
+
largeTitleFontWeight:
|
|
202
|
+
largeTitleFontWeight !== undefined
|
|
203
|
+
? String(largeTitleFontWeight)
|
|
204
|
+
: undefined,
|
|
205
|
+
subtitleFontColor: processColor(subtitleFontColor),
|
|
206
|
+
subtitleFontWeight:
|
|
207
|
+
subtitleFontWeight !== undefined ? String(subtitleFontWeight) : undefined,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
|
|
171
211
|
function makeItemViewFromItem(
|
|
172
212
|
item:
|
|
173
213
|
| StackHeaderInlineItemIOS
|
|
@@ -254,6 +294,4 @@ const styles = StyleSheet.create({
|
|
|
254
294
|
},
|
|
255
295
|
});
|
|
256
296
|
|
|
257
|
-
export default
|
|
258
|
-
StackHeaderConfig,
|
|
259
|
-
);
|
|
297
|
+
export default StackHeaderConfig;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ReactElement } from 'react';
|
|
2
|
+
import type { TextStyle } from 'react-native';
|
|
2
3
|
import type { PlatformIconIOS } from '../../shared/types';
|
|
3
4
|
import type { StackHeaderMenuIOS } from './ios/StackHeaderMenu.ios.types';
|
|
4
5
|
|
|
@@ -92,8 +93,110 @@ export interface SupportsMenuIOS {
|
|
|
92
93
|
* @platform iOS
|
|
93
94
|
*/
|
|
94
95
|
menu?: StackHeaderMenuIOS | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* @summary Menu definition substituting the item when it is displayed in a menu.
|
|
98
|
+
*
|
|
99
|
+
* @description
|
|
100
|
+
* When the system moves the item into a menu (e.g. the navigation bar
|
|
101
|
+
* overflow menu), this menu is displayed in its place. Useful for custom items
|
|
102
|
+
* ({@link StackHeaderInlineCustomItemIOS.render | render}), which iOS doesn't display in the overflow menu otherwise.
|
|
103
|
+
* The `id`s used in the menu are expected to be unique across every `menu` and `menuRepresentation`.
|
|
104
|
+
*
|
|
105
|
+
* @platform iOS
|
|
106
|
+
*
|
|
107
|
+
* @supported iOS 16 and higher
|
|
108
|
+
*/
|
|
109
|
+
menuRepresentation?: StackHeaderMenuIOS | undefined;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface SupportsSharedBackgroundIOS {
|
|
113
|
+
/**
|
|
114
|
+
* @summary Whether the liquid glass background for this item should be hidden.
|
|
115
|
+
*
|
|
116
|
+
* @description
|
|
117
|
+
* On iOS 26, adjacent bar button items are grouped inside a shared liquid
|
|
118
|
+
* glass background. Setting this to `true` removes the shared background
|
|
119
|
+
* from this item.
|
|
120
|
+
*
|
|
121
|
+
* @default false
|
|
122
|
+
*
|
|
123
|
+
* @platform iOS
|
|
124
|
+
*
|
|
125
|
+
* @supported iOS 26 and higher
|
|
126
|
+
*/
|
|
127
|
+
hidesSharedBackground?: boolean | undefined;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @summary Priority used when the header has to decide which items to keep.
|
|
132
|
+
*
|
|
133
|
+
* @description
|
|
134
|
+
* Each value maps to the matching `UIBarButtonItemVisibilityPriority` constant.
|
|
135
|
+
*
|
|
136
|
+
* @platform iOS
|
|
137
|
+
*
|
|
138
|
+
* @supported iOS 27 and higher
|
|
139
|
+
*/
|
|
140
|
+
export type StackHeaderItemVisibilityPriorityIOS = 'low' | 'standard' | 'high';
|
|
141
|
+
|
|
142
|
+
export interface SupportsVisibilityPriorityIOS {
|
|
143
|
+
/**
|
|
144
|
+
* @summary Decides which items give way first when the header runs out of room.
|
|
145
|
+
*
|
|
146
|
+
* @description
|
|
147
|
+
* When the items do not fit, the header moves the ones with the lowest
|
|
148
|
+
* priority into the overflow ("...") menu, and keeps the higher ones.
|
|
149
|
+
*
|
|
150
|
+
* Accepts `'low'`, `'standard'` (the default) and `'high'`, which map to the
|
|
151
|
+
* `UIBarButtonItemVisibilityPriority` constants. Only the relative order of
|
|
152
|
+
* the items matters.
|
|
153
|
+
*
|
|
154
|
+
* When the item is placed in an implicit group of items, the group
|
|
155
|
+
* inherits this priority.
|
|
156
|
+
*
|
|
157
|
+
* A custom item ({@link StackHeaderInlineCustomItemIOS.render | render})
|
|
158
|
+
* moved into the overflow menu has no content to show there.
|
|
159
|
+
*
|
|
160
|
+
* @default 'standard'
|
|
161
|
+
*
|
|
162
|
+
* @platform iOS
|
|
163
|
+
*
|
|
164
|
+
* @supported iOS 27 and higher
|
|
165
|
+
*/
|
|
166
|
+
visibilityPriority?: StackHeaderItemVisibilityPriorityIOS | undefined;
|
|
95
167
|
}
|
|
96
168
|
|
|
169
|
+
export interface SupportsIdentifierIOS {
|
|
170
|
+
/**
|
|
171
|
+
* @summary Stable identifier used to match the item across different screens
|
|
172
|
+
* for more intelligent animation on transition.
|
|
173
|
+
*
|
|
174
|
+
* @description
|
|
175
|
+
* When navigating between screens, iOS tries to match similarly looking items (i.e. same sfSymbol)
|
|
176
|
+
* and animate between them. If the heuristic fails, a simpler crossfade is applied.
|
|
177
|
+
* In a situation where visually different items should be logically considered the same across screens,
|
|
178
|
+
* you may use this prop to tell this fact to the system. The identifier shouldn't be updated at runtime;
|
|
179
|
+
* doing so will result in item rebuild and visual flash.
|
|
180
|
+
*
|
|
181
|
+
* @platform iOS
|
|
182
|
+
*
|
|
183
|
+
* @supported iOS 26 and higher
|
|
184
|
+
*/
|
|
185
|
+
identifier?: string | undefined;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* @summary Visual variant (style) of a header item.
|
|
190
|
+
*
|
|
191
|
+
* @description
|
|
192
|
+
* - `plain`: the default look of a bar button item.
|
|
193
|
+
* - `prominent`: the item is emphasized with a tinted background.
|
|
194
|
+
* On iOS below 26 it falls back to bold text (the `done` style).
|
|
195
|
+
*
|
|
196
|
+
* @platform iOS
|
|
197
|
+
*/
|
|
198
|
+
export type StackHeaderItemVariantIOS = 'plain' | 'prominent';
|
|
199
|
+
|
|
97
200
|
/**
|
|
98
201
|
* @summary Native header item with text label.
|
|
99
202
|
*
|
|
@@ -101,13 +204,37 @@ export interface SupportsMenuIOS {
|
|
|
101
204
|
*/
|
|
102
205
|
export interface StackHeaderInlineItemIOS
|
|
103
206
|
extends StackHeaderBaseItemIOS,
|
|
104
|
-
SupportsMenuIOS
|
|
207
|
+
SupportsMenuIOS,
|
|
208
|
+
SupportsIdentifierIOS,
|
|
209
|
+
SupportsSharedBackgroundIOS,
|
|
210
|
+
SupportsVisibilityPriorityIOS {
|
|
105
211
|
/**
|
|
106
212
|
* @summary Marks this object as a header item definition.
|
|
107
213
|
*
|
|
108
214
|
* @platform iOS
|
|
109
215
|
*/
|
|
110
216
|
type: 'item';
|
|
217
|
+
/**
|
|
218
|
+
* @summary Visual variant (style) of the item.
|
|
219
|
+
*
|
|
220
|
+
* @default 'plain'
|
|
221
|
+
*
|
|
222
|
+
* @platform iOS
|
|
223
|
+
*/
|
|
224
|
+
variant?: StackHeaderItemVariantIOS | undefined;
|
|
225
|
+
/**
|
|
226
|
+
* @summary Whether the item is disabled.
|
|
227
|
+
*
|
|
228
|
+
* @description
|
|
229
|
+
* A disabled item is grayed out and does not respond to user interaction:
|
|
230
|
+
* neither {@link StackHeaderInlineItemIOS.onPress | onPress} nor
|
|
231
|
+
* {@link SupportsMenuIOS.menu | menu} is triggered.
|
|
232
|
+
*
|
|
233
|
+
* @default false
|
|
234
|
+
*
|
|
235
|
+
* @platform iOS
|
|
236
|
+
*/
|
|
237
|
+
disabled?: boolean | undefined;
|
|
111
238
|
/**
|
|
112
239
|
* @summary Callback invoked when the header item is pressed.
|
|
113
240
|
*
|
|
@@ -126,7 +253,11 @@ export interface StackHeaderInlineItemIOS
|
|
|
126
253
|
*
|
|
127
254
|
* @platform iOS
|
|
128
255
|
*/
|
|
129
|
-
export interface StackHeaderInlineCustomItemIOS
|
|
256
|
+
export interface StackHeaderInlineCustomItemIOS
|
|
257
|
+
extends SupportsMenuIOS,
|
|
258
|
+
SupportsIdentifierIOS,
|
|
259
|
+
SupportsSharedBackgroundIOS,
|
|
260
|
+
SupportsVisibilityPriorityIOS {
|
|
130
261
|
/**
|
|
131
262
|
* @summary A unique identifier within the screen header.
|
|
132
263
|
*
|
|
@@ -250,7 +381,203 @@ export interface StackHeaderTitleCustomItemIOS {
|
|
|
250
381
|
render: () => ReactElement;
|
|
251
382
|
}
|
|
252
383
|
|
|
384
|
+
/**
|
|
385
|
+
* @summary Controls how the back button title is displayed.
|
|
386
|
+
*
|
|
387
|
+
* @description
|
|
388
|
+
* - `default`: the system chooses the title depending on available space.
|
|
389
|
+
* On iOS < 26 options include: custom title (defaults to previous screen title),
|
|
390
|
+
* generic "Back", no title; on iOS >= 26 it's either custom title (if set) or no title.
|
|
391
|
+
* - `generic`: on iOS < 26, the system uses a generic "Back" title or no title;
|
|
392
|
+
* on iOS >= 26 it's the same as `minimal`.
|
|
393
|
+
* - `minimal`: no title is displayed next to the back button chevron.
|
|
394
|
+
*
|
|
395
|
+
* @platform iOS
|
|
396
|
+
*/
|
|
397
|
+
export type StackHeaderBackButtonDisplayModeIOS =
|
|
398
|
+
| 'default'
|
|
399
|
+
| 'generic'
|
|
400
|
+
| 'minimal';
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* @summary Controls when the navigation bar minimizes in response to scrolling.
|
|
404
|
+
*
|
|
405
|
+
* @description
|
|
406
|
+
* - `automatic`: the system determines the minimization behavior.
|
|
407
|
+
* - `never`: the navigation bar does not minimize.
|
|
408
|
+
* - `onScrollDown`: the navigation bar minimizes when the user scrolls down.
|
|
409
|
+
* - `onScrollUp`: the navigation bar minimizes when the user scrolls up.
|
|
410
|
+
*
|
|
411
|
+
* @platform iOS
|
|
412
|
+
*/
|
|
413
|
+
export type StackHeaderMinimizationBehaviorIOS =
|
|
414
|
+
| 'automatic'
|
|
415
|
+
| 'never'
|
|
416
|
+
| 'onScrollDown'
|
|
417
|
+
| 'onScrollUp';
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* @summary Controls when a minimized navigation bar restores.
|
|
421
|
+
*
|
|
422
|
+
* @description
|
|
423
|
+
* - `automatic`: the system determines the restoration behavior. By default
|
|
424
|
+
* the navigation bar restores when the user reverses scroll direction.
|
|
425
|
+
* - `atScrollEdge`: the navigation bar restores only when the scroll view's
|
|
426
|
+
* content reaches the scroll edge. Honored only together with
|
|
427
|
+
* `minimizationBehavior: 'onScrollDown'`.
|
|
428
|
+
*
|
|
429
|
+
* @platform iOS
|
|
430
|
+
*/
|
|
431
|
+
export type StackHeaderRestorationBehaviorIOS = 'automatic' | 'atScrollEdge';
|
|
432
|
+
|
|
433
|
+
export interface StackHeaderAppearanceIOS {
|
|
434
|
+
/**
|
|
435
|
+
* @summary Specifies the font family used for the title of the header.
|
|
436
|
+
*
|
|
437
|
+
* @platform ios
|
|
438
|
+
*/
|
|
439
|
+
titleFontFamily?: TextStyle['fontFamily'] | undefined;
|
|
440
|
+
/**
|
|
441
|
+
* @summary Specifies the font size used for the title of the header.
|
|
442
|
+
*
|
|
443
|
+
* @platform ios
|
|
444
|
+
*/
|
|
445
|
+
titleFontSize?: TextStyle['fontSize'] | undefined;
|
|
446
|
+
/**
|
|
447
|
+
* @summary Specifies the font weight used for the title of the header.
|
|
448
|
+
*
|
|
449
|
+
* @platform ios
|
|
450
|
+
*/
|
|
451
|
+
titleFontWeight?: TextStyle['fontWeight'] | undefined;
|
|
452
|
+
/**
|
|
453
|
+
* @summary Specifies the font style used for the title of the header.
|
|
454
|
+
*
|
|
455
|
+
* @platform ios
|
|
456
|
+
*/
|
|
457
|
+
titleFontStyle?: TextStyle['fontStyle'] | undefined;
|
|
458
|
+
/**
|
|
459
|
+
* @summary Specifies the font color used for the title of the header.
|
|
460
|
+
*
|
|
461
|
+
* @platform ios
|
|
462
|
+
*/
|
|
463
|
+
titleFontColor?: TextStyle['color'] | undefined;
|
|
464
|
+
/**
|
|
465
|
+
* @summary Specifies the font family used for the large title of the header.
|
|
466
|
+
*
|
|
467
|
+
* @platform ios
|
|
468
|
+
*/
|
|
469
|
+
largeTitleFontFamily?: TextStyle['fontFamily'] | undefined;
|
|
470
|
+
/**
|
|
471
|
+
* @summary Specifies the font size used for the large title of the header.
|
|
472
|
+
*
|
|
473
|
+
* @platform ios
|
|
474
|
+
*/
|
|
475
|
+
largeTitleFontSize?: TextStyle['fontSize'] | undefined;
|
|
476
|
+
/**
|
|
477
|
+
* @summary Specifies the font weight used for the large title of the header.
|
|
478
|
+
*
|
|
479
|
+
* @platform ios
|
|
480
|
+
*/
|
|
481
|
+
largeTitleFontWeight?: TextStyle['fontWeight'] | undefined;
|
|
482
|
+
/**
|
|
483
|
+
* @summary Specifies the font style used for the large title of the header.
|
|
484
|
+
*
|
|
485
|
+
* @platform ios
|
|
486
|
+
*/
|
|
487
|
+
largeTitleFontStyle?: TextStyle['fontStyle'] | undefined;
|
|
488
|
+
/**
|
|
489
|
+
* @summary Specifies the font color used for the large title of the header.
|
|
490
|
+
*
|
|
491
|
+
* @platform ios
|
|
492
|
+
*/
|
|
493
|
+
largeTitleFontColor?: TextStyle['color'] | undefined;
|
|
494
|
+
/**
|
|
495
|
+
* @summary Specifies the font family used for the subtitle of the header.
|
|
496
|
+
*
|
|
497
|
+
* @description Applies to both the regular and the large subtitle.
|
|
498
|
+
*
|
|
499
|
+
* @platform ios
|
|
500
|
+
*
|
|
501
|
+
* @supported iOS 26 and higher
|
|
502
|
+
*/
|
|
503
|
+
subtitleFontFamily?: TextStyle['fontFamily'] | undefined;
|
|
504
|
+
/**
|
|
505
|
+
* @summary Specifies the font size used for the subtitle of the header.
|
|
506
|
+
*
|
|
507
|
+
* @description Applies to both the regular and the large subtitle.
|
|
508
|
+
*
|
|
509
|
+
* @platform ios
|
|
510
|
+
*
|
|
511
|
+
* @supported iOS 26 and higher
|
|
512
|
+
*/
|
|
513
|
+
subtitleFontSize?: TextStyle['fontSize'] | undefined;
|
|
514
|
+
/**
|
|
515
|
+
* @summary Specifies the font weight used for the subtitle of the header.
|
|
516
|
+
*
|
|
517
|
+
* @description Applies to both the regular and the large subtitle.
|
|
518
|
+
*
|
|
519
|
+
* @platform ios
|
|
520
|
+
*
|
|
521
|
+
* @supported iOS 26 and higher
|
|
522
|
+
*/
|
|
523
|
+
subtitleFontWeight?: TextStyle['fontWeight'] | undefined;
|
|
524
|
+
/**
|
|
525
|
+
* @summary Specifies the font style used for the subtitle of the header.
|
|
526
|
+
*
|
|
527
|
+
* @description Applies to both the regular and the large subtitle.
|
|
528
|
+
*
|
|
529
|
+
* @platform ios
|
|
530
|
+
*
|
|
531
|
+
* @supported iOS 26 and higher
|
|
532
|
+
*/
|
|
533
|
+
subtitleFontStyle?: TextStyle['fontStyle'] | undefined;
|
|
534
|
+
/**
|
|
535
|
+
* @summary Specifies the font color used for the subtitle of the header.
|
|
536
|
+
*
|
|
537
|
+
* @description Applies to both the regular and the large subtitle.
|
|
538
|
+
*
|
|
539
|
+
* @platform ios
|
|
540
|
+
*
|
|
541
|
+
* @supported iOS 26 and higher
|
|
542
|
+
*/
|
|
543
|
+
subtitleFontColor?: TextStyle['color'] | undefined;
|
|
544
|
+
}
|
|
545
|
+
|
|
253
546
|
export interface StackHeaderConfigPropsIOS {
|
|
547
|
+
/**
|
|
548
|
+
* @summary Title displayed next to the back button on this screen.
|
|
549
|
+
*
|
|
550
|
+
* @description
|
|
551
|
+
* Configured on the screen whose back button it applies to (the screen that
|
|
552
|
+
* is pushed on top). When unset, the system derives the back title from the
|
|
553
|
+
* previous screen's `title`.
|
|
554
|
+
*
|
|
555
|
+
* @platform iOS
|
|
556
|
+
*/
|
|
557
|
+
backButtonTitle?: string | undefined;
|
|
558
|
+
/**
|
|
559
|
+
* @summary Controls how the back button title is displayed.
|
|
560
|
+
*
|
|
561
|
+
* @default 'default'
|
|
562
|
+
*
|
|
563
|
+
* @platform iOS
|
|
564
|
+
*/
|
|
565
|
+
backButtonDisplayMode?: StackHeaderBackButtonDisplayModeIOS | undefined;
|
|
566
|
+
/**
|
|
567
|
+
* @summary Whether the back button shows the navigation history menu.
|
|
568
|
+
*
|
|
569
|
+
* @description
|
|
570
|
+
* Configured on the screen whose back button it applies to (the screen that
|
|
571
|
+
* is pushed on top). When `false`, the navigation history menu is not shown
|
|
572
|
+
* on either of the gestures that normally open it: long-pressing the back
|
|
573
|
+
* button and secondary-clicking it (trackpad / mouse right click); tapping
|
|
574
|
+
* it still pops the screen.
|
|
575
|
+
*
|
|
576
|
+
* @default true
|
|
577
|
+
*
|
|
578
|
+
* @platform iOS
|
|
579
|
+
*/
|
|
580
|
+
backButtonMenuEnabled?: boolean | undefined;
|
|
254
581
|
/**
|
|
255
582
|
* @summary Custom item to display as a subtitle.
|
|
256
583
|
*
|
|
@@ -351,6 +678,61 @@ export interface StackHeaderConfigPropsIOS {
|
|
|
351
678
|
* @supported iOS 26 and higher
|
|
352
679
|
*/
|
|
353
680
|
largeSubtitleItem?: StackHeaderTitleCustomItemIOS | undefined;
|
|
681
|
+
/**
|
|
682
|
+
* @summary A single line of text displayed at the top of the navigation bar,
|
|
683
|
+
* above the title.
|
|
684
|
+
*
|
|
685
|
+
* @description
|
|
686
|
+
* Setting this prop increases the height of the navigation bar.
|
|
687
|
+
*
|
|
688
|
+
* @platform iOS
|
|
689
|
+
*/
|
|
690
|
+
prompt?: string | undefined;
|
|
691
|
+
/**
|
|
692
|
+
* @summary Controls when the navigation bar minimizes in response to scrolling.
|
|
693
|
+
*
|
|
694
|
+
* @description
|
|
695
|
+
* When the navigation bar minimizes, an integrated top tab bar minimizes as well.
|
|
696
|
+
*
|
|
697
|
+
* @default 'automatic'
|
|
698
|
+
*
|
|
699
|
+
* @platform iOS
|
|
700
|
+
*
|
|
701
|
+
* @supported iOS 27 and higher
|
|
702
|
+
*/
|
|
703
|
+
minimizationBehavior?: StackHeaderMinimizationBehaviorIOS | undefined;
|
|
704
|
+
/**
|
|
705
|
+
* @summary Controls when a minimized navigation bar restores.
|
|
706
|
+
*
|
|
707
|
+
* @description
|
|
708
|
+
* Currently honored only together with `minimizationBehavior: 'onScrollDown'`.
|
|
709
|
+
* With other minimization behaviors, the system falls back to `automatic`.
|
|
710
|
+
*
|
|
711
|
+
* @default 'automatic'
|
|
712
|
+
*
|
|
713
|
+
* @platform iOS
|
|
714
|
+
*
|
|
715
|
+
* @supported iOS 27 and higher
|
|
716
|
+
*/
|
|
717
|
+
restorationBehavior?: StackHeaderRestorationBehaviorIOS | undefined;
|
|
718
|
+
/**
|
|
719
|
+
* @summary Appearance of the header when the edge of scrollable content
|
|
720
|
+
* is not aligned with the edge of the header.
|
|
721
|
+
*
|
|
722
|
+
* @platform ios
|
|
723
|
+
*/
|
|
724
|
+
standardAppearance?: StackHeaderAppearanceIOS | undefined;
|
|
725
|
+
/**
|
|
726
|
+
* @summary Appearance of the header when the edge of scrollable content
|
|
727
|
+
* is aligned with the edge of the header.
|
|
728
|
+
*
|
|
729
|
+
* @description If unset, derives the configuration from `standardAppearance`,
|
|
730
|
+
* otherwise becomes a standalone definition. In both cases it keeps transparent
|
|
731
|
+
* background by default (iOS <18).
|
|
732
|
+
*
|
|
733
|
+
* @platform ios
|
|
734
|
+
*/
|
|
735
|
+
scrollEdgeAppearance?: StackHeaderAppearanceIOS | undefined;
|
|
354
736
|
}
|
|
355
737
|
|
|
356
738
|
export interface StackHeaderConfigCommandsIOS {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import type { StackHeaderConfigProps } from './StackHeaderConfig.types';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
|
|
7
|
+
*/
|
|
8
|
+
function StackHeaderConfig(_props: StackHeaderConfigProps) {
|
|
9
|
+
return <View />;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default StackHeaderConfig;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Ref } from 'react';
|
|
1
2
|
import type { StackHeaderConfigCommandsAndroid } from './StackHeaderConfig.android.types';
|
|
2
3
|
import { StackHeaderConfigPropsAndroid } from './StackHeaderConfig.android.types';
|
|
3
4
|
import type { StackHeaderConfigCommandsIOS } from './StackHeaderConfig.ios.types';
|
|
@@ -11,9 +12,9 @@ export interface StackHeaderConfigPropsBase {
|
|
|
11
12
|
*/
|
|
12
13
|
title?: string | undefined;
|
|
13
14
|
/**
|
|
14
|
-
* @summary Subtitle displayed in the header.
|
|
15
|
+
* @summary Subtitle displayed in the header.
|
|
15
16
|
*
|
|
16
|
-
* @platform ios
|
|
17
|
+
* @platform android, ios
|
|
17
18
|
*/
|
|
18
19
|
subtitle?: string | undefined;
|
|
19
20
|
/**
|
|
@@ -58,6 +59,7 @@ export interface StackHeaderConfigPropsBase {
|
|
|
58
59
|
export interface StackHeaderConfigProps extends StackHeaderConfigPropsBase {
|
|
59
60
|
android?: StackHeaderConfigPropsAndroid | undefined;
|
|
60
61
|
ios?: StackHeaderConfigPropsIOS | undefined;
|
|
62
|
+
ref?: Ref<StackHeaderConfigRef> | undefined;
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
export interface StackHeaderConfigRef {
|
|
@@ -6,7 +6,7 @@ import { NativeSyntheticEvent, StyleSheet } from 'react-native';
|
|
|
6
6
|
import { resolveIconAssetSources, resolveMenuIcons } from './iconUtils.ios';
|
|
7
7
|
|
|
8
8
|
export default function StackHeaderItem(props: StackHeaderItemProps) {
|
|
9
|
-
const { render, onPress, icon, menu, ...rest } = props;
|
|
9
|
+
const { render, onPress, icon, menu, menuRepresentation, ...rest } = props;
|
|
10
10
|
|
|
11
11
|
// `rest.menu` includes some JS callback within nested menu specification
|
|
12
12
|
// codegen strips JS functions and replaces them with NULLT and keys of such type
|
|
@@ -24,12 +24,20 @@ export default function StackHeaderItem(props: StackHeaderItemProps) {
|
|
|
24
24
|
() => (menu != null ? resolveMenuIcons(menu) : undefined),
|
|
25
25
|
[menu],
|
|
26
26
|
);
|
|
27
|
+
const resolvedMenuRepresentation = useMemo(
|
|
28
|
+
() =>
|
|
29
|
+
menuRepresentation != null
|
|
30
|
+
? resolveMenuIcons(menuRepresentation)
|
|
31
|
+
: undefined,
|
|
32
|
+
[menuRepresentation],
|
|
33
|
+
);
|
|
27
34
|
|
|
28
35
|
return (
|
|
29
36
|
<StackHeaderItemIOSNativeComponent
|
|
30
37
|
{...rest}
|
|
31
38
|
icon={resolvedIcon}
|
|
32
39
|
menu={resolvedMenu}
|
|
40
|
+
menuRepresentation={resolvedMenuRepresentation}
|
|
33
41
|
// We need to tell iOS that we want the handler to be attached only when we actually require it
|
|
34
42
|
// because doing so makes the menu appear on long press instead of tap
|
|
35
43
|
respondsToOnPress={!!onPress}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ReactElement } from 'react';
|
|
2
2
|
import type { PlatformIconIOS } from '../../../shared/types';
|
|
3
3
|
import type { StackHeaderMenuIOS } from './StackHeaderMenu.ios.types';
|
|
4
|
+
import type { StackHeaderItemVisibilityPriorityIOS } from '../StackHeaderConfig.ios.types';
|
|
4
5
|
|
|
5
6
|
export type StackHeaderItemPlacement =
|
|
6
7
|
| 'leading'
|
|
@@ -12,9 +13,15 @@ export type StackHeaderItemPlacement =
|
|
|
12
13
|
export type StackHeaderItemProps = {
|
|
13
14
|
placement: StackHeaderItemPlacement;
|
|
14
15
|
itemId?: string | undefined;
|
|
16
|
+
identifier?: string | undefined;
|
|
17
|
+
hidesSharedBackground?: boolean | undefined;
|
|
18
|
+
visibilityPriority?: StackHeaderItemVisibilityPriorityIOS | undefined;
|
|
15
19
|
title?: string | undefined;
|
|
16
20
|
icon?: PlatformIconIOS | undefined;
|
|
17
21
|
render?: (() => ReactElement) | undefined;
|
|
18
22
|
menu?: StackHeaderMenuIOS | undefined;
|
|
23
|
+
menuRepresentation?: StackHeaderMenuIOS | undefined;
|
|
24
|
+
variant?: 'plain' | 'prominent' | undefined;
|
|
25
|
+
disabled?: boolean | undefined;
|
|
19
26
|
onPress?: (() => void) | undefined;
|
|
20
27
|
};
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { StyleSheet } from 'react-native';
|
|
2
|
+
import { Platform, StyleSheet } from 'react-native';
|
|
3
3
|
import StackHostNativeComponent from '../../../fabric/stack/StackHostNativeComponent';
|
|
4
4
|
import type { StackHostProps } from './StackHost.types';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
|
|
8
8
|
*/
|
|
9
|
-
function StackHost(
|
|
9
|
+
function StackHost(props: StackHostProps) {
|
|
10
|
+
const { children, ref, direction, ...restProps } = props;
|
|
11
|
+
|
|
12
|
+
// RN's `direction` style sets the native View's layoutDirection, which the
|
|
13
|
+
// stack's native subtree inherits. iOS needs a trait override instead.
|
|
14
|
+
const directionStyle = Platform.OS === 'android' ? { direction } : undefined;
|
|
15
|
+
|
|
10
16
|
return (
|
|
11
|
-
<StackHostNativeComponent
|
|
17
|
+
<StackHostNativeComponent
|
|
18
|
+
ref={ref}
|
|
19
|
+
style={[styles.container, directionStyle]}
|
|
20
|
+
{...restProps}>
|
|
12
21
|
{children}
|
|
13
22
|
</StackHostNativeComponent>
|
|
14
23
|
);
|