From c6dc01cc298dd9793ad81eb4e159128913d74469 Mon Sep 17 00:00:00 2001 From: Zeno Rocha Date: Mon, 19 Oct 2015 16:21:31 -0700 Subject: [PATCH] Moves selection code to a different package --- package.json | 1 + src/clipboard-action.js | 20 ++++---------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 9772caf..d069680 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "babelify": "^6.3.0", "browserify": "^11.2.0", "delegate-events": "^1.1.1", + "select": "^1.0.0", "tiny-emitter": "^1.0.0" }, "devDependencies": { diff --git a/src/clipboard-action.js b/src/clipboard-action.js index c8c1bcd..f7d1aed 100644 --- a/src/clipboard-action.js +++ b/src/clipboard-action.js @@ -1,3 +1,5 @@ +import select from 'select'; + /** * Inner class which performs selection from either `text` or `target` * properties and then executes copy or cut operations. @@ -59,11 +61,10 @@ class ClipboardAction { this.fakeElem.style.top = (window.pageYOffset || document.documentElement.scrollTop) + 'px'; this.fakeElem.setAttribute('readonly', ''); this.fakeElem.value = this.text; - this.selectedText = this.text; document.body.appendChild(this.fakeElem); - this.fakeElem.select(); + this.selectedText = select(this.fakeElem); this.copyText(); } @@ -87,20 +88,7 @@ class ClipboardAction { * Selects the content from element passed on `target` property. */ selectTarget() { - if (this.target.nodeName === 'INPUT' || this.target.nodeName === 'TEXTAREA') { - this.target.select(); - this.selectedText = this.target.value; - } - else { - let range = document.createRange(); - let selection = window.getSelection(); - - selection.removeAllRanges(); - range.selectNodeContents(this.target); - selection.addRange(range); - this.selectedText = selection.toString(); - } - + this.selectedText = select(this.target); this.copyText(); }