@@ -36,6 +36,8 @@ function newEmptyStatus(): AcceptStatus {
3636export class CookieSolutionBanner extends LitElement {
3737 static styles = [ styleSheet ] ;
3838
39+ protected disconnectedController ?: AbortController ;
40+
3941 @property ( { type : String , attribute : 'cookie-name' } )
4042 cookieName : string = 'laravel_cookie_solution' ;
4143
@@ -66,6 +68,9 @@ export class CookieSolutionBanner extends LitElement {
6668 async connectedCallback ( ) {
6769 super . connectedCallback ( ) ;
6870
71+ this . disconnectedController = new AbortController ( ) ;
72+
73+ this . _initListeners ( ) ;
6974 await this . _loadConfig ( ) ;
7075 this . _loadStatus ( ) ;
7176 this . _loadContrastColor ( ) ;
@@ -80,6 +85,34 @@ export class CookieSolutionBanner extends LitElement {
8085 }
8186 }
8287
88+ disconnectedCallback ( ) {
89+ this . disconnectedController ?. abort ( ) ;
90+
91+ super . disconnectedCallback ( ) ;
92+ }
93+
94+ private _initListeners ( ) : void {
95+ document . addEventListener (
96+ 'click' ,
97+ ( event ) => {
98+ let target = event . target ;
99+
100+ if ( ! ( target instanceof HTMLElement ) ) {
101+ return ;
102+ }
103+
104+ if ( target . getAttribute ( 'data-cookie-solution-toggle' ) === null ) {
105+ return ;
106+ }
107+
108+ event . preventDefault ( ) ;
109+
110+ this . show ( ) ;
111+ } ,
112+ { signal : this . disconnectedController ?. signal } ,
113+ ) ;
114+ }
115+
83116 private async _loadConfig ( ) : Promise < void > {
84117 this . _config = window . _cookieSolution ;
85118 }
@@ -265,7 +298,7 @@ export class CookieSolutionBanner extends LitElement {
265298 }
266299
267300 if ( ! this . _showModal ) {
268- return this . modalToggle ( ) ;
301+ return ! this . _config . toggle_enabled ? null : this . modalToggle ( ) ;
269302 }
270303
271304 return html `
0 commit comments