29 lines
1.0 KiB
JavaScript
29 lines
1.0 KiB
JavaScript
/**
|
|
* @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);
|