Use resolved child options when applying stack child options
When a stack’s child appears we previously applied the child’s options on the stack, without merging the child and the stack’s options.
This commit fixes this by resolving options of all visible children when applying child options.
Adds uid=501(saleksandras) gid=20(staff) groups=20(staff),401(com.apple.sharepoint.group.1),12(everyone),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),33(_appstore),100(_lpoperator),204(_developer),250(_analyticsusers),395(com.apple.access_ftp),398(com.apple.access_screensharing),399(com.apple.access_ssh) and to OptionsTopBarTitle.component (#4078)
Apply resolved options each time a child controller appears
This commit fixes #4045, which revealed a design flaw in the options applying logic.
Child options are applied when a ViewController.onViewAppeared is invoked.
A ViewController's appearance is determined from a GlobalLayoutListener.
Consider the following layout hierarchy:
BottomTabs > Stack > Component
onViewAppeared will be triggered for the BottomTabs first, then for the Stack and last for the component.
This means that if the Stack and the Component options will be applied consecutively which in some cases
might case flickering, mostly when drawBehind options are applied.
Relying on WRAP_CONTENT caused rare bugs where the TopBar would appear stretched due to flex issues
when a react component was displayed in the title.
Another reason for this change is that we don’t need to wait for the TopBar to measure itself when its height needs to be taken
into account, for example when animating it or when positioning views below it.
* Fix ability to add color for back button
* Change docs because color can be used with iOS too
* Simplify code more
* Move icon logic to one function
* Make returning more clear
* Remove title setting because it is in setBackItem
* Make setBackItem function more clear
* Looks like the if is not needed
* Update RNNBackButtonOptions.m
* Update RNNBackButtonOptions.m
* Renamed RNNRootViewProtocol to RNNParentProtocol and added RNNLeafProtocol
* fixed unit test
* Better options resolving
* Revert "Revert "Refactor options (#3962)""
This reverts commit c266041b85.
* Revert "Revert "Fixes shared element transition""
This reverts commit 005f039f7c.
* Revert "Revert "Adresses #3963 - stack options applied to children""
This reverts commit be09cb0e9a.
* Revert "Revert "Added unit test coverage for RNNNavigationController""
This reverts commit 199cebd221.
* Merge stack options
This commits adds support for merging stack options by the stack’s componentId
Also while I’m at it - use fade animation when setting root
* Merge BottomTabs options
Merge BottomTabs options when calling mergeOptions with BottomTabs componentId
* Fixes options
When TopBar is initially hidden it’s never measured, therefor when pushing a screen we need to wait for it to be measured before taking its height into account
when handling drawBehind properties and the like.
* Removed possibleOpenGesture MMOpenDrawerGestureModePanningCenterView possibleOpenGestureModesForGestureRecognizer. This allows swipeable componenets like swipeable lists to be used on iOS.
* Revert "Removed possibleOpenGesture MMOpenDrawerGestureModePanningCenterView possibleOpenGestureModesForGestureRecognizer. This allows swipeable componenets like swipeable lists to be used on iOS."
This reverts commit f2500be9f7.
* Revert "Removed possibleOpenGesture MMOpenDrawerGestureModePanningCenterView possibleOpenGestureModesForGestureRecognizer. This allows swipeable componenets like swipeable lists to be used on iOS."
This reverts commit f2500be9f7.
* Allow styling of default back button on iOS.
This commit started with a small fix to a TopBar visibility issue detailed in #3971 which unveiled
a few issues with how options are resolved and merged.
TopBar visibility
The initial TopBar visibility issue was a result of hide animators now being cancelled when pushing another screen.
Another issue was that if the TopBar was not measured (Initial stack child was shown with `TopBar.visible = false`),
the start value passed to the Y translation was 0. This commit makes sure the TopBar show animation starts after the TopBar is measured.
Options issues
When resolving current issues in ParentControllers, the options of the current child were wrongfully taken into account.
This commit changes options resolve logic so that initial options (and options dynamically merged to them via mergeOptions call) are merged.