dioxus_bootstrap_css/
input_group.rs1use dioxus::prelude::*;
2
3use crate::types::Size;
4
5#[derive(Clone, PartialEq, Props)]
30pub struct InputGroupProps {
31 #[props(default)]
33 pub size: Size,
34 #[props(default)]
36 pub class: String,
37 pub children: Element,
39}
40
41#[component]
42pub fn InputGroup(props: InputGroupProps) -> Element {
43 let size_class = match props.size {
44 Size::Md => String::new(),
45 s => format!(" input-group-{s}"),
46 };
47
48 let full_class = if props.class.is_empty() {
49 format!("input-group{size_class}")
50 } else {
51 format!("input-group{size_class} {}", props.class)
52 };
53
54 rsx! {
55 div { class: "{full_class}", {props.children} }
56 }
57}
58
59#[derive(Clone, PartialEq, Props)]
61pub struct InputGroupTextProps {
62 #[props(default)]
64 pub class: String,
65 pub children: Element,
67}
68
69#[component]
70pub fn InputGroupText(props: InputGroupTextProps) -> Element {
71 let full_class = if props.class.is_empty() {
72 "input-group-text".to_string()
73 } else {
74 format!("input-group-text {}", props.class)
75 };
76
77 rsx! {
78 span { class: "{full_class}", {props.children} }
79 }
80}