diff options
author | 2020-02-06 03:06:06 +0100 | |
---|---|---|
committer | 2020-02-06 03:06:06 +0100 | |
commit | 57aed1d5c61a14fa6337e9f838fc519efdd75e06 (patch) | |
tree | ebc8f0b9c0866fd98396175e0c672c8d9c1b64a2 /web | |
parent | 282ae1dc9e4d0aa4dec4cee575b5eaa5f9a90b8d (diff) | |
download | iced-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.toml | 1 | ||||
-rw-r--r-- | web/src/widget/text_input.rs | 24 |
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() + } } |