Assign components to their HTMLElements
#626
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
Problem
We are trying to fix an issue on touch devices that certain elements, which are always visible, need to be touched twice in order to trigger the desired click action. This affects the
AdSkipButton
and theAdClickOverlay
.See this PR for more details on the problem and the solution: #627
Changes
As preparation for fixing the problem in a feasible way, this PR attaches the
Component
instances to their correspondingDOM
/HTMLElements
for easier access. This removes the need to traverse all components and find the correct instance e.g. in atouchend
listener.Details
HTMLElementWithComponent
) was introduced to preventany
casts. This type adds an optionalcomponent
attribute to theHTMLElement
for setting and accessing of it.The
DOM
constructor was extended to allow passing theComponent
onDOM
element creation.Label
, which is a child element ofButton
) do not have any component attached to it. A parent lookup needs to be performed to get the component from those elements. This was done to prevent confusion about where to get the instance and where not.Checklist (for PR submitter and reviewers)
CHANGELOG
entry