aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Capron <PaulCapron@users.noreply.github.com>2020-10-14 23:53:11 +0200
committerGitHub <noreply@github.com>2020-10-14 23:53:11 +0200
commitf5d38e2e05bd54073c2bf8e8210b78b2cf2637d8 (patch)
treeefe42c8dd3eadcb40d3ecea73e4a068c9b91c802
parentbfffac3fd5e3d5ce43070f9437d43005fc5eaeb2 (diff)
downloadjquery-ui-f5d38e2e05bd54073c2bf8e8210b78b2cf2637d8.tar.gz
jquery-ui-f5d38e2e05bd54073c2bf8e8210b78b2cf2637d8.zip
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 d3025968f34 introduced a regression by testing with `!== "hidden"` instead of `=== "visible"`. Closes gh-1843
-rw-r--r--tests/unit/core/core.html8
-rw-r--r--tests/unit/core/selector.js6
-rw-r--r--ui/focusable.js2
3 files changed, 14 insertions, 2 deletions
diff --git a/tests/unit/core/core.html b/tests/unit/core/core.html
index 31a5bb579..7434a1e1f 100644
--- a/tests/unit/core/core.html
+++ b/tests/unit/core/core.html
@@ -108,9 +108,17 @@
<span tabindex="1" id="displayNone-span" style="display: none;">.</span>
<span tabindex="1" id="visibilityHidden-span" style="visibility: hidden;">.</span>
+ <span tabindex="1" id="visibilityCollapse-span" style="visibility: collapse;">.</span>
<input id="displayNone-input" style="display: none;">
<input id="visibilityHidden-input" style="visibility: hidden;">
+ <input id="visibilityCollapse-input" style="visibility: collapse;">
+
+ <table>
+ <tr>
+ <td tabindex="1" id="visibilityCollapse-td" style="visibility: collapse;">.</td>
+ </tr>
+ </table>
</div>
<div>
diff --git a/tests/unit/core/selector.js b/tests/unit/core/selector.js
index f8b9f20c3..6d867f634 100644
--- a/tests/unit/core/selector.js
+++ b/tests/unit/core/selector.js
@@ -133,7 +133,7 @@ QUnit.test( "focusable - disabled elements", function( assert ) {
} );
QUnit.test( "focusable - hidden styles", function( assert ) {
- assert.expect( 12 );
+ assert.expect( 15 );
assert.isNotFocusable( "#displayNoneAncestor-input", "input, display: none parent" );
assert.isNotFocusable( "#displayNoneAncestor-span", "span with tabindex, display: none parent" );
@@ -149,9 +149,13 @@ QUnit.test( "focusable - hidden styles", function( assert ) {
assert.isNotFocusable( "#displayNone-input", "input, display: none" );
assert.isNotFocusable( "#visibilityHidden-input", "input, visibility: hidden" );
+ assert.isNotFocusable( "#visibilityCollapse-input", "input, visibility: collapse" );
assert.isNotFocusable( "#displayNone-span", "span with tabindex, display: none" );
assert.isNotFocusable( "#visibilityHidden-span", "span with tabindex, visibility: hidden" );
+ assert.isNotFocusable( "#visibilityCollapse-span", "span with tabindex, visibility: collapse" );
+
+ assert.isNotFocusable( "#visibilityCollapse-td", "td with tabindex, visibility: collapse" );
} );
QUnit.test( "focusable - natively focusable with various tabindex", function( assert ) {
diff --git a/ui/focusable.js b/ui/focusable.js
index b1a7b61e2..433474fcd 100644
--- a/ui/focusable.js
+++ b/ui/focusable.js
@@ -70,7 +70,7 @@ function visible( element ) {
element = element.parent();
visibility = element.css( "visibility" );
}
- return visibility !== "hidden";
+ return visibility === "visible";
}
$.extend( $.expr.pseudos, {