This commit is contained in:
JMARyA 2025-01-15 21:42:36 +01:00
parent f7668c5c54
commit b0c6daf56e
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263

View file

@ -10,14 +10,13 @@ pub fn Hover<T: UIWidget + 'static, I: UIWidget + 'static>(inherit: I, inner: T)
pub struct HoverWrapper(Box<dyn UIWidget>, Box<dyn UIWidget>);
impl HoverWrapper {
fn hovered_class(&self) -> String {
fn hovered_class(&self) -> Vec<String> {
self.1
.extended_class()
.into_iter()
.filter(|x| !x.is_empty())
.map(|x| format!("hover:{x}"))
.collect::<Vec<_>>()
.join(" ")
}
}
@ -33,21 +32,23 @@ impl UIWidget for HoverWrapper {
}
fn base_class(&self) -> Vec<String> {
vec![]
self.hovered_class()
}
fn extended_class(&self) -> Vec<String> {
self.base_class()
let mut ret = self.base_class();
ret.extend_from_slice(&self.0.extended_class());
ret
}
fn render_with_class(&self, class: &str) -> Markup {
if self.0.as_ref().can_inherit() {
self.0
.as_ref()
.render_with_class(&format!("{} {class}", self.hovered_class()))
.render_with_class(&format!("{} {class}", self.hovered_class().join(" ")))
} else {
html! {
div class=(format!("{} {class}", self.hovered_class())) {
div class=(format!("{} {class}", self.hovered_class().join(" "))) {
(self.0.as_ref())
}
}