summaryrefslogtreecommitdiffstats
path: root/toolkit/crashreporter/client/app/src/ui/model/button.rs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/crashreporter/client/app/src/ui/model/button.rs')
-rw-r--r--toolkit/crashreporter/client/app/src/ui/model/button.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/toolkit/crashreporter/client/app/src/ui/model/button.rs b/toolkit/crashreporter/client/app/src/ui/model/button.rs
new file mode 100644
index 0000000000..d522fad6fc
--- /dev/null
+++ b/toolkit/crashreporter/client/app/src/ui/model/button.rs
@@ -0,0 +1,26 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use super::{Element, ElementBuilder};
+use crate::data::Event;
+
+/// A clickable button.
+#[derive(Default, Debug)]
+pub struct Button {
+ pub content: Option<Box<Element>>,
+ pub click: Event<()>,
+}
+
+impl ElementBuilder<Button> {
+ pub fn on_click<F>(&mut self, f: F)
+ where
+ F: Fn() + 'static,
+ {
+ self.element_type.click.subscribe(move |_| f());
+ }
+
+ pub fn add_child(&mut self, child: Element) {
+ Self::single_child(&mut self.element_type.content, child);
+ }
+}