tailwind_rs_core/utilities/layout/
overflow.rs

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