ng-implementation/my-workspace/projects/sae-lib/buttons/copy/copy.ts

54 lines
1.3 KiB
TypeScript

import {Component, Input} from '@angular/core';
@Component({
selector: 'app-copy',
imports: [],
templateUrl: './copy.html',
styleUrl: './copy.scss'
})
export class Copy {
@Input() textToCopy = "";
copy() {
this.copyTextToClipboard(this.textToCopy)
}
fallbackCopyTextToClipboard(text: any) {
var textArea = document.createElement("textarea");
textArea.value = text;
// Avoid scrolling to bottom
textArea.style.top = "0";
textArea.style.left = "0";
textArea.style.position = "fixed";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Fallback: Copying text command was ' + msg);
} catch (err) {
console.error('Fallback: Oops, unable to copy', err);
}
document.body.removeChild(textArea);
}
copyTextToClipboard(text: string) {
console.log("copier", text)
if (!navigator.clipboard) {
this.fallbackCopyTextToClipboard(text);
return;
}
navigator.clipboard.writeText(text).then(function () {
console.log('Async: Copying to clipboard was successful!');
}, function (err) {
console.error('Async: Could not copy text: ', err);
});
}
}