mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-05 08:53:14 +00:00
[copy link] improved 'copy link to the clipboard' (#4419)
* copy link to the clipboard, and make it shown as a link when pasted into the seafile markdown editor
This commit is contained in:
45
frontend/src/components/copy-to-clipboard.js
Normal file
45
frontend/src/components/copy-to-clipboard.js
Normal file
@@ -0,0 +1,45 @@
|
||||
import deselectCurrent from 'toggle-selection';
|
||||
|
||||
function copy(text) {
|
||||
let reselectPrevious, range, selection, mark, success = false;
|
||||
try {
|
||||
reselectPrevious = deselectCurrent();
|
||||
|
||||
range = document.createRange();
|
||||
selection = document.getSelection();
|
||||
|
||||
// 'a' is for 'copy a link to seafile markdown editor'
|
||||
mark = document.createElement('a');
|
||||
mark.textContent = text;
|
||||
|
||||
document.body.appendChild(mark);
|
||||
|
||||
range.selectNode(mark);
|
||||
selection.addRange(range);
|
||||
|
||||
const successful = document.execCommand('copy');
|
||||
if (!successful) {
|
||||
//console.log('copy command was unsuccessful');
|
||||
}
|
||||
success = true;
|
||||
} catch (err) {
|
||||
// console.error('unable to copy using execCommand');
|
||||
} finally {
|
||||
if (selection) {
|
||||
if (typeof selection.removeRange == 'function') {
|
||||
selection.removeRange(range);
|
||||
} else {
|
||||
selection.removeAllRanges();
|
||||
}
|
||||
}
|
||||
|
||||
if (mark) {
|
||||
document.body.removeChild(mark);
|
||||
}
|
||||
reselectPrevious();
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
export default copy;
|
Reference in New Issue
Block a user