tailwind_rs_core/utilities/flexbox/
align_self.rs

1//! Align self utilities for tailwind-rs
2
3use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7/// Align self values
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum AlignSelf {
10    /// Auto align self
11    Auto,
12    /// Start align self
13    Start,
14    /// End align self
15    End,
16    /// Center align self
17    Center,
18    /// Stretch align self
19    Stretch,
20    /// Baseline align self
21    Baseline,
22}
23
24impl fmt::Display for AlignSelf {
25    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26        match self {
27            AlignSelf::Auto => write!(f, "self-auto"),
28            AlignSelf::Start => write!(f, "self-start"),
29            AlignSelf::End => write!(f, "self-end"),
30            AlignSelf::Center => write!(f, "self-center"),
31            AlignSelf::Stretch => write!(f, "self-stretch"),
32            AlignSelf::Baseline => write!(f, "self-baseline"),
33        }
34    }
35}
36
37/// Trait for adding align self utilities to a class builder
38pub trait AlignSelfUtilities {
39    fn align_self(self, align: AlignSelf) -> Self;
40}
41
42impl AlignSelfUtilities for ClassBuilder {
43    fn align_self(self, align: AlignSelf) -> Self {
44        self.class(align.to_string())
45    }
46}
47
48#[cfg(test)]
49mod tests {
50    use super::*;
51
52    #[test]
53    fn test_align_self_utilities() {
54        let classes = ClassBuilder::new().align_self(AlignSelf::Center).build();
55
56        assert!(classes.to_css_classes().contains("self-center"));
57    }
58}