use crate::{
components::{
button::{Button, ButtonVariant},
tooltip::Tooltip,
},
prelude::TooltipProperties,
};
use yew::prelude::*;
#[derive(Debug, Clone, PartialEq, Properties)]
pub struct DualListSelectorControlProps {
#[prop_or_default]
pub class: Classes,
#[prop_or_default]
pub tooltip: Option<AttrValue>,
#[prop_or_default]
pub tooltip_props: Option<TooltipProperties>,
#[prop_or(true)]
pub disabled: bool,
#[prop_or_default]
pub children: Html,
#[prop_or_default]
pub onclick: Callback<MouseEvent>,
}
#[function_component(DualListSelectorControl)]
pub fn control(props: &DualListSelectorControlProps) -> Html {
let button = html! {
<Button
disabled={props.disabled}
variant={ButtonVariant::Plain}
tabindex={Some(-1)}
onclick={props.onclick.clone()}
>
{ props.children.clone() }
</Button>
};
let inner = if let Some(text) = &props.tooltip {
html! {
if let Some(props) = &props.tooltip_props {
<Tooltip text={text.to_string()} ..props.clone()>{ button }</Tooltip>
} else {
<Tooltip text={text.to_string()}>{ button }</Tooltip>
}
}
} else {
button
};
html! {
<div class={classes!["pf-v6-c-dual-list-selector__controls-item", props.class.clone()]}>
{ inner }
</div>
}
}