react-native-screens 5.0.0-alpha.3 → 5.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -4
- package/android/build.gradle +1 -0
- package/android/consumer-rules.pro +3 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderConfigViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledHeaderSubviewViewGroup.kt +2 -0
- package/android/src/fabric/java/com/swmansion/rnscreens/legacy/FabricEnabledViewGroup.kt +18 -3
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +7 -3
- package/android/src/main/java/com/swmansion/rnscreens/common/colorscheme/ColorSchemeCoordinator.kt +11 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +9 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetAppearanceCoordinator.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetBehaviorController.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetDimensionsCoordinator.kt +6 -6
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetKeyboardCoordinator.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/coordinator/FormSheetNativeDismissCoordinator.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetAvailableHeightProvider.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetContainer.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialog.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native/core → core/modals/formsheet/dialog}/FormSheetDialogManager.kt +26 -8
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeDelegate.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetContentSizeChangeProvider.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/interfaces/FormSheetDialogEventEmitter.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetConfig.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/model/FormSheetDetents.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetAnimatorFactory.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetDimmingManager.kt +6 -18
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetDismissalOrigin.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentation.kt +10 -10
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationManager.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetPresentationState.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/native → core/modals/formsheet}/presentation/FormSheetStackRegistry.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/ext/FragmentManagerExt.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/FragmentManagerHelper.kt +0 -3
- package/android/src/main/java/com/swmansion/rnscreens/helpers/NoTintDrawable.kt +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/ViewFinder.kt +0 -17
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +29 -2
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenContainer.kt +35 -3
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +13 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderConfig.kt +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderSubviewManager.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackViewManager.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/DimmingView.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/stack/views/ScreensCoordinatorLayout.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapper.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/contentwrapper/FormSheetContentWrapperViewManager.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDetentChangedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDidDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetDismissEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetNativeDismissPreventedEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetSyncFlushEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillAppearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/event/FormSheetWillDisappearEvent.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetContentView.kt +3 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHost.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostEventEmitter.kt +11 -11
- package/android/src/main/java/com/swmansion/rnscreens/{modals/formsheet/react → react/modals/formsheet}/host/FormSheetHostViewManager.kt +10 -10
- package/android/src/main/java/com/swmansion/rnscreens/safearea/OnInterfaceInsetsChangeListener.kt +15 -0
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaProvider.kt +8 -8
- package/android/src/main/java/com/swmansion/rnscreens/safearea/SafeAreaView.kt +3 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +0 -52
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +112 -59
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderToolbar.kt +74 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +4 -73
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +5 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +0 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +3 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperation.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/FragmentOperationExecutor.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +57 -19
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerDelegate.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainerUpdateCoordinator.kt +5 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +14 -5
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackUpdateBatchStateProviding.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/PreventNativeDismissCallback.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +33 -12
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceApplicator.kt +106 -10
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +44 -3
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceModel.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/CustomBottomNavigationView.kt +21 -1
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +28 -13
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainerDelegate.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +12 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +41 -17
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenDelegate.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIcon.kt +82 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenIconTinting.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenViewManager.kt +26 -19
- package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +14 -7
- package/android/src/main/java/com/swmansion/rnscreens/utils/RNSLog.kt +22 -6
- package/ios/RNSEnums.h +14 -1
- package/ios/helpers/image/RNSImageLoadingHelper.h +7 -0
- package/ios/helpers/image/RNSImageLoadingHelper.mm +9 -0
- package/ios/legacy/RNSBarButtonItem.mm +15 -0
- package/ios/legacy/RNSConvert.h +6 -0
- package/ios/legacy/RNSConvert.mm +17 -0
- package/ios/legacy/RNSNavigationBar.h +31 -0
- package/ios/legacy/RNSNavigationBar.mm +15 -0
- package/ios/legacy/RNSScreen.mm +122 -12
- package/ios/legacy/RNSScreenContentWrapper.mm +4 -1
- package/ios/legacy/RNSScreenStack.mm +202 -15
- package/ios/legacy/RNSScreenStackHeaderConfig.h +30 -0
- package/ios/legacy/RNSScreenStackHeaderConfig.mm +70 -17
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +33 -0
- package/ios/safe-area/RNSSafeAreaViewComponentView.mm +1 -12
- package/ios/stack/conversion/RNSConversions-Stack.h +30 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +79 -0
- package/ios/stack/header/RNSHeaderItemVisibilityPriority.h +9 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +4 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +40 -6
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +5 -0
- package/ios/stack/header/RNSStackHeaderContentFactory.mm +3 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +9 -2
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +57 -3
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +5 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.h +13 -0
- package/ios/stack/header/RNSStackHeaderMenuCoordinator.mm +24 -0
- package/ios/stack/header/RNSStackHeaderMenuFinder.h +8 -1
- package/ios/stack/header/RNSStackHeaderMenuFinder.mm +26 -9
- package/ios/stack/screen/RNSStackScreenComponentView.h +2 -1
- package/ios/stack/screen/RNSStackScreenComponentView.mm +23 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +81 -8
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +79 -16
- package/ios/tabs/RNSTabBarItemCoordinator.h +16 -0
- package/ios/tabs/RNSTabBarItemCoordinator.mm +143 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.h +24 -0
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryWrapperView.mm +22 -0
- package/ios/tabs/conversion/RNSConversions-Tabs.h +22 -0
- package/ios/tabs/conversion/RNSConversions-Tabs.mm +97 -3
- package/ios/tabs/host/RNSTabBarController.h +16 -0
- package/ios/tabs/host/RNSTabBarController.mm +516 -107
- package/ios/tabs/host/RNSTabsHostComponentView.h +2 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +32 -2
- package/ios/tabs/screen/RNSTabsScreenComponentView.h +21 -0
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +54 -69
- package/ios/tabs/screen/RNSTabsScreenViewController.mm +1 -0
- package/ios/utils/RNSDefines.h +12 -7
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +3 -2
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +8 -3
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js +17 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/commonjs/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.js +8 -1
- package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.web.js +0 -2
- package/lib/commonjs/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/commonjs/components/stack/index.js.map +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js +2 -0
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/host/{TabsHost.web.js → TabsHost.js} +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/commonjs/components/tabs/index.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/lib/commonjs/components/tabs/screen/{TabsScreen.web.js → TabsScreen.js} +1 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js → tabs/screen/TabsScreenIcon.types.js} +1 -1
- package/lib/commonjs/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/commonjs/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/legacy/components/ScreenStackItem.js +31 -11
- package/lib/commonjs/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.android.js +4 -3
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +9 -4
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.js +10 -0
- package/lib/module/components/stack/header/StackHeaderConfig.js.map +1 -0
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js +4 -1
- package/lib/module/components/stack/header/ios/StackHeaderItem.ios.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.js +9 -2
- package/lib/module/components/stack/host/StackHost.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.web.js +0 -3
- package/lib/module/components/stack/host/StackHost.web.js.map +1 -1
- package/lib/module/components/stack/index.js.map +1 -1
- package/lib/module/components/tabs/host/TabsHost.ios.js +2 -0
- package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/{src/components/tabs/host/TabsHost.web.tsx → lib/module/components/tabs/host/TabsHost.js} +1 -2
- package/lib/module/components/tabs/host/TabsHost.js.map +1 -0
- package/lib/module/components/tabs/index.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js +3 -1
- package/lib/module/components/tabs/screen/TabsScreen.android.js.map +1 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js +10 -1
- package/lib/module/components/tabs/screen/TabsScreen.ios.js.map +1 -1
- package/{src/components/tabs/screen/TabsScreen.web.tsx → lib/module/components/tabs/screen/TabsScreen.js} +1 -2
- package/lib/module/components/tabs/screen/TabsScreen.js.map +1 -0
- package/lib/module/components/tabs/screen/TabsScreenIcon.types.js +2 -0
- package/lib/module/components/{stack/header/StackHeaderConfig.d.js.map → tabs/screen/TabsScreenIcon.types.js.map} +1 -1
- package/lib/module/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/legacy/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js +1 -1
- package/lib/module/fabric/tabs/TabsScreenIOSNativeComponent.js.map +1 -1
- package/lib/module/legacy/components/ScreenStackItem.js +31 -11
- package/lib/module/legacy/components/ScreenStackItem.js.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +4 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts +8 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.d.ts.map +1 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts +6 -3
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts +137 -2
- package/lib/typescript/components/stack/header/StackHeaderConfig.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts +2 -0
- package/lib/typescript/components/stack/header/StackHeaderConfig.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +5 -0
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +24 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.web.d.ts +1 -3
- package/lib/typescript/components/stack/host/StackHost.web.d.ts.map +1 -1
- package/lib/typescript/components/stack/index.d.ts +4 -3
- package/lib/typescript/components/stack/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.d.ts +5 -0
- package/lib/typescript/components/tabs/host/TabsHost.d.ts.map +1 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +56 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/index.d.ts +4 -6
- package/lib/typescript/components/tabs/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts +42 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.android.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts +5 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts +78 -13
- package/lib/typescript/components/tabs/screen/TabsScreen.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts +91 -0
- package/lib/typescript/components/tabs/screen/TabsScreenIcon.types.d.ts.map +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts +1 -0
- package/lib/typescript/components/tabs/screen/index.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts +2 -0
- package/lib/typescript/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/legacy/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +4 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +3 -0
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/tabs/TabsScreenAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts +10 -1
- package/lib/typescript/fabric/tabs/TabsScreenIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts +25 -0
- package/lib/typescript/legacy/components/ScreenStackItem.d.ts.map +1 -1
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts +4 -0
- package/lib/typescript/legacy/components/helpers/prepareHeaderBarButtonItems.d.ts.map +1 -1
- package/lib/typescript/legacy/types.d.ts +30 -0
- package/lib/typescript/legacy/types.d.ts.map +1 -1
- package/package.json +4 -2
- package/src/components/stack/header/StackHeaderConfig.android.tsx +6 -20
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +4 -3
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +10 -16
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +148 -2
- package/src/components/stack/header/StackHeaderConfig.tsx +12 -0
- package/src/components/stack/header/StackHeaderConfig.types.ts +2 -0
- package/src/components/stack/header/ios/StackHeaderItem.ios.tsx +9 -1
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +5 -0
- package/src/components/stack/host/StackHost.tsx +10 -3
- package/src/components/stack/host/StackHost.types.ts +25 -1
- package/src/components/stack/host/StackHost.web.tsx +1 -4
- package/src/components/stack/index.ts +9 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +2 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +60 -0
- package/src/components/tabs/host/TabsHost.tsx +7 -0
- package/src/components/tabs/index.ts +9 -0
- package/src/components/tabs/screen/TabsScreen.android.tsx +8 -3
- package/src/components/tabs/screen/TabsScreen.android.types.ts +42 -7
- package/src/components/tabs/screen/TabsScreen.ios.tsx +22 -5
- package/src/components/tabs/screen/TabsScreen.ios.types.ts +79 -17
- package/src/components/tabs/screen/TabsScreen.tsx +7 -0
- package/src/components/tabs/screen/TabsScreenIcon.types.ts +117 -0
- package/src/components/tabs/screen/index.ts +1 -0
- package/src/fabric/legacy/ScreenStackHeaderSubviewNativeComponent.ts +6 -0
- package/src/fabric/legacy/ScreenStackNativeComponent.ts +2 -0
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +11 -0
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +11 -0
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +7 -0
- package/src/fabric/tabs/TabsScreenAndroidNativeComponent.ts +9 -0
- package/src/fabric/tabs/TabsScreenIOSNativeComponent.ts +20 -2
- package/src/legacy/components/ScreenStackItem.tsx +59 -12
- package/src/legacy/types.ts +31 -0
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenModalFragment.kt +0 -281
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogRootView.kt +0 -104
- package/android/src/main/java/com/swmansion/rnscreens/legacy/bottomsheet/BottomSheetDialogScreen.kt +0 -26
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js +0 -10
- package/lib/commonjs/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/commonjs/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/commonjs/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/commonjs/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/commonjs/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/module/components/stack/header/StackHeaderConfig.d.js +0 -2
- package/lib/module/components/stack/header/StackHeaderConfig.web.js +0 -4
- package/lib/module/components/stack/header/StackHeaderConfig.web.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.d.js +0 -2
- package/lib/module/components/tabs/host/TabsHost.d.js.map +0 -1
- package/lib/module/components/tabs/host/TabsHost.web.js +0 -4
- package/lib/module/components/tabs/host/TabsHost.web.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.d.js +0 -2
- package/lib/module/components/tabs/screen/TabsScreen.d.js.map +0 -1
- package/lib/module/components/tabs/screen/TabsScreen.web.js +0 -4
- package/lib/module/components/tabs/screen/TabsScreen.web.js.map +0 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts +0 -7
- package/lib/typescript/components/stack/header/StackHeaderConfig.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts +0 -7
- package/lib/typescript/components/tabs/host/TabsHost.web.d.ts.map +0 -1
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts +0 -7
- package/lib/typescript/components/tabs/screen/TabsScreen.web.d.ts.map +0 -1
- package/src/components/stack/header/StackHeaderConfig.d.ts +0 -22
- package/src/components/stack/header/StackHeaderConfig.web.tsx +0 -5
- package/src/components/tabs/host/TabsHost.d.ts +0 -12
- package/src/components/tabs/screen/TabsScreen.d.ts +0 -12
|
@@ -17,11 +17,15 @@ import com.facebook.react.modules.core.ReactChoreographer
|
|
|
17
17
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
18
18
|
import com.facebook.react.uimanager.UIManagerHelper
|
|
19
19
|
import com.swmansion.rnscreens.common.FragmentProviding
|
|
20
|
+
import com.swmansion.rnscreens.common.container.Container
|
|
21
|
+
import com.swmansion.rnscreens.common.container.ContainerItem
|
|
22
|
+
import com.swmansion.rnscreens.common.container.ParentContainerItemRegistry
|
|
20
23
|
import com.swmansion.rnscreens.legacy.events.ScreenDismissedEvent
|
|
21
24
|
|
|
22
25
|
open class ScreenContainer(
|
|
23
26
|
context: Context?,
|
|
24
|
-
) : ViewGroup(context)
|
|
27
|
+
) : ViewGroup(context),
|
|
28
|
+
Container {
|
|
25
29
|
@JvmField
|
|
26
30
|
protected val screenWrappers = ArrayList<ScreenFragmentWrapper>()
|
|
27
31
|
|
|
@@ -43,6 +47,10 @@ open class ScreenContainer(
|
|
|
43
47
|
}
|
|
44
48
|
private var parentScreenWrapper: ScreenFragmentWrapper? = null
|
|
45
49
|
|
|
50
|
+
private val parentContainerRegistry = ParentContainerItemRegistry()
|
|
51
|
+
|
|
52
|
+
override fun shouldDelayChildPressedState(): Boolean = false
|
|
53
|
+
|
|
46
54
|
override fun onLayout(
|
|
47
55
|
changed: Boolean,
|
|
48
56
|
l: Int,
|
|
@@ -275,16 +283,27 @@ open class ScreenContainer(
|
|
|
275
283
|
|
|
276
284
|
override fun onAttachedToWindow() {
|
|
277
285
|
super.onAttachedToWindow()
|
|
286
|
+
parentContainerRegistry.attach(this)
|
|
278
287
|
isAttached = true
|
|
279
288
|
setupFragmentManager()
|
|
280
289
|
}
|
|
281
290
|
|
|
282
|
-
/**
|
|
291
|
+
/**
|
|
292
|
+
* Removes fragments from fragment manager that are attached to this container, including
|
|
293
|
+
* fragments of screens already removed from it whose deferred removal hasn't run yet.
|
|
294
|
+
*/
|
|
283
295
|
private fun removeMyFragments(fragmentManager: FragmentManager) {
|
|
284
296
|
val transaction = fragmentManager.beginTransaction()
|
|
285
297
|
var hasFragments = false
|
|
286
298
|
for (fragment in fragmentManager.fragments) {
|
|
287
|
-
|
|
299
|
+
// `removeScreenAt` / `removeAllScreens` clear `screen.container` immediately but defer
|
|
300
|
+
// the fragment removal, so also match such orphans by the container view id.
|
|
301
|
+
if (fragment is ScreenFragment &&
|
|
302
|
+
(
|
|
303
|
+
fragment.screen.container === this ||
|
|
304
|
+
(fragment.screen.container == null && fragment.id == id)
|
|
305
|
+
)
|
|
306
|
+
) {
|
|
288
307
|
transaction.remove(fragment)
|
|
289
308
|
hasFragments = true
|
|
290
309
|
}
|
|
@@ -310,6 +329,7 @@ open class ScreenContainer(
|
|
|
310
329
|
|
|
311
330
|
parentScreenWrapper?.removeChildScreenContainer(this)
|
|
312
331
|
parentScreenWrapper = null
|
|
332
|
+
parentContainerRegistry.detach(this)
|
|
313
333
|
|
|
314
334
|
super.onDetachedFromWindow()
|
|
315
335
|
isAttached = false
|
|
@@ -444,4 +464,16 @@ open class ScreenContainer(
|
|
|
444
464
|
protected open fun notifyContainerUpdate() {
|
|
445
465
|
topScreen?.fragmentWrapper?.onContainerUpdate()
|
|
446
466
|
}
|
|
467
|
+
|
|
468
|
+
// region Container
|
|
469
|
+
|
|
470
|
+
// Only the currently shown (top) screen is consulted.
|
|
471
|
+
override fun resolveCurrentContentScrollView(): ViewGroup? = topScreen?.findContentScrollView()
|
|
472
|
+
|
|
473
|
+
override fun wantsToPreventStackNativeDismiss(): ContainerItem? = topScreen?.wantsToPreventStackNativeDismiss()
|
|
474
|
+
|
|
475
|
+
// Nothing to pop here - the request goes to the shown screen's nested container.
|
|
476
|
+
override fun requestPopToRoot(): Boolean = topScreen?.resolveNestedContainer()?.requestPopToRoot() == true
|
|
477
|
+
|
|
478
|
+
// endregion
|
|
447
479
|
}
|
|
@@ -6,6 +6,7 @@ import android.os.Build
|
|
|
6
6
|
import android.view.View
|
|
7
7
|
import com.facebook.react.bridge.ReactContext
|
|
8
8
|
import com.facebook.react.uimanager.UIManagerHelper
|
|
9
|
+
import com.swmansion.rnscreens.common.container.ContainerItem
|
|
9
10
|
import com.swmansion.rnscreens.legacy.bottomsheet.requiresEnterTransitionPostponing
|
|
10
11
|
import com.swmansion.rnscreens.legacy.bottomsheet.sheetShouldUseDimmingView
|
|
11
12
|
import com.swmansion.rnscreens.legacy.bottomsheet.usesFormSheetPresentation
|
|
@@ -440,6 +441,18 @@ class ScreenStack(
|
|
|
440
441
|
}
|
|
441
442
|
}
|
|
442
443
|
|
|
444
|
+
// region Container
|
|
445
|
+
|
|
446
|
+
override fun wantsToPreventStackNativeDismiss(): ContainerItem? =
|
|
447
|
+
screenWrappers
|
|
448
|
+
.asReversed()
|
|
449
|
+
.filter { !dismissedWrappers.contains(it) }
|
|
450
|
+
.firstNotNullOfOrNull { it.screen.wantsToPreventStackNativeDismiss() }
|
|
451
|
+
|
|
452
|
+
override fun requestPopToRoot(): Boolean = popToRoot() || super.requestPopToRoot()
|
|
453
|
+
|
|
454
|
+
// endregion
|
|
455
|
+
|
|
443
456
|
companion object {
|
|
444
457
|
const val TAG = "ScreenStack"
|
|
445
458
|
|
|
@@ -231,7 +231,13 @@ class ScreenStackHeaderConfig(
|
|
|
231
231
|
|
|
232
232
|
fun onUpdate() {
|
|
233
233
|
val stack = screenStack
|
|
234
|
-
|
|
234
|
+
// A screen that is not in a stack has nothing to configure a header for, and
|
|
235
|
+
// `canNavigateBack()` below asserts on exactly this condition. Treating a null
|
|
236
|
+
// stack as "is top" let a detached screen reach that assertion and throw.
|
|
237
|
+
if (stack == null) {
|
|
238
|
+
return
|
|
239
|
+
}
|
|
240
|
+
val isTop = stack.topScreen == parent
|
|
235
241
|
|
|
236
242
|
if (!isAttachedToWindow || !isTop || isDestroyed) {
|
|
237
243
|
return
|
package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStackHeaderSubviewManager.kt
CHANGED
|
@@ -47,6 +47,13 @@ class ScreenStackHeaderSubviewManager :
|
|
|
47
47
|
Log.w("[RNScreens]", "hidesSharedBackground prop is not available on Android")
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
override fun setVisibilityPriority(
|
|
51
|
+
view: ScreenStackHeaderSubview,
|
|
52
|
+
visibilityPriority: String?,
|
|
53
|
+
) {
|
|
54
|
+
Log.w("[RNScreens]", "visibilityPriority prop is not available on Android")
|
|
55
|
+
}
|
|
56
|
+
|
|
50
57
|
// synchronousShadowStateUpdatesEnabled is not available on Android atm,
|
|
51
58
|
// however we must override their setters
|
|
52
59
|
override fun setSynchronousShadowStateUpdatesEnabled(
|
|
@@ -77,6 +77,12 @@ class ScreenStackViewManager :
|
|
|
77
77
|
value: Int?,
|
|
78
78
|
) = Unit
|
|
79
79
|
|
|
80
|
+
// tvOS-only: UIKit Menu back gesture handling lives on iOS/tvOS.
|
|
81
|
+
override fun setDisableDefaultMenuAction(
|
|
82
|
+
view: ScreenStack,
|
|
83
|
+
value: Boolean,
|
|
84
|
+
) = Unit
|
|
85
|
+
|
|
80
86
|
companion object {
|
|
81
87
|
const val REACT_CLASS = "RNSScreenStack"
|
|
82
88
|
}
|
|
@@ -51,6 +51,8 @@ internal class DimmingView(
|
|
|
51
51
|
b: Int,
|
|
52
52
|
) = Unit
|
|
53
53
|
|
|
54
|
+
override fun shouldDelayChildPressedState(): Boolean = false
|
|
55
|
+
|
|
54
56
|
// We do not want to have any action defined here. We just want listeners notified that the click happened.
|
|
55
57
|
@SuppressLint("ClickableViewAccessibility")
|
|
56
58
|
override fun onTouchEvent(event: MotionEvent?): Boolean {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.react.modals.formsheet.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.
|
|
6
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
5
|
+
import com.swmansion.rnscreens.core.modals.formsheet.interfaces.FormSheetContentSizeChangeDelegate
|
|
6
|
+
import com.swmansion.rnscreens.core.modals.formsheet.interfaces.FormSheetContentSizeChangeProvider
|
|
7
7
|
|
|
8
8
|
class FormSheetContentWrapper(
|
|
9
9
|
context: Context,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Implementation adapted from `expo`: https://github.com/expo/expo/pull/45775
|
|
2
2
|
|
|
3
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
3
|
+
package com.swmansion.rnscreens.react.modals.formsheet.event
|
|
4
4
|
|
|
5
5
|
import com.facebook.react.bridge.Arguments
|
|
6
6
|
import com.facebook.react.bridge.WritableMap
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.react.modals.formsheet.host
|
|
2
2
|
|
|
3
3
|
import android.annotation.SuppressLint
|
|
4
4
|
import android.content.Context
|
|
@@ -17,9 +17,9 @@ import com.facebook.react.uimanager.UIManagerHelper
|
|
|
17
17
|
import com.facebook.react.uimanager.common.UIManagerType
|
|
18
18
|
import com.facebook.react.uimanager.events.EventDispatcher
|
|
19
19
|
import com.facebook.react.views.view.ReactViewGroup
|
|
20
|
+
import com.swmansion.rnscreens.core.modals.formsheet.interfaces.FormSheetContentSizeChangeDelegate
|
|
21
|
+
import com.swmansion.rnscreens.core.modals.formsheet.interfaces.FormSheetContentSizeChangeProvider
|
|
20
22
|
import com.swmansion.rnscreens.helpers.getFabricUIManagerNotNull
|
|
21
|
-
import com.swmansion.rnscreens.modals.formsheet.native.interfaces.FormSheetContentSizeChangeDelegate
|
|
22
|
-
import com.swmansion.rnscreens.modals.formsheet.native.interfaces.FormSheetContentSizeChangeProvider
|
|
23
23
|
|
|
24
24
|
@OptIn(UnstableReactNativeAPI::class)
|
|
25
25
|
@SuppressLint("ViewConstructor")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.react.modals.formsheet.host
|
|
2
2
|
|
|
3
3
|
import android.view.View
|
|
4
4
|
import android.view.ViewGroup
|
|
@@ -6,8 +6,8 @@ import com.facebook.react.uimanager.PointerEvents
|
|
|
6
6
|
import com.facebook.react.uimanager.ReactPointerEventsView
|
|
7
7
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
8
8
|
import com.swmansion.rnscreens.common.ShadowStateProxy
|
|
9
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
10
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
9
|
+
import com.swmansion.rnscreens.core.modals.formsheet.dialog.FormSheetDialogManager
|
|
10
|
+
import com.swmansion.rnscreens.core.modals.formsheet.model.FormSheetConfig
|
|
11
11
|
|
|
12
12
|
class FormSheetHost(
|
|
13
13
|
val reactContext: ThemedReactContext,
|
|
@@ -42,6 +42,8 @@ class FormSheetHost(
|
|
|
42
42
|
FormSheetDialogManager(
|
|
43
43
|
context = context,
|
|
44
44
|
contentView = sheetContentView,
|
|
45
|
+
// ReactContext wraps the application context, not the activity.
|
|
46
|
+
activityProvider = { reactContext.currentActivity },
|
|
45
47
|
)
|
|
46
48
|
|
|
47
49
|
init {
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.react.modals.formsheet.host
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.ReactContext
|
|
4
4
|
import com.swmansion.rnscreens.common.event.BaseEventEmitter
|
|
5
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
6
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
7
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
8
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
9
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
10
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
11
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
12
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
13
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
14
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
5
|
+
import com.swmansion.rnscreens.core.modals.formsheet.interfaces.FormSheetDialogEventEmitter
|
|
6
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetDetentChangedEvent
|
|
7
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetDidAppearEvent
|
|
8
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetDidDisappearEvent
|
|
9
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetDismissEvent
|
|
10
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetNativeDismissEvent
|
|
11
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetNativeDismissPreventedEvent
|
|
12
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetSyncFlushEvent
|
|
13
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetWillAppearEvent
|
|
14
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetWillDisappearEvent
|
|
15
15
|
|
|
16
16
|
internal class FormSheetHostEventEmitter(
|
|
17
17
|
reactContext: ReactContext,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.formsheet.
|
|
1
|
+
package com.swmansion.rnscreens.react.modals.formsheet.host
|
|
2
2
|
|
|
3
3
|
import android.view.View
|
|
4
4
|
import com.facebook.react.bridge.ReadableArray
|
|
@@ -11,15 +11,15 @@ import com.facebook.react.uimanager.ViewManagerDelegate
|
|
|
11
11
|
import com.facebook.react.viewmanagers.RNSFormSheetHostManagerDelegate
|
|
12
12
|
import com.facebook.react.viewmanagers.RNSFormSheetHostManagerInterface
|
|
13
13
|
import com.swmansion.rnscreens.helpers.makeEventRegistrationInfo
|
|
14
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
15
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
16
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
17
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
18
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
19
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
20
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
21
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
22
|
-
import com.swmansion.rnscreens.modals.formsheet.
|
|
14
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetDetentChangedEvent
|
|
15
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetDidAppearEvent
|
|
16
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetDidDisappearEvent
|
|
17
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetDismissEvent
|
|
18
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetNativeDismissEvent
|
|
19
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetNativeDismissPreventedEvent
|
|
20
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetSyncFlushEvent
|
|
21
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetWillAppearEvent
|
|
22
|
+
import com.swmansion.rnscreens.react.modals.formsheet.event.FormSheetWillDisappearEvent
|
|
23
23
|
|
|
24
24
|
@ReactModule(name = FormSheetHostViewManager.REACT_CLASS)
|
|
25
25
|
class FormSheetHostViewManager :
|
package/android/src/main/java/com/swmansion/rnscreens/safearea/OnInterfaceInsetsChangeListener.kt
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
package com.swmansion.rnscreens.safearea
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Receives notifications about changes to **interface** safe area insets from a [SafeAreaProvider].
|
|
5
|
+
*/
|
|
6
|
+
interface OnInterfaceInsetsChangeListener {
|
|
7
|
+
/**
|
|
8
|
+
* Called by the [SafeAreaProvider] the listener is registered with when its **interface**
|
|
9
|
+
* safe area insets change. It may also be called with unchanged insets, so implementations
|
|
10
|
+
* should tolerate duplicate notifications.
|
|
11
|
+
*
|
|
12
|
+
* @param newInterfaceInsets the new **interface** safe area insets.
|
|
13
|
+
*/
|
|
14
|
+
fun onInterfaceInsetsChange(newInterfaceInsets: EdgeInsets)
|
|
15
|
+
}
|
|
@@ -7,25 +7,25 @@ package com.swmansion.rnscreens.safearea
|
|
|
7
7
|
* System insets (e.g. `systemBars`, `displayCutout`) are handled through Android inset
|
|
8
8
|
* dispatch mechanism (via `onApplyWindowInsets`).
|
|
9
9
|
*
|
|
10
|
-
* Classes implementing this protocol are responsible for notifying
|
|
11
|
-
*
|
|
10
|
+
* Classes implementing this protocol are responsible for notifying the registered
|
|
11
|
+
* [OnInterfaceInsetsChangeListener] about changes to **interface** safe area insets.
|
|
12
12
|
*/
|
|
13
13
|
interface SafeAreaProvider {
|
|
14
14
|
/**
|
|
15
15
|
* Responsible for registering **interface** safe area insets listener.
|
|
16
16
|
*
|
|
17
|
-
* @param listener
|
|
18
|
-
*
|
|
17
|
+
* @param listener listener that wants to receive notifications about changes
|
|
18
|
+
* to **interface** safe area insets via `onInterfaceInsetsChange`.
|
|
19
19
|
*/
|
|
20
|
-
fun setOnInterfaceInsetsChangeListener(listener:
|
|
20
|
+
fun setOnInterfaceInsetsChangeListener(listener: OnInterfaceInsetsChangeListener)
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Responsible for unregistering **interface** safe area insets listener.
|
|
24
24
|
*
|
|
25
|
-
* @param listener
|
|
26
|
-
*
|
|
25
|
+
* @param listener listener that wants to stop receiving notifications about changes
|
|
26
|
+
* to **interface** safe area insets.
|
|
27
27
|
*/
|
|
28
|
-
fun removeOnInterfaceInsetsChangeListener(listener:
|
|
28
|
+
fun removeOnInterfaceInsetsChangeListener(listener: OnInterfaceInsetsChangeListener)
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Responsible for providing current **interface** safe area insets.
|
|
@@ -22,7 +22,8 @@ class SafeAreaView(
|
|
|
22
22
|
private val reactContext: ThemedReactContext,
|
|
23
23
|
) : ReactViewGroup(reactContext),
|
|
24
24
|
OnApplyWindowInsetsListener,
|
|
25
|
-
ViewTreeObserver.OnPreDrawListener
|
|
25
|
+
ViewTreeObserver.OnPreDrawListener,
|
|
26
|
+
OnInterfaceInsetsChangeListener {
|
|
26
27
|
private var provider = WeakReference<SafeAreaProvider>(null)
|
|
27
28
|
private var currentInterfaceInsets: EdgeInsets = EdgeInsets.ZERO
|
|
28
29
|
private var currentSystemInsets: EdgeInsets = EdgeInsets.ZERO
|
|
@@ -80,7 +81,7 @@ class SafeAreaView(
|
|
|
80
81
|
return providerCandidate as? SafeAreaProvider
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
fun onInterfaceInsetsChange(newInterfaceInsets: EdgeInsets) {
|
|
84
|
+
override fun onInterfaceInsetsChange(newInterfaceInsets: EdgeInsets) {
|
|
84
85
|
if (newInterfaceInsets != currentInterfaceInsets) {
|
|
85
86
|
currentInterfaceInsets = newInterfaceInsets
|
|
86
87
|
|
|
@@ -35,7 +35,6 @@ import com.swmansion.rnscreens.stack.header.appbar.StackHeaderAppBarLayout
|
|
|
35
35
|
import com.swmansion.rnscreens.stack.header.appbar.StackHeaderContentScrimDrawable
|
|
36
36
|
import com.swmansion.rnscreens.stack.header.config.StackHeaderConfigurationProviding
|
|
37
37
|
import com.swmansion.rnscreens.stack.header.config.StackHeaderType
|
|
38
|
-
import com.swmansion.rnscreens.stack.header.subview.StackHeaderSubview
|
|
39
38
|
import com.swmansion.rnscreens.utils.dpToPx
|
|
40
39
|
import com.swmansion.rnscreens.utils.resolveColorAttr
|
|
41
40
|
import com.swmansion.rnscreens.utils.resolveDrawableAttr
|
|
@@ -73,7 +72,6 @@ internal class StackHeaderApplicator(
|
|
|
73
72
|
// Make sure that we receive insets, necessary when changing header mode in runtime.
|
|
74
73
|
appBar.requestApplyInsets()
|
|
75
74
|
populateAppBar(appBar, config)
|
|
76
|
-
maybeApplyRTLCollapsingToolbarLayoutWorkaround(coordinatorLayout, config, appBar)
|
|
77
75
|
appBar.toolbar.requestLayout()
|
|
78
76
|
|
|
79
77
|
return appBar
|
|
@@ -162,7 +160,6 @@ internal class StackHeaderApplicator(
|
|
|
162
160
|
internal fun applyTitleAndSubtitle(
|
|
163
161
|
appBar: StackHeaderAppBarLayout,
|
|
164
162
|
config: StackHeaderConfigurationProviding,
|
|
165
|
-
isAppBarFullyCollapsed: Boolean,
|
|
166
163
|
) {
|
|
167
164
|
when (appBar) {
|
|
168
165
|
is StackHeaderAppBarLayout.Small -> {
|
|
@@ -182,15 +179,6 @@ internal class StackHeaderApplicator(
|
|
|
182
179
|
// title/subtitle vertical split is recomputed only in onLayout. Force a layout
|
|
183
180
|
// so toggling the subtitle at runtime reclaims the title space.
|
|
184
181
|
ctl.requestLayout()
|
|
185
|
-
|
|
186
|
-
// Material re-asserts the collapsed offset after a height change itself, but only
|
|
187
|
-
// when maxLines > 1 (CollapsingToolbarLayout.onMeasure). With maxLines == 1 it never
|
|
188
|
-
// does, so toggling the subtitle at runtime while collapsed leaves a stale offset —
|
|
189
|
-
// setExpanded(false, false) is the closest public equivalent of Material's private
|
|
190
|
-
// maybeSetPendingActionCollapsed().
|
|
191
|
-
if (config.maxLines == 1 && isAppBarFullyCollapsed) {
|
|
192
|
-
appBar.setExpanded(false, false)
|
|
193
|
-
}
|
|
194
182
|
}
|
|
195
183
|
}
|
|
196
184
|
}
|
|
@@ -611,46 +599,6 @@ internal class StackHeaderApplicator(
|
|
|
611
599
|
private fun resolveDefaultOverflowIcon(toolbar: MaterialToolbar): Drawable? =
|
|
612
600
|
AppCompatImageView(toolbar.context, null, androidx.appcompat.R.attr.actionOverflowButtonStyle).drawable
|
|
613
601
|
|
|
614
|
-
private fun maybeApplyRTLCollapsingToolbarLayoutWorkaround(
|
|
615
|
-
coordinatorLayout: StackHeaderCoordinatorLayout,
|
|
616
|
-
config: StackHeaderConfigurationProviding,
|
|
617
|
-
appBar: StackHeaderAppBarLayout,
|
|
618
|
-
) {
|
|
619
|
-
// For collapsing headers, CTL lazily adds a MATCH_PARENT dummy view to the Toolbar
|
|
620
|
-
// during the first onMeasure (ensureToolbar). We need our subviews at higher indices
|
|
621
|
-
// than the dummy view so they get positioned first in RTL layout. Forcing a measure
|
|
622
|
-
// triggers the dummy view creation.
|
|
623
|
-
if (appBar is StackHeaderAppBarLayout.Collapsing && config.isRTL) {
|
|
624
|
-
appBar.measure(
|
|
625
|
-
View.MeasureSpec.makeMeasureSpec(coordinatorLayout.width, View.MeasureSpec.EXACTLY),
|
|
626
|
-
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
|
|
627
|
-
)
|
|
628
|
-
moveDummyViewToFront(appBar.toolbar)
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
/**
|
|
633
|
-
* CollapsingToolbarLayout adds a MATCH_PARENT dummy view to the Toolbar for title bounds
|
|
634
|
-
* tracking. In RTL, the Toolbar iterates custom views in reverse child order — so the
|
|
635
|
-
* dummy view (if last) gets processed first and consumes the entire layout cursor.
|
|
636
|
-
* Moving it to index 0 ensures our subviews are processed first.
|
|
637
|
-
*
|
|
638
|
-
* See https://github.com/material-components/material-components-android/issues/1867.
|
|
639
|
-
*/
|
|
640
|
-
private fun moveDummyViewToFront(toolbar: Toolbar) {
|
|
641
|
-
for (i in 0 until toolbar.childCount) {
|
|
642
|
-
val child = toolbar.getChildAt(i)
|
|
643
|
-
// Assumes only StackHeaderSubview children exist in Collapsing toolbar besides
|
|
644
|
-
// the CTL dummy view.
|
|
645
|
-
if (child !is StackHeaderSubview) {
|
|
646
|
-
val lp = child.layoutParams
|
|
647
|
-
toolbar.removeViewAt(i)
|
|
648
|
-
toolbar.addView(child, 0, lp)
|
|
649
|
-
return
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
|
|
654
602
|
private fun buildTintList(
|
|
655
603
|
normal: Int?,
|
|
656
604
|
pressed: Int?,
|