Replace ZeroClipboard with clipboard.js. Fixes #32.
This commit is contained in:
50
public/js/app.js
Normal file
50
public/js/app.js
Normal file
@@ -0,0 +1,50 @@
|
||||
function filterNodeListById( nodeList, id ) {
|
||||
|
||||
var elements = Array.prototype.slice.call( nodeList );
|
||||
|
||||
for (var i = elements.length - 1; i >= 0; i--) {
|
||||
if( elements[i].id == id ) {
|
||||
return elements[i];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Clipboard.js
|
||||
if( document.querySelectorAll( '.copy-button' ).length > 0 ) {
|
||||
|
||||
var clipboard = new Clipboard( '.copy-button' );
|
||||
var clipboardTimeout = 2000;
|
||||
|
||||
clipboard.on( 'success', function( event ) {
|
||||
var errorElement = filterNodeListById( event.trigger.parentNode.childNodes, 'copy-success' );
|
||||
|
||||
errorElement.className += " visible";
|
||||
|
||||
window.setTimeout( function() {
|
||||
errorElement.className = errorElement.className.replace(/\bvisible\b/,'');
|
||||
}, clipboardTimeout );
|
||||
} );
|
||||
|
||||
clipboard.on( 'error', function( event ) {
|
||||
var errorElement = filterNodeListById( event.trigger.parentNode.childNodes, 'copy-error' );
|
||||
var osClass;
|
||||
|
||||
if( /iPhone|iPad/i.test(navigator.userAgent) ) {
|
||||
osClass = 'mobile';
|
||||
} else if ( /Mac/i.test(navigator.userAgent) ) {
|
||||
osClass = 'macos';
|
||||
} else if ( /Windows/i.test(navigator.userAgent) || /X11/i.test(navigator.userAgent) ) {
|
||||
osClass = 'pc';
|
||||
} else {
|
||||
osClass = 'other';
|
||||
}
|
||||
|
||||
errorElement.className += " visible " + osClass;
|
||||
|
||||
window.setTimeout( function() {
|
||||
errorElement.className = errorElement.className.replace(/\bvisible\b/,'');
|
||||
}, clipboardTimeout );
|
||||
} );
|
||||
|
||||
}
|
||||
7
public/js/clipboard.min.js
vendored
Executable file
7
public/js/clipboard.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user