Add 'Vertical'.

Related issues: #1957.
This commit is contained in:
Rodrigo Girão Serrão
2023-03-09 15:38:31 +00:00
parent 38c7cc1849
commit 5674b4b628
3 changed files with 52 additions and 3 deletions

View File

@@ -9,14 +9,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Changed ### Changed
- Renamed `Vertical` to `VerticalScroll` https://github.com/Textualize/textual/issues/1957 - Breaking change: changed default behaviour of `Vertical` (see `VerticalScroll`) https://github.com/Textualize/textual/issues/1957
- Default `overflow` style for `Horizontal` changed to `hidden hidden` https://github.com/Textualize/textual/issues/1957 - The default `overflow` style for `Horizontal` was changed to `hidden hidden` https://github.com/Textualize/textual/issues/1957
### Added ### Added
- Added `HorizontalScroll` https://github.com/Textualize/textual/issues/1957 - Added `HorizontalScroll` https://github.com/Textualize/textual/issues/1957
- Added `Center` https://github.com/Textualize/textual/issues/1957 - Added `Center` https://github.com/Textualize/textual/issues/1957
- Added `Middle` https://github.com/Textualize/textual/issues/1957 - Added `Middle` https://github.com/Textualize/textual/issues/1957
- Added `VerticalScroll` (mimicking the old behaviour of `Vertical`) https://github.com/Textualize/textual/issues/1957
## [0.14.0] - 2023-03-09 ## [0.14.0] - 2023-03-09

View File

@@ -13,6 +13,18 @@ class Container(Widget):
""" """
class Vertical(Widget):
"""A container which lays children vertically."""
DEFAULT_CSS = """
Vertical {
width: 1fr;
layout: vertical;
overflow: hidden hidden;
}
"""
class VerticalScroll(Widget): class VerticalScroll(Widget):
"""A container which aligns children vertically and overflows automatically.""" """A container which aligns children vertically and overflows automatically."""

View File

@@ -1,7 +1,14 @@
"""Test basic functioning of some containers.""" """Test basic functioning of some containers."""
from textual.app import App, ComposeResult from textual.app import App, ComposeResult
from textual.containers import Center, Horizontal, HorizontalScroll, Middle from textual.containers import (
Center,
Horizontal,
HorizontalScroll,
Middle,
Vertical,
VerticalScroll,
)
from textual.widgets import Label from textual.widgets import Label
@@ -34,6 +41,35 @@ async def test_horizontal_vs_horizontalscroll_scrolling():
assert horizontal_scroll.scrollbars_enabled == (False, True) assert horizontal_scroll.scrollbars_enabled == (False, True)
async def test_vertical_vs_verticalscroll_scrolling():
"""Check the default scrollbar behaviours for `Vertical` and `VerticalScroll`."""
class VerticalsApp(App[None]):
CSS = """
Screen {
layout: horizontal;
}
"""
def compose(self) -> ComposeResult:
with Vertical():
for _ in range(10):
yield Label("How is life going?\n" * 3 + "\n\n")
with VerticalScroll():
for _ in range(10):
yield Label("How is life going?\n" * 3 + "\n\n")
WIDTH = 80
HEIGHT = 24
app = VerticalsApp()
async with app.run_test(size=(WIDTH, HEIGHT)):
vertical = app.query_one(Vertical)
vertical_scroll = app.query_one(VerticalScroll)
assert vertical.size.width == vertical_scroll.size.width
assert vertical.scrollbars_enabled == (False, False)
assert vertical_scroll.scrollbars_enabled == (True, False)
async def test_center_container(): async def test_center_container():
"""Check the size of the container `Center`.""" """Check the size of the container `Center`."""