diff --git a/packages/calcite-components/src/components/scrim/scrim.e2e.ts b/packages/calcite-components/src/components/scrim/scrim.e2e.ts
index 7bf8dfcddc4..e3adacbc539 100644
--- a/packages/calcite-components/src/components/scrim/scrim.e2e.ts
+++ b/packages/calcite-components/src/components/scrim/scrim.e2e.ts
@@ -89,14 +89,21 @@ describe("calcite-scrim", () => {
expect(clickSpy).toHaveReceivedEventTimes(1);
});
- it("does not render content if the default slot if it is empty", async () => {
+ it("does not display content if the default slot if it is empty", async () => {
const page = await newE2EPage();
await page.setContent(`
Content added after initialization
"; + await page.waitForChanges(); - expect(contentNode).toBeNull(); + const content = await page.find("p"); + expect(content).toBeTruthy(); + expect(await content.isVisible()).toBe(true); + expect(contentNode).not.toHaveAttribute("hidden"); }); it("renders content in the default slot has content", async () => { diff --git a/packages/calcite-components/src/components/scrim/scrim.tsx b/packages/calcite-components/src/components/scrim/scrim.tsx index 265de2465a5..a23ab421056 100644 --- a/packages/calcite-components/src/components/scrim/scrim.tsx +++ b/packages/calcite-components/src/components/scrim/scrim.tsx @@ -11,6 +11,7 @@ import { ScrimMessages } from "./assets/scrim/t9n"; import { CSS, BREAKPOINTS } from "./resources"; import { createObserver } from "../../utils/observers"; import { Scale } from "../interfaces"; +import { slotChangeHasAssignedElement } from "../../utils/dom"; /** * @slot - A slot for adding custom content, primarily loading information. @@ -75,6 +76,8 @@ export class Scrim implements LocalizedComponent, T9nComponent { updateMessages(this, this.effectiveLocale); } + @State() hasContent = false; + //-------------------------------------------------------------------------- // // Lifecycle @@ -104,21 +107,20 @@ export class Scrim implements LocalizedComponent, T9nComponent { // -------------------------------------------------------------------------- render(): VNode { - const { el, loading, messages } = this; - const hasContent = el.innerHTML.trim().length > 0; - const loaderNode = loading ? ( -