react-native-screens 5.0.0-alpha.2 → 5.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Package.swift +87 -0
- package/README.md +0 -11
- package/android/build.gradle +1 -0
- package/android/consumer-rules.pro +3 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderConfigViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderSubviewViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledViewGroup.kt +18 -3
- package/android/src/main/cpp/NativeProxy.cpp +30 -6
- package/android/src/main/cpp/NativeProxy.h +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +7 -3
- package/android/src/main/java/com/swmansion/rnscreens/common/colorscheme/ColorSchemeCoordinator.kt +11 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetAppearanceCoordinator.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetBehaviorController.kt +51 -20
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetDimensionsCoordinator.kt +159 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetNativeDismissCoordinator.kt +2 -8
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetAvailableHeightProvider.kt +44 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetContainer.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialog.kt +36 -4
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/dialog/FormSheetDialogManager.kt +107 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeDelegate.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeProvider.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetDialogEventEmitter.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetConfig.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/model/FormSheetDetents.kt +152 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetAnimatorFactory.kt +9 -10
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDimmingManager.kt +103 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetDismissalOrigin.kt +22 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentation.kt +173 -0
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetPresentationManager.kt +290 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationState.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/core/modals/formsheet/presentation/FormSheetStackRegistry.kt +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/FragmentManagerExt.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/FragmentManagerHelper.kt +0 -3
- package/android/src/main/java/com/swmansion/rnscreens/helpers/NoTintDrawable.kt +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
- package/android/src/main/java/com/swmansion/rnscreens/helpers/ViewFinder.kt +0 -17
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +32 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenContainer.kt +35 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderConfig.kt +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderSubviewManager.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackViewManager.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/DimmingView.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/stack/views/ScreensCoordinatorLayout.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapper.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapperViewManager.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDetentChangedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/react/modals/formsheet/event/FormSheetDismissEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissPreventedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetSyncFlushEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetContentView.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHost.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostEventEmitter.kt +17 -10
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostViewManager.kt +11 -9
- package/android/src/main/java/com/swmansion/rnscreens/safearea/OnInterfaceInsetsChangeListener.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaProvider.kt +8 -8
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaView.kt +3 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +360 -101
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +211 -113
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +156 -24
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderToolbar.kt +74 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +162 -228
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +385 -12
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +29 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +8 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +27 -280
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +28 -20
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +3 -55
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +1 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuItemConfig.kt +1 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +57 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueue.kt +23 -9
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperation.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperationExecutor.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +159 -21
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerDelegate.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerUpdateCoordinator.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +27 -5
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackUpdateBatchStateProviding.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/PreventNativeDismissCallback.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +50 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceApplicator.kt +106 -10
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +46 -7
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceModel.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/CustomBottomNavigationView.kt +21 -1
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +72 -36
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainerDelegate.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +22 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +58 -17
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenDelegate.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIcon.kt +82 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIconTinting.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenViewManager.kt +26 -19
- package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +20 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/RNSLog.kt +22 -6
- package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
- package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
- package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
- package/ios/RNSEnums.h +16 -1
- package/ios/conversion/RNSConversions.h +7 -108
- package/ios/helpers/image/RNSImageLoadingHelper.h +7 -0
- package/ios/helpers/image/RNSImageLoadingHelper.mm +9 -0
- package/ios/legacy/RNSBarButtonItem.mm +15 -0
- package/ios/legacy/RNSConvert.h +6 -0
- package/ios/legacy/RNSConvert.mm +17 -0
- package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
- package/ios/legacy/RNSModalScreen.mm +1 -1
- package/ios/legacy/RNSNavigationBar.h +31 -0
- package/ios/legacy/RNSNavigationBar.mm +15 -0
- package/ios/legacy/RNSScreen.mm +130 -31
- package/ios/legacy/RNSScreenContentWrapper.mm +4 -1
- package/ios/legacy/RNSScreenStack.mm +202 -15
- package/ios/legacy/RNSScreenStackHeaderConfig.h +30 -0
- package/ios/legacy/RNSScreenStackHeaderConfig.mm +72 -17
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +34 -1
- package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
- package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
- package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
- package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
- package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
- package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
- package/ios/safe-area/RNSSafeAreaViewComponentView.mm +3 -14
- package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
- package/ios/split/RNSSplitAppearanceApplicator.h +4 -4
- package/ios/split/RNSSplitAppearanceApplicator.mm +53 -56
- package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
- package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
- package/ios/split/RNSSplitHostComponentView.h +5 -15
- package/ios/split/RNSSplitHostComponentView.mm +55 -6
- package/ios/split/RNSSplitHostController.h +25 -6
- package/ios/split/RNSSplitHostController.mm +24 -92
- package/ios/split/RNSSplitHostProviders.h +67 -0
- package/ios/split/RNSSplitScreenComponentView.h +0 -39
- package/ios/split/RNSSplitScreenComponentView.mm +27 -10
- package/ios/split/RNSSplitScreenController.h +26 -3
- package/ios/split/RNSSplitScreenController.mm +13 -30
- package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
- package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
- package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
- package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
- package/ios/stack/conversion/RNSConversions-Stack.h +62 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +134 -0
- package/ios/stack/header/RNSHeaderItemVisibilityPriority.h +9 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +14 -1
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +103 -37
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +11 -0
- package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderContentFactory.mm +3 -0
- package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +12 -3
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +72 -5
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +7 -0
- package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +13 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +24 -0
- package/ios/stack/header/RNSStackHeaderMenuFinder.h +8 -1
- package/ios/stack/header/RNSStackHeaderMenuFinder.mm +26 -9
- package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
- package/ios/stack/host/RNSStackNavigationBar.h +25 -0
- package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
- package/ios/stack/host/RNSStackNavigationController.mm +13 -5
- package/ios/stack/host/RNSStackOperation.h +0 -2
- package/ios/stack/screen/RNSStackScreenComponentView.h +2 -1
- package/ios/stack/screen/RNSStackScreenComponentView.mm +32 -2
- package/ios/stack/screen/RNSStackScreenController.mm +12 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +8 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +179 -24
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +110 -16
- package/ios/tabs/RNSTabBarItemCoordinator.h +16 -0
- package/ios/tabs/RNSTabBarItemCoordinator.mm +143 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.h +24 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.mm +22 -0
- package/ios/tabs/conversion/RNSConversions-Tabs.h +100 -0
- package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +105 -74
- package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
- package/ios/tabs/host/RNSTabBarController.h +16 -0
- package/ios/tabs/host/RNSTabBarController.mm +516 -107
- package/ios/tabs/host/RNSTabsHostComponentView.h +4 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +41 -4
- package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
- package/ios/tabs/screen/RNSTabsScreenComponentView.h +21 -0
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +56 -56
- package/ios/tabs/screen/RNSTabsScreenViewController.mm +1 -0
- package/ios/utils/RNSDefines.h +15 -7
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +37 -21
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +41 -4
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js +17 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.js +17 -7
- package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.web.js +0 -2
- package/lib/commonjs/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/commonjs/components/stack/index.js.map +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/host/{TabsHost.web.js → TabsHost.js} +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/commonjs/components/tabs/index.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/{TabsScreen.web.js → TabsScreen.js} +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js → tabs/screen/TabsScreenIcon.types.js} +1 -1
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackItem.js +31 -11
- package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.android.js +39 -23
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +43 -6
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.js +10 -0
- package/lib/module/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.js +18 -8
- package/lib/module/components/stack/host/StackHost.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.web.js +0 -3
- package/lib/module/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/module/components/stack/index.js.map +1 -1
- package/lib/module/components/tabs/host/TabsHost.ios.js +3 -0
- package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/{src/components/tabs/host/TabsHost.web.tsx → lib/module/components/tabs/host/TabsHost.js} +1 -2
- package/lib/module/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/{src/components/tabs/screen/TabsScreen.web.tsx → lib/module/components/tabs/screen/TabsScreen.js} +1 -2
- package/lib/module/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/module/components/tabs/screen/TabsScreenIcon.types.js +2 -0
- package/lib/module/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackItem.js +31 -11
- package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +620 -24
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts +8 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts.map +1 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +361 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +4 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +7 -0
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +47 -0
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.web.d.ts +1 -3
- package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
- package/lib/typescript/components/stack/index.d.ts +4 -3
- package/lib/typescript/components/stack/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.d.ts +5 -0
- package/lib/typescript/components/tabs/host/TabsHost.d.ts.map +1 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +72 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/index.d.ts +4 -6
- package/lib/typescript/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts +42 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts +5 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts +78 -13
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts +91 -0
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -0
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +52 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +29 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +8 -0
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +3 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +4 -0
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +10 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts +25 -0
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +4 -0
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
- package/lib/typescript/legacy/types.d.ts +30 -0
- package/lib/typescript/legacy/types.d.ts.map +1 -1
- package/package.json +11 -8
- package/react-native.config.js +3 -0
- package/src/components/modals/form-sheet/FormSheet.types.ts +1 -1
- package/src/components/stack/header/StackHeaderConfig.android.tsx +54 -43
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +641 -24
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +55 -17
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +384 -2
- package/src/components/stack/header/StackHeaderConfig.tsx +12 -0
- package/src/components/stack/header/StackHeaderConfig.types.ts +4 -2
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +9 -1
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +7 -0
- package/src/components/stack/host/StackHost.tsx +12 -3
- package/src/components/stack/host/StackHost.types.ts +50 -0
- package/src/components/stack/host/StackHost.web.tsx +1 -4
- package/src/components/stack/index.ts +14 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +3 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +76 -0
- package/src/components/tabs/host/TabsHost.tsx +7 -0
- package/src/components/tabs/host/TabsHost.types.ts +3 -0
- package/src/components/tabs/index.ts +9 -0
- package/src/components/tabs/screen/TabsScreen.android.tsx +8 -3
- package/src/components/tabs/screen/TabsScreen.android.types.ts +42 -7
- package/src/components/tabs/screen/TabsScreen.ios.tsx +22 -5
- package/src/components/tabs/screen/TabsScreen.ios.types.ts +79 -17
- package/src/components/tabs/screen/TabsScreen.tsx +7 -0
- package/src/components/tabs/screen/TabsScreenIcon.types.ts +117 -0
- package/src/components/tabs/screen/index.ts +1 -0
- package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -0
- package/src/fabric/legacy/ScreenStackNativeComponent.ts +2 -0
- package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +78 -0
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +43 -0
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +13 -0
- package/src/fabric/stack/StackHostNativeComponent.ts +11 -2
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +8 -0
- package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +9 -0
- package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +20 -2
- package/src/legacy/components/ScreenStackItem.tsx +59 -12
- package/src/legacy/types.ts +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenModalFragment.kt +0 -281
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogRootView.kt +0 -104
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogScreen.kt +0 -26
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +0 -134
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +0 -162
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +0 -106
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +0 -198
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +0 -83
- package/ios/conversion/RNSConversions-Stack.h +0 -32
- package/ios/conversion/RNSConversions-Stack.mm +0 -41
- package/ios/conversion/always_false.h +0 -31
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js +0 -10
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/commonjs/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/module/components/stack/header/StackHeaderConfig.d.js +0 -2
- package/lib/module/components/stack/header/StackHeaderConfig.web.js +0 -4
- package/lib/module/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/module/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.web.js +0 -4
- package/lib/module/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/module/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.web.js +0 -4
- package/lib/module/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +0 -7
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +0 -7
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +0 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +0 -1
- package/src/components/stack/header/StackHeaderConfig.d.ts +0 -22
- package/src/components/stack/header/StackHeaderConfig.web.tsx +0 -5
- package/src/components/tabs/host/TabsHost.d.ts +0 -12
- package/src/components/tabs/screen/TabsScreen.d.ts +0 -12
- /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.legacy
|
|
2
|
-
|
|
3
|
-
import android.app.Activity
|
|
4
|
-
import android.app.Dialog
|
|
5
|
-
import android.content.Context
|
|
6
|
-
import android.os.Build
|
|
7
|
-
import android.os.Bundle
|
|
8
|
-
import android.view.LayoutInflater
|
|
9
|
-
import android.view.View
|
|
10
|
-
import android.view.ViewGroup
|
|
11
|
-
import android.view.ViewParent
|
|
12
|
-
import android.view.WindowManager
|
|
13
|
-
import androidx.fragment.app.Fragment
|
|
14
|
-
import com.facebook.react.bridge.ReactContext
|
|
15
|
-
import com.facebook.react.uimanager.UIManagerHelper
|
|
16
|
-
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
17
|
-
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
18
|
-
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
|
19
|
-
import com.swmansion.rnscreens.ext.parentAsView
|
|
20
|
-
import com.swmansion.rnscreens.ext.recycle
|
|
21
|
-
import com.swmansion.rnscreens.legacy.bottomsheet.BottomSheetDialogRootView
|
|
22
|
-
import com.swmansion.rnscreens.legacy.bottomsheet.BottomSheetDialogScreen
|
|
23
|
-
import com.swmansion.rnscreens.legacy.events.ScreenDismissedEvent
|
|
24
|
-
|
|
25
|
-
class ScreenModalFragment :
|
|
26
|
-
BottomSheetDialogFragment,
|
|
27
|
-
ScreenStackFragmentWrapper {
|
|
28
|
-
override lateinit var screen: Screen
|
|
29
|
-
|
|
30
|
-
// Nested containers
|
|
31
|
-
override val childScreenContainers = ArrayList<ScreenContainer>()
|
|
32
|
-
|
|
33
|
-
private val container: ScreenStack?
|
|
34
|
-
get() = screen.container as? ScreenStack
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Dialog instance. Note that we are responsible for creating the dialog.
|
|
38
|
-
* This member is valid after `onCreateDialog` method runs.
|
|
39
|
-
*/
|
|
40
|
-
private lateinit var sheetDialog: BottomSheetDialog
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Behaviour attached to bottom sheet dialog.
|
|
44
|
-
* This member is valid after `onCreateDialog` method runs.
|
|
45
|
-
*/
|
|
46
|
-
private val behavior
|
|
47
|
-
get() = sheetDialog.behavior
|
|
48
|
-
|
|
49
|
-
override val fragment: Fragment
|
|
50
|
-
get() = this
|
|
51
|
-
|
|
52
|
-
constructor() {
|
|
53
|
-
throw IllegalStateException(
|
|
54
|
-
"Screen fragments should never be restored. Follow instructions from https://github.com/software-mansion/react-native-screens/issues/17#issuecomment-424704067 to properly configure your main activity.",
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
constructor(screen: Screen) : super() {
|
|
59
|
-
this.screen = screen
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
override fun onCreate(savedInstanceState: Bundle?) {
|
|
63
|
-
super.onCreate(savedInstanceState)
|
|
64
|
-
// Right now whole purpose of this Fragment is to be displayed as a dialog.
|
|
65
|
-
// I've experimented with setting false here, but could not get it to work.
|
|
66
|
-
showsDialog = true
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// We override this method to provide our custom dialog type instead of the default Dialog.
|
|
70
|
-
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
|
71
|
-
configureDialogAndBehaviour()
|
|
72
|
-
|
|
73
|
-
val reactEventDispatcher =
|
|
74
|
-
checkNotNull(
|
|
75
|
-
screen.reactEventDispatcher,
|
|
76
|
-
) { "[RNScreens] No ReactEventDispatcher attached to screen while creating modal fragment" }
|
|
77
|
-
val rootView = BottomSheetDialogRootView(screen.reactContext, reactEventDispatcher)
|
|
78
|
-
|
|
79
|
-
rootView.addView(screen.recycle())
|
|
80
|
-
sheetDialog.setContentView(rootView)
|
|
81
|
-
|
|
82
|
-
rootView.parentAsView()?.clipToOutline = true
|
|
83
|
-
|
|
84
|
-
return sheetDialog
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
override fun onCreateView(
|
|
88
|
-
inflater: LayoutInflater,
|
|
89
|
-
container: ViewGroup?,
|
|
90
|
-
savedInstanceState: Bundle?,
|
|
91
|
-
): View? = null
|
|
92
|
-
|
|
93
|
-
override fun isTranslucent(): Boolean = true
|
|
94
|
-
|
|
95
|
-
override fun dismissFromContainer() {
|
|
96
|
-
check(container is ScreenStack)
|
|
97
|
-
val container = container as ScreenStack
|
|
98
|
-
container.dismiss(this)
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Modal can never be first on the stack
|
|
102
|
-
override fun canNavigateBack(): Boolean = true
|
|
103
|
-
|
|
104
|
-
override fun addChildScreenContainer(container: ScreenContainer) {
|
|
105
|
-
childScreenContainers.add(container)
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
override fun removeChildScreenContainer(container: ScreenContainer) {
|
|
109
|
-
childScreenContainers.remove(container)
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
override fun onContainerUpdate() {
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
override fun onViewAnimationStart() {
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
override fun onViewAnimationEnd() {
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
override fun tryGetActivity(): Activity? = requireActivity()
|
|
122
|
-
|
|
123
|
-
override fun tryGetContext(): ReactContext? {
|
|
124
|
-
if (context is ReactContext) {
|
|
125
|
-
return context as ReactContext
|
|
126
|
-
}
|
|
127
|
-
if (screen.context is ReactContext) {
|
|
128
|
-
return screen.context as ReactContext
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
var parent: ViewParent? = screen.container
|
|
132
|
-
while (parent != null) {
|
|
133
|
-
if (parent is Screen && parent.context is ReactContext) {
|
|
134
|
-
return parent.context as ReactContext
|
|
135
|
-
}
|
|
136
|
-
parent = parent.parent
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
return null
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
override fun canDispatchLifecycleEvent(event: ScreenFragment.ScreenLifecycleEvent): Boolean {
|
|
143
|
-
TODO("Not yet implemented")
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
override fun updateLastEventDispatched(event: ScreenFragment.ScreenLifecycleEvent) {
|
|
147
|
-
TODO("Not yet implemented")
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
override fun dispatchLifecycleEvent(
|
|
151
|
-
event: ScreenFragment.ScreenLifecycleEvent,
|
|
152
|
-
fragmentWrapper: ScreenFragmentWrapper,
|
|
153
|
-
) {
|
|
154
|
-
TODO("Not yet implemented")
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
override fun dispatchLifecycleEventInChildContainers(event: ScreenFragment.ScreenLifecycleEvent) {
|
|
158
|
-
TODO("Not yet implemented")
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
override fun dispatchHeaderBackButtonClickedEvent() {
|
|
162
|
-
TODO("Not yet implemented")
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
override fun dispatchTransitionProgressEvent(
|
|
166
|
-
alpha: Float,
|
|
167
|
-
closing: Boolean,
|
|
168
|
-
) {
|
|
169
|
-
TODO("Not yet implemented")
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
override fun onDestroy() {
|
|
173
|
-
super.onDestroy()
|
|
174
|
-
val container = container
|
|
175
|
-
if (container == null || !container.hasScreen(this)) {
|
|
176
|
-
val screenContext = screen.context
|
|
177
|
-
if (screenContext is ReactContext) {
|
|
178
|
-
val surfaceId = UIManagerHelper.getSurfaceId(screenContext)
|
|
179
|
-
UIManagerHelper
|
|
180
|
-
.getEventDispatcherForReactTag(screenContext, screen.id)
|
|
181
|
-
?.dispatchEvent(ScreenDismissedEvent(surfaceId, screen.id))
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
childScreenContainers.clear()
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
override fun removeToolbar(): Unit = throw IllegalStateException("[RNScreens] Modal screens on Android do not support header right now")
|
|
188
|
-
|
|
189
|
-
override fun setToolbar(toolbar: CustomToolbar): Unit =
|
|
190
|
-
throw IllegalStateException("[RNScreens] Modal screens on Android do not support header right now")
|
|
191
|
-
|
|
192
|
-
override fun setToolbarShadowHidden(hidden: Boolean): Unit =
|
|
193
|
-
throw IllegalStateException("[RNScreens] Modal screens on Android do not support header right now")
|
|
194
|
-
|
|
195
|
-
override fun setToolbarTranslucent(translucent: Boolean): Unit =
|
|
196
|
-
throw IllegalStateException("[RNScreens] Modal screens on Android do not support header right now")
|
|
197
|
-
|
|
198
|
-
private fun configureDialogAndBehaviour(): BottomSheetDialog {
|
|
199
|
-
sheetDialog = BottomSheetDialogScreen(requireContext(), this)
|
|
200
|
-
sheetDialog.dismissWithAnimation = true
|
|
201
|
-
sheetDialog.setCanceledOnTouchOutside(screen.sheetClosesOnTouchOutside)
|
|
202
|
-
|
|
203
|
-
configureBehaviour()
|
|
204
|
-
|
|
205
|
-
return sheetDialog
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* This method might return slightly different values depending on code path,
|
|
210
|
-
* but during testing I've found this effect negligible. For practical purposes
|
|
211
|
-
* this is acceptable.
|
|
212
|
-
*/
|
|
213
|
-
private fun tryResolveContainerHeight(): Int? {
|
|
214
|
-
screen.container?.height?.let { return it }
|
|
215
|
-
context
|
|
216
|
-
?.resources
|
|
217
|
-
?.displayMetrics
|
|
218
|
-
?.heightPixels
|
|
219
|
-
?.let { return it }
|
|
220
|
-
|
|
221
|
-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
222
|
-
(context?.getSystemService(Context.WINDOW_SERVICE) as? WindowManager)
|
|
223
|
-
?.currentWindowMetrics
|
|
224
|
-
?.bounds
|
|
225
|
-
?.height()
|
|
226
|
-
?.let { return it }
|
|
227
|
-
}
|
|
228
|
-
return null
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
private fun configureBehaviour() {
|
|
232
|
-
val containerHeight = tryResolveContainerHeight()
|
|
233
|
-
check(containerHeight != null) { "[RNScreens] Failed to find window height during bottom sheet behaviour configuration" }
|
|
234
|
-
|
|
235
|
-
behavior.apply {
|
|
236
|
-
isHideable = true
|
|
237
|
-
isDraggable = true
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
when (screen.sheetDetents.count) {
|
|
241
|
-
1 ->
|
|
242
|
-
behavior.apply {
|
|
243
|
-
state = BottomSheetBehavior.STATE_EXPANDED
|
|
244
|
-
skipCollapsed = true
|
|
245
|
-
isFitToContents = true
|
|
246
|
-
maxHeight = screen.sheetDetents.maxAllowedHeight(containerHeight)
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
2 ->
|
|
250
|
-
behavior.apply {
|
|
251
|
-
state =
|
|
252
|
-
screen.sheetDetents.sheetStateFromIndex(
|
|
253
|
-
screen.sheetInitialDetentIndex,
|
|
254
|
-
)
|
|
255
|
-
skipCollapsed = false
|
|
256
|
-
isFitToContents = true
|
|
257
|
-
peekHeight = screen.sheetDetents.peekHeight(containerHeight)
|
|
258
|
-
maxHeight = screen.sheetDetents.maxAllowedHeight(containerHeight)
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
3 ->
|
|
262
|
-
behavior.apply {
|
|
263
|
-
state =
|
|
264
|
-
screen.sheetDetents.sheetStateFromIndex(
|
|
265
|
-
screen.sheetInitialDetentIndex,
|
|
266
|
-
)
|
|
267
|
-
skipCollapsed = false
|
|
268
|
-
isFitToContents = false
|
|
269
|
-
peekHeight = screen.sheetDetents.peekHeight(containerHeight)
|
|
270
|
-
expandedOffset = screen.sheetDetents.expandedOffsetFromTop(containerHeight)
|
|
271
|
-
halfExpandedRatio = screen.sheetDetents.halfExpandedRatio()
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
else -> throw IllegalStateException("[RNScreens] Invalid detent count ${screen.sheetDetents.count}. Expected at most 3.")
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
companion object {
|
|
279
|
-
const val TAG = "ScreenModalFragment"
|
|
280
|
-
}
|
|
281
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.legacy.bottomsheet
|
|
2
|
-
|
|
3
|
-
import android.annotation.SuppressLint
|
|
4
|
-
import android.view.MotionEvent
|
|
5
|
-
import android.view.View
|
|
6
|
-
import com.facebook.react.bridge.ReactContext
|
|
7
|
-
import com.facebook.react.config.ReactFeatureFlags
|
|
8
|
-
import com.facebook.react.uimanager.JSPointerDispatcher
|
|
9
|
-
import com.facebook.react.uimanager.JSTouchDispatcher
|
|
10
|
-
import com.facebook.react.uimanager.RootView
|
|
11
|
-
import com.facebook.react.uimanager.events.EventDispatcher
|
|
12
|
-
import com.facebook.react.views.view.ReactViewGroup
|
|
13
|
-
|
|
14
|
-
@SuppressLint("ViewConstructor")
|
|
15
|
-
class BottomSheetDialogRootView(
|
|
16
|
-
val reactContext: ReactContext?,
|
|
17
|
-
private val eventDispatcher: EventDispatcher,
|
|
18
|
-
) : ReactViewGroup(reactContext),
|
|
19
|
-
RootView {
|
|
20
|
-
private val jsTouchDispatcher: JSTouchDispatcher = JSTouchDispatcher(this)
|
|
21
|
-
private var jsPointerDispatcher: JSPointerDispatcher? = null
|
|
22
|
-
|
|
23
|
-
init {
|
|
24
|
-
// Can we safely use ReactFeatureFlags?
|
|
25
|
-
if (ReactFeatureFlags.dispatchPointerEvents) {
|
|
26
|
-
jsPointerDispatcher = JSPointerDispatcher(this)
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
override fun onLayout(
|
|
31
|
-
changed: Boolean,
|
|
32
|
-
l: Int,
|
|
33
|
-
t: Int,
|
|
34
|
-
r: Int,
|
|
35
|
-
b: Int,
|
|
36
|
-
) {
|
|
37
|
-
if (changed) {
|
|
38
|
-
// This view is used right now only in ScreenModalFragment, where it is injected
|
|
39
|
-
// to view hierarchy as a parent of a Screen.
|
|
40
|
-
assert(childCount == 1) { "[RNScreens] Expected only a single child view under $TAG, received: $childCount" }
|
|
41
|
-
getChildAt(0).layout(l, t, r, b)
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
override fun onInterceptTouchEvent(event: MotionEvent): Boolean {
|
|
46
|
-
jsTouchDispatcher.handleTouchEvent(event, eventDispatcher)
|
|
47
|
-
jsPointerDispatcher?.handleMotionEvent(event, eventDispatcher, true)
|
|
48
|
-
return super.onInterceptTouchEvent(event)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
override fun onTouchEvent(event: MotionEvent): Boolean {
|
|
52
|
-
jsTouchDispatcher.handleTouchEvent(event, eventDispatcher)
|
|
53
|
-
jsPointerDispatcher?.handleMotionEvent(event, eventDispatcher, false)
|
|
54
|
-
super.onTouchEvent(event)
|
|
55
|
-
return true
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
override fun onInterceptHoverEvent(event: MotionEvent): Boolean {
|
|
59
|
-
jsPointerDispatcher?.handleMotionEvent(event, eventDispatcher, true)
|
|
60
|
-
// This is how DialogRootViewGroup implements this, it might be a copy-paste mistake
|
|
61
|
-
// on their side.
|
|
62
|
-
return super.onHoverEvent(event)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
override fun onHoverEvent(event: MotionEvent): Boolean {
|
|
66
|
-
jsPointerDispatcher?.handleMotionEvent(event, eventDispatcher, false)
|
|
67
|
-
return super.onHoverEvent(event)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
override fun onChildStartedNativeGesture(
|
|
71
|
-
view: View?,
|
|
72
|
-
event: MotionEvent,
|
|
73
|
-
) {
|
|
74
|
-
jsTouchDispatcher.onChildStartedNativeGesture(event, eventDispatcher)
|
|
75
|
-
jsPointerDispatcher?.onChildStartedNativeGesture(view, event, eventDispatcher)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
@Deprecated("Deprecated by React Native")
|
|
79
|
-
override fun onChildStartedNativeGesture(event: MotionEvent): Unit =
|
|
80
|
-
throw IllegalStateException("Deprecated onChildStartedNativeGesture was called")
|
|
81
|
-
|
|
82
|
-
override fun onChildEndedNativeGesture(
|
|
83
|
-
view: View,
|
|
84
|
-
event: MotionEvent,
|
|
85
|
-
) {
|
|
86
|
-
jsTouchDispatcher.onChildEndedNativeGesture(event, eventDispatcher)
|
|
87
|
-
jsPointerDispatcher?.onChildEndedNativeGesture()
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
override fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {
|
|
91
|
-
// We do not pass through request of our child up the view hierarchy, as we
|
|
92
|
-
// need to keep receiving events.
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
override fun handleException(throwable: Throwable) {
|
|
96
|
-
// TODO: I need ThemedReactContext here.
|
|
97
|
-
// TODO: Determine where it is initially created & verify its lifecycle
|
|
98
|
-
// reactContext?.reactApplicationContext?.handleException(RuntimeException(throwable))
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
companion object {
|
|
102
|
-
const val TAG = "BottomSheetDialogRootView"
|
|
103
|
-
}
|
|
104
|
-
}
|
package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogScreen.kt
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.legacy.bottomsheet
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
5
|
-
import com.swmansion.rnscreens.legacy.ScreenModalFragment
|
|
6
|
-
import java.lang.ref.WeakReference
|
|
7
|
-
|
|
8
|
-
class BottomSheetDialogScreen(
|
|
9
|
-
context: Context,
|
|
10
|
-
fragment: ScreenModalFragment,
|
|
11
|
-
) : BottomSheetDialog(context) {
|
|
12
|
-
private val fragmentRef: WeakReference<ScreenModalFragment> = WeakReference(fragment)
|
|
13
|
-
|
|
14
|
-
// There are various code paths leading to this method, however the one I'm concerned with
|
|
15
|
-
// is dismissal via swipe-down. If the sheet is dismissed we don't want the native dismiss logic
|
|
16
|
-
// to run, as this will lead to inconsistencies in ScreenStack state. Instead we intercept
|
|
17
|
-
// dismiss intention and run our logic.
|
|
18
|
-
override fun cancel() {
|
|
19
|
-
fragmentRef.get()!!.dismissFromContainer()
|
|
20
|
-
this.show()
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
companion object {
|
|
24
|
-
val TAG = BottomSheetDialogScreen::class.simpleName
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import android.annotation.SuppressLint
|
|
4
|
-
import android.content.Context
|
|
5
|
-
import android.graphics.Color
|
|
6
|
-
import android.view.MotionEvent
|
|
7
|
-
import android.view.ViewGroup
|
|
8
|
-
import com.facebook.react.uimanager.ReactCompoundViewGroup
|
|
9
|
-
import com.facebook.react.uimanager.ReactPointerEventsView
|
|
10
|
-
import com.swmansion.rnscreens.ext.equalWithRespectToEps
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Serves as dimming view that can be used as background for some view that does not fully fill
|
|
14
|
-
* the viewport.
|
|
15
|
-
*
|
|
16
|
-
* This dimming view has one more additional feature: it blocks gestures if its alpha > 0.
|
|
17
|
-
*/
|
|
18
|
-
@SuppressLint("ViewConstructor") // Only we instantiate this view
|
|
19
|
-
internal class DimmingView(
|
|
20
|
-
context: Context,
|
|
21
|
-
initialAlpha: Float,
|
|
22
|
-
private val pointerEventsProxy: DimmingViewPointerEventsProxy,
|
|
23
|
-
) : ViewGroup(context),
|
|
24
|
-
ReactCompoundViewGroup,
|
|
25
|
-
ReactPointerEventsView by pointerEventsProxy {
|
|
26
|
-
constructor(context: Context, initialAlpha: Float) : this(
|
|
27
|
-
context,
|
|
28
|
-
initialAlpha,
|
|
29
|
-
DimmingViewPointerEventsProxy(null),
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
init {
|
|
33
|
-
pointerEventsProxy.pointerEventsImpl = DimmingViewPointerEventsImpl(this)
|
|
34
|
-
setFocusable(false)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
internal val blockGestures
|
|
38
|
-
get() = !alpha.equalWithRespectToEps(0F)
|
|
39
|
-
|
|
40
|
-
init {
|
|
41
|
-
setBackgroundColor(Color.BLACK)
|
|
42
|
-
alpha = initialAlpha
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// This view group is not supposed to have any children, however we need it to be a view group
|
|
46
|
-
override fun onLayout(
|
|
47
|
-
changed: Boolean,
|
|
48
|
-
l: Int,
|
|
49
|
-
t: Int,
|
|
50
|
-
r: Int,
|
|
51
|
-
b: Int,
|
|
52
|
-
) = Unit
|
|
53
|
-
|
|
54
|
-
// We do not want to have any action defined here. We just want listeners notified that the click happened.
|
|
55
|
-
@SuppressLint("ClickableViewAccessibility")
|
|
56
|
-
override fun onTouchEvent(event: MotionEvent?): Boolean {
|
|
57
|
-
if (blockGestures && event?.actionMasked == MotionEvent.ACTION_UP) {
|
|
58
|
-
callOnClick()
|
|
59
|
-
}
|
|
60
|
-
return blockGestures
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
override fun reactTagForTouch(
|
|
64
|
-
x: Float,
|
|
65
|
-
y: Float,
|
|
66
|
-
): Int = throw IllegalStateException("[RNScreens] $TAG should never be asked for the view tag!")
|
|
67
|
-
|
|
68
|
-
override fun interceptsTouchEvent(
|
|
69
|
-
x: Float,
|
|
70
|
-
y: Float,
|
|
71
|
-
) = blockGestures
|
|
72
|
-
|
|
73
|
-
override fun onDetachedFromWindow() {
|
|
74
|
-
super.onDetachedFromWindow()
|
|
75
|
-
|
|
76
|
-
// Break reference cycle, since the pointerEventsImpl strongly retains this.
|
|
77
|
-
pointerEventsProxy.pointerEventsImpl = null
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
companion object {
|
|
81
|
-
const val TAG = "DimmingView"
|
|
82
|
-
}
|
|
83
|
-
}
|
package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.util.Log
|
|
5
|
-
import android.view.View
|
|
6
|
-
import android.view.ViewGroup
|
|
7
|
-
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
8
|
-
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
9
|
-
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
10
|
-
|
|
11
|
-
class DimmingViewManager(
|
|
12
|
-
context: Context,
|
|
13
|
-
private val dialog: BottomSheetDialog,
|
|
14
|
-
) {
|
|
15
|
-
// TODO: @t0maboro - consider exposing as a prop
|
|
16
|
-
internal val maxAlpha: Float = MAX_ALPHA
|
|
17
|
-
|
|
18
|
-
internal var isTransitionAnimationRunning: Boolean = false
|
|
19
|
-
|
|
20
|
-
internal var dimmingViewAlpha: Float
|
|
21
|
-
get() = dimmingView.alpha
|
|
22
|
-
set(value) {
|
|
23
|
-
dimmingView.alpha = value
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
private val dimmingView =
|
|
27
|
-
DimmingView(context, initialAlpha = 0f).apply {
|
|
28
|
-
layoutParams =
|
|
29
|
-
CoordinatorLayout.LayoutParams(
|
|
30
|
-
ViewGroup.LayoutParams.MATCH_PARENT,
|
|
31
|
-
ViewGroup.LayoutParams.MATCH_PARENT,
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
internal fun setOnBackdropClickListener(listener: View.OnClickListener?) {
|
|
36
|
-
dimmingView.setOnClickListener(listener)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
internal fun onDialogShow() {
|
|
40
|
-
attachDimmingViewOverNativeTouchOutside()
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
internal fun attachToBehavior(behavior: BottomSheetBehavior<*>) {
|
|
44
|
-
behavior.addBottomSheetCallback(
|
|
45
|
-
object : BottomSheetBehavior.BottomSheetCallback() {
|
|
46
|
-
override fun onStateChanged(
|
|
47
|
-
bottomSheet: View,
|
|
48
|
-
newState: Int,
|
|
49
|
-
) = Unit
|
|
50
|
-
|
|
51
|
-
override fun onSlide(
|
|
52
|
-
bottomSheet: View,
|
|
53
|
-
slideOffset: Float,
|
|
54
|
-
) {
|
|
55
|
-
// Prevent system updates from overriding alpha while running custom enter/exit animation.
|
|
56
|
-
// When initialDetentIndex is snapping to a high detent, BottomSheetBehavior fires onSlide
|
|
57
|
-
// events that conflict with our manual alpha animator, causing the backdrop to flash.
|
|
58
|
-
if (isTransitionAnimationRunning) {
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
val fraction = if (slideOffset >= 0) 1f else 1f + slideOffset
|
|
63
|
-
dimmingView.alpha = fraction * maxAlpha
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
private fun attachDimmingViewOverNativeTouchOutside() {
|
|
70
|
-
val coordinator = dialog.findViewById<CoordinatorLayout>(com.google.android.material.R.id.coordinator)
|
|
71
|
-
val bottomSheetView = dialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet)
|
|
72
|
-
|
|
73
|
-
if (coordinator != null && dimmingView.parent == null && bottomSheetView != null) {
|
|
74
|
-
val sheetIndex = coordinator.indexOfChild(bottomSheetView)
|
|
75
|
-
if (sheetIndex >= 0) {
|
|
76
|
-
coordinator.addView(dimmingView, sheetIndex)
|
|
77
|
-
} else {
|
|
78
|
-
Log.e(TAG, "[RNScreens] BottomSheetView not found! Falling back to bottom index.")
|
|
79
|
-
coordinator.addView(dimmingView, 0)
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
companion object {
|
|
85
|
-
const val TAG = "DimmingViewManager"
|
|
86
|
-
|
|
87
|
-
private const val MAX_ALPHA = 0.3f
|
|
88
|
-
}
|
|
89
|
-
}
|
package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.uimanager.PointerEvents
|
|
4
|
-
import com.facebook.react.uimanager.ReactPointerEventsView
|
|
5
|
-
|
|
6
|
-
internal class DimmingViewPointerEventsImpl(
|
|
7
|
-
val dimmingView: DimmingView,
|
|
8
|
-
) : ReactPointerEventsView {
|
|
9
|
-
override val pointerEvents: PointerEvents
|
|
10
|
-
get() = if (dimmingView.blockGestures) PointerEvents.AUTO else PointerEvents.NONE
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
internal class DimmingViewPointerEventsProxy(
|
|
14
|
-
var pointerEventsImpl: DimmingViewPointerEventsImpl?,
|
|
15
|
-
) : ReactPointerEventsView {
|
|
16
|
-
override val pointerEvents: PointerEvents
|
|
17
|
-
get() = pointerEventsImpl?.pointerEvents ?: PointerEvents.NONE
|
|
18
|
-
}
|