@@ -127,6 +127,7 @@ export default class ControlledTable extends PureComponent<ControlledTableProps>
127
127
window . addEventListener ( 'resize' , this . forceHandleResize ) ;
128
128
document . addEventListener ( 'mousedown' , this . handleClick ) ;
129
129
document . addEventListener ( 'paste' , this . handlePaste ) ;
130
+ document . addEventListener ( 'copy' , this . handleCopy ) ;
130
131
131
132
const { active_cell, selected_cells, setProps} = this . props ;
132
133
@@ -146,6 +147,7 @@ export default class ControlledTable extends PureComponent<ControlledTableProps>
146
147
window . removeEventListener ( 'resize' , this . forceHandleResize ) ;
147
148
document . removeEventListener ( 'mousedown' , this . handleClick ) ;
148
149
document . removeEventListener ( 'paste' , this . handlePaste ) ;
150
+ document . removeEventListener ( 'copy' , this . handleCopy ) ;
149
151
}
150
152
151
153
componentDidUpdate ( ) {
@@ -242,16 +244,23 @@ export default class ControlledTable extends PureComponent<ControlledTableProps>
242
244
}
243
245
} ;
244
246
245
- handlePaste = ( event : any ) => {
246
- // no need to check for target as this will only be called if
247
- // a child fails to handle the paste event (e.g table, table input)
248
- // make sure the active element is in the scope of the component
249
- const $el = this . $el ;
250
- if ( $el && $el . contains ( document . activeElement ) ) {
251
- this . onPaste ( event ) ;
247
+ handleClipboardEvent = (
248
+ event : ClipboardEvent ,
249
+ handler : ( e : ClipboardEvent ) => void
250
+ ) => {
251
+ if ( this . containsActiveElement ( ) ) {
252
+ handler ( event ) ;
252
253
}
253
254
} ;
254
255
256
+ handleCopy = ( event : ClipboardEvent ) => {
257
+ this . handleClipboardEvent ( event , this . onCopy ) ;
258
+ } ;
259
+
260
+ handlePaste = ( event : ClipboardEvent ) => {
261
+ this . handleClipboardEvent ( event , this . onPaste ) ;
262
+ } ;
263
+
255
264
private clearCellWidth ( cell : HTMLElement ) {
256
265
cell . style . width = '' ;
257
266
cell . style . minWidth = '' ;
@@ -978,7 +987,6 @@ export default class ControlledTable extends PureComponent<ControlledTableProps>
978
987
< div
979
988
id = { id }
980
989
className = 'dash-table-container'
981
- onCopy = { this . onCopy }
982
990
onKeyDown = { this . handleKeyDown }
983
991
onPaste = { this . onPaste }
984
992
style = { { position : 'relative' } }
0 commit comments