list_item.rs

 1use gpui::{Div, Render};
 2use story::Story;
 3
 4use crate::prelude::*;
 5use crate::{Icon, ListItem};
 6
 7pub struct ListItemStory;
 8
 9impl Render for ListItemStory {
10    type Element = Div;
11
12    fn render(&mut self, _cx: &mut ViewContext<Self>) -> Self::Element {
13        Story::container()
14            .child(Story::title_for::<ListItem>())
15            .child(Story::label("Default"))
16            .child(ListItem::new("hello_world").child("Hello, world!"))
17            .child(Story::label("With left icon"))
18            .child(
19                ListItem::new("with_left_icon")
20                    .child("Hello, world!")
21                    .left_icon(Icon::Bell),
22            )
23            .child(Story::label("With left avatar"))
24            .child(
25                ListItem::new("with_left_avatar")
26                    .child("Hello, world!")
27                    .left_avatar(SharedString::from(
28                        "https://avatars.githubusercontent.com/u/1714999?v=4",
29                    )),
30            )
31            .child(Story::label("With `on_click`"))
32            .child(
33                ListItem::new("with_on_click")
34                    .child("Click me")
35                    .on_click(|_event, _cx| {
36                        println!("Clicked!");
37                    }),
38            )
39            .child(Story::label("With `on_secondary_mouse_down`"))
40            .child(
41                ListItem::new("with_on_secondary_mouse_down")
42                    .child("Right click me")
43                    .on_secondary_mouse_down(|_event, _cx| {
44                        println!("Right mouse down!");
45                    }),
46            )
47    }
48}