patternfly_yew/components/
input_group.rs1use crate::prelude::ChildrenProperties;
4use yew::prelude::*;
5
6#[derive(Clone, PartialEq, Properties)]
8pub struct InputGroupProperties {
9 #[prop_or_default]
10 pub class: Classes,
11
12 #[prop_or_default]
13 pub id: Option<AttrValue>,
14
15 #[prop_or_default]
16 pub style: Option<AttrValue>,
17
18 #[prop_or_default]
19 pub children: Html,
20
21 #[prop_or_default]
22 pub plain: bool,
23
24 #[prop_or_default]
25 pub aria_label: AttrValue,
26}
27
28#[function_component(InputGroup)]
43pub fn input_group(props: &InputGroupProperties) -> Html {
44 let mut class = classes!("pf-v5-c-input-group");
45
46 class.extend(props.class.clone());
47
48 if props.plain {
49 class.push(classes!("pf-m-plain"));
50 }
51
52 html! (
53 <div
54 {class}
55 aria-label={&props.aria_label}
56 style={&props.style}
57 id={&props.id}
58 >
59 { props.children.clone() }
60 </div>
61 )
62}
63
64#[function_component(InputGroupText)]
66pub fn input_group_text(props: &ChildrenProperties) -> Html {
67 html!(
68 <span class={"pf-v5-c-input-group__text"}>
69 { props.children.clone() }
70 </span>
71 )
72}
73
74#[derive(Clone, Debug, PartialEq, Properties)]
75pub struct InputGroupItemProperties {
76 #[prop_or_default]
78 pub id: Option<AttrValue>,
79
80 #[prop_or_default]
81 pub class: Classes,
82
83 #[prop_or_default]
84 pub style: Option<AttrValue>,
85
86 #[prop_or_default]
87 pub plain: bool,
88
89 #[prop_or_default]
90 pub fill: bool,
91
92 #[prop_or_default]
93 pub r#box: bool,
94
95 #[prop_or_default]
96 pub disabled: bool,
97
98 #[prop_or_default]
99 pub children: Html,
100}
101
102#[function_component(InputGroupItem)]
104pub fn input_group_item(props: &InputGroupItemProperties) -> Html {
105 let mut class = classes!("pf-v5-c-input-group__item");
106
107 if props.plain {
108 class.push(classes!("pf-m-plain"));
109 }
110
111 if props.fill {
112 class.push(classes!("pf-m-fill"));
113 }
114
115 if props.r#box {
116 class.push(classes!("pf-m-box"));
117 }
118
119 if props.disabled {
120 class.push(classes!("pf-m-disabled"));
121 }
122
123 class.extend(props.class.clone());
124
125 html!(
126 <div {class} id={&props.id} style={&props.style}>
127 { props.children.clone() }
128 </div>
129 )
130}