tailwind_rs_core/utilities/layout/
object_position.rs

1//! Object position utilities for tailwind-rs
2
3use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7/// Object position values
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum ObjectPosition {
10    /// Bottom object position
11    Bottom,
12    /// Center object position
13    Center,
14    /// Left object position
15    Left,
16    /// Left bottom object position
17    LeftBottom,
18    /// Left top object position
19    LeftTop,
20    /// Right object position
21    Right,
22    /// Right bottom object position
23    RightBottom,
24    /// Right top object position
25    RightTop,
26    /// Top object position
27    Top,
28}
29
30impl fmt::Display for ObjectPosition {
31    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
32        match self {
33            ObjectPosition::Bottom => write!(f, "object-bottom"),
34            ObjectPosition::Center => write!(f, "object-center"),
35            ObjectPosition::Left => write!(f, "object-left"),
36            ObjectPosition::LeftBottom => write!(f, "object-left-bottom"),
37            ObjectPosition::LeftTop => write!(f, "object-left-top"),
38            ObjectPosition::Right => write!(f, "object-right"),
39            ObjectPosition::RightBottom => write!(f, "object-right-bottom"),
40            ObjectPosition::RightTop => write!(f, "object-right-top"),
41            ObjectPosition::Top => write!(f, "object-top"),
42        }
43    }
44}
45
46/// Trait for adding object position utilities to a class builder
47pub trait ObjectPositionUtilities {
48    fn object_position(self, object_position: ObjectPosition) -> Self;
49}
50
51impl ObjectPositionUtilities for ClassBuilder {
52    fn object_position(self, object_position: ObjectPosition) -> Self {
53        self.class(object_position.to_string())
54    }
55}
56
57#[cfg(test)]
58mod tests {
59    use super::*;
60
61    #[test]
62    fn test_object_position_utilities() {
63        let classes = ClassBuilder::new()
64            .object_position(ObjectPosition::Center)
65            .build();
66        
67        assert!(classes.to_css_classes().contains("object-center"));
68    }
69}