From 32a698c043eecadbc204ae88257a9b6182fbe876 Mon Sep 17 00:00:00 2001 From: Luke Date: Thu, 4 Aug 2022 13:25:47 +0200 Subject: [PATCH] feat(menu): lib.hideMenu --- resource/interface/client/menu.lua | 8 ++++++++ web/src/features/menu/list/index.tsx | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/resource/interface/client/menu.lua b/resource/interface/client/menu.lua index a631259..182f8e2 100644 --- a/resource/interface/client/menu.lua +++ b/resource/interface/client/menu.lua @@ -24,6 +24,14 @@ function lib.showMenu(id) }) end +function lib.hideMenu(onExit) + if onExit and registeredMenus[openMenu].onClose then registeredMenus[openMenu].onClose() end + SetNuiFocus(false, false) + SendNUIMessage({ + action = 'closeMenu' + }) +end + function lib.setMenuOptions(id, options, index) if index then registeredMenus[id].options[index] = options diff --git a/web/src/features/menu/list/index.tsx b/web/src/features/menu/list/index.tsx index b4329ff..b89a923 100644 --- a/web/src/features/menu/list/index.tsx +++ b/web/src/features/menu/list/index.tsx @@ -66,9 +66,9 @@ const ListMenu: React.FC = () => { const [indexStates, setIndexStates] = useState>({}); const listRefs = useRef>([]); - const closeMenu = () => { + const closeMenu = (ignoreFetch?: boolean) => { setVisible(false); - fetchNui("closeMenu"); + if (!ignoreFetch) fetchNui("closeMenu"); }; const moveMenu = (e: React.KeyboardEvent) => { @@ -147,6 +147,8 @@ const ListMenu: React.FC = () => { return () => window.removeEventListener("keydown", keyHandler); }, [visible]); + useNuiEvent("closeMenu", () => closeMenu(true)); + useNuiEvent("setMenu", (data: MenuSettings) => { setSelected(0); if (!data.position) data.position = "top-left";