{.section-title.accent.text-primary} # API UI functions Reference ### Opening a popup In order to open a popup window, you must first define the position of the popup on your map. You can position this popup by using a "rectangle" object in Tiled that you will place on an "object" layer.
``` WA.ui.openPopup(targetObject: string, message: string, buttons: ButtonDescriptor[]): Popup ``` * **targetObject**: the name of the rectangle object defined in Tiled. * **message**: the message to display in the popup. * **buttons**: an array of action buttons defined underneath the popup. Action buttons are `ButtonDescriptor` objects containing these properties. * **label (_string_)**: The label of the button. * **className (_string_)**: The visual type of the button. Can be one of "normal", "primary", "success", "warning", "error", "disabled". * **callback (_(popup: Popup)=>void_)**: Callback called when the button is pressed. Please note that `openPopup` returns an object of the `Popup` class. Also, the callback called when a button is clicked is passed a `Popup` object. The `Popup` class that represents an open popup contains a single method: `close()`. This will obviously close the popup when called. ```javascript class Popup { /** * Closes the popup */ close() {}; } ``` Example: ```javascript let helloWorldPopup; // Open the popup when we enter a given zone helloWorldPopup = WA.room.onEnterZone('myZone', () => { WA.ui.openPopup("popupRectangle", 'Hello world!', [{ label: "Close", className: "primary", callback: (popup) => { // Close the popup when the "Close" button is pressed. popup.close(); } }); }]); // Close the popup when we leave the zone. WA.room.onLeaveZone('myZone', () => { helloWorldPopup.close(); }); ``` ### register additional menu entries adds an additional Entry to the main menu , these exist until the map is unloaded ```typescript WA.ui.registerMenuCommand(menuCommand: string, callback: (menuCommand: string) => void): void ``` Example: ```javascript WA.ui.registerMenuCommand("test", () => { WA.chat.sendChatMessage("test clicked", "menu cmd") }) ```