mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-01-14 22:41:55 +08:00
Compare commits
13 Commits
@react-nav
...
@react-nav
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9304a8a16c | ||
|
|
51b40879bd | ||
|
|
51f4d11fdf | ||
|
|
c2aa4bb2eb | ||
|
|
199a892a6d | ||
|
|
60cb3c9ba7 | ||
|
|
6ccceaea8b | ||
|
|
d14f38b80a | ||
|
|
c481748f00 | ||
|
|
d45dbe97dc | ||
|
|
7623945f6e | ||
|
|
1dddaff45c | ||
|
|
21b397f0d6 |
@@ -6,7 +6,7 @@ beforeEach(async () => {
|
|||||||
|
|
||||||
it('loads the article page', async () => {
|
it('loads the article page', async () => {
|
||||||
expect(await page.evaluate(() => location.pathname + location.search)).toBe(
|
expect(await page.evaluate(() => location.pathname + location.search)).toBe(
|
||||||
'/link-component/Article?author=Gandalf'
|
'/link-component/article/gandalf'
|
||||||
);
|
);
|
||||||
expect(
|
expect(
|
||||||
((await page.accessibility.snapshot()) as any)?.children?.find(
|
((await page.accessibility.snapshot()) as any)?.children?.find(
|
||||||
@@ -16,24 +16,24 @@ it('loads the article page', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('goes to the album page and goes back', async () => {
|
it('goes to the album page and goes back', async () => {
|
||||||
await page.click('[href="/link-component/Album"]');
|
await page.click('[href="/link-component/music"]');
|
||||||
|
|
||||||
expect(await page.evaluate(() => location.pathname + location.search)).toBe(
|
expect(await page.evaluate(() => location.pathname + location.search)).toBe(
|
||||||
'/link-component/Album'
|
'/link-component/music'
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
((await page.accessibility.snapshot()) as any)?.children?.find(
|
((await page.accessibility.snapshot()) as any)?.children?.find(
|
||||||
(it: any) => it.role === 'heading'
|
(it: any) => it.role === 'heading'
|
||||||
)?.name
|
)?.name
|
||||||
).toBe('Album');
|
).toBe('Albums');
|
||||||
|
|
||||||
await page.click('[aria-label="Article by Gandalf, back"]');
|
await page.click('[aria-label="Article by Gandalf, back"]');
|
||||||
|
|
||||||
await page.waitForNavigation();
|
await page.waitForNavigation();
|
||||||
|
|
||||||
expect(await page.evaluate(() => location.pathname + location.search)).toBe(
|
expect(await page.evaluate(() => location.pathname + location.search)).toBe(
|
||||||
'/link-component/Article?author=Gandalf'
|
'/link-component/article/gandalf'
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import Albums from '../Shared/Albums';
|
|||||||
|
|
||||||
type SimpleStackParams = {
|
type SimpleStackParams = {
|
||||||
Article: { author: string };
|
Article: { author: string };
|
||||||
Album: undefined;
|
Albums: undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
type SimpleStackNavigation = StackNavigationProp<SimpleStackParams>;
|
type SimpleStackNavigation = StackNavigationProp<SimpleStackParams>;
|
||||||
@@ -53,24 +53,24 @@ const ArticleScreen = ({
|
|||||||
<ScrollView>
|
<ScrollView>
|
||||||
<View style={styles.buttons}>
|
<View style={styles.buttons}>
|
||||||
<Link
|
<Link
|
||||||
to="/link-component/Album"
|
to="/link-component/music"
|
||||||
style={[styles.button, { padding: 8 }]}
|
style={[styles.button, { padding: 8 }]}
|
||||||
>
|
>
|
||||||
Go to /link-component/Album
|
Go to /link-component/music
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
to="/link-component/Album"
|
to="/link-component/music"
|
||||||
action={StackActions.replace('Album')}
|
action={StackActions.replace('Albums')}
|
||||||
style={[styles.button, { padding: 8 }]}
|
style={[styles.button, { padding: 8 }]}
|
||||||
>
|
>
|
||||||
Replace with /link-component/Album
|
Replace with /link-component/music
|
||||||
</Link>
|
</Link>
|
||||||
<LinkButton
|
<LinkButton
|
||||||
to="/link-component/Album"
|
to="/link-component/music"
|
||||||
mode="contained"
|
mode="contained"
|
||||||
style={styles.button}
|
style={styles.button}
|
||||||
>
|
>
|
||||||
Go to /link-component/Album
|
Go to /link-component/music
|
||||||
</LinkButton>
|
</LinkButton>
|
||||||
<Button
|
<Button
|
||||||
mode="outlined"
|
mode="outlined"
|
||||||
@@ -97,17 +97,17 @@ const AlbumsScreen = ({
|
|||||||
<ScrollView>
|
<ScrollView>
|
||||||
<View style={styles.buttons}>
|
<View style={styles.buttons}>
|
||||||
<Link
|
<Link
|
||||||
to="/link-component/Article?author=Babel"
|
to="/link-component/article/babel"
|
||||||
style={[styles.button, { padding: 8 }]}
|
style={[styles.button, { padding: 8 }]}
|
||||||
>
|
>
|
||||||
Go to /link-component/Article
|
Go to /link-component/article
|
||||||
</Link>
|
</Link>
|
||||||
<LinkButton
|
<LinkButton
|
||||||
to="/link-component/Article?author=Babel"
|
to="/link-component/article/babel"
|
||||||
mode="contained"
|
mode="contained"
|
||||||
style={styles.button}
|
style={styles.button}
|
||||||
>
|
>
|
||||||
Go to /link-component/Article
|
Go to /link-component/article
|
||||||
</LinkButton>
|
</LinkButton>
|
||||||
<Button
|
<Button
|
||||||
mode="outlined"
|
mode="outlined"
|
||||||
@@ -144,9 +144,9 @@ export default function SimpleStackScreen({ navigation, ...rest }: Props) {
|
|||||||
initialParams={{ author: 'Gandalf' }}
|
initialParams={{ author: 'Gandalf' }}
|
||||||
/>
|
/>
|
||||||
<SimpleStack.Screen
|
<SimpleStack.Screen
|
||||||
name="Album"
|
name="Albums"
|
||||||
component={AlbumsScreen}
|
component={AlbumsScreen}
|
||||||
options={{ title: 'Album' }}
|
options={{ title: 'Albums' }}
|
||||||
/>
|
/>
|
||||||
</SimpleStack.Navigator>
|
</SimpleStack.Navigator>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import NewsFeed from '../Shared/NewsFeed';
|
|||||||
type DrawerParams = {
|
type DrawerParams = {
|
||||||
Article: undefined;
|
Article: undefined;
|
||||||
NewsFeed: undefined;
|
NewsFeed: undefined;
|
||||||
Album: undefined;
|
Albums: undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
type DrawerNavigation = DrawerNavigationProp<DrawerParams>;
|
type DrawerNavigation = DrawerNavigationProp<DrawerParams>;
|
||||||
@@ -118,9 +118,9 @@ export default function DrawerScreen({ navigation, ...rest }: Props) {
|
|||||||
options={{ title: 'Feed' }}
|
options={{ title: 'Feed' }}
|
||||||
/>
|
/>
|
||||||
<Drawer.Screen
|
<Drawer.Screen
|
||||||
name="Album"
|
name="Albums"
|
||||||
component={AlbumsScreen}
|
component={AlbumsScreen}
|
||||||
options={{ title: 'Album' }}
|
options={{ title: 'Albums' }}
|
||||||
/>
|
/>
|
||||||
</Drawer.Navigator>
|
</Drawer.Navigator>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import Albums from '../Shared/Albums';
|
|||||||
|
|
||||||
type ModalStackParams = {
|
type ModalStackParams = {
|
||||||
Article: { author: string };
|
Article: { author: string };
|
||||||
Album: undefined;
|
Albums: undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
type ModalStackNavigation = StackNavigationProp<ModalStackParams>;
|
type ModalStackNavigation = StackNavigationProp<ModalStackParams>;
|
||||||
@@ -31,7 +31,7 @@ const ArticleScreen = ({
|
|||||||
<View style={styles.buttons}>
|
<View style={styles.buttons}>
|
||||||
<Button
|
<Button
|
||||||
mode="contained"
|
mode="contained"
|
||||||
onPress={() => navigation.push('Album')}
|
onPress={() => navigation.push('Albums')}
|
||||||
style={styles.button}
|
style={styles.button}
|
||||||
>
|
>
|
||||||
Push album
|
Push album
|
||||||
@@ -112,9 +112,9 @@ export default function SimpleStackScreen({ navigation, options }: Props) {
|
|||||||
initialParams={{ author: 'Gandalf' }}
|
initialParams={{ author: 'Gandalf' }}
|
||||||
/>
|
/>
|
||||||
<ModalPresentationStack.Screen
|
<ModalPresentationStack.Screen
|
||||||
name="Album"
|
name="Albums"
|
||||||
component={AlbumsScreen}
|
component={AlbumsScreen}
|
||||||
options={{ title: 'Album' }}
|
options={{ title: 'Albums' }}
|
||||||
/>
|
/>
|
||||||
</ModalPresentationStack.Navigator>
|
</ModalPresentationStack.Navigator>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import NewsFeed from '../Shared/NewsFeed';
|
|||||||
type SimpleStackParams = {
|
type SimpleStackParams = {
|
||||||
Article: { author: string };
|
Article: { author: string };
|
||||||
NewsFeed: undefined;
|
NewsFeed: undefined;
|
||||||
Album: undefined;
|
Albums: undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
type SimpleStackNavigation = StackNavigationProp<SimpleStackParams>;
|
type SimpleStackNavigation = StackNavigationProp<SimpleStackParams>;
|
||||||
@@ -63,7 +63,7 @@ const NewsFeedScreen = ({
|
|||||||
<View style={styles.buttons}>
|
<View style={styles.buttons}>
|
||||||
<Button
|
<Button
|
||||||
mode="contained"
|
mode="contained"
|
||||||
onPress={() => navigation.navigate('Album')}
|
onPress={() => navigation.navigate('Albums')}
|
||||||
style={styles.button}
|
style={styles.button}
|
||||||
>
|
>
|
||||||
Navigate to album
|
Navigate to album
|
||||||
@@ -136,9 +136,9 @@ export default function SimpleStackScreen({ navigation, ...rest }: Props) {
|
|||||||
options={{ title: 'Feed' }}
|
options={{ title: 'Feed' }}
|
||||||
/>
|
/>
|
||||||
<SimpleStack.Screen
|
<SimpleStack.Screen
|
||||||
name="Album"
|
name="Albums"
|
||||||
component={AlbumsScreen}
|
component={AlbumsScreen}
|
||||||
options={{ title: 'Album' }}
|
options={{ title: 'Albums' }}
|
||||||
/>
|
/>
|
||||||
</SimpleStack.Navigator>
|
</SimpleStack.Navigator>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import Albums from '../Shared/Albums';
|
|||||||
|
|
||||||
type SimpleStackParams = {
|
type SimpleStackParams = {
|
||||||
Article: { author: string };
|
Article: { author: string };
|
||||||
Album: undefined;
|
Albums: undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
type SimpleStackNavigation = StackNavigationProp<SimpleStackParams>;
|
type SimpleStackNavigation = StackNavigationProp<SimpleStackParams>;
|
||||||
@@ -34,7 +34,7 @@ const ArticleScreen = ({
|
|||||||
<View style={styles.buttons}>
|
<View style={styles.buttons}>
|
||||||
<Button
|
<Button
|
||||||
mode="contained"
|
mode="contained"
|
||||||
onPress={() => navigation.push('Album')}
|
onPress={() => navigation.push('Albums')}
|
||||||
style={styles.button}
|
style={styles.button}
|
||||||
>
|
>
|
||||||
Push album
|
Push album
|
||||||
@@ -131,10 +131,10 @@ export default function SimpleStackScreen({ navigation, ...rest }: Props) {
|
|||||||
initialParams={{ author: 'Gandalf' }}
|
initialParams={{ author: 'Gandalf' }}
|
||||||
/>
|
/>
|
||||||
<SimpleStack.Screen
|
<SimpleStack.Screen
|
||||||
name="Album"
|
name="Albums"
|
||||||
component={AlbumsScreen}
|
component={AlbumsScreen}
|
||||||
options={{
|
options={{
|
||||||
title: 'Album',
|
title: 'Albums',
|
||||||
headerBackTitle: 'Back',
|
headerBackTitle: 'Back',
|
||||||
headerTransparent: true,
|
headerTransparent: true,
|
||||||
headerBackground: () => (
|
headerBackground: () => (
|
||||||
|
|||||||
@@ -239,6 +239,22 @@ export default function App() {
|
|||||||
{ Home: '' }
|
{ Home: '' }
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
Article: {
|
||||||
|
path: 'article/:author?',
|
||||||
|
parse: {
|
||||||
|
author: (author) =>
|
||||||
|
author.charAt(0).toUpperCase() +
|
||||||
|
author.slice(1).replace(/-/g, ' '),
|
||||||
|
},
|
||||||
|
stringify: {
|
||||||
|
author: (author: string) =>
|
||||||
|
author.toLowerCase().replace(/\s/g, '-'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Albums: 'music',
|
||||||
|
Chat: 'chat',
|
||||||
|
Contacts: 'people',
|
||||||
|
NewsFeed: 'feed',
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
fallback={<Text>Loading…</Text>}
|
fallback={<Text>Loading…</Text>}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/satya164/react-navigation.git"
|
"url": "git+https://github.com/react-navigation/react-navigation.git"
|
||||||
},
|
},
|
||||||
"author": "Satyajit Sahoo <satyajit.happy@gmail.com> (https://github.com/satya164/), Michał Osadnik <micosa97@gmail.com> (https://github.com/osdnk/)",
|
"author": "Satyajit Sahoo <satyajit.happy@gmail.com> (https://github.com/satya164/), Michał Osadnik <micosa97@gmail.com> (https://github.com/osdnk/)",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -3,6 +3,22 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.4.5](https://github.com/react-navigation/react-navigation/tree/master/packages/bottom-tabs/compare/@react-navigation/bottom-tabs@5.4.4...@react-navigation/bottom-tabs@5.4.5) (2020-05-16)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.4.4](https://github.com/react-navigation/react-navigation/tree/master/packages/bottom-tabs/compare/@react-navigation/bottom-tabs@5.4.3...@react-navigation/bottom-tabs@5.4.4) (2020-05-14)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.4.3](https://github.com/react-navigation/react-navigation/tree/master/packages/bottom-tabs/compare/@react-navigation/bottom-tabs@5.4.2...@react-navigation/bottom-tabs@5.4.3) (2020-05-14)
|
## [5.4.3](https://github.com/react-navigation/react-navigation/tree/master/packages/bottom-tabs/compare/@react-navigation/bottom-tabs@5.4.2...@react-navigation/bottom-tabs@5.4.3) (2020-05-14)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/bottom-tabs",
|
"name": "@react-navigation/bottom-tabs",
|
||||||
"description": "Bottom tab navigator following iOS design guidelines",
|
"description": "Bottom tab navigator following iOS design guidelines",
|
||||||
"version": "5.4.3",
|
"version": "5.4.5",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/bob": "^0.13.1",
|
"@react-native-community/bob": "^0.13.1",
|
||||||
"@react-navigation/native": "^5.3.1",
|
"@react-navigation/native": "^5.4.0",
|
||||||
"@types/color": "^3.0.1",
|
"@types/color": "^3.0.1",
|
||||||
"@types/react": "^16.9.34",
|
"@types/react": "^16.9.34",
|
||||||
"@types/react-native": "^0.62.7",
|
"@types/react-native": "^0.62.7",
|
||||||
|
|||||||
@@ -3,6 +3,22 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.1.21](https://github.com/react-navigation/react-navigation/tree/master/packages/compat/compare/@react-navigation/compat@5.1.20...@react-navigation/compat@5.1.21) (2020-05-16)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/compat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.1.20](https://github.com/react-navigation/react-navigation/tree/master/packages/compat/compare/@react-navigation/compat@5.1.19...@react-navigation/compat@5.1.20) (2020-05-14)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/compat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.1.19](https://github.com/react-navigation/react-navigation/tree/master/packages/compat/compare/@react-navigation/compat@5.1.18...@react-navigation/compat@5.1.19) (2020-05-14)
|
## [5.1.19](https://github.com/react-navigation/react-navigation/tree/master/packages/compat/compare/@react-navigation/compat@5.1.18...@react-navigation/compat@5.1.19) (2020-05-14)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/compat
|
**Note:** Version bump only for package @react-navigation/compat
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/compat",
|
"name": "@react-navigation/compat",
|
||||||
"description": "Compatibility layer to write navigator definitions in static configuration format",
|
"description": "Compatibility layer to write navigator definitions in static configuration format",
|
||||||
"version": "5.1.19",
|
"version": "5.1.21",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": "https://github.com/react-navigation/react-navigation/tree/master/packages/compat",
|
"repository": "https://github.com/react-navigation/react-navigation/tree/master/packages/compat",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/bob": "^0.13.1",
|
"@react-native-community/bob": "^0.13.1",
|
||||||
"@react-navigation/native": "^5.3.1",
|
"@react-navigation/native": "^5.4.0",
|
||||||
"@types/react": "^16.9.34",
|
"@types/react": "^16.9.34",
|
||||||
"react": "~16.9.0",
|
"react": "~16.9.0",
|
||||||
"typescript": "^3.8.3"
|
"typescript": "^3.8.3"
|
||||||
|
|||||||
@@ -3,6 +3,33 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.7.0](https://github.com/react-navigation/react-navigation/tree/master/packages/core/compare/@react-navigation/core@5.6.1...@react-navigation/core@5.7.0) (2020-05-16)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* don't use Object.fromEntries ([51f4d11](https://github.com/react-navigation/react-navigation/tree/master/packages/core/commit/51f4d11fdf4bd2bb06f8cd4094f051816590e62c))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add a PathConfig type ([60cb3c9](https://github.com/react-navigation/react-navigation/tree/master/packages/core/commit/60cb3c9ba76d7ef166c9fe8b55f23728975b5b6e))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.6.1](https://github.com/react-navigation/react-navigation/tree/master/packages/core/compare/@react-navigation/core@5.6.0...@react-navigation/core@5.6.1) (2020-05-14)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* don't use flat since it's not supported in node ([21b397f](https://github.com/react-navigation/react-navigation/tree/master/packages/core/commit/21b397f0d6b96ec4875d3172f47533130bb08009))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.6.0](https://github.com/react-navigation/react-navigation/tree/master/packages/core/compare/@react-navigation/core@5.5.2...@react-navigation/core@5.6.0) (2020-05-14)
|
# [5.6.0](https://github.com/react-navigation/react-navigation/tree/master/packages/core/compare/@react-navigation/core@5.5.2...@react-navigation/core@5.6.0) (2020-05-14)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/core",
|
"name": "@react-navigation/core",
|
||||||
"description": "Core utilities for building navigators",
|
"description": "Core utilities for building navigators",
|
||||||
"version": "5.6.0",
|
"version": "5.7.0",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react",
|
"react",
|
||||||
"react-native",
|
"react-native",
|
||||||
|
|||||||
@@ -4,19 +4,19 @@ import {
|
|||||||
PartialState,
|
PartialState,
|
||||||
Route,
|
Route,
|
||||||
} from '@react-navigation/routers';
|
} from '@react-navigation/routers';
|
||||||
|
import { PathConfig } from './types';
|
||||||
|
|
||||||
type State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;
|
type State = NavigationState | Omit<PartialState<NavigationState>, 'stale'>;
|
||||||
|
|
||||||
type StringifyConfig = Record<string, (value: any) => string>;
|
type StringifyConfig = Record<string, (value: any) => string>;
|
||||||
|
|
||||||
type OptionsItem = {
|
type OptionsItem = PathConfig[string];
|
||||||
path?: string;
|
|
||||||
exact?: boolean;
|
|
||||||
stringify?: StringifyConfig;
|
|
||||||
screens?: Options;
|
|
||||||
};
|
|
||||||
|
|
||||||
type Options = Record<string, string | OptionsItem>;
|
type ConfigItem = {
|
||||||
|
pattern?: string;
|
||||||
|
stringify?: StringifyConfig;
|
||||||
|
screens?: Record<string, ConfigItem>;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility to serialize a navigation state object to a path string.
|
* Utility to serialize a navigation state object to a path string.
|
||||||
@@ -47,7 +47,7 @@ type Options = Record<string, string | OptionsItem>;
|
|||||||
*/
|
*/
|
||||||
export default function getPathFromState(
|
export default function getPathFromState(
|
||||||
state?: State,
|
state?: State,
|
||||||
options: Options = {}
|
options: PathConfig = {}
|
||||||
): string {
|
): string {
|
||||||
if (state === undefined) {
|
if (state === undefined) {
|
||||||
throw Error('NavigationState not passed');
|
throw Error('NavigationState not passed');
|
||||||
@@ -85,7 +85,7 @@ export default function getPathFromState(
|
|||||||
if (route.params) {
|
if (route.params) {
|
||||||
const stringify = currentOptions[route.name]?.stringify;
|
const stringify = currentOptions[route.name]?.stringify;
|
||||||
|
|
||||||
currentParams = Object.fromEntries(
|
currentParams = fromEntries(
|
||||||
Object.entries(route.params).map(([key, value]) => [
|
Object.entries(route.params).map(([key, value]) => [
|
||||||
key,
|
key,
|
||||||
stringify?.[key] ? stringify[key](value) : String(value),
|
stringify?.[key] ? stringify[key](value) : String(value),
|
||||||
@@ -182,24 +182,23 @@ export default function getPathFromState(
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
type ConfigItem = {
|
// Object.fromEntries is not available in older iOS versions
|
||||||
pattern?: string;
|
const fromEntries = <K extends string, V>(entries: (readonly [K, V])[]) =>
|
||||||
stringify?: StringifyConfig;
|
entries.reduce((acc, [k, v]) => {
|
||||||
screens?: Record<string, ConfigItem>;
|
acc[k] = v;
|
||||||
};
|
return acc;
|
||||||
|
}, {} as Record<K, V>);
|
||||||
|
|
||||||
function joinPaths(...paths: string[]): string {
|
const joinPaths = (...paths: string[]): string =>
|
||||||
return paths
|
([] as string[])
|
||||||
.map((p) => p.split('/'))
|
.concat(...paths.map((p) => p.split('/')))
|
||||||
.flat()
|
|
||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
.join('/');
|
.join('/');
|
||||||
}
|
|
||||||
|
|
||||||
function createConfigItem(
|
const createConfigItem = (
|
||||||
config: OptionsItem | string,
|
config: OptionsItem | string,
|
||||||
parentPattern?: string
|
parentPattern?: string
|
||||||
): ConfigItem {
|
): ConfigItem => {
|
||||||
if (typeof config === 'string') {
|
if (typeof config === 'string') {
|
||||||
// If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
|
// If a string is specified as the value of the key(e.g. Foo: '/path'), use it as the pattern
|
||||||
const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
|
const pattern = parentPattern ? joinPaths(parentPattern, config) : config;
|
||||||
@@ -224,17 +223,16 @@ function createConfigItem(
|
|||||||
stringify: config.stringify,
|
stringify: config.stringify,
|
||||||
screens,
|
screens,
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
|
|
||||||
function createNormalizedConfigs(
|
const createNormalizedConfigs = (
|
||||||
options: Options,
|
options: PathConfig,
|
||||||
pattern?: string
|
pattern?: string
|
||||||
): Record<string, ConfigItem> {
|
): Record<string, ConfigItem> =>
|
||||||
return Object.fromEntries(
|
fromEntries(
|
||||||
Object.entries(options).map(([name, c]) => {
|
Object.entries(options).map(([name, c]) => {
|
||||||
const result = createConfigItem(c, pattern);
|
const result = createConfigItem(c, pattern);
|
||||||
|
|
||||||
return [name, result];
|
return [name, result];
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|||||||
@@ -5,21 +5,10 @@ import {
|
|||||||
PartialState,
|
PartialState,
|
||||||
InitialState,
|
InitialState,
|
||||||
} from '@react-navigation/routers';
|
} from '@react-navigation/routers';
|
||||||
|
import { PathConfig } from './types';
|
||||||
|
|
||||||
type ParseConfig = Record<string, (value: string) => any>;
|
type ParseConfig = Record<string, (value: string) => any>;
|
||||||
|
|
||||||
type Options = {
|
|
||||||
[routeName: string]:
|
|
||||||
| string
|
|
||||||
| {
|
|
||||||
path?: string;
|
|
||||||
exact?: boolean;
|
|
||||||
parse?: ParseConfig;
|
|
||||||
screens?: Options;
|
|
||||||
initialRouteName?: string;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
type RouteConfig = {
|
type RouteConfig = {
|
||||||
screen: string;
|
screen: string;
|
||||||
regex?: RegExp;
|
regex?: RegExp;
|
||||||
@@ -59,14 +48,17 @@ type ResultState = PartialState<NavigationState> & {
|
|||||||
*/
|
*/
|
||||||
export default function getStateFromPath(
|
export default function getStateFromPath(
|
||||||
path: string,
|
path: string,
|
||||||
options: Options = {}
|
options: PathConfig = {}
|
||||||
): ResultState | undefined {
|
): ResultState | undefined {
|
||||||
let initialRoutes: InitialRouteConfig[] = [];
|
let initialRoutes: InitialRouteConfig[] = [];
|
||||||
|
|
||||||
// Create a normalized configs array which will be easier to use
|
// Create a normalized configs array which will be easier to use
|
||||||
const configs = Object.keys(options)
|
const configs = ([] as RouteConfig[])
|
||||||
.map((key) => createNormalizedConfigs(key, options, [], initialRoutes))
|
.concat(
|
||||||
.flat()
|
...Object.keys(options).map((key) =>
|
||||||
|
createNormalizedConfigs(key, options, [], initialRoutes)
|
||||||
|
)
|
||||||
|
)
|
||||||
.sort(
|
.sort(
|
||||||
(a, b) =>
|
(a, b) =>
|
||||||
// Sort configs so the most exhaustive is always first to be chosen
|
// Sort configs so the most exhaustive is always first to be chosen
|
||||||
@@ -231,21 +223,19 @@ export default function getStateFromPath(
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function joinPaths(...paths: string[]): string {
|
const joinPaths = (...paths: string[]): string =>
|
||||||
return paths
|
([] as string[])
|
||||||
.map((p) => p.split('/'))
|
.concat(...paths.map((p) => p.split('/')))
|
||||||
.flat()
|
|
||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
.join('/');
|
.join('/');
|
||||||
}
|
|
||||||
|
|
||||||
function createNormalizedConfigs(
|
const createNormalizedConfigs = (
|
||||||
screen: string,
|
screen: string,
|
||||||
routeConfig: Options,
|
routeConfig: PathConfig,
|
||||||
routeNames: string[] = [],
|
routeNames: string[] = [],
|
||||||
initials: InitialRouteConfig[],
|
initials: InitialRouteConfig[],
|
||||||
parentPattern?: string
|
parentPattern?: string
|
||||||
): RouteConfig[] {
|
): RouteConfig[] => {
|
||||||
const configs: RouteConfig[] = [];
|
const configs: RouteConfig[] = [];
|
||||||
|
|
||||||
routeNames.push(screen);
|
routeNames.push(screen);
|
||||||
@@ -286,7 +276,7 @@ function createNormalizedConfigs(
|
|||||||
Object.keys(config.screens).forEach((nestedConfig) => {
|
Object.keys(config.screens).forEach((nestedConfig) => {
|
||||||
const result = createNormalizedConfigs(
|
const result = createNormalizedConfigs(
|
||||||
nestedConfig,
|
nestedConfig,
|
||||||
config.screens as Options,
|
config.screens as PathConfig,
|
||||||
routeNames,
|
routeNames,
|
||||||
initials,
|
initials,
|
||||||
pattern
|
pattern
|
||||||
@@ -300,15 +290,15 @@ function createNormalizedConfigs(
|
|||||||
routeNames.pop();
|
routeNames.pop();
|
||||||
|
|
||||||
return configs;
|
return configs;
|
||||||
}
|
};
|
||||||
|
|
||||||
function createConfigItem(
|
const createConfigItem = (
|
||||||
screen: string,
|
screen: string,
|
||||||
routeNames: string[],
|
routeNames: string[],
|
||||||
pattern: string,
|
pattern: string,
|
||||||
path: string,
|
path: string,
|
||||||
parse?: ParseConfig
|
parse?: ParseConfig
|
||||||
): RouteConfig {
|
): RouteConfig => {
|
||||||
// Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
|
// Normalize pattern to remove any leading, trailing slashes, duplicate slashes etc.
|
||||||
pattern = pattern.split('/').filter(Boolean).join('/');
|
pattern = pattern.split('/').filter(Boolean).join('/');
|
||||||
|
|
||||||
@@ -336,25 +326,26 @@ function createConfigItem(
|
|||||||
routeNames: [...routeNames],
|
routeNames: [...routeNames],
|
||||||
parse,
|
parse,
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
|
|
||||||
function findParseConfigForRoute(
|
const findParseConfigForRoute = (
|
||||||
routeName: string,
|
routeName: string,
|
||||||
flatConfig: RouteConfig[]
|
flatConfig: RouteConfig[]
|
||||||
): ParseConfig | undefined {
|
): ParseConfig | undefined => {
|
||||||
for (const config of flatConfig) {
|
for (const config of flatConfig) {
|
||||||
if (routeName === config.routeNames[config.routeNames.length - 1]) {
|
if (routeName === config.routeNames[config.routeNames.length - 1]) {
|
||||||
return config.parse;
|
return config.parse;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
// tries to find an initial route connected with the one passed
|
return undefined;
|
||||||
function findInitialRoute(
|
};
|
||||||
|
|
||||||
|
// Try to find an initial route connected with the one passed
|
||||||
|
const findInitialRoute = (
|
||||||
routeName: string,
|
routeName: string,
|
||||||
initialRoutes: InitialRouteConfig[]
|
initialRoutes: InitialRouteConfig[]
|
||||||
): string | undefined {
|
): string | undefined => {
|
||||||
for (const config of initialRoutes) {
|
for (const config of initialRoutes) {
|
||||||
if (config.connectedRoutes.includes(routeName)) {
|
if (config.connectedRoutes.includes(routeName)) {
|
||||||
return config.initialRouteName === routeName
|
return config.initialRouteName === routeName
|
||||||
@@ -363,16 +354,16 @@ function findInitialRoute(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
};
|
||||||
|
|
||||||
// returns state object with values depending on whether
|
// returns state object with values depending on whether
|
||||||
// it is the end of state and if there is initialRoute for this level
|
// it is the end of state and if there is initialRoute for this level
|
||||||
function createStateObject(
|
const createStateObject = (
|
||||||
initialRoute: string | undefined,
|
initialRoute: string | undefined,
|
||||||
routeName: string,
|
routeName: string,
|
||||||
params: Record<string, any> | undefined,
|
params: Record<string, any> | undefined,
|
||||||
isEmpty: boolean
|
isEmpty: boolean
|
||||||
): InitialState {
|
): InitialState => {
|
||||||
if (isEmpty) {
|
if (isEmpty) {
|
||||||
if (initialRoute) {
|
if (initialRoute) {
|
||||||
return {
|
return {
|
||||||
@@ -399,12 +390,12 @@ function createStateObject(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
function createNestedStateObject(
|
const createNestedStateObject = (
|
||||||
routes: { name: string; params?: object }[],
|
routes: { name: string; params?: object }[],
|
||||||
initialRoutes: InitialRouteConfig[]
|
initialRoutes: InitialRouteConfig[]
|
||||||
) {
|
) => {
|
||||||
let state: InitialState;
|
let state: InitialState;
|
||||||
let route = routes.shift() as { name: string; params?: object };
|
let route = routes.shift() as { name: string; params?: object };
|
||||||
let initialRoute = findInitialRoute(route.name, initialRoutes);
|
let initialRoute = findInitialRoute(route.name, initialRoutes);
|
||||||
@@ -440,9 +431,9 @@ function createNestedStateObject(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
};
|
||||||
|
|
||||||
function findFocusedRoute(state: InitialState) {
|
const findFocusedRoute = (state: InitialState) => {
|
||||||
let current: InitialState | undefined = state;
|
let current: InitialState | undefined = state;
|
||||||
|
|
||||||
while (current?.routes[current.index || 0].state) {
|
while (current?.routes[current.index || 0].state) {
|
||||||
@@ -455,12 +446,12 @@ function findFocusedRoute(state: InitialState) {
|
|||||||
];
|
];
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
}
|
};
|
||||||
|
|
||||||
function parseQueryParams(
|
const parseQueryParams = (
|
||||||
path: string,
|
path: string,
|
||||||
parseConfig?: Record<string, (value: string) => any>
|
parseConfig?: Record<string, (value: string) => any>
|
||||||
) {
|
) => {
|
||||||
const query = path.split('?')[1];
|
const query = path.split('?')[1];
|
||||||
const params = queryString.parse(query);
|
const params = queryString.parse(query);
|
||||||
|
|
||||||
@@ -473,4 +464,4 @@ function parseQueryParams(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Object.keys(params).length ? params : undefined;
|
return Object.keys(params).length ? params : undefined;
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -462,3 +462,16 @@ export type TypedNavigator<
|
|||||||
_: RouteConfig<ParamList, RouteName, State, ScreenOptions, EventMap>
|
_: RouteConfig<ParamList, RouteName, State, ScreenOptions, EventMap>
|
||||||
) => null;
|
) => null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type PathConfig = {
|
||||||
|
[routeName: string]:
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
path?: string;
|
||||||
|
exact?: boolean;
|
||||||
|
parse?: Record<string, (value: string) => any>;
|
||||||
|
stringify?: Record<string, (value: any) => string>;
|
||||||
|
screens?: PathConfig;
|
||||||
|
initialRouteName?: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|||||||
@@ -3,6 +3,22 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.7.5](https://github.com/react-navigation/react-navigation/tree/master/packages/drawer/compare/@react-navigation/drawer@5.7.4...@react-navigation/drawer@5.7.5) (2020-05-16)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/drawer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.7.4](https://github.com/react-navigation/react-navigation/tree/master/packages/drawer/compare/@react-navigation/drawer@5.7.3...@react-navigation/drawer@5.7.4) (2020-05-14)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/drawer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.7.3](https://github.com/react-navigation/react-navigation/tree/master/packages/drawer/compare/@react-navigation/drawer@5.7.2...@react-navigation/drawer@5.7.3) (2020-05-14)
|
## [5.7.3](https://github.com/react-navigation/react-navigation/tree/master/packages/drawer/compare/@react-navigation/drawer@5.7.2...@react-navigation/drawer@5.7.3) (2020-05-14)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/drawer
|
**Note:** Version bump only for package @react-navigation/drawer
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/drawer",
|
"name": "@react-navigation/drawer",
|
||||||
"description": "Drawer navigator component with animated transitions and gesturess",
|
"description": "Drawer navigator component with animated transitions and gesturess",
|
||||||
"version": "5.7.3",
|
"version": "5.7.5",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/bob": "^0.13.1",
|
"@react-native-community/bob": "^0.13.1",
|
||||||
"@react-navigation/native": "^5.3.1",
|
"@react-navigation/native": "^5.4.0",
|
||||||
"@types/react": "^16.9.34",
|
"@types/react": "^16.9.34",
|
||||||
"@types/react-native": "^0.62.7",
|
"@types/react-native": "^0.62.7",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
|
|||||||
@@ -3,6 +3,25 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.2.5](https://github.com/react-navigation/react-navigation/tree/master/packages/material-bottom-tabs/compare/@react-navigation/material-bottom-tabs@5.2.4...@react-navigation/material-bottom-tabs@5.2.5) (2020-05-16)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* center icons in material tab bar. fixes [#8248](https://github.com/react-navigation/react-navigation/tree/master/packages/material-bottom-tabs/issues/8248) ([51b4087](https://github.com/react-navigation/react-navigation/tree/master/packages/material-bottom-tabs/commit/51b40879bdb9cea5462a2291955513a88eb87340))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.2.4](https://github.com/react-navigation/react-navigation/tree/master/packages/material-bottom-tabs/compare/@react-navigation/material-bottom-tabs@5.2.3...@react-navigation/material-bottom-tabs@5.2.4) (2020-05-14)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.2.3](https://github.com/react-navigation/react-navigation/tree/master/packages/material-bottom-tabs/compare/@react-navigation/material-bottom-tabs@5.2.2...@react-navigation/material-bottom-tabs@5.2.3) (2020-05-14)
|
## [5.2.3](https://github.com/react-navigation/react-navigation/tree/master/packages/material-bottom-tabs/compare/@react-navigation/material-bottom-tabs@5.2.2...@react-navigation/material-bottom-tabs@5.2.3) (2020-05-14)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/material-bottom-tabs",
|
"name": "@react-navigation/material-bottom-tabs",
|
||||||
"description": "Integration for bottom navigation component from react-native-paper",
|
"description": "Integration for bottom navigation component from react-native-paper",
|
||||||
"version": "5.2.3",
|
"version": "5.2.5",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/bob": "^0.13.1",
|
"@react-native-community/bob": "^0.13.1",
|
||||||
"@react-navigation/native": "^5.3.1",
|
"@react-navigation/native": "^5.4.0",
|
||||||
"@types/react": "^16.9.34",
|
"@types/react": "^16.9.34",
|
||||||
"@types/react-native": "^0.62.7",
|
"@types/react-native": "^0.62.7",
|
||||||
"@types/react-native-vector-icons": "^6.4.5",
|
"@types/react-native-vector-icons": "^6.4.5",
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ function MaterialBottomTabViewInner({
|
|||||||
borderless: _1,
|
borderless: _1,
|
||||||
centered: _2,
|
centered: _2,
|
||||||
rippleColor: _3,
|
rippleColor: _3,
|
||||||
|
style,
|
||||||
...rest
|
...rest
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
@@ -86,6 +87,7 @@ function MaterialBottomTabViewInner({
|
|||||||
onPress?.(e);
|
onPress?.(e);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
style={[styles.touchable, style]}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -153,4 +155,8 @@ const styles = StyleSheet.create({
|
|||||||
icon: {
|
icon: {
|
||||||
backgroundColor: 'transparent',
|
backgroundColor: 'transparent',
|
||||||
},
|
},
|
||||||
|
touchable: {
|
||||||
|
display: 'flex',
|
||||||
|
justifyContent: 'center',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,6 +3,22 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.2.5](https://github.com/react-navigation/react-navigation/tree/master/packages/material-top-tabs/compare/@react-navigation/material-top-tabs@5.2.4...@react-navigation/material-top-tabs@5.2.5) (2020-05-16)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.2.4](https://github.com/react-navigation/react-navigation/tree/master/packages/material-top-tabs/compare/@react-navigation/material-top-tabs@5.2.3...@react-navigation/material-top-tabs@5.2.4) (2020-05-14)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.2.3](https://github.com/react-navigation/react-navigation/tree/master/packages/material-top-tabs/compare/@react-navigation/material-top-tabs@5.2.2...@react-navigation/material-top-tabs@5.2.3) (2020-05-14)
|
## [5.2.3](https://github.com/react-navigation/react-navigation/tree/master/packages/material-top-tabs/compare/@react-navigation/material-top-tabs@5.2.2...@react-navigation/material-top-tabs@5.2.3) (2020-05-14)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/material-top-tabs",
|
"name": "@react-navigation/material-top-tabs",
|
||||||
"description": "Integration for the animated tab view component from react-native-tab-view",
|
"description": "Integration for the animated tab view component from react-native-tab-view",
|
||||||
"version": "5.2.3",
|
"version": "5.2.5",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/bob": "^0.13.1",
|
"@react-native-community/bob": "^0.13.1",
|
||||||
"@react-navigation/native": "^5.3.1",
|
"@react-navigation/native": "^5.4.0",
|
||||||
"@types/react": "^16.9.34",
|
"@types/react": "^16.9.34",
|
||||||
"@types/react-native": "^0.62.7",
|
"@types/react-native": "^0.62.7",
|
||||||
"del-cli": "^3.0.0",
|
"del-cli": "^3.0.0",
|
||||||
|
|||||||
@@ -3,6 +3,30 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
# [5.4.0](https://github.com/react-navigation/react-navigation/tree/master/packages/native/compare/@react-navigation/native@5.3.2...@react-navigation/native@5.4.0) (2020-05-16)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* fix types for linking options ([d14f38b](https://github.com/react-navigation/react-navigation/tree/master/packages/native/commit/d14f38b80ad569d5828c1919cea426c659173924))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add a PathConfig type ([60cb3c9](https://github.com/react-navigation/react-navigation/tree/master/packages/native/commit/60cb3c9ba76d7ef166c9fe8b55f23728975b5b6e))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.3.2](https://github.com/react-navigation/react-navigation/tree/master/packages/native/compare/@react-navigation/native@5.3.1...@react-navigation/native@5.3.2) (2020-05-14)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/native
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.3.1](https://github.com/react-navigation/react-navigation/tree/master/packages/native/compare/@react-navigation/native@5.3.0...@react-navigation/native@5.3.1) (2020-05-14)
|
## [5.3.1](https://github.com/react-navigation/react-navigation/tree/master/packages/native/compare/@react-navigation/native@5.3.0...@react-navigation/native@5.3.1) (2020-05-14)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/native
|
**Note:** Version bump only for package @react-navigation/native
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/native",
|
"name": "@react-navigation/native",
|
||||||
"description": "React Native integration for React Navigation",
|
"description": "React Native integration for React Navigation",
|
||||||
"version": "5.3.1",
|
"version": "5.4.0",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native",
|
"react-native",
|
||||||
"react-navigation",
|
"react-navigation",
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
"clean": "del lib"
|
"clean": "del lib"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-navigation/core": "^5.6.0"
|
"@react-navigation/core": "^5.7.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/bob": "^0.13.1",
|
"@react-native-community/bob": "^0.13.1",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
getStateFromPath as getStateFromPathDefault,
|
getStateFromPath as getStateFromPathDefault,
|
||||||
getPathFromState as getPathFromStateDefault,
|
getPathFromState as getPathFromStateDefault,
|
||||||
|
PathConfig,
|
||||||
} from '@react-navigation/core';
|
} from '@react-navigation/core';
|
||||||
|
|
||||||
export type Theme = {
|
export type Theme = {
|
||||||
@@ -39,7 +40,7 @@ export type LinkingOptions = {
|
|||||||
* }
|
* }
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
config?: Parameters<typeof getStateFromPathDefault>[1];
|
config?: PathConfig;
|
||||||
/**
|
/**
|
||||||
* Custom function to parse the URL to a valid navigation state (advanced).
|
* Custom function to parse the URL to a valid navigation state (advanced).
|
||||||
* Only applicable on Web.
|
* Only applicable on Web.
|
||||||
|
|||||||
@@ -3,6 +3,33 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.3.7](https://github.com/react-navigation/react-navigation/tree/master/packages/stack/compare/@react-navigation/stack@5.3.6...@react-navigation/stack@5.3.7) (2020-05-16)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/stack
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.3.6](https://github.com/react-navigation/react-navigation/tree/master/packages/stack/compare/@react-navigation/stack@5.3.5...@react-navigation/stack@5.3.6) (2020-05-15)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* reduce header title margin. fixes [#8267](https://github.com/react-navigation/react-navigation/tree/master/packages/stack/issues/8267) ([d45dbe9](https://github.com/react-navigation/react-navigation/tree/master/packages/stack/commit/d45dbe97dc6625c6a8e80b5e658ab5a95045e5e8))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.3.5](https://github.com/react-navigation/react-navigation/tree/master/packages/stack/compare/@react-navigation/stack@5.3.4...@react-navigation/stack@5.3.5) (2020-05-14)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/stack
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.3.4](https://github.com/react-navigation/react-navigation/tree/master/packages/stack/compare/@react-navigation/stack@5.3.3...@react-navigation/stack@5.3.4) (2020-05-14)
|
## [5.3.4](https://github.com/react-navigation/react-navigation/tree/master/packages/stack/compare/@react-navigation/stack@5.3.3...@react-navigation/stack@5.3.4) (2020-05-14)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/stack
|
**Note:** Version bump only for package @react-navigation/stack
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/stack",
|
"name": "@react-navigation/stack",
|
||||||
"description": "Stack navigator component for iOS and Android with animated transitions and gestures",
|
"description": "Stack navigator component for iOS and Android with animated transitions and gestures",
|
||||||
"version": "5.3.4",
|
"version": "5.3.7",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/bob": "^0.13.1",
|
"@react-native-community/bob": "^0.13.1",
|
||||||
"@react-native-community/masked-view": "^0.1.10",
|
"@react-native-community/masked-view": "^0.1.10",
|
||||||
"@react-navigation/native": "^5.3.1",
|
"@react-navigation/native": "^5.4.0",
|
||||||
"@types/color": "^3.0.1",
|
"@types/color": "^3.0.1",
|
||||||
"@types/react": "^16.9.34",
|
"@types/react": "^16.9.34",
|
||||||
"@types/react-native": "^0.62.7",
|
"@types/react-native": "^0.62.7",
|
||||||
|
|||||||
@@ -355,7 +355,9 @@ export default class HeaderSegment extends React.Component<Props, State> {
|
|||||||
: {
|
: {
|
||||||
marginHorizontal:
|
marginHorizontal:
|
||||||
(leftButton ? 32 : 16) +
|
(leftButton ? 32 : 16) +
|
||||||
(leftLabelLayout?.width || 0) +
|
(leftButton && headerBackTitleVisible !== false
|
||||||
|
? 40
|
||||||
|
: 0) +
|
||||||
Math.max(insets.left, insets.right),
|
Math.max(insets.left, insets.right),
|
||||||
},
|
},
|
||||||
titleStyle,
|
titleStyle,
|
||||||
|
|||||||
Reference in New Issue
Block a user