@@ -23,6 +23,7 @@ interface ContextMenuState {
2323export class ContextMenu extends React . Component < ContextMenuProps , ContextMenuState > {
2424 context_menu_div : React . RefObject < HTMLDivElement > = React . createRef ( ) ;
2525 trigger_callbacks : Array < { cb : ( column : string , element : HTMLDivElement ) => void , obj : any } > = [ ] ;
26+ trigger_callbacks_last : Array < { cb : ( column : string , element : HTMLDivElement ) => void , obj : any } > = [ ] ;
2627 hide : any ;
2728 constructor ( props : ContextMenuProps ) {
2829 super ( props ) ;
@@ -39,11 +40,16 @@ export class ContextMenu extends React.Component<ContextMenuProps, ContextMenuSt
3940 } . bind ( this ) ;
4041 $ ( window ) . on ( "click" , this . hide ) ;
4142 }
42- addCallback ( fn : ( column : string , element : HTMLDivElement ) => void , obj : any ) {
43- this . trigger_callbacks . push ( { cb : fn , obj : obj } ) ;
43+ addCallback ( fn : ( column : string , element : HTMLDivElement ) => void , obj : any , priority : "normal" | "last" = "normal" ) {
44+ if ( priority === "last" ) {
45+ this . trigger_callbacks_last . push ( { cb : fn , obj : obj } ) ;
46+ } else {
47+ this . trigger_callbacks . push ( { cb : fn , obj : obj } ) ;
48+ }
4449 }
4550 removeCallbacks ( obj : any ) {
4651 this . trigger_callbacks = this . trigger_callbacks . filter ( trigger => trigger . obj != obj ) ;
52+ this . trigger_callbacks_last = this . trigger_callbacks_last . filter ( trigger => trigger . obj != obj ) ;
4753 }
4854 show ( pageX : number , pageY : number , column : string ) {
4955 // This assumes parent has `relative` positioning
@@ -77,6 +83,9 @@ export class ContextMenu extends React.Component<ContextMenuProps, ContextMenuSt
7783 this . trigger_callbacks . forEach ( function ( trigger ) {
7884 trigger . cb ( me . state . column , cm ) ;
7985 } ) ;
86+ this . trigger_callbacks_last . forEach ( function ( trigger ) {
87+ trigger . cb ( me . state . column , cm ) ;
88+ } ) ;
8089 // After content is added, check if menu overflows viewport and reposition if needed
8190 requestAnimationFrame ( ( ) => {
8291 const rect = cm . getBoundingClientRect ( ) ;
0 commit comments