qr-code.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import QRious from "https://cdn.skypack.dev/pin/qrious@v4.0.2-vbPhILY2CQRjQ1N29BGh/mode=imports,min/optimized/qrious.js";
  2. // 📙 Package Documentation: https://www.skypack.dev/view/qrious
  3. qrCode("#qr-code")
  4. export default function qrCode(selector) {
  5. if (!document.querySelector(selector)) return
  6. const canvas = document.querySelector(selector)
  7. let qr = new QRious({
  8. element: canvas,
  9. value: window.location.href,
  10. foreground: "hsl(200, 30%, 20%)",
  11. padding: 0,
  12. size: 500,
  13. })
  14. // event listeners
  15. const modal = document.querySelector("#modal-qr")
  16. const openModal = document.querySelector("#show-modal-qr")
  17. const closeModal = document.querySelector("#close-modal-qr")
  18. openModal?.addEventListener("click", (e) => {
  19. if (modal?.open === false)
  20. modal.showModal()
  21. })
  22. closeModal?.addEventListener("click", (e) => {
  23. modal?.close()
  24. })
  25. // close modal when click events happen outside of it
  26. modal?.addEventListener("click", (e) => {
  27. const rect = modal.getBoundingClientRect()
  28. if (
  29. e.clientY < rect.top ||
  30. e.clientY > rect.bottom ||
  31. e.clientX < rect.left ||
  32. e.clientX > rect.right
  33. ) {
  34. modal.close()
  35. }
  36. })
  37. }