tailwind_rs_core/utilities/flexbox/
wrap.rs

1//! Flex wrap utilities for tailwind-rs
2
3use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7/// Flex wrap values
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum FlexWrap {
10    /// Wrap flex
11    Wrap,
12    /// Wrap reverse flex
13    WrapReverse,
14    /// No wrap flex
15    Nowrap,
16}
17
18impl fmt::Display for FlexWrap {
19    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
20        match self {
21            FlexWrap::Wrap => write!(f, "flex-wrap"),
22            FlexWrap::WrapReverse => write!(f, "flex-wrap-reverse"),
23            FlexWrap::Nowrap => write!(f, "flex-nowrap"),
24        }
25    }
26}
27
28/// Trait for adding flex wrap utilities to a class builder
29pub trait FlexWrapUtilities {
30    fn flex_wrap(self, wrap: FlexWrap) -> Self;
31}
32
33impl FlexWrapUtilities for ClassBuilder {
34    fn flex_wrap(self, wrap: FlexWrap) -> Self {
35        self.class(wrap.to_string())
36    }
37}
38
39#[cfg(test)]
40mod tests {
41    use super::*;
42
43    #[test]
44    fn test_flex_wrap_utilities() {
45        let classes = ClassBuilder::new()
46            .flex_wrap(FlexWrap::Wrap)
47            .build();
48        
49        assert!(classes.to_css_classes().contains("flex-wrap"));
50    }
51}