use crate::classes::ClassBuilder;
use serde::{Deserialize, Serialize};
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Display {
Block,
InlineBlock,
Inline,
Flex,
InlineFlex,
Grid,
InlineGrid,
Table,
InlineTable,
TableCell,
TableRow,
TableColumn,
TableColumnGroup,
TableFooterGroup,
TableHeaderGroup,
TableRowGroup,
FlowRoot,
Contents,
ListItem,
Hidden,
}
impl fmt::Display for Display {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Display::Block => write!(f, "block"),
Display::InlineBlock => write!(f, "inline-block"),
Display::Inline => write!(f, "inline"),
Display::Flex => write!(f, "flex"),
Display::InlineFlex => write!(f, "inline-flex"),
Display::Grid => write!(f, "grid"),
Display::InlineGrid => write!(f, "inline-grid"),
Display::Table => write!(f, "table"),
Display::InlineTable => write!(f, "inline-table"),
Display::TableCell => write!(f, "table-cell"),
Display::TableRow => write!(f, "table-row"),
Display::TableColumn => write!(f, "table-column"),
Display::TableColumnGroup => write!(f, "table-column-group"),
Display::TableFooterGroup => write!(f, "table-footer-group"),
Display::TableHeaderGroup => write!(f, "table-header-group"),
Display::TableRowGroup => write!(f, "table-row-group"),
Display::FlowRoot => write!(f, "flow-root"),
Display::Contents => write!(f, "contents"),
Display::ListItem => write!(f, "list-item"),
Display::Hidden => write!(f, "hidden"),
}
}
}
pub trait DisplayUtilities {
fn display(self, display: Display) -> Self;
}
impl DisplayUtilities for ClassBuilder {
fn display(self, display: Display) -> Self {
self.class(display.to_string())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_display_utilities() {
let classes = ClassBuilder::new().display(Display::Flex).build();
assert!(classes.to_css_classes().contains("flex"));
}
}