2021-03-05 12:54:27 +00:00
/ * *
2022-09-09 06:26:42 +00:00
* @ file
* Defines a backwards - compatible shim for the jQuery UI : tabbable selector .
* /
2021-03-05 12:54:27 +00:00
2022-09-09 06:26:42 +00:00
( ( $ , Drupal , { isTabbable } ) => {
2021-03-05 12:54:27 +00:00
$ . extend ( $ . expr [ ':' ] , {
2021-12-18 06:12:16 +00:00
tabbable ( element ) {
2021-05-05 11:19:27 +00:00
Drupal . deprecationError ( {
2022-09-09 06:26:42 +00:00
message :
'The :tabbable selector is deprecated in Drupal 9.2.0 and will be removed in Drupal 11.0.0. Use the core/tabbable library instead. See https://www.drupal.org/node/3183730' ,
2021-05-05 11:19:27 +00:00
} ) ;
2022-09-09 06:26:42 +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
2021-03-05 12:54:27 +00:00
if ( element . tagName === 'SUMMARY' || element . tagName === 'DETAILS' ) {
2021-12-18 06:12:16 +00:00
const tabIndex = element . getAttribute ( 'tabIndex' ) ;
2021-03-05 12:54:27 +00:00
if ( tabIndex === null || tabIndex < 0 ) {
return false ;
}
}
return isTabbable ( element ) ;
2022-09-09 06:26:42 +00:00
} ,
2021-03-05 12:54:27 +00:00
} ) ;
2022-09-09 06:26:42 +00:00
} ) ( jQuery , Drupal , window . tabbable ) ;