tailwind_rs_core/utilities/grid/
column_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 GridColumnSpan {
10 Span1,
12 Span2,
14 Span3,
16 Span4,
18 Span5,
20 Span6,
22 Span7,
24 Span8,
26 Span9,
28 Span10,
30 Span11,
32 Span12,
34 SpanFull,
36}
37
38impl fmt::Display for GridColumnSpan {
39 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40 match self {
41 GridColumnSpan::Span1 => write!(f, "col-span-1"),
42 GridColumnSpan::Span2 => write!(f, "col-span-2"),
43 GridColumnSpan::Span3 => write!(f, "col-span-3"),
44 GridColumnSpan::Span4 => write!(f, "col-span-4"),
45 GridColumnSpan::Span5 => write!(f, "col-span-5"),
46 GridColumnSpan::Span6 => write!(f, "col-span-6"),
47 GridColumnSpan::Span7 => write!(f, "col-span-7"),
48 GridColumnSpan::Span8 => write!(f, "col-span-8"),
49 GridColumnSpan::Span9 => write!(f, "col-span-9"),
50 GridColumnSpan::Span10 => write!(f, "col-span-10"),
51 GridColumnSpan::Span11 => write!(f, "col-span-11"),
52 GridColumnSpan::Span12 => write!(f, "col-span-12"),
53 GridColumnSpan::SpanFull => write!(f, "col-span-full"),
54 }
55 }
56}
57
58pub trait GridColumnSpanUtilities {
60 fn grid_column_span(self, span: GridColumnSpan) -> Self;
61}
62
63impl GridColumnSpanUtilities for ClassBuilder {
64 fn grid_column_span(self, span: GridColumnSpan) -> Self {
65 self.class(span.to_string())
66 }
67}
68
69#[cfg(test)]
70mod tests {
71 use super::*;
72
73 #[test]
74 fn test_grid_column_span_display() {
75 assert_eq!(GridColumnSpan::Span1.to_string(), "col-span-1");
76 assert_eq!(GridColumnSpan::Span2.to_string(), "col-span-2");
77 assert_eq!(GridColumnSpan::SpanFull.to_string(), "col-span-full");
78 }
79
80 #[test]
81 fn test_grid_column_span_utilities() {
82 let classes = ClassBuilder::new()
83 .grid_column_span(GridColumnSpan::Span3)
84 .build();
85
86 assert!(classes.to_css_classes().contains("col-span-3"));
87 }
88}