@@ -121,6 +121,7 @@ var DataSheet = function (_PureComponent) {
121121 document . removeEventListener ( 'cut' , this . handleCut ) ;
122122 document . removeEventListener ( 'copy' , this . handleCopy ) ;
123123 document . removeEventListener ( 'paste' , this . handlePaste ) ;
124+ document . removeEventListener ( 'keydown' , this . handlePaste ) ;
124125 }
125126 } , {
126127 key : 'componentDidMount' ,
@@ -243,7 +244,14 @@ var DataSheet = function (_PureComponent) {
243244
244245 var parse = this . props . parsePaste || defaultParsePaste ;
245246 var changes = [ ] ;
246- var pasteData = parse ( e . clipboardData . getData ( 'text/plain' ) ) ;
247+ var pasteData = [ ] ;
248+ if ( window . clipboardData && window . clipboardData . getData ) {
249+ // IE
250+ pasteData = parse ( window . clipboardData . getData ( 'Text' ) ) ;
251+ } else if ( e . clipboardData && e . clipboardData . getData ) {
252+ pasteData = parse ( e . clipboardData . getData ( 'text/plain' ) ) ;
253+ }
254+
247255 // in order of preference
248256 var _props3 = this . props ,
249257 data = _props3 . data ,
@@ -525,6 +533,8 @@ var DataSheet = function (_PureComponent) {
525533 } , {
526534 key : 'onMouseDown' ,
527535 value : function onMouseDown ( i , j , e ) {
536+ var _this5 = this ;
537+
528538 var editing = isEmpty ( this . state . editing ) || this . state . editing . i !== i || this . state . editing . j !== j ? { } : this . state . editing ;
529539
530540 this . _setState ( {
@@ -535,6 +545,17 @@ var DataSheet = function (_PureComponent) {
535545 forceEdit : false
536546 } ) ;
537547
548+ var ua = window . navigator . userAgent ;
549+ var isIE = / M S I E | T r i d e n t / . test ( ua ) ;
550+ // Listen for Ctrl + V in case of IE
551+ if ( isIE ) {
552+ document . addEventListener ( 'keydown' , function ( e ) {
553+ if ( ( e . keyCode === 86 || e . which === 86 ) && e . ctrlKey ) {
554+ _this5 . handlePaste ( e ) ;
555+ }
556+ } ) ;
557+ }
558+
538559 // Keep listening to mouse if user releases the mouse (dragging outside)
539560 document . addEventListener ( 'mouseup' , this . onMouseUp ) ;
540561 // Listen for any outside mouse clicks
@@ -618,7 +639,7 @@ var DataSheet = function (_PureComponent) {
618639 } , {
619640 key : 'render' ,
620641 value : function render ( ) {
621- var _this5 = this ;
642+ var _this6 = this ;
622643
623644 var _props6 = this . props ,
624645 SheetRenderer = _props6 . sheetRenderer ,
@@ -639,7 +660,7 @@ var DataSheet = function (_PureComponent) {
639660 return _react2 . default . createElement (
640661 'span' ,
641662 { ref : function ref ( r ) {
642- _this5 . dgDom = r ;
663+ _this6 . dgDom = r ;
643664 } , tabIndex : '0' , className : 'data-grid-container' , onKeyDown : this . handleKey } ,
644665 _react2 . default . createElement (
645666 SheetRenderer ,
@@ -657,17 +678,17 @@ var DataSheet = function (_PureComponent) {
657678 col : j ,
658679 cell : cell ,
659680 forceEdit : forceEdit ,
660- onMouseDown : _this5 . onMouseDown ,
661- onMouseOver : _this5 . onMouseOver ,
662- onDoubleClick : _this5 . onDoubleClick ,
663- onContextMenu : _this5 . onContextMenu ,
664- onChange : _this5 . onChange ,
665- onRevert : _this5 . onRevert ,
666- onNavigate : _this5 . handleKeyboardCellMovement ,
667- onKey : _this5 . handleKey ,
668- selected : _this5 . isSelected ( i , j ) ,
669- editing : _this5 . isEditing ( i , j ) ,
670- clearing : _this5 . isClearing ( i , j ) ,
681+ onMouseDown : _this6 . onMouseDown ,
682+ onMouseOver : _this6 . onMouseOver ,
683+ onDoubleClick : _this6 . onDoubleClick ,
684+ onContextMenu : _this6 . onContextMenu ,
685+ onChange : _this6 . onChange ,
686+ onRevert : _this6 . onRevert ,
687+ onNavigate : _this6 . handleKeyboardCellMovement ,
688+ onKey : _this6 . handleKey ,
689+ selected : _this6 . isSelected ( i , j ) ,
690+ editing : _this6 . isEditing ( i , j ) ,
691+ clearing : _this6 . isClearing ( i , j ) ,
671692 attributesRenderer : attributesRenderer ,
672693 cellRenderer : cellRenderer ,
673694 valueRenderer : valueRenderer ,
0 commit comments