tailwind_rs_core/utilities/layout/
overscroll.rs

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