mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
* Add Widget.border_title and border_subtitle. Related issues: #1864 * Test setting border_(sub)title. * Add border (sub)title references to StylesCache. These internal references will make it easier for the instance of 'StylesCache' to know which border (sub)title to use, if/when needed. * Add method to render border label. * Add styles to align border (sub)title. * Render border labels. * Update styles template. * Make new 'render_row' parameters optional. * Add (sub)title border snapshot tests. * Document border (sub)title and styles. * Pass (sub)title directly as arguments. Get rid of the watchers to make data flow easier to follow. Related comment: https://github.com/Textualize/textual/pull/2064/files\#r1137746697 * Tweak example. * Fix render_border_label. This was wrong because border labels can be composed of multiple segments if they contain multiple styles. Additionally, we want to render a single blank space of padding around the title. * Ensure we get no label when there's no space. * Add tests for border label rendering. * 'render_border_label' now returns iterable of segments. * Add label to render_row. * Fix calling signature in tests. * Add padding to snapshot tests. * Fix changelog. * Update snapshot tests. * Update snapshot tests. * Border labels expand if there's no corners. * Update CHANGELOG.md * Fix docs. * Remove irrelevant line. * Fix snapshot tests. * Don't share Console among tests. * Simplify example in styles guide. * Avoid expensive function call when possible. * rewording * positive branch first * remove wasteful indirection * fix changelog --------- Co-authored-by: Will McGugan <willmcgugan@gmail.com>
65 lines
1.1 KiB
CSS
65 lines
1.1 KiB
CSS
Grid {
|
|
grid-size: 3 3;
|
|
align: center middle;
|
|
}
|
|
|
|
Container {
|
|
width: 100%;
|
|
height: 100%;
|
|
align: center middle;
|
|
}
|
|
|
|
#lbl1 { /* (1)! */
|
|
border: vkey $secondary;
|
|
}
|
|
|
|
#lbl2 { /* (2)! */
|
|
border: round $secondary;
|
|
border-title-align: right;
|
|
border-subtitle-align: right;
|
|
}
|
|
|
|
#lbl3 {
|
|
border: wide $secondary;
|
|
border-title-align: center;
|
|
border-subtitle-align: center;
|
|
}
|
|
|
|
#lbl4 {
|
|
border: ascii $success;
|
|
border-title-align: center; /* (3)! */
|
|
border-subtitle-align: left;
|
|
}
|
|
|
|
#lbl5 { /* (4)! */
|
|
/* No border = no (sub)title. */
|
|
border: none $success;
|
|
border-title-align: center;
|
|
border-subtitle-align: center;
|
|
}
|
|
|
|
#lbl6 { /* (5)! */
|
|
border-top: solid $success;
|
|
border-bottom: solid $success;
|
|
}
|
|
|
|
#lbl7 { /* (6)! */
|
|
border-top: solid $error;
|
|
border-bottom: solid $error;
|
|
padding: 1 2;
|
|
border-subtitle-align: left;
|
|
}
|
|
|
|
#lbl8 {
|
|
border-top: solid $error;
|
|
border-bottom: solid $error;
|
|
border-title-align: center;
|
|
border-subtitle-align: center;
|
|
}
|
|
|
|
#lbl9 {
|
|
border-top: solid $error;
|
|
border-bottom: solid $error;
|
|
border-title-align: right;
|
|
}
|