Skip to content

Commit

Permalink
Add container 'Center'.
Browse files Browse the repository at this point in the history
This container will centre children horizontally.

Related issues: #1957.
  • Loading branch information
rodrigogiraoserrao committed Mar 9, 2023
1 parent be41797 commit f91750e
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Added

- Added `HorizontalScroll` https://github.com/Textualize/textual/issues/1957
- Added `Center` https://github.com/Textualize/textual/issues/1957


## [0.14.0] - 2023-03-09
Expand Down
12 changes: 12 additions & 0 deletions src/textual/containers.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,18 @@ class HorizontalScroll(Widget):
"""


class Center(Widget):
"""A container widget which centers children horizontally."""

DEFAULT_CSS = """
Center {
align-horizontal: center;
width: 100%;
height: auto;
}
"""


class Grid(Widget):
"""A container widget with grid alignment."""

Expand Down
19 changes: 17 additions & 2 deletions tests/test_containers.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
"""Test basic functioning of some containers."""

from textual.app import App, ComposeResult
from textual.containers import Horizontal, HorizontalScroll
from textual.containers import Center, Horizontal, HorizontalScroll
from textual.widgets import Label


async def test_horizontal_vs_horizontalscroll_scrolling():
"""Check the default scrollbar behaviours for Horizontal and HorizontalScroll."""
"""Check the default scrollbar behaviours for `Horizontal` and `HorizontalScroll`."""

class HorizontalsApp(App[None]):
CSS = """
Expand All @@ -32,3 +32,18 @@ def compose(self) -> ComposeResult:
assert horizontal.size.height == horizontal_scroll.size.height
assert horizontal.scrollbars_enabled == (False, False)
assert horizontal_scroll.scrollbars_enabled == (False, True)


async def test_center_container():
"""Check the size of the container `Center`."""

class CenterApp(App[None]):
def compose(self) -> ComposeResult:
with Center():
yield Label("<>\n<>\n<>")

app = CenterApp()
async with app.run_test():
center = app.query_one(Center)
assert center.size.width == app.size.width
assert center.size.height == 3

0 comments on commit f91750e

Please sign in to comment.