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
package/README.md
CHANGED
|
@@ -6,10 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
This project aims to expose native navigation container components to React Native. It is not designed to be used as a standalone library but rather as a dependency of a [full-featured navigation library](https://github.com/react-navigation/react-navigation).
|
|
8
8
|
|
|
9
|
-
## Fabric
|
|
10
|
-
|
|
11
|
-
To learn about how to use `react-native-screens` with Fabric architecture, head over to [Fabric README](README-Fabric.md). Instructions on how to run Fabric Example within this repo can be found in the [FabricExample README](FabricExample/README.md).
|
|
12
|
-
|
|
13
9
|
## Supported platforms
|
|
14
10
|
|
|
15
11
|
- [x] iOS
|
package/android/build.gradle
CHANGED
|
@@ -18,6 +18,14 @@ abstract class FabricEnabledViewGroup(
|
|
|
18
18
|
private var lastHeight = 0f
|
|
19
19
|
private var lastHeaderHeight = 0f
|
|
20
20
|
|
|
21
|
+
protected var isStateInvalidated = false
|
|
22
|
+
private set
|
|
23
|
+
|
|
24
|
+
// A detached screen can miss native layout changes while the commit hook resets its shadow state.
|
|
25
|
+
protected fun invalidateState() {
|
|
26
|
+
isStateInvalidated = true
|
|
27
|
+
}
|
|
28
|
+
|
|
21
29
|
fun setStateWrapper(wrapper: StateWrapper?) {
|
|
22
30
|
mStateWrapper = wrapper
|
|
23
31
|
}
|
|
@@ -36,15 +44,20 @@ abstract class FabricEnabledViewGroup(
|
|
|
36
44
|
val realHeaderHeight: Float = pxToDp(headerHeight.toFloat())
|
|
37
45
|
|
|
38
46
|
// Check incoming state values. If they're already the correct value, return early to prevent
|
|
39
|
-
// infinite UpdateState/SetState loop.
|
|
47
|
+
// an infinite UpdateState/SetState loop. The state-invalidated flag forces the update when the
|
|
48
|
+
// commit hook has reset the state while the screen was detached from the native hierarchy
|
|
49
|
+
// - the screen may have missed some layout changes in the meantime (see #4336 and #4760).
|
|
40
50
|
val delta = 0.9f
|
|
41
|
-
if (
|
|
51
|
+
if (!isStateInvalidated &&
|
|
52
|
+
abs(lastWidth - realWidth) < delta &&
|
|
42
53
|
abs(lastHeight - realHeight) < delta &&
|
|
43
54
|
abs(lastHeaderHeight - realHeaderHeight) < delta
|
|
44
55
|
) {
|
|
45
56
|
return
|
|
46
57
|
}
|
|
47
58
|
|
|
59
|
+
val stateWrapper = mStateWrapper ?: return
|
|
60
|
+
isStateInvalidated = false
|
|
48
61
|
lastWidth = realWidth
|
|
49
62
|
lastHeight = realHeight
|
|
50
63
|
lastHeaderHeight = realHeaderHeight
|
|
@@ -55,6 +68,8 @@ abstract class FabricEnabledViewGroup(
|
|
|
55
68
|
putDouble("contentOffsetX", 0.0)
|
|
56
69
|
putDouble("contentOffsetY", realHeaderHeight.toDouble())
|
|
57
70
|
}
|
|
58
|
-
|
|
71
|
+
stateWrapper.updateState(map)
|
|
59
72
|
}
|
|
73
|
+
|
|
74
|
+
override fun shouldDelayChildPressedState(): Boolean = false
|
|
60
75
|
}
|
|
@@ -18,8 +18,8 @@ import com.swmansion.rnscreens.legacy.ScreenStackViewManager
|
|
|
18
18
|
import com.swmansion.rnscreens.legacy.ScreenViewManager
|
|
19
19
|
import com.swmansion.rnscreens.legacy.SearchBarManager
|
|
20
20
|
import com.swmansion.rnscreens.legacy.utils.ScreenDummyLayoutHelper
|
|
21
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
22
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
21
|
+
import com.swmansion.rnscreens.react.modals.formsheet.contentwrapper.FormSheetContentWrapperViewManager
|
|
22
|
+
import com.swmansion.rnscreens.react.modals.formsheet.host.FormSheetHostViewManager
|
|
23
23
|
import com.swmansion.rnscreens.safearea.SafeAreaViewManager
|
|
24
24
|
import com.swmansion.rnscreens.scrollviewmarker.ScrollViewMarkerViewManager
|
|
25
25
|
import com.swmansion.rnscreens.stack.header.config.StackHeaderConfigViewManager
|
|
@@ -57,10 +57,14 @@ class ScreensModule(
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
private fun setupFabric() {
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
// Null when the host has no live ReactInstance. In bridgeless mode this happens only while
|
|
61
|
+
// the instance owning this module is being torn down (reload / destroy): ReactHostImpl
|
|
62
|
+
// drops its instance reference before it stops the JS thread, so JS can still create this
|
|
63
|
+
// module. There is nothing to set up then, the module gets invalidated right after.
|
|
64
|
+
// See https://github.com/software-mansion/react-native-screens/issues/4699
|
|
65
|
+
val uiManager = UIManagerHelper.getUIManager(reactContext, UIManagerType.FABRIC) ?: return
|
|
62
66
|
proxy?.apply {
|
|
63
|
-
nativeAddMutationsListener(
|
|
67
|
+
nativeAddMutationsListener(uiManager as FabricUIManager)
|
|
64
68
|
}
|
|
65
69
|
}
|
|
66
70
|
|
package/android/src/main/java/com/swmansion/rnscreens/common/colorscheme/ColorSchemeCoordinator.kt
CHANGED
|
@@ -3,6 +3,7 @@ package com.swmansion.rnscreens.common.colorscheme
|
|
|
3
3
|
import android.content.res.Configuration
|
|
4
4
|
import android.view.View
|
|
5
5
|
import android.view.ViewParent
|
|
6
|
+
import java.lang.ref.WeakReference
|
|
6
7
|
import kotlin.properties.Delegates
|
|
7
8
|
|
|
8
9
|
internal typealias OnUiNightModeResolvedCallback = (nightMode: Int) -> Unit
|
|
@@ -16,6 +17,15 @@ internal class ColorSchemeCoordinator :
|
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
private var parentProvider: ColorSchemeProviding? = null
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Parent provider known from ownership, taking precedence over the view-tree walk
|
|
23
|
+
* in [setup]. Set it when the owner knows its provider statically (e.g. a fragment's
|
|
24
|
+
* root view always resolves through the container that created the fragment) - the
|
|
25
|
+
* walk is unreliable there: transitions reparent an exiting fragment's view into the
|
|
26
|
+
* container's ViewGroupOverlay, whose parent chain ends in null. Survives [teardown].
|
|
27
|
+
*/
|
|
28
|
+
internal var explicitParentProvider: WeakReference<ColorSchemeProviding>? = null
|
|
19
29
|
private var systemUiNightMode: Int = Configuration.UI_MODE_NIGHT_NO
|
|
20
30
|
private var lastAppliedUiNightMode: Int? = null
|
|
21
31
|
private val childListeners = mutableListOf<ColorSchemeListener>()
|
|
@@ -60,7 +70,7 @@ internal class ColorSchemeCoordinator :
|
|
|
60
70
|
|
|
61
71
|
systemUiNightMode =
|
|
62
72
|
hostView.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
|
|
63
|
-
parentProvider = findParentColorSchemeProvider(hostView)
|
|
73
|
+
parentProvider = explicitParentProvider?.get() ?: findParentColorSchemeProvider(hostView)
|
|
64
74
|
parentProvider?.addColorSchemeListener(this)
|
|
65
75
|
onUiNightModeResolved = onUiNightModeResolvedCallback
|
|
66
76
|
isSetUp = true
|
|
@@ -17,4 +17,13 @@ interface Container {
|
|
|
17
17
|
* in the subtree does.
|
|
18
18
|
*/
|
|
19
19
|
fun wantsToPreventStackNativeDismiss(): ContainerItem?
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Asks the container to pop its own stack to the root, if it can. If it has nothing
|
|
23
|
+
* to pop (or can't pop), the request is forwarded to the nested container of its
|
|
24
|
+
* active item.
|
|
25
|
+
*
|
|
26
|
+
* @return `true` if a pop was performed or requested (here or in a nested container), `false` otherwise.
|
|
27
|
+
*/
|
|
28
|
+
fun requestPopToRoot(): Boolean
|
|
20
29
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.core.modals.formsheet.coordinator
|
|
2
2
|
|
|
3
3
|
import android.os.Build
|
|
4
4
|
import android.widget.FrameLayout
|
|
@@ -6,7 +6,7 @@ import androidx.core.view.doOnNextLayout
|
|
|
6
6
|
import com.google.android.material.shape.CornerFamily
|
|
7
7
|
import com.google.android.material.shape.MaterialShapeDrawable
|
|
8
8
|
import com.google.android.material.shape.ShapeAppearanceModel
|
|
9
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
9
|
+
import com.swmansion.rnscreens.core.modals.formsheet.model.FormSheetConfig
|
|
10
10
|
import com.swmansion.rnscreens.utils.dpToPx
|
|
11
11
|
|
|
12
12
|
internal class FormSheetAppearanceCoordinator(
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.core.modals.formsheet.coordinator
|
|
2
2
|
|
|
3
3
|
import android.view.View
|
|
4
4
|
import android.widget.FrameLayout
|
|
5
5
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
6
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
6
|
+
import com.swmansion.rnscreens.core.modals.formsheet.model.FormSheetDetents
|
|
7
7
|
|
|
8
8
|
internal class FormSheetBehaviorController(
|
|
9
9
|
private val sheetView: FrameLayout,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.core.modals.formsheet.coordinator
|
|
2
2
|
|
|
3
3
|
import android.view.ViewGroup
|
|
4
4
|
import android.widget.FrameLayout
|
|
5
5
|
import androidx.core.view.ViewCompat
|
|
6
6
|
import androidx.core.view.WindowInsetsCompat
|
|
7
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
8
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
9
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
10
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
11
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
7
|
+
import com.swmansion.rnscreens.core.modals.formsheet.dialog.FormSheetAvailableHeightProvider
|
|
8
|
+
import com.swmansion.rnscreens.core.modals.formsheet.dialog.FormSheetContainer
|
|
9
|
+
import com.swmansion.rnscreens.core.modals.formsheet.dialog.FormSheetDialog
|
|
10
|
+
import com.swmansion.rnscreens.core.modals.formsheet.interfaces.FormSheetContentSizeChangeDelegate
|
|
11
|
+
import com.swmansion.rnscreens.core.modals.formsheet.model.FormSheetDetents
|
|
12
12
|
|
|
13
13
|
internal class FormSheetDimensionsCoordinator(
|
|
14
14
|
private val dialog: FormSheetDialog,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.core.modals.formsheet.coordinator
|
|
2
2
|
|
|
3
3
|
import androidx.activity.OnBackPressedCallback
|
|
4
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
4
|
+
import com.swmansion.rnscreens.core.modals.formsheet.dialog.FormSheetDialog
|
|
5
5
|
|
|
6
6
|
internal class FormSheetNativeDismissCoordinator(
|
|
7
7
|
private val dialog: FormSheetDialog,
|
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.core.modals.formsheet.dialog
|
|
2
2
|
|
|
3
|
+
import android.app.Activity
|
|
3
4
|
import android.content.Context
|
|
5
|
+
import android.content.ContextWrapper
|
|
4
6
|
import android.view.ContextThemeWrapper
|
|
5
7
|
import android.view.View
|
|
6
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
7
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
8
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
9
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
10
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
11
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
8
|
+
import com.swmansion.rnscreens.core.modals.formsheet.interfaces.FormSheetContentSizeChangeDelegate
|
|
9
|
+
import com.swmansion.rnscreens.core.modals.formsheet.interfaces.FormSheetDialogEventEmitter
|
|
10
|
+
import com.swmansion.rnscreens.core.modals.formsheet.model.FormSheetConfig
|
|
11
|
+
import com.swmansion.rnscreens.core.modals.formsheet.presentation.FormSheetDimmingManager
|
|
12
|
+
import com.swmansion.rnscreens.core.modals.formsheet.presentation.FormSheetPresentation
|
|
13
|
+
import com.swmansion.rnscreens.core.modals.formsheet.presentation.FormSheetPresentationManager
|
|
12
14
|
import kotlin.properties.Delegates
|
|
13
15
|
|
|
16
|
+
/**
|
|
17
|
+
* @param activityProvider returns the activity whose decor view hosts the sheet's dimming. The default walks the
|
|
18
|
+
* [ContextWrapper] chain of [context]; hosts whose context does not wrap an activity must provide their own.
|
|
19
|
+
*/
|
|
14
20
|
class FormSheetDialogManager(
|
|
15
21
|
context: Context,
|
|
16
22
|
private val contentView: View,
|
|
23
|
+
activityProvider: () -> Activity? = { context.findActivity() },
|
|
17
24
|
) {
|
|
18
25
|
private var formSheetConfig = FormSheetConfig()
|
|
19
26
|
|
|
@@ -45,7 +52,7 @@ class FormSheetDialogManager(
|
|
|
45
52
|
}
|
|
46
53
|
}
|
|
47
54
|
|
|
48
|
-
private val dimmingManager = FormSheetDimmingManager(
|
|
55
|
+
private val dimmingManager = FormSheetDimmingManager(activityProvider)
|
|
49
56
|
|
|
50
57
|
private val presentationManager =
|
|
51
58
|
FormSheetPresentationManager(
|
|
@@ -87,3 +94,14 @@ class FormSheetDialogManager(
|
|
|
87
94
|
presentationManager.destroy()
|
|
88
95
|
}
|
|
89
96
|
}
|
|
97
|
+
|
|
98
|
+
private fun Context.findActivity(): Activity? {
|
|
99
|
+
var current: Context? = this
|
|
100
|
+
while (current is ContextWrapper) {
|
|
101
|
+
if (current is Activity) {
|
|
102
|
+
return current
|
|
103
|
+
}
|
|
104
|
+
current = current.baseContext
|
|
105
|
+
}
|
|
106
|
+
return null
|
|
107
|
+
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.core.modals.formsheet.presentation
|
|
2
2
|
|
|
3
3
|
import android.app.Activity
|
|
4
|
-
import android.content.Context
|
|
5
|
-
import android.content.ContextWrapper
|
|
6
4
|
import android.graphics.Color
|
|
7
5
|
import android.graphics.drawable.ColorDrawable
|
|
8
6
|
import android.util.Log
|
|
9
7
|
import android.view.View
|
|
10
|
-
import com.facebook.react.bridge.ReactContext
|
|
11
8
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
12
9
|
import kotlin.math.roundToInt
|
|
13
10
|
|
|
11
|
+
/**
|
|
12
|
+
* @param activityProvider returns the activity whose decor view hosts the dimming of the bottom-most sheet.
|
|
13
|
+
*/
|
|
14
14
|
internal class FormSheetDimmingManager(
|
|
15
|
-
private val
|
|
15
|
+
private val activityProvider: () -> Activity?,
|
|
16
16
|
) {
|
|
17
17
|
// TODO: @t0maboro - consider exposing as a prop
|
|
18
18
|
internal val maxAlpha: Float = MAX_DIMMING_ALPHA_FRACTION
|
|
@@ -92,19 +92,7 @@ internal class FormSheetDimmingManager(
|
|
|
92
92
|
)
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
private fun resolveActivityDecorView(): View?
|
|
96
|
-
var current: Context? = context
|
|
97
|
-
while (current is ContextWrapper) {
|
|
98
|
-
if (current is Activity) {
|
|
99
|
-
return current.window?.decorView
|
|
100
|
-
}
|
|
101
|
-
if (current is ReactContext) {
|
|
102
|
-
return current.currentActivity?.window?.decorView
|
|
103
|
-
}
|
|
104
|
-
current = current.baseContext
|
|
105
|
-
}
|
|
106
|
-
return null
|
|
107
|
-
}
|
|
95
|
+
private fun resolveActivityDecorView(): View? = activityProvider()?.window?.decorView
|
|
108
96
|
|
|
109
97
|
companion object {
|
|
110
98
|
const val TAG = "FormSheetDimmingManager"
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.core.modals.formsheet.presentation
|
|
2
2
|
|
|
3
3
|
import android.content.Context
|
|
4
4
|
import android.util.Log
|
|
5
5
|
import android.view.ViewGroup
|
|
6
6
|
import android.widget.FrameLayout
|
|
7
7
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
8
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
9
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
10
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
11
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
12
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
13
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
14
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
15
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
16
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
8
|
+
import com.swmansion.rnscreens.core.modals.formsheet.coordinator.FormSheetAppearanceCoordinator
|
|
9
|
+
import com.swmansion.rnscreens.core.modals.formsheet.coordinator.FormSheetBehaviorController
|
|
10
|
+
import com.swmansion.rnscreens.core.modals.formsheet.coordinator.FormSheetDimensionsCoordinator
|
|
11
|
+
import com.swmansion.rnscreens.core.modals.formsheet.coordinator.FormSheetKeyboardCoordinator
|
|
12
|
+
import com.swmansion.rnscreens.core.modals.formsheet.coordinator.FormSheetNativeDismissCoordinator
|
|
13
|
+
import com.swmansion.rnscreens.core.modals.formsheet.dialog.FormSheetContainer
|
|
14
|
+
import com.swmansion.rnscreens.core.modals.formsheet.dialog.FormSheetDialog
|
|
15
|
+
import com.swmansion.rnscreens.core.modals.formsheet.model.FormSheetConfig
|
|
16
|
+
import com.swmansion.rnscreens.core.modals.formsheet.model.FormSheetDetents
|
|
17
17
|
|
|
18
18
|
internal class FormSheetPresentation(
|
|
19
19
|
themedContext: Context,
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
package com.swmansion.rnscreens.ext
|
|
2
|
+
|
|
3
|
+
import androidx.fragment.app.FragmentManager
|
|
4
|
+
import androidx.fragment.app.FragmentTransaction
|
|
5
|
+
|
|
6
|
+
internal fun FragmentManager.createTransactionWithReordering(): FragmentTransaction = this.beginTransaction().setReorderingAllowed(true)
|
|
@@ -6,7 +6,6 @@ import android.view.ViewParent
|
|
|
6
6
|
import androidx.fragment.app.Fragment
|
|
7
7
|
import androidx.fragment.app.FragmentActivity
|
|
8
8
|
import androidx.fragment.app.FragmentManager
|
|
9
|
-
import androidx.fragment.app.FragmentTransaction
|
|
10
9
|
import com.facebook.react.ReactRootView
|
|
11
10
|
import com.swmansion.rnscreens.common.FragmentProviding
|
|
12
11
|
|
|
@@ -75,5 +74,3 @@ object FragmentManagerHelper {
|
|
|
75
74
|
}
|
|
76
75
|
}
|
|
77
76
|
}
|
|
78
|
-
|
|
79
|
-
internal fun FragmentManager.createTransactionWithReordering(): FragmentTransaction = this.beginTransaction().setReorderingAllowed(true)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
package com.swmansion.rnscreens.helpers
|
|
2
|
+
|
|
3
|
+
import android.content.res.ColorStateList
|
|
4
|
+
import android.content.res.Resources
|
|
5
|
+
import android.graphics.PorterDuff
|
|
6
|
+
import android.graphics.drawable.Drawable
|
|
7
|
+
import androidx.appcompat.graphics.drawable.DrawableWrapperCompat
|
|
8
|
+
|
|
9
|
+
// Ignores tinting so the wrapped icon keeps its own colors even when a host view
|
|
10
|
+
// (e.g. BottomNavigationView) applies an itemIconTintList.
|
|
11
|
+
internal class NoTintDrawable(
|
|
12
|
+
drawable: Drawable,
|
|
13
|
+
) : DrawableWrapperCompat(drawable) {
|
|
14
|
+
override fun setTintList(tint: ColorStateList?) = Unit
|
|
15
|
+
|
|
16
|
+
override fun setTint(tintColor: Int) = Unit
|
|
17
|
+
|
|
18
|
+
override fun setTintMode(tintMode: PorterDuff.Mode?) = Unit
|
|
19
|
+
|
|
20
|
+
override fun getConstantState(): ConstantState? = drawable?.constantState?.let(::NoTintConstantState)
|
|
21
|
+
|
|
22
|
+
private class NoTintConstantState(
|
|
23
|
+
private val wrappedState: ConstantState,
|
|
24
|
+
) : ConstantState() {
|
|
25
|
+
override fun newDrawable(): Drawable = NoTintDrawable(wrappedState.newDrawable())
|
|
26
|
+
|
|
27
|
+
override fun newDrawable(res: Resources?): Drawable = NoTintDrawable(wrappedState.newDrawable(res))
|
|
28
|
+
|
|
29
|
+
override fun getChangingConfigurations(): Int = wrappedState.changingConfigurations
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -5,7 +5,6 @@ import android.view.ViewGroup
|
|
|
5
5
|
import android.widget.ScrollView
|
|
6
6
|
import androidx.core.view.isNotEmpty
|
|
7
7
|
import androidx.core.widget.NestedScrollView
|
|
8
|
-
import com.swmansion.rnscreens.legacy.ScreenStack
|
|
9
8
|
|
|
10
9
|
object ViewFinder {
|
|
11
10
|
fun findScrollViewInFirstDescendantChain(view: View): ViewGroup? {
|
|
@@ -23,20 +22,4 @@ object ViewFinder {
|
|
|
23
22
|
|
|
24
23
|
return null
|
|
25
24
|
}
|
|
26
|
-
|
|
27
|
-
fun findScreenStackInFirstDescendantChain(view: View): ScreenStack? {
|
|
28
|
-
var currentView: View? = view
|
|
29
|
-
|
|
30
|
-
while (currentView != null) {
|
|
31
|
-
if (currentView is ScreenStack) {
|
|
32
|
-
return currentView
|
|
33
|
-
} else if (currentView is ViewGroup && currentView.isNotEmpty()) {
|
|
34
|
-
currentView = currentView.getChildAt(0)
|
|
35
|
-
} else {
|
|
36
|
-
break
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return null
|
|
41
|
-
}
|
|
42
25
|
}
|
|
@@ -27,6 +27,9 @@ import com.google.android.material.shape.CornerFamily
|
|
|
27
27
|
import com.google.android.material.shape.MaterialShapeDrawable
|
|
28
28
|
import com.google.android.material.shape.ShapeAppearanceModel
|
|
29
29
|
import com.swmansion.rnscreens.common.FragmentProviding
|
|
30
|
+
import com.swmansion.rnscreens.common.container.Container
|
|
31
|
+
import com.swmansion.rnscreens.common.container.ContainerItem
|
|
32
|
+
import com.swmansion.rnscreens.common.container.ContainerItemSupport
|
|
30
33
|
import com.swmansion.rnscreens.legacy.bottomsheet.SheetAnimationCoordinator
|
|
31
34
|
import com.swmansion.rnscreens.legacy.bottomsheet.SheetDetents
|
|
32
35
|
import com.swmansion.rnscreens.legacy.bottomsheet.fitToContentsSheetHeight
|
|
@@ -46,7 +49,10 @@ class Screen(
|
|
|
46
49
|
val reactContext: ThemedReactContext,
|
|
47
50
|
) : FabricEnabledViewGroup(reactContext),
|
|
48
51
|
ScreenContentWrapper.OnLayoutCallback,
|
|
49
|
-
FragmentProviding
|
|
52
|
+
FragmentProviding,
|
|
53
|
+
ContainerItem {
|
|
54
|
+
private val containerItemSupport = ContainerItemSupport()
|
|
55
|
+
|
|
50
56
|
val fragment: Fragment?
|
|
51
57
|
get() = fragmentWrapper?.fragment
|
|
52
58
|
|
|
@@ -236,7 +242,7 @@ class Screen(
|
|
|
236
242
|
) {
|
|
237
243
|
// In case of form sheet we get layout notification a bit later, in `onBottomSheetBehaviorDidLayout`
|
|
238
244
|
// after the attached behaviour laid out this view.
|
|
239
|
-
if (changed && isNativeStackScreen && !usesFormSheetPresentation()) {
|
|
245
|
+
if ((changed || isStateInvalidated) && isNativeStackScreen && !usesFormSheetPresentation()) {
|
|
240
246
|
val width = r - l
|
|
241
247
|
val height = b - t
|
|
242
248
|
|
|
@@ -565,6 +571,13 @@ class Screen(
|
|
|
565
571
|
updateShadowNodeScreenSize(width, height, top + translationY.toInt())
|
|
566
572
|
}
|
|
567
573
|
|
|
574
|
+
override fun onDetachedFromWindow() {
|
|
575
|
+
super.onDetachedFromWindow()
|
|
576
|
+
// Rotation may reset the shadow state while this screen is covered. Republish it on the
|
|
577
|
+
// next layout, even if the native frame is identical to the one before detaching.
|
|
578
|
+
invalidateState()
|
|
579
|
+
}
|
|
580
|
+
|
|
568
581
|
override fun onAttachedToWindow() {
|
|
569
582
|
super.onAttachedToWindow()
|
|
570
583
|
|
|
@@ -619,6 +632,20 @@ class Screen(
|
|
|
619
632
|
}
|
|
620
633
|
}
|
|
621
634
|
|
|
635
|
+
// region ContainerItem
|
|
636
|
+
|
|
637
|
+
override fun registerNestedContainer(container: Container) = containerItemSupport.registerNestedContainer(container)
|
|
638
|
+
|
|
639
|
+
override fun unregisterNestedContainer(container: Container) = containerItemSupport.unregisterNestedContainer(container)
|
|
640
|
+
|
|
641
|
+
override fun resolveNestedContainer(): Container? = containerItemSupport.resolveNestedContainer()
|
|
642
|
+
|
|
643
|
+
override fun findContentScrollView(): ViewGroup? = containerItemSupport.findContentScrollView(this)
|
|
644
|
+
|
|
645
|
+
override fun wantsToPreventStackNativeDismiss(): ContainerItem? = resolveNestedContainer()?.wantsToPreventStackNativeDismiss()
|
|
646
|
+
|
|
647
|
+
// endregion
|
|
648
|
+
|
|
622
649
|
enum class StackPresentation {
|
|
623
650
|
PUSH,
|
|
624
651
|
MODAL,
|