Skip to content

[feat]: Update <pf-v6-dropdown> for PatternFly v6 #3008

@bennypowers

Description

@bennypowers

Summary

Update `` to implement the PatternFly v6 Dropdown component.

Action menu triggered by a toggle button, for presenting a list of actions or links.

Prior Art

Source Element Status
PFE v4 `` Exists
cem `` Exists
cockpit `` Exists
chickadee -- --

Sub-components

  • `` - Individual action item
  • `` - Grouped items with optional title

Requirements

  • MUST implement PFv6 visual designs
  • MUST provide end-user feature parity with `@patternfly/react-core` Dropdown
  • MAY adjust element API to leverage web platform strengths
  • SHOULD maintain CSS custom property theming compatibility
  • SHOULD expose useful CSS shadow parts

Element-specific considerations

  • MAJOR API CHANGE: React v6 Dropdown is a thin wrapper around `Menu` + `MenuToggle`. Its API is fundamentally different from v5. Study the v6 React source carefully before porting.
  • React v6 `Dropdown` props: `toggle` (render prop for `MenuToggle`), `popperProps`, `isScrollable`, `isPlain`, `isGrouped`, `minMenuHeight`, `maxMenuHeight`
  • React `DropdownItem` is effectively `MenuItem`; `DropdownGroup` is `MenuGroup`; `DropdownList` is `MenuList`
  • Floating UI used for positioning (popperProps)
  • Consider whether to implement as composition of `` + ``, or as a standalone element; strongly prefer composition
  • Keyboard: Arrow keys navigate items, Escape closes, Enter/Space selects
  • Focus returns to toggle on close

Checklist

Rename

  • Delete `elements/pf-v5-dropdown/`
  • Update `elements/package.json` exports
  • Update `eslint.config.js` ignore globs if applicable
  • Update docs `_snippets/` and `framework-integration/` references

Implementation

  • API per `.claude/ADVICE.md`
  • CSS uses v6 tokens, logical properties, nesting
  • `@summary` and JSDoc on element class

Demos

  • Demos match patternfly.org naming/structure
  • CSS custom properties match computed styles from patternfly.org (Chrome MCP)
  • Visual parity verified via Chrome MCP

Tests

  • Public API covered (attributes, properties, events, slots)
  • `a11ySnapshot` assertions

Reviews

  • `/review-api` passes
  • `/review-demos` passes
  • `/review-a11y` passes
  • `eslint` and `stylelint` pass

Ship

  • Add changeset
  • PR targets `staging/pfv6` (NOT `main`)

Metadata

Metadata

Assignees

No one assigned

    Labels

    1:1Aligning components with PatternFly v4for devpriority: mediumSeverity level: 2

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions