Skip to main content

[NodeMod Core]

/ .. / Menu

Class: Menu

Defined in: src/core/menu.ts:114

Represents a menu that can be displayed to players with navigable items and submenus.

Example

const menu = new Menu({
title\: 'Player Actions',
items\: [
{
name\: 'Kick Player',
handler\: (client) => {
console.log(`${client.name} selected kick player`);
}
},
{
name\: 'Ban Player',
handler\: (client) => {
console.log(`${client.name} selected ban player`);
}
}
]
});

Constructors

Constructor

new Menu(options): Menu

Defined in: src/core/menu.ts:145

Creates a new Menu instance.

Parameters

options

MenuOptions

Menu configuration options

Returns

Menu

Properties

title

title: string

Defined in: src/core/menu.ts:116

Menu title displayed at the top

items

items: MenuItem[]

Defined in: src/core/menu.ts:118

Array of menu items

entity?

optional entity: Entity

Defined in: src/core/menu.ts:120

Specific entity this menu is for (undefined = all players)

time

time: number

Defined in: src/core/menu.ts:122

Auto-close timeout in seconds (-1 for no timeout)

onTimeout()?

optional onTimeout: (client) => void

Defined in: src/core/menu.ts:124

Callback when menu times out

Parameters

client

Entity

Returns

void

onExit()?

optional onExit: (client) => void

Defined in: src/core/menu.ts:126

Callback when menu is exited

Parameters

client

Entity

Returns

void

exitText

exitText: string

Defined in: src/core/menu.ts:128

Text for exit button

backText

backText: string

Defined in: src/core/menu.ts:130

Text for back button

nextText

nextText: string

Defined in: src/core/menu.ts:132

Text for next page button

prevText

prevText: string

Defined in: src/core/menu.ts:134

Text for previous page button

formatters

formatters: Required<MenuFormatters>

Defined in: src/core/menu.ts:136

Formatting functions for menu display

parent?

optional parent: Menu

Defined in: src/core/menu.ts:138

Parent menu for navigation hierarchy

template

static template: object

Defined in: src/core/menu.ts:177

Static template methods for creating common menu types.

simple()

simple: (title, items, handlers?) => Menu

Creates a simple menu with string items and optional handlers.

Parameters
title

string

Menu title

items

string[]

Array of item names

handlers?

MenuHandler[]

Optional array of handlers (must match items length)

Returns

Menu

Configured Menu instance

Example
const menu = Menu.template.simple(
'Choose Action',
['Option 1', 'Option 2', 'Option 3'],
[(client) => console.log('Option 1'), (client) => console.log('Option 2')]
);

yesNo()

yesNo: (title, onYes, onNo) => Menu

Creates a Yes/No confirmation menu.

Parameters
title

string

Menu title/question

onYes

MenuHandler

Handler for Yes selection

onNo

MenuHandler

Handler for No selection

Returns

Menu

Configured Menu instance

Example
const menu = Menu.template.yesNo(
'Are you sure?',
(client) => console.log('User confirmed'),
(client) => console.log('User declined')
);

confirm()

confirm: (message, onConfirm, onCancel?) => Menu

Creates a confirmation menu with Confirm/Cancel options.

Parameters
message

string

Confirmation message

onConfirm

MenuHandler

Handler for Confirm selection

onCancel?

MenuHandler

Optional handler for Cancel selection

Returns

Menu

Configured Menu instance

Example
const menu = Menu.template.confirm(
'Delete all data?',
(client) => deleteData(),
(client) => console.log('Cancelled')
);