Explorar el Código

Implement navigator.dismissContextualMenu

Guy Carmeli hace 8 años
padre
commit
5899330858

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/bridge/NavigationReactModule.java Ver fichero

@@ -180,4 +180,9 @@ public class NavigationReactModule extends ReactContextBaseJavaModule {
180 180
                 new ContextualMenuParamsParser().parse(BundleConverter.toBundle(params));
181 181
         NavigationCommandsHandler.showContextualMenu(contextualMenuParams, onButtonClicked);
182 182
     }
183
+
184
+    @ReactMethod
185
+    public void dismissContextualMenu() {
186
+        NavigationCommandsHandler.dismissContextualMenu();
187
+    }
183 188
 }

+ 4
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java Ver fichero

@@ -254,6 +254,10 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard
254 254
         layout.showContextualMenu(params, onButtonClicked);
255 255
     }
256 256
 
257
+    public void dismissContextualMenu() {
258
+        layout.dismissContextualMenu();
259
+    }
260
+
257 261
     @Override
258 262
     public void onEvent(Event event) {
259 263
         if (event.getType().equals(ModalDismissedEvent.TYPE)) {

+ 14
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationCommandsHandler.java Ver fichero

@@ -344,4 +344,18 @@ public class NavigationCommandsHandler {
344 344
             }
345 345
         });
346 346
     }
347
+
348
+    public static void dismissContextualMenu() {
349
+        final NavigationActivity currentActivity = NavigationActivity.currentActivity;
350
+        if (currentActivity == null) {
351
+            return;
352
+        }
353
+
354
+        NavigationApplication.instance.runOnMainThread(new Runnable() {
355
+            @Override
356
+            public void run() {
357
+                currentActivity.dismissContextualMenu();
358
+            }
359
+        });
360
+    }
347 361
 }

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/BottomTabsLayout.java Ver fichero

@@ -211,6 +211,11 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
211 211
         getCurrentScreenStack().peek().showContextualMenu(params, onButtonClicked);
212 212
     }
213 213
 
214
+    @Override
215
+    public void dismissContextualMenu() {
216
+        getCurrentScreenStack().peek().dismissContextualMenu();
217
+    }
218
+
214 219
     public void selectBottomTabByTabIndex(Integer index) {
215 220
         bottomTabs.setCurrentItem(index);
216 221
     }

+ 2
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/Layout.java Ver fichero

@@ -36,4 +36,6 @@ public interface Layout extends ScreenStackContainer {
36 36
     boolean containsNavigator(String navigatorId);
37 37
 
38 38
     void showContextualMenu(ContextualMenuParams params, Callback onButtonClicked);
39
+
40
+    void dismissContextualMenu();
39 41
 }

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/SingleScreenLayout.java Ver fichero

@@ -216,6 +216,11 @@ public class SingleScreenLayout extends RelativeLayout implements Layout {
216 216
         stack.peek().showContextualMenu(params, onButtonClicked);
217 217
     }
218 218
 
219
+    @Override
220
+    public void dismissContextualMenu() {
221
+        stack.peek().dismissContextualMenu();
222
+    }
223
+
219 224
     @Override
220 225
     public boolean onTitleBarBackButtonClick() {
221 226
         if (leftButtonOnClickListener != null) {

+ 4
- 0
android/app/src/main/java/com/reactnativenavigation/screens/Screen.java Ver fichero

@@ -218,6 +218,10 @@ public abstract class Screen extends RelativeLayout implements Subscriber {
218 218
         setStatusBarColor(styleParams.contextualMenuStatusBarColor);
219 219
     }
220 220
 
221
+    public void dismissContextualMenu() {
222
+        topBar.dismissContextualMenu();
223
+    }
224
+
221 225
     public void destroy() {
222 226
         unmountReactView();
223 227
         EventBus.instance.unregister(this);

+ 4
- 0
src/Screen.js Ver fichero

@@ -114,6 +114,10 @@ class Navigator {
114 114
     return platformSpecific.showContextualMenu(this, params, onButtonPressed);
115 115
   }
116 116
 
117
+  dismissContextualMenu() {
118
+    return platformSpecific.dismissContextualMenu();
119
+  }
120
+
117 121
   setOnNavigatorEvent(callback) {
118 122
     this.navigatorEventHandler = callback;
119 123
     if (!this.navigatorEventSubscription) {

+ 6
- 1
src/deprecated/platformSpecificDeprecated.android.js Ver fichero

@@ -486,6 +486,10 @@ function showContextualMenu(navigator, params, onButtonPressed) {
486 486
   newPlatformSpecific.showContextualMenu(contextualMenu, onButtonPressed);
487 487
 }
488 488
 
489
+function dismissContextualMenu() {
490
+  newPlatformSpecific.dismissContextualMenu();
491
+}
492
+
489 493
 export default {
490 494
   startTabBasedApp,
491 495
   startSingleScreenApp,
@@ -505,5 +509,6 @@ export default {
505 509
   navigatorToggleTabs,
506 510
   navigatorToggleNavBar,
507 511
   showSnackbar,
508
-  showContextualMenu
512
+  showContextualMenu,
513
+  dismissContextualMenu
509 514
 };

+ 6
- 1
src/platformSpecific.android.js Ver fichero

@@ -124,6 +124,10 @@ function showContextualMenu(params, onButtonPressed) {
124 124
   NativeReactModule.showContextualMenu(params, onButtonPressed);
125 125
 }
126 126
 
127
+function dismissContextualMenu() {
128
+  NativeReactModule.dismissContextualMenu();
129
+}
130
+
127 131
 module.exports = {
128 132
   startApp,
129 133
   push,
@@ -145,5 +149,6 @@ module.exports = {
145 149
   setBottomTabBadgeByNavigatorId,
146 150
   setBottomTabBadgeByIndex,
147 151
   showSnackbar,
148
-  showContextualMenu
152
+  showContextualMenu,
153
+  dismissContextualMenu
149 154
 };