This commit is contained in:
@@ -9,12 +9,66 @@ export default {
|
||||
// Clear all properties from object without resorting to assigning a new object (o={})
|
||||
// which can be problematic in some cases (IE bugs, watched data items in forms etc)
|
||||
|
||||
removeAllPropertiesFromObject(o) {
|
||||
removeAllPropertiesFromObject: function(o) {
|
||||
for (var variableKey in o) {
|
||||
if (o.hasOwnProperty(variableKey)) {
|
||||
delete o[variableKey];
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Copy a string to clipboard
|
||||
* @param {String} string The string to be copied to clipboard
|
||||
* @return {Boolean} returns a boolean correspondent to the success of the copy operation.
|
||||
* Modified from an example here: https://stackoverflow.com/a/53951634/8939
|
||||
* Basically a fallback if navigator.clipboard is not available
|
||||
*/
|
||||
copyToClipboard: function(string) {
|
||||
let textarea;
|
||||
let result;
|
||||
|
||||
if (navigator && navigator.clipboard) {
|
||||
navigator.clipboard.writeText(string);
|
||||
} else {
|
||||
try {
|
||||
textarea = document.createElement("textarea");
|
||||
textarea.setAttribute("readonly", true);
|
||||
textarea.setAttribute("contenteditable", true);
|
||||
textarea.style.position = "fixed"; // prevent scroll from jumping to the bottom when focus is set.
|
||||
textarea.value = string;
|
||||
|
||||
document.body.appendChild(textarea);
|
||||
|
||||
textarea.focus();
|
||||
textarea.select();
|
||||
|
||||
const range = document.createRange();
|
||||
range.selectNodeContents(textarea);
|
||||
|
||||
const sel = window.getSelection();
|
||||
sel.removeAllRanges();
|
||||
sel.addRange(range);
|
||||
|
||||
textarea.setSelectionRange(0, textarea.value.length);
|
||||
result = document.execCommand("copy");
|
||||
} catch (err) {
|
||||
//console.error(err);
|
||||
result = null;
|
||||
} finally {
|
||||
document.body.removeChild(textarea);
|
||||
}
|
||||
|
||||
// manual copy fallback using prompt
|
||||
if (!result) {
|
||||
const isMac = navigator.platform.toUpperCase().indexOf("MAC") >= 0;
|
||||
const copyHotkey = isMac ? "⌘C" : "CTRL+C";
|
||||
result = prompt(`Press ${copyHotkey}`, string); // eslint-disable-line no-alert
|
||||
if (!result) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//new functions above here
|
||||
|
||||
Reference in New Issue
Block a user