diff --git a/docs/pages/resources/changelog.md b/docs/pages/resources/changelog.md index 27a72dd9..068b713e 100644 --- a/docs/pages/resources/changelog.md +++ b/docs/pages/resources/changelog.md @@ -24,6 +24,7 @@ New versions of Shoelace are released as-needed and generally occur when a criti - Fixed a bug in `` that prevented it from closing when tabbing to another select inside a shadow root [#1763] - Fixed a bug in `` that caused the animation to appear strange in certain circumstances [#1787] - Fixed a bug that caused modal scroll locking to conflict with the `scrollbar-gutter` property [#1805] +- Fixed a bug in `` that caused slotted content to show up when calling `getTextLabel()` [#1730] - Improved the accessibility of `` so they persist when hovering over the tooltip and dismiss when pressing [[Esc]] [#1734] ## 2.12.0 diff --git a/src/components/option/option.component.ts b/src/components/option/option.component.ts index d92ba406..142e2628 100644 --- a/src/components/option/option.component.ts +++ b/src/components/option/option.component.ts @@ -106,7 +106,22 @@ export default class SlOption extends ShoelaceElement { /** Returns a plain text label based on the option's content. */ getTextLabel() { - return (this.textContent ?? '').trim(); + const nodes = this.childNodes; + let label = ''; + + [...nodes].forEach(node => { + if (node.nodeType === Node.ELEMENT_NODE) { + if (!(node as HTMLElement).hasAttribute('slot')) { + label += (node as HTMLElement).outerHTML; + } + } + + if (node.nodeType === Node.TEXT_NODE) { + label += node.textContent; + } + }); + + return label.trim(); } render() {