File tree Expand file tree Collapse file tree 5 files changed +34
-5
lines changed Expand file tree Collapse file tree 5 files changed +34
-5
lines changed Original file line number Diff line number Diff line change @@ -108,7 +108,12 @@ class NotificationComponent extends HTMLElement {
108108    private  handleActionButtonClick : EventListener  =  ( e : Event )  =>  { 
109109        const  target  =  e . currentTarget  as  HTMLElement ; 
110110        const  index  =  parseInt ( target . dataset . index ) ; 
111-         this . settings . buttons [ index ] . callback ( ) ; 
111+         this . settings . buttons ?. [ index ] ?. callback ( ) ; 
112+         if  ( this . settings . buttons ?. [ index ] ?. event  !==  null )  { 
113+             window . dispatchEvent ( new  CustomEvent ( this . settings . buttons [ index ] . event ,  { 
114+                 detail : this . settings . buttons [ index ] ?. eventData  ??  null , 
115+             } ) ) ; 
116+         } 
112117        this . remove ( ) ; 
113118    } ; 
114119
Original file line number Diff line number Diff line change @@ -80,7 +80,12 @@ class SnackbarComponent extends HTMLElement {
8080    private  handleActionButtonClick : EventListener  =  ( e : Event )  =>  { 
8181        const  target  =  e . currentTarget  as  HTMLElement ; 
8282        const  index  =  parseInt ( target . dataset . index ) ; 
83-         this . settings . buttons [ index ] . callback ( ) ; 
83+         this . settings . buttons ?. [ index ] ?. callback ( ) ; 
84+         if  ( this . settings . buttons [ index ] ?. event  !==  null )  { 
85+             window . dispatchEvent ( new  CustomEvent ( this . settings . buttons [ index ] . event ,  { 
86+                 detail : this . settings . buttons [ index ] ?. eventData  ??  null , 
87+             } ) ) ; 
88+         } 
8489        this . remove ( ) ; 
8590    } ; 
8691
Original file line number Diff line number Diff line change @@ -120,6 +120,8 @@ class Sonner extends HTMLElement {
120120                callback : ( ) => { } , 
121121                label : "" , 
122122                classes : "" , 
123+                 event : null , 
124+                 eventData : null , 
123125            } , 
124126        } ,  settings ) ; 
125127
@@ -131,7 +133,6 @@ class Sonner extends HTMLElement {
131133            toast . classes  =  [ toast . classes ] ; 
132134        } 
133135        if  ( typeof  toast . button ?. callback  !==  "function" )  { 
134-             console . warn ( "Sonner callback must be a function" ) ; 
135136            toast . button . callback  =  ( ) => { } ; 
136137        } 
137138        if  ( ! toast . button ?. classes )  { 
@@ -208,6 +209,11 @@ class SonnerToast extends HTMLElement {
208209        if  ( buttonEl )  { 
209210            buttonEl . addEventListener ( "click" ,  ( ) => { 
210211                this . settings . button . callback ( ) ; 
212+                 if  ( this . settings . button ?. event  !==  null )  { 
213+                     window . dispatchEvent ( new  CustomEvent ( this . settings . button . event ,  { 
214+                         detail : this . settings . button ?. eventData  ??  null , 
215+                     } ) ) ; 
216+                 } 
211217                this . delete ( ) ; 
212218            } ) ; 
213219        } 
Original file line number Diff line number Diff line change 11export  type  NotificationButton  =  { 
22    label : string ; 
3-     callback : Function ; 
3+     callback ? : Function ; 
44    ariaLabel ?: string ; 
55    classes ?: string [ ] ; 
66    autofocus ?: boolean ; 
7+     event : string ; 
8+     eventData : any ; 
79} ; 
810
911export  type  SnackbarNotification  =  { 
@@ -46,9 +48,11 @@ export type SonnerNotification = {
4648    duration : number , 
4749    classes : Array < string > | string , 
4850    button : { 
49-         callback : Function , 
51+         callback ? : Function , 
5052        label : string , 
5153        classes : Array < string > | string , 
54+         event ?: string ; 
55+         eventData ?: any ; 
5256    } 
5357} 
5458
Original file line number Diff line number Diff line change 4444
4545        let  count  =  0 ; 
4646
47+         window . addEventListener ( "test-event" ,  ( e ) => { 
48+             alert ( e . detail ) ; 
49+         } ) ; 
50+ 
4751        const  sonner2  =  document . body . querySelector ( ".js-sonner2" ) ; 
4852        sonner2 . addEventListener ( "click" ,  ( ) => { 
4953            const  event  =  new  CustomEvent ( "notify:sonner" ,  { 
5054                detail : { 
5155                    message : `Example sonner toast message.` , 
56+                     button : { 
57+                         label : "Test" , 
58+                         event : "test-event" , 
59+                         eventData : "Hi mom!" , 
60+                     } 
5261                } 
5362            } ) ; 
5463            window . dispatchEvent ( event ) ; 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments