From 5a800733566f31256c46007887cd97b41efd8f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Fri, 8 May 2026 10:32:45 +0400 Subject: [PATCH] Reopen correct component based on consent mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OPT_OUT regulations (e.g. CCPA) now reopen the banner instead of the preference panel when clicking the settings widget, since users only need Accept/Reject choices rather than granular per-category toggles. Signed-off-by: Émile Ré --- packages/cookie-banner/src/components/base.ts | 1 + packages/cookie-banner/src/components/cookie-banner-root.ts | 6 +++++- packages/cookie-banner/src/components/settings-button.ts | 2 +- packages/cookie-banner/src/components/settings-link.ts | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) 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); }; }