mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
@@ -28,6 +28,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- Breaking change: Added `toggle_button` attribute to RadioButton and Checkbox events, replaces `input` https://github.com/Textualize/textual/pull/1940
|
- Breaking change: Added `toggle_button` attribute to RadioButton and Checkbox events, replaces `input` https://github.com/Textualize/textual/pull/1940
|
||||||
- A percentage alpha can now be applied to a border https://github.com/Textualize/textual/issues/1863
|
- A percentage alpha can now be applied to a border https://github.com/Textualize/textual/issues/1863
|
||||||
- Added `Color.multiply_alpha`.
|
- Added `Color.multiply_alpha`.
|
||||||
|
- Added `HorizontalScroll` https://github.com/Textualize/textual/issues/1957
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,18 @@ class Horizontal(Widget):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class HorizontalScroll(Widget):
|
||||||
|
"""A container widget which aligns children horizontally and overflows if needed."""
|
||||||
|
|
||||||
|
DEFAULT_CSS = """
|
||||||
|
HorizontalScroll {
|
||||||
|
height: 1fr;
|
||||||
|
layout: horizontal;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
class Grid(Widget):
|
class Grid(Widget):
|
||||||
"""A container widget with grid alignment."""
|
"""A container widget with grid alignment."""
|
||||||
|
|
||||||
|
|||||||
34
tests/test_containers.py
Normal file
34
tests/test_containers.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
"""Test basic functioning of some containers."""
|
||||||
|
|
||||||
|
from textual.app import App, ComposeResult
|
||||||
|
from textual.containers import Horizontal, HorizontalScroll
|
||||||
|
from textual.widgets import Label
|
||||||
|
|
||||||
|
|
||||||
|
async def test_horizontal_vs_horizontalscroll_scrolling():
|
||||||
|
"""Check the default scrollbar behaviours for Horizontal and HorizontalScroll."""
|
||||||
|
|
||||||
|
class HorizontalsApp(App[None]):
|
||||||
|
CSS = """
|
||||||
|
Screen {
|
||||||
|
layout: vertical;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def compose(self) -> ComposeResult:
|
||||||
|
with Horizontal():
|
||||||
|
for _ in range(10):
|
||||||
|
yield Label("How is life going? " * 3 + " | ")
|
||||||
|
with HorizontalScroll():
|
||||||
|
for _ in range(10):
|
||||||
|
yield Label("How is life going? " * 3 + " | ")
|
||||||
|
|
||||||
|
WIDTH = 80
|
||||||
|
HEIGHT = 24
|
||||||
|
app = HorizontalsApp()
|
||||||
|
async with app.run_test(size=(WIDTH, HEIGHT)):
|
||||||
|
horizontal = app.query_one(Horizontal)
|
||||||
|
horizontal_scroll = app.query_one(HorizontalScroll)
|
||||||
|
assert horizontal.size.height == horizontal_scroll.size.height
|
||||||
|
assert horizontal.scrollbars_enabled == (False, False)
|
||||||
|
assert horizontal_scroll.scrollbars_enabled == (False, True)
|
||||||
Reference in New Issue
Block a user