Repository navigation
Allow ListView as a nested widget component - #137
Open
saloni-garg wants to merge 1 commit into
Open
saloni-garg wants to merge 1 commit into
saloni-garg wants to merge 1 commit into
Conversation
saloni-garg
marked this pull request as ready for review
October 26, 2026 05:12
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #47.
ListViewis missing from theStrictWidgetComponentunion inchatkit/widgets.py. It is only inStrictWidgetRoot, so aListViewworks at the top level but not nested, even thoughListViewItemis a strict component and containers likeCardtakelist[WidgetComponent]children. The Widget Builder emitsCard > ListViewstructures (example in the issue), and parsing one silently downgrades the list to aDynamicWidgetComponent: its typed fields (children: list[ListViewItem],limit,status,theme) are not validated andisinstance(child, ListView)is False for anything walking the tree.This adds
ListViewtoStrictWidgetComponent, next toListViewItem, plus a regression test that parses the nested structure from the issue and checks the child comes back as aListViewwithListViewItemchildren.Reproduced on current main:
TypeAdapter(StrictWidgetComponent)rejects a validListViewpayloadTypeAdapter(WidgetRoot)on a Card containing a validListViewreturns the child asDynamicWidgetComponent, notListViewTests:
pytest tests/is 130 passed on unpatched main (the new test fails), and 131 passed with this change.