Add text align property for Label (#19)
This commit is contained in:
parent
310e5e3cde
commit
75e4451764
1 changed files with 26 additions and 3 deletions
|
|
@ -1,12 +1,24 @@
|
|||
use gpui::{div, Div, IntoElement, ParentElement, RenderOnce, SharedString, Styled, WindowContext};
|
||||
use gpui::{
|
||||
div, prelude::FluentBuilder, Div, IntoElement, ParentElement, RenderOnce, SharedString, Styled,
|
||||
WindowContext,
|
||||
};
|
||||
|
||||
use crate::theme::ActiveTheme;
|
||||
use crate::{h_flex, theme::ActiveTheme};
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum TextAlign {
|
||||
#[default]
|
||||
Left,
|
||||
Center,
|
||||
Right,
|
||||
}
|
||||
|
||||
#[derive(IntoElement)]
|
||||
pub struct Label {
|
||||
base: Div,
|
||||
label: SharedString,
|
||||
multiple_lines: bool,
|
||||
align: TextAlign,
|
||||
}
|
||||
|
||||
impl Label {
|
||||
|
|
@ -15,6 +27,7 @@ impl Label {
|
|||
base: div(),
|
||||
label: label.into(),
|
||||
multiple_lines: true,
|
||||
align: TextAlign::default(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -22,6 +35,11 @@ impl Label {
|
|||
self.multiple_lines = true;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn text_align(mut self, align: TextAlign) -> Self {
|
||||
self.align = align;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
impl Styled for Label {
|
||||
|
|
@ -38,7 +56,12 @@ impl RenderOnce for Label {
|
|||
self.label
|
||||
};
|
||||
|
||||
div()
|
||||
h_flex()
|
||||
.map(|this| match self.align {
|
||||
TextAlign::Left => this.justify_start(),
|
||||
TextAlign::Center => this.justify_center(),
|
||||
TextAlign::Right => this.justify_end(),
|
||||
})
|
||||
.text_color(cx.theme().foreground)
|
||||
.child(self.base.child(text))
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue