use crate::classes::ClassBuilder;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum GridColumnSpan {
Span1,
Span2,
Span3,
Span4,
Span5,
Span6,
Span7,
Span8,
Span9,
Span10,
Span11,
Span12,
SpanFull,
}
impl fmt::Display for GridColumnSpan {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
GridColumnSpan::Span1 => write!(f, "col-span-1"),
GridColumnSpan::Span2 => write!(f, "col-span-2"),
GridColumnSpan::Span3 => write!(f, "col-span-3"),
GridColumnSpan::Span4 => write!(f, "col-span-4"),
GridColumnSpan::Span5 => write!(f, "col-span-5"),
GridColumnSpan::Span6 => write!(f, "col-span-6"),
GridColumnSpan::Span7 => write!(f, "col-span-7"),
GridColumnSpan::Span8 => write!(f, "col-span-8"),
GridColumnSpan::Span9 => write!(f, "col-span-9"),
GridColumnSpan::Span10 => write!(f, "col-span-10"),
GridColumnSpan::Span11 => write!(f, "col-span-11"),
GridColumnSpan::Span12 => write!(f, "col-span-12"),
GridColumnSpan::SpanFull => write!(f, "col-span-full"),
}
}
}
pub trait GridColumnSpanUtilities {
fn grid_column_span(self, span: GridColumnSpan) -> Self;
}
impl GridColumnSpanUtilities for ClassBuilder {
fn grid_column_span(self, span: GridColumnSpan) -> Self {
self.class(span.to_string())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_grid_column_span_display() {
assert_eq!(GridColumnSpan::Span1.to_string(), "col-span-1");
assert_eq!(GridColumnSpan::Span2.to_string(), "col-span-2");
assert_eq!(GridColumnSpan::SpanFull.to_string(), "col-span-full");
}
#[test]
fn test_grid_column_span_utilities() {
let classes = ClassBuilder::new()
.grid_column_span(GridColumnSpan::Span3)
.build();
assert!(classes.to_css_classes().contains("col-span-3"));
}
}