react-native-screens 5.0.0-alpha.3 → 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/README.md +0 -4
- 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/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 +9 -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 +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetDimensionsCoordinator.kt +6 -6
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetKeyboardCoordinator.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetNativeDismissCoordinator.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetAvailableHeightProvider.kt +1 -1
- 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 +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialogManager.kt +26 -8
- 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 +1 -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/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetDetents.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetAnimatorFactory.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetDimmingManager.kt +6 -18
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetDismissalOrigin.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentation.kt +10 -10
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationManager.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationState.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetStackRegistry.kt +1 -1
- 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/ViewFinder.kt +0 -17
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +29 -2
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenContainer.kt +35 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +13 -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/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDismissEvent.kt +1 -1
- 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 +11 -11
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostViewManager.kt +10 -10
- 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 +0 -52
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +112 -59
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +1 -1
- 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/StackHeaderConfig.kt +4 -73
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +5 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +0 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +3 -7
- 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 +57 -19
- 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 +14 -5
- 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/StackScreenFragment.kt +33 -12
- 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 +44 -3
- 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/TabsContainer.kt +28 -13
- 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 +12 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +41 -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/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 +14 -7
- package/android/src/main/java/com/swmansion/rnscreens/utils/RNSLog.kt +22 -6
- package/ios/RNSEnums.h +14 -1
- 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/RNSNavigationBar.h +31 -0
- package/ios/legacy/RNSNavigationBar.mm +15 -0
- package/ios/legacy/RNSScreen.mm +122 -12
- 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 +70 -17
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +33 -0
- package/ios/safe-area/RNSSafeAreaViewComponentView.mm +1 -12
- package/ios/stack/conversion/RNSConversions-Stack.h +30 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +79 -0
- package/ios/stack/header/RNSHeaderItemVisibilityPriority.h +9 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +4 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +40 -6
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +5 -0
- package/ios/stack/header/RNSStackHeaderContentFactory.mm +3 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +9 -2
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +57 -3
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +5 -0
- 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/screen/RNSStackScreenComponentView.h +2 -1
- package/ios/stack/screen/RNSStackScreenComponentView.mm +23 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +81 -8
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +79 -16
- package/ios/tabs/RNSTabBarItemCoordinator.h +16 -0
- package/ios/tabs/RNSTabBarItemCoordinator.mm +143 -0
- 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 +22 -0
- package/ios/tabs/conversion/RNSConversions-Tabs.mm +97 -3
- package/ios/tabs/host/RNSTabBarController.h +16 -0
- package/ios/tabs/host/RNSTabBarController.mm +516 -107
- package/ios/tabs/host/RNSTabsHostComponentView.h +2 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +32 -2
- package/ios/tabs/screen/RNSTabsScreenComponentView.h +21 -0
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +54 -69
- package/ios/tabs/screen/RNSTabsScreenViewController.mm +1 -0
- package/ios/utils/RNSDefines.h +12 -7
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +3 -2
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +8 -3
- 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 +8 -1
- 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 +2 -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/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.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 +4 -3
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +9 -4
- 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 +9 -2
- 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 +2 -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/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.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/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 +4 -3
- 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 +137 -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 +2 -0
- 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 +5 -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.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +24 -1
- 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 +56 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.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/StackHeaderConfigIOSNativeComponent.d.ts +4 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +3 -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 +4 -2
- package/src/components/stack/header/StackHeaderConfig.android.tsx +6 -20
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +4 -3
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +10 -16
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +148 -2
- package/src/components/stack/header/StackHeaderConfig.tsx +12 -0
- package/src/components/stack/header/StackHeaderConfig.types.ts +2 -0
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +9 -1
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +5 -0
- package/src/components/stack/host/StackHost.tsx +10 -3
- package/src/components/stack/host/StackHost.types.ts +25 -1
- package/src/components/stack/host/StackHost.web.tsx +1 -4
- package/src/components/stack/index.ts +9 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +2 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +60 -0
- package/src/components/tabs/host/TabsHost.tsx +7 -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/StackHeaderConfigIOSNativeComponent.ts +11 -0
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +11 -0
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +7 -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/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
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#import "RNSTabBarItemCoordinator.h"
|
|
2
|
+
#import <React/RCTLog.h>
|
|
3
|
+
#import "RNSConversions-Tabs.h"
|
|
4
|
+
#import "RNSDefines.h"
|
|
5
|
+
#import "RNSTabsScreenComponentView.h"
|
|
6
|
+
|
|
7
|
+
@implementation RNSTabBarItemCoordinator
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Creates UITabBarItem instance with set systemItem. Needs to be called before UITab creation for the same
|
|
11
|
+
* viewController.
|
|
12
|
+
*/
|
|
13
|
+
- (void)createTabBarItemsForTabScreenControllers:(nullable NSArray<RNSTabsScreenViewController *> *)tabScreenCtrls
|
|
14
|
+
{
|
|
15
|
+
for (RNSTabsScreenViewController *tabScreenCtrl in tabScreenCtrls) {
|
|
16
|
+
RNSTabsScreenComponentView *screenView = tabScreenCtrl.tabScreenComponentView;
|
|
17
|
+
if (screenView == nil) {
|
|
18
|
+
RCTLogWarn(@"[RNScreens] Nullish component view of TabScreen while tab bar item creation!");
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (screenView.tabBarItemNeedsRecreation) {
|
|
23
|
+
screenView.tabBarItemNeedsRecreation = NO;
|
|
24
|
+
[self createTabBarItemForTabScreenController:tabScreenCtrl];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Updates the runtime properties of UITabBarItem: title and badge. If used with UITab API, it should be called after
|
|
31
|
+
* the tab is built.
|
|
32
|
+
*/
|
|
33
|
+
- (void)updateTabBarItemsForTabScreenControllers:(nullable NSArray<RNSTabsScreenViewController *> *)tabScreenCtrls
|
|
34
|
+
{
|
|
35
|
+
for (RNSTabsScreenViewController *tabScreenCtrl in tabScreenCtrls) {
|
|
36
|
+
RNSTabsScreenComponentView *screenView = tabScreenCtrl.tabScreenComponentView;
|
|
37
|
+
if (screenView == nil) {
|
|
38
|
+
RCTLogWarn(@"[RNScreens] Nullish component view of TabScreen while tab bar item update!");
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (screenView.tabBarItemNeedsUpdate) {
|
|
43
|
+
screenView.tabBarItemNeedsUpdate = NO;
|
|
44
|
+
[self updateTabBarItemForTabScreenController:tabScreenCtrl];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
- (void)createTabBarItemForTabScreenController:(nonnull RNSTabsScreenViewController *)tabScreenCtrl
|
|
50
|
+
{
|
|
51
|
+
RNSTabsScreenComponentView *screenView = tabScreenCtrl.tabScreenComponentView;
|
|
52
|
+
|
|
53
|
+
UITabBarItem *tabBarItem = nil;
|
|
54
|
+
if (screenView.systemItem != RNSTabsScreenSystemItemNone) {
|
|
55
|
+
std::optional<UITabBarSystemItem> systemItem =
|
|
56
|
+
rnscreens::conversion::RNSTabsScreenSystemItemToUITabBarSystemItem(screenView.systemItem);
|
|
57
|
+
if (!systemItem) {
|
|
58
|
+
RCTLogError(
|
|
59
|
+
@"[RNScreens] Conversion from tabs screen systemItem to UITabBarSystemItem failed for systemItem [%ld]",
|
|
60
|
+
(long)screenView.systemItem);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:systemItem.value() tag:0];
|
|
64
|
+
} else {
|
|
65
|
+
tabBarItem = [[UITabBarItem alloc] init];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
[self applyTabBarItemRepaintWorkaroundForTabScreenController:tabScreenCtrl];
|
|
69
|
+
tabScreenCtrl.tabBarItem = tabBarItem;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* TODO: This is an ugly workaround and I would love to see it replaced.
|
|
74
|
+
* With UITab-managed children (iOS >= 26.1) any change to the systemItem for the first time
|
|
75
|
+
* results in missing icon and wrong title. Assigning a throwaway item first flips the internal logic
|
|
76
|
+
* so that the real assignment that follows paints synchronously.
|
|
77
|
+
* Remove once UIKit internals no longer require it.
|
|
78
|
+
*/
|
|
79
|
+
- (void)applyTabBarItemRepaintWorkaroundForTabScreenController:(nonnull RNSTabsScreenViewController *)tabScreenCtrl
|
|
80
|
+
{
|
|
81
|
+
#if RNS_UITAB_API_SDK_AVAILABLE
|
|
82
|
+
if (RNS_UITAB_API_ENABLED) {
|
|
83
|
+
tabScreenCtrl.tabBarItem = [[UITabBarItem alloc] init];
|
|
84
|
+
}
|
|
85
|
+
#endif // RNS_UITAB_API_SDK_AVAILABLE
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
- (void)updateTabBarItemForTabScreenController:(nonnull RNSTabsScreenViewController *)tabScreenCtrl
|
|
89
|
+
{
|
|
90
|
+
RNSTabsScreenComponentView *screenView = tabScreenCtrl.tabScreenComponentView;
|
|
91
|
+
|
|
92
|
+
NSString *evaluatedTitle = screenView.title;
|
|
93
|
+
if (screenView.title == nil && screenView.systemItem != RNSTabsScreenSystemItemNone) {
|
|
94
|
+
// Restore default system item title
|
|
95
|
+
std::optional<UITabBarSystemItem> systemItem =
|
|
96
|
+
rnscreens::conversion::RNSTabsScreenSystemItemToUITabBarSystemItem(screenView.systemItem);
|
|
97
|
+
if (!systemItem) {
|
|
98
|
+
RCTLogError(
|
|
99
|
+
@"[RNScreens] Conversion from tabs screen systemItem to UITabBarSystemItem failed for systemItem [%ld]",
|
|
100
|
+
(long)screenView.systemItem);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
evaluatedTitle = [[UITabBarItem alloc] initWithTabBarSystemItem:systemItem.value() tag:0].title;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
[self updateTabBarItemTitle:evaluatedTitle forTabScreenController:tabScreenCtrl];
|
|
107
|
+
[self updateTabBarItemBadge:screenView.badgeValue forTabScreenController:tabScreenCtrl];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
- (void)updateTabBarItemTitle:(NSString *)newTitle
|
|
111
|
+
forTabScreenController:(nonnull RNSTabsScreenViewController *)tabScreenCtrl
|
|
112
|
+
{
|
|
113
|
+
// Setting controller title updates also controller's tabBarItem.title but only if there
|
|
114
|
+
// is a change to controller title. After creating new tabBarItem, controller title
|
|
115
|
+
// remains the same but tabBarItem.title is nil. For consistency, we always
|
|
116
|
+
// update both.
|
|
117
|
+
if (![tabScreenCtrl.tabBarItem.title isEqualToString:newTitle] || ![tabScreenCtrl.title isEqualToString:newTitle]) {
|
|
118
|
+
tabScreenCtrl.title = newTitle;
|
|
119
|
+
tabScreenCtrl.tabBarItem.title = newTitle;
|
|
120
|
+
#if RNS_UITAB_API_SDK_AVAILABLE
|
|
121
|
+
if (RNS_UITAB_API_ENABLED) {
|
|
122
|
+
// iPad sources the rendered title from the tab, not the item.
|
|
123
|
+
tabScreenCtrl.tab.title = newTitle;
|
|
124
|
+
}
|
|
125
|
+
#endif // RNS_UITAB_API_SDK_AVAILABLE
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
- (void)updateTabBarItemBadge:(NSString *)badgeValue
|
|
130
|
+
forTabScreenController:(nonnull RNSTabsScreenViewController *)tabScreenCtrl
|
|
131
|
+
{
|
|
132
|
+
if (![tabScreenCtrl.tabBarItem.badgeValue isEqualToString:badgeValue]) {
|
|
133
|
+
// The badge must land on both the item (viewController API) and the tab (UITab API) to render.
|
|
134
|
+
tabScreenCtrl.tabBarItem.badgeValue = badgeValue;
|
|
135
|
+
#if RNS_UITAB_API_SDK_AVAILABLE
|
|
136
|
+
if (RNS_UITAB_API_ENABLED) {
|
|
137
|
+
tabScreenCtrl.tab.badgeValue = badgeValue;
|
|
138
|
+
}
|
|
139
|
+
#endif // RNS_UITAB_API_SDK_AVAILABLE
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#import <UIKit/UIKit.h>
|
|
4
|
+
#import "RNSDefines.h"
|
|
5
|
+
|
|
6
|
+
#if RNS_TABS_BOTTOM_ACCESSORY_AVAILABLE
|
|
7
|
+
|
|
8
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @class RNSTabsBottomAccessoryWrapperView
|
|
12
|
+
* @brief Content view of UITabAccessory, wraps RNSTabsBottomAccessoryComponentView.
|
|
13
|
+
*
|
|
14
|
+
* It is a plain UIView (not RCTViewComponentView) to maintain native corner radius
|
|
15
|
+
* and it answers UIKit's size queries so that the accessory takes full available width.
|
|
16
|
+
*/
|
|
17
|
+
API_AVAILABLE(ios(26.0))
|
|
18
|
+
@interface RNSTabsBottomAccessoryWrapperView : UIView
|
|
19
|
+
|
|
20
|
+
@end
|
|
21
|
+
|
|
22
|
+
NS_ASSUME_NONNULL_END
|
|
23
|
+
|
|
24
|
+
#endif // RNS_TABS_BOTTOM_ACCESSORY_AVAILABLE
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#import "RNSTabsBottomAccessoryWrapperView.h"
|
|
2
|
+
|
|
3
|
+
#if RNS_TABS_BOTTOM_ACCESSORY_AVAILABLE
|
|
4
|
+
|
|
5
|
+
@implementation RNSTabsBottomAccessoryWrapperView
|
|
6
|
+
|
|
7
|
+
- (CGSize)sizeThatFits:(CGSize)size
|
|
8
|
+
{
|
|
9
|
+
// In regular width (e.g. iPad), UIKit asks the content view for its size and uses
|
|
10
|
+
// the answer if it is smaller than the proposed size (unless Auto Layout is used).
|
|
11
|
+
//
|
|
12
|
+
// Default implementation returns current bounds, therefore the accessory keeps stale
|
|
13
|
+
// width when available space grows (e.g. after hiding the sidebar or rotating the
|
|
14
|
+
// device). By returning the proposed size, we make sure that the accessory always
|
|
15
|
+
// takes full available width.
|
|
16
|
+
// See https://github.com/software-mansion/react-native-screens/issues/4728.
|
|
17
|
+
return size;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@end
|
|
21
|
+
|
|
22
|
+
#endif // RNS_TABS_BOTTOM_ACCESSORY_AVAILABLE
|
|
@@ -35,6 +35,14 @@ UITabBarControllerMode UITabBarControllerModeFromRNSTabsHostTabBarControllerMode
|
|
|
35
35
|
|
|
36
36
|
#endif // Check for iOS >= 18
|
|
37
37
|
|
|
38
|
+
#if RNS_IPHONE_OS_VERSION_AVAILABLE(27_0) && !TARGET_OS_TV
|
|
39
|
+
|
|
40
|
+
API_AVAILABLE(ios(27.0))
|
|
41
|
+
UITabBarControllerSidebarPlacement UITabBarControllerSidebarPlacementFromRNSTabsHostTabBarSidebarPreferredPlacement(
|
|
42
|
+
react::RNSTabsHostIOSTabBarSidebarPreferredPlacement tabBarSidebarPreferredPlacement);
|
|
43
|
+
|
|
44
|
+
#endif // Check for iOS >= 27 && !TARGET_OS_TV
|
|
45
|
+
|
|
38
46
|
react::RNSTabsHostIOSEventEmitter::OnTabSelectionRejectedRejectionReason
|
|
39
47
|
RNSOnTabSelectionRejectedRejectionReasonFromRNSTabsNavigationStateRejectionReason(
|
|
40
48
|
RNSTabsNavigationStateRejectionReason reason);
|
|
@@ -44,11 +52,25 @@ react::RNSTabsHostIOSEventEmitter::OnTabSelectedActionOrigin RNSOnTabSelectedAct
|
|
|
44
52
|
|
|
45
53
|
RNSTabsIconType RNSTabsIconTypeFromIcon(react::RNSTabsScreenIOSIconType iconType);
|
|
46
54
|
|
|
55
|
+
RNSTabsIconImageRenderingMode RNSTabsIconImageRenderingModeFromIconImageRenderingMode(
|
|
56
|
+
react::RNSTabsScreenIOSIconImageRenderingMode renderingMode);
|
|
57
|
+
|
|
58
|
+
RNSTabsIconImageRenderingMode RNSTabsIconImageRenderingModeFromSelectedIconImageRenderingMode(
|
|
59
|
+
react::RNSTabsScreenIOSSelectedIconImageRenderingMode renderingMode);
|
|
60
|
+
|
|
61
|
+
RNSTabsIconSymbolRenderingMode RNSTabsIconSymbolRenderingModeFromIconSymbolRenderingMode(
|
|
62
|
+
react::RNSTabsScreenIOSIconSymbolRenderingMode renderingMode);
|
|
63
|
+
|
|
64
|
+
RNSTabsIconSymbolRenderingMode RNSTabsIconSymbolRenderingModeFromSelectedIconSymbolRenderingMode(
|
|
65
|
+
react::RNSTabsScreenIOSSelectedIconSymbolRenderingMode renderingMode);
|
|
66
|
+
|
|
47
67
|
RNSTabsScreenSystemItem RNSTabsScreenSystemItemFromReactRNSTabsScreenSystemItem(
|
|
48
68
|
react::RNSTabsScreenIOSSystemItem systemItem);
|
|
49
69
|
|
|
50
70
|
std::optional<UITabBarSystemItem> RNSTabsScreenSystemItemToUITabBarSystemItem(RNSTabsScreenSystemItem systemItem);
|
|
51
71
|
|
|
72
|
+
RNSTabsScreenTabRole RNSTabsScreenTabRoleFromReactRNSTabsScreenTabRole(react::RNSTabsScreenIOSTabRole tabRole);
|
|
73
|
+
|
|
52
74
|
#if RNS_TABS_BOTTOM_ACCESSORY_AVAILABLE
|
|
53
75
|
|
|
54
76
|
API_AVAILABLE(ios(26.0))
|
|
@@ -120,6 +120,28 @@ UITabBarControllerMode UITabBarControllerModeFromRNSTabsHostTabBarControllerMode
|
|
|
120
120
|
|
|
121
121
|
#endif // Check for iOS >= 18
|
|
122
122
|
|
|
123
|
+
#if RNS_IPHONE_OS_VERSION_AVAILABLE(27_0) && !TARGET_OS_TV
|
|
124
|
+
|
|
125
|
+
API_AVAILABLE(ios(27.0))
|
|
126
|
+
UITabBarControllerSidebarPlacement UITabBarControllerSidebarPlacementFromRNSTabsHostTabBarSidebarPreferredPlacement(
|
|
127
|
+
react::RNSTabsHostIOSTabBarSidebarPreferredPlacement tabBarSidebarPreferredPlacement)
|
|
128
|
+
{
|
|
129
|
+
using enum facebook::react::RNSTabsHostIOSTabBarSidebarPreferredPlacement;
|
|
130
|
+
|
|
131
|
+
switch (tabBarSidebarPreferredPlacement) {
|
|
132
|
+
case Automatic:
|
|
133
|
+
return UITabBarControllerSidebarPlacementAutomatic;
|
|
134
|
+
case Sidebar:
|
|
135
|
+
return UITabBarControllerSidebarPlacementSidebar;
|
|
136
|
+
case TabBar:
|
|
137
|
+
return UITabBarControllerSidebarPlacementTabBar;
|
|
138
|
+
default:
|
|
139
|
+
return UITabBarControllerSidebarPlacementAutomatic;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
#endif // Check for iOS >= 27 && !TARGET_OS_TV
|
|
144
|
+
|
|
123
145
|
react::RNSTabsHostIOSEventEmitter::OnTabSelectionRejectedRejectionReason
|
|
124
146
|
RNSOnTabSelectionRejectedRejectionReasonFromRNSTabsNavigationStateRejectionReason(
|
|
125
147
|
RNSTabsNavigationStateRejectionReason reason)
|
|
@@ -160,8 +182,6 @@ RNSTabsIconType RNSTabsIconTypeFromIcon(react::RNSTabsScreenIOSIconType iconType
|
|
|
160
182
|
switch (iconType) {
|
|
161
183
|
case Image:
|
|
162
184
|
return RNSTabsIconTypeImage;
|
|
163
|
-
case Template:
|
|
164
|
-
return RNSTabsIconTypeTemplate;
|
|
165
185
|
case SfSymbol:
|
|
166
186
|
return RNSTabsIconTypeSfSymbol;
|
|
167
187
|
case Xcasset:
|
|
@@ -169,6 +189,66 @@ RNSTabsIconType RNSTabsIconTypeFromIcon(react::RNSTabsScreenIOSIconType iconType
|
|
|
169
189
|
}
|
|
170
190
|
}
|
|
171
191
|
|
|
192
|
+
RNSTabsIconImageRenderingMode RNSTabsIconImageRenderingModeFromIconImageRenderingMode(
|
|
193
|
+
react::RNSTabsScreenIOSIconImageRenderingMode renderingMode)
|
|
194
|
+
{
|
|
195
|
+
using enum facebook::react::RNSTabsScreenIOSIconImageRenderingMode;
|
|
196
|
+
switch (renderingMode) {
|
|
197
|
+
case Template:
|
|
198
|
+
return RNSTabsIconImageRenderingModeTemplate;
|
|
199
|
+
case Original:
|
|
200
|
+
return RNSTabsIconImageRenderingModeOriginal;
|
|
201
|
+
case Default:
|
|
202
|
+
default:
|
|
203
|
+
return RNSTabsIconImageRenderingModeDefault;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
RNSTabsIconImageRenderingMode RNSTabsIconImageRenderingModeFromSelectedIconImageRenderingMode(
|
|
208
|
+
react::RNSTabsScreenIOSSelectedIconImageRenderingMode renderingMode)
|
|
209
|
+
{
|
|
210
|
+
using enum facebook::react::RNSTabsScreenIOSSelectedIconImageRenderingMode;
|
|
211
|
+
switch (renderingMode) {
|
|
212
|
+
case Template:
|
|
213
|
+
return RNSTabsIconImageRenderingModeTemplate;
|
|
214
|
+
case Original:
|
|
215
|
+
return RNSTabsIconImageRenderingModeOriginal;
|
|
216
|
+
case Default:
|
|
217
|
+
default:
|
|
218
|
+
return RNSTabsIconImageRenderingModeDefault;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
RNSTabsIconSymbolRenderingMode RNSTabsIconSymbolRenderingModeFromIconSymbolRenderingMode(
|
|
223
|
+
react::RNSTabsScreenIOSIconSymbolRenderingMode renderingMode)
|
|
224
|
+
{
|
|
225
|
+
using enum facebook::react::RNSTabsScreenIOSIconSymbolRenderingMode;
|
|
226
|
+
switch (renderingMode) {
|
|
227
|
+
case Monochrome:
|
|
228
|
+
return RNSTabsIconSymbolRenderingModeMonochrome;
|
|
229
|
+
case Original:
|
|
230
|
+
return RNSTabsIconSymbolRenderingModeOriginal;
|
|
231
|
+
case Default:
|
|
232
|
+
default:
|
|
233
|
+
return RNSTabsIconSymbolRenderingModeDefault;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
RNSTabsIconSymbolRenderingMode RNSTabsIconSymbolRenderingModeFromSelectedIconSymbolRenderingMode(
|
|
238
|
+
react::RNSTabsScreenIOSSelectedIconSymbolRenderingMode renderingMode)
|
|
239
|
+
{
|
|
240
|
+
using enum facebook::react::RNSTabsScreenIOSSelectedIconSymbolRenderingMode;
|
|
241
|
+
switch (renderingMode) {
|
|
242
|
+
case Monochrome:
|
|
243
|
+
return RNSTabsIconSymbolRenderingModeMonochrome;
|
|
244
|
+
case Original:
|
|
245
|
+
return RNSTabsIconSymbolRenderingModeOriginal;
|
|
246
|
+
case Default:
|
|
247
|
+
default:
|
|
248
|
+
return RNSTabsIconSymbolRenderingModeDefault;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
172
252
|
RCTImageSource *RCTImageSourceFromImageSourceAndIconType(const facebook::react::ImageSource *imageSource,
|
|
173
253
|
RNSTabsIconType iconType)
|
|
174
254
|
{
|
|
@@ -180,7 +260,6 @@ RCTImageSource *RCTImageSourceFromImageSourceAndIconType(const facebook::react::
|
|
|
180
260
|
break;
|
|
181
261
|
|
|
182
262
|
case RNSTabsIconTypeImage:
|
|
183
|
-
case RNSTabsIconTypeTemplate:
|
|
184
263
|
iconImageSource =
|
|
185
264
|
[[RCTImageSource alloc] initWithURLRequest:NSURLRequestFromImageSource(*imageSource)
|
|
186
265
|
size:CGSizeMake(imageSource->size.width, imageSource->size.height)
|
|
@@ -294,6 +373,21 @@ std::optional<UITabBarSystemItem> RNSTabsScreenSystemItemToUITabBarSystemItem(RN
|
|
|
294
373
|
return std::nullopt;
|
|
295
374
|
}
|
|
296
375
|
|
|
376
|
+
RNSTabsScreenTabRole RNSTabsScreenTabRoleFromReactRNSTabsScreenTabRole(react::RNSTabsScreenIOSTabRole tabRole)
|
|
377
|
+
{
|
|
378
|
+
using enum facebook::react::RNSTabsScreenIOSTabRole;
|
|
379
|
+
|
|
380
|
+
switch (tabRole) {
|
|
381
|
+
case None:
|
|
382
|
+
return RNSTabsScreenTabRoleNone;
|
|
383
|
+
case Search:
|
|
384
|
+
return RNSTabsScreenTabRoleSearch;
|
|
385
|
+
default:
|
|
386
|
+
RCTLogError(@"[RNScreens] unsupported tabs screen tabRole");
|
|
387
|
+
return RNSTabsScreenTabRoleNone;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
297
391
|
#if RNS_TABS_BOTTOM_ACCESSORY_AVAILABLE
|
|
298
392
|
|
|
299
393
|
API_AVAILABLE(ios(26.0))
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#import "RNSContainer.h"
|
|
5
5
|
#import "RNSReactMountingTransactionObserving.h"
|
|
6
6
|
#import "RNSTabBarAppearanceCoordinator.h"
|
|
7
|
+
#import "RNSTabBarItemCoordinator.h"
|
|
7
8
|
#import "RNSTabsNavigationState.h"
|
|
8
9
|
#import "RNSTabsScreenViewController.h"
|
|
9
10
|
|
|
@@ -117,6 +118,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
117
118
|
*/
|
|
118
119
|
@property (nonatomic, readonly, strong, nonnull) RNSTabBarAppearanceCoordinator *tabBarAppearanceCoordinator;
|
|
119
120
|
|
|
121
|
+
@property (nonatomic, readonly, strong, nonnull) RNSTabBarItemCoordinator *tabBarItemCoordinator;
|
|
122
|
+
|
|
120
123
|
/**
|
|
121
124
|
* If true, the controller will reject any navigation state updates if the provenance of the
|
|
122
125
|
* update is stale.
|
|
@@ -157,6 +160,19 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
157
160
|
*/
|
|
158
161
|
- (void)setPendingNavigationStateUpdate:(nullable RNSTabsNavigationStateUpdateRequest *)stateUpdate;
|
|
159
162
|
|
|
163
|
+
/**
|
|
164
|
+
* Set the React `screenKey` of the tab screen that should receive the prominent treatment
|
|
165
|
+
* (`UITabBarController.prominentTabIdentifier`, iOS 27+). Pass nil or an empty string to
|
|
166
|
+
* unset it, letting UIKit decide which tab (if any) is prominent.
|
|
167
|
+
*
|
|
168
|
+
* The key is resolved to the backing `UITab` identifier lazily & re-applied after every child
|
|
169
|
+
* installation, so the call is valid before the children are installed. A key not matching any
|
|
170
|
+
* tab screen is warned about on the next update flush and behaves like an unset key.
|
|
171
|
+
*
|
|
172
|
+
* No-op below iOS 27.
|
|
173
|
+
*/
|
|
174
|
+
- (void)setProminentScreenKey:(nullable NSString *)screenKey;
|
|
175
|
+
|
|
160
176
|
/**
|
|
161
177
|
* Idempotent teardown. Releases observer references and any retained host references.
|
|
162
178
|
* Called by the host on view lifecycle end.
|