Crates.io | tui-prompts |
lib.rs | tui-prompts |
version | 0.5.0 |
source | src |
created_at | 2023-07-11 05:45:55.94635 |
updated_at | 2024-10-25 11:45:17.382464 |
description | A library for building interactive prompts for ratatui. |
homepage | |
repository | https://github.com/joshka/tui-widgets |
max_upload_size | |
id | 913515 |
size | 86,324 |
tui-prompts
is a Rust crate that provides prompt widgets for the Ratatui crate. It allows for easy
creation of interactive command-line interfaces with various types of prompts. Inspired by
https://www.npmjs.com/package/prompts and various other prompt libraries.
struct App<'a> {
username_state: TextState<'a>,
password_state: TextState<'a>,
invisible_state: TextState<'a>,
}
impl<'a> App<'a> {
fn draw_ui<B: Backend>(&mut self, frame: &mut Frame<B>) {
let (username_area, password_area, invisible_area) = split_layout(frame.size())
TextPrompt::from("Username")
.draw(frame, username_area, &mut self.username_state);
TextPrompt::from("Password")
.with_render_style(TextRenderStyle::Password)
.draw(frame, password_area, &mut self.password_state);
TextPrompt::from("Invisible")
.with_render_style(TextRenderStyle::Invisible)
.draw(frame, invisible_area, &mut self.invisible_state);
}
}
See the text example for more details.
Text is automatically character wrapped to fit in the render area.
See the multi line example for more details.
^[b
and ^[f
for start / end of linecargo add ratatui tui-prompts crossterm
Or add the following to your Cargo.toml
file:
Key | Action |
---|---|
Home, Ctrl+A | Move cursor to beginning of line |
End, Ctrl+E | Move cursor to end of line |
Left, Ctrl+B | Move cursor one character left |
Right, Ctrl+F | Move cursor one character right |
Backspace (Delete on Mac), Ctrl+H | Delete character before cursor |
Delete (Fn+Delete on Mac), Ctrl+D | Delete character at cursor |
Ctrl+K | Delete all characters from the cursor to the end of line |
Ctrl+U | Delete the entire line |
Enter | Complete the prompt |
Escape, Ctrl+C | Abort the prompt |
Copyright (c) Josh McKinney
This project is licensed under either of:
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See CONTRIBUTING.md.