| New file |
| | |
| | | /**
|
| | | * v-clipboard 文字复制剪贴
|
| | | * Copyright (c) 2021 ruoyi
|
| | | */
|
| | |
|
| | | import Clipboard from 'clipboard'
|
| | | export default {
|
| | | bind(el, binding, vnode) {
|
| | | switch (binding.arg) {
|
| | | case 'success':
|
| | | el._vClipBoard_success = binding.value;
|
| | | break;
|
| | | case 'error':
|
| | | el._vClipBoard_error = binding.value;
|
| | | break;
|
| | | default: {
|
| | | const clipboard = new Clipboard(el, {
|
| | | text: () => binding.value,
|
| | | action: () => binding.arg === 'cut' ? 'cut' : 'copy'
|
| | | });
|
| | | clipboard.on('success', e => {
|
| | | const callback = el._vClipBoard_success;
|
| | | callback && callback(e);
|
| | | });
|
| | | clipboard.on('error', e => {
|
| | | const callback = el._vClipBoard_error;
|
| | | callback && callback(e);
|
| | | });
|
| | | el._vClipBoard = clipboard;
|
| | | }
|
| | | }
|
| | | },
|
| | | update(el, binding) {
|
| | | if (binding.arg === 'success') {
|
| | | el._vClipBoard_success = binding.value;
|
| | | } else if (binding.arg === 'error') {
|
| | | el._vClipBoard_error = binding.value;
|
| | | } else {
|
| | | el._vClipBoard.text = function () { return binding.value; };
|
| | | el._vClipBoard.action = () => binding.arg === 'cut' ? 'cut' : 'copy';
|
| | | }
|
| | | },
|
| | | unbind(el, binding) {
|
| | | if (!el._vClipboard) return
|
| | | if (binding.arg === 'success') {
|
| | | delete el._vClipBoard_success;
|
| | | } else if (binding.arg === 'error') {
|
| | | delete el._vClipBoard_error;
|
| | | } else {
|
| | | el._vClipBoard.destroy();
|
| | | delete el._vClipBoard;
|
| | | }
|
| | | }
|
| | | }
|