vue-clipboard2
Advanced tools
Comparing version 0.2.1 to 0.3.0
@@ -0,1 +1,5 @@ | ||
# 0.3.0 | ||
- Add config option `appendToBody` to support IE | ||
# 0.2.1 | ||
@@ -2,0 +6,0 @@ |
@@ -22,34 +22,37 @@ (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){ | ||
var VueClipboardConfig = { | ||
autoSetContainer: false | ||
}; | ||
autoSetContainer: false, | ||
appendToBody: true // This fixes IE, see #50 | ||
} | ||
var VueClipboard = { | ||
install: function (Vue) { | ||
Vue.prototype.$clipboardConfig = VueClipboardConfig; | ||
Vue.prototype.$clipboardConfig = VueClipboardConfig | ||
Vue.prototype.$copyText = function (text, container) { | ||
return new Promise(function (resolve, reject) { | ||
var fake_el = document.createElement('button'); | ||
var clipboard = new Clipboard(fake_el, { | ||
var fakeElement = document.createElement('button') | ||
var clipboard = new Clipboard(fakeElement, { | ||
text: function () { return text }, | ||
action: function () { return 'copy' }, | ||
container: typeof container === 'object' ? container : document.body | ||
}); | ||
}) | ||
clipboard.on('success', function (e) { | ||
clipboard.destroy(); | ||
resolve(e); | ||
}); | ||
clipboard.destroy() | ||
resolve(e) | ||
}) | ||
clipboard.on('error', function (e) { | ||
clipboard.destroy(); | ||
reject(e); | ||
}); | ||
fake_el.click(); | ||
}); | ||
}; | ||
clipboard.destroy() | ||
reject(e) | ||
}) | ||
if (VueClipboardConfig.appendToBody) document.body.appendChild(fakeElement) | ||
fakeElement.click() | ||
if (VueClipboardConfig.appendToBody) document.body.removeChild(fakeElement) | ||
}) | ||
} | ||
Vue.directive('clipboard', { | ||
bind: function (el, binding, vnode) { | ||
if(binding.arg === 'success') { | ||
el._v_clipboard_success = binding.value | ||
} else if(binding.arg === 'error') { | ||
el._v_clipboard_error = binding.value | ||
if (binding.arg === 'success') { | ||
el._vClipboard_success = binding.value | ||
} else if (binding.arg === 'error') { | ||
el._vClipboard_error = binding.value | ||
} else { | ||
@@ -62,30 +65,30 @@ var clipboard = new Clipboard(el, { | ||
clipboard.on('success', function (e) { | ||
var callback = el._v_clipboard_success | ||
var callback = el._vClipboard_success | ||
callback && callback(e) | ||
}) | ||
clipboard.on('error', function (e) { | ||
var callback = el._v_clipboard_error | ||
var callback = el._vClipboard_error | ||
callback && callback(e) | ||
}) | ||
el._v_clipboard = clipboard | ||
el._vClipboard = clipboard | ||
} | ||
}, | ||
update: function (el, binding) { | ||
if(binding.arg === 'success') { | ||
el._v_clipboard_success = binding.value | ||
} else if(binding.arg === 'error') { | ||
el._v_clipboard_error = binding.value | ||
if (binding.arg === 'success') { | ||
el._vClipboard_success = binding.value | ||
} else if (binding.arg === 'error') { | ||
el._vClipboard_error = binding.value | ||
} else { | ||
el._v_clipboard.text = function () { return binding.value } | ||
el._v_clipboard.action = function () { return binding.arg === 'cut' ? 'cut' : 'copy' } | ||
el._vClipboard.text = function () { return binding.value } | ||
el._vClipboard.action = function () { return binding.arg === 'cut' ? 'cut' : 'copy' } | ||
} | ||
}, | ||
unbind: function (el, binding) { | ||
if(binding.arg === 'success') { | ||
delete el._v_clipboard_success | ||
} else if(binding.arg === 'error') { | ||
delete el._v_clipboard_error | ||
if (binding.arg === 'success') { | ||
delete el._vClipboard_success | ||
} else if (binding.arg === 'error') { | ||
delete el._vClipboard_error | ||
} else { | ||
el._v_clipboard.destroy() | ||
delete el._v_clipboard | ||
el._vClipboard.destroy() | ||
delete el._vClipboard | ||
} | ||
@@ -98,6 +101,6 @@ } | ||
if (typeof exports == "object") { | ||
if (typeof exports === 'object') { | ||
module.exports = VueClipboard | ||
} else if (typeof define == "function" && define.amd) { | ||
define([], function() { | ||
} else if (typeof define === 'function' && define.amd) { | ||
define([], function () { | ||
return VueClipboard | ||
@@ -104,0 +107,0 @@ }) |
@@ -1,1 +0,1 @@ | ||
(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){(function(global){var VueClipboard=require("./vue-clipboard.js");global.VueClipboard=VueClipboard;window.Vue&&global.Vue.use(VueClipboard)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./vue-clipboard.js":3}],2:[function(require,module,exports){!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=3)}([function(t,e,n){var o,r,i;!function(a,c){r=[t,n(7)],o=c,void 0!==(i="function"==typeof o?o.apply(e,r):o)&&(t.exports=i)}(0,function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(t){return t&&t.__esModule?t:{default:t}}(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),a=function(){function t(e){n(this,t),this.resolveOptions(e),this.initSelection()}return i(t,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=a})},function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return r(t,e,n);if(c.nodeList(t))return i(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function r(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function i(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return u(document.body,t,e,n)}var c=n(6),u=n(5);t.exports=o},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){r.off(t,o),e.apply(n,arguments)}var r=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;for(o;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var o,r,i;!function(a,c){r=[t,n(0),n(2),n(1)],o=c,void 0!==(i="function"==typeof o?o.apply(e,r):o)&&(t.exports=i)}(0,function(t,e,n,o){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var l=r(e),s=r(n),f=r(o),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),p=function(t){function e(t,n){i(this,e);var o=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.resolveOptions(n),o.listenClick(t),o}return c(e,t),h(e,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===d(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,f.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(s.default);t.exports=p})},function(t,e){function n(t,e){for(;t&&t.nodeType!==o;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var o=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=n},function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function r(t,e,n,r,i){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,r,i)}))}function i(t,e,n,o){return function(n){n.delegateTarget=a(n.target,e),n.delegateTarget&&o.call(t,n)}}var a=n(4);t.exports=r},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e){function n(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}t.exports=n}])})},{}],3:[function(require,module,exports){var Clipboard=require("clipboard/dist/clipboard.min.js");var VueClipboardConfig={autoSetContainer:false};var VueClipboard={install:function(Vue){Vue.prototype.$clipboardConfig=VueClipboardConfig;Vue.prototype.$copyText=function(text,container){return new Promise(function(resolve,reject){var fake_el=document.createElement("button");var clipboard=new Clipboard(fake_el,{text:function(){return text},action:function(){return"copy"},container:typeof container==="object"?container:document.body});clipboard.on("success",function(e){clipboard.destroy();resolve(e)});clipboard.on("error",function(e){clipboard.destroy();reject(e)});fake_el.click()})};Vue.directive("clipboard",{bind:function(el,binding,vnode){if(binding.arg==="success"){el._v_clipboard_success=binding.value}else if(binding.arg==="error"){el._v_clipboard_error=binding.value}else{var clipboard=new Clipboard(el,{text:function(){return binding.value},action:function(){return binding.arg==="cut"?"cut":"copy"},container:VueClipboardConfig.autoSetContainer?el:undefined});clipboard.on("success",function(e){var callback=el._v_clipboard_success;callback&&callback(e)});clipboard.on("error",function(e){var callback=el._v_clipboard_error;callback&&callback(e)});el._v_clipboard=clipboard}},update:function(el,binding){if(binding.arg==="success"){el._v_clipboard_success=binding.value}else if(binding.arg==="error"){el._v_clipboard_error=binding.value}else{el._v_clipboard.text=function(){return binding.value};el._v_clipboard.action=function(){return binding.arg==="cut"?"cut":"copy"}}},unbind:function(el,binding){if(binding.arg==="success"){delete el._v_clipboard_success}else if(binding.arg==="error"){delete el._v_clipboard_error}else{el._v_clipboard.destroy();delete el._v_clipboard}}})},config:VueClipboardConfig};if(typeof exports=="object"){module.exports=VueClipboard}else if(typeof define=="function"&&define.amd){define([],function(){return VueClipboard})}},{"clipboard/dist/clipboard.min.js":2}]},{},[1]); | ||
(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){(function(global){var VueClipboard=require("./vue-clipboard.js");global.VueClipboard=VueClipboard;window.Vue&&global.Vue.use(VueClipboard)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./vue-clipboard.js":3}],2:[function(require,module,exports){!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=3)}([function(t,e,n){var o,r,i;!function(a,c){r=[t,n(7)],o=c,void 0!==(i="function"==typeof o?o.apply(e,r):o)&&(t.exports=i)}(0,function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(t){return t&&t.__esModule?t:{default:t}}(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),a=function(){function t(e){n(this,t),this.resolveOptions(e),this.initSelection()}return i(t,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=a})},function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return r(t,e,n);if(c.nodeList(t))return i(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function r(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function i(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return u(document.body,t,e,n)}var c=n(6),u=n(5);t.exports=o},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){r.off(t,o),e.apply(n,arguments)}var r=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;for(o;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var o,r,i;!function(a,c){r=[t,n(0),n(2),n(1)],o=c,void 0!==(i="function"==typeof o?o.apply(e,r):o)&&(t.exports=i)}(0,function(t,e,n,o){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var l=r(e),s=r(n),f=r(o),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),p=function(t){function e(t,n){i(this,e);var o=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.resolveOptions(n),o.listenClick(t),o}return c(e,t),h(e,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===d(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,f.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(s.default);t.exports=p})},function(t,e){function n(t,e){for(;t&&t.nodeType!==o;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var o=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=n},function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function r(t,e,n,r,i){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,r,i)}))}function i(t,e,n,o){return function(n){n.delegateTarget=a(n.target,e),n.delegateTarget&&o.call(t,n)}}var a=n(4);t.exports=r},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e){function n(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}t.exports=n}])})},{}],3:[function(require,module,exports){var Clipboard=require("clipboard/dist/clipboard.min.js");var VueClipboardConfig={autoSetContainer:false,appendToBody:true};var VueClipboard={install:function(Vue){Vue.prototype.$clipboardConfig=VueClipboardConfig;Vue.prototype.$copyText=function(text,container){return new Promise(function(resolve,reject){var fakeElement=document.createElement("button");var clipboard=new Clipboard(fakeElement,{text:function(){return text},action:function(){return"copy"},container:typeof container==="object"?container:document.body});clipboard.on("success",function(e){clipboard.destroy();resolve(e)});clipboard.on("error",function(e){clipboard.destroy();reject(e)});if(VueClipboardConfig.appendToBody)document.body.appendChild(fakeElement);fakeElement.click();if(VueClipboardConfig.appendToBody)document.body.removeChild(fakeElement)})};Vue.directive("clipboard",{bind:function(el,binding,vnode){if(binding.arg==="success"){el._vClipboard_success=binding.value}else if(binding.arg==="error"){el._vClipboard_error=binding.value}else{var clipboard=new Clipboard(el,{text:function(){return binding.value},action:function(){return binding.arg==="cut"?"cut":"copy"},container:VueClipboardConfig.autoSetContainer?el:undefined});clipboard.on("success",function(e){var callback=el._vClipboard_success;callback&&callback(e)});clipboard.on("error",function(e){var callback=el._vClipboard_error;callback&&callback(e)});el._vClipboard=clipboard}},update:function(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=function(){return binding.arg==="cut"?"cut":"copy"}}},unbind:function(el,binding){if(binding.arg==="success"){delete el._vClipboard_success}else if(binding.arg==="error"){delete el._vClipboard_error}else{el._vClipboard.destroy();delete el._vClipboard}}})},config:VueClipboardConfig};if(typeof exports==="object"){module.exports=VueClipboard}else if(typeof define==="function"&&define.amd){define([],function(){return VueClipboard})}},{"clipboard/dist/clipboard.min.js":2}]},{},[1]); |
{ | ||
"name": "vue-clipboard2", | ||
"version": "0.2.1", | ||
"version": "0.3.0", | ||
"description": "A Vuejs2 binding for clipboard.js", | ||
"main": "vue-clipboard.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1", | ||
"build": "$(npm bin)/browserify browserify-me.js -o dist/vue-clipboard.js && $(npm bin)/uglifyjs dist/vue-clipboard.js -o dist/vue-clipboard.min.js && echo Success" | ||
"build": "$(npm bin)/eslint vue-clipboard.js && $(npm bin)/browserify browserify-me.js -o dist/vue-clipboard.js && $(npm bin)/uglifyjs dist/vue-clipboard.js -o dist/vue-clipboard.min.js && echo Success" | ||
}, | ||
@@ -34,4 +33,10 @@ "repository": { | ||
"browserify": "^16.1.0", | ||
"eslint": ">=5.0.0", | ||
"eslint-config-standard": "^12.0.0", | ||
"eslint-plugin-import": ">=2.13.0", | ||
"eslint-plugin-node": ">=7.0.0", | ||
"eslint-plugin-promise": ">=4.0.0", | ||
"eslint-plugin-standard": ">=4.0.0", | ||
"uglify-js": "^3.3.12" | ||
} | ||
} |
@@ -31,3 +31,3 @@ # vue-clipboard2 | ||
Yes, you can do it by using our new method: `this.$copyText`. See | ||
[sample2](https://github.com/Inndy/vue-clipboard2/blob/master/sample2.html), | ||
[sample2](https://github.com/Inndy/vue-clipboard2/blob/master/samples/sample2.html), | ||
where we replace the clipboard directives with a v-on directive. | ||
@@ -34,0 +34,0 @@ |
var Clipboard = require('clipboard/dist/clipboard.min.js') // FIXME: workaround for browserify | ||
var VueClipboardConfig = { | ||
autoSetContainer: false | ||
}; | ||
autoSetContainer: false, | ||
appendToBody: true // This fixes IE, see #50 | ||
} | ||
var VueClipboard = { | ||
install: function (Vue) { | ||
Vue.prototype.$clipboardConfig = VueClipboardConfig; | ||
Vue.prototype.$clipboardConfig = VueClipboardConfig | ||
Vue.prototype.$copyText = function (text, container) { | ||
return new Promise(function (resolve, reject) { | ||
var fake_el = document.createElement('button'); | ||
var clipboard = new Clipboard(fake_el, { | ||
var fakeElement = document.createElement('button') | ||
var clipboard = new Clipboard(fakeElement, { | ||
text: function () { return text }, | ||
action: function () { return 'copy' }, | ||
container: typeof container === 'object' ? container : document.body | ||
}); | ||
}) | ||
clipboard.on('success', function (e) { | ||
clipboard.destroy(); | ||
resolve(e); | ||
}); | ||
clipboard.destroy() | ||
resolve(e) | ||
}) | ||
clipboard.on('error', function (e) { | ||
clipboard.destroy(); | ||
reject(e); | ||
}); | ||
fake_el.click(); | ||
}); | ||
}; | ||
clipboard.destroy() | ||
reject(e) | ||
}) | ||
if (VueClipboardConfig.appendToBody) document.body.appendChild(fakeElement) | ||
fakeElement.click() | ||
if (VueClipboardConfig.appendToBody) document.body.removeChild(fakeElement) | ||
}) | ||
} | ||
Vue.directive('clipboard', { | ||
bind: function (el, binding, vnode) { | ||
if(binding.arg === 'success') { | ||
el._v_clipboard_success = binding.value | ||
} else if(binding.arg === 'error') { | ||
el._v_clipboard_error = binding.value | ||
if (binding.arg === 'success') { | ||
el._vClipboard_success = binding.value | ||
} else if (binding.arg === 'error') { | ||
el._vClipboard_error = binding.value | ||
} else { | ||
@@ -43,30 +46,30 @@ var clipboard = new Clipboard(el, { | ||
clipboard.on('success', function (e) { | ||
var callback = el._v_clipboard_success | ||
var callback = el._vClipboard_success | ||
callback && callback(e) | ||
}) | ||
clipboard.on('error', function (e) { | ||
var callback = el._v_clipboard_error | ||
var callback = el._vClipboard_error | ||
callback && callback(e) | ||
}) | ||
el._v_clipboard = clipboard | ||
el._vClipboard = clipboard | ||
} | ||
}, | ||
update: function (el, binding) { | ||
if(binding.arg === 'success') { | ||
el._v_clipboard_success = binding.value | ||
} else if(binding.arg === 'error') { | ||
el._v_clipboard_error = binding.value | ||
if (binding.arg === 'success') { | ||
el._vClipboard_success = binding.value | ||
} else if (binding.arg === 'error') { | ||
el._vClipboard_error = binding.value | ||
} else { | ||
el._v_clipboard.text = function () { return binding.value } | ||
el._v_clipboard.action = function () { return binding.arg === 'cut' ? 'cut' : 'copy' } | ||
el._vClipboard.text = function () { return binding.value } | ||
el._vClipboard.action = function () { return binding.arg === 'cut' ? 'cut' : 'copy' } | ||
} | ||
}, | ||
unbind: function (el, binding) { | ||
if(binding.arg === 'success') { | ||
delete el._v_clipboard_success | ||
} else if(binding.arg === 'error') { | ||
delete el._v_clipboard_error | ||
if (binding.arg === 'success') { | ||
delete el._vClipboard_success | ||
} else if (binding.arg === 'error') { | ||
delete el._vClipboard_error | ||
} else { | ||
el._v_clipboard.destroy() | ||
delete el._v_clipboard | ||
el._vClipboard.destroy() | ||
delete el._vClipboard | ||
} | ||
@@ -79,8 +82,8 @@ } | ||
if (typeof exports == "object") { | ||
if (typeof exports === 'object') { | ||
module.exports = VueClipboard | ||
} else if (typeof define == "function" && define.amd) { | ||
define([], function() { | ||
} else if (typeof define === 'function' && define.amd) { | ||
define([], function () { | ||
return VueClipboard | ||
}) | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
37925
10
233
3
8
1