diff --git a/packages/components/app-switcher/__screenshots__/01-pressed-dark.png b/packages/components/app-switcher/__screenshots__/01-pressed-dark.png new file mode 100644 index 0000000000..1a0fb8c158 Binary files /dev/null and b/packages/components/app-switcher/__screenshots__/01-pressed-dark.png differ diff --git a/packages/components/app-switcher/__screenshots__/01-pressed-light.png b/packages/components/app-switcher/__screenshots__/01-pressed-light.png new file mode 100644 index 0000000000..c9a6f553ac Binary files /dev/null and b/packages/components/app-switcher/__screenshots__/01-pressed-light.png differ diff --git a/packages/components/app-switcher/app-switcher-dropdown-app.scss b/packages/components/app-switcher/app-switcher-dropdown-app.scss index 65d113fda8..07e4354c4d 100644 --- a/packages/components/app-switcher/app-switcher-dropdown-app.scss +++ b/packages/components/app-switcher/app-switcher-dropdown-app.scss @@ -60,7 +60,12 @@ &.kbq-dropdown-item_highlighted, &:hover { - background: var(--kbq-states-background-transparent-active); + background: var(--kbq-list-states-hover-container-background); + } + + &:active, + &.kbq-active { + background: var(--kbq-list-states-active-container-background); } &.cdk-keyboard-focused { diff --git a/packages/components/app-switcher/app-switcher-dropdown-site.scss b/packages/components/app-switcher/app-switcher-dropdown-site.scss index fa4b5a1f7e..2052125621 100644 --- a/packages/components/app-switcher/app-switcher-dropdown-site.scss +++ b/packages/components/app-switcher/app-switcher-dropdown-site.scss @@ -34,7 +34,12 @@ &.kbq-dropdown-item_highlighted, &:hover { - background: var(--kbq-states-background-transparent-active); + background: var(--kbq-list-states-hover-container-background); + } + + &:active, + &.kbq-active { + background: var(--kbq-list-states-active-container-background); } &.cdk-keyboard-focused { diff --git a/packages/components/app-switcher/e2e.playwright-spec.ts b/packages/components/app-switcher/e2e.playwright-spec.ts index 461a2a4af5..dbd4de3093 100644 --- a/packages/components/app-switcher/e2e.playwright-spec.ts +++ b/packages/components/app-switcher/e2e.playwright-spec.ts @@ -14,6 +14,23 @@ test.describe('KbqAppSwitcherModule', () => { await e2eEnableDarkTheme(page); await expect(getScreenshotTarget(locator)).toHaveScreenshot('01-dark.png'); }); + + test('pressed', async ({ page }) => { + await page.goto('/E2eAppSwitcherStates'); + const locator = getComponent(page); + const items = page.locator('.kbq-app-switcher-list-item'); + + await items.first().waitFor(); + // App rows are generated from data, so the pressed class is applied from the spec rather than the + // fixture template (select/dropdown/tree fake `.kbq-active`/`.kbq-pressed` inline instead). + // `.kbq-app-switcher-list-item` has no `.kbq-active` host binding, so the injected class survives. + await items.nth(0).evaluate((el) => el.classList.add('kbq-active')); // selected + pressed + await items.nth(1).evaluate((el) => el.classList.add('kbq-active')); // pressed + + await expect(getScreenshotTarget(locator)).toHaveScreenshot('01-pressed-light.png'); + await e2eEnableDarkTheme(page); + await expect(getScreenshotTarget(locator)).toHaveScreenshot('01-pressed-dark.png'); + }); }); test.describe('E2eAppSwitcherWithSitesStates', () => { diff --git a/packages/components/app-switcher/kbq-app-switcher-list-item.scss b/packages/components/app-switcher/kbq-app-switcher-list-item.scss index 65f4f1d7a4..47fe02c0d5 100644 --- a/packages/components/app-switcher/kbq-app-switcher-list-item.scss +++ b/packages/components/app-switcher/kbq-app-switcher-list-item.scss @@ -130,29 +130,29 @@ &:hover, &.kbq-hover { - background: var(--kbq-states-background-transparent-hover); + background: var(--kbq-list-states-hover-container-background); & .kbq-app-switcher-list-item__toggle { - background: var(--kbq-states-background-transparent-hover); + background: var(--kbq-list-states-hover-container-background); } } &:active, &.kbq-active { - background: var(--kbq-states-background-transparent-active); + background: var(--kbq-list-states-active-container-background); } &.kbq-selected { - background: var(--kbq-background-theme-less); + background: var(--kbq-list-states-selected-container-background); &:hover, &.kbq-hover { - background: var(--kbq-states-background-theme-less-hover); + background: var(--kbq-list-states-selected-hover-container-background); } &:active, &.kbq-active { - background: var(--kbq-states-background-theme-less-active); + background: var(--kbq-list-states-selected-active-container-background); } } diff --git a/packages/components/core/option/_option-theme.scss b/packages/components/core/option/_option-theme.scss index ba3b6c137c..1306ed7f80 100644 --- a/packages/components/core/option/_option-theme.scss +++ b/packages/components/core/option/_option-theme.scss @@ -24,12 +24,23 @@ @include kbq-option(states-hover); } + &:active:not(.kbq-disabled), + &.kbq-pressed:not(.kbq-disabled) { + // the active state defines only a background token; the mixin would emit undefined text/icon/caption color vars + background: var(--kbq-list-states-active-container-background); + } + &.kbq-selected:not(.kbq-disabled) { @include kbq-option(states-selected); &.kbq-active { @include kbq-option(states-selected-hover); } + + &:active, + &.kbq-pressed { + background: var(--kbq-list-states-selected-active-container-background); + } } &.kbq-disabled { @@ -54,6 +65,11 @@ &.kbq-active { @include kbq-option(multiple-states-selected-hover); } + + &:active, + &.kbq-pressed { + background: var(--kbq-list-multiple-states-selected-active-container-background); + } } } } diff --git a/packages/components/dropdown/__screenshots__/01-dark.png b/packages/components/dropdown/__screenshots__/01-dark.png index e117b9baf4..1b8d1fbc96 100644 Binary files a/packages/components/dropdown/__screenshots__/01-dark.png and b/packages/components/dropdown/__screenshots__/01-dark.png differ diff --git a/packages/components/dropdown/__screenshots__/01-light.png b/packages/components/dropdown/__screenshots__/01-light.png index 522270eff3..5477376f22 100644 Binary files a/packages/components/dropdown/__screenshots__/01-light.png and b/packages/components/dropdown/__screenshots__/01-light.png differ diff --git a/packages/components/dropdown/_dropdown-theme.scss b/packages/components/dropdown/_dropdown-theme.scss index bfdcfb944e..ea060c0d86 100644 --- a/packages/components/dropdown/_dropdown-theme.scss +++ b/packages/components/dropdown/_dropdown-theme.scss @@ -27,12 +27,23 @@ @include _kbq-dropdown-item-state(states-hover); } + &:active:not(.kbq-disabled), + &.kbq-active:not(.kbq-disabled) { + // the active state defines only a background token; the mixin would emit undefined text/icon color vars + background: var(--kbq-list-states-active-container-background); + } + &.kbq-selected { @include _kbq-dropdown-item-state(states-selected); &.cdk-focused:not(.kbq-disabled) { @include _kbq-dropdown-item-state(states-selected-hover); } + + &:active:not(.kbq-disabled), + &.kbq-active:not(.kbq-disabled) { + background: var(--kbq-list-states-selected-active-container-background); + } } &.kbq-disabled { diff --git a/packages/components/dropdown/e2e.ts b/packages/components/dropdown/e2e.ts index 2a16041497..1fa88214d7 100644 --- a/packages/components/dropdown/e2e.ts +++ b/packages/components/dropdown/e2e.ts @@ -26,6 +26,10 @@ import { KbqDropdownModule } from './dropdown.module'; + + + +