react-native-navigation 7.24.3 → 7.25.0-snapshot.552

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.
Files changed (148) hide show
  1. package/lib/android/app/build.gradle +12 -9
  2. package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +7 -9
  3. package/lib/android/app/src/main/java/com/reactnativenavigation/options/BottomTabOptions.java +4 -0
  4. package/lib/android/app/src/main/java/com/reactnativenavigation/options/Options.java +2 -0
  5. package/lib/android/app/src/main/java/com/reactnativenavigation/options/OverlayOptions.java +3 -2
  6. package/lib/android/app/src/main/java/com/reactnativenavigation/options/OverlayOptions.kt +31 -0
  7. package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutInsets.kt +44 -0
  8. package/lib/android/app/src/main/java/com/reactnativenavigation/options/layout/LayoutOptions.kt +71 -0
  9. package/lib/android/app/src/main/java/com/reactnativenavigation/options/parsers/JSONParser.java +0 -2
  10. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/PrimitiveExt.kt +9 -0
  11. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +2 -1
  12. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +31 -4
  13. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +6 -13
  14. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +37 -12
  15. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java +4 -0
  16. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/navigator/Navigator.java +25 -6
  17. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManager.kt +104 -33
  18. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/parent/ParentController.java +86 -9
  19. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuController.java +12 -0
  20. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +18 -1
  21. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +51 -0
  22. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonController.kt +7 -1
  23. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +1 -1
  24. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +23 -7
  25. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/RootPresenter.java +0 -1
  26. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +24 -3
  27. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabs.java +29 -1
  28. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainer.kt +1 -0
  29. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsLayout.java +10 -1
  30. package/lib/android/app/src/main/java/com/reactnativenavigation/views/component/ComponentLayout.java +10 -2
  31. package/lib/android/app/src/main/java/com/reactnativenavigation/views/overlay/AttachedOverlayContainer.kt +69 -0
  32. package/lib/android/app/src/main/java/com/reactnativenavigation/views/overlay/ViewTooltip.java +921 -0
  33. package/lib/android/app/src/main/java/com/reactnativenavigation/views/sidemenu/SideMenuRoot.java +9 -1
  34. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/StackLayout.java +14 -4
  35. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/TopBar.java +0 -1
  36. package/lib/android/app/src/main/java/com/reactnativenavigation/views/toptabs/TopTabsStyleHelper.java +0 -1
  37. package/lib/dist/src/interfaces/Options.d.ts +34 -0
  38. package/lib/ios/RNNBasePresenter.m +17 -0
  39. package/lib/ios/RNNBottomTabsController.m +1 -0
  40. package/lib/ios/RNNBridgeManager.mm +5 -3
  41. package/lib/ios/RNNComponentViewController.m +5 -0
  42. package/lib/ios/RNNLayoutOptions.h +2 -1
  43. package/lib/ios/RNNLayoutOptions.m +4 -0
  44. package/lib/ios/RNNModalHostViewManagerHandler.h +11 -0
  45. package/lib/ios/RNNModalHostViewManagerHandler.m +40 -0
  46. package/lib/ios/RNNModalManager.h +2 -2
  47. package/lib/ios/RNNModalManager.m +0 -26
  48. package/lib/ios/RNNStackPresenter.m +1 -0
  49. package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -0
  50. package/lib/src/interfaces/Options.ts +38 -0
  51. package/package.json +3 -1
  52. package/.buildkite/pipeline.yml +0 -59
  53. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutOptions.java +0 -48
  54. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +0 -178
  55. package/lib/android/app/src/test/java/com/reactnativenavigation/EnvironmentTest.java +0 -43
  56. package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +0 -23
  57. package/lib/android/app/src/test/java/com/reactnativenavigation/TestApplication.java +0 -35
  58. package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +0 -62
  59. package/lib/android/app/src/test/java/com/reactnativenavigation/fakes/IconResolverFake.kt +0 -8
  60. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/BackDrawable.java +0 -30
  61. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +0 -49
  62. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +0 -18
  63. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleComponentViewController.java +0 -15
  64. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleOverlay.java +0 -54
  65. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/SimpleViewController.java +0 -113
  66. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +0 -79
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentViewCreator.java +0 -18
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestReactView.java +0 -71
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarButtonCreatorMock.java +0 -34
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TitleBarReactViewCreatorMock.java +0 -20
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TopBarBackgroundViewCreatorMock.java +0 -20
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +0 -21
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/options/LayoutNodeParserTest.java +0 -51
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +0 -315
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OrientationOptionsTest.java +0 -81
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +0 -95
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +0 -122
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/BoolParserTest.java +0 -28
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -50
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/JSONParserTest.java +0 -64
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +0 -56
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +0 -59
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/SideMenuPresenterTest.java +0 -35
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/react/NavigationModuleTest.java +0 -102
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/react/ReloadListenerTest.java +0 -24
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/AnimationHelper.kt +0 -33
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonPresenterTest.java +0 -241
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ButtonSpanTest.java +0 -57
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/CompatUtilsTest.java +0 -17
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +0 -78
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +0 -47
  92. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/NativeCommandListenerTest.java +0 -60
  93. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/OptionHelper.java +0 -16
  94. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ReflectionUtilsTest.java +0 -26
  95. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/StringUtilsTest.java +0 -19
  96. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/SystemUiUtilsTest.kt +0 -27
  97. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleAndButtonsMeasurerTest.kt +0 -357
  98. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/TitleBarHelper.java +0 -54
  99. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +0 -29
  100. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +0 -22
  101. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/ViewHelper.java +0 -9
  102. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/OptionsApplyingTest.java +0 -149
  103. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +0 -206
  104. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +0 -62
  105. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +0 -589
  106. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +0 -173
  107. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AfterInitialTabTest.java +0 -38
  108. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +0 -86
  109. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTabTest.java +0 -31
  110. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/TogetherTest.java +0 -20
  111. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/button/NavigationIconResolverTest.java +0 -78
  112. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +0 -80
  113. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +0 -56
  114. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +0 -216
  115. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewControllerTest.java +0 -97
  116. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/FragmentCreatorMock.java +0 -34
  117. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/externalcomponent/SomeFragment.java +0 -8
  118. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +0 -33
  119. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorMock.java +0 -40
  120. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +0 -213
  121. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +0 -319
  122. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +0 -367
  123. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +0 -898
  124. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +0 -254
  125. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +0 -108
  126. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +0 -299
  127. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +0 -446
  128. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +0 -77
  129. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/FloatingActionButtonTest.java +0 -154
  130. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/IdStackTest.java +0 -114
  131. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -241
  132. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +0 -1165
  133. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +0 -1081
  134. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarButtonControllerTest.java +0 -61
  135. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TitleBarReactViewControllerTest.java +0 -43
  136. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarButtonControllerTest.java +0 -120
  137. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +0 -432
  138. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +0 -249
  139. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +0 -337
  140. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegateTest.java +0 -68
  141. package/lib/android/app/src/test/java/com/reactnativenavigation/views/OverlayTouchDelegateTest.java +0 -60
  142. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +0 -477
  143. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TopBarTest.java +0 -82
  144. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +0 -109
  145. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/DefaultViewAnimatorCreatorFake.kt +0 -36
  146. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +0 -101
  147. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +0 -40
  148. package/lib/android/app/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker +0 -1
