tailwind_rs_core/utilities/flexbox/
flex_shrink.rs

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