tailwind_rs_core/utilities/flexbox/
order.rs

1//! Order utilities for tailwind-rs
2
3use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7/// Order values
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum Order {
10    /// Order 1
11    Order1,
12    /// Order 2
13    Order2,
14    /// Order 3
15    Order3,
16    /// Order 4
17    Order4,
18    /// Order 5
19    Order5,
20    /// Order 6
21    Order6,
22    /// Order 7
23    Order7,
24    /// Order 8
25    Order8,
26    /// Order 9
27    Order9,
28    /// Order 10
29    Order10,
30    /// Order 11
31    Order11,
32    /// Order 12
33    Order12,
34    /// Order first
35    OrderFirst,
36    /// Order last
37    OrderLast,
38    /// Order none
39    OrderNone,
40}
41
42impl fmt::Display for Order {
43    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
44        match self {
45            Order::Order1 => write!(f, "order-1"),
46            Order::Order2 => write!(f, "order-2"),
47            Order::Order3 => write!(f, "order-3"),
48            Order::Order4 => write!(f, "order-4"),
49            Order::Order5 => write!(f, "order-5"),
50            Order::Order6 => write!(f, "order-6"),
51            Order::Order7 => write!(f, "order-7"),
52            Order::Order8 => write!(f, "order-8"),
53            Order::Order9 => write!(f, "order-9"),
54            Order::Order10 => write!(f, "order-10"),
55            Order::Order11 => write!(f, "order-11"),
56            Order::Order12 => write!(f, "order-12"),
57            Order::OrderFirst => write!(f, "order-first"),
58            Order::OrderLast => write!(f, "order-last"),
59            Order::OrderNone => write!(f, "order-none"),
60        }
61    }
62}
63
64/// Trait for adding order utilities to a class builder
65pub trait OrderUtilities {
66    fn order(self, order: Order) -> Self;
67}
68
69impl OrderUtilities for ClassBuilder {
70    fn order(self, order: Order) -> Self {
71        self.class(order.to_string())
72    }
73}
74
75#[cfg(test)]
76mod tests {
77    use super::*;
78
79    #[test]
80    fn test_order_utilities() {
81        let classes = ClassBuilder::new().order(Order::Order1).build();
82
83        assert!(classes.to_css_classes().contains("order-1"));
84    }
85}