react-native-navigation 7.23.1 → 7.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.buildkite/pipeline.yml +51 -11
- package/.nvmrc +1 -0
- package/Mock.d.ts +1 -0
- package/Mock.js +4 -0
- package/Mock.ts +1 -1
- package/README.md +0 -1
- package/jest.config.js +40 -0
- package/lib/{src/Mock → Mock}/Application.tsx +0 -0
- package/lib/{src/Mock → Mock}/ComponentProps.tsx +0 -0
- package/lib/{src/Mock → Mock}/Components/BottomTabs.tsx +0 -0
- package/lib/{src/Mock → Mock}/Components/ComponentScreen.tsx +13 -2
- package/lib/{src/Mock → Mock}/Components/LayoutComponent.tsx +0 -0
- package/lib/{src/Mock → Mock}/Components/Modals.tsx +0 -0
- package/lib/{src/Mock → Mock}/Components/NavigationButton.tsx +1 -1
- package/lib/{src/Mock → Mock}/Components/Overlays.tsx +0 -0
- package/lib/{src/Mock → Mock}/Components/Stack.tsx +0 -0
- package/lib/{src/Mock → Mock}/Components/TopBar.tsx +2 -2
- package/lib/{src/Mock → Mock}/Layouts/BottomTabsNode.ts +1 -1
- package/lib/{src/Mock → Mock}/Layouts/ComponentNode.ts +1 -1
- package/lib/{src/Mock → Mock}/Layouts/LayoutNodeFactory.ts +0 -0
- package/lib/{src/Mock → Mock}/Layouts/Node.ts +1 -1
- package/lib/{src/Mock → Mock}/Layouts/ParentNode.ts +2 -2
- package/lib/{src/Mock → Mock}/Layouts/StackNode.ts +0 -0
- package/lib/{src/Mock → Mock}/Stores/EventsStore.ts +10 -2
- package/lib/{src/Mock → Mock}/Stores/LayoutStore.ts +3 -2
- package/lib/{src/Mock → Mock}/connect.ts +0 -0
- package/lib/Mock/constants.d.ts +2 -0
- package/lib/Mock/constants.js +5 -0
- package/lib/{src/Mock → Mock}/constants.ts +0 -0
- package/lib/Mock/index.d.ts +3 -0
- package/lib/Mock/index.js +14 -0
- package/lib/{src/Mock → Mock}/index.ts +0 -0
- package/lib/{src/Mock → Mock}/mocks/AppRegistryService.ts +0 -0
- package/lib/{src/Mock → Mock}/mocks/NativeCommandsSender.tsx +1 -1
- package/lib/{src/Mock → Mock}/mocks/NativeEventsReceiver.ts +7 -4
- package/lib/android/app/build.gradle +23 -21
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/FontOptions.kt +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/HardwareBackButtonOptions.kt +35 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +32 -17
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/Options.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/parsers/TypefaceLoader.kt +16 -10
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +5 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalFrameLayout.kt +3 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalViewManager.kt +11 -8
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +168 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +5 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +42 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +12 -16
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +19 -11
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewController.java +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenter.java +6 -4
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManager.kt +8 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +15 -7
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +127 -138
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +183 -22
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonController.kt +25 -4
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +9 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonSpan.kt +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +52 -71
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/component/ComponentLayout.java +2 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageMatrixAnimator.kt +2 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/TopBar.java +1 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/ButtonBar.kt +7 -12
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleAndButtonsContainer.kt +0 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleSubTitleLayout.kt +0 -7
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +2 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +7 -6
- package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +5 -0
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +5 -4
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +3 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +5 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +2 -3
- package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +25 -10
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +25 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +1 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/{TitleAndButtonsMeasurer.kt → TitleAndButtonsMeasurerTest.kt} +2 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +2 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +1 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +572 -0
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +1 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +2 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +5 -5
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +1 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +1 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +7 -3
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +17 -4
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +2 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +5 -5
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +1 -0
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +4 -0
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +6 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +1 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +13 -8
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +58 -51
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +219 -41
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +4 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +2 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +4 -4
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +1 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +4 -4
- package/lib/dist/Mock/Application.js +2 -2
- package/lib/dist/Mock/Components/BottomTabs.js +2 -2
- package/lib/dist/Mock/Components/ComponentScreen.js +15 -5
- package/lib/dist/Mock/Components/LayoutComponent.js +3 -2
- package/lib/dist/Mock/Components/Modals.js +2 -2
- package/lib/dist/Mock/Components/NavigationButton.d.ts +1 -1
- package/lib/dist/Mock/Components/NavigationButton.js +8 -10
- package/lib/dist/Mock/Components/Overlays.js +2 -2
- package/lib/dist/Mock/Components/Stack.js +2 -2
- package/lib/dist/Mock/Components/TopBar.d.ts +2 -2
- package/lib/dist/Mock/Components/TopBar.js +7 -6
- package/lib/dist/Mock/Layouts/BottomTabsNode.d.ts +1 -1
- package/lib/dist/Mock/Layouts/BottomTabsNode.js +3 -3
- package/lib/dist/Mock/Layouts/ComponentNode.d.ts +1 -1
- package/lib/dist/Mock/Layouts/ComponentNode.js +4 -4
- package/lib/dist/Mock/Layouts/LayoutNodeFactory.js +3 -3
- package/lib/dist/Mock/Layouts/Node.d.ts +1 -1
- package/lib/dist/Mock/Layouts/Node.js +5 -0
- package/lib/dist/Mock/Layouts/ParentNode.d.ts +2 -2
- package/lib/dist/Mock/Layouts/ParentNode.js +4 -3
- package/lib/dist/Mock/Layouts/StackNode.js +1 -1
- package/lib/dist/Mock/Stores/EventsStore.d.ts +5 -2
- package/lib/dist/Mock/Stores/EventsStore.js +7 -0
- package/lib/dist/Mock/Stores/LayoutStore.js +6 -3
- package/lib/dist/Mock/connect.js +1 -1
- package/lib/dist/Mock/index.js +1 -1
- package/lib/dist/Mock/mocks/NativeCommandsSender.d.ts +1 -1
- package/lib/dist/Mock/mocks/NativeCommandsSender.js +2 -2
- package/lib/dist/Mock/mocks/NativeEventsReceiver.d.ts +3 -3
- package/lib/dist/Mock/mocks/NativeEventsReceiver.js +6 -3
- package/lib/dist/{Navigation.d.ts → src/Navigation.d.ts} +0 -0
- package/lib/dist/{Navigation.js → src/Navigation.js} +19 -3
- package/lib/dist/{NavigationDelegate.d.ts → src/NavigationDelegate.d.ts} +0 -0
- package/lib/dist/{NavigationDelegate.js → src/NavigationDelegate.js} +1 -0
- package/lib/dist/{adapters → src/adapters}/AppRegistryService.d.ts +0 -0
- package/lib/dist/{adapters → src/adapters}/AppRegistryService.js +0 -0
- package/lib/dist/{adapters → src/adapters}/AssetResolver.d.ts +0 -0
- package/lib/dist/{adapters → src/adapters}/AssetResolver.js +0 -0
- package/lib/dist/src/adapters/ColorService.d.ts +3 -0
- package/lib/dist/{adapters → src/adapters}/ColorService.js +1 -1
- package/lib/dist/{adapters → src/adapters}/Constants.d.ts +0 -0
- package/lib/dist/{adapters → src/adapters}/Constants.js +10 -6
- package/lib/dist/{adapters → src/adapters}/NativeCommandsSender.d.ts +0 -0
- package/lib/dist/{adapters → src/adapters}/NativeCommandsSender.js +1 -0
- package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.d.ts +0 -0
- package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.js +1 -0
- package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.mock.d.ts +0 -0
- package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.mock.js +0 -0
- package/lib/dist/{adapters → src/adapters}/TouchablePreview.d.ts +0 -0
- package/lib/dist/src/adapters/TouchablePreview.js +89 -0
- package/lib/dist/{adapters → src/adapters}/UniqueIdProvider.d.ts +0 -0
- package/lib/dist/{adapters → src/adapters}/UniqueIdProvider.js +2 -2
- package/lib/dist/{commands → src/commands}/Commands.d.ts +0 -0
- package/lib/dist/{commands → src/commands}/Commands.js +24 -10
- package/lib/dist/{commands → src/commands}/Deprecations.d.ts +0 -0
- package/lib/dist/src/commands/Deprecations.js +80 -0
- package/lib/dist/{commands → src/commands}/LayoutTreeCrawler.d.ts +0 -0
- package/lib/dist/{commands → src/commands}/LayoutTreeCrawler.js +4 -2
- package/lib/dist/{commands → src/commands}/LayoutTreeParser.d.ts +0 -0
- package/lib/dist/{commands → src/commands}/LayoutTreeParser.js +1 -0
- package/lib/dist/{commands → src/commands}/LayoutType.d.ts +0 -0
- package/lib/dist/{commands → src/commands}/LayoutType.js +0 -0
- package/lib/dist/{commands → src/commands}/OptionsCrawler.d.ts +0 -0
- package/lib/dist/{commands → src/commands}/OptionsCrawler.js +6 -4
- package/lib/dist/{commands → src/commands}/OptionsProcessor.d.ts +1 -1
- package/lib/dist/{commands → src/commands}/OptionsProcessor.js +50 -42
- package/lib/dist/{components → src/components}/ComponentRegistry.d.ts +0 -0
- package/lib/dist/{components → src/components}/ComponentRegistry.js +4 -0
- package/lib/dist/{components → src/components}/ComponentWrapper.d.ts +0 -0
- package/lib/dist/{components → src/components}/ComponentWrapper.js +17 -17
- package/lib/dist/{components → src/components}/Modal.d.ts +0 -0
- package/lib/dist/{components → src/components}/Modal.js +8 -8
- package/lib/dist/{components → src/components}/Store.d.ts +2 -0
- package/lib/dist/{components → src/components}/Store.js +13 -6
- package/lib/dist/{events → src/events}/CommandsObserver.d.ts +0 -0
- package/lib/dist/{events → src/events}/CommandsObserver.js +2 -1
- package/lib/dist/{events → src/events}/ComponentEventsObserver.d.ts +4 -2
- package/lib/dist/{events → src/events}/ComponentEventsObserver.js +16 -14
- package/lib/dist/{events → src/events}/EventsRegistry.d.ts +2 -2
- package/lib/dist/{events → src/events}/EventsRegistry.js +3 -0
- package/lib/dist/{index.d.ts → src/index.d.ts} +0 -0
- package/lib/dist/src/index.js +22 -0
- package/lib/dist/{interfaces → src/interfaces}/CommandName.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/CommandName.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/ComponentEvents.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/ComponentEvents.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/EventSubscription.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/EventSubscription.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/Events.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/Events.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/Layout.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/Layout.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/NavigationComponent.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/NavigationComponent.js +8 -1
- package/lib/dist/{interfaces → src/interfaces}/NavigationComponentListener.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/NavigationComponentListener.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/NavigationComponentProps.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/NavigationComponentProps.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/NavigationFunctionComponent.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/NavigationFunctionComponent.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/Options.d.ts +9 -0
- package/lib/dist/{interfaces → src/interfaces}/Options.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/ProcessorSubscription.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/ProcessorSubscription.js +0 -0
- package/lib/dist/{interfaces → src/interfaces}/Processors.d.ts +0 -0
- package/lib/dist/{interfaces → src/interfaces}/Processors.js +0 -0
- package/lib/dist/{processors → src/processors}/LayoutProcessor.d.ts +0 -0
- package/lib/dist/{processors → src/processors}/LayoutProcessor.js +1 -0
- package/lib/dist/{processors → src/processors}/LayoutProcessorsStore.d.ts +0 -0
- package/lib/dist/{processors → src/processors}/LayoutProcessorsStore.js +1 -3
- package/lib/dist/{processors → src/processors}/OptionProcessorsStore.d.ts +0 -0
- package/lib/dist/{processors → src/processors}/OptionProcessorsStore.js +1 -3
- package/lib/dist/{types.d.ts → src/types.d.ts} +0 -0
- package/lib/dist/{types.js → src/types.js} +0 -0
- package/lib/ios/AnimationObserver.h +17 -0
- package/lib/ios/AnimationObserver.m +41 -0
- package/lib/ios/BottomTabPresenter.h +0 -3
- package/lib/ios/BottomTabPresenter.m +0 -8
- package/lib/ios/RNNAssert.h +2 -2
- package/lib/ios/RNNBasePresenter.h +0 -4
- package/lib/ios/RNNBasePresenter.m +0 -12
- package/lib/ios/RNNBottomTabOptions.m +2 -1
- package/lib/ios/RNNBottomTabsController.m +8 -8
- package/lib/ios/RNNBridgeManager.mm +0 -1
- package/lib/ios/RNNButtonBuilder.m +2 -0
- package/lib/ios/RNNButtonOptions.h +1 -0
- package/lib/ios/RNNButtonOptions.m +4 -0
- package/lib/ios/RNNCommandsHandler.m +15 -8
- package/lib/ios/RNNComponentPresenter.m +0 -4
- package/lib/ios/RNNComponentViewController.m +2 -4
- package/lib/ios/RNNDotIndicatorPresenter.m +2 -1
- package/lib/ios/RNNExternalViewController.m +2 -4
- package/lib/ios/RNNModalManager.h +2 -1
- package/lib/ios/RNNModalManager.m +12 -21
- package/lib/ios/RNNSegmentedControl.h +1 -1
- package/lib/ios/RNNSideMenuChildVC.m +0 -4
- package/lib/ios/RNNSideMenuController.m +0 -4
- package/lib/ios/RNNSplitViewController.m +0 -4
- package/lib/ios/RNNStackController.m +0 -4
- package/lib/ios/RNNStackPresenter.m +3 -0
- package/lib/ios/RNNSwizzles.m +20 -0
- package/lib/ios/RNNTabBarItemCreator.m +3 -2
- package/lib/ios/RNNUIBarButtonItem.h +2 -0
- package/lib/ios/RNNUIBarButtonItem.m +17 -0
- package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -0
- package/lib/ios/TopBarPresenter.m +8 -4
- package/lib/ios/UIViewController+RNNOptions.m +1 -1
- package/lib/src/commands/Commands.ts +6 -1
- package/lib/src/commands/LayoutTreeCrawler.ts +2 -2
- package/lib/src/commands/OptionsCrawler.ts +2 -1
- package/lib/src/commands/OptionsProcessor.ts +15 -13
- package/lib/src/components/Store.ts +9 -0
- package/lib/src/events/ComponentEventsObserver.ts +5 -1
- package/lib/src/events/EventsRegistry.ts +2 -1
- package/lib/src/interfaces/Options.ts +10 -0
- package/package.json +19 -60
- package/tsconfig.mocks.json +7 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java +0 -41
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.java +0 -511
- package/lib/dist/adapters/ColorService.d.ts +0 -3
- package/lib/dist/adapters/TouchablePreview.js +0 -91
- package/lib/dist/commands/Deprecations.js +0 -82
- package/lib/dist/index.js +0 -22
|
@@ -4,17 +4,15 @@ import android.content.Context
|
|
|
4
4
|
import android.graphics.PorterDuff
|
|
5
5
|
import android.graphics.PorterDuffColorFilter
|
|
6
6
|
import android.text.SpannableString
|
|
7
|
-
import android.transition.AutoTransition
|
|
8
|
-
import android.transition.TransitionManager
|
|
9
7
|
import android.view.MenuItem
|
|
10
8
|
import android.view.View
|
|
11
9
|
import android.view.ViewGroup
|
|
12
10
|
import androidx.appcompat.widget.ActionMenuView
|
|
13
11
|
import androidx.appcompat.widget.Toolbar
|
|
12
|
+
import androidx.core.view.children
|
|
14
13
|
import com.reactnativenavigation.utils.ObjectUtils
|
|
15
14
|
import com.reactnativenavigation.utils.ViewUtils
|
|
16
15
|
import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonController
|
|
17
|
-
|
|
18
16
|
open class ButtonBar internal constructor(context: Context) : Toolbar(context) {
|
|
19
17
|
var shouldAnimate: Boolean=false
|
|
20
18
|
|
|
@@ -43,23 +41,17 @@ open class ButtonBar internal constructor(context: Context) : Toolbar(context) {
|
|
|
43
41
|
get() = menu.size()
|
|
44
42
|
|
|
45
43
|
fun addButton(menuItem: Int, intId: Int, order: Int, styledText: SpannableString): MenuItem? {
|
|
46
|
-
if(shouldAnimate)
|
|
47
|
-
TransitionManager.beginDelayedTransition(this,AutoTransition())
|
|
48
44
|
return this.menu?.add(menuItem,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
intId,
|
|
46
|
+
order,
|
|
47
|
+
styledText)
|
|
52
48
|
}
|
|
53
49
|
|
|
54
50
|
fun removeButton(buttonId: Int) {
|
|
55
|
-
if(shouldAnimate)
|
|
56
|
-
TransitionManager.beginDelayedTransition(this,AutoTransition())
|
|
57
51
|
menu.removeItem(buttonId)
|
|
58
52
|
}
|
|
59
53
|
|
|
60
54
|
open fun clearButtons() {
|
|
61
|
-
if(shouldAnimate)
|
|
62
|
-
TransitionManager.beginDelayedTransition(this,AutoTransition())
|
|
63
55
|
clearBackButton()
|
|
64
56
|
if (menu.size() > 0) menu.clear()
|
|
65
57
|
}
|
|
@@ -68,6 +60,9 @@ open class ButtonBar internal constructor(context: Context) : Toolbar(context) {
|
|
|
68
60
|
return menu.getItem(index)
|
|
69
61
|
}
|
|
70
62
|
|
|
63
|
+
fun getButtonById(id: Int): MenuItem? {
|
|
64
|
+
return menu.children.firstOrNull { it.itemId == id }
|
|
65
|
+
}
|
|
71
66
|
fun containsButton(menuItem: MenuItem?, order: Int): Boolean {
|
|
72
67
|
return menuItem != null && menu.findItem(menuItem.itemId) != null && menuItem.order == order
|
|
73
68
|
}
|
|
@@ -76,8 +76,6 @@ class TitleAndButtonsContainer(context: Context) : ViewGroup(context) {
|
|
|
76
76
|
|
|
77
77
|
fun setSubTitleTextAlignment(alignment: Alignment) = titleSubTitleBar.setSubTitleAlignment(alignment)
|
|
78
78
|
|
|
79
|
-
fun setTitleTextAlignment(alignment: Alignment) = titleSubTitleBar.setTitleAlignment(alignment)
|
|
80
|
-
|
|
81
79
|
fun setBackgroundColor(color: ThemeColour) = if (color.hasValue()) setBackgroundColor(color.get()) else Unit
|
|
82
80
|
|
|
83
81
|
fun setTitleFontSize(size: Float) = titleSubTitleBar.setTitleFontSize(size)
|
|
@@ -38,13 +38,6 @@ class TitleSubTitleLayout(context: Context) : LinearLayout(context) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
fun setTitleAlignment(alignment: Alignment) {
|
|
42
|
-
if (alignment == Alignment.Center) {
|
|
43
|
-
(this.titleTextView.layoutParams as LayoutParams).gravity = Gravity.CENTER
|
|
44
|
-
} else {
|
|
45
|
-
(this.titleTextView.layoutParams as LayoutParams).gravity = Gravity.START or Gravity.CENTER_VERTICAL
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
41
|
|
|
49
42
|
fun setTitleFontSize(size: Float) = titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, size)
|
|
50
43
|
|
|
@@ -8,6 +8,7 @@ import com.facebook.react.ReactPackage;
|
|
|
8
8
|
import com.facebook.react.common.LifecycleState;
|
|
9
9
|
import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
|
|
10
10
|
import com.reactnativenavigation.NavigationApplication;
|
|
11
|
+
import com.facebook.hermes.reactexecutor.HermesExecutorFactory;
|
|
11
12
|
|
|
12
13
|
import androidx.annotation.NonNull;
|
|
13
14
|
import androidx.annotation.Nullable;
|
|
@@ -44,7 +45,7 @@ public abstract class NavigationReactNativeHost extends ReactNativeHost implemen
|
|
|
44
45
|
.setJSMainModulePath(getJSMainModuleName())
|
|
45
46
|
.setUseDeveloperSupport(getUseDeveloperSupport())
|
|
46
47
|
.setRedBoxHandler(getRedBoxHandler())
|
|
47
|
-
.setJavaScriptExecutorFactory(
|
|
48
|
+
.setJavaScriptExecutorFactory(new HermesExecutorFactory())
|
|
48
49
|
.setUIImplementationProvider(getUIImplementationProvider())
|
|
49
50
|
.setInitialLifecycleState(LifecycleState.BEFORE_CREATE)
|
|
50
51
|
.setDevBundleDownloadListener(getDevBundleDownloadListener());
|
|
@@ -21,7 +21,7 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
|
|
21
21
|
|
|
22
22
|
import com.reactnativenavigation.options.params.Bool;
|
|
23
23
|
import com.reactnativenavigation.utils.Functions;
|
|
24
|
-
import com.reactnativenavigation.utils.
|
|
24
|
+
import com.reactnativenavigation.utils.SystemUiUtils;
|
|
25
25
|
import com.reactnativenavigation.utils.ViewUtils;
|
|
26
26
|
import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
|
|
27
27
|
|
|
@@ -59,15 +59,16 @@ public abstract class BaseTest {
|
|
|
59
59
|
when(res.getColor(ArgumentMatchers.anyInt(),any())).thenReturn(0x00000);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
|
|
63
|
+
public void mockSystemUiUtils(int statusBarHeight, int statusBarHeightDp, Functions.Func1<MockedStatic<SystemUiUtils>> mockedBlock) {
|
|
64
|
+
try (MockedStatic<SystemUiUtils> theMock = Mockito.mockStatic(SystemUiUtils.class)) {
|
|
64
65
|
theMock.when(() -> {
|
|
65
|
-
|
|
66
|
+
SystemUiUtils.getStatusBarHeight(any());
|
|
66
67
|
}).thenReturn(statusBarHeight);
|
|
67
68
|
theMock.when(() -> {
|
|
68
|
-
|
|
69
|
+
SystemUiUtils.getStatusBarHeightDp(any());
|
|
69
70
|
}).thenReturn(statusBarHeightDp);
|
|
70
|
-
|
|
71
|
+
mockedBlock.run(theMock);
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
|
|
@@ -3,12 +3,13 @@ package com.reactnativenavigation.mocks
|
|
|
3
3
|
import android.graphics.Canvas
|
|
4
4
|
import android.graphics.ColorFilter
|
|
5
5
|
import android.graphics.drawable.Drawable
|
|
6
|
-
|
|
7
|
-
import com.nhaarman.mockitokotlin2.doAnswer
|
|
8
|
-
import com.nhaarman.mockitokotlin2.mock
|
|
9
|
-
import com.nhaarman.mockitokotlin2.whenever
|
|
6
|
+
|
|
10
7
|
import com.reactnativenavigation.utils.ImageLoader
|
|
11
8
|
import com.reactnativenavigation.utils.ImageLoader.ImagesLoadingListener
|
|
9
|
+
import org.mockito.Mockito.doAnswer
|
|
10
|
+
import org.mockito.kotlin.any
|
|
11
|
+
import org.mockito.kotlin.mock
|
|
12
|
+
import org.mockito.kotlin.whenever
|
|
12
13
|
import java.util.*
|
|
13
14
|
|
|
14
15
|
object ImageLoaderMock {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
package com.reactnativenavigation.mocks
|
|
2
2
|
|
|
3
3
|
import android.view.ViewGroup
|
|
4
|
-
|
|
5
|
-
import com.nhaarman.mockitokotlin2.whenever
|
|
4
|
+
|
|
6
5
|
import com.reactnativenavigation.options.Options
|
|
7
6
|
import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController
|
|
7
|
+
import org.mockito.kotlin.mock
|
|
8
|
+
import org.mockito.kotlin.whenever
|
|
8
9
|
|
|
9
10
|
object Mocks {
|
|
10
11
|
fun viewController(): ViewController<*> {
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
package com.reactnativenavigation.mocks
|
|
2
2
|
|
|
3
3
|
import android.graphics.Typeface
|
|
4
|
-
import com.nhaarman.mockitokotlin2.mock
|
|
5
4
|
import com.reactnativenavigation.options.parsers.TypefaceLoader
|
|
5
|
+
import org.mockito.kotlin.mock
|
|
6
6
|
|
|
7
7
|
class TypefaceLoaderMock() : TypefaceLoader(mock()) {
|
|
8
8
|
private var mockTypefaces: Map<String, Typeface>? = null
|
|
9
9
|
|
|
10
10
|
constructor(mockTypefaces: Map<String, Typeface>?) : this() {
|
|
11
11
|
this.mockTypefaces = mockTypefaces
|
|
12
|
+
|
|
12
13
|
}
|
|
13
14
|
|
|
15
|
+
override val defaultTypeFace: Typeface
|
|
16
|
+
get() = Typeface.DEFAULT
|
|
17
|
+
|
|
14
18
|
override fun getTypeFace(fontFamilyName: String?, fontStyle: String?, fontWeight: String?, defaultTypeFace: Typeface?): Typeface? {
|
|
15
19
|
return mockTypefaces?.getOrDefault(fontFamilyName, defaultTypeFace) ?: defaultTypeFace
|
|
16
20
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
package com.reactnativenavigation.options
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import com.nhaarman.mockitokotlin2.whenever
|
|
2
|
+
import org.mockito.kotlin.mock
|
|
3
|
+
import org.mockito.kotlin.whenever
|
|
5
4
|
import com.reactnativenavigation.BaseTest
|
|
6
5
|
import org.assertj.core.api.Assertions.assertThat
|
|
7
6
|
import org.json.JSONArray
|
package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java
CHANGED
|
@@ -1,41 +1,56 @@
|
|
|
1
1
|
package com.reactnativenavigation.presentation;
|
|
2
2
|
|
|
3
3
|
import android.app.Activity;
|
|
4
|
+
import android.view.View;
|
|
4
5
|
import android.view.ViewGroup;
|
|
5
6
|
import android.widget.FrameLayout;
|
|
6
7
|
|
|
7
8
|
import com.reactnativenavigation.BaseTest;
|
|
8
9
|
import com.reactnativenavigation.options.Options;
|
|
9
10
|
import com.reactnativenavigation.options.params.Bool;
|
|
11
|
+
import com.reactnativenavigation.utils.SystemUiUtils;
|
|
10
12
|
import com.reactnativenavigation.viewcontrollers.viewcontroller.Presenter;
|
|
13
|
+
import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
|
|
11
14
|
|
|
12
15
|
import org.junit.Test;
|
|
13
16
|
import org.mockito.Mockito;
|
|
14
17
|
|
|
18
|
+
import static org.mockito.ArgumentMatchers.any;
|
|
19
|
+
import static org.mockito.ArgumentMatchers.eq;
|
|
20
|
+
import static org.mockito.Mockito.mock;
|
|
21
|
+
import static org.mockito.Mockito.times;
|
|
15
22
|
import static org.mockito.Mockito.verify;
|
|
16
23
|
|
|
17
24
|
public class PresenterTest extends BaseTest {
|
|
18
25
|
private Presenter uut;
|
|
19
26
|
private Activity activity;
|
|
27
|
+
private ViewController<ViewGroup> controller;
|
|
20
28
|
|
|
21
29
|
@Override
|
|
22
30
|
public void beforeEach() {
|
|
23
31
|
super.beforeEach();
|
|
24
32
|
activity = newActivity();
|
|
33
|
+
controller = mock(ViewController.class);
|
|
25
34
|
uut = new Presenter(activity, Options.EMPTY);
|
|
26
35
|
}
|
|
27
36
|
|
|
28
37
|
@Test
|
|
29
|
-
public void
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
public void mergeStatusBarVisible_callsShowHide() {
|
|
39
|
+
mockSystemUiUtils(1,1,(mockedStatic)->{
|
|
40
|
+
ViewGroup spy = Mockito.spy(new FrameLayout(activity));
|
|
41
|
+
Mockito.when(controller.getView()).thenReturn(spy);
|
|
42
|
+
Mockito.when(controller.resolveCurrentOptions()).thenReturn(Options.EMPTY);
|
|
43
|
+
Options options = new Options();
|
|
44
|
+
options.statusBar.visible = new Bool(false);
|
|
45
|
+
uut.mergeOptions(controller, options);
|
|
46
|
+
mockedStatic.verify(
|
|
47
|
+
()-> SystemUiUtils.hideStatusBar(any(),eq(spy)),times(1));
|
|
48
|
+
|
|
49
|
+
options.statusBar.visible = new Bool(true);
|
|
50
|
+
uut.mergeOptions(controller, options);
|
|
51
|
+
mockedStatic.verify(
|
|
52
|
+
()-> SystemUiUtils.showStatusBar(any(),eq(spy)),times(1));
|
|
53
|
+
});
|
|
33
54
|
|
|
34
|
-
uut.mergeOptions(spy, options);
|
|
35
|
-
verify(spy).requestLayout();
|
|
36
|
-
|
|
37
|
-
// requested only if needed
|
|
38
|
-
uut.mergeOptions(spy, options);
|
|
39
|
-
verify(spy).requestLayout();
|
|
40
55
|
}
|
|
41
56
|
}
|
package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java
CHANGED
|
@@ -15,14 +15,19 @@ import org.mockito.Mockito;
|
|
|
15
15
|
import java.util.HashMap;
|
|
16
16
|
|
|
17
17
|
import static org.assertj.core.api.Java6Assertions.assertThat;
|
|
18
|
+
import static org.assertj.core.api.Java6Assertions.fail;
|
|
18
19
|
import static org.mockito.Mockito.mock;
|
|
20
|
+
import static org.mockito.Mockito.when;
|
|
19
21
|
|
|
20
22
|
public class LayoutFactoryTest extends BaseTest {
|
|
21
23
|
private LayoutFactory uut;
|
|
24
|
+
private ReactInstanceManager mockReactInstanceManager;
|
|
22
25
|
|
|
23
26
|
@Override
|
|
24
27
|
public void beforeEach() {
|
|
25
|
-
|
|
28
|
+
super.beforeEach();
|
|
29
|
+
mockReactInstanceManager = mock(ReactInstanceManager.class);
|
|
30
|
+
uut = new LayoutFactory(mockReactInstanceManager);
|
|
26
31
|
uut.init(
|
|
27
32
|
newActivity(),
|
|
28
33
|
Mockito.mock(EventEmitter.class),
|
|
@@ -36,6 +41,16 @@ public class LayoutFactoryTest extends BaseTest {
|
|
|
36
41
|
assertThat(uut.create(component())).isNotNull();
|
|
37
42
|
}
|
|
38
43
|
|
|
44
|
+
@Test
|
|
45
|
+
public void shouldParseOptionsWhenReactContextIsNull() {
|
|
46
|
+
when(mockReactInstanceManager.getCurrentReactContext()).thenReturn(null);
|
|
47
|
+
try {
|
|
48
|
+
uut.create(component());
|
|
49
|
+
} catch (Exception e) {
|
|
50
|
+
fail("Create should not fail! when react instance has null context");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
39
54
|
@Test
|
|
40
55
|
public void defaultOptionsAreNotNull() {
|
|
41
56
|
assertThat(uut.getDefaultOptions()).isNotNull();
|
|
@@ -50,6 +65,14 @@ public class LayoutFactoryTest extends BaseTest {
|
|
|
50
65
|
}
|
|
51
66
|
|
|
52
67
|
private LayoutNode component() throws JSONException {
|
|
53
|
-
|
|
68
|
+
final JSONObject component = new JSONObject();
|
|
69
|
+
final JSONObject layout = new JSONObject();
|
|
70
|
+
final JSONObject backgroundColor = new JSONObject();
|
|
71
|
+
backgroundColor.put("dark",0);
|
|
72
|
+
backgroundColor.put("light",1);
|
|
73
|
+
layout.put("backgroundColor",backgroundColor );
|
|
74
|
+
component.put("name", "com.component");
|
|
75
|
+
component.put("options",new JSONObject().put("layout", layout));
|
|
76
|
+
return new LayoutNode("Component1", LayoutNode.Type.Component, component, null);
|
|
54
77
|
}
|
|
55
78
|
}
|
|
@@ -4,7 +4,7 @@ import android.app.Activity
|
|
|
4
4
|
import android.view.MotionEvent
|
|
5
5
|
import android.view.View
|
|
6
6
|
import android.widget.FrameLayout
|
|
7
|
-
import
|
|
7
|
+
import org.mockito.kotlin.mock
|
|
8
8
|
import com.reactnativenavigation.BaseTest
|
|
9
9
|
import org.assertj.core.api.Java6Assertions.assertThat
|
|
10
10
|
import org.junit.Test
|
|
@@ -2,13 +2,13 @@ package com.reactnativenavigation.utils
|
|
|
2
2
|
|
|
3
3
|
import com.reactnativenavigation.BaseTest
|
|
4
4
|
import com.reactnativenavigation.views.stack.topbar.titlebar.DEFAULT_LEFT_MARGIN_PX
|
|
5
|
+
import com.reactnativenavigation.views.stack.topbar.titlebar.resolveHorizontalTitleBoundsLimit
|
|
5
6
|
import com.reactnativenavigation.views.stack.topbar.titlebar.resolveLeftButtonsBounds
|
|
6
7
|
import com.reactnativenavigation.views.stack.topbar.titlebar.resolveRightButtonsBounds
|
|
7
|
-
import com.reactnativenavigation.views.stack.topbar.titlebar.resolveHorizontalTitleBoundsLimit
|
|
8
8
|
import org.junit.Test
|
|
9
9
|
import kotlin.test.assertEquals
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class TitleAndButtonsMeasurerTest : BaseTest() {
|
|
12
12
|
private val parentWidth = 1080
|
|
13
13
|
|
|
14
14
|
@Test
|
|
@@ -13,7 +13,7 @@ public class UiThreadTest extends BaseTest {
|
|
|
13
13
|
Runnable task = mock(Runnable.class);
|
|
14
14
|
ShadowLooper.pauseMainLooper();
|
|
15
15
|
UiThread.post(task);
|
|
16
|
-
|
|
16
|
+
verifyNoInteractions(task);
|
|
17
17
|
ShadowLooper.runUiThreadTasks();
|
|
18
18
|
verify(task, times(1)).run();
|
|
19
19
|
}
|
|
@@ -22,7 +22,7 @@ public class UiThreadTest extends BaseTest {
|
|
|
22
22
|
public void postDelayedOnUiThread() throws Exception {
|
|
23
23
|
Runnable task = mock(Runnable.class);
|
|
24
24
|
UiThread.postDelayed(task, 1000);
|
|
25
|
-
|
|
25
|
+
verifyNoInteractions(task);
|
|
26
26
|
ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
|
|
27
27
|
verify(task, times(1)).run();
|
|
28
28
|
}
|
|
@@ -13,7 +13,7 @@ public class UiUtilsTest extends BaseTest {
|
|
|
13
13
|
public void runOnPreDrawOnce() {
|
|
14
14
|
View view = new View(newActivity());
|
|
15
15
|
Runnable task = mock(Runnable.class);
|
|
16
|
-
|
|
16
|
+
verifyNoInteractions(task);
|
|
17
17
|
|
|
18
18
|
UiUtils.runOnPreDrawOnce(view, task);
|
|
19
19
|
dispatchPreDraw(view);
|