diff --git a/src/core/AssetFactory.spec.ts b/src/core/AssetFactory.spec.ts index 8ecd49a..81ab551 100644 --- a/src/core/AssetFactory.spec.ts +++ b/src/core/AssetFactory.spec.ts @@ -24,13 +24,28 @@ describe("AssestFactory", () => { type: "css", }; - const element = assetFactory.create([asset]); + const element = assetFactory.create([asset], "head", "raffle-teasers"); expect(element).not.toBeNull(); expect(element).toMatchSnapshot(); }); + it("wraps css in a @import layered by module (temporary fix)", () => { + const assetFactory = new AssetFactory(); + const asset: AssetLink = { + src: "/src/", + type: "css", + }; + + const [element] = assetFactory.create([asset], "head", "raffle-teasers"); + + expect(element.tagName).toBe("STYLE"); + expect(element.textContent).toBe( + '@import url("/src/") layer(bcmf.raffle-teasers);' + ); + }); + it("constructs multiple assets of different types", () => { const assetFactory = new AssetFactory(); const asset: AssetLink = { diff --git a/src/core/AssetFactory.ts b/src/core/AssetFactory.ts index 4848e54..4103876 100644 --- a/src/core/AssetFactory.ts +++ b/src/core/AssetFactory.ts @@ -1,6 +1,9 @@ import { Asset, AssetLink, AssetPosition, AssetScript } from "~/core/Asset"; -export type HtmlAsset = HTMLLinkElement | HTMLScriptElement; +export type HtmlAsset = + | HTMLLinkElement + | HTMLScriptElement + | HTMLStyleElement; export default class AssetFactory { private static buildTagScript(attr: AssetScript): HTMLScriptElement { const script = document.createElement("script"); @@ -19,21 +22,31 @@ export default class AssetFactory { return script; } - private static buildTagLink(attr: AssetLink): HTMLLinkElement { - const link = document.createElement("link"); - link.setAttribute("rel", "stylesheet"); - link.setAttribute("href", attr.src); - if (attr.media) link.setAttribute("media", attr.media); + // TEMPORARY FIX: fragment CSS is injected via `@import ... layer(bcmf.)` + // inside a , ] `; exports[`AssestFactory > constructs link asset 1`] = ` [ - , + , ] `; exports[`AssestFactory > constructs multiple assets of different types 1`] = ` [ - , + ,