This repository was archived by the owner on Aug 6, 2023. It is now read-only.
v0.14.0
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.
Rows are now a collection ofCells, themselves wrapping aText. This means you can style
the entireTable, an entireRow, an entireCelland rely on the styling capabilities of
Textto get full control over the look of yourTable.Rows can have multiple lines.- The header is now optional and is just another
Rowalways visible at the top. Rows 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
Rowwhich is no
longer anenumbut 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::headerto set it.
Table::header_stylehas 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
Paragraphwidget.
Features
- Add
Style::resetto create aStyleresetting all styling properties when applied. - Add an option to render the
Gaugewidget with unicode blocks. - Manage common project tasks with
cargo-makerather thanmakefor easier on-boarding.