diff --git a/package-lock.json b/package-lock.json index 31db064..dc96c65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1712,6 +1712,15 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "copy-to-clipboard": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.0.8.tgz", + "integrity": "sha512-c3GdeY8qxCHGezVb1EFQfHYK/8NZRemgcTIzPq7PuxjHAf/raKibn2QdhHPb/y6q74PMgH6yizaDZlRmw6QyKw==", + "dev": true, + "requires": { + "toggle-selection": "1.0.6" + } + }, "copy-webpack-plugin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.0.1.tgz", @@ -7260,6 +7269,12 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=", + "dev": true + }, "toposort": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", diff --git a/package.json b/package.json index c718a5c..93183f2 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "babel-register": "^6.22.0", "chalk": "^2.0.1", "connect-history-api-fallback": "^1.3.0", + "copy-to-clipboard": "^3.0.8", "copy-webpack-plugin": "^4.0.1", "css-loader": "^0.28.0", "cssnano": "^3.10.0", diff --git a/site/src/components/file/script.js b/site/src/components/file/script.js index 6346ad0..0e95bcb 100644 --- a/site/src/components/file/script.js +++ b/site/src/components/file/script.js @@ -1,5 +1,6 @@ import Versions from '@/components/versions' import Viewer from '@/components/viewer' +import copyToClipboard from 'copy-to-clipboard' export default { @@ -26,6 +27,11 @@ export default isCode() { return this.content.versions.length > 0 + }, + + version() + { + return this.$store.state.files.currentVersion } }, @@ -33,7 +39,8 @@ export default { return { differencesActive: true, - versionsActive: true + versionsActive: true, + copied: false } }, @@ -52,6 +59,17 @@ export default onVersionsClick() { this.versionsActive = !this.versionsActive + }, + + onCopyClick() + { + copyToClipboard(this.version.content) + this.copied = true + }, + + onCopyMouseleave() + { + this.copied = false } } } \ No newline at end of file diff --git a/site/src/components/file/template.html b/site/src/components/file/template.html index a8dae9c..a15a911 100644 --- a/site/src/components/file/template.html +++ b/site/src/components/file/template.html @@ -3,6 +3,7 @@ Differences (on) Versions (on) Download + {{ this.copied ? 'Copied' : 'Copy' }} {{ content.path.directory }}/{{ content.name }}