From 7f6548e805d88f2c4fc2efeca2ccf821cc9959a8 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 08:44:25 -0400 Subject: [PATCH] Add code copy button --- templates/css/code-theme.css | 6 +----- templates/js/code_copy.js | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/templates/css/code-theme.css b/templates/css/code-theme.css index 60c0482..ea7ff6b 100644 --- a/templates/css/code-theme.css +++ b/templates/css/code-theme.css @@ -1,7 +1,4 @@ -.content pre button { - position: absolute; - top: 5px; - right: 5px;}.content code .a { +.content code .a { color: #483D8B; } .content code .b { @@ -155,7 +152,6 @@ color: #483D8B; } .content pre { - position: relative; border: 1px solid #999; color: #000000; background-color: #FFFFFF; diff --git a/templates/js/code_copy.js b/templates/js/code_copy.js index 0924191..3373856 100644 --- a/templates/js/code_copy.js +++ b/templates/js/code_copy.js @@ -1,21 +1,21 @@ const copyButtonLabel = "Copy Code"; // use a class selector if available -let blocks = document.querySelectorAll("pre"); +if (navigator.clipboard) { + let blocks = document.querySelectorAll("pre"); -blocks.forEach((block) => { - // only add button if browser supports Clipboard API - if (navigator.clipboard) { - let button = document.createElement("button"); + blocks.forEach((block) => { + // only add button if browser supports Clipboard API + let button = document.createElement("button"); - button.innerText = copyButtonLabel; - block.appendChild(button); + button.innerText = copyButtonLabel; + block.parentNode.insertBefore(button, block); - button.addEventListener("click", async (event) => { - await copyCode(block, event.target); - }); - } -}); + button.addEventListener("click", async (event) => { + await copyCode(block, event.target); + }); + }); +} async function copyCode(block, button) { let code = block.querySelector("code");