Commit Graph

262 Commits

Author SHA1 Message Date
Ashoat Tevosyan
0d3d83bd90 Fix NavigationEvent types (#3384)
* Fix SimpleTabs types

dca37627a2 broke the types, but it wasn't noticed because Flow wasn't in the CI. This fixes the types; separate PR coming to add Flow to the CI.

* Refine type of NavigationEventListener callback

Instead of typing the callback as `Function`, we're now using the precise type provided by @ericvicenti

* NavigationEventListener -> NavigationEventSubscription
2018-01-30 15:49:47 -08:00
Ashoat Tevosyan
d1d81d7033 Update to RN 0.52 and Expo 25 (#3383)
* Update to RN 0.52 and Expo 25

* Rerecord snapshots for failing Jest tests

* jest-expo@25.1.0-beta.0

* jest-expo@25.1.0
2018-01-30 10:22:20 -08:00
Yao Hui Chua
a1fc566679 Support initialRouteParams for TabRouters (#3352) 2018-01-29 12:06:32 +01:00
Vojtech Novak
088e9e82ad rely on defaultProps in TouchableItem (#3374) 2018-01-28 23:33:21 +01:00
Eric Vicenti
dca37627a2 Add events support to redux example (#3368)
* Fixing redux

* Fix tab events and test event nested event subscriptions

* Add event support to redux example
2018-01-27 14:12:16 -08:00
Brent Vatne
50a3f8de93 Add headerBackImage, closes #1999 2018-01-27 13:53:44 -08:00
Patrick Monteith
e0de8b4dce Don't forward back actions to inactive children of TabRouters (#2121) 2018-01-27 13:21:47 -08:00
Freddy Harris
a62ad18b31 SafeAreaView style padding and inset collapse (#2917) 2018-01-27 12:59:51 -08:00
Iacopo Pazzaglia
6c1ab47719 Allow tabBarTestIDProps to be a function that receive the focused status (#3303) 2018-01-27 12:37:36 -08:00
Brent Vatne
24bfab93b4 Manually unset transitionIsRunning rather than going through _onTransitionEnd after state change 2018-01-26 23:02:02 -08:00
Brent Vatne
f8426bef7e Clean up when transitioner state when bailing out early 2018-01-26 18:55:38 -08:00
Ashoat Tevosyan
427e89480f Bring back TypeDefinition.js and re-add Flow to NavigationPlayground (#3363)
* Bring back TypeDefinition.js and re-add Flow to NavigationPlayground

* Type EventListener correctly and ignore metro errors
2018-01-26 16:15:49 -08:00
Brent Vatne
4ae2a42a4d Remove NavigatorTypes (#3331) 2018-01-26 15:54:46 -08:00
Moriyoshi Koizumi
9e026ec2c8 Allow pure-wildcard route for nested navigators. (#2929)
* Allow pure-wildcard route for nested navigators.

* Treat empty paths as they are.
2018-01-26 15:52:59 -08:00
Nicolas Beck
8e0fdc67b8 Reset state instead of pushing new routes for navigation actions in Drawer (#3164) 2018-01-26 15:30:11 -08:00
Eric Vicenti
122f6cfcee Simple fix to back button behavior (#3362)
Should always provide the key to go back from
2018-01-26 11:02:27 -08:00
Eric Vicenti
0157a4c9e9 Navigation Event Subscriptions (#3345)
* Add fbemitter, keep flow passing

* Begin support for event emitter

- Adds emitter to navigation prop
- Emits top level onAction event
- stub getChildEventSubscriber for child events

* Support navigationState.isNavigating

* Focus and blur events starting to work

- Navigation completion action wired up
- Event chaining logic built in getChildEventSubscriber
- Renamed onAction evt to ‘action’

* Wrap up events progress and testing

* Rename to isTransitioning and COMPLETE_TRANSITION

* rm accidental dependency

* Suppoert event payload type
2018-01-25 00:13:28 -08:00
Brent Vatne
ebfbbe2c09 Delete some unnecessary noise 2018-01-24 20:21:16 -08:00
Brent Vatne
ecfa38bfd2 Remove flow (#3350)
* Remove flow types from src

* Finish removing Flow

* Clear out flow-typed, some flow mentions in docs, website flow usage, and some other config
2018-01-24 17:52:09 -08:00
Michael Duminy
276249c4c7 HeaderBackButton animation performance (#3305)
* header back button ripple animation performance

* replace InteractionManager with requestAnimationFrame

* getting used to flow typing
2018-01-23 14:03:51 -08:00
Brent Vatne
8cf2953115 Revert adding SafeAreaView to TabBarTop 2018-01-16 11:12:06 -08:00
Brent Vatne
7fa0ef3aee Handle translucent status bar within Expo automatically.
- Escape hatch of `ReactNavigation.SafeAreaView.setStatusBarHeight()`.
- `if (Platform.OS === 'android') { ReactNavigation.SafeAreaView.setStatusBarHeight(0) }` to revert to old behavior.
2018-01-12 15:34:40 -08:00
Brent Vatne
627c487936 Revert "Issue #2794 - Fixing iPad iOS 11 Tab Bar Bottom Behavior (#3041)"
This reverts commit c7b73cd8b4.
2018-01-11 18:21:46 -08:00
Adam Miskiewicz
bc75a5b7b9 Use stiffness/damping/mass for card stack transition on React Native >= 50 (#3261) 2018-01-11 18:08:42 -08:00
混沌DM
50d5c8bc0a Set the default value of the DrawerNavigatorConfig correctly. (#3152)
* Set the default value of the DrawerNavigatorConfig correctly.

* update DrawerViewProps type
2018-01-09 14:58:27 +05:30
SteffeyDev
c7b73cd8b4 Issue #2794 - Fixing iPad iOS 11 Tab Bar Bottom Behavior (#3041)
* Fixing iPad iOS 11 Tab Bar Bottom Behavior with changing widths via Multitasking

* Updating snapshot tests

* Changes per discussion in !3041

* Additional changes per discussion in !3041

* Changing to test for constrained height

* Additional changes per discussion in !3041
2018-01-08 20:28:13 -06:00
rgovind92
e2e540c32d Fix drawer toggle (#3191)
* Fixed drawer toggle

* Fixed drawer toggle

* Update DrawerView.js
2018-01-06 10:40:56 -05:00
Jani Eväkallio
4373544257 If URL is just a scheme:// component without a path, default to root "/" URL (#3224) 2018-01-04 13:28:41 -08:00
Satyajit Sahoo
8329e269b6 Upgrade react-native-tab-view (#3064) 2018-01-04 14:15:35 +00:00
Axel Eirola
41b587ca65 Enable configuration of gesture direction (#3077)
* Enable configuration of gesture direction

* Fix documentation and code style

* Invert behaviour of I18nManager.isRTL instead of overriding
2017-12-18 16:25:16 -05:00
Stephen O'Brien
faed4731bc Safe area view: support animated style values (#3124)
* Use Animated.View instead of View in SafeAreaView

This allows passing animated style properties in certain contexts, as previously supported.

* Update some test snapshots
2017-12-17 17:20:08 -06:00
Axel Eirola
363f93fc4d Add support for custom header transitions (#3075)
* Add support for custom header transitions

* Use default props for header transition default values
2017-12-14 22:14:38 +01:00
Ashoat Tevosyan
928f632c89 Don't use params from unrelated action when initializing nav state (#3094)
`TabRouter.getStateForAction` has some code at the start to initialize an empty nav state before handling any action. This initialization is achieved by passing `INIT` actions to all child routes. However, the code strangely also passes these child routes the params that were given to the action. The initialization should be separate from the processing of the action.
2017-12-12 11:00:33 +00:00
Patrick Monteith
950d0c6877 Don't delegate inner action to child router, handle inner action when handling NAVIGATE 2017-12-07 23:25:27 +08:00
Sergei
5a26506595 Disable / enable swipe depending on screen. (#2906)
* Disable / enable swipe depending on screen.

react-community#1760

* Updated to master

* Revert "Updated to master"

This reverts commit a3aede19588cdbc7fc9148d148260f51d6316e6f.

* - Fixed CircleCI errors

* - Fixed CircleCI errors
2017-12-01 15:53:26 -06:00
James Reggio
5cb42bdf5d Await promise from Transitioner onTransitionStart (#2946)
* Await promise from onTransitionStart

* Review feedback

* Update docs for onTransitionEnd
2017-12-01 15:42:53 -06:00
Flo
d5618ebd41 Drawer Improvement, Let define a route key to open/close multiple dra… (#1803)
* Drawer Improvement, Let define a route key to open/close multiple drawer with no side effects

* fix lint issues

* fix flow issues
2017-11-29 09:01:35 -06:00
Ashoat Tevosyan
f332b6bdf7 Add NavigationContainer and NavigationContainerProps types (#3030)
Adding types for these fixes the errors we're seeing when using `TabNavigator` and `StackNavigator`.
2017-11-22 14:42:17 +00:00
Spencer Carli
ad59d161db Fix #3020 (#3024) 2017-11-21 09:24:24 -06:00
Vojtech Novak
cc355dcee9 return null if it is passed (#3021) 2017-11-21 08:54:46 -06:00
Vojtech Novak
7f1fb8cdd8 revert TabBarBottom should hide itself when Keyboard is activated (#3013) 2017-11-20 19:18:35 -06:00
Dave Rogers
0a662c9835 Allow transition configuration between tabs (#2222)
* allow transition configuration between tabs

* we don't need to pass configureTransition to TabBarComponent

* Update TabAnimations.js

* Update TabNavigator.md
2017-11-21 00:16:43 +01:00
Ashoat Tevosyan
3cff180224 Update to react-native@0.50 and flow-bin@0.56 (#2998)
* Update to React Native 0.50

* Type Promise used in PlatformHelpers.web.js

* Move $FlowFixMe in CardStack.js

The line number Flow is using for this error changed. The underlying problem has not, but I don't have time to fix it now unfortunately.

* Type TouchableItem's children prop as React.Node

This was my bad. `React.ChildrenArray` should only really be used in the case of having multiple of the same type of child.

* Type HeaderTitle's children prop as React.Node

Same as last commit.

* Add assertion in StackRouter that StateUtils.indexOf returns valid index

Flow doesn't realize that `StateUtils.indexOf` is guaranteed to return a valid index, so we use `invariant` to assert it.

* Remove unused type DrawerNavigationState from TypeDefinition

* Remove unused type parameter T in DrawerView

* Type NavigationStateRoute as NavigationLeafRoute & NavigationState

* Don't constrain generic action types to NavigationAction

By constraining to subtypes of `NavigationAction`, we actually are requiring that any router satisfying our type constraints has to take all of the `NavigationAction` types. Instead, we want to say that it will only take some of them. Changing the types here to be inferred.

* Fix types of NavigationScreenProp and withCachedChildNavigation

1. `NavigationScreenProp` needs to have its type parameter annotated with a `+` to actually indicate covariance on that type parameter, apparently
2. `withCachedChildNavigation` needs to thread through more-specific `NavigationState`s, and right now it just discards that specificity, which breaks `DrawerSidebar` because it needs a `NavigationStateRoute`

* Ignore website/build from Flow

* Fix type of DrawerItems activeItemKey prop

- Even when specified, it can be `null`
- Use a ternary expression instead of `x && x.param` approach

* Get rid of NavigationRouter & NavigationNavigator parameterization on NavigationAction

Since `NavigationRouter`'s `getStateForAction` functionality is a standard Redux reducer, it knows to forward on any actions it doesn't know how to deal with. We can widen the types of these functions to be `NavigationAction` without any negative consequence.

* Explicitly specify null navigationOptions in createNavigator

Not sure why, but Flow doesn't like us leaving it unspecified

* Fix createNavigationContainer/createNavigator/StackNavigator types

* Fix up flow types for TabNavigator and DrawerNavigator

* Properly type defaultContentComponent

* Fix more flow errors in createNavigationContainer

* Replace NavigatorProps with NavigationNavigatorProps

* Type SceneView's navigation prop as NavigationScreenProp<any>

There is an unavoidable* type problem here. A `NavigationComponent` is either a navigator with a `NavigationStateRoute` or a scene with a `NavigationRoute`. The navigation prop it gets passed must match the component's `NavigationState`. However, there's no way for us to say that "`this.props.router.getComponentForRouteName` will have a `NavigationNavigator` iff the corresponding `childNavigationProps` is a `NavigationStateRoute`".

The cleanest way to make this work is to throw an "any" specifically for the navigation prop's state type param.

* We could probably avoid it with sufficient refactoring. If the routers were charged with keeping track of `childNavigationProps` instead of leaving it to the views, they could return the child navigation prop and child `NavigationComponent` in pairs whose types were coupled.

* Pass in screenProps to NavigationComponent in NavigationPlayground's CustomTabs

Flow wants `screenProps` to be passed in here for some reason...

It cites `SceneView`, but that doesn't really make much sense to me. But this is some custom logic that most people aren't likely to run into, so I'm not gonna worry too much about it.

* Patch mismatch with react-native-tab-view type for now

* Use generic NavigationState in createNavigationContainer's _nav var

We made the NavigationState generic while #1313 added a new instance variable. This updates the new instance variable to be generic.

* Fix failing tests
2017-11-20 13:53:48 -06:00
pietro909
88dfd84cf5 Add previous scene to tabBarOnPress - fix #2787 (#2790)
* Add previous scene to tabBarOnPress - fix #2787

* Update docs for tabBarOnPress
2017-11-19 16:00:10 -06:00
Ashoat Tevosyan
4e48d43f0f Allow strings Component types through as screens (#2999)
In React Fiber (React 16), strings are used for intrinsics like 'div' and 'View'. As a result, if you use a View as a screen in an academic experience, you get a red error screen. This PR prevents that from happening.
2017-11-19 15:04:33 -06:00
Daniel Friesen
caf83794e0 Dispatch can be called multiple times per tick (#1313)
Mostly fixes #1206
2017-11-18 02:15:10 +01:00
Daniel Friesen
e25bdd2ed2 Fix default width of drawer (#2978)
* Fix default width of drawer

Current implementation is simplified / broken.

- The drawerWidth doesn't work for tablets, the drawer becomes massively large
- Header size changes (and thus drawer width changes) in landscape mode on iOS are not accounted for
- An incorrect 64px header size is used for iOS (this includes the status bar height that doesn't belong in the calculation)

Implement a default drawerWidth as a function that follows the Material Design spec closer:
- Screen width - header height
- Use the correct iOS app bar height in portrait and landscape mode
- Drawer max height of 280 on mobile and 320 on tablet

* Update snapshot for drawer width change
2017-11-15 12:04:15 -08:00
James Reggio
346264e132 Add toString() with type for each NavigationAction (#2260)
* Add toString() with type for each NavigationAction

* Add documentation for toString() on NavigationActions
2017-11-15 04:19:55 +01:00
Dave Pack
f2f4e5ce44 Move SafeAreaView out of DrawerNavigatorItems to DrawerSidebar. (#2967)
* Move SafeAreaView out of DrawerNavigatorItems to DrawerSidebar.

The SafeAreaView was breaking custom contentContainers in drawers. Fixes #2963.

* Fix SafeAreaView in DrawerItems and Drawer contentComponent

* Fix flow error and tests.

* Update Drawer documentation with SafeAreaView recommendation. Remove one of the examples for `contentComponent`.

* Put the View back.

* Update snapshot.
2017-11-14 14:09:59 -06:00
Vojtech Novak
931677781e Allow custom header and back button to use the props from react-navigation (#2712)
* allow custom header components

* nicer condtition

* trigger another build

* trigger another build

* distinguist headerLeft component and element

* add docs

* fix typo

* suppress flow
2017-11-14 13:31:21 -06:00