react-native-screens 5.0.0-alpha.2 → 5.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Package.swift +87 -0
- package/README.md +0 -7
- package/android/src/main/cpp/NativeProxy.cpp +30 -6
- package/android/src/main/cpp/NativeProxy.h +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/container/Container.kt +8 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/container/ContainerItem.kt +13 -1
- package/android/src/main/java/com/swmansion/rnscreens/common/text/ReactTextAppearance.kt +62 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearance.kt +20 -0
- package/android/src/main/java/com/swmansion/rnscreens/common/text/TextAppearanceDefaults.kt +65 -0
- package/android/src/main/java/com/swmansion/rnscreens/helpers/PropIconResolver.kt +17 -23
- package/android/src/main/java/com/swmansion/rnscreens/legacy/Screen.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/legacy/ScreenStack.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetBehaviorController.kt +49 -18
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetDimensionsCoordinator.kt +65 -40
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetKeyboardCoordinator.kt +101 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/coordinator/FormSheetNativeDismissCoordinator.kt +0 -6
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetAvailableHeightProvider.kt +44 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialog.kt +35 -3
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/core/FormSheetDialogManager.kt +33 -106
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/interfaces/FormSheetDialogEventEmitter.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/model/FormSheetDetents.kt +61 -15
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetAnimatorFactory.kt +8 -9
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetDimmingManager.kt +115 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetDismissalOrigin.kt +22 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentation.kt +173 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationManager.kt +141 -49
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetPresentationState.kt +1 -1
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/native/presentation/FormSheetStackRegistry.kt +28 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/event/FormSheetDismissEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/host/FormSheetHostEventEmitter.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/formsheet/react/host/FormSheetHostViewManager.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderApplicator.kt +369 -58
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderBackPressHandler.kt +11 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/StackHeaderCoordinatorLayout.kt +143 -98
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderAppBarLayout.kt +155 -23
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/appbar/StackHeaderContentScrimDrawable.kt +36 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderCollapsedTitleGravityMode.kt +6 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfig.kt +170 -167
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigViewManager.kt +385 -12
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationObserver.kt +0 -4
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderConfigurationProviding.kt +32 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderDelegate.kt +0 -7
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/config/StackHeaderInvalidationFlags.kt +7 -2
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuApplicator.kt +27 -280
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuController.kt +448 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuDelegate.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuMapper.kt +28 -20
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuConfig.kt +3 -55
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuGroupMetadata.kt +1 -10
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuItemConfig.kt +1 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/model/StackHeaderToolbarMenuModel.kt +180 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementOptions.kt +57 -6
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementRawUpdate.kt +3 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuElementUpdate.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuIconResolver.kt +4 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/update/StackHeaderToolbarMenuUpdateQueue.kt +23 -9
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackContainer.kt +103 -3
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHost.kt +13 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/host/StackHostViewManager.kt +14 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreen.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragment.kt +20 -1
- package/android/src/main/java/com/swmansion/rnscreens/stack/screen/StackScreenFragmentDelegate.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/appearance/TabsAppearanceCoordinator.kt +2 -4
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/MenuHelpers.kt +5 -23
- package/android/src/main/java/com/swmansion/rnscreens/tabs/container/TabsContainer.kt +46 -25
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHost.kt +10 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/host/TabsHostA11yCoordinator.kt +23 -2
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreen.kt +17 -0
- package/android/src/main/java/com/swmansion/rnscreens/tabs/screen/TabsScreenFragment.kt +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/utils/DimensionUtils.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/utils/StyleUtils.kt +22 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_large_entire_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_available_space.xml +8 -0
- package/android/src/main/res/base/layout/rns_collapsing_toolbar_medium_entire_space.xml +8 -0
- package/cpp/legacy/RNSScreenRemovalListener.cpp +31 -1
- package/cpp/legacy/RNSScreenRemovalListener.h +18 -3
- package/ios/RNSEnums.h +2 -0
- package/ios/conversion/RNSConversions.h +7 -108
- package/ios/legacy/RNSFullWindowOverlay.mm +1 -1
- package/ios/legacy/RNSModalScreen.mm +1 -1
- package/ios/legacy/RNSScreen.mm +8 -19
- package/ios/legacy/RNSScreenStackHeaderConfig.mm +3 -1
- package/ios/legacy/RNSScreenStackHeaderSubview.mm +1 -1
- package/ios/legacy/RNSScreenWindowTraits.mm +5 -13
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.h +1 -3
- package/ios/modals/form-sheet/RNSFormSheetConfigurationApplicator.mm +11 -22
- package/ios/modals/form-sheet/RNSFormSheetContentController.h +1 -1
- package/ios/modals/form-sheet/RNSFormSheetContentController.mm +7 -18
- package/ios/modals/form-sheet/RNSFormSheetHostComponentView.mm +4 -4
- package/ios/modals/form-sheet/RNSFormSheetHostShadowStateProxy.mm +2 -2
- package/ios/modals/form-sheet/RNSFormSheetUpdateFlags.h +3 -0
- package/ios/safe-area/RNSSafeAreaViewComponentView.mm +2 -2
- package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.mm +2 -3
- package/ios/split/RNSSplitAppearanceApplicator.h +4 -4
- package/ios/split/RNSSplitAppearanceApplicator.mm +53 -56
- package/ios/split/RNSSplitHostComponentEventEmitter.h +1 -0
- package/ios/split/RNSSplitHostComponentEventEmitter.mm +1 -1
- package/ios/split/RNSSplitHostComponentView.h +5 -15
- package/ios/split/RNSSplitHostComponentView.mm +55 -6
- package/ios/split/RNSSplitHostController.h +25 -6
- package/ios/split/RNSSplitHostController.mm +24 -92
- package/ios/split/RNSSplitHostProviders.h +67 -0
- package/ios/split/RNSSplitScreenComponentView.h +0 -39
- package/ios/split/RNSSplitScreenComponentView.mm +27 -10
- package/ios/split/RNSSplitScreenController.h +26 -3
- package/ios/split/RNSSplitScreenController.mm +13 -30
- package/ios/split/RNSSplitScreenShadowStateProxy.h +1 -40
- package/ios/split/RNSSplitScreenShadowStateProxy.mm +1 -26
- package/ios/split/conversion/RNSConversions-SplitView.h +56 -0
- package/ios/{conversion → split/conversion}/RNSConversions-SplitView.mm +4 -1
- package/ios/stack/conversion/RNSConversions-Stack.h +32 -0
- package/ios/stack/conversion/RNSConversions-Stack.mm +55 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.h +26 -0
- package/ios/stack/header/RNSStackHeaderAppearanceMapper.mm +88 -0
- package/ios/stack/header/RNSStackHeaderConfigComponentView.h +10 -1
- package/ios/stack/header/RNSStackHeaderConfigComponentView.mm +67 -35
- package/ios/stack/header/RNSStackHeaderConfigDataProviding.h +6 -0
- package/ios/stack/header/RNSStackHeaderConfigShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderIconResolver.mm +7 -0
- package/ios/stack/header/RNSStackHeaderItemComponentView.h +3 -1
- package/ios/stack/header/RNSStackHeaderItemComponentView.mm +15 -2
- package/ios/stack/header/RNSStackHeaderItemDataProviding.h +2 -0
- package/ios/stack/header/RNSStackHeaderItemShadowStateProxy.mm +1 -1
- package/ios/stack/header/RNSStackHeaderItemSpacerComponentView.mm +2 -1
- package/ios/stack/header/RNSStackHeaderMenuMapper.mm +4 -0
- package/ios/stack/host/RNSStackNavigationBar.h +25 -0
- package/ios/stack/host/RNSStackNavigationBar.mm +80 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.h +8 -0
- package/ios/stack/host/RNSStackNavigationBarCoordinator.mm +11 -0
- package/ios/stack/host/RNSStackNavigationController.mm +13 -5
- package/ios/stack/host/RNSStackOperation.h +0 -2
- package/ios/stack/screen/RNSStackScreenComponentView.mm +9 -2
- package/ios/stack/screen/RNSStackScreenController.mm +12 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.h +8 -0
- package/ios/stack/screen/RNSStackScreenHeaderCoordinator.mm +98 -16
- package/ios/tabs/RNSTabBarAppearanceCoordinator.mm +40 -9
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.h +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryContentComponentView.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryEventEmitter.mm +1 -1
- package/ios/tabs/bottom-accessory/RNSTabsBottomAccessoryShadowStateProxy.mm +1 -1
- package/ios/tabs/conversion/RNSConversions-Tabs.h +78 -0
- package/ios/{conversion → tabs/conversion}/RNSConversions-Tabs.mm +8 -71
- package/ios/tabs/extensions/RNSTabsHostComponentView+RNSImageLoader.h +1 -1
- package/ios/tabs/host/RNSTabsHostComponentView.h +2 -0
- package/ios/tabs/host/RNSTabsHostComponentView.mm +10 -3
- package/ios/tabs/host/RNSTabsHostEventEmitter.mm +1 -1
- package/ios/tabs/screen/RNSTabsScreenComponentView.mm +20 -5
- package/ios/utils/RNSDefines.h +3 -0
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js +34 -19
- package/lib/commonjs/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js +33 -1
- package/lib/commonjs/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/commonjs/components/stack/host/StackHost.js +9 -6
- package/lib/commonjs/components/stack/host/StackHost.js.map +1 -1
- package/lib/commonjs/components/stack/index.js.map +1 -1
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js +1 -0
- package/lib/commonjs/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.android.js +35 -20
- package/lib/module/components/stack/header/StackHeaderConfig.android.js.map +1 -1
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js +34 -2
- package/lib/module/components/stack/header/StackHeaderConfig.ios.js.map +1 -1
- package/lib/module/components/stack/host/StackHost.js +9 -6
- package/lib/module/components/stack/host/StackHost.js.map +1 -1
- package/lib/module/components/stack/index.js.map +1 -1
- package/lib/module/components/tabs/host/TabsHost.ios.js +1 -0
- package/lib/module/components/tabs/host/TabsHost.ios.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigAndroidNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderConfigIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHeaderItemIOSNativeComponent.js.map +1 -1
- package/lib/module/fabric/stack/StackHostNativeComponent.js.map +1 -1
- package/lib/module/fabric/tabs/TabsHostIOSNativeComponent.js.map +1 -1
- package/lib/typescript/components/modals/form-sheet/FormSheet.types.d.ts +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.d.ts.map +1 -1
- package/lib/typescript/components/stack/header/StackHeaderConfig.android.types.d.ts +616 -21
- 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 +226 -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 -2
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts +2 -0
- package/lib/typescript/components/stack/header/ios/StackHeaderItem.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts +1 -1
- package/lib/typescript/components/stack/host/StackHost.d.ts.map +1 -1
- package/lib/typescript/components/stack/host/StackHost.types.d.ts +24 -0
- package/lib/typescript/components/stack/host/StackHost.types.d.ts.map +1 -1
- package/lib/typescript/components/stack/index.d.ts +2 -2
- package/lib/typescript/components/stack/index.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts +16 -0
- package/lib/typescript/components/tabs/host/TabsHost.ios.types.d.ts.map +1 -1
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts +3 -0
- package/lib/typescript/components/tabs/host/TabsHost.types.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts +52 -0
- package/lib/typescript/fabric/stack/StackHeaderConfigAndroidNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts +25 -1
- package/lib/typescript/fabric/stack/StackHeaderConfigIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts +2 -0
- package/lib/typescript/fabric/stack/StackHeaderItemIOSNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts +3 -1
- package/lib/typescript/fabric/stack/StackHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/tabs/TabsHostIOSNativeComponent.d.ts.map +1 -1
- package/package.json +8 -7
- package/react-native.config.js +3 -0
- package/src/components/modals/form-sheet/FormSheet.types.ts +1 -1
- package/src/components/stack/header/StackHeaderConfig.android.tsx +48 -23
- package/src/components/stack/header/StackHeaderConfig.android.types.ts +637 -21
- package/src/components/stack/header/StackHeaderConfig.ios.tsx +45 -1
- package/src/components/stack/header/StackHeaderConfig.ios.types.ts +238 -2
- package/src/components/stack/header/StackHeaderConfig.types.ts +2 -2
- package/src/components/stack/header/ios/StackHeaderItem.ios.types.ts +2 -0
- package/src/components/stack/host/StackHost.tsx +4 -2
- package/src/components/stack/host/StackHost.types.ts +26 -0
- package/src/components/stack/index.ts +6 -1
- package/src/components/tabs/host/TabsHost.ios.tsx +1 -0
- package/src/components/tabs/host/TabsHost.ios.types.ts +16 -0
- package/src/components/tabs/host/TabsHost.types.ts +3 -0
- package/src/fabric/stack/StackHeaderConfigAndroidNativeComponent.ts +78 -0
- package/src/fabric/stack/StackHeaderConfigIOSNativeComponent.ts +32 -0
- package/src/fabric/stack/StackHeaderItemIOSNativeComponent.ts +2 -0
- package/src/fabric/stack/StackHostNativeComponent.ts +11 -2
- package/src/fabric/tabs/TabsHostIOSNativeComponent.ts +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingView.kt +0 -83
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt +0 -89
- package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt +0 -18
- package/android/src/main/java/com/swmansion/rnscreens/stack/header/toolbar/StackHeaderToolbarMenuSelectionController.kt +0 -83
- package/ios/conversion/RNSConversions-Stack.h +0 -32
- package/ios/conversion/RNSConversions-Stack.mm +0 -41
- package/ios/conversion/always_false.h +0 -31
- /package/ios/{conversion → scroll-view-marker/conversion}/RNSConversions-ScrollViewMarker.h +0 -0
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
HostComponent,
|
|
5
|
+
ViewProps,
|
|
6
|
+
CodegenTypes as CT,
|
|
7
|
+
} from 'react-native';
|
|
4
8
|
import { codegenNativeComponent } from 'react-native';
|
|
5
9
|
|
|
6
|
-
|
|
10
|
+
type StackHostColorScheme = 'inherit' | 'light' | 'dark';
|
|
11
|
+
|
|
12
|
+
export interface NativeProps extends ViewProps {
|
|
13
|
+
// General
|
|
14
|
+
colorScheme?: CT.WithDefault<StackHostColorScheme, 'inherit'>;
|
|
15
|
+
}
|
|
7
16
|
|
|
8
17
|
export default codegenNativeComponent<NativeProps>(
|
|
9
18
|
'RNSStackHost',
|
|
@@ -85,6 +85,7 @@ export interface NativeProps extends ViewProps {
|
|
|
85
85
|
layoutDirection?: CT.WithDefault<LayoutDirection, 'inherit'>;
|
|
86
86
|
|
|
87
87
|
// iOS-specific props
|
|
88
|
+
tabBarHiddenAnimationEnabled?: CT.WithDefault<boolean, true>;
|
|
88
89
|
tabBarTintColor?: ColorValue | undefined;
|
|
89
90
|
tabBarMinimizeBehavior?: CT.WithDefault<TabBarMinimizeBehavior, 'automatic'>;
|
|
90
91
|
tabBarControllerMode?: CT.WithDefault<TabBarControllerMode, 'automatic'>;
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import android.annotation.SuppressLint
|
|
4
|
-
import android.content.Context
|
|
5
|
-
import android.graphics.Color
|
|
6
|
-
import android.view.MotionEvent
|
|
7
|
-
import android.view.ViewGroup
|
|
8
|
-
import com.facebook.react.uimanager.ReactCompoundViewGroup
|
|
9
|
-
import com.facebook.react.uimanager.ReactPointerEventsView
|
|
10
|
-
import com.swmansion.rnscreens.ext.equalWithRespectToEps
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Serves as dimming view that can be used as background for some view that does not fully fill
|
|
14
|
-
* the viewport.
|
|
15
|
-
*
|
|
16
|
-
* This dimming view has one more additional feature: it blocks gestures if its alpha > 0.
|
|
17
|
-
*/
|
|
18
|
-
@SuppressLint("ViewConstructor") // Only we instantiate this view
|
|
19
|
-
internal class DimmingView(
|
|
20
|
-
context: Context,
|
|
21
|
-
initialAlpha: Float,
|
|
22
|
-
private val pointerEventsProxy: DimmingViewPointerEventsProxy,
|
|
23
|
-
) : ViewGroup(context),
|
|
24
|
-
ReactCompoundViewGroup,
|
|
25
|
-
ReactPointerEventsView by pointerEventsProxy {
|
|
26
|
-
constructor(context: Context, initialAlpha: Float) : this(
|
|
27
|
-
context,
|
|
28
|
-
initialAlpha,
|
|
29
|
-
DimmingViewPointerEventsProxy(null),
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
init {
|
|
33
|
-
pointerEventsProxy.pointerEventsImpl = DimmingViewPointerEventsImpl(this)
|
|
34
|
-
setFocusable(false)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
internal val blockGestures
|
|
38
|
-
get() = !alpha.equalWithRespectToEps(0F)
|
|
39
|
-
|
|
40
|
-
init {
|
|
41
|
-
setBackgroundColor(Color.BLACK)
|
|
42
|
-
alpha = initialAlpha
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// This view group is not supposed to have any children, however we need it to be a view group
|
|
46
|
-
override fun onLayout(
|
|
47
|
-
changed: Boolean,
|
|
48
|
-
l: Int,
|
|
49
|
-
t: Int,
|
|
50
|
-
r: Int,
|
|
51
|
-
b: Int,
|
|
52
|
-
) = Unit
|
|
53
|
-
|
|
54
|
-
// We do not want to have any action defined here. We just want listeners notified that the click happened.
|
|
55
|
-
@SuppressLint("ClickableViewAccessibility")
|
|
56
|
-
override fun onTouchEvent(event: MotionEvent?): Boolean {
|
|
57
|
-
if (blockGestures && event?.actionMasked == MotionEvent.ACTION_UP) {
|
|
58
|
-
callOnClick()
|
|
59
|
-
}
|
|
60
|
-
return blockGestures
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
override fun reactTagForTouch(
|
|
64
|
-
x: Float,
|
|
65
|
-
y: Float,
|
|
66
|
-
): Int = throw IllegalStateException("[RNScreens] $TAG should never be asked for the view tag!")
|
|
67
|
-
|
|
68
|
-
override fun interceptsTouchEvent(
|
|
69
|
-
x: Float,
|
|
70
|
-
y: Float,
|
|
71
|
-
) = blockGestures
|
|
72
|
-
|
|
73
|
-
override fun onDetachedFromWindow() {
|
|
74
|
-
super.onDetachedFromWindow()
|
|
75
|
-
|
|
76
|
-
// Break reference cycle, since the pointerEventsImpl strongly retains this.
|
|
77
|
-
pointerEventsProxy.pointerEventsImpl = null
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
companion object {
|
|
81
|
-
const val TAG = "DimmingView"
|
|
82
|
-
}
|
|
83
|
-
}
|
package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewManager.kt
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import android.util.Log
|
|
5
|
-
import android.view.View
|
|
6
|
-
import android.view.ViewGroup
|
|
7
|
-
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
|
8
|
-
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
9
|
-
import com.google.android.material.bottomsheet.BottomSheetDialog
|
|
10
|
-
|
|
11
|
-
class DimmingViewManager(
|
|
12
|
-
context: Context,
|
|
13
|
-
private val dialog: BottomSheetDialog,
|
|
14
|
-
) {
|
|
15
|
-
// TODO: @t0maboro - consider exposing as a prop
|
|
16
|
-
internal val maxAlpha: Float = MAX_ALPHA
|
|
17
|
-
|
|
18
|
-
internal var isTransitionAnimationRunning: Boolean = false
|
|
19
|
-
|
|
20
|
-
internal var dimmingViewAlpha: Float
|
|
21
|
-
get() = dimmingView.alpha
|
|
22
|
-
set(value) {
|
|
23
|
-
dimmingView.alpha = value
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
private val dimmingView =
|
|
27
|
-
DimmingView(context, initialAlpha = 0f).apply {
|
|
28
|
-
layoutParams =
|
|
29
|
-
CoordinatorLayout.LayoutParams(
|
|
30
|
-
ViewGroup.LayoutParams.MATCH_PARENT,
|
|
31
|
-
ViewGroup.LayoutParams.MATCH_PARENT,
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
internal fun setOnBackdropClickListener(listener: View.OnClickListener?) {
|
|
36
|
-
dimmingView.setOnClickListener(listener)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
internal fun onDialogShow() {
|
|
40
|
-
attachDimmingViewOverNativeTouchOutside()
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
internal fun attachToBehavior(behavior: BottomSheetBehavior<*>) {
|
|
44
|
-
behavior.addBottomSheetCallback(
|
|
45
|
-
object : BottomSheetBehavior.BottomSheetCallback() {
|
|
46
|
-
override fun onStateChanged(
|
|
47
|
-
bottomSheet: View,
|
|
48
|
-
newState: Int,
|
|
49
|
-
) = Unit
|
|
50
|
-
|
|
51
|
-
override fun onSlide(
|
|
52
|
-
bottomSheet: View,
|
|
53
|
-
slideOffset: Float,
|
|
54
|
-
) {
|
|
55
|
-
// Prevent system updates from overriding alpha while running custom enter/exit animation.
|
|
56
|
-
// When initialDetentIndex is snapping to a high detent, BottomSheetBehavior fires onSlide
|
|
57
|
-
// events that conflict with our manual alpha animator, causing the backdrop to flash.
|
|
58
|
-
if (isTransitionAnimationRunning) {
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
val fraction = if (slideOffset >= 0) 1f else 1f + slideOffset
|
|
63
|
-
dimmingView.alpha = fraction * maxAlpha
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
private fun attachDimmingViewOverNativeTouchOutside() {
|
|
70
|
-
val coordinator = dialog.findViewById<CoordinatorLayout>(com.google.android.material.R.id.coordinator)
|
|
71
|
-
val bottomSheetView = dialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet)
|
|
72
|
-
|
|
73
|
-
if (coordinator != null && dimmingView.parent == null && bottomSheetView != null) {
|
|
74
|
-
val sheetIndex = coordinator.indexOfChild(bottomSheetView)
|
|
75
|
-
if (sheetIndex >= 0) {
|
|
76
|
-
coordinator.addView(dimmingView, sheetIndex)
|
|
77
|
-
} else {
|
|
78
|
-
Log.e(TAG, "[RNScreens] BottomSheetView not found! Falling back to bottom index.")
|
|
79
|
-
coordinator.addView(dimmingView, 0)
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
companion object {
|
|
85
|
-
const val TAG = "DimmingViewManager"
|
|
86
|
-
|
|
87
|
-
private const val MAX_ALPHA = 0.3f
|
|
88
|
-
}
|
|
89
|
-
}
|
package/android/src/main/java/com/swmansion/rnscreens/modals/dimmingview/DimmingViewPointerEvents.kt
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.modals.dimmingview
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.uimanager.PointerEvents
|
|
4
|
-
import com.facebook.react.uimanager.ReactPointerEventsView
|
|
5
|
-
|
|
6
|
-
internal class DimmingViewPointerEventsImpl(
|
|
7
|
-
val dimmingView: DimmingView,
|
|
8
|
-
) : ReactPointerEventsView {
|
|
9
|
-
override val pointerEvents: PointerEvents
|
|
10
|
-
get() = if (dimmingView.blockGestures) PointerEvents.AUTO else PointerEvents.NONE
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
internal class DimmingViewPointerEventsProxy(
|
|
14
|
-
var pointerEventsImpl: DimmingViewPointerEventsImpl?,
|
|
15
|
-
) : ReactPointerEventsView {
|
|
16
|
-
override val pointerEvents: PointerEvents
|
|
17
|
-
get() = pointerEventsImpl?.pointerEvents ?: PointerEvents.NONE
|
|
18
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
package com.swmansion.rnscreens.stack.header.toolbar
|
|
2
|
-
|
|
3
|
-
import android.util.Log
|
|
4
|
-
import com.google.android.material.appbar.MaterialToolbar
|
|
5
|
-
import com.swmansion.rnscreens.stack.header.toolbar.model.StackHeaderToolbarMenuGroupMetadata
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Owns toolbar-menu selection state (id map + group metadata) and applies
|
|
9
|
-
* group-item checked-state changes.
|
|
10
|
-
*/
|
|
11
|
-
internal class StackHeaderToolbarMenuSelectionController {
|
|
12
|
-
internal var forwardIdMap: Map<String, Int> = emptyMap()
|
|
13
|
-
private set
|
|
14
|
-
|
|
15
|
-
private var groupMetadata: StackHeaderToolbarMenuGroupMetadata = StackHeaderToolbarMenuGroupMetadata.EMPTY
|
|
16
|
-
|
|
17
|
-
internal fun setMenuMaps(
|
|
18
|
-
forwardIdMap: Map<String, Int>,
|
|
19
|
-
groupMetadata: StackHeaderToolbarMenuGroupMetadata,
|
|
20
|
-
) {
|
|
21
|
-
this.forwardIdMap = forwardIdMap
|
|
22
|
-
this.groupMetadata = groupMetadata
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
internal fun clear() {
|
|
26
|
-
forwardIdMap = emptyMap()
|
|
27
|
-
groupMetadata = StackHeaderToolbarMenuGroupMetadata.EMPTY
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Mutates the checked state of [itemId] within its group and returns the id of the group
|
|
32
|
-
* whose selection changed, or `null` when nothing changed (the item is not in a group, an
|
|
33
|
-
* invalid attempt to uncheck a single-selection item, or the item was already in the
|
|
34
|
-
* target state). Does not emit — callers decide when to emit so that batched updates can
|
|
35
|
-
* coalesce into one event per group.
|
|
36
|
-
*/
|
|
37
|
-
internal fun applyGroupItemStateChange(
|
|
38
|
-
toolbar: MaterialToolbar,
|
|
39
|
-
itemId: String,
|
|
40
|
-
explicitCheckedValue: Boolean? = null,
|
|
41
|
-
): String? {
|
|
42
|
-
val groupId = groupMetadata.itemGroupMap[itemId] ?: return null
|
|
43
|
-
val singleSelection = groupMetadata.groupSingleSelection[groupId] ?: return null
|
|
44
|
-
val intId = forwardIdMap[itemId] ?: return null
|
|
45
|
-
val menuItem = toolbar.menu.findItem(intId) ?: return null
|
|
46
|
-
|
|
47
|
-
if (singleSelection && explicitCheckedValue == false) {
|
|
48
|
-
Log.w(
|
|
49
|
-
TAG,
|
|
50
|
-
"[RNScreens] Cannot uncheck item '$itemId' in single-selection group '$groupId'. " +
|
|
51
|
-
"Check a different item instead.",
|
|
52
|
-
)
|
|
53
|
-
return null
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
val newChecked =
|
|
57
|
-
if (singleSelection) {
|
|
58
|
-
true
|
|
59
|
-
} else {
|
|
60
|
-
explicitCheckedValue ?: !menuItem.isChecked
|
|
61
|
-
}
|
|
62
|
-
if (menuItem.isChecked == newChecked) return null
|
|
63
|
-
menuItem.isChecked = newChecked
|
|
64
|
-
|
|
65
|
-
return groupId
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
internal fun collectSelectedIds(
|
|
69
|
-
toolbar: MaterialToolbar,
|
|
70
|
-
groupId: String,
|
|
71
|
-
): List<String> =
|
|
72
|
-
groupMetadata
|
|
73
|
-
.groupMemberItems[groupId]
|
|
74
|
-
.orEmpty()
|
|
75
|
-
.filter { memberId ->
|
|
76
|
-
val intId = forwardIdMap[memberId] ?: return@filter false
|
|
77
|
-
toolbar.menu.findItem(intId)?.isChecked == true
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
companion object {
|
|
81
|
-
private const val TAG = "StackHeaderToolbarMenuSelectionController"
|
|
82
|
-
}
|
|
83
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#if defined(__cplusplus)
|
|
4
|
-
|
|
5
|
-
#import <react/renderer/components/rnscreens/Props.h>
|
|
6
|
-
#import "RNSHeaderItemPlacement.h"
|
|
7
|
-
#import "RNSHeaderItemSpacerPlacement.h"
|
|
8
|
-
#import "RNSStackScreenComponentView.h"
|
|
9
|
-
#import "always_false.h"
|
|
10
|
-
|
|
11
|
-
namespace rnscreens::conversion {
|
|
12
|
-
|
|
13
|
-
template <typename TargetType, typename InputType>
|
|
14
|
-
TargetType convert(InputType) {
|
|
15
|
-
static_assert(
|
|
16
|
-
rnscreens::always_false<TargetType>::value,
|
|
17
|
-
"[RNScreens] Missing template specialisation for demanded types!");
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
template <>
|
|
21
|
-
RNSStackScreenActivityMode convert(react::RNSStackScreenActivityMode mode);
|
|
22
|
-
|
|
23
|
-
template <>
|
|
24
|
-
RNSHeaderItemPlacement convert(react::RNSStackHeaderItemIOSPlacement placement);
|
|
25
|
-
|
|
26
|
-
template <>
|
|
27
|
-
RNSHeaderItemSpacerPlacement convert(
|
|
28
|
-
react::RNSStackHeaderItemSpacerIOSPlacement placement);
|
|
29
|
-
|
|
30
|
-
}; // namespace rnscreens::conversion
|
|
31
|
-
|
|
32
|
-
#endif // defined(__cplusplus)
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
#import "RNSConversions-Stack.h"
|
|
2
|
-
|
|
3
|
-
namespace rnscreens::conversion {
|
|
4
|
-
|
|
5
|
-
namespace react = facebook::react;
|
|
6
|
-
|
|
7
|
-
template <>
|
|
8
|
-
RNSStackScreenActivityMode convert(react::RNSStackScreenActivityMode mode)
|
|
9
|
-
{
|
|
10
|
-
return static_cast<RNSStackScreenActivityMode>(mode);
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
template <>
|
|
14
|
-
RNSHeaderItemPlacement convert(react::RNSStackHeaderItemIOSPlacement placement)
|
|
15
|
-
{
|
|
16
|
-
switch (placement) {
|
|
17
|
-
case react::RNSStackHeaderItemIOSPlacement::Leading:
|
|
18
|
-
return RNSHeaderItemPlacementLeading;
|
|
19
|
-
case react::RNSStackHeaderItemIOSPlacement::Trailing:
|
|
20
|
-
return RNSHeaderItemPlacementTrailing;
|
|
21
|
-
case react::RNSStackHeaderItemIOSPlacement::Title:
|
|
22
|
-
return RNSHeaderItemPlacementTitle;
|
|
23
|
-
case react::RNSStackHeaderItemIOSPlacement::Subtitle:
|
|
24
|
-
return RNSHeaderItemPlacementSubtitle;
|
|
25
|
-
case react::RNSStackHeaderItemIOSPlacement::LargeSubtitle:
|
|
26
|
-
return RNSHeaderItemPlacementLargeSubtitle;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
template <>
|
|
31
|
-
RNSHeaderItemSpacerPlacement convert(react::RNSStackHeaderItemSpacerIOSPlacement placement)
|
|
32
|
-
{
|
|
33
|
-
switch (placement) {
|
|
34
|
-
case react::RNSStackHeaderItemSpacerIOSPlacement::Leading:
|
|
35
|
-
return RNSHeaderItemSpacerPlacementLeading;
|
|
36
|
-
case react::RNSStackHeaderItemSpacerIOSPlacement::Trailing:
|
|
37
|
-
return RNSHeaderItemSpacerPlacementTrailing;
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
}; // namespace rnscreens::conversion
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#if defined(__cplusplus)
|
|
4
|
-
|
|
5
|
-
namespace rnscreens {
|
|
6
|
-
|
|
7
|
-
namespace do_not_use {
|
|
8
|
-
|
|
9
|
-
/// This is a marker type, that should never be instantiated.
|
|
10
|
-
/// It is here to assert that there is a valid template specialization for
|
|
11
|
-
/// `always_false` that can return `true`. Check out this article:
|
|
12
|
-
/// https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2593r0.html#valid-workaround
|
|
13
|
-
struct DoNotUseThis {
|
|
14
|
-
DoNotUseThis() = delete;
|
|
15
|
-
DoNotUseThis(const DoNotUseThis &other) = delete;
|
|
16
|
-
DoNotUseThis(const DoNotUseThis &&other) = delete;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
}; // namespace do_not_use
|
|
20
|
-
|
|
21
|
-
/// Workaround for `static_assert(false)`. See:
|
|
22
|
-
/// https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2593r0.html#valid-workaround
|
|
23
|
-
/// https://stackoverflow.com/questions/14637356/static-assert-fails-compilation-even-though-template-function-is-called-nowhere/14637534#14637534
|
|
24
|
-
template <typename T>
|
|
25
|
-
struct always_false : std::false_type {};
|
|
26
|
-
template <>
|
|
27
|
-
struct always_false<do_not_use::DoNotUseThis> : std::true_type {};
|
|
28
|
-
|
|
29
|
-
}; // namespace rnscreens
|
|
30
|
-
|
|
31
|
-
#endif // defined(__cplusplus)
|
|
File without changes
|