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";