Skip to content

Conversation

Artur-
Copy link
Member

@Artur- Artur- commented Aug 25, 2025

Related to #7960

Add a new breadcrumb navigation component with the following features:

  • Main <vaadin-breadcrumb> container component with semantic HTML
  • <vaadin-breadcrumb-item> sub-component for individual items
  • Support for href, target, and router-ignore attributes
  • Automatic detection and styling of the last/current item
  • Disabled state support
  • Full accessibility with ARIA attributes
  • Lumo theme integration with customizable CSS properties
  • TypeScript definitions
  • Demo page and test suite

🤖 Generated with Claude Code

@Artur- Artur- force-pushed the web-components-breadcrumb branch 2 times, most recently from 562d4f2 to c41a3a1 Compare August 25, 2025 13:10
Copy link

@yuriy-fix
Copy link
Contributor

We will consider this component after the current styling changes are completed. Possible target: 25.1.
As an alternative, we will also evaluate adding it as an experimental component during the beta period.
@Artur- , please share when PR will become available for a review.

*
* See [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.
*/
declare class Breadcrumb extends ElementMixin(ThemableMixin(HTMLElement)) {}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's these move .d.ts files to src and align structure with existing components.
We can discuss moving HTMLElementTagNameMap to the root level in a separate issue.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

this.setAttribute('role', 'navigation');
}

this.setAttribute('aria-label', 'Breadcrumb');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should either be left to the user or changed to use ariaLabel property with reflectToAttribute.
There is an example in vaadin-drawer-toggle web component which has default value.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Artur- and others added 12 commits September 30, 2025 15:23
Add a new breadcrumb navigation component with the following features:
- Main `<vaadin-breadcrumb>` container component with semantic HTML
- `<vaadin-breadcrumb-item>` sub-component for individual items
- Support for href, target, and router-ignore attributes
- Automatic detection and styling of the last/current item
- Disabled state support
- Full accessibility with ARIA attributes
- Lumo theme integration with customizable CSS properties
- TypeScript definitions
- Demo page and test suite

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Add comprehensive test coverage including:
- Visual regression tests for base and Lumo themes
- DOM snapshot tests for component structure
- Tests for various states (hover, focus, disabled)
- RTL support tests
- Tests for different breadcrumb configurations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Co-authored-by: Serhii Kulykov <[email protected]>
Align breadcrumb component structure with existing components by moving
TypeScript definition files to src/ directory and updating root files
to re-export from src. This follows the established pattern used by
button, accordion, and other components.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Add experimental feature flag to breadcrumb components following the
established pattern used by other experimental Vaadin components.
Components are now hidden behind the breadcrumbComponent feature flag
and must be explicitly enabled.

- Add static experimental() getter to both breadcrumb classes
- Update JSDoc and TypeScript documentation with experimental warning
- Update dev example and tests to enable feature flag
- Follow same pattern as vaadin-master-detail-layout

Users must enable with:
window.Vaadin.featureFlags.breadcrumbComponent = true

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Use ??= instead of ||= for initializing Vaadin.featureFlags objects.
This is more semantically correct as it only assigns when the value
is nullish (null/undefined) rather than any falsy value, preventing
accidental overwrites of existing objects.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Update imports from '@vaadin/vaadin-lumo-styles/font-icons.js' to
'@vaadin/vaadin-lumo-styles/icons.js' to fix module resolution errors.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Update breadcrumb-item to use the same 'breadcrumbComponent' feature flag
as the breadcrumb container, simplifying the API for users.

Both components now share window.Vaadin.featureFlags.breadcrumbComponent = true

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@Artur- Artur- force-pushed the web-components-breadcrumb branch from 4487451 to 6604731 Compare September 30, 2025 12:32
Copy link

@Artur- Artur- marked this pull request as ready for review September 30, 2025 13:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants