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