UNPKG

react-native-screens

Version:
174 lines 6.6 kB
import type { NativeSyntheticEvent, StyleProp, ViewProps, ViewStyle } from 'react-native'; import type { TabsScreenPropsIOS } from './TabsScreen.ios.types'; import type { TabsScreenPropsAndroid } from './TabsScreen.android.types'; import type { InterfaceOrientation } from '../../shared/types'; export type EmptyObject = Record<string, never>; export type TabsScreenEventHandler<T> = (event: NativeSyntheticEvent<T>) => void; export type TabsScreenOrientation = InterfaceOrientation | 'inherit'; export interface TabsScreenPropsBase { /** * @summary Identifies screen, e.g. when receiving onNativeFocusChange event. * * @platform android, ios */ screenKey: string; /** * @summary When set to `true`, prevents native tab selection for this screen. * * @default false * * @platform android, ios */ preventNativeSelection?: boolean | undefined; children?: ViewProps['children'] | undefined; style?: StyleProp<Pick<ViewStyle, 'backgroundColor'>> | undefined; /** * @summary Title of the tab screen, displayed in the tab bar item. * * @platform android, ios */ title?: string | undefined; /** * @summary Specifies content of tab bar item badge. * * On iOS, badge is displayed as regular string. * * On Android, the value is interpreted in the following order: * - if the string can be parsed to integer, displays the value as a number; * - otherwise if the string is empty, displays "small dot" badge; * - otherwise, displays the value as a text. * * @platform android, ios */ badgeValue?: string | undefined; /** * @summary Specifies which special effects (also known as microinteractions) * are enabled for the tab screen. * * For repeated tab selection (selecting already focused tab bar item), * there are 2 supported special effects: * - `popToRoot` - when Stack is nested inside tab screen and repeated * selection is detected, the Stack will pop to root screen, * - `scrollToTop` - when there is a ScrollView in first descendant * chain from tab screen and repeated selection is detected, ScrollView * will be scrolled to top. * * `popToRoot` has priority over `scrollToTop`. * * @default All special effects are enabled by default. * * @platform android, ios */ specialEffects?: { repeatedTabSelection?: { /** * @default true */ popToRoot?: boolean | undefined; /** * @default true */ scrollToTop?: boolean | undefined; } | undefined; } | undefined; /** * @summary Specifies supported orientations for the tab screen. * * Procedure for determining supported orientations: * 1. Traversal initiates from the root component and moves to the * deepest child possible. * 2. Components are queried for their supported orientations: * - if `orientation` is explicitly set (e.g., `portrait`, * `landscape`), it is immediately used, * - if `orientation` is set to `inherit`, the parent component * is queried. * * Note that: * - some components (like `SplitHost`) may choose not to query * its child components, * - Stack v4 implementation **ALWAYS** returns some supported * orientations (`allButUpsideDown` by default), overriding * orientation from tab screen. * * The following values are currently supported: * * - `inherit` - tab screen supports the same orientations as parent * component, * - `all` - tab screen supports all orientations, * - `allButUpsideDown` - tab screen supports all but the upside-down * portrait interface orientation, * - `portrait` - tab screen supports both portrait-up and portrait-down * interface orientations, * - 'portraitUp' - tab screen supports a portrait-up interface * orientation, * - `portraitDown` - tab screen supports a portrait-down interface * orientation, * - `landscape` - tab screen supports both landscape-left and * landscape-right interface orientations, * - `landscapeLeft` - tab screen supports landscape-left interface * orientaion, * - `landscapeRight` - tab screen supports landscape-right interface * orientaion. * * The supported values (apart from `inherit`, `portrait`, `portraitUp`, * `portraitDown`) correspond to the official UIKit documentation: * * @see {@link https://developer.apple.com/documentation/uikit/uiinterfaceorientationmask|UIInterfaceOrientationMask} * * @default inherit * * @platform ios */ orientation?: TabsScreenOrientation | undefined; /** * @summary testID for the TabsScreen */ testID?: string | undefined; /** * @summary accessibilityLabel for the TabsScreen */ accessibilityLabel?: string | undefined; /** * @summary testID for the TabBarItem */ tabBarItemTestID?: string | undefined; /** * @summary accessibilityLabel for the TabBarItem * * @supported iOS, Android API level >=26 */ tabBarItemAccessibilityLabel?: string | undefined; /** * @summary A callback that gets invoked when the tab screen will appear. * This is called as soon as the transition begins. * * @platform android, ios */ onWillAppear?: TabsScreenEventHandler<EmptyObject> | undefined; /** * @summary A callback that gets invoked when the tab screen did appear. * This is called as soon as the transition ends. * * @platform android, ios */ onDidAppear?: TabsScreenEventHandler<EmptyObject> | undefined; /** * @summary A callback that gets invoked when the tab screen will disappear. * This is called as soon as the transition begins. * * @platform android, ios */ onWillDisappear?: TabsScreenEventHandler<EmptyObject> | undefined; /** * @summary A callback that gets invoked when the tab screen did disappear. * This is called as soon as the transition ends. * * @platform android, ios */ onDidDisappear?: TabsScreenEventHandler<EmptyObject> | undefined; } export interface TabsScreenProps extends TabsScreenPropsBase { ios?: TabsScreenPropsIOS | undefined; android?: TabsScreenPropsAndroid | undefined; } //# sourceMappingURL=TabsScreen.types.d.ts.map