diff --git a/packages/cookie-banner/src/components/base.ts b/packages/cookie-banner/src/components/base.ts index 5b22282a3..3c6f4779d 100644 --- a/packages/cookie-banner/src/components/base.ts +++ b/packages/cookie-banner/src/components/base.ts @@ -70,6 +70,7 @@ export interface ProboRootElement extends ProboElement { readonly gpcApplied: boolean; readonly regulation: Regulation | null; readonly consentMode: "OPT_IN" | "OPT_OUT" | null; + readonly reopenState: ProboState; setState(state: ProboState): void; updateDraft(category: string, value: boolean): void; } diff --git a/packages/cookie-banner/src/components/cookie-banner-root.ts b/packages/cookie-banner/src/components/cookie-banner-root.ts index cfa53d2da..37e4dd1f0 100644 --- a/packages/cookie-banner/src/components/cookie-banner-root.ts +++ b/packages/cookie-banner/src/components/cookie-banner-root.ts @@ -67,6 +67,10 @@ export class ProboCookieBannerRoot extends ProboElement implements ProboRootElem return null; } + get reopenState(): ProboState { + return this.consentMode === "OPT_OUT" ? "banner" : "panel"; + } + attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void { if (name === "reopen-widget" && oldValue !== newValue) { this.dispatchEvent( @@ -93,7 +97,7 @@ export class ProboCookieBannerRoot extends ProboElement implements ProboRootElem } private onOpenPreferences = (): void => { - this.setState("panel"); + this.setState(this.reopenState); }; setState(state: ProboState): void { diff --git a/packages/cookie-banner/src/components/settings-button.ts b/packages/cookie-banner/src/components/settings-button.ts index d9e9a8e77..095acc406 100644 --- a/packages/cookie-banner/src/components/settings-button.ts +++ b/packages/cookie-banner/src/components/settings-button.ts @@ -151,7 +151,7 @@ export class ProboSettingsButton extends HTMLElement { private handleClick = (): void => { if (!this.root) return; - this.root.setState("panel"); + this.root.setState(this.root.reopenState); }; private updateGpcBadge(label: string | null): void { diff --git a/packages/cookie-banner/src/components/settings-link.ts b/packages/cookie-banner/src/components/settings-link.ts index de0e67edc..fa7713cc9 100644 --- a/packages/cookie-banner/src/components/settings-link.ts +++ b/packages/cookie-banner/src/components/settings-link.ts @@ -68,6 +68,6 @@ export class ProboSettingsLink extends HTMLElement { private handleClick = (e: Event): void => { if (!this.root) return; e.preventDefault(); - this.root.setState("panel"); + this.root.setState(this.root.reopenState); }; }