Commit Graph

1043 Commits

Author SHA1 Message Date
Satyajit Sahoo
802db004ae chore: upgrade dependencies 2021-01-08 13:59:24 +01:00
Satyajit Sahoo
b376e9c5ed fix: fix typo for default prop in drawer 2020-12-10 01:49:27 +01:00
Satyajit Sahoo
03ba1f2930 fix: fix default screen options not being respected 2020-12-04 00:34:16 +01:00
Satyajit Sahoo
69d333f6c2 fix: fix initial metrics on server 2020-12-03 02:19:54 +01:00
Satyajit Sahoo
068a9a456c feat: move lazy to options for bottom-tabs and drawer
BREAKING CHANGE: The lazy prop now can be configured per screen instead of for the whole navigator. To keep previous behavior, you can specify it in screenOptions
2020-12-03 02:05:13 +01:00
Satyajit Sahoo
65d8b487f8 chore: upgrade to typescript 4.1 2020-12-03 01:56:28 +01:00
Satyajit Sahoo
12b893d7ca fix: drop usage of Dimensions in favor of metrics from safe-area-context 2020-12-03 01:40:00 +01:00
Satyajit Sahoo
f137a84a80 chore: tweak comment for getParent 2020-12-02 21:15:29 +01:00
Satyajit Sahoo
8bdc6c6b9b fix: default to backBehavior: firstRoute for TabRouter
BREAKING CHANGE: Returning to first route after pressing back seems more common in apps. This commit changes the default for tab and drawer navigators to follow this common practice. To preserve previous behavior, you can pass backBehavior=history to tab and drawer navigators.
2020-12-02 21:06:32 +01:00
Satyajit Sahoo
7c1cd261bf feat: add a new backBehavior: firstRoute for TabRouter 2020-12-02 20:35:09 +01:00
Satyajit Sahoo
c361795d97 fix: print an error when passing a second argument to useFocusEffect 2020-12-02 20:27:34 +01:00
Satyajit Sahoo
5a9a1edae7 feat: stop exporting useLinking hook
BREAKING CHANGE: we have added linking prop for the same use case which is easier to use. so no need to export useLinking anymore.
2020-11-29 17:59:17 +01:00
Satyajit Sahoo
14ac256af3 fix: force dismiss keyboard if there was no gesture
closes #9078
2020-11-21 05:28:25 +01:00
Satyajit Sahoo
b82a9126bb fix: fix incorrect state change events in independent nested container
fixes #9080
2020-11-20 18:10:35 +01:00
Satyajit Sahoo
15e5678037 refactor: move drawerContentOptions to options
BREAKING CHANGE:  This commit moves options from `drawerContentOptions` to regular `options` in order to reduce confusion between the two, as well as to make it more flexible to configure the drawer on a per screen basis.
2020-11-19 03:57:48 +01:00
Satyajit Sahoo
852f2f0f19 chore: remove compat package 2020-11-17 20:36:06 +01:00
Satyajit Sahoo
c85f2ff47a feat: add an option to specify default options for the navigator 2020-11-17 20:25:49 +01:00
Satyajit Sahoo
6f326cf0c5 feat: add a slide animation for modals on Android 2020-11-16 18:09:58 +01:00
Satyajit Sahoo
f7ff1adee7 refactor: move tabBarOptions to options for bottom tabs
BREAKING CHANGE: This commit moves options from `tabBarOptions` to regular `options` in order to reduce confusion between the two, as well as to make it more flexible to configure the tab bar based on a per screen basis.
2020-11-13 21:23:18 +01:00
Satyajit Sahoo
ddf27bf41a refactor: don't use deprecated APIs from react-native-safe-area-context
BREAKING CHANGE: We now require newer versions of safe area context library.
2020-11-13 08:06:14 +01:00
Satyajit Sahoo
a97a43aa1d refactor: drop support for tabBarVisible option
BREAKING CHANGE: We need to add support for specifying style for tab bar in options to support the use cases which need this.
2020-11-13 07:23:59 +01:00
Satyajit Sahoo
376db8be5e chore: remove peer dep on masked view to make it optional 2020-11-13 07:12:33 +01:00
Satyajit Sahoo
227f133536 fix: drop dangerously prefix from getState and getParent
BREAKING CHANGE
2020-11-13 04:48:14 +01:00
Jesse Katsumata
8773dcb80f chore: replace community maskedview (#9058)
replaced `@react-native-community/masked-view` with `@react-native-masked-view/masked-view` due to namespace change.
2020-11-12 06:21:11 +01:00
Satyajit Sahoo
3ec1a862b2 refactor: default to sliding drawer on iOS 2020-11-12 04:00:11 +01:00
Satyajit Sahoo
5648e1a7b3 refactor: drop drawerOpen and drawerClose events
BREAKING CHANGE: drawer's status can be queried through the isDrawerOpen hook. no need for the events
2020-11-12 03:58:52 +01:00
Satyajit Sahoo
21a11543bf fix: add missing helper types in descriptors 2020-11-12 03:54:41 +01:00
Satyajit Sahoo
4cad132c2c refactor: simplify props for stack and drawer headers
BREAKING CHANGE: Previously, the stack header accepted scene and previous scene which contained things such as descriptor, navigation prop, progress etc. The commit simplifies them to pass `route`, `navigation`, `options` and `progress` directly to the header. Similaryly, the `previous` argument now contains `options`, `route` and `progress`.
2020-11-12 02:47:51 +01:00
Satyajit Sahoo
d5c091cbcf refactor: add route prop to the descriptor 2020-11-12 02:46:25 +01:00
Satyajit Sahoo
8a63f193bf feat: use modal presentation style for modals on iOS by default 2020-11-12 01:39:42 +01:00
Satyajit Sahoo
0c55803b32 fix: drop support for headerMode='none'
BREAKING CHANGE: The header can be hidden with `headerShown: false` already. Using both `headerMode='none'` and `headerShown` together causes confusion. So it's time to drop the unnecessary `headerMode` prop.
2020-11-12 00:58:25 +01:00
Satyajit Sahoo
0e13e8d23c fix: drop support for legacy linking config
BREAKING CHANGE: This commit drops support for legacy linking config which allowed screens to be specified without the screens property in the config.
2020-11-11 23:33:18 +01:00
Satyajit Sahoo
366d0181dc fix: don't merge params on navigation
BREAKING CHANGE: Previous versions of React Navigation merged params on navigation which caused confusion. This commit changes params not to be merged.

The old behaviour can still be achieved by passing `merge: true` explicitly:

```js
CommonActions.navigate({
  name: 'bar',
  params: { fruit: 'orange' },
  merge: true,
})
```
`initialParams` specified for the screen are always merged.
2020-11-11 23:16:03 +01:00
Satyajit Sahoo
ebab518352 fix: remove the state property from route prop
BREAKING CHANGE: any code which relies on `route.state` will break.

Previous versions printed a warning on accessing `route.state`. This commit removes the property entirely. Accessing this property isn't safe since child navigator state isn't gurranteed to be in sync with parent navigator state and cause subtle bugs in apps.
2020-11-11 22:20:47 +01:00
Satyajit Sahoo
b70ba66f24 chore: prepare for 6.x alpha 2020-11-11 22:07:33 +01:00
Satyajit Sahoo
a2337648bf chore: publish
- @react-navigation/bottom-tabs@5.11.1
 - @react-navigation/compat@5.3.9
 - @react-navigation/core@5.14.3
 - @react-navigation/devtools@5.1.17
 - @react-navigation/drawer@5.11.2
 - @react-navigation/material-bottom-tabs@5.3.9
 - @react-navigation/material-top-tabs@5.3.9
 - @react-navigation/native@5.8.9
 - @react-navigation/stack@5.12.6
2020-11-10 20:41:26 +01:00
Satyajit Sahoo
8f764d8b08 fix: improve the error message for incorrect screen configuration 2020-11-10 20:29:59 +01:00
Satyajit Sahoo
f8e998b10c refactor: simplify getStateFromPath 2020-11-10 19:44:00 +01:00
Satyajit Sahoo
da35085f1e fix: make sure inactive screen don't increase scroll area on web 2020-11-10 18:21:36 +01:00
Satyajit Sahoo
1f5fb5481a chore: publish
- @react-navigation/drawer@5.11.1
2020-11-09 20:40:11 +01:00
Satyajit Sahoo
18bbd177d9 fix: provide correct context to drawe header 2020-11-09 20:37:26 +01:00
Satyajit Sahoo
151055cf5a chore: publish
- @react-navigation/bottom-tabs@5.11.0
 - @react-navigation/compat@5.3.8
 - @react-navigation/core@5.14.2
 - @react-navigation/devtools@5.1.16
 - @react-navigation/drawer@5.11.0
 - @react-navigation/material-bottom-tabs@5.3.8
 - @react-navigation/material-top-tabs@5.3.8
 - @react-navigation/native@5.8.8
 - @react-navigation/routers@5.6.2
 - @react-navigation/stack@5.12.5
2020-11-09 20:17:39 +01:00
Satyajit Sahoo
52172453df fix: try fixing drawer blink on Android 2020-11-09 20:05:27 +01:00
Satyajit Sahoo
7bc385e4f3 chore: show header in drawer by default 2020-11-09 19:36:36 +01:00
Satyajit Sahoo
6ac4d40140 feat: add a tabBarBadgeStyle option to customize the badge 2020-11-09 19:28:49 +01:00
Satyajit Sahoo
dbe961ba5b feat: add option to show a header in drawer navigator screens
This commit adds new `header` and `headerShown` options in drawer navigator to be able to show a header, along with a bunch of header related options similar to stack navigator.

Historically, we have suggested to nest a stack navigator inside drawer navigator to render a header. While it works, it's not efficient to nest an entire navigator just for a header, considering it adds a lot of additional overhead from the code to handle animations, gestures etc. which won't ever be run in this case. It also increases the view hierarchy which has negative impacts on performance on Android, and could cause content not to render on older iOS devices.

Another issue with the approach is that since drawer navigator is at the root in this setup, it's possible to open drawer from every screen in the stack navigator, which usually isn't the expected behaviour. It's necessary to write additional code to disable the gesture to open drawer in all screens but first.

In addition, users also need to add a custom drawer icon to the header manually to be able to toggle the drawer

If drawer navigator could render its own header we'd avoid all these shortcomings as well as make the code simpler.

For now, I have implemented a new `Header` component in drawer since it's way simpler than stack navigator header. Though we may consider creating a shared UI package and add such components there which all our navigators could use.

The `Header` includes a button to toggle the drawer by default, and supports customization options such as showing custom left/right/title components. For this commit, I have kept `headerShown` to `false` by default coz I wasn't sure if it'd be a breaking change to start showing headers in drawers. Probably we can toggle it to `true` by default in next major.
2020-11-09 18:52:24 +01:00
Satyajit Sahoo
05d4e4d3be refactor: minor tweak 2020-11-09 02:02:43 +01:00
Satyajit Sahoo
48b2e77730 fix: throw if the same pattern resolves to multiple screens 2020-11-09 01:56:30 +01:00
Satyajit Sahoo
e08c91ff0a feat: add a hook to get bottom tab bar height
Usage:

```js
import { useBottomTabBarHeight } from '@react-navigation/stack';

// ...

const headerHeight = useBottomTabBarHeight();
```

closes #8037, closes #8536
2020-11-08 20:08:50 +01:00
Satyajit Sahoo
5bd682f0bf feat: add a getIsDrawerOpenFromState utility to drawer 2020-11-08 17:51:13 +01:00