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>); pub struct HoverWrapper(Box<dyn UIWidget>, Box<dyn UIWidget>);
impl HoverWrapper { impl HoverWrapper {
fn hovered_class(&self) -> String { fn hovered_class(&self) -> Vec<String> {
self.1 self.1
.extended_class() .extended_class()
.into_iter() .into_iter()
.filter(|x| !x.is_empty()) .filter(|x| !x.is_empty())
.map(|x| format!("hover:{x}")) .map(|x| format!("hover:{x}"))
.collect::<Vec<_>>() .collect::<Vec<_>>()
.join(" ")
} }
} }
@ -33,21 +32,23 @@ impl UIWidget for HoverWrapper {
} }
fn base_class(&self) -> Vec<String> { fn base_class(&self) -> Vec<String> {
vec![] self.hovered_class()
} }
fn extended_class(&self) -> Vec<String> { 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 { fn render_with_class(&self, class: &str) -> Markup {
if self.0.as_ref().can_inherit() { if self.0.as_ref().can_inherit() {
self.0 self.0
.as_ref() .as_ref()
.render_with_class(&format!("{} {class}", self.hovered_class())) .render_with_class(&format!("{} {class}", self.hovered_class().join(" ")))
} else { } else {
html! { html! {
div class=(format!("{} {class}", self.hovered_class())) { div class=(format!("{} {class}", self.hovered_class().join(" "))) {
(self.0.as_ref()) (self.0.as_ref())
} }
} }