react-native-screens 5.0.0-alpha.1 → 5.0.0-alpha.2
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 +1 -2
- package/RNScreens.podspec +2 -6
- package/android/build.gradle +26 -1
- package/android/src/fabric/java/com/swmansion/rnscreens/NativeProxy.kt +5 -0
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +22 -6
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackFragment.kt +39 -10
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenViewManager.kt +5 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetAppearanceCoordinator.kt → native/coordinator/FormSheetAppearanceCoordinator.kt} +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetBehaviorController.kt → native/coordinator/FormSheetBehaviorController.kt} +25 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDimensionsCoordinator.kt → native/coordinator/FormSheetDimensionsCoordinator.kt} +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetNativeDismissCoordinator.kt +50 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContainer.kt → native/core/FormSheetContainer.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDialog.kt → native/core/FormSheetDialog.kt} +24 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDialogManager.kt → native/core/FormSheetDialogManager.kt} +25 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentSizeChangeDelegate.kt → native/interfaces/FormSheetContentSizeChangeDelegate.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentSizeChangeProvider.kt → native/interfaces/FormSheetContentSizeChangeProvider.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDialogEventEmitter.kt → native/interfaces/FormSheetDialogEventEmitter.kt} +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetConfig.kt → native/model/FormSheetConfig.kt} +5 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDetents.kt → native/model/FormSheetDetents.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetAnimatorFactory.kt → native/presentation/FormSheetAnimatorFactory.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetPresentationManager.kt → native/presentation/FormSheetPresentationManager.kt} +3 -12
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetPresentationState.kt → native/presentation/FormSheetPresentationState.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentWrapper.kt → react/contentwrapper/FormSheetContentWrapper.kt} +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentWrapperViewManager.kt → react/contentwrapper/FormSheetContentWrapperViewManager.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDetentChangedEvent.kt → react/event/FormSheetDetentChangedEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDidAppearEvent.kt → react/event/FormSheetDidAppearEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetDidDisappearEvent.kt → react/event/FormSheetDidDisappearEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetNativeDismissEvent.kt → react/event/FormSheetNativeDismissEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/event/FormSheetNativeDismissPreventedEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetSyncFlushEvent.kt → react/event/FormSheetSyncFlushEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetWillAppearEvent.kt → react/event/FormSheetWillAppearEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetWillDisappearEvent.kt → react/event/FormSheetWillDisappearEvent.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetContentView.kt → react/host/FormSheetContentView.kt} +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHost.kt → react/host/FormSheetHost.kt} +6 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHostEventEmitter.kt → react/host/FormSheetHostEventEmitter.kt} +16 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/{FormSheetHostViewManager.kt → react/host/FormSheetHostViewManager.kt} +11 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +30 -418
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +36 -113
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderFrameSynchronizer.kt +63 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderAppBarLayout.kt → appbar/StackHeaderAppBarLayout.kt} +1 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderAppBarLayoutBehavior.kt → appbar/StackHeaderAppBarLayoutBehavior.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/{StackHeaderScrollingViewBehavior.kt → appbar/StackHeaderScrollingViewBehavior.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +28 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +8 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +448 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +17 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +83 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuConfig.kt → model/StackHeaderToolbarMenuConfig.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuElementConfig.kt → model/StackHeaderToolbarMenuElementConfig.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuGroupConfig.kt → model/StackHeaderToolbarMenuGroupConfig.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuGroupMetadata.kt → model/StackHeaderToolbarMenuGroupMetadata.kt} +5 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemConfig.kt → model/StackHeaderToolbarMenuItemConfig.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemDefaults.kt → model/StackHeaderToolbarMenuItemDefaults.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemIconSource.kt → model/StackHeaderToolbarMenuItemIconSource.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemShowAsAction.kt → model/StackHeaderToolbarMenuItemShowAsAction.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuItemType.kt → model/StackHeaderToolbarMenuItemType.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarFieldUpdate.kt → update/StackHeaderToolbarFieldUpdate.kt} +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuElementOptions.kt → update/StackHeaderToolbarMenuElementOptions.kt} +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +13 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/{StackHeaderToolbarMenuUpdateQueue.kt → update/StackHeaderToolbarMenuUpdateQueue.kt} +1 -43
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueueDelegate.kt +9 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +1 -0
- package/common/cpp/react/renderer/components/rnscreens/legacy/RNSScreenShadowNode.cpp +10 -5
- package/ios/RNSEnums.h +0 -2
- package/ios/RNSOrientationProviding.h +0 -2
- package/ios/RNSReactMountingTransactionObserving.h +15 -0
- package/ios/legacy/RNSBarButtonItem.mm +12 -5
- package/ios/legacy/RNSScreen.h +8 -1
- package/ios/legacy/RNSScreen.mm +39 -17
- package/ios/legacy/RNSScreenContentWrapper.mm +9 -0
- package/ios/legacy/RNSScreenFooter.mm +2 -0
- package/ios/legacy/RNSScreenStack.mm +9 -4
- package/ios/modals/form-sheet/RNSFormSheetContentWrapperComponentView.mm +9 -0
- package/ios/scroll-to-top-guard/RNSScrollToTopGuard.h +17 -0
- package/ios/scroll-to-top-guard/RNSScrollToTopGuard.mm +57 -0
- package/ios/scroll-to-top-guard/RNSScrollToTopGuardGestureRecognizer.h +28 -0
- package/ios/scroll-to-top-guard/RNSScrollToTopGuardGestureRecognizer.mm +64 -0
- package/ios/split/RNSSplitAppearanceApplicator.h +36 -0
- package/ios/split/RNSSplitAppearanceApplicator.mm +185 -0
- package/ios/split/RNSSplitAppearanceCoordinator.h +26 -0
- package/ios/split/RNSSplitAppearanceCoordinator.mm +27 -0
- package/ios/split/RNSSplitAppearanceUpdateFlags.h +14 -0
- package/ios/split/RNSSplitHostComponentView.mm +1 -1
- package/ios/split/RNSSplitHostController.h +86 -0
- package/ios/split/RNSSplitHostController.mm +560 -0
- package/ios/split/RNSSplitNavigationController.h +31 -0
- package/ios/split/RNSSplitNavigationController.mm +44 -0
- package/ios/split/RNSSplitNavigationControllerFrameObserver.h +32 -0
- package/ios/split/RNSSplitNavigationControllerFrameObserver.mm +80 -0
- package/ios/split/RNSSplitNavigationControllerFrameOriginChangeDelegate.h +15 -0
- package/ios/split/RNSSplitScreenComponentView.mm +8 -9
- package/ios/split/RNSSplitScreenController.h +45 -0
- package/ios/split/RNSSplitScreenController.mm +130 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +1 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +47 -9
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +3 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +9 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +15 -0
- package/ios/stack/header/RNSStackHeaderMenuFinder.h +18 -3
- package/ios/stack/header/RNSStackHeaderMenuFinder.mm +21 -3
- package/ios/stack/host/RNSStackHostComponentView.mm +3 -1
- package/ios/stack/host/RNSStackNavigationController.mm +1 -1
- package/ios/stack/screen/RNSStackScreenComponentView.mm +0 -2
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +6 -1
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +61 -12
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +3 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +4 -1
- package/ios/tabs/host/RNSTabBarController.h +5 -12
- package/ios/tabs/host/RNSTabBarController.mm +1 -1
- package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.ios.js +25 -0
- package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.ios.js.map +1 -0
- package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.js +24 -0
- package/lib/commonjs/components/scroll-to-top-guard/ScrollToTopGuard.js.map +1 -0
- package/lib/commonjs/components/scroll-to-top-guard/index.js +13 -0
- package/lib/commonjs/components/scroll-to-top-guard/index.js.map +1 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +11 -12
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +1 -22
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/ios/iconUtils.ios.js +33 -2
- package/lib/commonjs/components/stack/header/ios/iconUtils.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/utils.js +6 -9
- package/lib/commonjs/components/stack/header/utils.js.map +1 -1
- package/lib/commonjs/experimental/index.js +11 -0
- package/lib/commonjs/experimental/index.js.map +1 -1
- package/lib/commonjs/fabric/ScrollViewMarkerNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/FullWindowOverlayNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ModalScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenContainerNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenFooterNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackHeaderConfigNativeComponent.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/legacy/SearchBarNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/modals/form-sheet/FormSheetHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/safe-area/SafeAreaViewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js +12 -0
- package/lib/commonjs/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/split/SplitHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/split/SplitScreenNativeComponent.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/StackHeaderItemSpacerIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderSubviewAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsBottomAccessoryContentNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsBottomAccessoryNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostAndroidNativeComponent.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.map +1 -1
- package/lib/commonjs/flags.js +22 -1
- package/lib/commonjs/flags.js.map +1 -1
- package/lib/commonjs/legacy/components/Screen.js +6 -1
- package/lib/commonjs/legacy/components/Screen.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackHeaderConfig.js +5 -0
- package/lib/commonjs/legacy/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/commonjs/legacy/components/SearchBar.js +16 -16
- package/lib/commonjs/legacy/components/SearchBar.js.map +1 -1
- package/lib/commonjs/legacy/components/helpers/prepareHeaderBarButtonItems.js +3 -0
- package/lib/commonjs/legacy/components/helpers/prepareHeaderBarButtonItems.js.map +1 -1
- package/lib/commonjs/legacy/gesture-handler/fabricUtils.js.map +1 -1
- package/lib/commonjs/legacy/useTransitionProgress.js.map +1 -1
- package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.ios.js +20 -0
- package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.ios.js.map +1 -0
- package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.js +18 -0
- package/lib/module/components/scroll-to-top-guard/ScrollToTopGuard.js.map +1 -0
- package/lib/module/components/scroll-to-top-guard/index.js +2 -0
- package/lib/module/components/scroll-to-top-guard/index.js.map +1 -0
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +14 -15
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +1 -22
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/module/components/stack/header/ios/iconUtils.ios.js +31 -2
- package/lib/module/components/stack/header/ios/iconUtils.ios.js.map +1 -1
- package/lib/module/components/stack/header/utils.js +5 -8
- package/lib/module/components/stack/header/utils.js.map +1 -1
- package/lib/module/experimental/index.js +1 -0
- package/lib/module/experimental/index.js.map +1 -1
- package/lib/module/fabric/ScrollViewMarkerNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/FullWindowOverlayNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ModalScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenContainerNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenFooterNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenStackHeaderConfigNativeComponent.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/legacy/SearchBarNativeComponent.js.map +1 -1
- package/lib/module/fabric/modals/form-sheet/FormSheetHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/safe-area/SafeAreaViewNativeComponent.js.map +1 -1
- package/lib/module/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js +7 -0
- package/lib/module/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.js.map +1 -0
- package/lib/module/fabric/split/SplitHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/split/SplitScreenNativeComponent.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/StackHeaderItemSpacerIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderSubviewAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsBottomAccessoryContentNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsBottomAccessoryNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostAndroidNativeComponent.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.map +1 -1
- package/lib/module/flags.js +22 -1
- package/lib/module/flags.js.map +1 -1
- package/lib/module/legacy/components/Screen.js +6 -1
- package/lib/module/legacy/components/Screen.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackHeaderConfig.js +5 -0
- package/lib/module/legacy/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/module/legacy/components/SearchBar.js +17 -17
- package/lib/module/legacy/components/SearchBar.js.map +1 -1
- package/lib/module/legacy/components/helpers/prepareHeaderBarButtonItems.js +4 -0
- package/lib/module/legacy/components/helpers/prepareHeaderBarButtonItems.js.map +1 -1
- package/lib/module/legacy/gesture-handler/fabricUtils.js.map +1 -1
- package/lib/module/legacy/useTransitionProgress.js.map +1 -1
- package/lib/module/private/hooks/useRenderDebugInfo.js.map +1 -1
- package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +2 -2
- package/lib/typescript/components/safe-area/SafeAreaView.web.d.ts +5 -2
- package/lib/typescript/components/safe-area/SafeAreaView.web.d.ts.map +1 -1
- package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.d.ts +15 -0
- package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.d.ts.map +1 -0
- package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.ios.d.ts +12 -0
- package/lib/typescript/components/scroll-to-top-guard/ScrollToTopGuard.ios.d.ts.map +1 -0
- package/lib/typescript/components/scroll-to-top-guard/index.d.ts +2 -0
- package/lib/typescript/components/scroll-to-top-guard/index.d.ts.map +1 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +24 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +13 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +5 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.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/iconUtils.ios.d.ts +3 -0
- package/lib/typescript/components/stack/header/ios/iconUtils.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/utils.d.ts +1 -2
- package/lib/typescript/components/stack/header/utils.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +2 -2
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.web.d.ts +6 -2
- package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
- package/lib/typescript/components/stack/screen/StackScreen.web.d.ts +5 -2
- package/lib/typescript/components/stack/screen/StackScreen.web.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +5 -2
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.types.d.ts +7 -3
- package/lib/typescript/components/tabs/screen/TabsScreen.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +5 -2
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +1 -1
- package/lib/typescript/experimental/index.d.ts +1 -0
- package/lib/typescript/experimental/index.d.ts.map +1 -1
- package/lib/typescript/fabric/NativeScreensModule.d.ts +1 -1
- package/lib/typescript/fabric/ScrollViewMarkerNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/ScrollViewMarkerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/FullWindowOverlayNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/FullWindowOverlayNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ModalScreenNativeComponent.d.ts +3 -2
- package/lib/typescript/fabric/legacy/ModalScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenContainerNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenContainerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenContentWrapperNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenContentWrapperNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenFooterNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenFooterNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenNativeComponent.d.ts +3 -2
- package/lib/typescript/fabric/legacy/ScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenNavigationContainerNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenNavigationContainerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderConfigNativeComponent.d.ts +3 -3
- package/lib/typescript/fabric/legacy/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/SearchBarNativeComponent.d.ts +6 -6
- package/lib/typescript/fabric/legacy/SearchBarNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/modals/form-sheet/FormSheetHostNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/modals/form-sheet/FormSheetHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/safe-area/SafeAreaViewNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/safe-area/SafeAreaViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/split/SplitHostNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/split/SplitHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/split/SplitScreenNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/split/SplitScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +2 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderSubviewAndroidNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/stack/StackHeaderSubviewAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackScreenNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/stack/StackScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsBottomAccessoryContentNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsBottomAccessoryContentNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsBottomAccessoryNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsBottomAccessoryNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostAndroidNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsHostAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +2 -2
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/flags.d.ts +13 -0
- package/lib/typescript/flags.d.ts.map +1 -1
- package/lib/typescript/legacy/TransitionProgressContext.d.ts +1 -1
- package/lib/typescript/legacy/TransitionProgressContext.d.ts.map +1 -1
- package/lib/typescript/legacy/components/Screen.d.ts +5 -3
- package/lib/typescript/legacy/components/Screen.d.ts.map +1 -1
- package/lib/typescript/legacy/components/Screen.web.d.ts +10 -2
- package/lib/typescript/legacy/components/Screen.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenContainer.web.d.ts +5 -2
- package/lib/typescript/legacy/components/ScreenContainer.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenContentWrapper.web.d.ts +5 -2
- package/lib/typescript/legacy/components/ScreenContentWrapper.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenContentWrapper.windows.d.ts +5 -2
- package/lib/typescript/legacy/components/ScreenContentWrapper.windows.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenFooter.web.d.ts +10 -3
- package/lib/typescript/legacy/components/ScreenFooter.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenFooter.windows.d.ts +10 -3
- package/lib/typescript/legacy/components/ScreenFooter.windows.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStack.web.d.ts +5 -2
- package/lib/typescript/legacy/components/ScreenStack.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackHeaderConfig.d.ts +3 -1
- package/lib/typescript/legacy/components/ScreenStackHeaderConfig.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts +3 -2
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/legacy/components/SearchBar.d.ts +3 -3
- package/lib/typescript/legacy/components/SearchBar.d.ts.map +1 -1
- package/lib/typescript/legacy/components/SearchBar.web.d.ts +5 -2
- package/lib/typescript/legacy/components/SearchBar.web.d.ts.map +1 -1
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +15 -12
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
- package/lib/typescript/legacy/gesture-handler/fabricUtils.d.ts +3 -2
- package/lib/typescript/legacy/gesture-handler/fabricUtils.d.ts.map +1 -1
- package/lib/typescript/legacy/types.d.ts +25 -5
- package/lib/typescript/legacy/types.d.ts.map +1 -1
- package/lib/typescript/legacy/useTransitionProgress.d.ts +2 -5
- package/lib/typescript/legacy/useTransitionProgress.d.ts.map +1 -1
- package/lib/typescript/private/hooks/useRenderDebugInfo.d.ts +2 -2
- package/lib/typescript/private/hooks/useRenderDebugInfo.d.ts.map +1 -1
- package/package.json +17 -17
- package/src/components/modals/form-sheet/FormSheet.types.ts +2 -2
- package/src/components/scroll-to-top-guard/ScrollToTopGuard.ios.tsx +17 -0
- package/src/components/scroll-to-top-guard/ScrollToTopGuard.tsx +18 -0
- package/src/components/scroll-to-top-guard/index.ts +1 -0
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +24 -0
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +32 -22
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +13 -0
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +1 -23
- package/src/components/stack/header/ios/iconUtils.ios.ts +38 -2
- package/src/components/stack/header/utils.ts +6 -11
- package/src/components/stack/host/StackHost.types.ts +2 -4
- package/src/components/tabs/screen/TabsScreen.types.ts +7 -3
- package/src/experimental/index.ts +1 -0
- package/src/fabric/ScrollViewMarkerNativeComponent.ts +8 -2
- package/src/fabric/legacy/FullWindowOverlayNativeComponent.ts +6 -2
- package/src/fabric/legacy/ModalScreenNativeComponent.ts +8 -2
- package/src/fabric/legacy/ScreenContainerNativeComponent.ts +5 -2
- package/src/fabric/legacy/ScreenContentWrapperNativeComponent.ts +2 -2
- package/src/fabric/legacy/ScreenFooterNativeComponent.ts +5 -2
- package/src/fabric/legacy/ScreenNativeComponent.ts +8 -2
- package/src/fabric/legacy/ScreenNavigationContainerNativeComponent.ts +2 -2
- package/src/fabric/legacy/ScreenStackHeaderConfigNativeComponent.ts +8 -3
- package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -2
- package/src/fabric/legacy/ScreenStackNativeComponent.ts +10 -2
- package/src/fabric/legacy/SearchBarNativeComponent.ts +10 -7
- package/src/fabric/modals/form-sheet/FormSheetContentWrapperNativeComponent.ts +2 -2
- package/src/fabric/modals/form-sheet/FormSheetHostNativeComponent.ts +7 -2
- package/src/fabric/safe-area/SafeAreaViewNativeComponent.ts +6 -2
- package/src/fabric/scroll-to-top-guard/ScrollToTopGuardNativeComponent.ts +10 -0
- package/src/fabric/split/SplitHostNativeComponent.ts +5 -2
- package/src/fabric/split/SplitScreenNativeComponent.ts +6 -2
- package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +3 -1
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +7 -2
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +2 -1
- package/src/fabric/stack/StackHeaderItemSpacerIOSNativeComponent.ts +6 -2
- package/src/fabric/stack/StackHeaderSubviewAndroidNativeComponent.ts +6 -2
- package/src/fabric/stack/StackHostNativeComponent.ts +5 -2
- package/src/fabric/stack/StackScreenNativeComponent.ts +6 -2
- package/src/fabric/tabs/TabsBottomAccessoryContentNativeComponent.ts +6 -2
- package/src/fabric/tabs/TabsBottomAccessoryNativeComponent.ts +6 -2
- package/src/fabric/tabs/TabsHostAndroidNativeComponent.ts +7 -2
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +7 -2
- package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +2 -1
- package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +2 -1
- package/src/flags.ts +26 -0
- package/src/legacy/TransitionProgressContext.tsx +1 -1
- package/src/legacy/components/Screen.tsx +14 -6
- package/src/legacy/components/ScreenStackHeaderConfig.tsx +7 -1
- package/src/legacy/components/ScreenStackItem.tsx +3 -4
- package/src/legacy/components/SearchBar.tsx +34 -44
- package/src/legacy/components/helpers/prepareHeaderBarButtonItems.ts +7 -1
- package/src/legacy/gesture-handler/fabricUtils.ts +5 -2
- package/src/legacy/types.ts +28 -5
- package/src/legacy/useTransitionProgress.tsx +4 -2
- package/src/private/hooks/useRenderDebugInfo.tsx +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/FormSheetNativeDismissCoordinator.kt +0 -25
- package/ios/ReactMountingTransactionObserving.swift +0 -7
- package/ios/bridging/Swift-Bridging.h +0 -7
- package/ios/orientation/RNSOrientationProviding.swift +0 -6
- package/ios/orientation/RNSOrientationSwift.swift +0 -14
- package/ios/split/RNSSplitAppearanceApplicator.swift +0 -199
- package/ios/split/RNSSplitAppearanceCoordinator.swift +0 -26
- package/ios/split/RNSSplitAppearanceUpdateFlags.swift +0 -11
- package/ios/split/RNSSplitHostController.swift +0 -570
- package/ios/split/RNSSplitNavigationController.swift +0 -46
- package/ios/split/RNSSplitScreenController.swift +0 -133
- package/ios/utils/RNSLog.swift +0 -6
package/README.md
CHANGED
|
@@ -256,9 +256,8 @@ React native screens library is licensed under [The MIT License](LICENSE).
|
|
|
256
256
|
|
|
257
257
|
## Credits
|
|
258
258
|
|
|
259
|
-
This project has been
|
|
259
|
+
This project has been built and is maintained thanks to the support from [Expo.io](https://expo.io) and [Software Mansion](https://swmansion.com).
|
|
260
260
|
|
|
261
|
-
[](https://shopify.com)
|
|
262
261
|
[](https://expo.io)
|
|
263
262
|
[](https://swmansion.com)
|
|
264
263
|
|
package/RNScreens.podspec
CHANGED
|
@@ -6,7 +6,7 @@ debug_logging_enabled = ENV['RNS_DEBUG_LOGGING'] == '1'
|
|
|
6
6
|
use_cxxbridge = ENV['RNS_USE_CXXBRIDGE'] == '1'
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
source_files_exts = '{h,m,mm,cpp
|
|
9
|
+
source_files_exts = '{h,m,mm,cpp}'
|
|
10
10
|
source_files = ["ios/**/*.#{source_files_exts}"]
|
|
11
11
|
|
|
12
12
|
min_supported_ios_version = "15.1"
|
|
@@ -14,17 +14,14 @@ min_supported_tvos_version = "15.1"
|
|
|
14
14
|
min_supported_visionos_version = "1.0"
|
|
15
15
|
|
|
16
16
|
rnscreens_cpp_flags = []
|
|
17
|
-
rnscreens_swift_flags = []
|
|
18
17
|
|
|
19
18
|
if debug_logging_enabled
|
|
20
19
|
rnscreens_cpp_flags << "-DRNS_DEBUG_LOGGING=1"
|
|
21
|
-
rnscreens_swift_flags << "-DRNS_DEBUG_LOGGING"
|
|
22
20
|
end
|
|
23
21
|
rnscreens_cpp_flags << "-DRNS_USE_CXXBRIDGE=1" if use_cxxbridge
|
|
24
22
|
|
|
25
23
|
rnscreens_config = {
|
|
26
|
-
'OTHER_CPLUSPLUSFLAGS' => rnscreens_cpp_flags.join(" ")
|
|
27
|
-
'OTHER_SWIFT_FLAGS' => rnscreens_swift_flags.join(" ")
|
|
24
|
+
'OTHER_CPLUSPLUSFLAGS' => rnscreens_cpp_flags.join(" ")
|
|
28
25
|
}
|
|
29
26
|
|
|
30
27
|
rnscreens_config['DEFINES_MODULE'] = 'YES'
|
|
@@ -42,7 +39,6 @@ Pod::Spec.new do |s|
|
|
|
42
39
|
s.platforms = { :ios => min_supported_ios_version, :tvos => min_supported_tvos_version, :visionos => min_supported_visionos_version }
|
|
43
40
|
s.source = { :git => "https://github.com/software-mansion/react-native-screens.git", :tag => "#{s.version}" }
|
|
44
41
|
s.source_files = source_files
|
|
45
|
-
s.project_header_files = "ios/bridging/Swift-Bridging.h"
|
|
46
42
|
s.requires_arc = true
|
|
47
43
|
|
|
48
44
|
if debug_logging_enabled
|
package/android/build.gradle
CHANGED
|
@@ -82,7 +82,27 @@ if (isRunningInContextOfScreensRepo()) {
|
|
|
82
82
|
apply plugin: "com.facebook.react"
|
|
83
83
|
}
|
|
84
84
|
apply plugin: 'com.android.library'
|
|
85
|
-
|
|
85
|
+
|
|
86
|
+
// AGP 9 ships built-in Kotlin support enabled by default. When it is active, AGP compiles
|
|
87
|
+
// our Kotlin sources itself and *additionally* applying the Kotlin Android plugin fails the build.
|
|
88
|
+
// Consuming apps may opt out with `android.builtInKotlin=false` in which case AGP does NOT
|
|
89
|
+
// provide Kotlin and we MUST apply the plugin ourselves.
|
|
90
|
+
// AGP < 9 had no built-in Kotlin at all, so we always apply it there.
|
|
91
|
+
def shouldEnableAgpFallback() {
|
|
92
|
+
def agpMajorVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger()
|
|
93
|
+
if (agpMajorVersion <= 8) {
|
|
94
|
+
return true
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
def propertyVal = providers.gradleProperty("android.builtInKotlin").orNull
|
|
98
|
+
def isBuiltInKotlinEnabled = propertyVal != null ? propertyVal.toBoolean() : true
|
|
99
|
+
|
|
100
|
+
return !isBuiltInKotlinEnabled
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (shouldEnableAgpFallback()) {
|
|
104
|
+
apply plugin: 'kotlin-android'
|
|
105
|
+
}
|
|
86
106
|
|
|
87
107
|
def reactNativeArchitectures() {
|
|
88
108
|
def value = project.getProperties().get("reactNativeArchitectures")
|
|
@@ -165,6 +185,11 @@ android {
|
|
|
165
185
|
}
|
|
166
186
|
sourceSets.main {
|
|
167
187
|
ext.androidResDir = "src/main/res"
|
|
188
|
+
kotlin {
|
|
189
|
+
srcDirs += [
|
|
190
|
+
"src/fabric/java",
|
|
191
|
+
]
|
|
192
|
+
}
|
|
168
193
|
java {
|
|
169
194
|
srcDirs += [
|
|
170
195
|
"src/fabric/java",
|
|
@@ -64,6 +64,11 @@ class NativeProxy {
|
|
|
64
64
|
|
|
65
65
|
val screen = weakScreeRef.get()
|
|
66
66
|
if (screen is Screen) {
|
|
67
|
+
// Fabric's mounting transaction removes the screen on a Choreographer frame callback,
|
|
68
|
+
// which can execute before `startRemovalTransition` (scheduled via `Handler.post`).
|
|
69
|
+
// To prevent `Screen.isBeingRemoved` from being read as false during teardown,
|
|
70
|
+
// we must set this flag synchronously here.
|
|
71
|
+
screen.markAsBeingRemoved()
|
|
67
72
|
val isScheduled =
|
|
68
73
|
screen.post {
|
|
69
74
|
screen.startRemovalTransition()
|
|
@@ -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.FormSheetContentWrapperViewManager
|
|
22
|
-
import com.swmansion.rnscreens.modals.formsheet.FormSheetHostViewManager
|
|
21
|
+
import com.swmansion.rnscreens.modals.formsheet.react.contentwrapper.FormSheetContentWrapperViewManager
|
|
22
|
+
import com.swmansion.rnscreens.modals.formsheet.react.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
|
|
@@ -71,7 +71,14 @@ class Screen(
|
|
|
71
71
|
private set
|
|
72
72
|
var screenId: String? = null
|
|
73
73
|
var isStatusBarAnimated: Boolean? = null
|
|
74
|
+
|
|
75
|
+
// Can be set on the mounting coordinator's thread (see `markAsBeingRemoved`), read on the UI thread.
|
|
76
|
+
@Volatile
|
|
74
77
|
var isBeingRemoved = false
|
|
78
|
+
private set
|
|
79
|
+
|
|
80
|
+
// Keeps `startTransitionRecursive` / `endTransitionRecursive` calls paired. Should be used on UI thread only.
|
|
81
|
+
private var isRemovalTransitionStarted = false
|
|
75
82
|
|
|
76
83
|
// Props for controlling modal presentation
|
|
77
84
|
var isSheetGrabberVisible: Boolean = false
|
|
@@ -439,19 +446,28 @@ class Screen(
|
|
|
439
446
|
|
|
440
447
|
var nativeBackButtonDismissalEnabled: Boolean = true
|
|
441
448
|
|
|
449
|
+
/**
|
|
450
|
+
* Marks this screen as being removed from the native stack. Safe to call off the UI thread;
|
|
451
|
+
* must run before the mount transaction removing this screen executes.
|
|
452
|
+
*/
|
|
453
|
+
fun markAsBeingRemoved() {
|
|
454
|
+
isBeingRemoved = true
|
|
455
|
+
}
|
|
456
|
+
|
|
442
457
|
fun startRemovalTransition() {
|
|
443
|
-
|
|
444
|
-
|
|
458
|
+
isBeingRemoved = true
|
|
459
|
+
if (!isRemovalTransitionStarted) {
|
|
460
|
+
isRemovalTransitionStarted = true
|
|
445
461
|
startTransitionRecursive(this)
|
|
446
462
|
}
|
|
447
463
|
}
|
|
448
464
|
|
|
449
465
|
fun endRemovalTransition() {
|
|
450
|
-
if (
|
|
451
|
-
|
|
466
|
+
if (isRemovalTransitionStarted) {
|
|
467
|
+
isRemovalTransitionStarted = false
|
|
468
|
+
isBeingRemoved = false
|
|
469
|
+
endTransitionRecursive(this)
|
|
452
470
|
}
|
|
453
|
-
isBeingRemoved = false
|
|
454
|
-
endTransitionRecursive(this)
|
|
455
471
|
}
|
|
456
472
|
|
|
457
473
|
private fun endTransitionRecursive(parent: ViewGroup) {
|
|
@@ -85,6 +85,12 @@ class ScreenStackFragment :
|
|
|
85
85
|
|
|
86
86
|
private var lastInsetsCompat: WindowInsetsCompat? = null
|
|
87
87
|
|
|
88
|
+
// Container reference is captured at registration, because `screen.container` is already
|
|
89
|
+
// null during teardown. Necessary for unregistering inset & layout listeners in `onDestroyView`.
|
|
90
|
+
private var containerWithSheetListeners: ScreenContainer? = null
|
|
91
|
+
private var containerOnLayoutChangeListener: View.OnLayoutChangeListener? = null
|
|
92
|
+
private var containerOnApplyWindowInsetsListener: View.OnApplyWindowInsetsListener? = null
|
|
93
|
+
|
|
88
94
|
@SuppressLint("ValidFragment")
|
|
89
95
|
constructor(screenView: Screen) : super(screenView)
|
|
90
96
|
|
|
@@ -337,6 +343,7 @@ class ScreenStackFragment :
|
|
|
337
343
|
// - Screen.fragment
|
|
338
344
|
lastActiveHeaderConfig?.clearActionBarIfOwned(activity as? AppCompatActivity)
|
|
339
345
|
lastActiveHeaderConfig = null
|
|
346
|
+
detachInsetsAndLayoutListenersFromContainer()
|
|
340
347
|
super.onDestroyView()
|
|
341
348
|
}
|
|
342
349
|
|
|
@@ -522,15 +529,20 @@ class ScreenStackFragment :
|
|
|
522
529
|
// Mark: Avoiding top inset by BottomSheet
|
|
523
530
|
|
|
524
531
|
private fun attachInsetsAndLayoutListenersToBottomSheet(sheetTransitionCoordinator: BottomSheetTransitionCoordinator) {
|
|
525
|
-
screen.container?.
|
|
532
|
+
screen.container?.let { container ->
|
|
533
|
+
containerWithSheetListeners = container
|
|
534
|
+
|
|
526
535
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
536
|
+
val insetsListener =
|
|
537
|
+
View.OnApplyWindowInsetsListener { _, insets ->
|
|
538
|
+
val insetsCompat = WindowInsetsCompat.toWindowInsetsCompat(insets, container)
|
|
539
|
+
handleInsetsUpdateAndNotifyTransition(
|
|
540
|
+
insetsCompat,
|
|
541
|
+
)
|
|
542
|
+
insets
|
|
543
|
+
}
|
|
544
|
+
containerOnApplyWindowInsetsListener = insetsListener
|
|
545
|
+
container.setOnApplyWindowInsetsListener(insetsListener)
|
|
534
546
|
} else {
|
|
535
547
|
val bottomSheetWindowInsetListenerChain = requireBottomSheetWindowInsetsListenerChain()
|
|
536
548
|
bottomSheetWindowInsetListenerChain.addListener { _, windowInsets ->
|
|
@@ -540,11 +552,28 @@ class ScreenStackFragment :
|
|
|
540
552
|
windowInsets
|
|
541
553
|
}
|
|
542
554
|
}
|
|
555
|
+
|
|
556
|
+
val layoutChangeListener =
|
|
557
|
+
View.OnLayoutChangeListener { _, _, _, _, _, _, _, _, _ ->
|
|
558
|
+
sheetTransitionCoordinator.onScreenContainerLayoutChanged(screen)
|
|
559
|
+
}
|
|
560
|
+
containerOnLayoutChangeListener = layoutChangeListener
|
|
561
|
+
container.addOnLayoutChangeListener(layoutChangeListener)
|
|
543
562
|
}
|
|
563
|
+
}
|
|
544
564
|
|
|
545
|
-
|
|
546
|
-
|
|
565
|
+
private fun detachInsetsAndLayoutListenersFromContainer() {
|
|
566
|
+
containerWithSheetListeners?.let { container ->
|
|
567
|
+
if (containerOnLayoutChangeListener != null) {
|
|
568
|
+
container.removeOnLayoutChangeListener(containerOnLayoutChangeListener)
|
|
569
|
+
}
|
|
570
|
+
if (containerOnApplyWindowInsetsListener != null) {
|
|
571
|
+
container.setOnApplyWindowInsetsListener(null)
|
|
572
|
+
}
|
|
547
573
|
}
|
|
574
|
+
containerWithSheetListeners = null
|
|
575
|
+
containerOnLayoutChangeListener = null
|
|
576
|
+
containerOnApplyWindowInsetsListener = null
|
|
548
577
|
}
|
|
549
578
|
|
|
550
579
|
private fun handleInsetsUpdateAndNotifyTransition(insetsCompat: WindowInsetsCompat) {
|
|
@@ -323,6 +323,11 @@ open class ScreenViewManager :
|
|
|
323
323
|
value: Boolean,
|
|
324
324
|
) = Unit
|
|
325
325
|
|
|
326
|
+
override fun setIosOrientationInheritanceFixEnabled(
|
|
327
|
+
view: Screen?,
|
|
328
|
+
value: Boolean,
|
|
329
|
+
) = Unit
|
|
330
|
+
|
|
326
331
|
// END mark: iOS-only
|
|
327
332
|
|
|
328
333
|
override fun setAndroidResetScreenShadowStateOnOrientationChangeEnabled(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.coordinator
|
|
2
2
|
|
|
3
3
|
import android.os.Build
|
|
4
4
|
import android.widget.FrameLayout
|
|
@@ -6,6 +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.native.model.FormSheetConfig
|
|
9
10
|
import com.swmansion.rnscreens.utils.dpToPx
|
|
10
11
|
|
|
11
12
|
internal class FormSheetAppearanceCoordinator(
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.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.native.model.FormSheetDetents
|
|
6
7
|
|
|
7
8
|
internal class FormSheetBehaviorController(
|
|
8
9
|
private val sheetView: FrameLayout,
|
|
@@ -12,6 +13,7 @@ internal class FormSheetBehaviorController(
|
|
|
12
13
|
|
|
13
14
|
private var currentDetentsCount: Int = 1
|
|
14
15
|
private var lastEmittedDetentIndex: Int = FORM_SHEET_UNKNOWN_DETENT_INDEX
|
|
16
|
+
private var lastStableState: Int = BottomSheetBehavior.STATE_COLLAPSED
|
|
15
17
|
|
|
16
18
|
private val bottomSheetCallback =
|
|
17
19
|
object : BottomSheetBehavior.BottomSheetCallback() {
|
|
@@ -19,6 +21,8 @@ internal class FormSheetBehaviorController(
|
|
|
19
21
|
bottomSheet: View,
|
|
20
22
|
newState: Int,
|
|
21
23
|
) {
|
|
24
|
+
rememberStateIfStable(newState)
|
|
25
|
+
|
|
22
26
|
val index = mapStateToDetentIndex(newState)
|
|
23
27
|
if (index != FORM_SHEET_UNKNOWN_DETENT_INDEX && index != lastEmittedDetentIndex) {
|
|
24
28
|
lastEmittedDetentIndex = index
|
|
@@ -34,6 +38,7 @@ internal class FormSheetBehaviorController(
|
|
|
34
38
|
|
|
35
39
|
init {
|
|
36
40
|
behavior.isHideable = true
|
|
41
|
+
rememberStateIfStable(behavior.state)
|
|
37
42
|
}
|
|
38
43
|
|
|
39
44
|
internal fun setup() {
|
|
@@ -44,6 +49,25 @@ internal class FormSheetBehaviorController(
|
|
|
44
49
|
behavior.removeBottomSheetCallback(bottomSheetCallback)
|
|
45
50
|
}
|
|
46
51
|
|
|
52
|
+
internal fun restoreLastStableState() {
|
|
53
|
+
if (behavior.state != BottomSheetBehavior.STATE_HIDDEN) {
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
behavior.state = lastStableState
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private fun rememberStateIfStable(state: Int) {
|
|
61
|
+
val isVisibleRestingState =
|
|
62
|
+
state == BottomSheetBehavior.STATE_EXPANDED ||
|
|
63
|
+
state == BottomSheetBehavior.STATE_COLLAPSED ||
|
|
64
|
+
state == BottomSheetBehavior.STATE_HALF_EXPANDED
|
|
65
|
+
|
|
66
|
+
if (isVisibleRestingState) {
|
|
67
|
+
lastStableState = state
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
47
71
|
/**
|
|
48
72
|
* @param detents - parsed detents configuration.
|
|
49
73
|
* @param sheetAvailableSpace - the full window height that detent fractions are measured against.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.coordinator
|
|
2
2
|
|
|
3
3
|
import android.view.ViewGroup
|
|
4
4
|
import android.widget.FrameLayout
|
|
@@ -6,6 +6,9 @@ import androidx.core.view.ViewCompat
|
|
|
6
6
|
import androidx.core.view.WindowInsetsCompat
|
|
7
7
|
import androidx.core.view.doOnLayout
|
|
8
8
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
9
|
+
import com.swmansion.rnscreens.modals.formsheet.native.core.FormSheetContainer
|
|
10
|
+
import com.swmansion.rnscreens.modals.formsheet.native.interfaces.FormSheetContentSizeChangeDelegate
|
|
11
|
+
import com.swmansion.rnscreens.modals.formsheet.native.model.FormSheetDetents
|
|
9
12
|
|
|
10
13
|
internal class FormSheetDimensionsCoordinator(
|
|
11
14
|
private val dialog: BottomSheetDialog,
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.coordinator
|
|
2
|
+
|
|
3
|
+
import androidx.activity.OnBackPressedCallback
|
|
4
|
+
import com.swmansion.rnscreens.modals.dimmingview.DimmingViewManager
|
|
5
|
+
import com.swmansion.rnscreens.modals.formsheet.native.core.FormSheetDialog
|
|
6
|
+
|
|
7
|
+
internal class FormSheetNativeDismissCoordinator(
|
|
8
|
+
private val dialog: FormSheetDialog,
|
|
9
|
+
private val behaviorController: FormSheetBehaviorController?,
|
|
10
|
+
private val dimmingManager: DimmingViewManager,
|
|
11
|
+
private val onDismissAllowed: () -> Unit,
|
|
12
|
+
private val onDismissPrevented: () -> Unit,
|
|
13
|
+
) : FormSheetDialog.CancelRequestInterceptor {
|
|
14
|
+
private val preventNativeDismissBackPressCallback =
|
|
15
|
+
object : OnBackPressedCallback(false) {
|
|
16
|
+
override fun handleOnBackPressed() {
|
|
17
|
+
handleCancelRequest()
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
internal var shouldPreventDismiss: Boolean = false
|
|
22
|
+
set(value) {
|
|
23
|
+
field = value
|
|
24
|
+
preventNativeDismissBackPressCallback.isEnabled = value
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
internal fun setup() {
|
|
28
|
+
dialog.cancelRequestInterceptor = this
|
|
29
|
+
dialog.onBackPressedDispatcher.addCallback(preventNativeDismissBackPressCallback)
|
|
30
|
+
// Backdrop taps go through `cancel()` rather than dismissing directly, so that they are
|
|
31
|
+
// subject to the very same interception as the back press and the swipe down.
|
|
32
|
+
dimmingManager.setOnBackdropClickListener { dialog.cancel() }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
internal fun destroy() {
|
|
36
|
+
dialog.cancelRequestInterceptor = null
|
|
37
|
+
preventNativeDismissBackPressCallback.remove()
|
|
38
|
+
dimmingManager.setOnBackdropClickListener(null)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override fun handleCancelRequest() {
|
|
42
|
+
if (shouldPreventDismiss) {
|
|
43
|
+
onDismissPrevented()
|
|
44
|
+
behaviorController?.restoreLastStableState()
|
|
45
|
+
return
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
onDismissAllowed()
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.core
|
|
2
2
|
|
|
3
3
|
import android.content.Context
|
|
4
4
|
import android.os.Bundle
|
|
@@ -20,6 +20,19 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
|
20
20
|
internal class FormSheetDialog(
|
|
21
21
|
context: Context,
|
|
22
22
|
) : BottomSheetDialog(context) {
|
|
23
|
+
internal fun interface CancelRequestInterceptor {
|
|
24
|
+
/**
|
|
25
|
+
* Invoked in place of the dialog's default cancellation whenever an interceptor is attached.
|
|
26
|
+
*
|
|
27
|
+
* The interceptor fully owns the outcome - either for native dismissal prevention or for driving
|
|
28
|
+
* a custom animated dismissal when allowed. Either way, the dialog skips
|
|
29
|
+
* [BottomSheetDialog.cancel], which would tear the window down synchronously.
|
|
30
|
+
*/
|
|
31
|
+
fun handleCancelRequest()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
internal var cancelRequestInterceptor: CancelRequestInterceptor? = null
|
|
35
|
+
|
|
23
36
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
24
37
|
super.onCreate(savedInstanceState)
|
|
25
38
|
|
|
@@ -35,6 +48,16 @@ internal class FormSheetDialog(
|
|
|
35
48
|
forceEdgeToEdge()
|
|
36
49
|
}
|
|
37
50
|
|
|
51
|
+
override fun cancel() {
|
|
52
|
+
val interceptor = cancelRequestInterceptor
|
|
53
|
+
if (interceptor == null) {
|
|
54
|
+
super.cancel()
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
interceptor.handleCancelRequest()
|
|
59
|
+
}
|
|
60
|
+
|
|
38
61
|
/**
|
|
39
62
|
* Material's [BottomSheetDialog] only draws edge-to-edge when its theme opts in via the
|
|
40
63
|
* `enableEdgeToEdge` attribute AND the navigation bar is translucent (see
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.core
|
|
2
2
|
|
|
3
3
|
import android.content.Context
|
|
4
4
|
import android.util.Log
|
|
@@ -6,6 +6,15 @@ import android.view.ContextThemeWrapper
|
|
|
6
6
|
import android.view.View
|
|
7
7
|
import android.widget.FrameLayout
|
|
8
8
|
import com.swmansion.rnscreens.modals.dimmingview.DimmingViewManager
|
|
9
|
+
import com.swmansion.rnscreens.modals.formsheet.native.coordinator.FormSheetAppearanceCoordinator
|
|
10
|
+
import com.swmansion.rnscreens.modals.formsheet.native.coordinator.FormSheetBehaviorController
|
|
11
|
+
import com.swmansion.rnscreens.modals.formsheet.native.coordinator.FormSheetDimensionsCoordinator
|
|
12
|
+
import com.swmansion.rnscreens.modals.formsheet.native.coordinator.FormSheetNativeDismissCoordinator
|
|
13
|
+
import com.swmansion.rnscreens.modals.formsheet.native.interfaces.FormSheetContentSizeChangeDelegate
|
|
14
|
+
import com.swmansion.rnscreens.modals.formsheet.native.interfaces.FormSheetDialogEventEmitter
|
|
15
|
+
import com.swmansion.rnscreens.modals.formsheet.native.model.FormSheetConfig
|
|
16
|
+
import com.swmansion.rnscreens.modals.formsheet.native.model.FormSheetDetents
|
|
17
|
+
import com.swmansion.rnscreens.modals.formsheet.native.presentation.FormSheetPresentationManager
|
|
9
18
|
import kotlin.properties.Delegates
|
|
10
19
|
|
|
11
20
|
class FormSheetDialogManager(
|
|
@@ -60,6 +69,15 @@ class FormSheetDialogManager(
|
|
|
60
69
|
onNativeDismiss = { eventEmitter?.emitOnNativeDismissEvent() },
|
|
61
70
|
)
|
|
62
71
|
|
|
72
|
+
private val nativeDismissCoordinator =
|
|
73
|
+
FormSheetNativeDismissCoordinator(
|
|
74
|
+
dialog = dialog,
|
|
75
|
+
behaviorController = behaviorController,
|
|
76
|
+
dimmingManager = dimmingManager,
|
|
77
|
+
onDismissAllowed = { presentationManager.handleNativeDismiss() },
|
|
78
|
+
onDismissPrevented = { eventEmitter?.emitOnNativeDismissPreventedEvent() },
|
|
79
|
+
)
|
|
80
|
+
|
|
63
81
|
internal var eventEmitter: FormSheetDialogEventEmitter? by Delegates.observable(null) { _, _, newValue ->
|
|
64
82
|
presentationManager.appearanceEventEmitter = newValue
|
|
65
83
|
}
|
|
@@ -69,6 +87,7 @@ class FormSheetDialogManager(
|
|
|
69
87
|
|
|
70
88
|
init {
|
|
71
89
|
presentationManager.setup()
|
|
90
|
+
nativeDismissCoordinator.setup()
|
|
72
91
|
appearanceCoordinator.setup()
|
|
73
92
|
dimensionsCoordinator.setup()
|
|
74
93
|
behaviorController?.setup()
|
|
@@ -103,6 +122,10 @@ class FormSheetDialogManager(
|
|
|
103
122
|
appearanceCoordinator.updateBackgroundColor(newConfig.nativeContainerBackgroundColor)
|
|
104
123
|
}
|
|
105
124
|
|
|
125
|
+
if (oldConfig.shouldPreventNativeDismiss != newConfig.shouldPreventNativeDismiss) {
|
|
126
|
+
nativeDismissCoordinator.shouldPreventDismiss = newConfig.shouldPreventNativeDismiss
|
|
127
|
+
}
|
|
128
|
+
|
|
106
129
|
if (oldConfig.isOpen != newConfig.isOpen) {
|
|
107
130
|
presentationManager.updatePresentationState(newConfig.isOpen)
|
|
108
131
|
}
|
|
@@ -127,6 +150,7 @@ class FormSheetDialogManager(
|
|
|
127
150
|
|
|
128
151
|
internal fun destroy() {
|
|
129
152
|
behaviorController?.destroy()
|
|
153
|
+
nativeDismissCoordinator.destroy()
|
|
130
154
|
presentationManager.destroy()
|
|
131
155
|
dimensionsCoordinator.destroy()
|
|
132
156
|
dialog.dismiss()
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.interfaces
|
|
2
2
|
|
|
3
3
|
import com.swmansion.rnscreens.common.event.ViewAppearanceEventEmitter
|
|
4
4
|
|
|
5
5
|
internal interface FormSheetDialogEventEmitter : ViewAppearanceEventEmitter {
|
|
6
6
|
fun emitOnNativeDismissEvent()
|
|
7
7
|
|
|
8
|
+
fun emitOnNativeDismissPreventedEvent()
|
|
9
|
+
|
|
8
10
|
fun emitOnDetentChanged(index: Int)
|
|
9
11
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.model
|
|
2
2
|
|
|
3
3
|
internal data class FormSheetConfig(
|
|
4
4
|
val isOpen: Boolean = false,
|
|
@@ -6,8 +6,12 @@ internal data class FormSheetConfig(
|
|
|
6
6
|
val prefersGrabberVisible: Boolean = false,
|
|
7
7
|
val initialDetentIndex: Int = 0,
|
|
8
8
|
val preferredCornerRadius: Float = SYSTEM_DEFAULT_CORNER_RADIUS,
|
|
9
|
+
val preventNativeDismiss: Boolean = false,
|
|
9
10
|
val nativeContainerBackgroundColor: Int? = null,
|
|
10
11
|
) {
|
|
12
|
+
val shouldPreventNativeDismiss: Boolean
|
|
13
|
+
get() = preventNativeDismiss && isOpen
|
|
14
|
+
|
|
11
15
|
companion object {
|
|
12
16
|
const val SYSTEM_DEFAULT_CORNER_RADIUS = -1f
|
|
13
17
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.native.presentation
|
|
2
2
|
|
|
3
3
|
import android.animation.Animator
|
|
4
4
|
import android.animation.AnimatorListenerAdapter
|
|
@@ -6,6 +6,7 @@ import android.view.View
|
|
|
6
6
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
7
7
|
import com.swmansion.rnscreens.common.event.ViewAppearanceEventEmitter
|
|
8
8
|
import com.swmansion.rnscreens.modals.dimmingview.DimmingViewManager
|
|
9
|
+
import com.swmansion.rnscreens.modals.formsheet.native.core.FormSheetDialog
|
|
9
10
|
|
|
10
11
|
internal class FormSheetPresentationManager(
|
|
11
12
|
private val dialog: FormSheetDialog,
|
|
@@ -21,18 +22,10 @@ internal class FormSheetPresentationManager(
|
|
|
21
22
|
private val animatorFactory = FormSheetAnimatorFactory(dimmingManager)
|
|
22
23
|
private var currentSheetAnimator: Animator? = null
|
|
23
24
|
|
|
24
|
-
private val nativeDismissCoordinator =
|
|
25
|
-
FormSheetNativeDismissCoordinator(
|
|
26
|
-
dialog = dialog,
|
|
27
|
-
dimmingManager = dimmingManager,
|
|
28
|
-
onNativeDismiss = { handleNativeDismiss() },
|
|
29
|
-
)
|
|
30
|
-
|
|
31
25
|
internal fun setup() {
|
|
32
26
|
bottomSheetView?.let { view ->
|
|
33
27
|
dimmingManager.attachToBehavior(BottomSheetBehavior.from(view))
|
|
34
28
|
}
|
|
35
|
-
nativeDismissCoordinator.setup()
|
|
36
29
|
}
|
|
37
30
|
|
|
38
31
|
internal fun updatePresentationState(isOpen: Boolean) {
|
|
@@ -164,7 +157,7 @@ internal class FormSheetPresentationManager(
|
|
|
164
157
|
}
|
|
165
158
|
}
|
|
166
159
|
|
|
167
|
-
|
|
160
|
+
internal fun handleNativeDismiss() {
|
|
168
161
|
if (state == FormSheetPresentationState.DISMISSING || state == FormSheetPresentationState.DISMISSED) {
|
|
169
162
|
return
|
|
170
163
|
}
|
|
@@ -201,7 +194,5 @@ internal class FormSheetPresentationManager(
|
|
|
201
194
|
dialog.setOnShowListener(null)
|
|
202
195
|
|
|
203
196
|
state = FormSheetPresentationState.DISMISSED
|
|
204
|
-
|
|
205
|
-
nativeDismissCoordinator.destroy()
|
|
206
197
|
}
|
|
207
198
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet
|
|
1
|
+
package com.swmansion.rnscreens.modals.formsheet.react.contentwrapper
|
|
2
2
|
|
|
3
3
|
import android.content.Context
|
|
4
4
|
import com.facebook.react.views.view.ReactViewGroup
|
|
5
|
+
import com.swmansion.rnscreens.modals.formsheet.native.interfaces.FormSheetContentSizeChangeDelegate
|
|
6
|
+
import com.swmansion.rnscreens.modals.formsheet.native.interfaces.FormSheetContentSizeChangeProvider
|
|
5
7
|
|
|
6
8
|
class FormSheetContentWrapper(
|
|
7
9
|
context: Context,
|