@@ -5,7 +5,7 @@ import {waitForTimeout} from '@alwatr/wait';
5
5
import { snackbarActionButtonClickedSignal , snackbarSignal } from './signal.js' ;
6
6
7
7
import type { SnackbarElement } from './element.js' ;
8
- import type { SnackbarOptions } from './type.js' ;
8
+ import type { SnackbarActionHandler , SnackbarOptions } from './type.js' ;
9
9
10
10
const logger = createLogger ( `${ __package_name__ } /handler` ) ;
11
11
@@ -43,13 +43,14 @@ function createSnackbarElement(options: SnackbarOptions): SnackbarElement {
43
43
/**
44
44
* Handle action button click.
45
45
*
46
- * @param options - Options for configuring the snackbar.
47
46
* @param closeSnackbar - Function to close the snackbar.
47
+ * @param handler - Handler to be called when the action button is clicked.
48
48
*/
49
- function handleActionButtonClick ( closeSnackbar : ( ) => Promise < void > ) : void {
50
- const actionButtonClickHandler = ( ) => {
49
+ function handleActionButtonClick ( closeSnackbar : ( ) => Promise < void > , handler ?: SnackbarActionHandler ) : void {
50
+ const actionButtonClickHandler = async ( ) => {
51
51
logger . logOther ?.( 'Snackbar action button clicked.' ) ;
52
52
53
+ await handler ?.( ) ;
53
54
return closeSnackbar ( ) ;
54
55
} ;
55
56
@@ -83,7 +84,7 @@ async function showSnackbar(options: SnackbarOptions): Promise<void> {
83
84
} ;
84
85
85
86
if ( options . action != null ) {
86
- handleActionButtonClick ( closeSnackbar ) ;
87
+ handleActionButtonClick ( closeSnackbar , options . action . handler ) ;
87
88
}
88
89
89
90
// Close the last snackbar if it exists
0 commit comments