ui: Add all tooltips to the default tabbing order in the page (#9888)

* ui: Add all tooltips to the default tabbing order in the page

This amends our tooltip modifier to automatically add a tabindex="0" to
all of our tooltips (if they aren't tabbable already).

This means that all tooltips will automatically be
added to the natural tab order of the page. I'm pretty sure we don't
currently require the ability to disable this automatic functionality
but if we do at some point in the future we can add an option to disable
it, meaning all tooltips will be tabbable by default.
pull/9901/head
John Cowen 4 years ago committed by GitHub
parent 1c13aa23f1
commit 8dc590cf11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -46,6 +46,11 @@ export default modifier(($element, [content], hash = {}) => {
} }
} }
let $trigger = $anchor; let $trigger = $anchor;
let needsTabIndex = false;
if (!$trigger.hasAttribute('tabindex')) {
needsTabIndex = true;
$trigger.setAttribute('tabindex', '0');
}
const tooltip = tippy($anchor, { const tooltip = tippy($anchor, {
theme: 'tooltip', theme: 'tooltip',
triggerTarget: $trigger, triggerTarget: $trigger,
@ -59,6 +64,9 @@ export default modifier(($element, [content], hash = {}) => {
}); });
return () => { return () => {
if (needsTabIndex) {
$trigger.removeAttribute('tabindex');
}
clearInterval(interval); clearInterval(interval);
tooltip.destroy(); tooltip.destroy();
}; };

@ -1,6 +1,6 @@
# tooltip # tooltip
Our tooltip modifier is a thin wrapper around the excellent `tippy.js`. The Consul UIs tooltip modifier is a thin wrapper around the excellent `tippy.js`. The
most common usage will be something like the below: most common usage will be something like the below:
```hbs preview-template ```hbs preview-template
@ -11,6 +11,8 @@ most common usage will be something like the below:
</span> </span>
``` ```
A `tabindex=0` is automatically added to the element that triggers the tooltip if it doesn't have one already to make sure the tooltip is in the natural tabbing order of the document.
An additional options hash can be passed into the tooltip the contents of An additional options hash can be passed into the tooltip the contents of
which are passed along to `tippy.js` [so all of the `tippy.js` which are passed along to `tippy.js` [so all of the `tippy.js`
props](https://atomiks.github.io/tippyjs/v5/all-props/) can be used to control props](https://atomiks.github.io/tippyjs/v5/all-props/) can be used to control

Loading…
Cancel
Save