tailwind_rs_core/utilities/grid/
row_span.rs1use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum GridRowSpan {
10 Span1,
12 Span2,
14 Span3,
16 Span4,
18 Span5,
20 Span6,
22 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
40pub 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}