@@ -1,5 +1,8 @@
1
1
  package com.reactnativenavigation.viewcontrollers.viewcontroller;
2
2
 
3
+ import static com.reactnativenavigation.utils.CollectionUtils.forEach;
4
+ import static com.reactnativenavigation.utils.ObjectUtils.perform;
5
+
3
6
  import android.app.Activity;
4
7
  import android.content.res.Configuration;
5
8
  import android.view.View;
@@ -9,11 +12,13 @@ import android.view.ViewTreeObserver;
9
12
 
10
13
  import androidx.annotation.CallSuper;
11
14
  import androidx.annotation.CheckResult;
15
+ import androidx.annotation.NonNull;
12
16
  import androidx.annotation.Nullable;
13
17
  import androidx.annotation.VisibleForTesting;
14
18
  import androidx.coordinatorlayout.widget.CoordinatorLayout;
15
19
 
16
20
  import com.reactnativenavigation.options.Options;
21
+ import com.reactnativenavigation.options.OverlayAttachOptions;
17
22
  import com.reactnativenavigation.options.params.Bool;
18
23
  import com.reactnativenavigation.options.params.NullBool;
19
24
  import com.reactnativenavigation.react.CommandListener;
@@ -25,15 +30,13 @@ import com.reactnativenavigation.viewcontrollers.parent.ParentController;
25
30
  import com.reactnativenavigation.viewcontrollers.stack.StackController;
