From 2813bb288b94fdc5b00c81a39c81f96976033674 Mon Sep 17 00:00:00 2001 From: Sam Shanks <68856260+SamShanks1@users.noreply.github.com> Date: Tue, 11 Oct 2022 12:48:59 +0100 Subject: [PATCH] feat(interface/context): context menu onBack function (#122) * feat(interface/context): back button pressed * fix(context): types --- package/client/resource/interface/context.ts | 1 + resource/interface/client/context.lua | 6 ++++-- web/src/features/menu/context/ContextMenu.tsx | 2 +- web/src/features/menu/context/Item.tsx | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/package/client/resource/interface/context.ts b/package/client/resource/interface/context.ts index 5d4f5fd..2f2a860 100644 --- a/package/client/resource/interface/context.ts +++ b/package/client/resource/interface/context.ts @@ -23,6 +23,7 @@ interface ContextMenuProps { title: string; menu?: string; onExit?: () => void; + onBack?: () => void; canClose?: boolean; options: { [key: string]: ContextMenuItem } | ContextMenuArrayItem[]; } diff --git a/resource/interface/client/context.lua b/resource/interface/client/context.lua index 1d284a4..54ff347 100644 --- a/resource/interface/client/context.lua +++ b/resource/interface/client/context.lua @@ -22,6 +22,7 @@ local openContextMenu = nil ---@field title string ---@field menu? string ---@field onExit? fun() +---@field onBack? fun() ---@field canClose? boolean ---@field options { [string]: ContextMenuItem } | ContextMenuArrayItem[] @@ -68,9 +69,10 @@ function lib.getOpenContextMenu() return openContextMenu end ---@param onExit boolean? function lib.hideContext(onExit) closeContext(nil, nil, onExit) end -RegisterNUICallback('openContext', function(id, cb) +RegisterNUICallback('openContext', function(data, cb) + if data.back and contextMenus[openContextMenu].onBack then contextMenus[openContextMenu].onBack() end cb(1) - lib.showContext(id) + lib.showContext(data.id) end) RegisterNUICallback('clickContext', function(id, cb) diff --git a/web/src/features/menu/context/ContextMenu.tsx b/web/src/features/menu/context/ContextMenu.tsx index 78ce833..da8f0f4 100644 --- a/web/src/features/menu/context/ContextMenu.tsx +++ b/web/src/features/menu/context/ContextMenu.tsx @@ -7,7 +7,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { fetchNui } from '../../../utils/fetchNui'; const openMenu = (id: string | undefined) => { - fetchNui('openContext', id); + fetchNui('openContext', {id: id, back: true}); }; const ContextMenu: React.FC = () => { diff --git a/web/src/features/menu/context/Item.tsx b/web/src/features/menu/context/Item.tsx index 3e4654d..ba16da0 100644 --- a/web/src/features/menu/context/Item.tsx +++ b/web/src/features/menu/context/Item.tsx @@ -16,7 +16,7 @@ import { Option, ContextMenuProps } from '../../../interfaces/context'; import { fetchNui } from '../../../utils/fetchNui'; const openMenu = (id: string | undefined) => { - fetchNui('openContext', id); + fetchNui('openContext', {id: id, back: false}); }; const clickContext = (id: string) => {