ratatui_toolkit/primitives/tree_view/tree_view/methods/render_fn.rs
1//! TreeView::render_fn method.
2
3use ratatui::text::Line;
4
5use crate::primitives::tree_view::node_state::NodeState;
6use crate::primitives::tree_view::tree_view::TreeView;
7
8impl<'a, T> TreeView<'a, T> {
9 /// Sets the render function for nodes.
10 ///
11 /// # Arguments
12 ///
13 /// * `f` - A function that takes node data and state, returns a Line.
14 ///
15 /// # Returns
16 ///
17 /// Self for method chaining.
18 ///
19 /// # Example
20 ///
21 /// ```rust
22 /// use ratatui::text::Line;
23 /// use ratatui_toolkit::tree_view::{TreeNode, TreeView};
24 ///
25 /// let nodes = vec![TreeNode::new("Item")];
26 /// let tree = TreeView::new(nodes)
27 /// .render_fn(|data, state| {
28 /// if state.is_selected {
29 /// Line::from(format!("> {}", data))
30 /// } else {
31 /// Line::from(*data)
32 /// }
33 /// });
34 /// ```
35 pub fn render_fn<F>(mut self, f: F) -> Self
36 where
37 F: Fn(&T, &NodeState) -> Line<'a> + 'a,
38 {
39 self.render_fn = Box::new(f);
40 self
41 }
42}