Skip to main content

dioxus_tw_components/components/
table.rs

1use dioxus::prelude::*;
2
3#[derive(Clone, PartialEq, Props)]
4pub struct TableProps {
5    #[props(extends = table, extends = GlobalAttributes)]
6    attributes: Vec<Attribute>,
7
8    children: Element,
9}
10
11#[component]
12pub fn Table(mut props: TableProps) -> Element {
13    let default_classes = "table";
14    crate::setup_class_attribute(&mut props.attributes, default_classes);
15
16    rsx! {
17        table { ..props.attributes, {props.children} }
18    }
19}
20
21#[derive(Clone, PartialEq, Props)]
22pub struct TableHeaderProps {
23    #[props(extends = thead, extends = GlobalAttributes)]
24    attributes: Vec<Attribute>,
25
26    children: Element,
27}
28
29#[component]
30pub fn TableHeader(mut props: TableHeaderProps) -> Element {
31    let default_classes = "table-header";
32    crate::setup_class_attribute(&mut props.attributes, default_classes);
33
34    rsx! {
35        thead { ..props.attributes, {props.children} }
36    }
37}
38
39#[derive(Clone, PartialEq, Props)]
40pub struct TableBodyProps {
41    #[props(extends = tbody, extends = GlobalAttributes)]
42    attributes: Vec<Attribute>,
43
44    children: Element,
45}
46
47#[component]
48pub fn TableBody(mut props: TableBodyProps) -> Element {
49    let default_classes = "table-body";
50    crate::setup_class_attribute(&mut props.attributes, default_classes);
51
52    rsx! {
53        tbody { ..props.attributes, {props.children} }
54    }
55}
56
57#[derive(Clone, PartialEq, Props)]
58pub struct TableFooterProps {
59    #[props(extends = tfoot, extends = GlobalAttributes)]
60    attributes: Vec<Attribute>,
61
62    children: Element,
63}
64
65#[component]
66pub fn TableFooter(mut props: TableFooterProps) -> Element {
67    let default_classes = "table-footer";
68    crate::setup_class_attribute(&mut props.attributes, default_classes);
69
70    rsx! {
71        tfoot { ..props.attributes,{props.children} }
72    }
73}
74
75#[derive(Clone, PartialEq, Props)]
76pub struct TableRowProps {
77    #[props(extends = tr, extends = GlobalAttributes)]
78    attributes: Vec<Attribute>,
79
80    children: Element,
81}
82
83#[component]
84pub fn TableRow(mut props: TableRowProps) -> Element {
85    let default_classes = "table-row";
86    crate::setup_class_attribute(&mut props.attributes, default_classes);
87
88    rsx! {
89        tr { ..props.attributes, {props.children} }
90    }
91}
92
93#[derive(Clone, PartialEq, Props)]
94pub struct TableHeadProps {
95    #[props(extends = th, extends = GlobalAttributes)]
96    attributes: Vec<Attribute>,
97
98    children: Element,
99}
100
101#[component]
102pub fn TableHead(mut props: TableHeadProps) -> Element {
103    let default_classes = "table-head";
104    crate::setup_class_attribute(&mut props.attributes, default_classes);
105
106    rsx! {
107        th { ..props.attributes, {props.children} }
108    }
109}
110
111#[derive(Clone, PartialEq, Props)]
112pub struct TableCellProps {
113    #[props(extends = td, extends = GlobalAttributes)]
114    attributes: Vec<Attribute>,
115
116    children: Element,
117}
118
119#[component]
120pub fn TableCell(mut props: TableCellProps) -> Element {
121    let default_classes = "table-cell";
122    crate::setup_class_attribute(&mut props.attributes, default_classes);
123
124    rsx! {
125        td { ..props.attributes, {props.children} }
126    }
127}
128
129#[derive(Clone, PartialEq, Props)]
130pub struct TableCaptionProps {
131    #[props(extends = caption, extends = GlobalAttributes)]
132    attributes: Vec<Attribute>,
133
134    children: Element,
135}
136
137#[component]
138pub fn TableCaption(mut props: TableCaptionProps) -> Element {
139    let default_classes = "table-caption";
140    crate::setup_class_attribute(&mut props.attributes, default_classes);
141
142    rsx! {
143        caption { ..props.attributes, {props.children} }
144    }
145}