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! {