tailwind_rs_core/utilities/grid/
auto_flow.rs

1//! Grid auto flow utilities for tailwind-rs
2
3use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7/// Grid auto flow values
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum GridAutoFlow {
10    /// Row auto flow
11    Row,
12    /// Column auto flow
13    Column,
14    /// Dense row auto flow
15    Dense,
16    /// Dense column auto flow
17    DenseColumn,
18}
19
20impl fmt::Display for GridAutoFlow {
21    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22        match self {
23            GridAutoFlow::Row => write!(f, "grid-flow-row"),
24            GridAutoFlow::Column => write!(f, "grid-flow-col"),
25            GridAutoFlow::Dense => write!(f, "grid-flow-dense"),
26            GridAutoFlow::DenseColumn => write!(f, "grid-flow-col-dense"),
27        }
28    }
29}
30
31/// Trait for adding grid auto flow utilities to a class builder
32pub trait GridAutoFlowUtilities {
33    fn grid_auto_flow(self, flow: GridAutoFlow) -> Self;
34}
35
36impl GridAutoFlowUtilities for ClassBuilder {
37    fn grid_auto_flow(self, flow: GridAutoFlow) -> Self {
38        self.class(flow.to_string())
39    }
40}
41
42#[cfg(test)]
43mod tests {
44    use super::*;
45
46    #[test]
47    fn test_grid_auto_flow_display() {
48        assert_eq!(GridAutoFlow::Row.to_string(), "grid-flow-row");
49        assert_eq!(GridAutoFlow::Column.to_string(), "grid-flow-col");
50        assert_eq!(GridAutoFlow::Dense.to_string(), "grid-flow-dense");
51    }
52
53    #[test]
54    fn test_grid_auto_flow_utilities() {
55        let classes = ClassBuilder::new()
56            .grid_auto_flow(GridAutoFlow::Row)
57            .build();
58        
59        assert!(classes.to_css_classes().contains("grid-flow-row"));
60    }
61}