From e5103c5830edccc7b77dde0a1602cc4ba8cc6f7a Mon Sep 17 00:00:00 2001 From: Benny Powers Date: Wed, 20 Nov 2024 17:41:38 +0200 Subject: [PATCH] fix(core): slotController isEmpty respects text nodes --- .changeset/olive-rivers-stick.md | 4 ++++ core/pfe-core/controllers/slot-controller.ts | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/olive-rivers-stick.md diff --git a/.changeset/olive-rivers-stick.md b/.changeset/olive-rivers-stick.md new file mode 100644 index 0000000000..821c753340 --- /dev/null +++ b/.changeset/olive-rivers-stick.md @@ -0,0 +1,4 @@ +--- +"@patternfly/pfe-core": patch +--- +`SlotController`: `hasContent`/`isEmpty` now respects text nodes diff --git a/core/pfe-core/controllers/slot-controller.ts b/core/pfe-core/controllers/slot-controller.ts index 519adf514d..6b46cae7b0 100644 --- a/core/pfe-core/controllers/slot-controller.ts +++ b/core/pfe-core/controllers/slot-controller.ts @@ -193,7 +193,8 @@ export class SlotController implements ReactiveController { ?? this.#getChildrenForSlot(name); const selector = slotName ? `slot[name="${slotName}"]` : 'slot:not([name])'; const slot = this.host.shadowRoot?.querySelector?.(selector) ?? null; - const hasContent = !!elements.length; + const nodes = slot?.assignedNodes?.(); + const hasContent = !!elements.length || !!nodes?.filter(x => x.textContent?.trim()).length; this.#nodes.set(name, { elements, name: slotName ?? '', hasContent, slot }); this.#logger.debug(slotName, hasContent); };