This commit introduces an option to control the way components are pushed into the stack.
When pushing components into a stack, they are pushed the moment they are measured.
If `waitForRender` is true, components will be pushed only after the initial render.
api:
```js
options: {
animations: {
push: {
waitForRender: true
},
showModal: {
waitForRender: true
}
}
}
```
This commit removes NavigationOptionsListener as it was not needed anymore.
As a result, it uncovered a few issues which this commit also aims to fix.
* Set SideMenuController as parent of left, right and centre controllers
* Select tab by id with tabSelector interface
* mergeOptions now also applies options after merge - in ViewController base class
* Pull presentation logic from ComponentLayout to ComponentViewController
* Change topBar backgroundColor to Color object
* StackLayout implementation
Unfortunately, this commit also contains a lot of refactoring and a few
bug fixes relating to styles.
* TopBar is not part of Component, instead it's a part of StackLayout
and shared between all components pushed to the stack Similar to iOS.
* Handle ScrollEvent in ReactView instead of passing the listener down
* Implement Fraction and Text null objects for style params
* Converted a few style params to null objects. This fixes some styles
being applied even when they were not specified explicitly.
* Stop sending null promise to commands
* Seperate push and pop into animatePush/push and animatePop/pop
to avoid boolean param
* Adapt TopTabs to new API
* upstream merge
* Fixed bad merge
* More bad merges
* Mostly done, however a few properties missing and tests remain.
* async icons loading
* Left button
* Whoops!
* Added button size
* updated docs
* refactor
* Rebase fixes
* Rebase fixes
* rebase fix
* Rebase fixes
* rebase fixes
* reset contributing
Further work on TopTabs and some refactoring (#2362)
* Further work on TopTabs and some refactoring
* OptionsPresenter receives views as params
* Remove TopBar and style logic from ViewControllers, these are the OptionsPresenters concern
* StackAnimator isn't coupled to LinearLayout
* Convert Runnable to lambda
* ContainerLayout now implements ReactContainer interface
* Enable desugaring in playground app
* TopTabs unit tests
* Restructure TopTabsLayout
* Refactor Containers
* Consolidate view creators. For some reason we had double abstraction layer and had creators invoking creators
* Rename ContainerView to ContainerLayout
* fix test