tailwind_rs_core/utilities/layout/
object_fit.rs

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