pub struct TreeView<'a, T> { /* private fields */ }Expand description
Tree view widget.
A widget for rendering hierarchical tree data with expand/collapse functionality, custom rendering, and selection highlighting.
§Type Parameters
T- The type of data stored in tree nodes.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeView};
let nodes = vec![TreeNode::new("Root")];
let tree = TreeView::new(nodes)
.render_fn(|data, state| {
ratatui::text::Line::from(*data)
});Implementations§
Source§impl<'a, T> TreeView<'a, T>
impl<'a, T> TreeView<'a, T>
Sourcepub fn block(self, block: Block<'a>) -> Self
pub fn block(self, block: Block<'a>) -> Self
Sets the block to wrap the tree.
§Arguments
block- The block to wrap the tree view.
§Returns
Self for method chaining.
§Example
use ratatui::widgets::{Block, Borders};
use ratatui_toolkit::tree_view::{TreeNode, TreeView};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeView::new(nodes)
.block(Block::default().borders(Borders::ALL).title("Tree"));Source§impl<'a, T> TreeView<'a, T>
impl<'a, T> TreeView<'a, T>
Sourcepub fn highlight_style(self, style: Style) -> Self
pub fn highlight_style(self, style: Style) -> Self
Sets the highlight style for selected rows (full-width background).
§Arguments
style- The style to apply to selected rows.
§Returns
Self for method chaining.
§Example
use ratatui::style::{Color, Style};
use ratatui_toolkit::tree_view::{TreeNode, TreeView};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeView::new(nodes)
.highlight_style(Style::default().bg(Color::Blue));Source§impl<'a, T> TreeView<'a, T>
impl<'a, T> TreeView<'a, T>
Sourcepub fn icons(self, expand: &'a str, collapse: &'a str) -> Self
pub fn icons(self, expand: &'a str, collapse: &'a str) -> Self
Sets custom expand/collapse icons.
§Arguments
expand- The icon to show for collapsed nodes.collapse- The icon to show for expanded nodes.
§Returns
Self for method chaining.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeView};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeView::new(nodes)
.icons("+", "-");Source§impl<'a, T> TreeView<'a, T>
impl<'a, T> TreeView<'a, T>
Sourcepub fn node_at_row(
&self,
state: &TreeViewState,
row: usize,
) -> Option<Vec<usize>>
pub fn node_at_row( &self, state: &TreeViewState, row: usize, ) -> Option<Vec<usize>>
Gets the node at a specific row (considering scroll offset).
§Arguments
state- The tree view state.row- The row index (0-based, relative to visible area).
§Returns
The path to the node at the given row, or None if out of bounds.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeView, TreeViewState};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeView::new(nodes);
let state = TreeViewState::new();
let path = tree.node_at_row(&state, 0);Source§impl<'a, T> TreeView<'a, T>
impl<'a, T> TreeView<'a, T>
Sourcepub fn render_fn<F>(self, f: F) -> Self
pub fn render_fn<F>(self, f: F) -> Self
Sets the render function for nodes.
§Arguments
f- A function that takes node data and state, returns a Line.
§Returns
Self for method chaining.
§Example
use ratatui::text::Line;
use ratatui_toolkit::tree_view::{TreeNode, TreeView};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeView::new(nodes)
.render_fn(|data, state| {
if state.is_selected {
Line::from(format!("> {}", data))
} else {
Line::from(*data)
}
});Source§impl<'a, T> TreeView<'a, T>
impl<'a, T> TreeView<'a, T>
Sourcepub fn visible_item_count(&self, state: &TreeViewState) -> usize
pub fn visible_item_count(&self, state: &TreeViewState) -> usize
Gets total visible item count.
§Arguments
state- The tree view state.
§Returns
The number of visible items in the tree.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeView, TreeViewState};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeView::new(nodes);
let state = TreeViewState::new();
assert_eq!(tree.visible_item_count(&state), 1);Trait Implementations§
Source§impl<'a, T> StatefulWidget for TreeView<'a, T>
impl<'a, T> StatefulWidget for TreeView<'a, T>
Auto Trait Implementations§
impl<'a, T> Freeze for TreeView<'a, T>
impl<'a, T> !RefUnwindSafe for TreeView<'a, T>
impl<'a, T> !Send for TreeView<'a, T>
impl<'a, T> !Sync for TreeView<'a, T>
impl<'a, T> Unpin for TreeView<'a, T>where
T: Unpin,
impl<'a, T> !UnwindSafe for TreeView<'a, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more