Fix copy-to-clipboard for Vue 3.

This commit is contained in:
Buster Neece 2022-12-12 12:39:00 -06:00
parent 2fdc52691e
commit 79df3bb8b4
No known key found for this signature in database
GPG Key ID: F1D2E64A0005E80E
7 changed files with 62 additions and 44 deletions

View File

@ -64,9 +64,9 @@
"sweetalert2": "11.4.8", "sweetalert2": "11.4.8",
"vue": "^3.2", "vue": "^3.2",
"vue-axios": "^3.5", "vue-axios": "^3.5",
"vue-clipboard2": "^0.3.3",
"vue-loader": "^17", "vue-loader": "^17",
"vue-style-loader": "^4.1.3", "vue-style-loader": "^4.1.3",
"vue3-clipboard": "^1.0.0",
"vue3-daterange-picker": "^1", "vue3-daterange-picker": "^1",
"vue3-gettext": "^2.3.4", "vue3-gettext": "^2.3.4",
"vuedraggable": "^2.24.1", "vuedraggable": "^2.24.1",
@ -10031,14 +10031,6 @@
"vue": "^3.0.0 || ^2.0.0" "vue": "^3.0.0 || ^2.0.0"
} }
}, },
"node_modules/vue-clipboard2": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
"integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==",
"dependencies": {
"clipboard": "^2.0.0"
}
},
"node_modules/vue-functional-data-merge": { "node_modules/vue-functional-data-merge": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz",
@ -10167,6 +10159,17 @@
"node": ">=4.0.0" "node": ">=4.0.0"
} }
}, },
"node_modules/vue3-clipboard": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/vue3-clipboard/-/vue3-clipboard-1.0.0.tgz",
"integrity": "sha512-GUqKh1oO79xDpq0z+cCv/NDVTpcJGNDzeNgT3PmTdTp/WJh3gcTrDqIYKycKhzMFOtIFJ7hO/+usgyWtT+fNhA==",
"dependencies": {
"clipboard": "^2.0.6"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/vue3-daterange-picker": { "node_modules/vue3-daterange-picker": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/vue3-daterange-picker/-/vue3-daterange-picker-1.0.1.tgz", "resolved": "https://registry.npmjs.org/vue3-daterange-picker/-/vue3-daterange-picker-1.0.1.tgz",
@ -18152,14 +18155,6 @@
"integrity": "sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g==", "integrity": "sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g==",
"requires": {} "requires": {}
}, },
"vue-clipboard2": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
"integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==",
"requires": {
"clipboard": "^2.0.0"
}
},
"vue-functional-data-merge": { "vue-functional-data-merge": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz",
@ -18254,6 +18249,14 @@
} }
} }
}, },
"vue3-clipboard": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/vue3-clipboard/-/vue3-clipboard-1.0.0.tgz",
"integrity": "sha512-GUqKh1oO79xDpq0z+cCv/NDVTpcJGNDzeNgT3PmTdTp/WJh3gcTrDqIYKycKhzMFOtIFJ7hO/+usgyWtT+fNhA==",
"requires": {
"clipboard": "^2.0.6"
}
},
"vue3-daterange-picker": { "vue3-daterange-picker": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/vue3-daterange-picker/-/vue3-daterange-picker-1.0.1.tgz", "resolved": "https://registry.npmjs.org/vue3-daterange-picker/-/vue3-daterange-picker-1.0.1.tgz",

View File

@ -65,9 +65,9 @@
"sweetalert2": "11.4.8", "sweetalert2": "11.4.8",
"vue": "^3.2", "vue": "^3.2",
"vue-axios": "^3.5", "vue-axios": "^3.5",
"vue-clipboard2": "^0.3.3",
"vue-loader": "^17", "vue-loader": "^17",
"vue-style-loader": "^4.1.3", "vue-style-loader": "^4.1.3",
"vue3-clipboard": "^1.0.0",
"vue3-daterange-picker": "^1", "vue3-daterange-picker": "^1",
"vue3-gettext": "^2.3.4", "vue3-gettext": "^2.3.4",
"vuedraggable": "^2.24.1", "vuedraggable": "^2.24.1",

View File

@ -5,6 +5,7 @@ import gettext from './vendor/gettext';
import {createApp} from "vue"; import {createApp} from "vue";
import useBootstrapVue from "./vendor/bootstrapVue"; import useBootstrapVue from "./vendor/bootstrapVue";
import useSweetAlert from "./vendor/sweetalert"; import useSweetAlert from "./vendor/sweetalert";
import useVueClipboard from "~/vendor/clipboard";
export default function (component, options) { export default function (component, options) {
return function (el, props) { return function (el, props) {
@ -80,6 +81,9 @@ export default function (component, options) {
/* SweetAlert */ /* SweetAlert */
useSweetAlert(vueApp); useSweetAlert(vueApp);
/* Clipboard */
useVueClipboard(vueApp);
vueApp.mount(el); vueApp.mount(el);
}; };
} }

View File

@ -5,29 +5,22 @@
</button> </button>
</template> </template>
<script> <script setup>
import '~/vendor/clipboard.js'; import Icon from "~/components/Common/Icon.vue";
import Icon from './Icon'; import {copyToClipboard} from "~/vendor/clipboard";
export default { const props = defineProps({
components: { Icon }, text: {
props: { type: String,
text: { required: true,
type: String,
required: true,
},
hideText: {
type: Boolean,
default: false
}
}, },
methods: { hideText: {
doCopy() { type: Boolean,
this.$copyText(this.text).then(function (e) { default: false
}, function (e) {
console.error(e);
})
}
} }
});
const doCopy = () => {
copyToClipboard(props.text);
}; };
</script> </script>

View File

@ -16,6 +16,7 @@
<script> <script>
import '~/vendor/clipboard.js'; import '~/vendor/clipboard.js';
import StreamingLogView from "~/components/Common/StreamingLogView"; import StreamingLogView from "~/components/Common/StreamingLogView";
import {copyToClipboard} from "~/vendor/clipboard";
export default { export default {
name: 'StreamingLogModal', name: 'StreamingLogModal',
@ -36,7 +37,7 @@ export default {
this.$refs.modal.show(); this.$refs.modal.show();
}, },
doCopy() { doCopy() {
this.$copyText(this.$refs.logView.getContents()); copyToClipboard(this.$refs.logView.getContents());
}, },
close() { close() {
this.$refs.modal.hide(); this.$refs.modal.hide();

View File

@ -15,6 +15,7 @@
<script> <script>
import '~/vendor/clipboard.js'; import '~/vendor/clipboard.js';
import {copyToClipboard} from "~/vendor/clipboard";
export default { export default {
name: 'QueueLogsModal', name: 'QueueLogsModal',
@ -39,7 +40,7 @@ export default {
this.$refs.modal.show(); this.$refs.modal.show();
}, },
doCopy() { doCopy() {
this.$copyText(this.logs); copyToClipboard(this.logs);
}, },
close() { close() {
this.$refs.modal.hide(); this.$refs.modal.hide();

View File

@ -1,7 +1,23 @@
import VueClipboard from 'vue-clipboard2'; import VueClipboard, {copyText} from 'vue3-clipboard';
VueClipboard.config.autoSetContainer = true; export function copyToClipboard(text) {
copyText(
text,
undefined,
(error) => {
if (error) {
console.error(error)
}
}
);
}
export default function useVueClipboard(vueApp) { export default function useVueClipboard(vueApp) {
vueApp.use(VueClipboard); vueApp.use(
VueClipboard,
{
autoSetContainer: true,
appendToBody: true,
}
);
}; };