tailwind_rs_core/utilities/flexbox/
align_content.rs

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