From a645e087a6e44f2548f44499d447aeb3bc90492a Mon Sep 17 00:00:00 2001 From: Vidocq Date: Wed, 8 Nov 2023 17:27:43 +0800 Subject: [PATCH] feat(android): support disable menu --- README.md | 2 +- .../reactnativecontextmenu/ContextMenuManager.java | 5 +++++ .../reactnativecontextmenu/ContextMenuView.java | 8 ++++++++ index.d.ts | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 52dde06..652af70 100644 --- a/README.md +++ b/README.md @@ -80,4 +80,4 @@ Optional. When set to `true`, the context menu is triggered with a single tap in ###### `disabled` -Optional. Currently iOS only. Disable menu interaction. +Optional. Disable menu interaction. diff --git a/android/src/main/java/com/mpiannucci/reactnativecontextmenu/ContextMenuManager.java b/android/src/main/java/com/mpiannucci/reactnativecontextmenu/ContextMenuManager.java index 81f7b4b..403dac6 100644 --- a/android/src/main/java/com/mpiannucci/reactnativecontextmenu/ContextMenuManager.java +++ b/android/src/main/java/com/mpiannucci/reactnativecontextmenu/ContextMenuManager.java @@ -45,6 +45,11 @@ public void setDropdownMenuMode(ContextMenuView view, @Nullable boolean enabled) view.setDropdownMenuMode(enabled); } + @ReactProp(name = "disabled") + public void setDisabled(ContextMenuView view, @Nullable boolean disabled) { + view.setDisabled(disabled); + } + @androidx.annotation.Nullable @Override public Map getExportedCustomDirectEventTypeConstants() { diff --git a/android/src/main/java/com/mpiannucci/reactnativecontextmenu/ContextMenuView.java b/android/src/main/java/com/mpiannucci/reactnativecontextmenu/ContextMenuView.java index f67b7d6..291d8a8 100644 --- a/android/src/main/java/com/mpiannucci/reactnativecontextmenu/ContextMenuView.java +++ b/android/src/main/java/com/mpiannucci/reactnativecontextmenu/ContextMenuView.java @@ -55,6 +55,8 @@ public Action(String title, boolean disabled) { protected boolean dropdownMenuMode = false; + protected boolean disabled = false; + public ContextMenuView(final Context context) { super(context); @@ -105,6 +107,8 @@ public void setActions(@Nullable ReadableArray actions) { Menu menu = contextMenu.getMenu(); menu.clear(); + if (disabled) { return; } + for (int i = 0; i < actions.size(); i++) { ReadableMap action = actions.getMap(i); @Nullable Drawable systemIcon = getResourceWithName(getContext(), action.getString("systemIcon")); @@ -128,6 +132,10 @@ public void setDropdownMenuMode(@Nullable boolean enabled) { this.dropdownMenuMode = enabled; } + public void setDisabled(@Nullable boolean disabled) { + this.disabled = disabled; + } + @Override public boolean onMenuItemClick(MenuItem menuItem) { cancelled = false; diff --git a/index.d.ts b/index.d.ts index f29e81f..04e7331 100644 --- a/index.d.ts +++ b/index.d.ts @@ -72,7 +72,7 @@ export interface ContextMenuProps extends ViewProps { */ dropdownMenuMode?: boolean; /** - * Currently iOS only. Disable menu interaction + * Disable menu interaction */ disabled?: boolean; /**