use yew::prelude::*;
use super::ColumnLocator;
#[derive(Clone, PartialEq, Properties)]
pub struct AddExpressionButtonProps {
pub on_open_expr_panel: Callback<ColumnLocator>,
pub selected_column: Option<ColumnLocator>,
}
#[function_component]
pub fn AddExpressionButton(p: &AddExpressionButtonProps) -> Html {
let is_mouseover = yew::use_state_eq(|| false);
let onmouseover = yew::use_callback(is_mouseover.setter(), |event: MouseEvent, mo| {
mo.set(event.button() == 0);
});
let onmouseout = yew::use_callback(is_mouseover.setter(), |_event, mo| {
mo.set(false);
});
let onmousedown = p
.on_open_expr_panel
.reform(|_| ColumnLocator::NewExpression);
let class = if *is_mouseover || matches!(p.selected_column, Some(ColumnLocator::NewExpression))
{
classes!("dragdrop-hover")
} else {
classes!()
};
html! {
<div id="add-expression" data-index="-1" {class} {onmouseover} {onmouseout} {onmousedown}>
<span class="icon" />
<span id="add-expression-button" />
</div>
}
}