aboutsummaryrefslogtreecommitdiff
path: root/documentation/themes
diff options
context:
space:
mode:
authorSergio Carlavilla Delgado <carlavilla@FreeBSD.org>2022-04-10 10:17:26 +0000
committerSergio Carlavilla Delgado <carlavilla@FreeBSD.org>2022-04-10 10:19:44 +0000
commit0188b57bf9aa69736f1ce710fa798c208940cb9d (patch)
tree190e8c09f2751c6da89a51170159bf528415f4b2 /documentation/themes
parent0be19f353d8949e5c8cde5e5d60cb139baaae38d (diff)
downloaddoc-0188b57bf9aa69736f1ce710fa798c208940cb9d.tar.gz
doc-0188b57bf9aa69736f1ce710fa798c208940cb9d.zip
Diffstat (limited to 'documentation/themes')
-rw-r--r--documentation/themes/beastie/assets/js/copy-clipboard.js66
-rw-r--r--documentation/themes/beastie/assets/styles/global.scss56
-rw-r--r--documentation/themes/beastie/assets/styles/variables.scss3
-rw-r--r--documentation/themes/beastie/layouts/partials/site-head.html6
4 files changed, 131 insertions, 0 deletions
diff --git a/documentation/themes/beastie/assets/js/copy-clipboard.js b/documentation/themes/beastie/assets/js/copy-clipboard.js
new file mode 100644
index 0000000000..4b11058422
--- /dev/null
+++ b/documentation/themes/beastie/assets/js/copy-clipboard.js
@@ -0,0 +1,66 @@
+/*
+BSD 2-Clause License
+
+Copyright (c) 2001-2022, The FreeBSD Documentation Project
+Copyright (c) 2021-2022, Sergio Carlavilla
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+(function () {
+ document.querySelectorAll(".rouge, .highlight").forEach(function(codeItem) {
+ var sourceCode = codeItem.textContent;
+
+ var icon = document.createElement("i");
+ icon.className = "fa fa-clipboard";
+
+ var tooltip = document.createElement("span");
+ tooltip.className = "tooltip";
+ tooltip.innerHTML = "Copied!";
+
+ var button = document.createElement("button");
+ button.title = "Copy to clipboard";
+ button.appendChild(icon);
+ button.appendChild(tooltip);
+
+ var clipboardWrapper = document.createElement("div");
+ clipboardWrapper.className = "copy-to-clipboard-wrapper";
+ clipboardWrapper.appendChild(button);
+
+ codeItem.appendChild(clipboardWrapper);
+
+ button.addEventListener('click', copyToClipboard.bind(button, sourceCode));
+ });
+})();
+
+function copyToClipboard(text, item) {
+ const tooltip = item.target.nextElementSibling;
+ window.navigator.clipboard.writeText(text).then(function() {
+ if (tooltip) {
+ tooltip.classList.add("show-tooltip");
+ setTimeout(function(){
+ tooltip.classList.remove("show-tooltip");
+ }, 1200);
+ }
+ });
+}
diff --git a/documentation/themes/beastie/assets/styles/global.scss b/documentation/themes/beastie/assets/styles/global.scss
index 9873fbc46e..e2172bbcf9 100644
--- a/documentation/themes/beastie/assets/styles/global.scss
+++ b/documentation/themes/beastie/assets/styles/global.scss
@@ -688,6 +688,12 @@ table.stretch {
.listingblock {
margin: .75em 0;
+ position: relative;
+}
+
+.highlight {
+ padding-top: 1.5rem;
+ padding-bottom: 1.5rem;
}
code {
@@ -738,3 +744,53 @@ kbd {
color: var(--global-font-color);
}
}
+
+.copy-to-clipboard-wrapper {
+ position: absolute;
+ margin: 0;
+ padding: .50rem;
+ right: .5rem;
+ top: 0rem;
+
+ button {
+ display: flex;
+ flex-direction: column;
+ border: none;
+ cursor: pointer;
+ align-items: center;
+ width: 1rem;
+ height: 1rem;
+ background: none;
+
+ &:focus {
+ outline: none;
+ }
+
+ i {
+ color: var(--white);
+ }
+ }
+
+ .tooltip {
+ visibility: hidden;
+ opacity: 0;
+ justify-content: center;
+ margin-top: 1em;
+ background-color: var(--copy-clipboard-tooltip-background-color);
+ border-radius: .25em;
+ padding: .5em;
+ color: var(--white);
+ z-index: 999;
+
+ &:focus {
+ outline: none;
+ }
+ }
+
+ .show-tooltip {
+ visibility: visible;
+ opacity: 1;
+ transition: visibility 0s easy 0s;
+ }
+
+}
diff --git a/documentation/themes/beastie/assets/styles/variables.scss b/documentation/themes/beastie/assets/styles/variables.scss
index adb22109e1..48a87f7c14 100644
--- a/documentation/themes/beastie/assets/styles/variables.scss
+++ b/documentation/themes/beastie/assets/styles/variables.scss
@@ -60,6 +60,7 @@
--links-color: #0645AD;
--pre-background-color: #F4F4F4;
--pre-font-color: #444;
+ --copy-clipboard-tooltip-background-color: #43453B;
--admonition-font-color: #444;
--admonition-links-color: #0645AD;
@@ -95,6 +96,7 @@
--links-color: #BAD7FF;
--pre-background-color: #272727;
--pre-font-color: #EEEFF1;
+ --copy-clipboard-tooltip-background-color: #43453B;
--admonition-font-color: #444;
--admonition-links-color: #1A79FF;
@@ -130,6 +132,7 @@
--links-color: #9F0E0F;
--pre-background-color: #FFF;
--pre-font-color: #000;
+ --copy-clipboard-tooltip-background-color: #43453B;
--admonition-font-color: #000;
--admonition-note-color: #19407C;
diff --git a/documentation/themes/beastie/layouts/partials/site-head.html b/documentation/themes/beastie/layouts/partials/site-head.html
index 781ad79c12..e20572e820 100644
--- a/documentation/themes/beastie/layouts/partials/site-head.html
+++ b/documentation/themes/beastie/layouts/partials/site-head.html
@@ -20,6 +20,9 @@
{{- $themeChooser := resources.Get "js/theme-chooser.js" | resources.Minify }}
<script defer src="{{ $themeChooser.RelPermalink }}"></script>
+
+ {{- $copyClipboard := resources.Get "js/copy-clipboard.js" | resources.Minify }}
+ <script defer src="{{ $copyClipboard.RelPermalink }}"></script>
{{ else }}
<link rel="shortcut icon" href="/favicon.ico">
@@ -29,6 +32,9 @@
{{- $themeChooser := resources.Get "js/theme-chooser.js" | resources.Minify }}
<script defer src="{{ $themeChooser.RelPermalink }}"></script>
+
+ {{- $copyClipboard := resources.Get "js/copy-clipboard.js" | resources.Minify }}
+ <script defer src="{{ $copyClipboard.RelPermalink }}"></script>
{{ end }}
<!-- SEO -->