1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-06 17:33:18 +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:
llj
2020-02-03 16:43:49 +08:00
committed by GitHub
parent 94a15a6920
commit a8ba12e6fd
6 changed files with 52 additions and 6 deletions

View 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;

View File

@@ -2,10 +2,11 @@ import React from 'react';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
import PropTypes from 'prop-types';
import toaster from '../toast';
import copy from '@seafile/seafile-editor/dist/utils/copy-to-clipboard';
import copy from '../copy-to-clipboard';
import { gettext } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils';
import '../../css/internal-link.css';
const propTypes = {

View File

@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { Button } from 'reactstrap';
import toaster from '../toast';
import copy from '@seafile/seafile-editor/dist/utils/copy-to-clipboard';
import copy from '../copy-to-clipboard';
import { gettext } from '../../utils/constants';
import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils';

View File

@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
import { gettext } from '../../utils/constants';
import toaster from '../toast';
import copy from '@seafile/seafile-editor/dist//utils/copy-to-clipboard';
import copy from '../copy-to-clipboard';
const propTypes = {
toggle: PropTypes.func.isRequired,

View File

@@ -1,7 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Modal, ModalHeader, ModalBody, ModalFooter, Button } from 'reactstrap';
import copy from '@seafile/seafile-editor/dist//utils/copy-to-clipboard';
import copy from '../copy-to-clipboard';
import { gettext } from '../../utils/constants';
import toaster from '../../components/toast';

View File

@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
import toaster from '../toast';
import copy from '@seafile/seafile-editor/dist/utils/copy-to-clipboard';
import copy from '../copy-to-clipboard';
import { gettext } from '../../utils/constants';
const propTypes = {