react-native-navigation 7.23.1 → 7.24.0-snapshot.465
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/ReactView.java +13 -9
- 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 +169 -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 +43 -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 +20 -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/overlay/OverlayManager.kt +8 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +11 -5
- 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/bottomtabs/BottomTabs.java +6 -0
- 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/SystemUiUtilsTest.kt +27 -0
- 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 +589 -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 +23 -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 +16 -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/toptabs/TopTabsViewControllerTest.java +2 -0
- 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
package/.buildkite/pipeline.yml
CHANGED
|
@@ -1,19 +1,59 @@
|
|
|
1
|
-
env:
|
|
2
|
-
CI: true
|
|
3
|
-
ANDROID_HOME: /usr/local/share/android-sdk/
|
|
4
|
-
PATH: "$PATH:/usr/local/share/android-sdk/platform-tools/"
|
|
5
1
|
steps:
|
|
6
|
-
-
|
|
2
|
+
- block: ":rocket: Release!"
|
|
3
|
+
prompt: "Fill out the details for release"
|
|
4
|
+
if: 'build.message =~ /^release\$/i'
|
|
5
|
+
fields:
|
|
6
|
+
- text: "VERSION"
|
|
7
|
+
key: "version"
|
|
8
|
+
- text: "NPM_TAG"
|
|
9
|
+
key: "npm-tag"
|
|
10
|
+
default: 'null'
|
|
11
|
+
required: false
|
|
12
|
+
- text: "BUILD_DOCUMENTATION_VERSION"
|
|
13
|
+
key: "build-documentation-version"
|
|
14
|
+
default: 'null'
|
|
15
|
+
hint: 'Leave NULL if no version is specified'
|
|
16
|
+
- text: "REMOVE_DOCUMENTATION_VERSION"
|
|
17
|
+
key: "remove-documentation-version"
|
|
18
|
+
default: 'null'
|
|
19
|
+
hint: 'Leave NULL if no version is specified'
|
|
20
|
+
|
|
21
|
+
- label: ":android: Android"
|
|
7
22
|
command:
|
|
8
|
-
- "
|
|
23
|
+
- "nvm install"
|
|
9
24
|
- "npm install"
|
|
10
|
-
- "npm run
|
|
25
|
+
- "npm run test-js"
|
|
11
26
|
- "npm run test-unit-android -- --release"
|
|
12
27
|
- "npm run test-e2e-android-multi -- --release --headless --verbose --ci"
|
|
13
|
-
|
|
14
|
-
|
|
28
|
+
key: "android_build"
|
|
29
|
+
timeout_in_minutes: 90
|
|
30
|
+
|
|
31
|
+
- label: ":ios: iOS - Unit"
|
|
15
32
|
command:
|
|
16
|
-
- "
|
|
33
|
+
- "nvm install"
|
|
17
34
|
- "npm install"
|
|
18
|
-
- "npm run
|
|
35
|
+
- "npm run test-unit-ios -- --release"
|
|
36
|
+
key: "ios_unit"
|
|
37
|
+
timeout_in_minutes: 90
|
|
38
|
+
|
|
39
|
+
- label: ":ios: iOS - E2E"
|
|
40
|
+
command:
|
|
41
|
+
- "nvm install"
|
|
42
|
+
- "npm install"
|
|
43
|
+
- "npm run test-snapshot-ios -- --release"
|
|
19
44
|
- "npm run test-e2e-ios -- --release --multi --ci"
|
|
45
|
+
key: "ios_e2e"
|
|
46
|
+
timeout_in_minutes: 90
|
|
47
|
+
|
|
48
|
+
- label: ":package: Publish"
|
|
49
|
+
env:
|
|
50
|
+
if: "build.pull_request.id == null"
|
|
51
|
+
command:
|
|
52
|
+
- "nvm install"
|
|
53
|
+
- "npm install"
|
|
54
|
+
- "npm run release"
|
|
55
|
+
depends_on:
|
|
56
|
+
- "android_build"
|
|
57
|
+
- "ios_unit"
|
|
58
|
+
- "ios_e2e"
|
|
59
|
+
timeout_in_minutes: 90
|
package/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
14
|
package/Mock.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/Mock';
|
package/Mock.js
ADDED
package/Mock.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './lib/
|
|
1
|
+
export * from './lib/Mock';
|
package/README.md
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
<a href="https://www.npmjs.com/package/react-native-navigation"><img src="https://img.shields.io/npm/v/react-native-navigation/latest.svg?style=flat-square" alt="NPM latest version"></a>
|
|
9
9
|
<a href="https://www.npmjs.com/package/react-native-navigation"><img src="https://img.shields.io/npm/v/react-native-navigation/snapshot.svg?style=flat-square" alt="NPM snapshot version"></a>
|
|
10
10
|
<a href="https://jenkins-oss.wixpress.com/job/multi-react-native-navigation-master/"><img src="https://img.shields.io/jenkins/s/http/jenkins-oss.wixpress.com:8080/job/multi-react-native-navigation-master.svg?style=flat-square" alt="NPM snapshot version"></a>
|
|
11
|
-
<a href="https://github.com/wix/react-native-navigation/pulls"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fmerge-chance.info%2Fbadge%3Frepo%3Dwix/react-native-navigation"></a>
|
|
12
11
|
|
|
13
12
|
</p>
|
|
14
13
|
<p align="center">
|
package/jest.config.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
preset: 'react-native',
|
|
3
|
+
transformIgnorePatterns: [
|
|
4
|
+
'node_modules/(?!(@react-native|react-native|react-native-ui-lib|react-native-animatable)/)',
|
|
5
|
+
],
|
|
6
|
+
transform: {
|
|
7
|
+
'\\.[jt]sx?$': 'babel-jest',
|
|
8
|
+
},
|
|
9
|
+
roots: [
|
|
10
|
+
'<rootDir>/lib/src/',
|
|
11
|
+
'<rootDir>/playground/src/',
|
|
12
|
+
'<rootDir>/integration/',
|
|
13
|
+
'<rootDir>/scripts/',
|
|
14
|
+
'<rootDir>/e2e/',
|
|
15
|
+
],
|
|
16
|
+
setupFilesAfterEnv: ['./jest-setup.js'],
|
|
17
|
+
testPathIgnorePatterns: ['/node_modules/'],
|
|
18
|
+
moduleNameMapper: {
|
|
19
|
+
'react-native-navigation/Mock': '<rootDir>/lib/Mock',
|
|
20
|
+
'react-native-navigation': '<rootDir>/lib/src',
|
|
21
|
+
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
|
|
22
|
+
'<rootDir>/playground/img/layouts@2x.png',
|
|
23
|
+
},
|
|
24
|
+
collectCoverageFrom: [
|
|
25
|
+
'lib/src/**/*.ts',
|
|
26
|
+
'lib/src/**/*.tsx',
|
|
27
|
+
'integration/**/*.js',
|
|
28
|
+
'!lib/dist/index.js',
|
|
29
|
+
'!lib/dist/Navigation.js',
|
|
30
|
+
'!lib/dist/adapters/**/*',
|
|
31
|
+
'!lib/dist/interfaces/**/*',
|
|
32
|
+
'!lib/dist/**/*.test.*',
|
|
33
|
+
'!integration/**/*.test.*',
|
|
34
|
+
'!integration/*.test.*',
|
|
35
|
+
'!e2e/**/*test.js',
|
|
36
|
+
],
|
|
37
|
+
resetMocks: true,
|
|
38
|
+
resetModules: true,
|
|
39
|
+
coverageReporters: ['json', 'lcov', 'text', 'html'],
|
|
40
|
+
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
2
|
import { Button, View, Text } from 'react-native';
|
|
3
|
-
import { Navigation } from '
|
|
3
|
+
import { Navigation } from '../../src';
|
|
4
4
|
import { ComponentProps } from '../ComponentProps';
|
|
5
5
|
import { VISIBLE_SCREEN_TEST_ID } from '../constants';
|
|
6
6
|
import { LayoutStore } from '../Stores/LayoutStore';
|
|
7
7
|
import { connect } from '../connect';
|
|
8
8
|
import { TopBar } from './TopBar';
|
|
9
|
+
import { events } from '../Stores/EventsStore';
|
|
10
|
+
import _ from 'lodash';
|
|
9
11
|
|
|
10
12
|
export const ComponentScreen = connect(
|
|
11
13
|
class extends Component<ComponentProps> {
|
|
@@ -34,7 +36,13 @@ export const ComponentScreen = connect(
|
|
|
34
36
|
<Button
|
|
35
37
|
testID={bottomTabOptions?.testID}
|
|
36
38
|
title={bottomTabOptions?.text || ''}
|
|
37
|
-
onPress={() =>
|
|
39
|
+
onPress={() => {
|
|
40
|
+
events.invokeBottomTabPressed({
|
|
41
|
+
tabIndex: i,
|
|
42
|
+
});
|
|
43
|
+
if (_.defaultTo(bottomTabOptions?.selectTabOnPress, true))
|
|
44
|
+
LayoutStore.selectTabIndex(this.props.layoutNode.getBottomTabs(), i);
|
|
45
|
+
}}
|
|
38
46
|
/>
|
|
39
47
|
<Text>{bottomTabOptions?.badge}</Text>
|
|
40
48
|
</View>
|
|
@@ -46,6 +54,9 @@ export const ComponentScreen = connect(
|
|
|
46
54
|
|
|
47
55
|
render() {
|
|
48
56
|
const Component = Navigation.mock.store.getWrappedComponent(this.props.layoutNode.data.name);
|
|
57
|
+
if (!Component)
|
|
58
|
+
throw new Error(`${this.props.layoutNode.data.name} has not been registered.`);
|
|
59
|
+
|
|
49
60
|
return (
|
|
50
61
|
<View testID={this.isVisible() ? VISIBLE_SCREEN_TEST_ID : undefined}>
|
|
51
62
|
{this.props.layoutNode.getStack() && (
|
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
2
|
import { Button, TouchableOpacity } from 'react-native';
|
|
3
|
-
import { Navigation, OptionsTopBarButton } from '../../';
|
|
3
|
+
import { Navigation, OptionsTopBarButton } from '../../src';
|
|
4
4
|
import { events } from '../Stores/EventsStore';
|
|
5
5
|
|
|
6
6
|
interface ButtonProps {
|
|
File without changes
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
2
|
import { Button, View, Text } from 'react-native';
|
|
3
|
-
import { Navigation, OptionsTopBarButton } from '
|
|
4
|
-
import { OptionsTopBar, OptionsTopBarBackButton } from '../../interfaces/Options';
|
|
3
|
+
import { Navigation, OptionsTopBarButton } from '../../src';
|
|
4
|
+
import { OptionsTopBar, OptionsTopBarBackButton } from '../../src/interfaces/Options';
|
|
5
5
|
import ParentNode from '../Layouts/ParentNode';
|
|
6
6
|
import { LayoutStore } from '../Stores/LayoutStore';
|
|
7
7
|
import { NavigationButton } from './NavigationButton';
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { OptionsTopBarButton } from '../../interfaces/Options';
|
|
3
|
-
import { Options } from '../../index';
|
|
2
|
+
import { OptionsTopBarButton } from '../../src/interfaces/Options';
|
|
3
|
+
import { Options } from '../../src/index';
|
|
4
4
|
import { LayoutStore } from '../Stores/LayoutStore';
|
|
5
5
|
import ComponentNode from './ComponentNode';
|
|
6
6
|
import LayoutNodeFactory from './LayoutNodeFactory';
|
|
File without changes
|
|
@@ -2,8 +2,9 @@ import {
|
|
|
2
2
|
ComponentDidDisappearEvent,
|
|
3
3
|
ComponentWillAppearEvent,
|
|
4
4
|
ModalDismissedEvent,
|
|
5
|
-
} from '../../interfaces/ComponentEvents';
|
|
6
|
-
import { ComponentDidAppearEvent, NavigationButtonPressedEvent } from '../../index';
|
|
5
|
+
} from '../../src/interfaces/ComponentEvents';
|
|
6
|
+
import { ComponentDidAppearEvent, NavigationButtonPressedEvent } from '../../src/index';
|
|
7
|
+
import { BottomTabPressedEvent } from '../../src/interfaces/Events';
|
|
7
8
|
|
|
8
9
|
export const events = {
|
|
9
10
|
navigationButtonPressed: [(_event: NavigationButtonPressedEvent) => {}],
|
|
@@ -11,6 +12,7 @@ export const events = {
|
|
|
11
12
|
componentDidAppear: [(_event: ComponentDidAppearEvent) => {}],
|
|
12
13
|
componentDidDisappear: [(_event: ComponentDidDisappearEvent) => {}],
|
|
13
14
|
modalDismissed: [(_event: ModalDismissedEvent) => {}],
|
|
15
|
+
bottomTabPressed: [(_event: BottomTabPressedEvent) => {}],
|
|
14
16
|
invokeComponentWillAppear: (event: ComponentWillAppearEvent) => {
|
|
15
17
|
events.componentWillAppear &&
|
|
16
18
|
events.componentWillAppear.forEach((listener) => {
|
|
@@ -41,4 +43,10 @@ export const events = {
|
|
|
41
43
|
listener(event);
|
|
42
44
|
});
|
|
43
45
|
},
|
|
46
|
+
invokeBottomTabPressed: (event: BottomTabPressedEvent) => {
|
|
47
|
+
events.bottomTabPressed &&
|
|
48
|
+
events.bottomTabPressed?.forEach((listener) => {
|
|
49
|
+
listener(event);
|
|
50
|
+
});
|
|
51
|
+
},
|
|
44
52
|
};
|
|
@@ -2,7 +2,7 @@ import _ from 'lodash';
|
|
|
2
2
|
import BottomTabsNode from '../Layouts/BottomTabsNode';
|
|
3
3
|
import ParentNode from '../Layouts/ParentNode';
|
|
4
4
|
import LayoutNodeFactory from '../Layouts/LayoutNodeFactory';
|
|
5
|
-
import { Options } from '../../interfaces/Options';
|
|
5
|
+
import { Options } from '../../src/interfaces/Options';
|
|
6
6
|
import StackNode from '../Layouts/StackNode';
|
|
7
7
|
|
|
8
8
|
const remx = require('remx');
|
|
@@ -77,7 +77,8 @@ const setters = remx.setters({
|
|
|
77
77
|
},
|
|
78
78
|
mergeOptions(componentId: string, options: Options) {
|
|
79
79
|
const layout = getters.getLayoutById(componentId);
|
|
80
|
-
layout.mergeOptions(options);
|
|
80
|
+
if (layout) layout.mergeOptions(options);
|
|
81
|
+
else console.warn(`[RNN error] Merge options failure: cannot find layout for: ${componentId}`);
|
|
81
82
|
},
|
|
82
83
|
});
|
|
83
84
|
|
|
File without changes
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VISIBLE_OVERLAY_TEST_ID = exports.VISIBLE_SCREEN_TEST_ID = void 0;
|
|
4
|
+
exports.VISIBLE_SCREEN_TEST_ID = 'VISIBLE_SCREEN_TEST_ID';
|
|
5
|
+
exports.VISIBLE_OVERLAY_TEST_ID = 'VISIBLE_OVERLAY_TEST_ID';
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockNativeComponents = exports.ApplicationMock = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
exports.ApplicationMock = require('./Application').Application;
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./constants"), exports);
|
|
7
|
+
function mockNativeComponents() {
|
|
8
|
+
const { NativeCommandsSender } = require('./mocks/NativeCommandsSender');
|
|
9
|
+
const { NativeEventsReceiver } = require('./mocks/NativeEventsReceiver');
|
|
10
|
+
const { AppRegistryService } = require('./mocks/AppRegistryService');
|
|
11
|
+
const { Navigation } = require('react-native-navigation');
|
|
12
|
+
Navigation.mockNativeComponents(new NativeCommandsSender(), new NativeEventsReceiver(), new AppRegistryService());
|
|
13
|
+
}
|
|
14
|
+
exports.mockNativeComponents = mockNativeComponents;
|
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LayoutStore } from '../Stores/LayoutStore';
|
|
2
2
|
import LayoutNodeFactory from '../Layouts/LayoutNodeFactory';
|
|
3
|
-
import { LayoutNode } from '
|
|
3
|
+
import { LayoutNode } from '../../src/commands/LayoutTreeCrawler';
|
|
4
4
|
import { events } from '../Stores/EventsStore';
|
|
5
5
|
import _ from 'lodash';
|
|
6
6
|
import ComponentNode from '../Layouts/ComponentNode';
|
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
ModalDismissedEvent,
|
|
12
12
|
ScreenPoppedEvent,
|
|
13
13
|
ModalAttemptedToDismissEvent,
|
|
14
|
-
} from '../../interfaces/ComponentEvents';
|
|
14
|
+
} from '../../src/interfaces/ComponentEvents';
|
|
15
15
|
import {
|
|
16
16
|
CommandCompletedEvent,
|
|
17
17
|
BottomTabSelectedEvent,
|
|
18
18
|
BottomTabLongPressedEvent,
|
|
19
19
|
BottomTabPressedEvent,
|
|
20
|
-
} from '../../interfaces/Events';
|
|
20
|
+
} from '../../src/interfaces/Events';
|
|
21
21
|
import { events } from './../Stores/EventsStore';
|
|
22
22
|
|
|
23
23
|
export class NativeEventsReceiver {
|
|
@@ -73,10 +73,13 @@ export class NativeEventsReceiver {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
public registerBottomTabPressedListener(
|
|
76
|
-
|
|
76
|
+
callback: (data: BottomTabPressedEvent) => void
|
|
77
77
|
): EmitterSubscription {
|
|
78
|
+
events.bottomTabPressed.push(callback);
|
|
78
79
|
return {
|
|
79
|
-
remove: () => {
|
|
80
|
+
remove: () => {
|
|
81
|
+
_.remove(events.bottomTabPressed, (value) => value === callback);
|
|
82
|
+
},
|
|
80
83
|
} as EmitterSubscription;
|
|
81
84
|
}
|
|
82
85
|
|
|
@@ -3,27 +3,29 @@ import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
|
|
3
3
|
|
|
4
4
|
apply plugin: 'com.android.library'
|
|
5
5
|
apply plugin: 'kotlin-android'
|
|
6
|
-
apply plugin: 'kotlin-android-extensions'
|
|
7
6
|
|
|
8
7
|
def safeExtGet(prop, fallback) {
|
|
9
8
|
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
10
9
|
}
|
|
11
10
|
|
|
12
|
-
def
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def kotlinVersion = rootProject.ext.get("RNNKotlinVersion")
|
|
16
|
-
def kotlinStdlib = safeExtGet('RNNKotlinStdlib', 'kotlin-stdlib-jdk8')
|
|
17
|
-
def kotlinCoroutinesCore = safeExtGet('RNNKotlinCoroutinesCore', '1.4.3')
|
|
11
|
+
def safeExtGetFallbackLowerBound(prop, fallback) {
|
|
12
|
+
Math.max(safeExtGet(prop,fallback),fallback)
|
|
13
|
+
}
|
|
18
14
|
|
|
15
|
+
def DEFAULT_COMPILE_SDK_VERSION = 30
|
|
16
|
+
def DEFAULT_MIN_SDK_VERSION = 21
|
|
17
|
+
def DEFAULT_TARGET_SDK_VERSION = 30
|
|
18
|
+
def DEFAULT_KOTLIN_VERSION = "1.5.31"
|
|
19
|
+
def DEFAULT_KOTLIN_STDLIB = 'kotlin-stdlib-jdk8'
|
|
20
|
+
def kotlinVersion = safeExtGet("RNNKotlinVersion", DEFAULT_KOTLIN_VERSION)
|
|
21
|
+
def kotlinStdlib = safeExtGet('RNNKotlinStdlib',DEFAULT_KOTLIN_STDLIB )
|
|
22
|
+
def kotlinCoroutinesCore = safeExtGet('RNNKotlinCoroutinesCore', '1.5.2')
|
|
19
23
|
android {
|
|
20
|
-
compileSdkVersion
|
|
24
|
+
compileSdkVersion safeExtGetFallbackLowerBound('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION)
|
|
21
25
|
|
|
22
26
|
defaultConfig {
|
|
23
|
-
minSdkVersion
|
|
24
|
-
targetSdkVersion
|
|
25
|
-
versionCode 1
|
|
26
|
-
versionName "1.0"
|
|
27
|
+
minSdkVersion safeExtGetFallbackLowerBound('minSdkVersion', DEFAULT_MIN_SDK_VERSION)
|
|
28
|
+
targetSdkVersion safeExtGetFallbackLowerBound('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION)
|
|
27
29
|
}
|
|
28
30
|
buildTypes {
|
|
29
31
|
release {
|
|
@@ -170,13 +172,13 @@ allprojects { p ->
|
|
|
170
172
|
}
|
|
171
173
|
|
|
172
174
|
dependencies {
|
|
173
|
-
implementation "androidx.core:core-ktx:1.
|
|
175
|
+
implementation "androidx.core:core-ktx:1.6.0"
|
|
174
176
|
implementation "org.jetbrains.kotlin:$kotlinStdlib:$kotlinVersion"
|
|
175
177
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinCoroutinesCore"
|
|
176
178
|
implementation "androidx.constraintlayout:constraintlayout:2.0.4"
|
|
177
179
|
|
|
178
|
-
implementation 'androidx.appcompat:appcompat:1.1
|
|
179
|
-
implementation 'androidx.annotation:annotation:1.
|
|
180
|
+
implementation 'androidx.appcompat:appcompat:1.3.1'
|
|
181
|
+
implementation 'androidx.annotation:annotation:1.2.0'
|
|
180
182
|
implementation 'com.google.android.material:material:1.2.0-alpha03'
|
|
181
183
|
|
|
182
184
|
implementation 'com.github.wix-playground:ahbottomnavigation:3.3.0'
|
|
@@ -188,12 +190,12 @@ dependencies {
|
|
|
188
190
|
implementation 'com.facebook.react:react-native:+'
|
|
189
191
|
|
|
190
192
|
// tests
|
|
191
|
-
testImplementation 'junit:junit:4.
|
|
192
|
-
testImplementation "org.robolectric:robolectric:4.
|
|
193
|
-
testImplementation 'org.assertj:assertj-core:3.
|
|
194
|
-
testImplementation '
|
|
195
|
-
testImplementation '
|
|
193
|
+
testImplementation 'junit:junit:4.13.2'
|
|
194
|
+
testImplementation "org.robolectric:robolectric:4.7.2"
|
|
195
|
+
testImplementation 'org.assertj:assertj-core:3.11.1'
|
|
196
|
+
testImplementation 'org.mockito:mockito-core:4.0.0'
|
|
197
|
+
testImplementation 'com.squareup.assertj:assertj-android:1.2.0'
|
|
196
198
|
testImplementation 'org.mockito:mockito-inline:3.4.0'
|
|
197
|
-
testImplementation "
|
|
199
|
+
testImplementation "org.mockito.kotlin:mockito-kotlin:4.0.0"
|
|
198
200
|
testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlinVersion"
|
|
199
201
|
}
|
|
@@ -26,11 +26,11 @@ class FontOptions {
|
|
|
26
26
|
|
|
27
27
|
@JvmOverloads fun getTypeface(typefaceLoader: TypefaceLoader, defaultTypeface: Typeface? = null): Typeface? {
|
|
28
28
|
if (isDirty) {
|
|
29
|
-
_typeface = typefaceLoader.getTypeFace(fontFamily.get(
|
|
29
|
+
_typeface = typefaceLoader.getTypeFace(fontFamily.get(null), fontStyle.get(""), fontWeight.get(""), defaultTypeface)
|
|
30
30
|
isDirty = false
|
|
31
31
|
}
|
|
32
32
|
return _typeface
|
|
33
|
-
?: defaultTypeface?.let { typefaceLoader.getTypeFace(fontFamily.get(
|
|
33
|
+
?: defaultTypeface?.let { typefaceLoader.getTypeFace(fontFamily.get(null), fontStyle.get(""), fontWeight.get(""), it) }
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
fun mergeWith(other: FontOptions) {
|
package/lib/android/app/src/main/java/com/reactnativenavigation/options/HardwareBackButtonOptions.kt
CHANGED
|
@@ -6,10 +6,40 @@ import com.reactnativenavigation.options.parsers.BoolParser
|
|
|
6
6
|
import org.json.JSONObject
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
sealed class HwBackBottomTabsBehaviour {
|
|
10
|
+
object Undefined : HwBackBottomTabsBehaviour() {
|
|
11
|
+
override fun hasValue(): Boolean = false
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
object Exit : HwBackBottomTabsBehaviour()
|
|
15
|
+
object PrevSelection : HwBackBottomTabsBehaviour()
|
|
16
|
+
object JumpToFirst : HwBackBottomTabsBehaviour()
|
|
17
|
+
|
|
18
|
+
open fun hasValue(): Boolean = true
|
|
19
|
+
|
|
20
|
+
companion object {
|
|
21
|
+
private const val BEHAVIOUR_EXIT = "exit"
|
|
22
|
+
private const val BEHAVIOUR_PREV = "previous"
|
|
23
|
+
private const val BEHAVIOUR_FIRST = "first"
|
|
24
|
+
fun fromString(behaviour: String?): HwBackBottomTabsBehaviour {
|
|
25
|
+
return when (behaviour) {
|
|
26
|
+
BEHAVIOUR_PREV -> PrevSelection
|
|
27
|
+
BEHAVIOUR_FIRST -> JumpToFirst
|
|
28
|
+
BEHAVIOUR_EXIT -> Exit
|
|
29
|
+
else -> Undefined
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
9
35
|
open class HardwareBackButtonOptions(json: JSONObject? = null) {
|
|
10
36
|
|
|
11
|
-
@JvmField
|
|
12
|
-
|
|
37
|
+
@JvmField
|
|
38
|
+
var dismissModalOnPress: Bool = NullBool()
|
|
39
|
+
|
|
40
|
+
@JvmField
|
|
41
|
+
var popStackOnPress: Bool = NullBool()
|
|
42
|
+
var bottomTabOnPress: HwBackBottomTabsBehaviour = HwBackBottomTabsBehaviour.Undefined
|
|
13
43
|
|
|
14
44
|
init {
|
|
15
45
|
parse(json)
|
|
@@ -18,16 +48,19 @@ open class HardwareBackButtonOptions(json: JSONObject? = null) {
|
|
|
18
48
|
fun mergeWith(other: HardwareBackButtonOptions) {
|
|
19
49
|
if (other.dismissModalOnPress.hasValue()) dismissModalOnPress = other.dismissModalOnPress
|
|
20
50
|
if (other.popStackOnPress.hasValue()) popStackOnPress = other.popStackOnPress
|
|
51
|
+
if (other.bottomTabOnPress.hasValue()) bottomTabOnPress = other.bottomTabOnPress
|
|
21
52
|
}
|
|
22
53
|
|
|
23
54
|
fun mergeWithDefault(defaultOptions: HardwareBackButtonOptions) {
|
|
24
55
|
if (!dismissModalOnPress.hasValue()) dismissModalOnPress = defaultOptions.dismissModalOnPress
|
|
25
56
|
if (!popStackOnPress.hasValue()) popStackOnPress = defaultOptions.popStackOnPress
|
|
57
|
+
if (!bottomTabOnPress.hasValue()) bottomTabOnPress = defaultOptions.bottomTabOnPress
|
|
26
58
|
}
|
|
27
59
|
|
|
28
60
|
private fun parse(json: JSONObject?) {
|
|
29
61
|
json ?: return
|
|
30
62
|
dismissModalOnPress = BoolParser.parse(json, "dismissModalOnPress")
|
|
31
63
|
popStackOnPress = BoolParser.parse(json, "popStackOnPress")
|
|
64
|
+
bottomTabOnPress = HwBackBottomTabsBehaviour.fromString(json.optString("bottomTabsOnPress"))
|
|
32
65
|
}
|
|
33
66
|
}
|