From 5fa0929cbf8075b35c084c18c4af110a2c279b6f Mon Sep 17 00:00:00 2001 From: luoxiaozero <48741584+luoxiaozero@users.noreply.github.com> Date: Tue, 12 Dec 2023 20:44:37 +0800 Subject: [PATCH] fix: class overwrites class when updating signal values (#46) * fix: class overwrites class when updating signal values * fix: class rendering of ssr mode --- src/alert/mod.rs | 15 ++++++++++++--- src/auto_complete/mod.rs | 6 +++--- src/avatar/mod.rs | 12 ++++++++++-- src/button/mod.rs | 10 +++++++--- src/time_picker/mod.rs | 1 + src/utils/dyn_classes.rs | 37 +++++++++++++++++++++++++++++++++++++ src/utils/mod.rs | 2 ++ 7 files changed, 72 insertions(+), 11 deletions(-) create mode 100644 src/utils/dyn_classes.rs diff --git a/src/alert/mod.rs b/src/alert/mod.rs index 04f02b6..4052d0c 100644 --- a/src/alert/mod.rs +++ b/src/alert/mod.rs @@ -1,6 +1,12 @@ mod theme; -use crate::{theme::use_theme, utils::mount_style, Icon, Theme}; +#[cfg(not(feature = "ssr"))] +use crate::utils::dyn_classes; +use crate::{ + theme::use_theme, + utils::{mount_style, ssr_class}, + Icon, Theme, +}; use icondata::AiIcon; use leptos::*; pub use theme::AlertTheme; @@ -79,9 +85,12 @@ pub fn Alert( } .into() }); + + let ssr_class = ssr_class(&class); view! { -
diff --git a/src/auto_complete/mod.rs b/src/auto_complete/mod.rs index ce0c075..3faf235 100644 --- a/src/auto_complete/mod.rs +++ b/src/auto_complete/mod.rs @@ -1,5 +1,6 @@ mod theme; +use crate::utils::{dyn_classes, ssr_class}; use crate::{ components::{Binder, Follower, FollowerPlacement, FollowerWidth}, use_theme, @@ -108,9 +109,10 @@ pub fn AutoComplete( } }; + let ssr_class = ssr_class(&class); view! { -
+
} } - - diff --git a/src/avatar/mod.rs b/src/avatar/mod.rs index e507b3b..aa18973 100644 --- a/src/avatar/mod.rs +++ b/src/avatar/mod.rs @@ -1,6 +1,12 @@ mod theme; -use crate::{use_theme, utils::mount_style, Theme}; +#[cfg(not(feature = "ssr"))] +use crate::utils::dyn_classes; +use crate::{ + use_theme, + utils::{mount_style, ssr_class}, + Theme, +}; use leptos::*; pub use theme::AvatarTheme; @@ -28,8 +34,10 @@ pub fn Avatar( css_vars }); mount_style("avatar", include_str!("./avatar.css")); + + let ssr_class = ssr_class(&class); view! { - + {move || { let src = src.get(); (!src.is_empty()).then(|| view! { }) diff --git a/src/button/mod.rs b/src/button/mod.rs index 846329c..c1c763b 100644 --- a/src/button/mod.rs +++ b/src/button/mod.rs @@ -1,11 +1,13 @@ mod button_group; mod theme; +#[cfg(not(feature = "ssr"))] +use crate::utils::dyn_classes; use crate::{ components::{OptionComp, Wave, WaveRef}, icon::*, theme::*, - utils::{mount_style, ComponentRef}, + utils::{mount_style, ssr_class, ComponentRef}, }; pub use button_group::ButtonGroup; use leptos::*; @@ -219,10 +221,12 @@ pub fn Button( }; callback.call(event); }; - + + let ssr_class = ssr_class(&class); view! {