summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-02-06 03:06:06 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-02-06 03:06:06 +0100
commit57aed1d5c61a14fa6337e9f838fc519efdd75e06 (patch)
treeebc8f0b9c0866fd98396175e0c672c8d9c1b64a2 /web
parent282ae1dc9e4d0aa4dec4cee575b5eaa5f9a90b8d (diff)
downloadiced-57aed1d5c61a14fa6337e9f838fc519efdd75e06.tar.gz
iced-57aed1d5c61a14fa6337e9f838fc519efdd75e06.tar.bz2
iced-57aed1d5c61a14fa6337e9f838fc519efdd75e06.zip
Implement `TextInput::on_submit` support in `iced_web`
Diffstat (limited to 'web')
-rw-r--r--web/Cargo.toml1
-rw-r--r--web/src/widget/text_input.rs24
2 files changed, 23 insertions, 2 deletions
diff --git a/web/Cargo.toml b/web/Cargo.toml
index 7ddf3400..c043c697 100644
--- a/web/Cargo.toml
+++ b/web/Cargo.toml
@@ -39,4 +39,5 @@ features = [
"Event",
"EventTarget",
"InputEvent",
+ "KeyboardEvent",
]
diff --git a/web/src/widget/text_input.rs b/web/src/widget/text_input.rs
index 0992208b..3fa458bd 100644
--- a/web/src/widget/text_input.rs
+++ b/web/src/widget/text_input.rs
@@ -155,7 +155,9 @@ where
style_sheet.insert(bump, css::Rule::Padding(self.padding));
let on_change = self.on_change.clone();
- let event_bus = bus.clone();
+ let on_submit = self.on_submit.clone();
+ let input_event_bus = bus.clone();
+ let submit_event_bus = bus.clone();
let style = self.style_sheet.active();
input(bump)
@@ -200,7 +202,17 @@ where
Some(text_input) => text_input,
};
- event_bus.publish(on_change(text_input.value()));
+ input_event_bus.publish(on_change(text_input.value()));
+ })
+ .on("keypress", move |_root, _vdom, event| {
+ if let Some(on_submit) = on_submit.clone() {
+ let event = event.unchecked_into::<web_sys::KeyboardEvent>();
+
+ match event.key_code() {
+ 13 => { submit_event_bus.publish(on_submit); }
+ _ => {}
+ }
+ }
})
.finish()
}
@@ -228,4 +240,12 @@ impl State {
pub fn new() -> Self {
Self::default()
}
+
+ /// Creates a new [`State`], representing a focused [`TextInput`].
+ ///
+ /// [`State`]: struct.State.html
+ pub fn focused() -> Self {
+ // TODO
+ Self::default()
+ }
}