tailwind_rs_core/utilities/layout/
display.rs

1//! Display utilities for tailwind-rs
2
3use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7/// Display values
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum Display {
10    /// Block display
11    Block,
12    /// Inline block display
13    InlineBlock,
14    /// Inline display
15    Inline,
16    /// Flex display
17    Flex,
18    /// Inline flex display
19    InlineFlex,
20    /// Grid display
21    Grid,
22    /// Inline grid display
23    InlineGrid,
24    /// Table display
25    Table,
26    /// Inline table display
27    InlineTable,
28    /// Table cell display
29    TableCell,
30    /// Table row display
31    TableRow,
32    /// Table column display
33    TableColumn,
34    /// Table column group display
35    TableColumnGroup,
36    /// Table footer group display
37    TableFooterGroup,
38    /// Table header group display
39    TableHeaderGroup,
40    /// Table row group display
41    TableRowGroup,
42    /// Flow root display
43    FlowRoot,
44    /// Contents display
45    Contents,
46    /// List item display
47    ListItem,
48    /// Hidden display
49    Hidden,
50}
51
52impl fmt::Display for Display {
53    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
54        match self {
55            Display::Block => write!(f, "block"),
56            Display::InlineBlock => write!(f, "inline-block"),
57            Display::Inline => write!(f, "inline"),
58            Display::Flex => write!(f, "flex"),
59            Display::InlineFlex => write!(f, "inline-flex"),
60            Display::Grid => write!(f, "grid"),
61            Display::InlineGrid => write!(f, "inline-grid"),
62            Display::Table => write!(f, "table"),
63            Display::InlineTable => write!(f, "inline-table"),
64            Display::TableCell => write!(f, "table-cell"),
65            Display::TableRow => write!(f, "table-row"),
66            Display::TableColumn => write!(f, "table-column"),
67            Display::TableColumnGroup => write!(f, "table-column-group"),
68            Display::TableFooterGroup => write!(f, "table-footer-group"),
69            Display::TableHeaderGroup => write!(f, "table-header-group"),
70            Display::TableRowGroup => write!(f, "table-row-group"),
71            Display::FlowRoot => write!(f, "flow-root"),
72            Display::Contents => write!(f, "contents"),
73            Display::ListItem => write!(f, "list-item"),
74            Display::Hidden => write!(f, "hidden"),
75        }
76    }
77}
78
79/// Trait for adding display utilities to a class builder
80pub trait DisplayUtilities {
81    fn display(self, display: Display) -> Self;
82}
83
84impl DisplayUtilities for ClassBuilder {
85    fn display(self, display: Display) -> Self {
86        self.class(display.to_string())
87    }
88}
89
90#[cfg(test)]
91mod tests {
92    use super::*;
93
94    #[test]
95    fn test_display_utilities() {
96        let classes = ClassBuilder::new()
97            .display(Display::Flex)
98            .build();
99        
100        assert!(classes.to_css_classes().contains("flex"));
101    }
102}