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 the AdClickOverlay.
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 corresponding DOM / HTMLElements for easier access. This removes the need to traverse all components and find the correct instance e.g. in a touchend listener.
Details
A new type (HTMLElementWithComponent) was introduced to prevent any casts. This type adds an optional component attribute to the HTMLElement for setting and accessing of it.
The DOM constructor was extended to allow passing the Component on DOM element creation.
Only the root DOM element of Components gets the instance attached. This means that child components from elements (e.g. a Label, which is a child element of Button) 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.
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. TheDOM
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