| Crates.io | managarr-tree-widget |
| lib.rs | managarr-tree-widget |
| version | 0.24.0 |
| created_at | 2024-11-18 21:48:22.149852+00 |
| updated_at | 2024-11-18 21:48:22.149852+00 |
| description | Tree Widget for Managarr |
| homepage | |
| repository | https://github.com/Dark-Alex-17/managarr-tree-widget |
| max_upload_size | |
| id | 1452692 |
| size | 91,067 |
Ratatui Widget built to show Tree Data structures.

Add this widget to your project using the following command:
cargo add managarr-tree-widget
To run the example widget, simply run:
cargo run --example example
The following is an example of how to create a tree of strings (namely one like the one used in the example):
fn draw(&mut self, frame: &mut Frame) {
let area = frame.area();
let tree_items = vec![
TreeItem::new_leaf("Alfa"),
TreeItem::new(
"Bravo",
vec![
TreeItem::new_leaf("Charlie"),
TreeItem::new(
"Delta",
vec![TreeItem::new_leaf("Echo"), TreeItem::new_leaf("Foxtrot")],
)
.expect("all item identifiers are unique"),
TreeItem::new_leaf("Golf"),
],
)
.expect("all item identifiers are unique"),
TreeItem::new_leaf("Hotel"),
];
let widget = Tree::new(&tree_items)
.expect("all item identifiers are unique")
.block(
Block::bordered()
.title("Tree Widget"),
)
.highlight_style(
Style::new()
.fg(Color::Black)
.bg(Color::LightGreen)
.add_modifier(Modifier::BOLD),
)
.highlight_symbol(">> ");
frame.render_stateful_widget(widget, area, &mut self.state);
}
This will generate the following tree structure:
┌── Alfa
├── Bravo
│ ├── Charlie
│ ├── Delta
│ │ ├── Echo
│ │ └── Foxtrot
│ └── Golf
└── Hotel
This example assumes the existence of a self.state field that is initialized with TreeState::default(). The TreeItem struct is used to create a tree of items, and the Tree struct is used to create the widget itself.
A more detailed and feature-complete example is available in the example file.
The original project for this widget is the Ratatui Tree Widget, which was purpose built for the specific use
case of mqttui.
The updated version of the tree widget that allows more generic types is created by me, Alex Clarke.