Menu
Menu de navegação por teclado com funções de evento específicas.
lib.registerMenu
Registra e armazena em cache um menu sob o id especificado.
lib.registerMenu(data, cb)import lib from '@overextended/ox_lib/client';
lib.registerMenu(data, cb);- data:
table(object)- id:
string - title:
string - options:
table(array)- label:
string - progress?:
number - colorScheme?:
string - icon?:
string- Ícone FontAwesome exibido no lado esquerdo; funciona da mesma forma que os ícones de
notificationetextui. - Também suporta URLs de imagem (
png,webp), mas não é recomendado usá-las em vez dos ícones do FontAwesome.
- Ícone FontAwesome exibido no lado esquerdo; funciona da mesma forma que os ícones de
- iconColor?:
string - iconAnimation?:
'spin''spinPulse''spinReverse''pulse''beat''fade''beatFade''bounce''shake' - values?:
string[]ou{ label: string, description: string }[]- Se fornecido, cria uma lista lateral rolável.
- Ao usar um objeto e definir
description, essa descrição será exibida na tooltip do menu.
- checked?:
boolean- Definindo
trueoufalseo botão se comportará como um checkbox; sevaluestambém for fornecido, o botão será uma lista rolável.
- Definindo
- description?:
string- Exibe uma tooltip abaixo do menu no item quando o mouse estiver sobre ele, usando a descrição fornecida.
- defaultIndex?:
number- Define o índice atual da lista para o número especificado.
- args?:
{[string]: any}- Permite passar quaisquer argumentos através do botão.
- Se o botão tiver
values, entãoisScrollserá passado automaticamente. - Se o botão tiver
checked, entãoisCheckserá passado automaticamente.
- close?:
boolean- Se definido como
false, o menu não será fechado ao interagir com essa opção.
- Se definido como
- label:
- position?:
'top-left'ou'top-right'ou'bottom-left'ou'bottom-right'- Padrão:
'top-left'
- Padrão:
- disableInput?:
boolean- Padrão:
false
- Padrão:
- canClose:
boolean- Se definido como
false, o usuário não conseguirá sair do menu sem pressionar um dos botões.
- Se definido como
- onClose:
function(keyPressed?:'Escape' | 'Backspace')- Função executada quando o menu é fechado via ESC/Backspace.
- onSelected:
function(selected:number, secondary:number|boolean, args:{[string]: any})- Função executada quando o botão selecionado no menu for alterado.
- onSideScroll:
function(selected:number, scrollIndex:number, args:{[string]: any})- Função executada sempre que um item de lista rolável for alterado.
- onCheck:
function(selected:number, checked:boolean, args:{[string]: any})- Função executada sempre que um checkbox for alternado.
-- cb:
function(selected:number, scrollIndex:number, args:{[string]: any})
- Função executada sempre que um checkbox for alternado.
-- cb:
- Função de callback executada quando um item do menu é pressionado.
- id:
lib.showMenu
Exibe o menu com o id fornecido.
lib.showMenu(id)import lib from '@overextended/ox_lib/client';
lib.showMenu(id);- id:
string
lib.hideMenu
lib.hideMenu(onExit)import lib from '@overextended/ox_lib/client';
lib.hideMenu(onExit);-- onExit?: boolean
- Se
true, executa a funçãoonClosedo menu.
lib.getOpenMenu
Retorna o id do menu atualmente aberto.
lib.getOpenMenu()import lib from '@overextended/ox_lib/client';
lib.getOpenMenu();lib.setMenuOptions
lib.setMenuOptions(id, options, index)import lib from '@overextended/ox_lib/client';
lib.setMenuOptions(id, options, index);- id:
string - options:
table(objectouarray) -- index?:number- Se especificado, atualiza apenas a tabela de opções no índice indicado.
Exemplo:
Substitui a opção no índice 3 do menu especificado
lib.setMenuOptions('some_menu_id', {label = 'New option', icon = 'plus'}, 3)import lib from '@overextended/ox_lib/client';
lib.setMenuOptions('some_menu_id', { label: 'New option', icon: 'plus' }, 3);Exemplo de uso
Primeiro registramos o menu com as opções especificadas e então chamamos a função show através de um comando.
Evite re-registrar constantemente um menu que não dependa de valores externos (ou seja, um menu estático).
lib.registerMenu({
id = 'some_menu_id',
title = 'Menu title',
position = 'top-right',
onSideScroll = function(selected, scrollIndex, args)
print("Scroll: ", selected, scrollIndex, args)
end,
onSelected = function(selected, secondary, args)
if not secondary then
print("Normal button")
else
if args.isCheck then
print("Check button")
end
if args.isScroll then
print("Scroll button")
end
end
print(selected, secondary, json.encode(args, {indent=true}))
end,
onCheck = function(selected, checked, args)
print("Check: ", selected, checked, args)
end,
onClose = function(keyPressed)
print('Menu closed')
if keyPressed then
print(('Pressed %s to close the menu'):format(keyPressed))
end
end,
options = {
{label = 'Simple button', description = 'It has a description!'},
{label = 'Checkbox button', checked = true},
{label = 'Scroll button with icon', icon = 'arrows-up-down-left-right', values={'hello', 'there'}},
{label = 'Button with args', args = {someArg = 'nice_button'}},
{label = 'List button', values = {'You', 'can', 'side', 'scroll', 'this'}, description = 'It also has a description!'},
{label = 'List button with default index', values = {'You', 'can', 'side', 'scroll', 'this'}, defaultIndex = 5},
{label = 'List button with args', values = {'You', 'can', 'side', 'scroll', 'this'}, args = {someValue = 3, otherValue = 'value'}},
}
}, function(selected, scrollIndex, args)
print(selected, scrollIndex, args)
end)
RegisterCommand('testmenu', function()
lib.showMenu('some_menu_id')
end)import lib from '@overextended/ox_lib/client';
lib.registerMenu(
{
id: 'some_menu_id',
title: 'Menu title',
position: 'top-right',
onSideScroll: (selected, scrollIndex, args) => {
console.log('Scroll: ', selected, scrollIndex, args);
},
onSelected: (selected, secondary, args) => {
if (!secondary) {
console.log('Normal button');
} else {
if (args.isCheck) {
console.log('Check button');
}
if (args.isScroll) {
console.log('Scroll button');
}
}
console.log(selected, secondary, JSON.stringify(args, null, 2));
},
onCheck: (selected, checked, args) => {
console.log('Check: ', selected, checked, args);
},
onClose: (keyPressed) => {
console.log('Menu closed');
if (keyPressed) {
console.log(`Pressed ${keyPressed} to close the menu`);
}
},
options: [
{ label: 'Simple button', description: 'It has a description!' },
{ label: 'Checkbox button', checked: true },
{ label: 'Scroll button with icon', icon: 'arrows-up-down-left-right', values: ['hello', 'there'] },
{ label: 'Button with args', args: { someArg: 'nice_button' } },
{
label: 'List button',
values: ['You', 'can', 'side', 'scroll', 'this'],
description: 'It also has a description!',
},
{ label: 'List button with default index', values: ['You', 'can', 'side', 'scroll', 'this'], defaultIndex: 5 },
{
label: 'List button with args',
values: ['You', 'can', 'side', 'scroll', 'this'],
args: { someValue: 3, otherValue: 'value' },
},
],
},
(selected, scrollIndex, args) => {
console.log(selected, scrollIndex, args);
}
);
RegisterCommand(
'testmenu',
() => {
lib.showMenu('some_menu_id');
},
false
);