From c1ba5be45decdfae29f8b3741f763eb0fb7c2f14 Mon Sep 17 00:00:00 2001 From: chenjiahan <chenjiahan@youzan.com> Date: Sun, 4 Apr 2021 08:39:56 +0800 Subject: [PATCH] chore(cli): remove copy-text-to-clipboard --- packages/vant-cli/package.json | 1 - .../desktop/components/DemoPlayground.vue | 29 +++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index 820b631a7..c3312b400 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -64,7 +64,6 @@ "commander": "^6.2.1", "consola": "^2.15.0", "conventional-changelog": "^3.1.24", - "copy-text-to-clipboard": "^3.0.1", "css-loader": "^4.0.0", "eslint": "^7.17.0", "fast-glob": "^3.2.4", diff --git a/packages/vant-cli/site/desktop/components/DemoPlayground.vue b/packages/vant-cli/site/desktop/components/DemoPlayground.vue index 8174a8416..d8b8afbc0 100644 --- a/packages/vant-cli/site/desktop/components/DemoPlayground.vue +++ b/packages/vant-cli/site/desktop/components/DemoPlayground.vue @@ -33,7 +33,32 @@ </template> <script> -import copy from 'copy-text-to-clipboard'; +// from https://30secondsofcode.org +function copyToClipboard(str) { + const el = document.createElement('textarea'); + el.value = str; + el.setAttribute('readonly', ''); + el.style.position = 'absolute'; + el.style.left = '-9999px'; + document.body.appendChild(el); + + const selection = document.getSelection(); + + if (!selection) { + return; + } + + const selected = selection.rangeCount > 0 ? selection.getRangeAt(0) : false; + + el.select(); + document.execCommand('copy'); + document.body.removeChild(el); + + if (selected) { + selection.removeAllRanges(); + selection.addRange(selected); + } +} export default { name: 'DemoPlayground', @@ -56,7 +81,7 @@ export default { this.showSource = !this.showSource; }, copySourceCode() { - copy(unescape(this.originCode)); + copyToClipboard(unescape(this.originCode)); this.copyStatus = 'copied'; setTimeout(() => { this.copyStatus = 'ready';