[epic] Port v5 elements to v6
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Refactoring
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- css, html, javascript, react, typescript
- Bereich
- build-system, frontend, tooling
Rechercherichtung
Start with the Phase 0 infrastructure issues, especially tools/pfe-tools/dev-server/, eslint.config.js, commitlint.config.js, elements/package.json, and the test configuration files. Review the ordered dependency tiers and linked issues before choosing a scoped PR. Done means the v6 migration plan is completed in order and every PR targets staging/pfv6 rather than main.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
PatternFly Elements v6 Migration Plan
Ordered PR plan for issue #3110. UPDATE PRs first (rename existing v5 elements
to v6 and port APIs), then CREATE PRs (new elements not in v5).
CRITICAL: All PRs MUST target staging/pfv6 branch, NOT main
Phase 0: Infrastructure (do first)
These PRs unblock everything else.
PR 0.1: Remove/replace dev server with cem serve (#3102)
- Issue #3110 calls out hardcoded tag names in dev server
cem servehandles import maps, CSS transforms, chromeless testing- Remove
tools/pfe-tools/dev-server/and wire upcem serve - Update
npm run dev/npm startscripts
PR 0.2: Rename tooling and config for v6 prefix (#3130)
- Update
eslint.config.jsignore globs (icon demo path) to include pf-v6 as
well as pf-v5 paths - Update
commitlint.config.jsto handlepf-prefix (nov5) - Audit
elements/package.jsonexports for orphaned entries - Update
tsconfigpaths if needed - Update
web-test-runner.config.jsandplaywright.config.tsglobs
Keep v5 prefix until all elements are updated.
PR 0.3: Update docs scaffolding (#3131)
- Update
docs/_snippets/for v6 element names - Update
docs/framework-integration/examples - Update
docs/components/templates
Phase 1: UPDATE PRs (rename v5 -> v6, port to v6 API)
Existing v5 elements renamed to pf-v6-{name} and updated to v6 PatternFly
design tokens, CSS, and React API parity. Order by dependency graph:
leaf components first, then composites.
Tier 1: Zero-dependency leaf elements
These elements don't depend on other PF elements. Port first.
| # | Element | v5 name | Notes | Issue |
|---|---|---|---|---|
| 1.1 | pf-v6-spinner |
pf-v5-spinner |
Pure CSS animation, simplest possible port | #3037 |
| 1.2 | pf-v6-badge |
pf-v5-badge |
Simple text + count | #2982 |
| 1.3 | pf-v6-avatar |
pf-v5-avatar |
Image with fallback | #2979 |
| 1.4 | pf-v6-banner |
pf-v5-banner |
Simple status bar | #2983 |
| 1.5 | pf-v6-icon |
pf-v5-icon |
Icon loading, used by many others | #3014 |
| 1.6 | pf-v6-tooltip |
pf-v5-tooltip |
Floating UI, no PF deps | #3048 |
| 1.7 | pf-v6-progress |
pf-v5-progress |
Progress bar, ARIA managed internally | #3031 |
| 1.8 | pf-v6-switch |
pf-v5-switch |
FACE element, toggle | #3038 |
| 1.9 | pf-v6-text-input |
pf-v5-text-input |
FACE element | #3043 |
| 1.10 | pf-v6-text-area |
pf-v5-text-area |
FACE element | #3041 |
| 1.11 | pf-v6-timestamp |
pf-v5-timestamp |
Date formatting | #3045 |
| 1.12 | pf-v6-back-to-top |
pf-v5-back-to-top |
Scroll button | #2981 |
| 1.13 | pf-v6-background-image |
pf-v5-background-image |
Background container | #2980 |
| 1.14 | pf-v6-helper-text |
pf-v5-helper-text |
Form helper text | #3012 |
Tier 2: Single-dependency elements
Depend on one or more Tier 1 elements.
| # | Element | v5 name | Depends on | Issue |
|---|---|---|---|---|
| 2.1 | pf-v6-button |
pf-v5-button |
icon, spinner | #2984 |
| 2.2 | pf-v6-label |
pf-v5-label |
icon, button | #3017 |
| 2.3 | pf-v6-chip |
pf-v5-chip |
icon, button | |
| 2.4 | pf-v6-hint |
pf-v5-hint |
(light deps) | #3013 |
| 2.5 | pf-v6-panel |
pf-v5-panel |
(light deps) | #3029 |
| 2.6 | pf-v6-code-block |
pf-v5-code-block |
button (copy) | #3002 |
| 2.7 | pf-v6-clipboard-copy |
pf-v5-clipboard-copy |
button, tooltip | #3001 |
| 2.8 | pf-v6-progress-stepper |
pf-v5-progress-stepper |
icon | #3032 |
| 2.9 | pf-v6-tile |
pf-v5-tile |
icon |
Tier 3: Composite elements
Depend on multiple Tier 1-2 elements.
| # | Element | v5 name | Depends on | Issue |
|---|---|---|---|---|
| 3.1 | pf-v6-alert |
pf-v5-alert |
icon, button | #2978 |
| 3.2 | pf-v6-card |
pf-v5-card |
(slots-heavy) | #2986 |
| 3.3 | pf-v6-accordion |
pf-v5-accordion |
expandable pattern | #2976 |
| 3.4 | pf-v6-tabs |
pf-v5-tabs |
RTI controller | #3040 |
| 3.5 | pf-v6-label-group |
pf-v5-label-group |
label, chip | |
| 3.6 | pf-v6-popover |
pf-v5-popover |
floating UI, button | #3030 |
| 3.7 | pf-v6-modal |
pf-v5-modal |
native dialog, button | #3022 |
| 3.8 | pf-v6-table |
pf-v5-table |
complex, many sub-elements | #3039 |
| 3.9 | pf-v6-jump-links |
pf-v5-jump-links |
navigation pattern | #3016 |
| 3.10 | pf-v6-search-input |
pf-v5-search-input |
text-input, button | #3033 |
| 3.11 | pf-v6-dropdown |
pf-v5-dropdown |
floating UI, menu pattern | #3008 |
| 3.12 | pf-v6-select |
pf-v5-select |
floating UI, FACE, menu | #3034 |
Phase 2: CREATE PRs (new elements not in v5)
Components that exist in React v6 but have no v5 web component equivalent.
Order by dependency and complexity.
Tier 4: Simple new elements
| # | Element | React source | Notes | Issue |
|---|---|---|---|---|
| 4.1 | pf-v6-divider |
Divider | <hr> with variants, very simple |
|
| 4.2 | pf-v6-skeleton |
Skeleton | Loading placeholder, CSS-only | #2940 |
| 4.3 | pf-v6-truncate |
Truncate | Text truncation with tooltip | #3050 |
| 4.4 | pf-v6-content |
Content | Typography wrapper | |
| 4.5 | pf-v6-title |
Title | Heading with size variants | |
| 4.6 | pf-v6-radio |
Radio | FACE element | #2566 |
| 4.7 | pf-v6-checkbox |
Checkbox | FACE element | #2574 |
| 4.8 | pf-v6-skip-to-content |
SkipToContent | A11y skip link | #2941 |
| 4.9 | pf-v6-brand |
Brand | Logo/brand image | |
| 4.10 | pf-v6-backdrop |
Backdrop | Modal overlay |
Tier 5: Medium complexity new elements
| # | Element | React source | Notes | Issue |
|---|---|---|---|---|
| 5.1 | pf-v6-expandable-section |
ExpandableSection | <details> based |
#2932 |
| 5.2 | pf-v6-description-list |
DescriptionList | <dl> semantic |
#2931 |
| 5.3 | pf-v6-breadcrumb |
Breadcrumb | Navigation with <nav> |
#2688 |
| 5.4 | pf-v6-list |
List | Ordered/unordered with variants | |
| 5.5 | pf-v6-notification-badge |
NotificationBadge | Badge with icon | #2937 |
| 5.6 | pf-v6-number-input |
NumberInput | FACE, stepper | #3026 |
| 5.7 | pf-v6-form-select |
FormSelect | Native <select> wrapper, FACE |
#3011 |
| 5.8 | pf-v6-slider |
Slider | Range input, FACE | #3036 |
| 5.9 | pf-v6-simple-list |
SimpleList | Selection list | #3035 |
| 5.10 | pf-v6-action-list |
ActionList | Button group layout | #2977 |
| 5.11 | pf-v6-input-group |
InputGroup | Form input composition | #3015 |
| 5.12 | pf-v6-toggle-group |
ToggleGroup | Segmented control | #3046 |
| 5.13 | pf-v6-empty-state |
EmptyState | Empty content placeholder | #3010 |
| 5.14 | pf-v6-hero |
Hero | Hero banner section |
Tier 6: Complex new elements
| # | Element | React source | Notes | Issue |
|---|---|---|---|---|
| 6.1 | pf-v6-menu |
Menu | Complex, foundation for dropdown/select | #3020 |
| 6.2 | pf-v6-menu-toggle |
MenuToggle | Toggle for menu/dropdown | #3021 |
| 6.3 | pf-v6-nav |
Nav | Navigation sidebar | #3024 |
| 6.4 | pf-v6-pagination |
Pagination | Page navigation controls | #2938 |
| 6.5 | pf-v6-toolbar |
Toolbar | Action bar with groups | #3047 |
| 6.6 | pf-v6-drawer |
Drawer | Sliding panel | #3007 |
| 6.7 | pf-v6-sidebar |
Sidebar | Layout sidebar | |
| 6.8 | pf-v6-notification-drawer |
NotificationDrawer | Notifications panel | #3025 |
| 6.9 | pf-v6-overflow-menu |
OverflowMenu | Responsive menu overflow | #3027 |
| 6.10 | pf-v6-data-list |
DataList | Flexible data display | #3005 |
| 6.11 | pf-v6-masthead |
Masthead | App header bar | #3019 |
| 6.12 | pf-v6-page |
Page | App page layout | #3028 |
| 6.13 | pf-v6-form |
Form | Form layout and validation | #1663 |
| 6.14 | pf-v6-text-input-group |
TextInputGroup | Composite input | #3042 |
| 6.15 | pf-v6-dual-list-selector |
DualListSelector | Two-list transfer | #3009 |
Tier 7: High-complexity
| # | Element | React source | Notes | Issue |
|---|---|---|---|---|
| 7.1 | pf-v6-calendar-month |
CalendarMonth | Date picker calendar | #2985 |
| 7.2 | pf-v6-date-picker |
DatePicker | Full date picker | #2536 |
| 7.3 | pf-v6-time-picker |
TimePicker | Time selection | #3044 |
| 7.4 | pf-v6-file-upload |
FileUpload | File upload with preview | #2693 |
| 7.5 | pf-v6-multiple-file-upload |
MultipleFileUpload | Multi-file upload | #3023 |
| 7.6 | pf-v6-wizard |
Wizard | Multi-step flow | #3051 |
| 7.7 | pf-v6-tree-view |
TreeView | Hierarchical tree | #3049 |
| 7.8 | pf-v6-login-page |
LoginPage | Full login pattern | #3018 |
| 7.9 | pf-v6-about-modal |
AboutModal | Branded about dialog | #2926 |
Layout Components (NOT converted to custom elements)
These use PatternFly CSS layout classes directly. Document usage, don't wrap.
- Bullseye, Flex, Gallery, Grid, Level, Split, Stack, List, Simple List, Divider
Per-PR Checklist
Use /update-element for Phase 1 PRs, /create-element for Phase 2 PRs.
For each PR:
- API designed per
.claude/ADVICE.mdrules - CSS custom properties match computed CSS and Stylesheets of react demos on patternfly.org via chrome MCP
- Element source with
@summary, JSDoc - CSS with tokens, logical properties, nesting
- Demos matching patternfly.org (name parity)
- Tests (public API, a11ySnapshot, form submission if FACE)
-
/review-apiaudit -
/review-demosaudit -
/review-a11yaudit - Lint passes (eslint, stylelint)
- Visual parity verified via Chrome MCP
Checklist for v6 rename (beyond element source files):
Dev Server
[!important]
NB: likely remove dev server altogether in favour ofcem serve
tools/pfe-tools/dev-server/plugins/templates/index.html- element tag names hardcoded in shell UI (nav button, card). Update alongside rename.tools/pfe-tools/dev-server/bundle.ts- icon export hardcoded. Update.
Repo
eslint.config.jsignore glob - icon demo path hardcoded with element name. Update.elements/package.jsonexports - orphaned entries from renamed elements linger silently.no-missing-package-exportscatches missing but not extra. Audit manually.
Docs
docs/_snippets/- independent of component docs, easy to miss.docs/framework-integration/- inline code examples with element names.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 394
- Forks
- 107
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus patternfly/patternfly-elements
-
bug
patternfly/patternfly-elements#3158 · 1 zugewiesene Person ·
-
patternfly/patternfly-elements#3136 · 1 Kommentar · 1 zugewiesene Person ·
-
docs
patternfly/patternfly-elements#3131 · 1 zugewiesene Person ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
patternfly/patternfly-elements#3122 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 38/100
patternfly/patternfly-elements#3118 ·
Alle Issues in patternfly/patternfly-elements
Ähnliche Issues
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
-
Mend: dependency security vulnerability untriaged
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100