@@ -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,20 @@ 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 = ( event : ClipboardEvent , handler : ( e : ClipboardEvent ) => void ) => {
248
+ if ( this . containsActiveElement ( ) ) {
249
+ handler ( event ) ;
252
250
}
253
251
} ;
254
252
253
+ handleCopy = ( event : ClipboardEvent ) => {
254
+ this . handleClipboardEvent ( event , this . onCopy )
255
+ } ;
256
+
257
+ handlePaste = ( event : ClipboardEvent ) => {
258
+ this . handleClipboardEvent ( event , this . onPaste )
259
+ } ;
260
+
255
261
private clearCellWidth ( cell : HTMLElement ) {
256
262
cell . style . width = '' ;
257
263
cell . style . minWidth = '' ;
@@ -978,7 +984,6 @@ export default class ControlledTable extends PureComponent<ControlledTableProps>
978
984
< div
979
985
id = { id }
980
986
className = 'dash-table-container'
981
- onCopy = { this . onCopy }
982
987
onKeyDown = { this . handleKeyDown }
983
988
onPaste = { this . onPaste }
984
989
style = { { position : 'relative' } }
0 commit comments