Files
ox_lib/package/client/resource/interface/menu.ts

42 lines
1.5 KiB
TypeScript
Raw Normal View History

2022-09-14 13:50:32 +02:00
import { IconName, IconPrefix } from '@fortawesome/fontawesome-common-types';
type MenuPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
type ChangeFunction = (selected: number, scrollIndex?: number, args?: any, checked?: boolean) => void;
2022-09-14 13:50:32 +02:00
interface MenuOptions {
label: string;
icon?: IconName | [IconPrefix, IconName];
checked?: boolean;
values?: Array<string | { label: string; description: string }>;
2022-09-14 13:50:32 +02:00
description?: string;
defaultIndex?: number;
args?: Record<any, any>;
close?: boolean;
2022-09-14 13:50:32 +02:00
}
interface MenuProps {
id: string;
title: string;
options: MenuOptions[];
position?: MenuPosition;
disableInput?: boolean;
canClose?: boolean;
onClose?: (keyPressed?: 'Escape' | 'Backspace') => void;
2022-09-14 13:50:32 +02:00
onSelected?: ChangeFunction;
onSideScroll?: ChangeFunction;
onChecked?: ChangeFunction;
cb?: ChangeFunction;
2022-09-14 13:50:32 +02:00
}
type registerMenu = (data: MenuProps, cb: ChangeFunction) => void;
export const registerMenu: registerMenu = (data, cb) => exports.ox_lib.registerMenu(data, cb);
export const showMenu = (id: string): string => exports.ox_lib.showMenu(id);
export const hideMenu = (onExit: boolean): void => exports.ox_lib.hideMenu(onExit);
export const getOpenMenu = (): string | null => exports.ox_lib.getOpenMenu();
type setMenuOptions = (id: string, options: MenuOptions | MenuOptions[], index?: number) => void;
export const setMenuOptions: setMenuOptions = (id, options, index) => exports.ox_lib.setMenuOptions(id, options, index);