File tree 3 files changed +47
-0
lines changed
3 files changed +47
-0
lines changed Original file line number Diff line number Diff line change 41
41
}
42
42
]
43
43
},
44
+ {
45
+ "event" : " row-contextmenu" ,
46
+ "description" : " Emitted when a row is right clicked." ,
47
+ "args" : [
48
+ {
49
+ "arg" : " item" ,
50
+ "description" : " Item data of the row being right clicked."
51
+ },
52
+ {
53
+ "arg" : " index" ,
54
+ "description" : " Index of the row being right clicked."
55
+ },
56
+ {
57
+ "arg" : " event" ,
58
+ "description" : " Native event object."
59
+ }
60
+ ]
61
+ },
44
62
{
45
63
"event" : " row-hovered" ,
46
64
"description" : " Emitted when a row is hovered." ,
Original file line number Diff line number Diff line change @@ -249,6 +249,9 @@ export default {
249
249
click : evt => {
250
250
this . rowClicked ( evt , item , rowIndex )
251
251
} ,
252
+ contextmenu : evt => {
253
+ this . rowContextmenu ( evt , item , rowIndex )
254
+ } ,
252
255
dblclick : evt => {
253
256
this . rowDblClicked ( evt , item , rowIndex )
254
257
} ,
@@ -926,6 +929,13 @@ export default {
926
929
}
927
930
this . $emit ( 'row-hovered' , item , index , e )
928
931
} ,
932
+ rowContextmenu ( e , item , index ) {
933
+ if ( this . stopIfBusy ( e ) ) {
934
+ // If table is busy (via provider) then don't propagate
935
+ return
936
+ }
937
+ this . $emit ( 'row-contextmenu' , item , index , e )
938
+ } ,
929
939
headClicked ( e , field ) {
930
940
if ( this . stopIfBusy ( e ) ) {
931
941
// If table is busy (via provider) then don't propagate
Original file line number Diff line number Diff line change @@ -404,6 +404,25 @@ describe('table', async () => {
404
404
}
405
405
} )
406
406
407
+ it ( 'each data row should emit a row-contextmenu event when right clicked' , async ( ) => {
408
+ const { app : { $refs } } = window
409
+ const vm = $refs . table_paginated
410
+
411
+ const tbody = [ ...vm . $el . children ] . find ( el => el && el . tagName === 'TBODY' )
412
+ expect ( tbody ) . toBeDefined ( )
413
+ if ( tbody ) {
414
+ const trs = [ ...tbody . children ]
415
+ expect ( trs . length ) . toBe ( vm . perPage )
416
+ trs . forEach ( ( tr , idx ) => {
417
+ const spy = jest . fn ( )
418
+ vm . $on ( 'row-contextmenu' , spy )
419
+ tr . dispatchEvent ( new MouseEvent ( 'contextmenu' , { button : 2 } ) )
420
+ vm . $off ( 'row-contextmenu' , spy )
421
+ expect ( spy ) . toHaveBeenCalled ( )
422
+ } )
423
+ }
424
+ } )
425
+
407
426
it ( 'each header th should emit a head-clicked event when clicked' , async ( ) => {
408
427
const { app : { $refs } } = window
409
428
const vm = $refs . table_paginated
You can’t perform that action at this time.
0 commit comments