diff --git a/packages/calcite-components/src/components/dropdown-group/dropdown-group.e2e.ts b/packages/calcite-components/src/components/dropdown-group/dropdown-group.e2e.ts index 59195d6a6d3..0add1eba961 100644 --- a/packages/calcite-components/src/components/dropdown-group/dropdown-group.e2e.ts +++ b/packages/calcite-components/src/components/dropdown-group/dropdown-group.e2e.ts @@ -4,6 +4,8 @@ import { describe, expect, it } from "vitest"; import { defaults, hidden, reflects, renders } from "../../tests/commonTests"; import { html } from "../../../support/formatting"; import { findAll } from "../../tests/utils"; +import { ComponentTestTokens, themed } from "../../tests/commonTests/themed"; +import { CSS } from "./resources"; describe("calcite-dropdown-group", () => { describe("defaults", () => { @@ -73,4 +75,30 @@ describe("calcite-dropdown-group", () => { expect(await item.getProperty("selectionMode")).toBe("none"); } }); + + describe("theme", () => { + const tokens: ComponentTestTokens = { + "--calcite-dropdown-group-border-color": [ + { + targetProp: "borderColor", + shadowSelector: `.${CSS.title}`, + selector: `calcite-dropdown-group`, + }, + { + targetProp: "backgroundColor", + shadowSelector: `.${CSS.separator}`, + selector: `calcite-dropdown-group.two`, + }, + ], + "--calcite-dropdown-group-title-text-color": { + targetProp: "color", + shadowSelector: `.${CSS.title}`, + selector: `calcite-dropdown-group`, + }, + }; + themed( + `AA`, + tokens, + ); + }); }); diff --git a/packages/calcite-components/src/components/dropdown-group/dropdown-group.scss b/packages/calcite-components/src/components/dropdown-group/dropdown-group.scss index f557cf48bde..7e5d1b92051 100644 --- a/packages/calcite-components/src/components/dropdown-group/dropdown-group.scss +++ b/packages/calcite-components/src/components/dropdown-group/dropdown-group.scss @@ -1,3 +1,12 @@ +/** +* CSS Custom Properties +* +* These properties can be overridden using the component's tag as selector. +* +* @prop --calcite-dropdown-group-border-color: Specifies the color of the dropdown's border. +* @prop --calcite-dropdown-group-title-text-color: Specifies the color of the dropdown's title. +*/ + :host { @apply block; } @@ -7,9 +16,7 @@ } .dropdown-title { - @apply border-color-3 - text-color-2 - -mb-px + @apply -mb-px block cursor-default break-words @@ -17,11 +24,14 @@ border-b border-solid font-bold; + + border-color: var(--calcite-dropdown-group-border-color, var(--calcite-color-border-3)); + color: var(--calcite-dropdown-group-title-text-color, var(--calcite-color-text-2)); } .dropdown-separator { @apply block h-px; - background-color: theme("borderColor.color.3"); + background-color: var(--calcite-dropdown-group-border-color, var(--calcite-color-border-3)); } :host([scale="s"]) { diff --git a/packages/calcite-components/src/components/dropdown-group/dropdown-group.tsx b/packages/calcite-components/src/components/dropdown-group/dropdown-group.tsx index 1fc67a7227b..2c1eafd2252 100644 --- a/packages/calcite-components/src/components/dropdown-group/dropdown-group.tsx +++ b/packages/calcite-components/src/components/dropdown-group/dropdown-group.tsx @@ -3,8 +3,9 @@ import { PropertyValues } from "lit"; import { LitElement, property, createEvent, h, JsxNode } from "@arcgis/lumina"; import { Scale, SelectionMode } from "../interfaces"; import { createObserver } from "../../utils/observers"; -import { CSS } from "../dropdown-item/resources"; +import { CSS as ItemCSS } from "../dropdown-item/resources"; import type { DropdownItem } from "../dropdown-item/dropdown-item"; +import { CSS } from "./resources"; import { RequestedItem } from "./interfaces"; import { styles } from "./dropdown-group.scss"; @@ -135,13 +136,13 @@ export class DropdownGroup extends LitElement { override render(): JsxNode { const groupTitle = this.groupTitle ? ( - + {this.groupTitle} ) : null; const dropdownSeparator = - this.groupPosition > 0 ?