tailwind_rs_core/utilities/flexbox/
align_items.rs

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