Skip to content

ickshonpe/bevy_ui_text_input

Repository files navigation

Bevy UI Text Input

Text input crate for Bevy UI using cosmic text.

Text Input Example

Basic usage

Spawn a TextInputNode component to create a text input:

commands
        .spawn((
            TextInputNode::default(),
            Node {
                width: Val::Px(500.),
                height: Val::Px(250.),
                ..default()
            },
        ))

The size has to be set using Node, there isn't any support for responsive sizing yet. The active text input is set using the InputFocus resource. Inputs can also be set to activate on clicks.

There are a couple of examples, text_input is the most complete:

cargo run --example text_input

Features

  • Undo and redo
  • Text selection with keyboard and mouse
  • Overwrite and insert edit modes
  • Horizontally scrolling single line input
  • Validated integer, decimal and hexadecimal input modes
  • Vertical and horizontal scrolling
  • Cut, copy, and paste with clipboard support
  • Display prompt when empty
  • Keyboard navigation supports page up & down, home & End, next & previous word, buffer start & end and scroll up & down
  • Mouse wheel scrolling
  • Max characters limit
  • Double-click and triple-click to select words and paragraphs respectively

Problems + Bugs

  • Scrolling can be glitchy if the line height isn't an exact divisor of the input box.
  • The plugin can't access any existing FontAtlasSets from bevy_text and has to create its own atlases for any fonts it uses.

Not supported (at least yet)

  • IME
  • Responsive sizing
  • Rich text
  • Syntax highlighting
  • World UI
  • Text2d
  • Onscreen keyboard
  • Clipboard on android

About

No description, website, or topics provided.

Resources

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE-APACHE

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages