tui-rs v0.14.0 Release Notes
Release Date: 2021-01-01 // over 3 years ago-
๐ฅ Breaking changes
๐ New API for the Table widget
The
Table
widget got a lot of improvements that should make it easier to work with:- It should not longer panic when rendered on small areas.
- ๐
Row
s are now a collection ofCell
s, themselves wrapping aText
. This means you can style the entireTable
, an entireRow
, an entireCell
and rely on the styling capabilities ofText
to get full control over the look of yourTable
. Row
s can have multiple lines.- The header is now optional and is just another
Row
always visible at the top. Row
s can have a bottom margin.- The header alignment is no longer off when an item is selected.
๐ป Taking the example of the code in
examples/demo/ui.rs
, this is what you may have to change:let failure_style = Style::default() .fg(Color::Red) .add_modifier(Modifier::RAPID_BLINK | Modifier::CROSSED_OUT); - let header = ["Server", "Location", "Status"]; let rows = app.servers.iter().map(|s| { let style = if s.status == "Up" { up_style } else { failure_style }; - Row::StyledData(vec![s.name, s.location, s.status].into_iter(), style) + Row::new(vec![s.name, s.location, s.status]).style(style) }); - let table = Table::new(header.iter(), rows) + let table = Table::new(rows) + .header( + Row::new(vec!["Server", "Location", "Status"]) + .style(Style::default().fg(Color::Yellow)) + .bottom_margin(1), + ) .block(Block::default().title("Servers").borders(Borders::ALL)) - .header_style(Style::default().fg(Color::Yellow)) .widths(&[ Constraint::Length(15), Constraint::Length(15),
Here, we had to:
- ๐ Change the way we construct
Row
which is no longer anenum
but astruct
. It accepts anything that can be converted to an iterator of things ๐ that can be converted to aCell
- The header is no longer a required parameter so we use
๐
Table::header
to set it. ๐Table::header_style
has been removed since the style can be directly set using ๐Row::style
. In addition, we want to preserve the old margin between the header and the rest of the rows so we add a bottom margin to the header using ๐Row::bottom_margin
.
๐ You may want to look at the documentation of the different types to get a better understanding:
๐ Fixes
- ๐ Fix handling of Non Breaking Space (NBSP) in wrapped text in
Paragraph
widget.
๐ Features
- โ Add
Style::reset
to create aStyle
resetting all styling properties when applied. - โ Add an option to render the
Gauge
widget with unicode blocks. - Manage common project tasks with
cargo-make
rather thanmake
for easier on-boarding.