From 65b76042967afe1c7d092b08e0a3cf571d3dedef Mon Sep 17 00:00:00 2001
From: Blake Gearin <blakegearin@pm.me>
Date: Sun, 10 Apr 2022 08:42:45 +0000
Subject: [PATCH] Add temporary check mark icon on copy to clipboard

---
 assets/js/code.js |   30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/assets/js/code.js b/assets/js/code.js
index fdb10f3..6a66f89 100644
--- a/assets/js/code.js
+++ b/assets/js/code.js
@@ -1,6 +1,6 @@
 const codeActionButtons = [
   {
-    icon: 'copy', 
+    icon: 'copy',
     id: 'copy',
     title: 'Copy Code',
     show: true
@@ -9,7 +9,7 @@
     icon: 'order',
     id: 'lines',
     title: 'Toggle Line Numbers',
-    show: true 
+    show: true
   },
   {
     icon: 'carly',
@@ -21,7 +21,7 @@
     icon: 'expand',
     id: 'expand',
     title: 'Toggle code block expand',
-    show: false 
+    show: false
   }
 ];
 
@@ -175,7 +175,13 @@
 }
 
 function copyCode(codeElement) {
-  lineNumbers = elems('.ln', codeElement);
+  const codeElementClone = codeElement.cloneNode(true);
+  const copyBtn = codeElement.parentNode.parentNode.querySelector(`.${copyId}`);
+  const originalTitle = copyBtn.title;
+  loadSvg('check', copyBtn);
+  copyBtn.title = 'Code Copied';
+
+  lineNumbers = elems('.ln', codeElementClone);
   // remove line numbers before copying
   if(lineNumbers.length) {
     lineNumbers.forEach(function(line){
@@ -183,9 +189,13 @@
     });
   }
 
-  const codeToCopy = codeElement.textContent;
   // copy code
-  copyToClipboard(codeToCopy);
+  copyToClipboard(codeElementClone.textContent);
+
+  setTimeout(function() {
+    copyBtn.title = originalTitle;
+    loadSvg('copy', copyBtn);
+  }, 2250);
 }
 
 function disableCodeLineNumbers(block){
@@ -213,7 +223,7 @@
     const wrapIcon = elem(`.${wrapId}`, panel);
     codeBlockFits(block) ? false : deleteClass(wrapIcon, panelHide);
 
-    // append buttons 
+    // append buttons
     highlightWrapper.appendChild(panel);
   });
 
@@ -264,11 +274,7 @@
         }
       }
 
-      if(isCopyIcon) {
-        // clone code element
-        const codeElementClone = codeElement.cloneNode(true);
-        copyCode(codeElementClone);
-      }
+      if(isCopyIcon) copyCode(codeElement);
     }
   });
 

--
Gitblit v1.10.0