0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-11-29 11:24:18 +01:00

Make "Copy" buttons actual buttons

This makes them keyboard-accessible. For mouse users, the only change
here is that the focus outline will remain on the button once clicked
(in future, this can be solved with :focus-ring, but for now this would
require a polyfill). the tooltip is explicitly hidden on `mouseleave`,
so even though the `<button>` retains focus after clicking, the tooltip
won't stay visible once mouse user moves away.
the mouse hover styles have explicitly not been make to also apply to
:focus, so as to minimise the visual impact for
mouse users (though the tooltip remains visible)
 - but due to the default outline and the custom tooltip, it
should be fairly clear when keyboard users set focus to a copy button
too.
This commit is contained in:
Patrick H. Lauke 2017-04-14 20:13:46 +01:00 committed by Mark Otto
parent bc0cf36dc8
commit ea1d69c64b
2 changed files with 10 additions and 2 deletions

View File

@ -55,9 +55,16 @@
// Insert copy to clipboard button before .highlight // Insert copy to clipboard button before .highlight
$('.highlight').each(function () { $('.highlight').each(function () {
var btnHtml = '<div class="bd-clipboard"><span class="btn-clipboard" title="Copy to clipboard">Copy</span></div>' var btnHtml = '<div class="bd-clipboard"><button class="btn-clipboard" title="Copy to clipboard">Copy</button></div>'
$(this).before(btnHtml) $(this).before(btnHtml)
$('.btn-clipboard').tooltip() $('.btn-clipboard')
.tooltip()
.on('mouseleave', function () {
// explicitly hide tooltip, since after clicking it remains
// focused (as it's a button), so tooltip would otherwise
// remain visible until focus is moved away
$(this).tooltip('hide')
})
}) })
var clipboard = new Clipboard('.btn-clipboard', { var clipboard = new Clipboard('.btn-clipboard', {

View File

@ -23,6 +23,7 @@
color: #818a91; color: #818a91;
cursor: pointer; cursor: pointer;
background-color: transparent; background-color: transparent;
border: 0;
border-radius: .25rem; border-radius: .25rem;
&:hover { &:hover {