@react-navigation/material-top-tabs 7.0.0-alpha.0 → 7.0.0-alpha.10
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/lib/commonjs/index.js +13 -7
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/navigators/createMaterialTopTabNavigator.js +11 -9
- package/lib/commonjs/navigators/createMaterialTopTabNavigator.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/TabAnimationContext.js +11 -0
- package/lib/commonjs/utils/TabAnimationContext.js.map +1 -0
- package/lib/commonjs/utils/useTabAnimation.js +18 -0
- package/lib/commonjs/utils/useTabAnimation.js.map +1 -0
- package/lib/commonjs/views/MaterialTopTabBar.js +13 -8
- package/lib/commonjs/views/MaterialTopTabBar.js.map +1 -1
- package/lib/commonjs/views/MaterialTopTabView.js +20 -12
- package/lib/commonjs/views/MaterialTopTabView.js.map +1 -1
- package/lib/module/index.js +8 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigators/createMaterialTopTabNavigator.js +7 -3
- package/lib/module/navigators/createMaterialTopTabNavigator.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/TabAnimationContext.js +3 -0
- package/lib/module/utils/TabAnimationContext.js.map +1 -0
- package/lib/module/utils/useTabAnimation.js +10 -0
- package/lib/module/utils/useTabAnimation.js.map +1 -0
- package/lib/module/views/MaterialTopTabBar.js +11 -6
- package/lib/module/views/MaterialTopTabBar.js.map +1 -1
- package/lib/module/views/MaterialTopTabView.js +18 -9
- package/lib/module/views/MaterialTopTabView.js.map +1 -1
- package/lib/typescript/src/index.d.ts +7 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/navigators/createMaterialTopTabNavigator.d.ts +6 -6
- package/lib/typescript/src/navigators/createMaterialTopTabNavigator.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +4 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/TabAnimationContext.d.ts +4 -0
- package/lib/typescript/src/utils/TabAnimationContext.d.ts.map +1 -0
- package/lib/typescript/src/utils/useTabAnimation.d.ts +2 -0
- package/lib/typescript/src/utils/useTabAnimation.d.ts.map +1 -0
- package/lib/typescript/src/views/MaterialTopTabBar.d.ts +2 -2
- package/lib/typescript/src/views/MaterialTopTabBar.d.ts.map +1 -1
- package/lib/typescript/src/views/MaterialTopTabView.d.ts +3 -3
- package/lib/typescript/src/views/MaterialTopTabView.d.ts.map +1 -1
- package/package.json +17 -17
- package/src/index.tsx +8 -3
- package/src/navigators/createMaterialTopTabNavigator.tsx +11 -7
- package/src/types.tsx +7 -2
- package/src/utils/TabAnimationContext.tsx +7 -0
- package/src/utils/useTabAnimation.tsx +15 -0
- package/src/views/MaterialTopTabBar.tsx +14 -10
- package/src/views/MaterialTopTabView.tsx +19 -8
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
import { CommonActions, useTheme } from '@react-navigation/native';
|
|
2
|
+
import { CommonActions, useLocale, useTheme } from '@react-navigation/native';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { TabView } from 'react-native-tab-view';
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
import { TabAnimationContext } from '../utils/TabAnimationContext';
|
|
6
|
+
import { MaterialTopTabBar } from './MaterialTopTabBar';
|
|
7
|
+
export function MaterialTopTabView(_ref) {
|
|
7
8
|
let {
|
|
8
9
|
tabBar = props => /*#__PURE__*/React.createElement(MaterialTopTabBar, props),
|
|
9
10
|
state,
|
|
@@ -15,6 +16,9 @@ export default function MaterialTopTabView(_ref) {
|
|
|
15
16
|
const {
|
|
16
17
|
colors
|
|
17
18
|
} = useTheme();
|
|
19
|
+
const {
|
|
20
|
+
direction
|
|
21
|
+
} = useLocale();
|
|
18
22
|
const renderTabBar = props => {
|
|
19
23
|
return tabBar({
|
|
20
24
|
...props,
|
|
@@ -34,24 +38,28 @@ export default function MaterialTopTabView(_ref) {
|
|
|
34
38
|
},
|
|
35
39
|
renderScene: _ref2 => {
|
|
36
40
|
let {
|
|
37
|
-
route
|
|
41
|
+
route,
|
|
42
|
+
position
|
|
38
43
|
} = _ref2;
|
|
39
|
-
return
|
|
44
|
+
return /*#__PURE__*/React.createElement(TabAnimationContext.Provider, {
|
|
45
|
+
value: {
|
|
46
|
+
position
|
|
47
|
+
}
|
|
48
|
+
}, descriptors[route.key].render());
|
|
40
49
|
},
|
|
41
50
|
navigationState: state,
|
|
42
51
|
renderTabBar: renderTabBar,
|
|
43
52
|
renderLazyPlaceholder: _ref3 => {
|
|
44
|
-
var _descriptors$route$ke, _descriptors$route$ke2;
|
|
45
53
|
let {
|
|
46
54
|
route
|
|
47
55
|
} = _ref3;
|
|
48
|
-
return
|
|
56
|
+
return descriptors[route.key].options.lazyPlaceholder?.() ?? null;
|
|
49
57
|
},
|
|
50
58
|
lazy: _ref4 => {
|
|
51
59
|
let {
|
|
52
60
|
route
|
|
53
61
|
} = _ref4;
|
|
54
|
-
return descriptors[route.key].options.lazy === true;
|
|
62
|
+
return descriptors[route.key].options.lazy === true && !state.preloadedRouteKeys.includes(route.key);
|
|
55
63
|
},
|
|
56
64
|
lazyPreloadDistance: focusedOptions.lazyPreloadDistance,
|
|
57
65
|
swipeEnabled: focusedOptions.swipeEnabled,
|
|
@@ -64,7 +72,8 @@ export default function MaterialTopTabView(_ref) {
|
|
|
64
72
|
}),
|
|
65
73
|
sceneContainerStyle: [{
|
|
66
74
|
backgroundColor: colors.background
|
|
67
|
-
}, sceneContainerStyle]
|
|
75
|
+
}, sceneContainerStyle],
|
|
76
|
+
direction: direction
|
|
68
77
|
}));
|
|
69
78
|
}
|
|
70
79
|
//# sourceMappingURL=MaterialTopTabView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CommonActions","useTheme","React","TabView","MaterialTopTabBar","MaterialTopTabView","tabBar","props","state","navigation","descriptors","sceneContainerStyle","rest","colors","renderTabBar","focusedOptions","routes","index","key","options","route","dispatch","navigate","target","render","lazyPlaceholder","lazy","lazyPreloadDistance","swipeEnabled","animationEnabled","emit","type","backgroundColor","background"],"sourceRoot":"
|
|
1
|
+
{"version":3,"names":["CommonActions","useLocale","useTheme","React","TabView","TabAnimationContext","MaterialTopTabBar","MaterialTopTabView","_ref","tabBar","props","createElement","state","navigation","descriptors","sceneContainerStyle","rest","colors","direction","renderTabBar","focusedOptions","routes","index","key","options","_extends","onIndexChange","route","dispatch","navigate","target","renderScene","_ref2","position","Provider","value","render","navigationState","renderLazyPlaceholder","_ref3","lazyPlaceholder","lazy","_ref4","preloadedRouteKeys","includes","lazyPreloadDistance","swipeEnabled","animationEnabled","onSwipeStart","emit","type","onSwipeEnd","backgroundColor","background"],"sourceRoot":"../../../src","sources":["views/MaterialTopTabView.tsx"],"mappings":"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"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Navigators
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
4
|
+
export { createMaterialTopTabNavigator } from './navigators/createMaterialTopTabNavigator';
|
|
5
5
|
/**
|
|
6
6
|
* Views
|
|
7
7
|
*/
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
8
|
+
export { MaterialTopTabBar } from './views/MaterialTopTabBar';
|
|
9
|
+
export { MaterialTopTabView } from './views/MaterialTopTabView';
|
|
10
|
+
/**
|
|
11
|
+
* Utilities
|
|
12
|
+
*/
|
|
13
|
+
export { useTabAnimation } from './utils/useTabAnimation';
|
|
10
14
|
/**
|
|
11
15
|
* Types
|
|
12
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAE3F;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;GAEG;AACH,YAAY,EACV,sBAAsB,EACtB,gCAAgC,EAChC,+BAA+B,EAC/B,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,SAAS,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
1
|
+
import { type DefaultNavigatorOptions, type ParamListBase, type TabNavigationState, type TabRouterOptions } from '@react-navigation/native';
|
|
2
|
+
import * as React from 'react';
|
|
3
3
|
import type { MaterialTopTabNavigationConfig, MaterialTopTabNavigationEventMap, MaterialTopTabNavigationOptions } from '../types';
|
|
4
4
|
type Props = DefaultNavigatorOptions<ParamListBase, TabNavigationState<ParamListBase>, MaterialTopTabNavigationOptions, MaterialTopTabNavigationEventMap> & TabRouterOptions & MaterialTopTabNavigationConfig;
|
|
5
|
-
declare function MaterialTopTabNavigator({ id, initialRouteName, backBehavior, children, screenListeners, screenOptions, ...rest }: Props): JSX.Element;
|
|
6
|
-
declare const
|
|
5
|
+
declare function MaterialTopTabNavigator({ id, initialRouteName, backBehavior, children, layout, screenListeners, screenOptions, screenLayout, ...rest }: Props): React.JSX.Element;
|
|
6
|
+
export declare const createMaterialTopTabNavigator: {
|
|
7
7
|
<ParamList extends ParamListBase>(): import("@react-navigation/native").TypedNavigator<ParamList, TabNavigationState<ParamListBase>, MaterialTopTabNavigationOptions, MaterialTopTabNavigationEventMap, typeof MaterialTopTabNavigator>;
|
|
8
|
-
<ParamList_1 extends ParamListBase, Config extends import("
|
|
8
|
+
<ParamList_1 extends ParamListBase, Config extends import("@react-navigation/core/lib/typescript/src/StaticNavigation").StaticConfig<ParamList_1, TabNavigationState<ParamListBase>, MaterialTopTabNavigationOptions, MaterialTopTabNavigationEventMap, typeof MaterialTopTabNavigator>>(config: Config): import("@react-navigation/native").TypedNavigator<ParamList_1, TabNavigationState<ParamListBase>, MaterialTopTabNavigationOptions, MaterialTopTabNavigationEventMap, typeof MaterialTopTabNavigator> & {
|
|
9
9
|
config: Config;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
-
export
|
|
12
|
+
export {};
|
|
13
13
|
//# sourceMappingURL=createMaterialTopTabNavigator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMaterialTopTabNavigator.d.ts","sourceRoot":"","sources":["../../../../src/navigators/createMaterialTopTabNavigator.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createMaterialTopTabNavigator.d.ts","sourceRoot":"","sources":["../../../../src/navigators/createMaterialTopTabNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAElB,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,8BAA8B,EAC9B,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,UAAU,CAAC;AAGlB,KAAK,KAAK,GAAG,uBAAuB,CAClC,aAAa,EACb,kBAAkB,CAAC,aAAa,CAAC,EACjC,+BAA+B,EAC/B,gCAAgC,CACjC,GACC,gBAAgB,GAChB,8BAA8B,CAAC;AAEjC,iBAAS,uBAAuB,CAAC,EAC/B,EAAE,EACF,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,eAAe,EACf,aAAa,EACb,YAAY,EACZ,GAAG,IAAI,EACR,EAAE,KAAK,qBA6BP;AAED,eAAO,MAAM,6BAA6B;;;;;CAKhB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Descriptor, NavigationHelpers, NavigationProp, ParamListBase, Route, RouteProp, TabActionHelpers, TabNavigationState } from '@react-navigation/native';
|
|
2
2
|
import type React from 'react';
|
|
3
|
-
import type { PressableAndroidRippleConfig, StyleProp, TextStyle, ViewStyle } from 'react-native';
|
|
3
|
+
import type { Animated, PressableAndroidRippleConfig, StyleProp, TextStyle, ViewStyle } from 'react-native';
|
|
4
4
|
import type { SceneRendererProps, TabBar, TabViewProps } from 'react-native-tab-view';
|
|
5
5
|
export type MaterialTopTabNavigationEventMap = {
|
|
6
6
|
/**
|
|
@@ -204,4 +204,7 @@ export type MaterialTopTabBarProps = SceneRendererProps & {
|
|
|
204
204
|
navigation: NavigationHelpers<ParamListBase, MaterialTopTabNavigationEventMap>;
|
|
205
205
|
descriptors: MaterialTopTabDescriptorMap;
|
|
206
206
|
};
|
|
207
|
+
export type MaterialTopTabAnimationContext = {
|
|
208
|
+
position: Animated.AnimatedInterpolation<number>;
|
|
209
|
+
};
|
|
207
210
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabAnimationContext.d.ts","sourceRoot":"","sources":["../../../../src/utils/TabAnimationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAC;AAE/D,eAAO,MAAM,mBAAmB,2DAEpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTabAnimation.d.ts","sourceRoot":"","sources":["../../../../src/utils/useTabAnimation.tsx"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,sDAU9B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
import type { MaterialTopTabBarProps } from '../types';
|
|
3
|
-
export
|
|
3
|
+
export declare function MaterialTopTabBar({ state, navigation, descriptors, ...rest }: MaterialTopTabBarProps): React.JSX.Element;
|
|
4
4
|
//# sourceMappingURL=MaterialTopTabBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaterialTopTabBar.d.ts","sourceRoot":"","sources":["../../../../src/views/MaterialTopTabBar.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"MaterialTopTabBar.d.ts","sourceRoot":"","sources":["../../../../src/views/MaterialTopTabBar.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,UAAU,EACV,WAAW,EACX,GAAG,IAAI,EACR,EAAE,sBAAsB,qBA2HxB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
1
|
+
import { type ParamListBase, type TabNavigationState } from '@react-navigation/native';
|
|
2
|
+
import * as React from 'react';
|
|
3
3
|
import type { MaterialTopTabDescriptorMap, MaterialTopTabNavigationConfig, MaterialTopTabNavigationHelpers } from '../types';
|
|
4
4
|
type Props = MaterialTopTabNavigationConfig & {
|
|
5
5
|
state: TabNavigationState<ParamListBase>;
|
|
6
6
|
navigation: MaterialTopTabNavigationHelpers;
|
|
7
7
|
descriptors: MaterialTopTabDescriptorMap;
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export declare function MaterialTopTabView({ tabBar, state, navigation, descriptors, sceneContainerStyle, ...rest }: Props): React.JSX.Element;
|
|
10
10
|
export {};
|
|
11
11
|
//# sourceMappingURL=MaterialTopTabView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaterialTopTabView.d.ts","sourceRoot":"","sources":["../../../../src/views/MaterialTopTabView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MaterialTopTabView.d.ts","sourceRoot":"","sources":["../../../../src/views/MaterialTopTabView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,kBAAkB,EAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAEV,2BAA2B,EAC3B,8BAA8B,EAC9B,+BAA+B,EAChC,MAAM,UAAU,CAAC;AAIlB,KAAK,KAAK,GAAG,8BAA8B,GAAG;IAC5C,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACzC,UAAU,EAAE,+BAA+B,CAAC;IAC5C,WAAW,EAAE,2BAA2B,CAAC;CAC1C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,MAA4E,EAC5E,KAAK,EACL,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,GAAG,IAAI,EACR,EAAE,KAAK,qBAoDP"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/material-top-tabs",
|
|
3
3
|
"description": "Integration for the animated tab view component from react-native-tab-view",
|
|
4
|
-
"version": "7.0.0-alpha.
|
|
4
|
+
"version": "7.0.0-alpha.10",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native-component",
|
|
7
7
|
"react-component",
|
|
@@ -41,26 +41,26 @@
|
|
|
41
41
|
"clean": "del lib"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
+
"@react-navigation/elements": "^2.0.0-alpha.8",
|
|
44
45
|
"color": "^4.2.3",
|
|
45
|
-
"react-native-tab-view": "^
|
|
46
|
+
"react-native-tab-view": "^4.0.0-alpha.5"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
48
|
-
"@react-navigation/native": "^7.0.0-alpha.
|
|
49
|
-
"@testing-library/react-native": "^
|
|
50
|
-
"@types/react": "~18.
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"react": "
|
|
54
|
-
"react-native": "0.
|
|
55
|
-
"react-native-
|
|
56
|
-
"
|
|
57
|
-
"typescript": "^4.9.4"
|
|
49
|
+
"@react-navigation/native": "^7.0.0-alpha.10",
|
|
50
|
+
"@testing-library/react-native": "^12.4.3",
|
|
51
|
+
"@types/react": "~18.2.45",
|
|
52
|
+
"del-cli": "^5.1.0",
|
|
53
|
+
"react": "18.2.0",
|
|
54
|
+
"react-native": "0.73.2",
|
|
55
|
+
"react-native-builder-bob": "^0.23.2",
|
|
56
|
+
"react-native-pager-view": "6.2.3",
|
|
57
|
+
"typescript": "^5.3.3"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@react-navigation/native": "^
|
|
61
|
-
"react": "
|
|
62
|
-
"react-native": "
|
|
63
|
-
"react-native-pager-view": ">=
|
|
60
|
+
"@react-navigation/native": "^7.0.0-alpha.10",
|
|
61
|
+
"react": ">= 18.2.0",
|
|
62
|
+
"react-native": ">= 0.72.0",
|
|
63
|
+
"react-native-pager-view": ">= 6.0.0"
|
|
64
64
|
},
|
|
65
65
|
"react-native-builder-bob": {
|
|
66
66
|
"source": "src",
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
]
|
|
77
77
|
]
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "38117089fff9341c72e0834ca8ec237e8186b63c"
|
|
80
80
|
}
|
package/src/index.tsx
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Navigators
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
4
|
+
export { createMaterialTopTabNavigator } from './navigators/createMaterialTopTabNavigator';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Views
|
|
8
8
|
*/
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
9
|
+
export { MaterialTopTabBar } from './views/MaterialTopTabBar';
|
|
10
|
+
export { MaterialTopTabView } from './views/MaterialTopTabView';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Utilities
|
|
14
|
+
*/
|
|
15
|
+
export { useTabAnimation } from './utils/useTabAnimation';
|
|
11
16
|
|
|
12
17
|
/**
|
|
13
18
|
* Types
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createNavigatorFactory,
|
|
3
|
-
DefaultNavigatorOptions,
|
|
4
|
-
ParamListBase,
|
|
5
|
-
TabActionHelpers,
|
|
6
|
-
TabNavigationState,
|
|
3
|
+
type DefaultNavigatorOptions,
|
|
4
|
+
type ParamListBase,
|
|
5
|
+
type TabActionHelpers,
|
|
6
|
+
type TabNavigationState,
|
|
7
7
|
TabRouter,
|
|
8
|
-
TabRouterOptions,
|
|
8
|
+
type TabRouterOptions,
|
|
9
9
|
useNavigationBuilder,
|
|
10
10
|
} from '@react-navigation/native';
|
|
11
11
|
import * as React from 'react';
|
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
MaterialTopTabNavigationEventMap,
|
|
16
16
|
MaterialTopTabNavigationOptions,
|
|
17
17
|
} from '../types';
|
|
18
|
-
import MaterialTopTabView from '../views/MaterialTopTabView';
|
|
18
|
+
import { MaterialTopTabView } from '../views/MaterialTopTabView';
|
|
19
19
|
|
|
20
20
|
type Props = DefaultNavigatorOptions<
|
|
21
21
|
ParamListBase,
|
|
@@ -31,8 +31,10 @@ function MaterialTopTabNavigator({
|
|
|
31
31
|
initialRouteName,
|
|
32
32
|
backBehavior,
|
|
33
33
|
children,
|
|
34
|
+
layout,
|
|
34
35
|
screenListeners,
|
|
35
36
|
screenOptions,
|
|
37
|
+
screenLayout,
|
|
36
38
|
...rest
|
|
37
39
|
}: Props) {
|
|
38
40
|
const { state, descriptors, navigation, NavigationContent } =
|
|
@@ -47,8 +49,10 @@ function MaterialTopTabNavigator({
|
|
|
47
49
|
initialRouteName,
|
|
48
50
|
backBehavior,
|
|
49
51
|
children,
|
|
52
|
+
layout,
|
|
50
53
|
screenListeners,
|
|
51
54
|
screenOptions,
|
|
55
|
+
screenLayout,
|
|
52
56
|
});
|
|
53
57
|
|
|
54
58
|
return (
|
|
@@ -63,7 +67,7 @@ function MaterialTopTabNavigator({
|
|
|
63
67
|
);
|
|
64
68
|
}
|
|
65
69
|
|
|
66
|
-
export
|
|
70
|
+
export const createMaterialTopTabNavigator = createNavigatorFactory<
|
|
67
71
|
TabNavigationState<ParamListBase>,
|
|
68
72
|
MaterialTopTabNavigationOptions,
|
|
69
73
|
MaterialTopTabNavigationEventMap,
|
package/src/types.tsx
CHANGED
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
} from '@react-navigation/native';
|
|
11
11
|
import type React from 'react';
|
|
12
12
|
import type {
|
|
13
|
+
Animated,
|
|
13
14
|
PressableAndroidRippleConfig,
|
|
14
15
|
StyleProp,
|
|
15
16
|
TextStyle,
|
|
@@ -49,7 +50,7 @@ export type MaterialTopTabNavigationHelpers = NavigationHelpers<
|
|
|
49
50
|
export type MaterialTopTabNavigationProp<
|
|
50
51
|
ParamList extends ParamListBase,
|
|
51
52
|
RouteName extends keyof ParamList = keyof ParamList,
|
|
52
|
-
NavigatorID extends string | undefined = undefined
|
|
53
|
+
NavigatorID extends string | undefined = undefined,
|
|
53
54
|
> = NavigationProp<
|
|
54
55
|
ParamList,
|
|
55
56
|
RouteName,
|
|
@@ -63,7 +64,7 @@ export type MaterialTopTabNavigationProp<
|
|
|
63
64
|
export type MaterialTopTabScreenProps<
|
|
64
65
|
ParamList extends ParamListBase,
|
|
65
66
|
RouteName extends keyof ParamList = keyof ParamList,
|
|
66
|
-
NavigatorID extends string | undefined = undefined
|
|
67
|
+
NavigatorID extends string | undefined = undefined,
|
|
67
68
|
> = {
|
|
68
69
|
navigation: MaterialTopTabNavigationProp<ParamList, RouteName, NavigatorID>;
|
|
69
70
|
route: RouteProp<ParamList, RouteName>;
|
|
@@ -299,3 +300,7 @@ export type MaterialTopTabBarProps = SceneRendererProps & {
|
|
|
299
300
|
>;
|
|
300
301
|
descriptors: MaterialTopTabDescriptorMap;
|
|
301
302
|
};
|
|
303
|
+
|
|
304
|
+
export type MaterialTopTabAnimationContext = {
|
|
305
|
+
position: Animated.AnimatedInterpolation<number>;
|
|
306
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import { TabAnimationContext } from './TabAnimationContext';
|
|
4
|
+
|
|
5
|
+
export function useTabAnimation() {
|
|
6
|
+
const animation = React.useContext(TabAnimationContext);
|
|
7
|
+
|
|
8
|
+
if (animation === undefined) {
|
|
9
|
+
throw new Error(
|
|
10
|
+
"Couldn't find values for tab animation. Are you inside a screen in Material Top Tab navigator?"
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return animation;
|
|
15
|
+
}
|
|
@@ -1,23 +1,26 @@
|
|
|
1
|
+
import { Text } from '@react-navigation/elements';
|
|
1
2
|
import {
|
|
2
|
-
ParamListBase,
|
|
3
|
-
Route,
|
|
4
|
-
TabNavigationState,
|
|
3
|
+
type ParamListBase,
|
|
4
|
+
type Route,
|
|
5
|
+
type TabNavigationState,
|
|
6
|
+
useLocale,
|
|
5
7
|
useTheme,
|
|
6
8
|
} from '@react-navigation/native';
|
|
7
9
|
import Color from 'color';
|
|
8
10
|
import * as React from 'react';
|
|
9
|
-
import { StyleSheet,
|
|
11
|
+
import { StyleSheet, View } from 'react-native';
|
|
10
12
|
import { TabBar, TabBarIndicator } from 'react-native-tab-view';
|
|
11
13
|
|
|
12
14
|
import type { MaterialTopTabBarProps } from '../types';
|
|
13
15
|
|
|
14
|
-
export
|
|
16
|
+
export function MaterialTopTabBar({
|
|
15
17
|
state,
|
|
16
18
|
navigation,
|
|
17
19
|
descriptors,
|
|
18
20
|
...rest
|
|
19
21
|
}: MaterialTopTabBarProps) {
|
|
20
22
|
const { colors } = useTheme();
|
|
23
|
+
const { direction } = useLocale();
|
|
21
24
|
|
|
22
25
|
const focusedOptions = descriptors[state.routes[state.index].key].options;
|
|
23
26
|
|
|
@@ -30,6 +33,7 @@ export default function TabBarTop({
|
|
|
30
33
|
<TabBar
|
|
31
34
|
{...rest}
|
|
32
35
|
navigationState={state}
|
|
36
|
+
direction={direction}
|
|
33
37
|
scrollEnabled={focusedOptions.tabBarScrollEnabled}
|
|
34
38
|
bounces={focusedOptions.tabBarBounces}
|
|
35
39
|
activeColor={activeColor}
|
|
@@ -97,13 +101,13 @@ export default function TabBarTop({
|
|
|
97
101
|
options.tabBarLabel !== undefined
|
|
98
102
|
? options.tabBarLabel
|
|
99
103
|
: options.title !== undefined
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
? options.title
|
|
105
|
+
: (route as Route<string>).name;
|
|
102
106
|
|
|
103
107
|
if (typeof label === 'string') {
|
|
104
108
|
return (
|
|
105
109
|
<Text
|
|
106
|
-
style={[
|
|
110
|
+
style={[{ color }, styles.label, options.tabBarLabelStyle]}
|
|
107
111
|
allowFontScaling={options.tabBarAllowFontScaling}
|
|
108
112
|
>
|
|
109
113
|
{label}
|
|
@@ -115,8 +119,8 @@ export default function TabBarTop({
|
|
|
115
119
|
typeof options.tabBarLabel === 'string'
|
|
116
120
|
? options.tabBarLabel
|
|
117
121
|
: options.title !== undefined
|
|
118
|
-
|
|
119
|
-
|
|
122
|
+
? options.title
|
|
123
|
+
: route.name;
|
|
120
124
|
|
|
121
125
|
return label({ focused, color, children });
|
|
122
126
|
}}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CommonActions,
|
|
3
|
-
ParamListBase,
|
|
4
|
-
Route,
|
|
5
|
-
TabNavigationState,
|
|
3
|
+
type ParamListBase,
|
|
4
|
+
type Route,
|
|
5
|
+
type TabNavigationState,
|
|
6
|
+
useLocale,
|
|
6
7
|
useTheme,
|
|
7
8
|
} from '@react-navigation/native';
|
|
8
9
|
import * as React from 'react';
|
|
9
|
-
import { SceneRendererProps, TabView } from 'react-native-tab-view';
|
|
10
|
+
import { type SceneRendererProps, TabView } from 'react-native-tab-view';
|
|
10
11
|
|
|
11
12
|
import type {
|
|
12
13
|
MaterialTopTabBarProps,
|
|
@@ -14,7 +15,8 @@ import type {
|
|
|
14
15
|
MaterialTopTabNavigationConfig,
|
|
15
16
|
MaterialTopTabNavigationHelpers,
|
|
16
17
|
} from '../types';
|
|
17
|
-
import
|
|
18
|
+
import { TabAnimationContext } from '../utils/TabAnimationContext';
|
|
19
|
+
import { MaterialTopTabBar } from './MaterialTopTabBar';
|
|
18
20
|
|
|
19
21
|
type Props = MaterialTopTabNavigationConfig & {
|
|
20
22
|
state: TabNavigationState<ParamListBase>;
|
|
@@ -22,7 +24,7 @@ type Props = MaterialTopTabNavigationConfig & {
|
|
|
22
24
|
descriptors: MaterialTopTabDescriptorMap;
|
|
23
25
|
};
|
|
24
26
|
|
|
25
|
-
export
|
|
27
|
+
export function MaterialTopTabView({
|
|
26
28
|
tabBar = (props: MaterialTopTabBarProps) => <MaterialTopTabBar {...props} />,
|
|
27
29
|
state,
|
|
28
30
|
navigation,
|
|
@@ -31,6 +33,7 @@ export default function MaterialTopTabView({
|
|
|
31
33
|
...rest
|
|
32
34
|
}: Props) {
|
|
33
35
|
const { colors } = useTheme();
|
|
36
|
+
const { direction } = useLocale();
|
|
34
37
|
|
|
35
38
|
const renderTabBar = (props: SceneRendererProps) => {
|
|
36
39
|
return tabBar({
|
|
@@ -54,13 +57,20 @@ export default function MaterialTopTabView({
|
|
|
54
57
|
target: state.key,
|
|
55
58
|
});
|
|
56
59
|
}}
|
|
57
|
-
renderScene={({ route }) =>
|
|
60
|
+
renderScene={({ route, position }) => (
|
|
61
|
+
<TabAnimationContext.Provider value={{ position }}>
|
|
62
|
+
{descriptors[route.key].render()}
|
|
63
|
+
</TabAnimationContext.Provider>
|
|
64
|
+
)}
|
|
58
65
|
navigationState={state}
|
|
59
66
|
renderTabBar={renderTabBar}
|
|
60
67
|
renderLazyPlaceholder={({ route }) =>
|
|
61
68
|
descriptors[route.key].options.lazyPlaceholder?.() ?? null
|
|
62
69
|
}
|
|
63
|
-
lazy={({ route }) =>
|
|
70
|
+
lazy={({ route }) =>
|
|
71
|
+
descriptors[route.key].options.lazy === true &&
|
|
72
|
+
!state.preloadedRouteKeys.includes(route.key)
|
|
73
|
+
}
|
|
64
74
|
lazyPreloadDistance={focusedOptions.lazyPreloadDistance}
|
|
65
75
|
swipeEnabled={focusedOptions.swipeEnabled}
|
|
66
76
|
animationEnabled={focusedOptions.animationEnabled}
|
|
@@ -70,6 +80,7 @@ export default function MaterialTopTabView({
|
|
|
70
80
|
{ backgroundColor: colors.background },
|
|
71
81
|
sceneContainerStyle,
|
|
72
82
|
]}
|
|
83
|
+
direction={direction}
|
|
73
84
|
/>
|
|
74
85
|
);
|
|
75
86
|
}
|