[X] Yes, this behavior used to work in the previous version
The previous version in which this bug was not present was
14
Description
Hi, after upgrading to Angular v15 tooltips are no longer displayed when navigating to a checkbox element via keyboard.
I added a repro link on stackblitz which has a radio button and a checkbox. You can see that when navigating to the radio button via keyboard the tooltip is shown, but when doing the same to the checkbox, nothing is displayed.
I looked over the tooltip code where the events are being monitored. This fires on the keyboard focus event for the radio, but not for the checkbox.
We can see that the second parameter of the monitor method is left default, which is false, this means that it will not check if an event was fired on a children. For radio buttons and checkboxes the event (focus) is fired on a children, on the input. So it is strange that for the radio button this works.
Looking into the FocusMonitor code, I saw that on the focus event (_onFocus), elementInfo came with checkChildren on true for the radio, but on false for the checkbox. Now, on the tooltip code, all the monitors have the default value for checkChildren which is false.
I looked after this in the radio code and saw that the monitor is called with checkChildren on true. So this is why the tooltip fires on the radio.
But the tooltip did fire on the checkbox in v14 too; not anymore now in the new MDC checkbox, there is no monitor called with checkChildren on true. If you open the legacy checkbox code, you can see that it was, so that is why it worked before.
So this worked before and still works using the same mechanism for other elements (like radio, but probably others too), but seems like a strange way, since the tooltip doesn't fire because of the monitor inside the tooltip directive, but a custom monitor inside the respective components.
Could the tooltip monitor all the elements using checkChildren on true or do you think it could cause issues?
Tested this on v15, but probably is the same for v16 and v17.
Is this a regression?
The previous version in which this bug was not present was
14
Description
Hi, after upgrading to Angular v15 tooltips are no longer displayed when navigating to a checkbox element via keyboard.
I added a repro link on stackblitz which has a radio button and a checkbox. You can see that when navigating to the radio button via keyboard the tooltip is shown, but when doing the same to the checkbox, nothing is displayed.
I looked over the tooltip code where the events are being monitored. This fires on the keyboard focus event for the radio, but not for the checkbox.
We can see that the second parameter of the
monitor
method is left default, which isfalse
, this means that it will not check if an event was fired on a children. For radio buttons and checkboxes the event (focus) is fired on a children, on the input. So it is strange that for the radio button this works.Looking into the FocusMonitor code, I saw that on the focus event (
_onFocus
), elementInfo came withcheckChildren
ontrue
for the radio, but onfalse
for the checkbox. Now, on the tooltip code, all the monitors have the default value forcheckChildren
which is false.I looked after this in the radio code and saw that the
monitor
is called with checkChildren on true. So this is why the tooltip fires on the radio.But the tooltip did fire on the checkbox in v14 too; not anymore now in the new MDC checkbox, there is no monitor called with
checkChildren
ontrue
. If you open the legacy checkbox code, you can see that it was, so that is why it worked before.So this worked before and still works using the same mechanism for other elements (like radio, but probably others too), but seems like a strange way, since the tooltip doesn't fire because of the monitor inside the tooltip directive, but a custom monitor inside the respective components.
Could the tooltip monitor all the elements using
checkChildren
ontrue
or do you think it could cause issues?Tested this on v15, but probably is the same for v16 and v17.
Reproduction
StackBlitz link: https://stackblitz.com/edit/hvjxck?file=src%2Fapp%2Fradio-overview-example.html Steps to reproduce:
Expected Behavior
Tooltip is visible when navigating via keyboard on checkboxes.
Actual Behavior
Tooltip is not visible when navigating via keyboard on checkboxes.
Environment