patternfly_yew/components/toolbar/
group.rs1use crate::prelude::{AsClasses, ExtendClasses, ToolbarElementModifier, WithBreakpoints};
2use yew::prelude::*;
3
4#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
5pub enum GroupVariant {
6 #[default]
7 None,
8 Button,
9 Filter,
10 IconButton,
11}
12
13impl AsClasses for GroupVariant {
14 fn extend_classes(&self, classes: &mut Classes) {
15 classes.push(match self {
16 Self::None => "",
17 Self::Button => "pf-m-button-group",
18 Self::Filter => "pf-m-filter-group",
19 Self::IconButton => "pf-m-icon-button-group",
20 });
21 }
22}
23
24#[derive(Clone, PartialEq, Properties)]
26pub struct ToolbarGroupProperties {
27 #[prop_or_default]
28 pub id: Option<AttrValue>,
29
30 #[prop_or_default]
31 pub children: Html,
32 #[prop_or_default]
33 pub modifiers: WithBreakpoints<ToolbarElementModifier>,
34 #[prop_or_default]
35 pub variant: GroupVariant,
36
37 #[prop_or_default]
39 pub class: Classes,
40}
41
42#[function_component(ToolbarGroup)]
44pub fn toolbar_group(props: &ToolbarGroupProperties) -> Html {
45 let mut class = Classes::from("pf-v5-c-toolbar__group");
46
47 class.extend_from(&props.modifiers);
48 class.extend_from(&props.variant);
49 class.extend(props.class.clone());
50
51 html! {
52 <div
53 id={&props.id}
54 {class}
55 >
56 { props.children.clone() }
57 </div>
58 }
59}