From 7e2164d6d6a142203b840a0f28eb18880f759268 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Sun, 15 Oct 2023 17:52:01 -0700 Subject: [PATCH] Add toggle --- examples/signals.rs | 2 +- packages/signals/src/signal.rs | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/examples/signals.rs b/examples/signals.rs index 60c9af126..c16bfe927 100644 --- a/examples/signals.rs +++ b/examples/signals.rs @@ -23,7 +23,7 @@ fn app(cx: Scope) -> Element { h1 { "High-Five counter: {count}" } button { onclick: move |_| count += 1, "Up high!" } button { onclick: move |_| count -= 1, "Down low!" } - button { onclick: move |_| running.set(!running.value()), "Toggle counter" } + button { onclick: move |_| running.toggle(), "Toggle counter" } button { onclick: move |_| saved_values.push(count.value()), "Save this value" } // We can do boolean operations on the current signal value diff --git a/packages/signals/src/signal.rs b/packages/signals/src/signal.rs index c1ae076d9..3a0ad407d 100644 --- a/packages/signals/src/signal.rs +++ b/packages/signals/src/signal.rs @@ -262,6 +262,13 @@ impl Signal { } } +impl Signal { + /// Invert the boolean value of the signal. This will trigger an update on all subscribers. + pub fn toggle(&self) { + self.set(!self.value()); + } +} + impl PartialEq for Signal { fn eq(&self, other: &Self) -> bool { self.inner == other.inner