2021-03-05 12:54:27 +00:00
/ * *
* @ file
* Defines a backwards - compatible shim for the jQuery UI : tabbable selector .
* /
( ( $ , Drupal , { isTabbable } ) => {
$ . extend ( $ . expr [ ':' ] , {
tabbable ( element ) {
2021-05-05 11:19:27 +00:00
Drupal . deprecationError ( {
message :
'The :tabbable selector is deprecated in Drupal 9.2.0 and will be removed in Drupal 10.0.0. Use the core/tabbable library instead. See https://www.drupal.org/node/3183730' ,
} ) ;
2021-03-05 12:54:27 +00:00
// The tabbable library considers the summary element tabbable, and also
// considers a details element without a summary tabbable. The jQuery UI
// :tabbable selector does not. This is due to those element types being
// inert in IE/Edge.
// @see https://allyjs.io/data-tables/focusable.html
if ( element . tagName === 'SUMMARY' || element . tagName === 'DETAILS' ) {
const tabIndex = element . getAttribute ( 'tabIndex' ) ;
if ( tabIndex === null || tabIndex < 0 ) {
return false ;
}
}
return isTabbable ( element ) ;
} ,
} ) ;
} ) ( jQuery , Drupal , window . tabbable ) ;