diff --git a/packages/calcite-components/src/components.d.ts b/packages/calcite-components/src/components.d.ts index af91005d058..4c163bdf1c3 100644 --- a/packages/calcite-components/src/components.d.ts +++ b/packages/calcite-components/src/components.d.ts @@ -4562,6 +4562,10 @@ export namespace Components { * Accessible name for the dropdown menu. */ "dropdownLabel": string; + /** + * Defines the available placements that can be used when a flip occurs. + */ + "flipPlacements": FlipPlacement[]; /** * Specifies the kind of the component, which will apply to border and background, if applicable. */ @@ -4574,6 +4578,11 @@ export namespace Components { * Determines the type of positioning to use for the overlaid content. Using `"absolute"` will work for most cases. The component will be positioned inside of overflowing parent containers and will affect the container's layout. `"fixed"` should be used to escape an overflowing parent container, or when the reference element's `position` CSS property is `"fixed"`. */ "overlayPositioning": OverlayPositioning; + /** + * Determines where the component will be positioned relative to the container element. + * @default "bottom-end" + */ + "placement": MenuPlacement; /** * Specifies an icon to display at the end of the primary button. */ @@ -12509,6 +12518,10 @@ declare namespace LocalJSX { * Accessible name for the dropdown menu. */ "dropdownLabel"?: string; + /** + * Defines the available placements that can be used when a flip occurs. + */ + "flipPlacements"?: FlipPlacement[]; /** * Specifies the kind of the component, which will apply to border and background, if applicable. */ @@ -12529,6 +12542,11 @@ declare namespace LocalJSX { * Determines the type of positioning to use for the overlaid content. Using `"absolute"` will work for most cases. The component will be positioned inside of overflowing parent containers and will affect the container's layout. `"fixed"` should be used to escape an overflowing parent container, or when the reference element's `position` CSS property is `"fixed"`. */ "overlayPositioning"?: OverlayPositioning; + /** + * Determines where the component will be positioned relative to the container element. + * @default "bottom-end" + */ + "placement"?: MenuPlacement; /** * Specifies an icon to display at the end of the primary button. */ 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 3d2c6d9086b..45ed327507d 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 @@ -1,6 +1,7 @@ import { newE2EPage } from "@stencil/core/testing"; -import { defaults, hidden, reflects, renders } from "../../tests/commonTests"; +import { defaults, hidden, reflects, renders, themed } from "../../tests/commonTests"; import { html } from "../../../support/formatting"; +import { CSS } from "./resources"; describe("calcite-dropdown-group", () => { describe("defaults", () => { @@ -64,4 +65,41 @@ describe("calcite-dropdown-group", () => { expect(items.length).toBe(3); items.forEach(async (item) => expect(await item.getProperty("selectionMode")).toBe("none")); }); + + describe("theme", () => { + describe("default", () => { + themed(html` `, { + "--calcite-dropdown-group-border-color": [ + { + shadowSelector: `.${CSS.title}`, + targetProp: "borderColor", + }, + ], + "--calcite-dropdown-group-text-color": { + shadowSelector: `.${CSS.title}`, + targetProp: "color", + }, + }); + }); + + describe("separator", () => { + themed( + html` + + + + + `, + { + "--calcite-dropdown-group-border-color": [ + { + selector: "calcite-dropdown-group[group-title^='second']", + shadowSelector: `.${CSS.separator}`, + targetProp: "backgroundColor", + }, + ], + }, + ); + }); + }); }); 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 57fa3a977b8..b794b9e27d5 100644 --- a/packages/calcite-components/src/components/dropdown-group/dropdown-group.tsx +++ b/packages/calcite-components/src/components/dropdown-group/dropdown-group.tsx @@ -12,7 +12,7 @@ import { } from "@stencil/core"; import { Scale, SelectionMode } from "../interfaces"; import { createObserver } from "../../utils/observers"; -import { CSS } from "../dropdown-item/resources"; +import { CSS } from "./resources"; import { RequestedItem } from "./interfaces"; /** @@ -91,13 +91,13 @@ export class DropdownGroup { render(): VNode { const groupTitle = this.groupTitle ? ( -