diff --git a/src/theme/book.css b/src/theme/book.css index 355d7603..8c093abb 100644 --- a/src/theme/book.css +++ b/src/theme/book.css @@ -827,3 +827,22 @@ table thead td { word-wrap: break-word /* Internet Explorer 5.5+ */; } } +.tooltiptext { + visibility: hidden; + background-color: #000; + color: #fff; + opacity: 0.8; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; + filter: alpha(opacity=80); + text-align: center; + border-radius: 6px; + padding: 5px 8px; + margin: 5px; + left: -250%; + bottom: 100%; + position: absolute; + z-index: 1000; +} +.tooltipped .tooltiptext { + visibility: visible; +} diff --git a/src/theme/book.js b/src/theme/book.js index 424bac56..20661baa 100644 --- a/src/theme/book.js +++ b/src/theme/book.js @@ -191,15 +191,35 @@ $( document ).ready(function() { buttons = pre_block.find(".buttons"); } buttons.prepend(""); + buttons.prepend(""); buttons.find(".play-button").click(function(e){ run_rust_code(pre_block); }); + buttons.find(".clip-button").mouseout(function(e){ + e.currentTarget.setAttribute('class', 'fa fa-copy clip-button'); + }); }); + var clipboardSnippets = new Clipboard('.clip-button', { + text: function(trigger) { + return trigger.parentElement.parentElement.textContent; + } + }); + clipboardSnippets.on('success', function(e) { + e.clearSelection(); + showTooltip(e, "Copied!"); + }); + clipboardSnippets.on('error', function(e) { + showTooltip(e, "Clipboard error!"); + }); }); +function showTooltip(elem, msg) { + elem.trigger.firstChild.innerText=msg; + elem.trigger.setAttribute('class', 'fa fa-copy tooltipped'); +} function run_rust_code(code_block) { var result_block = code_block.find(".result"); diff --git a/src/theme/index.hbs b/src/theme/index.hbs index b3985fbc..5e5387f4 100644 --- a/src/theme/index.hbs +++ b/src/theme/index.hbs @@ -24,6 +24,9 @@ + + +