diff --git a/.idea/leptos-use.iml b/.idea/leptos-use.iml
index 224ebd7..2db780b 100644
--- a/.idea/leptos-use.iml
+++ b/.idea/leptos-use.iml
@@ -61,6 +61,9 @@
+
+
+
@@ -93,4 +96,4 @@
-
+
\ No newline at end of file
diff --git a/examples/rust-toolchain.toml b/examples/rust-toolchain.toml
new file mode 100644
index 0000000..5d56faf
--- /dev/null
+++ b/examples/rust-toolchain.toml
@@ -0,0 +1,2 @@
+[toolchain]
+channel = "nightly"
diff --git a/src/core/element_maybe_signal.rs b/src/core/element_maybe_signal.rs
index 47c08e6..7a047e5 100644
--- a/src/core/element_maybe_signal.rs
+++ b/src/core/element_maybe_signal.rs
@@ -307,3 +307,63 @@ macro_rules! impl_from_html_element {
impl_from_html_element!(web_sys::EventTarget);
impl_from_html_element!(web_sys::Element);
+
+// From Signal /////////////////////////////////////////
+
+macro_rules! impl_from_signal_html_element {
+ ($signal:ty, $ty:ty) => {
+ impl From<$signal> for ElementMaybeSignal<$ty, $ty>
+ where
+ HtmlEl: ElementDescriptor + std::ops::Deref + Clone,
+ {
+ fn from(value: $signal) -> Self {
+ Self::Dynamic(Signal::derive(move || {
+ let value = value.get();
+ let el: &$ty = value.deref();
+ Some(el.clone())
+ }))
+ }
+ }
+ };
+}
+
+impl_from_signal_html_element!(Signal>, web_sys::EventTarget);
+impl_from_signal_html_element!(ReadSignal>, web_sys::EventTarget);
+impl_from_signal_html_element!(RwSignal>, web_sys::EventTarget);
+impl_from_signal_html_element!(Memo>, web_sys::EventTarget);
+
+impl_from_signal_html_element!(Signal>, web_sys::Element);
+impl_from_signal_html_element!(ReadSignal>, web_sys::Element);
+impl_from_signal_html_element!(RwSignal>, web_sys::Element);
+impl_from_signal_html_element!(Memo>, web_sys::Element);
+
+// From Signal