From c8cb286fe70386a2eb1427719345de18ec8c9b07 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 5 Dec 2017 11:37:23 +0100 Subject: [PATCH] clipboard functionality for all guide code snippets --- _config.yml | 1 + _src/_assets/javascripts/page-guides.js | 32 ++++++++++++++++++ _src/_assets/styles/bigchain/_code.scss | 44 +++++++++++++++++++++++++ package.json | 1 + 4 files changed, 78 insertions(+) create mode 100644 _src/_assets/javascripts/page-guides.js diff --git a/_config.yml b/_config.yml index 5ab4abc..685b7bd 100644 --- a/_config.yml +++ b/_config.yml @@ -101,6 +101,7 @@ defaults: values: toc: true image: share-image-guides.png + js: page-guides.min.js # Plugins # -------------------- diff --git a/_src/_assets/javascripts/page-guides.js b/_src/_assets/javascripts/page-guides.js new file mode 100644 index 0000000..af116cf --- /dev/null +++ b/_src/_assets/javascripts/page-guides.js @@ -0,0 +1,32 @@ + +//=include clipboard/dist/clipboard.js + +document.addEventListener('DOMContentLoaded', (event) => { + // Clipboard button + const clipboardImage = '' + const successImage = '' + const clipboardButton = `` + + const codeBlocks = document.querySelectorAll('.highlight') + + codeBlocks.forEach(codeBlock => { + codeBlock.insertAdjacentHTML('afterbegin', clipboardButton) + }) + + const buttons = document.querySelectorAll('.highlight .btn--clipboard') + + buttons.forEach(button => { + const clipboard = new Clipboard(button, { + target: (trigger) => { + return trigger.nextElementSibling; + } + }) + + clipboard.on('success', e => { + e.trigger.classList.add('success') + e.trigger.innerHTML = successImage + e.trigger.insertAdjacentHTML('afterend', 'Copied to clipboard') + e.clearSelection() + }) + }) +}) diff --git a/_src/_assets/styles/bigchain/_code.scss b/_src/_assets/styles/bigchain/_code.scss index e61bce4..4cc9ed1 100644 --- a/_src/_assets/styles/bigchain/_code.scss +++ b/_src/_assets/styles/bigchain/_code.scss @@ -67,3 +67,47 @@ pre { border-radius: 0; } } + +// +// Clipboard button +// +.highlight { + position: relative; + + .btn--clipboard, + .success__text { + position: absolute; + top: .1rem; + right: .1rem; + } + + .success__text { + top: 2rem; + right: -1.5rem; + font-size: $font-size-xs; + } +} + +.btn--clipboard { + padding: 0 $spacer / 2; + box-shadow: none; + background: $brand-main-gray; + color: $brand-main-gray-light; + outline: 0; + + svg { + fill: currentColor; + width: $font-size-sm; + height: $font-size-sm; + } + + &:hover, + &:focus { + transform: none; + background: lighten($brand-main-gray, 5%); + } + + &.success { + background: $brand-success; + } +} diff --git a/package.json b/package.json index 9a63d56..094f792 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ ], "dependencies": { "bigchaindb-driver": "^0.3.0", + "clipboard": "^1.7.1", "gumshoe": "github:cferdinandi/gumshoe", "is-in-viewport": "^3.0.0", "jquery": "^3.2.1",