diff --git a/dist/clipboard.min.js b/dist/clipboard.min.js index 21a5858..b384225 100644 --- a/dist/clipboard.min.js +++ b/dist/clipboard.min.js @@ -1 +1 @@ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g this.bind(trigger)); } bind(trigger) { - trigger.addEventListener('click', function(e) { - let action = e.currentTarget.getAttribute('data-action'); - let target = e.currentTarget.getAttribute('data-target'); - let text = e.currentTarget.getAttribute('data-text'); + trigger.addEventListener('click', (e) => this.validate(e)); + } - if (!action === 'copy' || !action === 'cut') { - throw new Error('Invalid "data-action" attribute'); - } - else if (!target && !text) { - throw new Error('Missing "data-target" or "data-text" attribute'); - } + validate(e) { + let trigger = e.currentTarget; + let action = trigger.getAttribute('data-action') || 'copy'; + let target = trigger.getAttribute('data-target'); + let text = trigger.getAttribute('data-text'); - new ClipboardAction({ - action : action, - target : target, - text : text, - trigger : e.currentTarget - }); - }); + if (action !== 'copy' && action !== 'cut') { + throw new Error('Invalid "data-action" value, use either "copy" or "cut"'); + } + + if (!target && !text) { + throw new Error('Missing required attributes, use either "data-target" or "data-text"'); + } + + if (target) { + target = document.getElementById(target); + if (!target) throw new Error('Invalid "data-target" selector, use a value that matches an ID'); + } + + new ClipboardAction(action, target, text, trigger); } } class ClipboardAction { - constructor(options) { - this.action = options.action || 'copy'; - this.target = document.getElementById(options.target); - this.text = options.text; - this.trigger = options.trigger; + constructor(action, target, text, trigger) { + this.action = action; + this.target = target; + this.text = text; + this.trigger = trigger; this.selectedText = '';