use crate::classes::ClassBuilder;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum GridRowSpan {
Span1,
Span2,
Span3,
Span4,
Span5,
Span6,
SpanFull,
}
impl fmt::Display for GridRowSpan {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
GridRowSpan::Span1 => write!(f, "row-span-1"),
GridRowSpan::Span2 => write!(f, "row-span-2"),
GridRowSpan::Span3 => write!(f, "row-span-3"),
GridRowSpan::Span4 => write!(f, "row-span-4"),
GridRowSpan::Span5 => write!(f, "row-span-5"),
GridRowSpan::Span6 => write!(f, "row-span-6"),
GridRowSpan::SpanFull => write!(f, "row-span-full"),
}
}
}
pub trait GridRowSpanUtilities {
fn grid_row_span(self, span: GridRowSpan) -> Self;
}
impl GridRowSpanUtilities for ClassBuilder {
fn grid_row_span(self, span: GridRowSpan) -> Self {
self.class(span.to_string())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_grid_row_span_display() {
assert_eq!(GridRowSpan::Span1.to_string(), "row-span-1");
assert_eq!(GridRowSpan::Span2.to_string(), "row-span-2");
assert_eq!(GridRowSpan::SpanFull.to_string(), "row-span-full");
}
#[test]
fn test_grid_row_span_utilities() {
let classes = ClassBuilder::new()
.grid_row_span(GridRowSpan::Span3)
.build();
assert!(classes.to_css_classes().contains("row-span-3"));
}
}