Skip to content
Snippets Groups Projects
clipboard.js 2.68 KiB
const $ = window.jQuery = require('jquery');
const ClipboardJS = require('clipboard');

function clearTooltip(e) {
  e.currentTarget.setAttribute('class', 'copy-button');
  e.currentTarget.removeAttribute('aria-label');
}

function showTooltip(elem, msg) {
  elem.setAttribute('class', 'copy-button tooltipped tooltipped-s');
  elem.setAttribute('aria-label', msg);
}

function fallbackMessage(action) {
  let actionMsg = '';
  const actionKey = (action === 'cut' ? 'X' : 'C');
  if (/iPhone|iPad/i.test(navigator.userAgent)) {
    actionMsg = 'No support :(';
  } else if (/Mac/i.test(navigator.userAgent)) {
    actionMsg = `Press ⌘-${actionKey} to ${action}`;
  } else {
    actionMsg = `Press Ctrl-${actionKey} to ${action}`;
  }
  return actionMsg;
}

$(document).ready(() => {
  const clipboardBtn = new ClipboardJS('.copy-button');
  clipboardBtn.on('success', (e) => {
    e.clearSelection();
    // console.info('Action:', e.action);
    // console.info('Text:', e.text);
    // console.info('Trigger:', e.trigger);
    showTooltip(e.trigger, 'Copied!');
  });
  clipboardBtn.on('error', (e) => {
    // console.error('Action:', e.action);
    // console.error('Trigger:', e.trigger);
    showTooltip(e.trigger, fallbackMessage(e.action));
  });

  const btns = document.querySelectorAll('.copy-button');
  for (let i = 0; i < btns.length; i++) {
    btns[i].addEventListener('mouseleave', clearTooltip);
    btns[i].addEventListener('blur', clearTooltip);
  }

  // var clipboardDemos = new ClipboardJS('[data-clipboard-demo]');
  // clipboardDemos.on('success', function (e) {
  //   e.clearSelection();
  //   console.info('Action:', e.action);
  //   console.info('Text:', e.text);
  //   console.info('Trigger:', e.trigger);
  //   showTooltip(e.trigger, 'Copied!');
  // });
  // clipboardDemos.on('error', function (e) {
  //   console.error('Action:', e.action);
  //   console.error('Trigger:', e.trigger);
  //   showTooltip(e.trigger, fallbackMessage(e.action));
  // });

  // var snippets = document.querySelectorAll('.snippet');
  // [].forEach.call(snippets, function (snippet) {
  //   snippet.firstChild.insertAdjacentHTML('beforebegin', '<button class="btn" data-clipboard-snippet><img class="clippy" width="13" src="assets/images/clippy.svg" alt="Copy to clipboard"></button>');
  // });
  // var clipboardSnippets = new ClipboardJS('[data-clipboard-snippet]', {
  //   target: function (trigger) {
  //     return trigger.nextElementSibling;
  //   }
  // });
  // clipboardSnippets.on('success', function (e) {
  //   e.clearSelection();
  //   showTooltip(e.trigger, 'Copied!');
  // });
  // clipboardSnippets.on('error', function (e) {
  //   showTooltip(e.trigger, fallbackMessage(e.action));
  // });
});