From bc5f65b26a2c3ce0c0b08ed952b7dfa3d38bf578 Mon Sep 17 00:00:00 2001 From: Bimal Bose B S Date: Tue, 30 Jul 2019 15:58:17 +0530 Subject: [PATCH 1/4] fix for multi-row IE-paste --- src/DataSheet.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/DataSheet.js b/src/DataSheet.js index ca081bf..bdffc07 100644 --- a/src/DataSheet.js +++ b/src/DataSheet.js @@ -160,6 +160,13 @@ export default class DataSheet extends PureComponent { const parse = this.props.parsePaste || defaultParsePaste const changes = [] const pasteData = parse(e.clipboardData.getData('text/plain')) + let pasteData = []; + if (window.clipboardData && window.clipboardData.getData) { // IE + pasteData = parse(window.clipboardData.getData('Text')); + } else if (e.clipboardData && e.clipboardData.getData) { + pasteData = parse(e.clipboardData.getData('text/plain')); + } + // in order of preference const { data, onCellsChanged, onPaste, onChange } = this.props if (onCellsChanged) { @@ -405,6 +412,19 @@ export default class DataSheet extends PureComponent { forceEdit: false }) + var ua = window.navigator.userAgent; + var isIE = /MSIE|Trident/.test(ua); + + // Listen for Ctrl + V in case of IE + if ( isIE ) { + var thisContext = this; + document.addEventListener('keydown', function (e){ + if((e.keyCode ==86 || e.which ==86)&& e.ctrlKey){ + thisContext.handlePaste(e); + } + }); + } + // Keep listening to mouse if user releases the mouse (dragging outside) document.addEventListener('mouseup', this.onMouseUp) // Listen for any outside mouse clicks From 9e70f7b471fd743623208769e6ae88138053de11 Mon Sep 17 00:00:00 2001 From: Bimal Bose B S Date: Tue, 30 Jul 2019 16:00:24 +0530 Subject: [PATCH 2/4] removed double declaration --- src/DataSheet.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DataSheet.js b/src/DataSheet.js index bdffc07..4697c26 100644 --- a/src/DataSheet.js +++ b/src/DataSheet.js @@ -159,7 +159,6 @@ export default class DataSheet extends PureComponent { const parse = this.props.parsePaste || defaultParsePaste const changes = [] - const pasteData = parse(e.clipboardData.getData('text/plain')) let pasteData = []; if (window.clipboardData && window.clipboardData.getData) { // IE pasteData = parse(window.clipboardData.getData('Text')); From bdf9bfe4e7652887c806e46e4368c7111d55654c Mon Sep 17 00:00:00 2001 From: Bimal Bose B S Date: Fri, 9 Aug 2019 16:36:00 +0530 Subject: [PATCH 3/4] formatting errors --- src/DataSheet.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/DataSheet.js b/src/DataSheet.js index 4697c26..ef0d350 100644 --- a/src/DataSheet.js +++ b/src/DataSheet.js @@ -159,11 +159,11 @@ export default class DataSheet extends PureComponent { const parse = this.props.parsePaste || defaultParsePaste const changes = [] - let pasteData = []; + let pasteData = [] if (window.clipboardData && window.clipboardData.getData) { // IE - pasteData = parse(window.clipboardData.getData('Text')); + pasteData = parse(window.clipboardData.getData('Text')) } else if (e.clipboardData && e.clipboardData.getData) { - pasteData = parse(e.clipboardData.getData('text/plain')); + pasteData = parse(e.clipboardData.getData('text/plain')) } // in order of preference @@ -411,15 +411,14 @@ export default class DataSheet extends PureComponent { forceEdit: false }) - var ua = window.navigator.userAgent; - var isIE = /MSIE|Trident/.test(ua); - + var ua = window.navigator.userAgent + var isIE = /MSIE|Trident/.test(ua) // Listen for Ctrl + V in case of IE - if ( isIE ) { - var thisContext = this; + if (isIE) { + var thisContext = this document.addEventListener('keydown', function (e){ - if((e.keyCode ==86 || e.which ==86)&& e.ctrlKey){ - thisContext.handlePaste(e); + if ( (e.keyCode === 86 || e.which === 86) && e.ctrlKey){ + thisContext.handlePaste(e) } }); } From b156772bde1eff8c4c8bbca0868c7257ce4475cc Mon Sep 17 00:00:00 2001 From: Bimal Bose B S Date: Tue, 20 Aug 2019 21:12:14 +0530 Subject: [PATCH 4/4] using lamda function and removing event listener --- src/DataSheet.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/DataSheet.js b/src/DataSheet.js index ef0d350..de3b5cd 100644 --- a/src/DataSheet.js +++ b/src/DataSheet.js @@ -67,6 +67,7 @@ export default class DataSheet extends PureComponent { document.removeEventListener('cut', this.handleCut) document.removeEventListener('copy', this.handleCopy) document.removeEventListener('paste', this.handlePaste) + document.removeEventListener('keydown', this.handlePaste) } componentDidMount () { @@ -415,10 +416,9 @@ export default class DataSheet extends PureComponent { var isIE = /MSIE|Trident/.test(ua) // Listen for Ctrl + V in case of IE if (isIE) { - var thisContext = this - document.addEventListener('keydown', function (e){ + document.addEventListener('keydown', (e) => { if ( (e.keyCode === 86 || e.which === 86) && e.ctrlKey){ - thisContext.handlePaste(e) + this.handlePaste(e) } }); }