tailwind_rs_core/utilities/grid/
row_span.rs

1//! Grid row span utilities for tailwind-rs
2
3use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7/// Grid row span values
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum GridRowSpan {
10    /// Span 1 row
11    Span1,
12    /// Span 2 rows
13    Span2,
14    /// Span 3 rows
15    Span3,
16    /// Span 4 rows
17    Span4,
18    /// Span 5 rows
19    Span5,
20    /// Span 6 rows
21    Span6,
22    /// Span all rows
23    SpanFull,
24}
25
26impl fmt::Display for GridRowSpan {
27    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
28        match self {
29            GridRowSpan::Span1 => write!(f, "row-span-1"),
30            GridRowSpan::Span2 => write!(f, "row-span-2"),
31            GridRowSpan::Span3 => write!(f, "row-span-3"),
32            GridRowSpan::Span4 => write!(f, "row-span-4"),
33            GridRowSpan::Span5 => write!(f, "row-span-5"),
34            GridRowSpan::Span6 => write!(f, "row-span-6"),
35            GridRowSpan::SpanFull => write!(f, "row-span-full"),
36        }
37    }
38}
39
40/// Trait for adding grid row span utilities to a class builder
41pub trait GridRowSpanUtilities {
42    fn grid_row_span(self, span: GridRowSpan) -> Self;
43}
44
45impl GridRowSpanUtilities for ClassBuilder {
46    fn grid_row_span(self, span: GridRowSpan) -> Self {
47        self.class(span.to_string())
48    }
49}
50
51#[cfg(test)]
52mod tests {
53    use super::*;
54
55    #[test]
56    fn test_grid_row_span_display() {
57        assert_eq!(GridRowSpan::Span1.to_string(), "row-span-1");
58        assert_eq!(GridRowSpan::Span2.to_string(), "row-span-2");
59        assert_eq!(GridRowSpan::SpanFull.to_string(), "row-span-full");
60    }
61
62    #[test]
63    fn test_grid_row_span_utilities() {
64        let classes = ClassBuilder::new()
65            .grid_row_span(GridRowSpan::Span3)
66            .build();
67        
68        assert!(classes.to_css_classes().contains("row-span-3"));
69    }
70}