mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-17 06:56:03 +01:00
62 lines
1.6 KiB
Lua
62 lines
1.6 KiB
Lua
local contextMenus = {}
|
|
local openContextMenu = nil
|
|
|
|
function lib.showContext(id)
|
|
if not contextMenus[id] then return error('No context menu of such id found.') end
|
|
local data = contextMenus[id]
|
|
openContextMenu = id
|
|
SetNuiFocus(true, true)
|
|
SendNuiMessage(json.encode({
|
|
action = 'showContext',
|
|
data = {
|
|
title = data.title,
|
|
menu = data.menu,
|
|
options = data.options
|
|
}
|
|
}, { sort_keys = true }))
|
|
end
|
|
|
|
function lib.registerContext(context)
|
|
for k, v in pairs(context) do
|
|
if type(k) == 'number' then
|
|
contextMenus[v.id] = v
|
|
else
|
|
contextMenus[context.id] = context
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function lib.getOpenContextMenu() return openContextMenu end
|
|
|
|
function lib.hideContext()
|
|
SetNuiFocus(false, false)
|
|
SendNUIMessage({action = 'hideContext'})
|
|
openContextMenu = nil
|
|
end
|
|
|
|
RegisterNUICallback('openContext', function(id, cb)
|
|
cb(1)
|
|
lib.showContext(id)
|
|
end)
|
|
|
|
RegisterNUICallback('clickContext', function(id, cb)
|
|
cb(1)
|
|
if tonumber(id) then id += 1 end
|
|
local data = contextMenus[openContextMenu].options[id]
|
|
if not data.event and not data.serverEvent then return end
|
|
openContextMenu = nil
|
|
SetNuiFocus(false, false)
|
|
if data.event then TriggerEvent(data.event, data.args) end
|
|
if data.serverEvent then TriggerServerEvent(data.serverEvent, data.args) end
|
|
SendNUIMessage({
|
|
action = 'hideContext'
|
|
})
|
|
end)
|
|
|
|
RegisterNUICallback('closeContext', function(_, cb)
|
|
cb(1)
|
|
SetNuiFocus(false, false)
|
|
openContextMenu = nil
|
|
end)
|