-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: nested collection support #7379
Conversation
@nwidynski Heya, sorry about the delay, we were pretty busy with getting the release out. As mentioned in #7277 (comment) we are leaning towards supporting inputs in Gridlist first via something like #7360, which you had already noted doesn't solve the typeahead collision problem. However, instead of making typeahead disable-able via a prop, we tossed around an idea of perhaps just doing some detection in the useTypeselect hook to see if the user was typing in an input and simply early return at that point. Any thoughts on that approach? |
@LFDanLu No worries about the timeline 👍 I suppose you were exploring that idea to lighten the burden on the developer? If so, I don't see why these necessarily have to exclude each other. Preventing type select only when focus is currently on an input, will still cause issues with nested collections. Was there other reasoning for prohibiting the exposure of As mentioned (see comment), this PR focuses only on the essentials of supporting nested collections and can be seen as independent of #7360. Only the On that note, any feedback from the team on #7376? |
There was also a concern about exposing |
Just wanted to give you an update, but the team tested this today and things looked pretty good. Only thing that we noticed was some of the examples in the Table docs here broke, I'll see if I can get a chance to dig soon. Still seeing about getting another pair of eyes on this. The team is also juggling a couple of other PRs alongside this one with widespread changes (usePress refactor/shadowDOM support) and is a bit worried about stacking them all into a single release. Ideally we'd give them all some time to bake before shipping, will keep you posted. |
@LFDanLu Thanks for keeping me posted. The regression you noticed actually comes from a bug in the docs, which was uncovered by the improvement to
|
Hey, just wanted to let you know we haven't forgotten about this. We're just moving a bit slowly right now as a few team members are on vacation. Thank you for your patience. |
…prefix # Conflicts: # packages/@react-aria/grid/src/useGridCell.ts # packages/react-aria-components/test/Table.test.js
@@ -218,7 +223,7 @@ function GridListInner<T extends object>({props, collection, gridListRef: ref}: | |||
<div | |||
{...filterDOMProps(props)} | |||
{...renderProps} | |||
{...mergeProps(gridProps, focusProps, droppableCollection?.collectionProps, emptyStatePropOverrides)} | |||
{...mergeProps(gridProps, focusProps, droppableCollection?.collectionProps, emptyStatePropOverrides, {id})} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what happened here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This addresses two issues. The first is #7655, which we scheduled as a follow-up to this PR but has since landed. Second is that drag & drop hooks generate their own id without a defaultId
, overriding any custom ids here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmm does the latter case still occur? I think mergeProps
should merge the ids
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are right. @LFDanLu and I just agreed it would be better to hand the id down to gridlists call to useDroppableCollection
to avoid implicitly relying on mergeProps #7379 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will just push that as follow-up once i get into the office tomorrow 👍
Hope you don't mind, I've pushed some changes to try to contain this within the selection package as much as possible so we don't need to handle this in each individual collection component. This way we generate a collection id in |
…prefix # Conflicts: # packages/@react-aria/selection/src/useSelectableCollection.ts # packages/@react-aria/selection/src/useSelectableItem.ts # packages/react-aria-components/test/Table.test.js
…prefix # Conflicts: # packages/@react-aria/menu/src/useMenuItem.ts # packages/@react-aria/selection/src/useSelectableCollection.ts # packages/@react-aria/selection/src/useSelectableItem.ts
2ce6172
Closes #7277 (comment)
As discussed, this change focuses only on the bare minimum to get nested collections to work.
✅ Pull Request Checklist:
📝 Test Instructions:
🧢 Your Project: