Skip to content

Commit f5d38e2

Browse files
authored
Focusable: Fix handling of visibility: collapse
"collapse" is similar to "hidden", with a slight difference in the case of tr/tbody/td/colgroup elements. See https://www.w3.org/TR/CSS22/visufx.html#visibility See https://www.w3.org/TR/CSS22/tables.html#dynamic-effects See https://developer.mozilla.org/en-US/docs/Web/CSS/visibility#Table_example "visibility: collapse" elements are always not focusable, though. Commit d302596 introduced a regression by testing with `!== "hidden"` instead of `=== "visible"`. Closes jquerygh-1843
1 parent bfffac3 commit f5d38e2

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

tests/unit/core/core.html

+8
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,17 @@
108108

109109
<span tabindex="1" id="displayNone-span" style="display: none;">.</span>
110110
<span tabindex="1" id="visibilityHidden-span" style="visibility: hidden;">.</span>
111+
<span tabindex="1" id="visibilityCollapse-span" style="visibility: collapse;">.</span>
111112

112113
<input id="displayNone-input" style="display: none;">
113114
<input id="visibilityHidden-input" style="visibility: hidden;">
115+
<input id="visibilityCollapse-input" style="visibility: collapse;">
116+
117+
<table>
118+
<tr>
119+
<td tabindex="1" id="visibilityCollapse-td" style="visibility: collapse;">.</td>
120+
</tr>
121+
</table>
114122
</div>
115123

116124
<div>

tests/unit/core/selector.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ QUnit.test( "focusable - disabled elements", function( assert ) {
133133
} );
134134

135135
QUnit.test( "focusable - hidden styles", function( assert ) {
136-
assert.expect( 12 );
136+
assert.expect( 15 );
137137

138138
assert.isNotFocusable( "#displayNoneAncestor-input", "input, display: none parent" );
139139
assert.isNotFocusable( "#displayNoneAncestor-span", "span with tabindex, display: none parent" );
@@ -149,9 +149,13 @@ QUnit.test( "focusable - hidden styles", function( assert ) {
149149

150150
assert.isNotFocusable( "#displayNone-input", "input, display: none" );
151151
assert.isNotFocusable( "#visibilityHidden-input", "input, visibility: hidden" );
152+
assert.isNotFocusable( "#visibilityCollapse-input", "input, visibility: collapse" );
152153

153154
assert.isNotFocusable( "#displayNone-span", "span with tabindex, display: none" );
154155
assert.isNotFocusable( "#visibilityHidden-span", "span with tabindex, visibility: hidden" );
156+
assert.isNotFocusable( "#visibilityCollapse-span", "span with tabindex, visibility: collapse" );
157+
158+
assert.isNotFocusable( "#visibilityCollapse-td", "td with tabindex, visibility: collapse" );
155159
} );
156160

157161
QUnit.test( "focusable - natively focusable with various tabindex", function( assert ) {

ui/focusable.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ function visible( element ) {
7070
element = element.parent();
7171
visibility = element.css( "visibility" );
7272
}
73-
return visibility !== "hidden";
73+
return visibility === "visible";
7474
}
7575

7676
$.extend( $.expr.pseudos, {

0 commit comments

Comments
 (0)