diff --git a/src/web/app/common/scripts/copy-to-clipboard.js b/src/web/app/common/scripts/copy-to-clipboard.js new file mode 100644 index 000000000..2e67024c8 --- /dev/null +++ b/src/web/app/common/scripts/copy-to-clipboard.js @@ -0,0 +1,13 @@ +/** + * Clipboardに値をコピー(TODO: 文字列以外も対応) + */ +module.exports = val => { + const form = document.createElement('textarea'); + form.textContent = val; + document.body.appendChild(form); + form.select(); + const result = document.execCommand('copy'); + document.body.removeChild(form); + + return result; +}; diff --git a/src/web/app/desktop/tags/drive/file-contextmenu.tag b/src/web/app/desktop/tags/drive/file-contextmenu.tag index 29f1befc4..17376adb8 100644 --- a/src/web/app/desktop/tags/drive/file-contextmenu.tag +++ b/src/web/app/desktop/tags/drive/file-contextmenu.tag @@ -35,10 +35,13 @@ </ul> </mk-contextmenu> <script> + const copyToClipboard = require('../../../common/scripts/copy-to-clipboard'); + this.mixin('api'); this.mixin('i'); this.mixin('update-avatar'); this.mixin('update-banner'); + this.mixin('dialog'); this.mixin('input-dialog'); this.mixin('NotImplementedException'); @@ -68,7 +71,12 @@ }; this.copyUrl = () => { - this.NotImplementedException(); + copyToClipboard(this.file.url); + this.refs.ctx.close(); + this.dialog('<i class="fa fa-check"></i>コピー完了', + 'ファイルのURLをクリップボードにコピーしました', [{ + text: 'わー' + }]); }; this.download = () => {