gitlab-org--gitlab-foss/app/assets/javascripts/copy_to_clipboard.js

50 lines
1.4 KiB
JavaScript
Raw Normal View History

/* eslint-disable func-names, space-before-function-paren, one-var, no-var, one-var-declaration-per-line, prefer-template, quotes, no-unused-vars, prefer-arrow-callback, max-len */
/* global Clipboard */
2016-07-24 16:45:11 -04:00
window.Clipboard = require('vendor/clipboard');
2016-07-24 16:45:11 -04:00
(function() {
var genericError, genericSuccess, showTooltip;
genericSuccess = function(e) {
showTooltip(e.trigger, 'Copied');
// Clear the selection and blur the trigger so it loses its border
2016-07-24 16:45:11 -04:00
e.clearSelection();
return $(e.trigger).blur();
};
// Safari doesn't support `execCommand`, so instead we inform the user to
// copy manually.
//
// See http://clipboardjs.com/#browser-support
2016-07-24 16:45:11 -04:00
genericError = function(e) {
var key;
if (/Mac/i.test(navigator.userAgent)) {
key = '⌘'; // Command
2016-07-24 16:45:11 -04:00
} else {
key = 'Ctrl';
}
return showTooltip(e.trigger, "Press " + key + "-C to copy");
};
showTooltip = function(target, title) {
var $target = $(target);
var originalTitle = $target.data('original-title');
$target
.attr('title', 'Copied')
.tooltip('fixTitle')
.tooltip('show')
.attr('title', originalTitle)
.tooltip('fixTitle');
2016-07-24 16:45:11 -04:00
};
$(function() {
var clipboard;
2016-08-02 04:58:09 -04:00
clipboard = new Clipboard('[data-clipboard-target], [data-clipboard-text]');
clipboard.on('success', genericSuccess);
return clipboard.on('error', genericError);
2016-07-24 16:45:11 -04:00
});
}).call(window);