diff --git a/crates/ui2/src/components/list.rs b/crates/ui2/src/components/list.rs
index aa61c8333e..f6aa0e08b7 100644
--- a/crates/ui2/src/components/list.rs
+++ b/crates/ui2/src/components/list.rs
@@ -265,19 +265,6 @@ impl RenderOnce for ListItem {
type Rendered = Stateful
;
fn render(self, cx: &mut WindowContext) -> Self::Rendered {
- let left_content = match self.left_slot.clone() {
- Some(GraphicSlot::Icon(i)) => Some(
- h_stack().child(
- IconElement::new(i)
- .size(IconSize::Small)
- .color(Color::Muted),
- ),
- ),
- Some(GraphicSlot::Avatar(src)) => Some(h_stack().child(Avatar::source(src))),
- Some(GraphicSlot::PublicActor(src)) => Some(h_stack().child(Avatar::uri(src))),
- None => None,
- };
-
div()
.id(self.id)
.relative()
@@ -315,7 +302,16 @@ impl RenderOnce for ListItem {
.items_center()
.relative()
.child(disclosure_control(self.toggle, self.on_toggle))
- .children(left_content)
+ .map(|this| match self.left_slot.clone() {
+ Some(GraphicSlot::Icon(i)) => this.child(
+ IconElement::new(i)
+ .size(IconSize::Small)
+ .color(Color::Muted),
+ ),
+ Some(GraphicSlot::Avatar(src)) => this.child(Avatar::source(src)),
+ Some(GraphicSlot::PublicActor(src)) => this.child(Avatar::uri(src)),
+ None => this,
+ })
.children(self.children),
)
}
diff --git a/crates/ui2/src/components/stories/list_item.rs b/crates/ui2/src/components/stories/list_item.rs
index f6f00007f1..91e95348fd 100644
--- a/crates/ui2/src/components/stories/list_item.rs
+++ b/crates/ui2/src/components/stories/list_item.rs
@@ -2,7 +2,7 @@ use gpui::{Div, Render};
use story::Story;
use crate::prelude::*;
-use crate::ListItem;
+use crate::{Icon, ListItem};
pub struct ListItemStory;
@@ -14,6 +14,20 @@ impl Render for ListItemStory {
.child(Story::title_for::())
.child(Story::label("Default"))
.child(ListItem::new("hello_world").child("Hello, world!"))
+ .child(Story::label("With left icon"))
+ .child(
+ ListItem::new("with_left_icon")
+ .child("Hello, world!")
+ .left_icon(Icon::Bell),
+ )
+ .child(Story::label("With left avatar"))
+ .child(
+ ListItem::new("with_left_avatar")
+ .child("Hello, world!")
+ .left_avatar(SharedString::from(
+ "https://avatars.githubusercontent.com/u/1714999?v=4",
+ )),
+ )
.child(Story::label("With `on_click`"))
.child(
ListItem::new("with_on_click")