@xqsit94/vue3-copy-to-clipboard

Copy to clipboard component for Vue 3
24,665
Install
npm install @xqsit94/vue3-copy-to-clipboard
Latest Version:1.1.0
Vue:3
License:MIT
Last Updated:Sep 8, 2023
Links: GitHub  ·  npm
Maintainer: xqsit

About

Copy to clipboard component for Vue 3 based on copy-to-clipboard

Simple module exposing copy function that will try to use execCommand with fallback to IE-specific clipboardData interface and finally, resort to usual prompt with proper text content and message.

If you are building using Electron, use their API.

Installation

  • npm package
npm i @xqsit94/vue3-copy-to-clipboard
  • or using yarn
yarn add @xqsit94/vue3-copy-to-clipboard

Usage

Local Component Usage

<script setup>
import { ref } from 'vue'
// Import as Local component
import { CopyToClipboard } from '@xqsit94/vue3-copy-to-clipboard'

const message = ref('Copy my text')
</script>

<template>
  <CopyToClipboard
    :copy="message"
    class="btn btn-primary"
    >Copy Me!</CopyToClipboard
  >
</template>

Global Component Registeration

import { createApp } from 'vue'
// Import as Global component
import CopyToClipboard from '@xqsit94/vue3-copy-to-clipboard'

const app = createApp(App);

app.use(CopyToClipboard);

app.mount("#app");

Basic Usage

<script setup>
import { ref } from 'vue'

const message = ref('Copy my text')
</script>

<template>
  <CopyToClipboard
    :copy="message"
    class="btn btn-primary"
    >Copy Me!</CopyToClipboard
  >
</template>

Advanced Usage

<script setup>
import { ref } from 'vue'

const message = ref('Copy my text')

const successOnCopy = () => {
  alert('Text copied to clipboard')
}
const errorOnCopy = (error) => {
  console.log(error)
}
</script>

<template>
  <CopyToClipboard
    :copy="message"
    @success="successOnCopy"
    @error="errorOnCopy"
    class="btn btn-primary"
    >Copy Me!</CopyToClipboard
  >
</template>

Usage 2

Using Composables

Local Composable

import { $copyToClipboard } from '@xqsit94/vue3-copy-to-clipboard'

<template>
  <button 
    @click="$copyToClipboard('Text to copy!!!')" 
    class="btn btn-primary"
    >
    Copy Me!
  </button>
</template>

Global Composable

import { createApp } from 'vue'
import CopyToClipboard from '@xqsit94/vue3-copy-to-clipboard'

const app = createApp(App);

app.use(CopyToClipboard);

app.mount("#app");

Local Composable

<template>
  <button 
    @click="$copyToClipboard('Text to copy!!!')" 
    class="btn btn-primary"
    >
    Copy Me!
  </button>
</template>

Try Catch

<script setup>
import { ref } from 'vue'
import { $copyToClipboard } from '@xqsit94/vue3-copy-to-clipboard'

const message = ref('Copy my text')

const copyText = () => {
  try {
    $copyToClipboard(message)
    alert('Text copied to clipboard')
  } catch (error) {
    console.log(error)
  }
}
</script>

<template>
  <button @click="copyText" class="btn btn-primary">Copy Me!</button>
</template>

Contribution

PRs are always Welcome.

License

MIT

Related Packages

@enso-ui/clipboard

Simple vue clipboard copy

8,639 1
@liberu-ui/clipboard

Simple vue clipboard copy

583 0
vue-clipboard2

A Vuejs2 & Vuejs3 binding for clipboard.js

5,074,076 1,750
vue3-clipboard

A Vuejs3 binding for clipboard.js

895,108 24
@soerenmartius/vue3-clipboard

A Vue 3 binding for clipboard.js

323,493 104

Version History

Version Released License
1.1.0 MIT
Pre-releases (1)
Version Released License
0.0.0-development MIT