26
31
  import com.reactnativenavigation.viewcontrollers.viewcontroller.overlay.ViewControllerOverlay;
27
32
  import com.reactnativenavigation.views.BehaviourAdapter;
33
+ import com.reactnativenavigation.views.overlay.ViewTooltip;
28
34
  import com.reactnativenavigation.views.component.Component;
29
35
  import com.reactnativenavigation.views.component.Renderable;
30
36
 
31
37
  import java.util.ArrayList;
32
38
  import java.util.List;
33
39
 
34
- import static com.reactnativenavigation.utils.CollectionUtils.forEach;
35
- import static com.reactnativenavigation.utils.ObjectUtils.perform;
36
-
37
40
  public abstract class ViewController<T extends ViewGroup> implements ViewTreeObserver.OnGlobalLayoutListener,
38
41
  ViewGroup.OnHierarchyChangeListener,
39
42
  BehaviourAdapter {
@@ -157,6 +160,14 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
157
160
  }
158
161
  }
159
162
 
163
+ public ViewController<?> getTopMostParent(){
164
+ if(parentController!=null){
165
+ return parentController.getTopMostParent();
166
+ }else{
167
+ return this;
168
+ }
169
+ }
170
+
160
171
  @CallSuper
161
172
  public void applyOptions(Options options) {
162
173
 
@@ -289,6 +300,7 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
289
300
  if (view.getParent() instanceof ViewGroup) {
290
301
  ((ViewManager) view.getParent()).removeView(view);
291
302
  }
303
+ setParentController(null);
292
304
  view = null;
293
305
  isDestroyed = true;
294
306
  }
@@ -383,6 +395,15 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
383
395
 
384
396
  }
385
397
 
398
+ protected View findTooltipAnchorView(OverlayAttachOptions options) {
399
+ return null;
400
+ }
401
+
402
+ public ViewTooltip.TooltipView showAnchoredOverlay(@NonNull View anchorView,
403
+ @NonNull OverlayAttachOptions overlayAttachOptions,
404
+ @NonNull ViewController<?> overlayViewController) {
405
+ return null;
406
+ }
386
407
  public int getBottomInset() {
387
408
  return perform(parentController, 0, p -> p.getBottomInset(this));
388
409
  }
@@ -12,7 +12,9 @@ import com.reactnativenavigation.R;
12
12
  import com.reactnativenavigation.options.LayoutDirection;
13
13
 
14
14
  import java.util.ArrayList;
15
+ import java.util.HashMap;
15
16
  import java.util.List;
17
+ import java.util.Map;
16
18
 
17
19
  import androidx.annotation.IntRange;
18
20
 
@@ -21,10 +23,11 @@ import static com.reactnativenavigation.utils.ViewUtils.findChildByClass;
21
23
 
22
24
  @SuppressLint("ViewConstructor")
