use crate::classes::ClassBuilder;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ObjectFit {
Contain,
Cover,
Fill,
None,
ScaleDown,
}
impl fmt::Display for ObjectFit {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ObjectFit::Contain => write!(f, "object-contain"),
ObjectFit::Cover => write!(f, "object-cover"),
ObjectFit::Fill => write!(f, "object-fill"),
ObjectFit::None => write!(f, "object-none"),
ObjectFit::ScaleDown => write!(f, "object-scale-down"),
}
}
}
pub trait ObjectFitUtilities {
fn object_fit(self, object_fit: ObjectFit) -> Self;
}
impl ObjectFitUtilities for ClassBuilder {
fn object_fit(self, object_fit: ObjectFit) -> Self {
self.class(object_fit.to_string())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_object_fit_utilities() {
let classes = ClassBuilder::new().object_fit(ObjectFit::Cover).build();
assert!(classes.to_css_classes().contains("object-cover"));
}
}