diff --git a/src/components/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.spec.ts b/src/components/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.spec.ts index a91e3fae5f..f7f2edf7bd 100644 --- a/src/components/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.spec.ts +++ b/src/components/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.spec.ts @@ -2,7 +2,7 @@ import { expect, fixture } from '@open-wc/testing'; import { html } from 'lit/static-html.js'; import { waitForLitRender } from '../../core/testing'; -import { testA11yTreeSnapshot } from '../../core/testing/a11y-tree-snapshot'; +import { testA11yTreeSnapshot } from '../../core/testing/private'; import type { SbbAutocompleteGridButtonElement } from './autocomplete-grid-button'; import '../autocomplete-grid'; diff --git a/src/components/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.ts b/src/components/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.ts index 889ea2f789..cc14d1a2dc 100644 --- a/src/components/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.ts +++ b/src/components/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.ts @@ -92,7 +92,7 @@ export class SbbAutocompleteGridOptionElement extends SbbOptionBaseElement { if ( labelNodes.length === 0 || slotNodes.filter((n) => !(n instanceof Element) || n.localName !== 'template').length !== - labelNodes.length + labelNodes.length ) { this.disableLabelHighlight = true; return; diff --git a/src/components/autocomplete-grid/autocomplete-grid/readme.md b/src/components/autocomplete-grid/autocomplete-grid/readme.md index 8683afc20e..4a7caaccef 100644 --- a/src/components/autocomplete-grid/autocomplete-grid/readme.md +++ b/src/components/autocomplete-grid/autocomplete-grid/readme.md @@ -143,11 +143,10 @@ using `aria-activedescendant` to support navigation though the autocomplete opti ## Methods -| Name | Privacy | Description | Parameters | Return | Inherited From | -| --------------- | ------- | ------------------------ | ---------- | ------ | -------------------------- | -| `checkChildren` | public | | | `void` | SbbAutocompleteBaseElement | -| `open` | public | Opens the autocomplete. | | `void` | SbbAutocompleteBaseElement | -| `close` | public | Closes the autocomplete. | | `void` | SbbAutocompleteBaseElement | +| Name | Privacy | Description | Parameters | Return | Inherited From | +| ------- | ------- | ------------------------ | ---------- | ------ | -------------------------- | +| `open` | public | Opens the autocomplete. | | `void` | SbbAutocompleteBaseElement | +| `close` | public | Closes the autocomplete. | | `void` | SbbAutocompleteBaseElement | ## Events diff --git a/src/components/autocomplete/readme.md b/src/components/autocomplete/readme.md index bfbc9e6d2b..f98979d0d7 100644 --- a/src/components/autocomplete/readme.md +++ b/src/components/autocomplete/readme.md @@ -107,11 +107,10 @@ using `aria-activedescendant` to support navigation though the autocomplete opti ## Methods -| Name | Privacy | Description | Parameters | Return | Inherited From | -| --------------- | ------- | ------------------------ | ---------- | ------ | -------------------------- | -| `checkChildren` | public | | | `void` | SbbAutocompleteBaseElement | -| `open` | public | Opens the autocomplete. | | `void` | SbbAutocompleteBaseElement | -| `close` | public | Closes the autocomplete. | | `void` | SbbAutocompleteBaseElement | +| Name | Privacy | Description | Parameters | Return | Inherited From | +| ------- | ------- | ------------------------ | ---------- | ------ | -------------------------- | +| `open` | public | Opens the autocomplete. | | `void` | SbbAutocompleteBaseElement | +| `close` | public | Closes the autocomplete. | | `void` | SbbAutocompleteBaseElement | ## Events diff --git a/src/components/button/transparent-button-link/__snapshots__/transparent-button-link.spec.snap.js b/src/components/button/transparent-button-link/__snapshots__/transparent-button-link.spec.snap.js index 8e320ae107..0c139e0161 100644 --- a/src/components/button/transparent-button-link/__snapshots__/transparent-button-link.spec.snap.js +++ b/src/components/button/transparent-button-link/__snapshots__/transparent-button-link.spec.snap.js @@ -142,6 +142,54 @@ snapshots["sbb-transparent-button-link renders a sbb-transparent-button-link wit "role": "WebArea", "name": "", "children": [ + { + "role": "link", + "name": "", + "children": [ + { + "role": "link", + "name": "Label Text . Link target opens in a new window.", + "children": [ + { + "role": "text", + "name": "Label Text" + }, + { + "role": "text", + "name": ". " + }, + { + "role": "text", + "name": "Link target opens in a new window." + } + ] + } + ] + }, + { + "role": "link", + "name": "", + "children": [ + { + "role": "link", + "name": "Label Text . Link target opens in a new window.", + "children": [ + { + "role": "text", + "name": "Label Text" + }, + { + "role": "text", + "name": ". " + }, + { + "role": "text", + "name": "Link target opens in a new window." + } + ] + } + ] + }, { "role": "link", "name": "", diff --git a/src/components/core/common-behaviors/autocomplete-base-element.ts b/src/components/core/common-behaviors/autocomplete-base-element.ts index 86166d7c9e..a1f656ea10 100644 --- a/src/components/core/common-behaviors/autocomplete-base-element.ts +++ b/src/components/core/common-behaviors/autocomplete-base-element.ts @@ -21,12 +21,12 @@ import { } from '../overlay'; import style from './autocomplete-base-element.scss?lit&inline'; +import { SbbHydrationMixin } from './hydration-mixin'; import { SbbNegativeMixin } from './negative-mixin'; import type { SbbOptionBaseElement } from './option-base-element'; -import { SlotChildObserver } from './slot-child-observer'; -export abstract class SbbAutocompleteBaseElement extends SlotChildObserver( - SbbNegativeMixin(LitElement), +export abstract class SbbAutocompleteBaseElement extends SbbNegativeMixin( + SbbHydrationMixin(LitElement), ) { public static override styles: CSSResultGroup = style; @@ -170,7 +170,7 @@ export abstract class SbbAutocompleteBaseElement extends SlotChildObserver( this._didLoad = true; } - public override checkChildren(): void { + private _handleSlotchange(): void { this._highlightOptions(this.triggerElement?.value); } @@ -434,7 +434,7 @@ export abstract class SbbAutocompleteBaseElement extends SlotChildObserver( id=${!this.ariaRoleOnHost ? this.overlayId : nothing} ${ref((containerRef) => (this._optionContainer = containerRef as HTMLElement))} > - + diff --git a/src/components/core/common-behaviors/optgroup-base-element.ts b/src/components/core/common-behaviors/optgroup-base-element.ts index 60e38acfab..99f339ff73 100644 --- a/src/components/core/common-behaviors/optgroup-base-element.ts +++ b/src/components/core/common-behaviors/optgroup-base-element.ts @@ -13,11 +13,11 @@ import { isSafari, isValidAttribute, setAttribute } from '../dom'; import { AgnosticMutationObserver } from '../observers'; import { SbbDisabledMixin } from './disabled-mixins'; +import { SbbHydrationMixin } from './hydration-mixin'; import style from './optgroup-base-element.scss?lit&inline'; import type { SbbOptionBaseElement } from './option-base-element'; -import { SlotChildObserver } from './slot-child-observer'; -export abstract class SbbOptgroupBaseElement extends SlotChildObserver( +export abstract class SbbOptgroupBaseElement extends SbbHydrationMixin( SbbDisabledMixin(LitElement), ) { public static override styles: CSSResultGroup = style; @@ -67,7 +67,7 @@ export abstract class SbbOptgroupBaseElement extends SlotChildObserver( this._negativeObserver?.disconnect(); } - protected override checkChildren(): void { + private _handleSlotchange(): void { this.proxyDisabledToOptions(); this._proxyGroupLabelToOptions(); this._highlightOptions(); @@ -76,9 +76,17 @@ export abstract class SbbOptgroupBaseElement extends SlotChildObserver( private _proxyGroupLabelToOptions(): void { if (!this._inertAriaGroups) { return; + } else if (this.label) { + for (const option of this.options) { + option.setAttribute('data-group-label', this.label); + option.requestUpdate?.(); + } + } else { + for (const option of this.options) { + option.removeAttribute('data-group-label'); + option.requestUpdate?.(); + } } - - this.options.forEach((opt) => opt.setGroupLabel(this.label)); } protected proxyDisabledToOptions(): void { @@ -116,7 +124,7 @@ export abstract class SbbOptgroupBaseElement extends SlotChildObserver(
${this.label} - + `; } }