/**
* @file
* Defines a backwards-compatible shim for the jQuery UI :tabbable selector.
*/
(($, Drupal, { isTabbable }) => {
$.extend($.expr[':'], {
tabbable(element) {
Drupal.deprecationError({
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',
});
// 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);