|
55 | 55 | from .await_remove import AwaitRemove |
56 | 56 | from .box_model import BoxModel |
57 | 57 | from .cache import FIFOCache |
| 58 | +from .css.match import match |
| 59 | +from .css.parse import parse_selectors |
58 | 60 | from .css.query import NoMatches, WrongType |
59 | 61 | from .css.scalar import ScalarOffset |
60 | 62 | from .dom import DOMNode, NoScreen |
@@ -3294,22 +3296,22 @@ def remove(self) -> AwaitRemove: |
3294 | 3296 | await_remove = self.app._remove_nodes([self], self.parent) |
3295 | 3297 | return await_remove |
3296 | 3298 |
|
3297 | | - def remove_children( |
3298 | | - self, selector: str | type[QueryType] | None = None |
3299 | | - ) -> AwaitRemove: |
3300 | | - """Remove the children of this Widget from the DOM. |
| 3299 | + def remove_children(self, selector: str | type[QueryType] = "*") -> AwaitRemove: |
| 3300 | + """Remove the immediate children of this Widget from the DOM. |
3301 | 3301 |
|
3302 | 3302 | Args: |
3303 | | - selector: A CSS selector to specify which children to remove. |
| 3303 | + selector: A CSS selector to specify which direct children to remove. |
3304 | 3304 |
|
3305 | 3305 | Returns: |
3306 | | - An awaitable object that waits for the children to be removed. |
| 3306 | + An awaitable object that waits for the direct children to be removed. |
3307 | 3307 | """ |
3308 | | - if isinstance(selector, str) or selector is None: |
3309 | | - children_to_remove = self.query(selector) |
3310 | | - else: |
3311 | | - children_to_remove = self.query(selector.__name__) |
3312 | | - await_remove = self.app._remove_nodes(list(children_to_remove), self) |
| 3308 | + if not isinstance(selector, str): |
| 3309 | + selector = selector.__name__ |
| 3310 | + parsed_selectors = parse_selectors(selector) |
| 3311 | + children_to_remove = [ |
| 3312 | + child for child in self.children if match(parsed_selectors, child) |
| 3313 | + ] |
| 3314 | + await_remove = self.app._remove_nodes(children_to_remove, self) |
3313 | 3315 | return await_remove |
3314 | 3316 |
|
3315 | 3317 | @asynccontextmanager |
|
0 commit comments