]> git.proxmox.com Git - ui/proxmox-yew-widget-toolkit.git/commitdiff
widget: action icon: implement padding/margin/style builder
authorDominik Csapak <d.csapak@proxmox.com>
Fri, 21 Jun 2024 12:20:00 +0000 (14:20 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 21 Jun 2024 14:12:24 +0000 (16:12 +0200)
so one can use padding/margin/style/etc. builder methods on it

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
src/widget/action_icon.rs

index 1b894cd345154a3fa958181e338a6fdbdf8820c7..888edac330fdd4777ccc4397f2da0971f89e83af 100644 (file)
@@ -5,7 +5,10 @@ use yew::prelude::*;
 use yew::virtual_dom::{Key, VComp, VNode};
 
 use crate::prelude::IntoOptionalKey;
-use crate::props::{EventSubscriber, WidgetBuilder};
+use crate::props::{
+    AsClassesMut, AsCssStylesMut, CssMarginBuilder, CssPaddingBuilder, CssStyles, EventSubscriber,
+    WidgetBuilder, WidgetStyleBuilder,
+};
 use crate::widget::Container;
 
 use pwt_macros::builder;
@@ -28,6 +31,10 @@ pub struct ActionIcon {
     #[prop_or_default]
     pub class: Classes,
 
+    /// CSS style
+    #[prop_or_default]
+    pub style: CssStyles,
+
     /// The CSS icon class
     #[prop_or_default]
     pub icon_class: Option<Classes>,
@@ -95,6 +102,22 @@ impl ActionIcon {
     }
 }
 
+impl AsClassesMut for ActionIcon {
+    fn as_classes_mut(&mut self) -> &mut yew::Classes {
+        &mut self.class
+    }
+}
+
+impl AsCssStylesMut for ActionIcon {
+    fn as_css_styles_mut(&mut self) -> &mut CssStyles {
+        &mut self.style
+    }
+}
+
+impl CssPaddingBuilder for ActionIcon {}
+impl CssMarginBuilder for ActionIcon {}
+impl WidgetStyleBuilder for ActionIcon {}
+
 #[doc(hidden)]
 pub struct PwtActionIcon;
 
@@ -126,6 +149,7 @@ impl Component for PwtActionIcon {
             .class(props.disabled.then(|| "disabled"))
             .class(props.class.clone())
             .class(props.icon_class.clone())
+            .styles(props.style.clone())
             .onclick({
                 let on_activate = props.on_activate.clone();
                 move |event: MouseEvent| {