setTabButton to change the label of the TabButton (#2215)
* setTabButton -> has now the property 'label' to change the label of the TabButton
* Add to documentation
* [BugFix] use i instead of 0 to check all TabItems
Add the preview and pop feature
To use the feature you simply call `navigator.push()` but with additional parameter `previewViewID` which is a React Node.
```js
<TouchableOpacity
onPressIn={() => this.props.navigator.push({
screen: 'screenid',
previewView: this.viewRef,
previewActions: [{
title: 'Foo',
style: 'selected', // none, selected, destructive
actions: [{ title: 'Bar' }],
}],
})
/>
```
This commit saves navBar component props in propsRegistry and restores the saved props
when the component is mounted, allowing us to pass unserializable props to custom navBar component.
Support passing unserializable props to custom button (#2192)
This commit applies the save props mechanism used when pushing screen
to navigator buttons as well, enabling us to pass unserializable props to buttons.
* added method for getting the currently visible screen ID. Can be useful to decide if logic should be applied according to screen visibility, for example: set buttons/title dynamically, or even determine that you don’t need to show the same screen again if it’s the current one that’s showing
* Implement getCurrentlyVisibleScreenId on Android
Can be used statically:
Navigation.getCurrentlyVisibleScreenId() - returns the unique screen
instance id
With a navigator instance:
await this.props.navigator.screenIsCurrentlyVisible() - resolves a
promise that checks if the current screen is visible
* Add screen visibility listener which can be registered globally
API
new ScreenVisibilityListener({
willAppear: ({screen, timestamp}) => console.log(`Displaying screen ${screen}`),
didAppear: ({screen, timestamp}) => console.log(`Screen ${screen} displayed in ${Date.now() - timestamp} millis`)
}).register();
todo
* Add timestamp to modal, resetTo
* implement unregister
* implement iOS
* Add global screen visibility listener to example app
* Think I better assign a value to emitter
* Send timestamp in resetTo
* Moved listener to library, it can be deleted from the app
* Add push and resetTo buttons to pushed screens
* Send appear/disappear events after animation ends
* Pass pop timestamp from js
* Send timestamp in popToRoot
* Add popToRoot button in push screen
* Add few navigation buttons to modal screen
* Pass timestamp to tabs
relevant only to first/initial tab
* Update timestamp when navigating between BottomTabs
* Send screen visible events after modal dismiss
* log willDisappear and didDisappear
* Report both start and end timestamps
* Implement unregister
* Send NavigationType parameter in visibilityEvent
This indicates the type of the navigation command that triggered the visibility change
* Rename pushInitialScreen to more explicit name
* Fix duplicate initialScreen visibility events
* Update screen visibility log statement
* Show popToRoot in modal screen only if screens were pushed
* implement global screen event for iOS
* fix lint issues
* Set to use old bridge for compatibility with 0.30+
* Fixed crash occurring when tabBarBackgroundColor or tabBarButtonColor is not supplied
* Adds setStyle property to index.js
* Adds native code for setting style on RCCViewController
* Fixes setStyle function
* Fixes setting style on navigator
* Adds some styling to tab bar controller and fixes some bugs
* Adds ability to set modal presentation style
* Makes sure autoAdjustScrollViewInsets isn't propagated through when push another view controller
* Changes import to reference controllers rather than react-native-controllers and fixes setStyle mutating colours
* Fixed to work with RN 33
* Fixes updating title font styling with new RCCTitleViewHelper logic
* Fixes subtitle being shown
* Adds extendedLayoutIncludesOpaqueBars to navigation styling
* Adds ability to add shadows to text in navigation bar / tab bar
* Fixed merged ReactGateway.java file
* Fixed issue with rightButtons getting ignored in preference for empty Screen buttons
* Fixes compiler error
* Add showInAppNotification autoDismissTimerSec param
* Default autoDismissTimerSec of notification to 5, like on iOS
* Add param to disable notification auto-dismiss behaviour.
* Update showInAppNotification example with optional params
Pass the style parameter to DrawerControllerIOS (#578)
Now the style parameter is used inside RCCDrawerController but it's not passed through startTabBasedApp/startSingleScreenApp. Passing the style parameter allows to disable sidebar shadow trough style.drawerShadow.