fix: handle list-box set before renderer #3412
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.
Description
Fixes vaadin/flow-components#2553
The way how Flow component works is not fully clear to me: for some reason, the original issue only manifests in Safari but not Chrome, and only on reattach. Finally, there has to be some other component present (see also #428).
However, I was able to reproduce the root cause with a test case that roughly mimics Flow connector:
renderer
function, move the list-box child toroot
element.The actual problem: if
menuElement.items
is already defined by the time we initialize it, there will be noitems-changed
event fired. As a result,this._items
will remainundefined
and the subsequent renderer call will throw an error here:web-components/packages/select/src/vaadin-select.js
Line 631 in 87bbb0e
Type of change