react-native-navigation 8.1.0-alpha01 → 8.1.0-rc01-snapshot.1685
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/autolink/postlink/__snapshots__/appDelegateLinker.test.js.snap +12 -12
- package/index.e2e.js +2 -1
- package/lib/Mock/Components/ComponentScreen.tsx +2 -1
- package/lib/Mock/Components/LayoutComponent.tsx +9 -0
- package/lib/Mock/Components/SideMenu.tsx +27 -0
- package/lib/Mock/Layouts/BottomTabsNode.ts +4 -2
- package/lib/Mock/Layouts/LayoutNodeFactory.ts +14 -1
- package/lib/Mock/Layouts/ParentNode.ts +4 -0
- package/lib/Mock/Layouts/SideMenu.ts +87 -0
- package/lib/Mock/Stores/LayoutStore.ts +42 -10
- package/lib/Mock/actions/layoutActions.ts +11 -0
- package/lib/Mock/mocks/NativeCommandsSender.tsx +1 -0
- package/lib/android/app/build.gradle +22 -125
- package/lib/android/app/src/main/java/com/reactnativenavigation/FeatureToggles.kt +4 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +4 -4
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationPackage.kt +27 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationReactInitializer.java +2 -14
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationTurboModule.kt +291 -0
- package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/ReactGateway.java +23 -23
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java +6 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ColorUtils.java +11 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/MotionEvent.kt +4 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +12 -17
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +20 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentPresenter.java +18 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +5 -17
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +28 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +13 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +35 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/statusbar/StatusBarPresenter.kt +212 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +10 -178
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/StatusBarColorAnimator.kt +28 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +34 -7
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerVisibilityInfo.kt +5 -0
- package/lib/android/build.gradle +27 -15
- package/lib/dist/Mock/Components/ComponentScreen.js +2 -1
- package/lib/dist/Mock/Components/LayoutComponent.js +9 -0
- package/lib/dist/Mock/Components/SideMenu.d.ts +58 -0
- package/lib/dist/Mock/Components/SideMenu.js +25 -0
- package/lib/dist/Mock/Layouts/BottomTabsNode.d.ts +1 -1
- package/lib/dist/Mock/Layouts/BottomTabsNode.js +3 -2
- package/lib/dist/Mock/Layouts/LayoutNodeFactory.d.ts +2 -1
- package/lib/dist/Mock/Layouts/LayoutNodeFactory.js +10 -1
- package/lib/dist/Mock/Layouts/ParentNode.d.ts +1 -0
- package/lib/dist/Mock/Layouts/ParentNode.js +3 -0
- package/lib/dist/Mock/Layouts/SideMenu.d.ts +31 -0
- package/lib/dist/Mock/Layouts/SideMenu.js +80 -0
- package/lib/dist/Mock/Stores/LayoutStore.js +38 -9
- package/lib/dist/Mock/actions/layoutActions.d.ts +3 -0
- package/lib/dist/Mock/actions/layoutActions.js +11 -1
- package/lib/dist/Mock/mocks/NativeCommandsSender.js +1 -0
- package/lib/dist/src/adapters/NativeCommandsSender.d.ts +39 -4
- package/lib/dist/src/adapters/NativeCommandsSender.js +2 -2
- package/lib/dist/src/adapters/NativeRNNTurboEventEmitter.js +2 -9
- package/lib/dist/src/adapters/NativeRNNTurboModule.d.ts +9 -10
- package/lib/dist/src/adapters/NativeRNNTurboModule.js +1 -12
- package/lib/dist/src/commands/Commands.d.ts +13 -13
- package/lib/ios/AnimatedTextView.mm +1 -0
- package/lib/ios/Constants.mm +7 -1
- package/lib/ios/RNNAppDelegate.mm +3 -1
- package/lib/ios/RNNCommandsHandler.mm +1 -0
- package/lib/ios/RNNCustomTitleView.h +1 -0
- package/lib/ios/RNNCustomTitleView.mm +8 -1
- package/lib/ios/RNNEventEmitter.mm +3 -0
- package/lib/ios/RNNReactButtonView.mm +1 -1
- package/lib/ios/RNNReactView.h +3 -1
- package/lib/ios/RNNReactView.mm +45 -20
- package/lib/ios/TopBarTitlePresenter.mm +2 -0
- package/lib/ios/TurboModules/RNNTurboEventEmitter.mm +7 -0
- package/lib/ios/UINavigationController+RNNCommands.mm +4 -0
- package/lib/src/adapters/NativeCommandsSender.ts +7 -7
- package/lib/src/adapters/NativeRNNTurboEventEmitter.ts +3 -9
- package/lib/src/adapters/NativeRNNTurboModule.ts +23 -21
- package/package.json +14 -17
- package/react-native.config.js +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/DevPermissionRequest.java +0 -42
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/statusbar/StatusBarController.kt +0 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/statusbar/StatusBarPresenter.kt +0 -9
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -70
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -67
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -67
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -66
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -38
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -66
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -87
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -12
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -38
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -12
- /package/lib/android/app/src/{reactNative63 → main}/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -0
- /package/lib/android/app/src/{reactNative62 → main}/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -0
- /package/lib/android/app/src/{reactNative62 → main}/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -0
- /package/lib/android/app/src/{reactNative51 → main}/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -0
- /package/lib/android/app/src/{reactNative63 → main}/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -0
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
package com.reactnativenavigation.viewcontrollers.viewcontroller;
|
|
2
2
|
|
|
3
|
-
import static com.reactnativenavigation.utils.
|
|
3
|
+
import static com.reactnativenavigation.utils.ColorUtils.isColorLight;
|
|
4
4
|
|
|
5
|
-
import android.animation.Animator;
|
|
6
|
-
import android.animation.ValueAnimator;
|
|
7
5
|
import android.app.Activity;
|
|
8
6
|
import android.graphics.Color;
|
|
9
7
|
import android.graphics.drawable.ColorDrawable;
|
|
@@ -12,44 +10,24 @@ import android.graphics.drawable.LayerDrawable;
|
|
|
12
10
|
import android.view.View;
|
|
13
11
|
import android.view.ViewGroup;
|
|
14
12
|
import android.view.ViewGroup.MarginLayoutParams;
|
|
15
|
-
import android.view.Window;
|
|
16
13
|
|
|
17
|
-
import androidx.annotation.NonNull;
|
|
18
|
-
|
|
19
|
-
import com.reactnativenavigation.RNNFeatureToggles;
|
|
20
|
-
import com.reactnativenavigation.RNNToggles;
|
|
21
|
-
import com.reactnativenavigation.options.AnimationOptions;
|
|
22
14
|
import com.reactnativenavigation.options.NavigationBarOptions;
|
|
23
15
|
import com.reactnativenavigation.options.Options;
|
|
24
16
|
import com.reactnativenavigation.options.OrientationOptions;
|
|
25
17
|
import com.reactnativenavigation.options.StatusBarOptions;
|
|
26
|
-
import com.reactnativenavigation.options.StatusBarOptions.TextColorScheme;
|
|
27
18
|
import com.reactnativenavigation.options.layout.LayoutInsets;
|
|
28
|
-
import com.reactnativenavigation.options.params.Bool;
|
|
29
|
-
import com.reactnativenavigation.options.params.ThemeColour;
|
|
30
19
|
import com.reactnativenavigation.utils.SystemUiUtils;
|
|
31
20
|
import com.reactnativenavigation.viewcontrollers.navigator.Navigator;
|
|
32
21
|
import com.reactnativenavigation.viewcontrollers.parent.ParentController;
|
|
33
|
-
import com.reactnativenavigation.viewcontrollers.
|
|
34
|
-
import com.reactnativenavigation.views.animations.ColorAnimator;
|
|
35
|
-
|
|
36
|
-
import org.jetbrains.annotations.NotNull;
|
|
37
|
-
import org.jetbrains.annotations.Nullable;
|
|
22
|
+
import com.reactnativenavigation.viewcontrollers.statusbar.StatusBarPresenter;
|
|
38
23
|
|
|
39
|
-
public class Presenter
|
|
24
|
+
public class Presenter {
|
|
40
25
|
private final Activity activity;
|
|
41
|
-
private final ColorAnimator colorAnimator;
|
|
42
26
|
|
|
43
27
|
private Options defaultOptions;
|
|
44
|
-
private Boolean hasPendingColorAnim = false;
|
|
45
28
|
|
|
46
29
|
public Presenter(Activity activity, Options defaultOptions) {
|
|
47
|
-
this(activity, defaultOptions, new ColorAnimator());
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public Presenter(Activity activity, Options defaultOptions, ColorAnimator colorAnimator) {
|
|
51
30
|
this.activity = activity;
|
|
52
|
-
this.colorAnimator = colorAnimator;
|
|
53
31
|
this.defaultOptions = defaultOptions;
|
|
54
32
|
}
|
|
55
33
|
|
|
@@ -77,13 +55,13 @@ public class Presenter implements StatusBarPresenter {
|
|
|
77
55
|
Options withDefaultOptions = options.copy().withDefaultOptions(defaultOptions);
|
|
78
56
|
applyOrientation(withDefaultOptions.layout.orientation);
|
|
79
57
|
applyViewOptions(view, withDefaultOptions);
|
|
80
|
-
applyStatusBarOptions(view, withDefaultOptions);
|
|
58
|
+
applyStatusBarOptions(view, withDefaultOptions.statusBar);
|
|
81
59
|
applyNavigationBarOptions(withDefaultOptions.navigationBar);
|
|
82
60
|
}
|
|
83
61
|
|
|
84
62
|
public void onViewBroughtToFront(ViewController<?> viewController, Options options) {
|
|
85
63
|
Options withDefaultOptions = options.copy().withDefaultOptions(defaultOptions);
|
|
86
|
-
applyStatusBarOptions(viewController, withDefaultOptions);
|
|
64
|
+
applyStatusBarOptions(viewController, withDefaultOptions.statusBar);
|
|
87
65
|
}
|
|
88
66
|
|
|
89
67
|
private void applyOrientation(OrientationOptions options) {
|
|
@@ -126,152 +104,12 @@ public class Presenter implements StatusBarPresenter {
|
|
|
126
104
|
}
|
|
127
105
|
}
|
|
128
106
|
|
|
129
|
-
private void applyStatusBarOptions(ViewController viewController,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (!hasPendingColorAnim) {
|
|
133
|
-
setStatusBarBackgroundColor(statusBar);
|
|
134
|
-
}
|
|
135
|
-
setTextColorScheme(statusBar);
|
|
136
|
-
setTranslucent(statusBar);
|
|
137
|
-
setStatusBarVisible(viewController, statusBar.visible);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
@Nullable
|
|
141
|
-
@Override
|
|
142
|
-
public Animator getStatusBarPushAnimation(@NotNull Options appearingOptions) {
|
|
143
|
-
StatusBarOptions statusBarOptions = appearingOptions.statusBar;
|
|
144
|
-
return getStatusBarColorAnimation(statusBarOptions);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
@androidx.annotation.Nullable
|
|
148
|
-
@Override
|
|
149
|
-
public Animator getStatusBarPopAnimation(@NonNull Options appearingOptions, @NonNull Options disappearingOptions) {
|
|
150
|
-
StatusBarOptions statusBarOptions = appearingOptions.statusBar;
|
|
151
|
-
return getStatusBarColorAnimation(statusBarOptions);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
private Animator getStatusBarColorAnimation(StatusBarOptions statusBarOptions) {
|
|
155
|
-
if (RNNFeatureToggles.isEnabled(RNNToggles.TOP_BAR_COLOR_ANIMATION)) {
|
|
156
|
-
ThemeColour targetColor = statusBarOptions.backgroundColor;
|
|
157
|
-
|
|
158
|
-
if (targetColor.hasValue()) {
|
|
159
|
-
boolean translucent = statusBarOptions.translucent.isTrue();
|
|
160
|
-
ValueAnimator animator = colorAnimator.getAnimation(
|
|
161
|
-
getCurrentStatusBarBackgroundColor(),
|
|
162
|
-
targetColor.get()
|
|
163
|
-
);
|
|
164
|
-
|
|
165
|
-
animator.addUpdateListener(animation ->
|
|
166
|
-
setStatusBarBackgroundColor((int) animation.getAnimatedValue(), translucent));
|
|
167
|
-
|
|
168
|
-
animator.addListener(onAnimatorEnd(animation -> {
|
|
169
|
-
hasPendingColorAnim = false;
|
|
170
|
-
return null;
|
|
171
|
-
}));
|
|
172
|
-
|
|
173
|
-
hasPendingColorAnim = true;
|
|
174
|
-
return animator;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
hasPendingColorAnim = false;
|
|
178
|
-
return null;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
private void setTranslucent(StatusBarOptions options) {
|
|
182
|
-
Window window = activity.getWindow();
|
|
183
|
-
if (options.translucent.isTrue()) {
|
|
184
|
-
SystemUiUtils.setStatusBarTranslucent(window);
|
|
185
|
-
} else if (SystemUiUtils.isTranslucent(window)) {
|
|
186
|
-
SystemUiUtils.clearStatusBarTranslucency(window);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
private void setStatusBarVisible(ViewController viewController, Bool visible) {
|
|
191
|
-
final View view = viewController.view != null ? viewController.view : activity.getWindow().getDecorView();
|
|
192
|
-
if (visible.isFalse()) {
|
|
193
|
-
SystemUiUtils.hideStatusBar(activity.getWindow(), view);
|
|
194
|
-
} else {
|
|
195
|
-
SystemUiUtils.showStatusBar(activity.getWindow(), view);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
private void setStatusBarBackgroundColor(StatusBarOptions statusBar) {
|
|
200
|
-
if (statusBar.backgroundColor.canApplyValue()) {
|
|
201
|
-
final int statusBarBackgroundColor = getStatusBarBackgroundColor(statusBar);
|
|
202
|
-
setStatusBarBackgroundColor(statusBarBackgroundColor, statusBar.translucent.isTrue());
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
private void setStatusBarBackgroundColor(int color, Boolean translucent) {
|
|
207
|
-
SystemUiUtils.setStatusBarColor(activity.getWindow(), color, translucent);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
private boolean isDarkTextColorScheme(StatusBarOptions statusBar) {
|
|
211
|
-
if (statusBar.textColorScheme == TextColorScheme.Dark) {
|
|
212
|
-
return true;
|
|
213
|
-
} else if (statusBar.textColorScheme == TextColorScheme.Light) {
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
return isColorLight(getStatusBarBackgroundColor(statusBar));
|
|
107
|
+
private void applyStatusBarOptions(ViewController viewController, StatusBarOptions options) {
|
|
108
|
+
StatusBarPresenter.instance.applyOptions(viewController, options);
|
|
218
109
|
}
|
|
219
110
|
|
|
220
|
-
private
|
|
221
|
-
|
|
222
|
-
return statusBar.backgroundColor.get(defaultColor);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
private int getCurrentStatusBarBackgroundColor() {
|
|
226
|
-
return SystemUiUtils.getStatusBarColor(activity.getWindow());
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
private void setTextColorScheme(StatusBarOptions statusBar) {
|
|
230
|
-
final View view = activity.getWindow().getDecorView();
|
|
231
|
-
//View.post is a Workaround, added to solve internal Samsung
|
|
232
|
-
//Android 9 issues. For more info see https://github.com/wix/react-native-navigation/pull/7231
|
|
233
|
-
view.post(() -> {
|
|
234
|
-
SystemUiUtils.setStatusBarColorScheme(activity.getWindow(), view, isDarkTextColorScheme(statusBar));
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
private void mergeStatusBarOptions(View view, StatusBarOptions statusBar) {
|
|
239
|
-
mergeStatusBarBackgroundColor(statusBar);
|
|
240
|
-
mergeTextColorScheme(statusBar);
|
|
241
|
-
mergeTranslucent(statusBar);
|
|
242
|
-
mergeStatusBarVisible(view, statusBar.visible);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
private void mergeStatusBarBackgroundColor(StatusBarOptions statusBar) {
|
|
246
|
-
if (statusBar.backgroundColor.hasValue()) {
|
|
247
|
-
final int statusBarBackgroundColor = getStatusBarBackgroundColor(statusBar);
|
|
248
|
-
SystemUiUtils.setStatusBarColor(activity.getWindow(), statusBarBackgroundColor,
|
|
249
|
-
statusBar.translucent.isTrue());
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
private void mergeTextColorScheme(StatusBarOptions statusBar) {
|
|
254
|
-
if (!statusBar.textColorScheme.hasValue()) return;
|
|
255
|
-
setTextColorScheme(statusBar);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
private void mergeTranslucent(StatusBarOptions options) {
|
|
259
|
-
Window window = activity.getWindow();
|
|
260
|
-
if (options.translucent.isTrue()) {
|
|
261
|
-
SystemUiUtils.setStatusBarTranslucent(window);
|
|
262
|
-
} else if (options.translucent.isFalse() && SystemUiUtils.isTranslucent(window)) {
|
|
263
|
-
SystemUiUtils.clearStatusBarTranslucency(window);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
private void mergeStatusBarVisible(View view, Bool visible) {
|
|
268
|
-
if (visible.hasValue()) {
|
|
269
|
-
if (visible.isTrue()) {
|
|
270
|
-
SystemUiUtils.showStatusBar(activity.getWindow(), view);
|
|
271
|
-
} else {
|
|
272
|
-
SystemUiUtils.hideStatusBar(activity.getWindow(), view);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
111
|
+
private void mergeStatusBarOptions(View view, StatusBarOptions statusBarOptions) {
|
|
112
|
+
StatusBarPresenter.instance.mergeOptions(view, statusBarOptions);
|
|
275
113
|
}
|
|
276
114
|
|
|
277
115
|
private void applyNavigationBarOptions(NavigationBarOptions options) {
|
|
@@ -309,16 +147,10 @@ public class Presenter implements StatusBarPresenter {
|
|
|
309
147
|
}
|
|
310
148
|
}
|
|
311
149
|
|
|
312
|
-
private boolean isColorLight(int color) {
|
|
313
|
-
double darkness = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255;
|
|
314
|
-
return darkness < 0.5;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
150
|
public void onConfigurationChanged(ViewController controller, Options options) {
|
|
318
151
|
Options withDefault = options.withDefaultOptions(defaultOptions);
|
|
319
152
|
setNavigationBarBackgroundColor(withDefault.navigationBar);
|
|
320
|
-
|
|
321
|
-
setTextColorScheme(withDefault.statusBar);
|
|
153
|
+
StatusBarPresenter.instance.onConfigurationChanged(withDefault.statusBar);
|
|
322
154
|
applyBackgroundColor(controller, withDefault);
|
|
323
155
|
}
|
|
324
156
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
package com.reactnativenavigation.viewcontrollers.viewcontroller
|
|
2
|
+
|
|
3
|
+
import android.animation.ValueAnimator
|
|
4
|
+
import android.app.Activity
|
|
5
|
+
import com.reactnativenavigation.utils.ColorUtils
|
|
6
|
+
import com.reactnativenavigation.utils.SystemUiUtils
|
|
7
|
+
import com.reactnativenavigation.views.animations.ColorAnimator
|
|
8
|
+
import java.lang.ref.WeakReference
|
|
9
|
+
|
|
10
|
+
private const val STATUS_BAR_TRANSLUCENCY_ALPHA = (SystemUiUtils.STATUS_BAR_HEIGHT_TRANSLUCENCY * 255).toInt()
|
|
11
|
+
|
|
12
|
+
class StatusBarColorAnimator(val activity: Activity) {
|
|
13
|
+
private val colorAnimator = ColorAnimator()
|
|
14
|
+
private val window = WeakReference(activity.window)
|
|
15
|
+
|
|
16
|
+
fun getAnimator(from: Int, to: Int, isTranslucent: Boolean): ValueAnimator =
|
|
17
|
+
colorAnimator.getAnimation(
|
|
18
|
+
from = from,
|
|
19
|
+
to = embedTranslucency(to, isTranslucent)
|
|
20
|
+
).apply {
|
|
21
|
+
addUpdateListener { animation ->
|
|
22
|
+
SystemUiUtils.setStatusBarColor(window.get(), animation.animatedValue as Int)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
private fun embedTranslucency(color: Int, isTranslucent: Boolean): Int =
|
|
27
|
+
if (!isTranslucent) color else ColorUtils.setAlpha(color, STATUS_BAR_TRANSLUCENCY_ALPHA)
|
|
28
|
+
}
|
|
@@ -3,6 +3,7 @@ package com.reactnativenavigation.viewcontrollers.viewcontroller;
|
|
|
3
3
|
import static com.reactnativenavigation.utils.CollectionUtils.forEach;
|
|
4
4
|
import static com.reactnativenavigation.utils.ObjectUtils.perform;
|
|
5
5
|
|
|
6
|
+
import android.animation.Animator;
|
|
6
7
|
import android.app.Activity;
|
|
7
8
|
import android.content.res.Configuration;
|
|
8
9
|
import android.view.View;
|
|
@@ -12,11 +13,11 @@ import android.view.ViewTreeObserver;
|
|
|
12
13
|
|
|
13
14
|
import androidx.annotation.CallSuper;
|
|
14
15
|
import androidx.annotation.CheckResult;
|
|
16
|
+
import androidx.annotation.NonNull;
|
|
15
17
|
import androidx.annotation.Nullable;
|
|
16
18
|
import androidx.annotation.VisibleForTesting;
|
|
17
19
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
|
18
20
|
|
|
19
|
-
import com.reactnativenavigation.BuildConfig;
|
|
20
21
|
import com.reactnativenavigation.options.Options;
|
|
21
22
|
import com.reactnativenavigation.options.params.Bool;
|
|
22
23
|
import com.reactnativenavigation.options.params.NullBool;
|
|
@@ -27,7 +28,6 @@ import com.reactnativenavigation.utils.UiThread;
|
|
|
27
28
|
import com.reactnativenavigation.utils.UiUtils;
|
|
28
29
|
import com.reactnativenavigation.viewcontrollers.parent.ParentController;
|
|
29
30
|
import com.reactnativenavigation.viewcontrollers.stack.StackController;
|
|
30
|
-
import com.reactnativenavigation.viewcontrollers.stack.statusbar.StatusBarController;
|
|
31
31
|
import com.reactnativenavigation.viewcontrollers.viewcontroller.overlay.ViewControllerOverlay;
|
|
32
32
|
import com.reactnativenavigation.views.BehaviourAdapter;
|
|
33
33
|
import com.reactnativenavigation.views.component.Component;
|
|
@@ -92,10 +92,6 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
|
|
|
92
92
|
options = initialOptions.copy();
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
public StatusBarController getStatusBarController() {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
95
|
public void setWaitForRender(Bool waitForRender) {
|
|
100
96
|
this.waitForRender = waitForRender;
|
|
101
97
|
}
|
|
@@ -118,10 +114,34 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
|
|
|
118
114
|
|
|
119
115
|
public abstract T createView();
|
|
120
116
|
|
|
117
|
+
public void onSelected(ViewController<?> previousVC) {
|
|
118
|
+
setVisible();
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
public void onDeselected() {
|
|
122
|
+
setInvisible();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
public void setVisible() {
|
|
126
|
+
getView().setVisibility(View.VISIBLE);
|
|
127
|
+
|
|
128
|
+
onViewWillAppear();
|
|
129
|
+
onViewDidAppear();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
public void setInvisible() {
|
|
133
|
+
getView().setVisibility(View.INVISIBLE);
|
|
134
|
+
}
|
|
135
|
+
|
|
121
136
|
public void setViewVisibilityListener(ViewVisibilityListener viewVisibilityListener) {
|
|
122
137
|
this.viewVisibilityListener = viewVisibilityListener;
|
|
123
138
|
}
|
|
124
139
|
|
|
140
|
+
@NonNull
|
|
141
|
+
public ViewControllerVisibilityInfo getVisibilityInfo() {
|
|
142
|
+
return new ViewControllerVisibilityInfo(null);
|
|
143
|
+
}
|
|
144
|
+
|
|
125
145
|
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
|
|
126
146
|
public void ensureViewIsCreated() {
|
|
127
147
|
getView();
|
|
@@ -177,7 +197,6 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
|
|
|
177
197
|
}
|
|
178
198
|
|
|
179
199
|
public void setDefaultOptions(Options defaultOptions) {
|
|
180
|
-
|
|
181
200
|
}
|
|
182
201
|
|
|
183
202
|
public Activity getActivity() {
|
|
@@ -357,6 +376,14 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
|
|
|
357
376
|
|
|
358
377
|
}
|
|
359
378
|
|
|
379
|
+
public Animator getPushAnimations(Options appearingOptions) {
|
|
380
|
+
return null;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
public Animator getPopAnimations(Options appearingOptions, Options disappearingOptions) {
|
|
384
|
+
return null;
|
|
385
|
+
}
|
|
386
|
+
|
|
360
387
|
protected void runOnPreDraw(Func1<T> task) {
|
|
361
388
|
if (!isDestroyed) UiUtils.runOnPreDrawOnce(getView(), task);
|
|
362
389
|
}
|
package/lib/android/build.gradle
CHANGED
|
@@ -2,20 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
buildscript {
|
|
4
4
|
ext {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
kotlinVersion = "1.9.24"
|
|
6
|
+
RNNKotlinVersion = kotlinVersion
|
|
7
|
+
detoxKotlinVersion = kotlinVersion
|
|
8
|
+
compileSdkVersion = 35
|
|
9
|
+
buildToolsVersion = "35.0.0"
|
|
10
|
+
minSdkVersion = 24
|
|
11
|
+
targetSdkVersion = 34
|
|
12
|
+
ndkVersion = "26.1.10909125"
|
|
7
13
|
}
|
|
8
14
|
|
|
9
15
|
repositories {
|
|
10
|
-
mavenLocal()
|
|
11
|
-
mavenCentral()
|
|
12
16
|
google()
|
|
13
|
-
|
|
17
|
+
mavenCentral()
|
|
14
18
|
}
|
|
15
|
-
dependencies {
|
|
16
|
-
classpath 'com.android.tools.build:gradle:3.5.3'
|
|
17
|
-
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31"
|
|
18
19
|
|
|
20
|
+
dependencies {
|
|
21
|
+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
|
22
|
+
classpath("com.facebook.react:react-native-gradle-plugin")
|
|
23
|
+
classpath 'com.android.tools.build:gradle'
|
|
19
24
|
// NOTE: Do not place your application dependencies here; they belong
|
|
20
25
|
// in the individual module build.gradle files
|
|
21
26
|
}
|
|
@@ -23,13 +28,20 @@ buildscript {
|
|
|
23
28
|
|
|
24
29
|
allprojects {
|
|
25
30
|
repositories {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
maven { url "$rootDir/../../node_modules/detox/Detox-android" }
|
|
32
|
+
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
|
|
33
|
+
flatDir {
|
|
34
|
+
dirs "$rootProject.projectDir/libs"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
subprojects {
|
|
40
|
+
afterEvaluate { p ->
|
|
41
|
+
if (p.hasProperty('android')) {
|
|
42
|
+
android {
|
|
43
|
+
buildToolsVersion rootProject.ext.buildToolsVersion
|
|
44
|
+
}
|
|
33
45
|
}
|
|
34
46
|
}
|
|
35
47
|
}
|
|
@@ -23,7 +23,8 @@ exports.ComponentScreen = (0, connect_1.connect)(class extends react_1.Component
|
|
|
23
23
|
this.props.layoutNode.componentDidMount();
|
|
24
24
|
}
|
|
25
25
|
isVisible() {
|
|
26
|
-
|
|
26
|
+
const isVisible = LayoutStore_1.LayoutStore.isVisibleLayout(this.props.layoutNode);
|
|
27
|
+
return isVisible;
|
|
27
28
|
}
|
|
28
29
|
renderTabBar() {
|
|
29
30
|
const bottomTabs = this.props.layoutNode.getBottomTabs();
|
|
@@ -7,6 +7,7 @@ const react_native_1 = require("react-native");
|
|
|
7
7
|
const BottomTabs_1 = require("./BottomTabs");
|
|
8
8
|
const ComponentScreen_1 = require("./ComponentScreen");
|
|
9
9
|
const Stack_1 = require("./Stack");
|
|
10
|
+
const SideMenu_1 = require("./SideMenu");
|
|
10
11
|
const LayoutComponent = class extends react_1.Component {
|
|
11
12
|
render() {
|
|
12
13
|
switch (this.props.layoutNode.type) {
|
|
@@ -16,6 +17,14 @@ const LayoutComponent = class extends react_1.Component {
|
|
|
16
17
|
return react_1.default.createElement(Stack_1.Stack, { layoutNode: this.props.layoutNode });
|
|
17
18
|
case 'Component':
|
|
18
19
|
return react_1.default.createElement(ComponentScreen_1.ComponentScreen, { layoutNode: this.props.layoutNode });
|
|
20
|
+
case 'SideMenuRoot':
|
|
21
|
+
return react_1.default.createElement(SideMenu_1.SideMenuRoot, { layoutNode: this.props.layoutNode });
|
|
22
|
+
case 'SideMenuLeft':
|
|
23
|
+
return react_1.default.createElement(SideMenu_1.SideMenuLeft, { layoutNode: this.props.layoutNode });
|
|
24
|
+
case 'SideMenuCenter':
|
|
25
|
+
return react_1.default.createElement(SideMenu_1.SideMenuCenter, { layoutNode: this.props.layoutNode });
|
|
26
|
+
case 'SideMenuRight':
|
|
27
|
+
return react_1.default.createElement(SideMenu_1.SideMenuRight, { layoutNode: this.props.layoutNode });
|
|
19
28
|
}
|
|
20
29
|
return react_1.default.createElement(react_native_1.View, null);
|
|
21
30
|
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import { ComponentProps } from '../ComponentProps';
|
|
3
|
+
export declare const SideMenuRoot: {
|
|
4
|
+
new (props: ComponentProps): {
|
|
5
|
+
render(): React.JSX.Element[];
|
|
6
|
+
context: unknown;
|
|
7
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<ComponentProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
8
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
|
9
|
+
readonly props: Readonly<ComponentProps>;
|
|
10
|
+
state: Readonly<{}>;
|
|
11
|
+
refs: {
|
|
12
|
+
[key: string]: React.ReactInstance;
|
|
13
|
+
};
|
|
14
|
+
componentDidMount?(): void;
|
|
15
|
+
shouldComponentUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
16
|
+
componentWillUnmount?(): void;
|
|
17
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
18
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<ComponentProps>, prevState: Readonly<{}>): any;
|
|
19
|
+
componentDidUpdate?(prevProps: Readonly<ComponentProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
20
|
+
componentWillMount?(): void;
|
|
21
|
+
UNSAFE_componentWillMount?(): void;
|
|
22
|
+
componentWillReceiveProps?(nextProps: Readonly<ComponentProps>, nextContext: any): void;
|
|
23
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<ComponentProps>, nextContext: any): void;
|
|
24
|
+
componentWillUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): void;
|
|
25
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): void;
|
|
26
|
+
};
|
|
27
|
+
new (props: ComponentProps, context: any): {
|
|
28
|
+
render(): React.JSX.Element[];
|
|
29
|
+
context: unknown;
|
|
30
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<ComponentProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
31
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
|
32
|
+
readonly props: Readonly<ComponentProps>;
|
|
33
|
+
state: Readonly<{}>;
|
|
34
|
+
refs: {
|
|
35
|
+
[key: string]: React.ReactInstance;
|
|
36
|
+
};
|
|
37
|
+
componentDidMount?(): void;
|
|
38
|
+
shouldComponentUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
39
|
+
componentWillUnmount?(): void;
|
|
40
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
41
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<ComponentProps>, prevState: Readonly<{}>): any;
|
|
42
|
+
componentDidUpdate?(prevProps: Readonly<ComponentProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
43
|
+
componentWillMount?(): void;
|
|
44
|
+
UNSAFE_componentWillMount?(): void;
|
|
45
|
+
componentWillReceiveProps?(nextProps: Readonly<ComponentProps>, nextContext: any): void;
|
|
46
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<ComponentProps>, nextContext: any): void;
|
|
47
|
+
componentWillUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): void;
|
|
48
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<ComponentProps>, nextState: Readonly<{}>, nextContext: any): void;
|
|
49
|
+
};
|
|
50
|
+
contextType?: React.Context<any> | undefined;
|
|
51
|
+
};
|
|
52
|
+
declare class SideMenuComponent extends Component<ComponentProps> {
|
|
53
|
+
render(): React.JSX.Element;
|
|
54
|
+
}
|
|
55
|
+
export declare const SideMenuLeft: typeof SideMenuComponent;
|
|
56
|
+
export declare const SideMenuCenter: typeof SideMenuComponent;
|
|
57
|
+
export declare const SideMenuRight: typeof SideMenuComponent;
|
|
58
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SideMenuRight = exports.SideMenuCenter = exports.SideMenuLeft = exports.SideMenuRoot = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const connect_1 = require("../connect");
|
|
7
|
+
const LayoutComponent_1 = require("./LayoutComponent");
|
|
8
|
+
exports.SideMenuRoot = (0, connect_1.connect)(class extends react_1.Component {
|
|
9
|
+
render() {
|
|
10
|
+
const children = this.props.layoutNode.children;
|
|
11
|
+
return children.map((child) => {
|
|
12
|
+
return react_1.default.createElement(LayoutComponent_1.LayoutComponent, { key: child.nodeId, layoutNode: child });
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
class SideMenuComponent extends react_1.Component {
|
|
17
|
+
render() {
|
|
18
|
+
const children = this.props.layoutNode.children;
|
|
19
|
+
const component = children[0];
|
|
20
|
+
return react_1.default.createElement(LayoutComponent_1.LayoutComponent, { key: component.nodeId, layoutNode: component });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.SideMenuLeft = (0, connect_1.connect)(SideMenuComponent);
|
|
24
|
+
exports.SideMenuCenter = (0, connect_1.connect)(SideMenuComponent);
|
|
25
|
+
exports.SideMenuRight = (0, connect_1.connect)(SideMenuComponent);
|
|
@@ -3,6 +3,6 @@ import ParentNode from './ParentNode';
|
|
|
3
3
|
export default class BottomTabsNode extends ParentNode {
|
|
4
4
|
selectedIndex: number;
|
|
5
5
|
constructor(layout: any, parentNode?: ParentNode);
|
|
6
|
-
mergeOptions(
|
|
6
|
+
mergeOptions(_options: Options): void;
|
|
7
7
|
getVisibleLayout(): import("./ComponentNode").default;
|
|
8
8
|
}
|
|
@@ -10,8 +10,9 @@ class BottomTabsNode extends ParentNode_1.default {
|
|
|
10
10
|
super(layout, 'BottomTabs', parentNode);
|
|
11
11
|
this.selectedIndex = layout.data?.options?.bottomTabs?.currentTabIndex || 0;
|
|
12
12
|
}
|
|
13
|
-
mergeOptions(
|
|
14
|
-
super.mergeOptions(
|
|
13
|
+
mergeOptions(_options) {
|
|
14
|
+
super.mergeOptions(_options);
|
|
15
|
+
const { options } = this.data;
|
|
15
16
|
if (options.bottomTabs?.currentTabIndex) {
|
|
16
17
|
this.selectedIndex = options.bottomTabs?.currentTabIndex;
|
|
17
18
|
(0, layoutActions_1.switchTabByIndex)(this, this.selectedIndex);
|
|
@@ -2,6 +2,7 @@ import BottomTabs from './BottomTabsNode';
|
|
|
2
2
|
import ComponentNode from './ComponentNode';
|
|
3
3
|
import Stack from './StackNode';
|
|
4
4
|
import ParentNode from './ParentNode';
|
|
5
|
+
import SideMenuRootNode, { SideMenuLeftNode, SideMenuRightNode, SideMenuCenterNode } from './SideMenu';
|
|
5
6
|
export default class LayoutNodeFactory {
|
|
6
|
-
static create(layout: any, parentNode?: ParentNode):
|
|
7
|
+
static create(layout: any, parentNode?: ParentNode): ComponentNode | SideMenuRootNode | SideMenuLeftNode | SideMenuRightNode | SideMenuCenterNode | Stack | BottomTabs;
|
|
7
8
|
}
|
|
@@ -4,6 +4,7 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const BottomTabsNode_1 = tslib_1.__importDefault(require("./BottomTabsNode"));
|
|
5
5
|
const ComponentNode_1 = tslib_1.__importDefault(require("./ComponentNode"));
|
|
6
6
|
const StackNode_1 = tslib_1.__importDefault(require("./StackNode"));
|
|
7
|
+
const SideMenu_1 = tslib_1.__importStar(require("./SideMenu"));
|
|
7
8
|
class LayoutNodeFactory {
|
|
8
9
|
static create(layout, parentNode) {
|
|
9
10
|
switch (layout.type) {
|
|
@@ -11,7 +12,15 @@ class LayoutNodeFactory {
|
|
|
11
12
|
return new ComponentNode_1.default(layout, parentNode);
|
|
12
13
|
case 'Stack':
|
|
13
14
|
return new StackNode_1.default(layout, parentNode);
|
|
14
|
-
|
|
15
|
+
case 'SideMenuRoot':
|
|
16
|
+
return new SideMenu_1.default(layout, parentNode);
|
|
17
|
+
case 'SideMenuLeft':
|
|
18
|
+
return new SideMenu_1.SideMenuLeftNode(layout, parentNode);
|
|
19
|
+
case 'SideMenuCenter':
|
|
20
|
+
return new SideMenu_1.SideMenuCenterNode(layout, parentNode);
|
|
21
|
+
case 'SideMenuRight':
|
|
22
|
+
return new SideMenu_1.SideMenuRightNode(layout, parentNode);
|
|
23
|
+
default: // TODO Undo
|
|
15
24
|
case 'BottomTabs':
|
|
16
25
|
return new BottomTabsNode_1.default(layout, parentNode);
|
|
17
26
|
}
|
|
@@ -10,6 +10,7 @@ export default class ParentNode extends Node {
|
|
|
10
10
|
componentDidDisappear(): void;
|
|
11
11
|
getVisibleLayout(): ComponentNode;
|
|
12
12
|
getTopParent(): Node;
|
|
13
|
+
applyOptions(_options: Options): void;
|
|
13
14
|
mergeOptions(options: Options): void;
|
|
14
15
|
buttonsChanged(_oldButtons: OptionsTopBarButton[], _newButtons: OptionsTopBarButton[]): void;
|
|
15
16
|
titleChanged(_oldComponent: any, _newComponent: any): void;
|
|
@@ -26,6 +26,9 @@ class ParentNode extends Node_1.default {
|
|
|
26
26
|
return this.parentNode.getTopParent();
|
|
27
27
|
return this;
|
|
28
28
|
}
|
|
29
|
+
applyOptions(_options) {
|
|
30
|
+
this.parentNode?.applyOptions(_options);
|
|
31
|
+
}
|
|
29
32
|
mergeOptions(options) {
|
|
30
33
|
this.data.options = lodash_1.default.mergeWith(this.data.options, options, (objValue, srcValue, key) => {
|
|
31
34
|
if (lodash_1.default.isArray(objValue)) {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ParentNode from './ParentNode';
|
|
2
|
+
import ComponentNode from './ComponentNode';
|
|
3
|
+
import { Options } from '../../src/index';
|
|
4
|
+
import { NodeType } from './Node';
|
|
5
|
+
export default class SideMenuRootNode extends ParentNode {
|
|
6
|
+
visibleChild: ParentNode;
|
|
7
|
+
constructor(layout: any, parentNode?: ParentNode);
|
|
8
|
+
applyOptions(_options: Options): void;
|
|
9
|
+
mergeOptions(options: Options): void;
|
|
10
|
+
/**
|
|
11
|
+
* @override
|
|
12
|
+
*/
|
|
13
|
+
getVisibleLayout(): ComponentNode;
|
|
14
|
+
_updateVisibility(options: Options): void;
|
|
15
|
+
_getCenterChild: () => ParentNode;
|
|
16
|
+
_getLeftChild: () => ParentNode;
|
|
17
|
+
_getRightChild: () => ParentNode;
|
|
18
|
+
}
|
|
19
|
+
export declare class SideMenuNode extends ParentNode {
|
|
20
|
+
constructor(layout: any, type: NodeType, parentNode?: ParentNode);
|
|
21
|
+
getVisibleLayout(): ComponentNode;
|
|
22
|
+
}
|
|
23
|
+
export declare class SideMenuLeftNode extends SideMenuNode {
|
|
24
|
+
constructor(layout: any, parentNode?: ParentNode);
|
|
25
|
+
}
|
|
26
|
+
export declare class SideMenuRightNode extends SideMenuNode {
|
|
27
|
+
constructor(layout: any, parentNode?: ParentNode);
|
|
28
|
+
}
|
|
29
|
+
export declare class SideMenuCenterNode extends SideMenuNode {
|
|
30
|
+
constructor(layout: any, parentNode?: ParentNode);
|
|
31
|
+
}
|