Interactive List
Create an interactive list widget with keyboard and mouse support.
Code
import { Screen, List, Box } from "@unblessed/node";
const screen = new Screen({ smartCSR: true });
const list = new List({
parent: screen,
top: "center",
left: "center",
width: "50%",
height: "50%",
label: " {bold}{cyan-fg}Menu{/cyan-fg}{/bold} ",
tags: true,
keys: true, // Enable keyboard navigation
vi: true, // Enable vi-style keys (j/k)
mouse: true, // Enable mouse selection
border: {
type: "line",
},
style: {
fg: "white",
border: { fg: "cyan" },
selected: {
bg: "cyan",
fg: "black",
},
},
items: ["Option 1", "Option 2", "Option 3", "Option 4", "Option 5"],
});
const statusBox = new Box({
parent: screen,
top: 3,
left: "center",
width: "50%",
height: 3,
content: "Select an item with arrow keys or mouse",
tags: true,
style: {
fg: "yellow",
},
});
list.on("select", (item, index) => {
statusBox.setContent(
`{bold}Selected:{/bold} ${item.getText()} (index: ${index})`,
);
screen.render();
});
list.focus();
screen.key(["q", "C-c"], () => process.exit(0));
screen.render();
Try it Live
Visit the Home Page and select "Interactive List" from the examples to try this!
Key Features
Input Handling
keys: true- Arrow key navigationvi: true- Vi-style j/k navigationmouse: true- Click to select
Events
selectevent - Fires when item is selected- Returns selected item and index
Styling Selected Items
style: {
selected: {
bg: 'cyan',
fg: 'black'
}
}
Next Steps
- Try Tables
- Learn about Forms
- Explore all examples