23
25
  public class BottomTabs extends AHBottomNavigation {
26
+ public final static int TAB_NOT_FOUND = -1;
24
27
  private boolean itemsCreationEnabled = true;
25
28
  private boolean shouldCreateItems = true;
26
29
  private List<Runnable> onItemCreationEnabled = new ArrayList<>();
27
-
30
+ private final Map<String,Integer> idPositionMapping = new HashMap<>();
28
31
  public BottomTabs(Context context) {
29
32
  super(context);
30
33
  setId(R.id.bottomTabs);
@@ -132,4 +135,29 @@ public class BottomTabs extends AHBottomNavigation {
132
135
  private boolean hasItemsAndIsMeasured(int w, int h, int oldw, int oldh) {
133
136
  return w != 0 && h != 0 && (w != oldw || h != oldh) && getItemsCount() > 0;
134
137
  }
138
+
139
+
140
+ public void setTagForTabIndex(int index, String tag) {
141
+ if(tag==null){
142
+ String oldTag = null;
143
+ for(Map.Entry<String,Integer> e: idPositionMapping.entrySet()){
144
+ if(e.getValue() == index){
145
+ oldTag = e.getKey();
146
+ break;
147
+ }
148
+ }
149
+ if(oldTag!=null){
150
+ idPositionMapping.remove(oldTag);
151
+ }
152
+ }else{
153
+ idPositionMapping.put(tag,index);
154
+ }
155
+ }
156
+
157
+ public int getTabIndexByTag(String tag) {
158
+ if(tag!=null && idPositionMapping.containsKey(tag)){
159
+ return idPositionMapping.get(tag);
160
+ }
161
+ return TAB_NOT_FOUND;
162
+ }
135
163
  }
@@ -48,6 +48,7 @@ class BottomTabsContainer(context: Context, val bottomTabs: BottomTabs) : Shadow
48
48
  this.topOutLineView.visibility = View.GONE
49
49
 
50
50
  this.addView(linearLayout, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
51
+
51
52
  }
52
53
 
53
54
  override var shadowRadius: Float
@@ -10,12 +10,21 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout;
10
10
  import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
11
11
  import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
12
12
 
13
+ import com.reactnativenavigation.views.overlay.AttachedOverlayContainer;
14
+
13
15
  public class BottomTabsLayout extends CoordinatorLayout {
14
16
 
15
17
  private BottomTabsContainer bottomTabsContainer;
18
+ final private AttachedOverlayContainer attachedOverlayContainer ;
16
19
 
17
20
  public BottomTabsLayout(Context context) {
18
21
  super(context);
22
+ attachedOverlayContainer=new AttachedOverlayContainer(context);
23
+ this.addView(attachedOverlayContainer, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
24
+ }
25
+
26
+ public AttachedOverlayContainer getAttachedOverlayContainer() {
27
+ return attachedOverlayContainer;
19
28
  }
20
29
 
21
30
  @Override
@@ -33,4 +42,4 @@ public class BottomTabsLayout extends CoordinatorLayout {
33
42
  addView(bottomTabsContainer, lp);
34
43
  this.bottomTabsContainer = bottomTabsContainer;
35
44
  }
36
- }
45
+ }
@@ -4,15 +4,16 @@ import android.annotation.SuppressLint;
4
4
  import android.content.Context;
5
5
  import android.view.MotionEvent;
6
6
  import android.view.ViewGroup;
7
- import android.view.WindowInsets;
8
7
 
9
8
  import com.reactnativenavigation.options.ButtonOptions;
9
+ import com.reactnativenavigation.utils.CoordinatorLayoutUtils;
10
10
  import com.reactnativenavigation.viewcontrollers.viewcontroller.ScrollEventListener;
11
11
  import com.reactnativenavigation.options.Options;
12
12
  import com.reactnativenavigation.options.params.Bool;
13
13
  import com.reactnativenavigation.react.ReactView;
14
14
  import com.reactnativenavigation.react.events.ComponentType;
15
15
  import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonController;
16
+ import com.reactnativenavigation.views.overlay.AttachedOverlayContainer;
16
17
  import com.reactnativenavigation.views.touch.OverlayTouchDelegate;
17
18
 
18
19
  import androidx.coordinatorlayout.widget.CoordinatorLayout;
@@ -25,14 +26,21 @@ public class ComponentLayout extends CoordinatorLayout implements ReactComponent
25
26
  private boolean willAppearSent = false;
26
27
  private ReactView reactView;
27
28
  private final OverlayTouchDelegate touchDelegate;
29
+ final private AttachedOverlayContainer attachedOverlayContainer ;
28
30
 
29
31
  public ComponentLayout(Context context, ReactView reactView) {
30
32
  super(context);
31
33
  this.reactView = reactView;
34
+ attachedOverlayContainer = new AttachedOverlayContainer(context);
32
35
  addView(reactView.asView(), matchParentLP());
36
+ addView(attachedOverlayContainer, CoordinatorLayoutUtils.matchParentLP());
33
37
  touchDelegate = new OverlayTouchDelegate(this, reactView);
34
38
  }
35
39
 
40
+ public AttachedOverlayContainer getAttachedOverlayContainer() {
41
+ return attachedOverlayContainer;
42
+ }
43
+
36
44
  @Override
37
45
  public boolean isReady() {
38
46
  return reactView.isReady();
@@ -109,4 +117,4 @@ public class ComponentLayout extends CoordinatorLayout implements ReactComponent
109
117
  public boolean superOnInterceptTouchEvent(MotionEvent event) {
110
118
  return super.onInterceptTouchEvent(event);
111
119
  }
112
- }
120
+ }
@@ -0,0 +1,69 @@
1
+ package com.reactnativenavigation.views.overlay
2
+
3
+ import android.app.Activity
4
+ import android.content.Context
5
+ import android.graphics.Color
6
+ import android.view.View
7
+ import android.widget.FrameLayout
8
+
9
+ class AttachedOverlayContainer(context: Context) : FrameLayout(context) {
10
+
11
+ init {
12
+ z = Float.MAX_VALUE
13
+ }
14
+
15
+ fun addOverlay(overlayView: View) {
16
+ addView(overlayView)
17
+ }
18
+
19
+ fun addAnchoredView(anchorView: View, overlayView: View, gravity: String): ViewTooltip.TooltipView? {
20
+ return when (gravity) {
21
+ "top" -> {
22
+ showTooltip(overlayView, anchorView, ViewTooltip.Position.TOP)
23
+ }
24
+ "bottom" -> {
25
+ showTooltip(overlayView, anchorView, ViewTooltip.Position.BOTTOM)
26
+ }
27
+ "left" -> {
28
+ showTooltip(overlayView, anchorView, ViewTooltip.Position.LEFT)
29
+ }
30
+ "right" -> {
31
+ showTooltip(overlayView, anchorView, ViewTooltip.Position.RIGHT)
32
+ }
33
+ else -> {
34
+ showTooltip(overlayView, anchorView, ViewTooltip.Position.TOP)
35
+ }
36
+ }
37
+
38
+ }
39
+
40
+
41
+ private fun showTooltip(
42
+ tooltipView: View,
43
+ tooltipAnchorView: View,
44
+ pos: ViewTooltip.Position
45
+ ): ViewTooltip.TooltipView {
46
+ val tooltipViewContainer = ViewTooltip
47
+ .on(context as Activity, this, tooltipAnchorView)
48
+ .autoHide(false, 5000)
49
+ .clickToHide(false)
50
+ .align(ViewTooltip.ALIGN.CENTER)
51
+ .padding(0, 0, 0, 0)
52
+ .customView(tooltipView)
53
+ .distanceWithView(0)
54
+ .color(Color.WHITE)
55
+ .bubble(false)
56
+ .arrowHeight(0)
57
+ .arrowWidth(0)
58
+ .position(pos)
59
+
60
+ .onDisplay {
61
+ }
62
+ .onHide {
63
+
64
+ }
65
+ .show()
66
+ return tooltipViewContainer
67
+ }
68
+
69
+ }