@@ -25,19 +25,9 @@ function showMain() {
25
25
removeClass ( document . getElementById ( MAIN_ID ) , "hidden" ) ;
26
26
}
27
27
28
- function elemIsInParent ( elem , parent ) {
29
- while ( elem && elem !== document . body ) {
30
- if ( elem === parent ) {
31
- return true ;
32
- }
33
- elem = elem . parentElement ;
34
- }
35
- return false ;
36
- }
37
-
38
28
function blurHandler ( event , parentElem , hideCallback ) {
39
- if ( ! elemIsInParent ( document . activeElement , parentElem ) &&
40
- ! elemIsInParent ( event . relatedTarget , parentElem )
29
+ if ( ! parentElem . contains ( document . activeElement ) &&
30
+ ! parentElem . contains ( event . relatedTarget )
41
31
) {
42
32
hideCallback ( ) ;
43
33
}
@@ -1118,7 +1108,7 @@ function preLoadCss(cssUrl) {
1118
1108
if ( ev . pointerType !== "mouse" ) {
1119
1109
return ;
1120
1110
}
1121
- if ( ! e . TOOLTIP_FORCE_VISIBLE && ! elemIsInParent ( ev . relatedTarget , e ) ) {
1111
+ if ( ! e . TOOLTIP_FORCE_VISIBLE && ! e . contains ( ev . relatedTarget ) ) {
1122
1112
// See "Tooltip pointer leave gesture" below.
1123
1113
setTooltipHoverTimeout ( e , false ) ;
1124
1114
addClass ( wrapper , "fade-out" ) ;
@@ -1178,10 +1168,10 @@ function preLoadCss(cssUrl) {
1178
1168
1179
1169
function tooltipBlurHandler ( event ) {
1180
1170
if ( window . CURRENT_TOOLTIP_ELEMENT &&
1181
- ! elemIsInParent ( document . activeElement , window . CURRENT_TOOLTIP_ELEMENT ) &&
1182
- ! elemIsInParent ( event . relatedTarget , window . CURRENT_TOOLTIP_ELEMENT ) &&
1183
- ! elemIsInParent ( document . activeElement , window . CURRENT_TOOLTIP_ELEMENT . TOOLTIP_BASE ) &&
1184
- ! elemIsInParent ( event . relatedTarget , window . CURRENT_TOOLTIP_ELEMENT . TOOLTIP_BASE )
1171
+ ! window . CURRENT_TOOLTIP_ELEMENT . contains ( document . activeElement ) &&
1172
+ ! window . CURRENT_TOOLTIP_ELEMENT . contains ( event . relatedTarget ) &&
1173
+ ! window . CURRENT_TOOLTIP_ELEMENT . TOOLTIP_BASE . contains ( document . activeElement ) &&
1174
+ ! window . CURRENT_TOOLTIP_ELEMENT . TOOLTIP_BASE . contains ( event . relatedTarget )
1185
1175
) {
1186
1176
// Work around a difference in the focus behaviour between Firefox, Chrome, and Safari.
1187
1177
// When I click the button on an already-opened tooltip popover, Safari
@@ -1248,8 +1238,8 @@ function preLoadCss(cssUrl) {
1248
1238
if ( ev . pointerType !== "mouse" ) {
1249
1239
return ;
1250
1240
}
1251
- if ( ! e . TOOLTIP_FORCE_VISIBLE &&
1252
- ! elemIsInParent ( ev . relatedTarget , window . CURRENT_TOOLTIP_ELEMENT ) ) {
1241
+ if ( ! e . TOOLTIP_FORCE_VISIBLE && window . CURRENT_TOOLTIP_ELEMENT &&
1242
+ ! window . CURRENT_TOOLTIP_ELEMENT . contains ( ev . relatedTarget ) ) {
1253
1243
// Tooltip pointer leave gesture:
1254
1244
//
1255
1245
// Designing a good hover microinteraction is a matter of guessing user
0 commit comments