From 4e50205364597bd4ff012bc26b8b7dc44920709b Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Sun, 20 Mar 2022 22:53:43 +0100 Subject: [PATCH] Implement iCal url copy button --- aleksis/core/static/js/ical_urls.js | 41 +++++++++++++++++++ .../core/templates/core/ical/ical_list.html | 1 + 2 files changed, 42 insertions(+) create mode 100644 aleksis/core/static/js/ical_urls.js diff --git a/aleksis/core/static/js/ical_urls.js b/aleksis/core/static/js/ical_urls.js new file mode 100644 index 000000000..14f312b3d --- /dev/null +++ b/aleksis/core/static/js/ical_urls.js @@ -0,0 +1,41 @@ +$(".copy-button").click((e) => { + const target = $(e.currentTarget); + const input = $("#" + target.data("target")); + const icon = target.children("svg")[0]; + + if (!Iconify.iconExists("mdi:content-copy")) { + Iconify.loadIcon("mdi:content-copy"); + } + const copy = Iconify.renderSVG("mdi:content-copy"); + copy.classList.add("material-icons"); + + if (!Iconify.iconExists("mdi:check")) { + Iconify.loadIcon("mdi:check"); + } + const check = Iconify.renderSVG("mdi:check"); + check.classList.add("material-icons"); + + console.log(copy); + + if (navigator.clipboard) { + console.log("Copying to clipboard"); + navigator.clipboard.writeText(input.val()).then(r => { + icon.replaceWith(check); + // target.children("svg")[0].classList.add("material-icons"); + setTimeout(() => { + target.children("svg")[0].replaceWith(copy); + // target.children("svg")[0].classList.add("material-icons"); + }, 1000); + }); + } else { + console.log("Clipboard API not supported"); + input.select(); + document.execCommand("copy"); + input.blur(); + icon.replaceWith(check); + // target.children("svg")[0].classList.add("material-icons"); + setTimeout(() => { + icon.innerHTML = copy.body; + }, 1000); + } +}); diff --git a/aleksis/core/templates/core/ical/ical_list.html b/aleksis/core/templates/core/ical/ical_list.html index abd3d9b25..035998f06 100644 --- a/aleksis/core/templates/core/ical/ical_list.html +++ b/aleksis/core/templates/core/ical/ical_list.html @@ -36,4 +36,5 @@ </div> {% endfor %} </div> + <script src="{% static "js/ical_urls.js" %}" type="text/javascript"></script> {% endblock content %} -- GitLab