tailwind_rs_core/utilities/grid/
template_columns.rs1use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum GridTemplateColumns {
10 Cols1,
12 Cols2,
14 Cols3,
16 Cols4,
18 Cols5,
20 Cols6,
22 Cols7,
24 Cols8,
26 Cols9,
28 Cols10,
30 Cols11,
32 Cols12,
34 None,
36 Subgrid,
38}
39
40impl fmt::Display for GridTemplateColumns {
41 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
42 match self {
43 GridTemplateColumns::Cols1 => write!(f, "grid-cols-1"),
44 GridTemplateColumns::Cols2 => write!(f, "grid-cols-2"),
45 GridTemplateColumns::Cols3 => write!(f, "grid-cols-3"),
46 GridTemplateColumns::Cols4 => write!(f, "grid-cols-4"),
47 GridTemplateColumns::Cols5 => write!(f, "grid-cols-5"),
48 GridTemplateColumns::Cols6 => write!(f, "grid-cols-6"),
49 GridTemplateColumns::Cols7 => write!(f, "grid-cols-7"),
50 GridTemplateColumns::Cols8 => write!(f, "grid-cols-8"),
51 GridTemplateColumns::Cols9 => write!(f, "grid-cols-9"),
52 GridTemplateColumns::Cols10 => write!(f, "grid-cols-10"),
53 GridTemplateColumns::Cols11 => write!(f, "grid-cols-11"),
54 GridTemplateColumns::Cols12 => write!(f, "grid-cols-12"),
55 GridTemplateColumns::None => write!(f, "grid-cols-none"),
56 GridTemplateColumns::Subgrid => write!(f, "grid-cols-subgrid"),
57 }
58 }
59}
60
61pub trait GridTemplateColumnsUtilities {
63 fn grid_template_columns(self, columns: GridTemplateColumns) -> Self;
64}
65
66impl GridTemplateColumnsUtilities for ClassBuilder {
67 fn grid_template_columns(self, columns: GridTemplateColumns) -> Self {
68 self.class(columns.to_string())
69 }
70}
71
72#[cfg(test)]
73mod tests {
74 use super::*;
75
76 #[test]
77 fn test_grid_template_columns_display() {
78 assert_eq!(GridTemplateColumns::Cols1.to_string(), "grid-cols-1");
79 assert_eq!(GridTemplateColumns::Cols2.to_string(), "grid-cols-2");
80 assert_eq!(GridTemplateColumns::Cols3.to_string(), "grid-cols-3");
81 assert_eq!(GridTemplateColumns::Cols4.to_string(), "grid-cols-4");
82 assert_eq!(GridTemplateColumns::Cols5.to_string(), "grid-cols-5");
83 assert_eq!(GridTemplateColumns::Cols6.to_string(), "grid-cols-6");
84 assert_eq!(GridTemplateColumns::Cols7.to_string(), "grid-cols-7");
85 assert_eq!(GridTemplateColumns::Cols8.to_string(), "grid-cols-8");
86 assert_eq!(GridTemplateColumns::Cols9.to_string(), "grid-cols-9");
87 assert_eq!(GridTemplateColumns::Cols10.to_string(), "grid-cols-10");
88 assert_eq!(GridTemplateColumns::Cols11.to_string(), "grid-cols-11");
89 assert_eq!(GridTemplateColumns::Cols12.to_string(), "grid-cols-12");
90 assert_eq!(GridTemplateColumns::None.to_string(), "grid-cols-none");
91 assert_eq!(GridTemplateColumns::Subgrid.to_string(), "grid-cols-subgrid");
92 }
93
94 #[test]
95 fn test_grid_template_columns_utilities() {
96 let classes = ClassBuilder::new()
97 .grid_template_columns(GridTemplateColumns::Cols3)
98 .build();
99
100 assert!(classes.to_css_classes().contains("grid-cols-3"));
101 }
102
103 #[test]
104 fn test_grid_template_columns_serialization() {
105 let columns = GridTemplateColumns::Cols4;
106 let serialized = serde_json::to_string(&columns).unwrap();
107 let deserialized: GridTemplateColumns = serde_json::from_str(&serialized).unwrap();
108 assert_eq!(columns, deserialized);
109 }
110}