✅ transition with menu composition #104
Merged
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.
What is wrong and why
Adding
transitioncomponent to menu causes a situation when variableisOpenisfalsein<Menu>but<Menu.Items>is still visible - e.g. is fading out.This getter
will be updated to
undefinedwhich will be passed down to<Menu.Items>headlessui-focus-trapwith parameteritemsGuidThus, if we change
itemsGuidfrom e.g.ember-123toundefinedmodifier will be recalculated (teardown old, and mount new)When a new modifier is mounted,
fallbackFocusis#undefined.focus-trapafter activation is focusing firsttabbableelement. As we set explicitly each item element withtabindex=-1,focus-trapdoesn't see any tabbable nodes and tries to focusfallbackelement which is#undefined.Finally,
focus-trapwill throw error, which you can see here (try to close menu). Also failing test with first build.Fix
I changed getter
itemsGuidto always return notundefinedvalue (modifier will be not rerun when close menu with transition). It breaks a lot of tests asMenu.Buttoncomponent uses it to setaria-controls- when is closed this aria should be undefined. So eventually I added if condition based on@isOpenwhich already is provided toMenu.Button