1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
use crate::prelude::AsClasses;
use yew::prelude::*;

#[derive(Debug, Clone, Copy, Default, Eq, PartialEq)]
pub enum TableMode {
    #[default]
    Default,
    Compact,
    CompactNoBorders,
    CompactExpandable,
    Expandable,
}

impl TableMode {
    pub fn is_expandable(&self) -> bool {
        matches!(self, Self::CompactExpandable | Self::Expandable)
    }
}

#[derive(Copy, Clone, Debug, PartialEq)]
pub enum TableGridMode {
    Medium,
    Large,
    XLarge,
    XXLarge,
}

impl AsClasses for TableGridMode {
    fn extend_classes(&self, classes: &mut Classes) {
        match self {
            Self::Medium => classes.push(classes!("pf-m-grid-md")),
            Self::Large => classes.push(classes!("pf-m-grid-lg")),
            Self::XLarge => classes.push(classes!("pf-m-grid-xl")),
            Self::XXLarge => classes.push(classes!("pf-m-grid-2xl")),
        }
    }
}

#[derive(Clone, Debug, PartialEq, Eq)]
pub enum TextModifier {
    Wrap,
    NoWrap,
    Truncate,
    BreakWord,
}

impl AsClasses for TextModifier {
    fn extend_classes(&self, classes: &mut Classes) {
        match self {
            Self::Wrap => classes.extend(classes!("pf-m-wrap")),
            Self::NoWrap => classes.extend(classes!("pf-m-nowrap")),
            Self::Truncate => classes.extend(classes!("pf-m-truncate")),
            Self::BreakWord => classes.extend(classes!("pf-m-break-word")),
        }
    }
}

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum SpanModifiers {
    Truncate,
}

impl AsClasses for SpanModifiers {
    fn extend_classes(&self, classes: &mut Classes) {
        match self {
            Self::Truncate => classes.push("pf-m-truncate"),
        }
    }
}