pub fn editor<M>() -> Editor<M>Expand description
A multi-line text field.
Examples found in repository?
examples/chat.rs (line 77)
61 fn view(&self) -> View<Msg> {
62 let messages = self.transcript.iter().enumerate().map(|(i, (who, text))| {
63 let node = ui::md(text.clone()).key(i);
64 if *who == "you" {
65 ui::card().key(i).tone("user").child(node.key("t"))
66 } else {
67 ui::card().key(i).variant("bare").child(node.key("t"))
68 }
69 });
70 let cursor: usize = self
71 .draft
72 .chars()
73 .take(self.cursor)
74 .map(char::len_utf16)
75 .sum();
76 View::new().main(ui::col().children(messages)).dock(nodes![
77 ui::editor()
78 .key("ed")
79 .text(self.draft.clone())
80 .cursor(cursor)
81 .placeholder("Message (Enter sends, Escape quits)")
82 .sendable(true)
83 .on_send(|text| Msg::Send(text.to_owned()))
84 .on_focus(Msg::Focus),
85 ui::status()
86 .key("bar")
87 .child(ui::seg("chat").icon("message"))
88 .child(
89 ui::seg(format!("{} messages", self.transcript.len()))
90 .side(Side::Right)
91 .tone(if self.transcript.is_empty() {
92 Tone::Muted
93 } else {
94 Tone::Success
95 }),
96 ),
97 ])
98 }