diff --git a/src/LangTag.svelte b/src/LangTag.svelte index f152bd1..c722b0b 100644 --- a/src/LangTag.svelte +++ b/src/LangTag.svelte @@ -5,7 +5,7 @@ /** @type {string} */ export let highlighted; - /** @type {string} */ + /** @type {import('./languages').LanguageName | (string & {})} */ export let languageName = "plaintext"; /** @type {boolean} */ diff --git a/src/LangTag.svelte.d.ts b/src/LangTag.svelte.d.ts index 397eb80..c569455 100644 --- a/src/LangTag.svelte.d.ts +++ b/src/LangTag.svelte.d.ts @@ -1,6 +1,7 @@ import type { SvelteComponentTyped } from "svelte"; import type { HTMLAttributes } from "svelte/elements"; import type { LangtagProps } from "./Highlight.svelte"; +import type { LanguageName } from "./languages"; export type LangTagProps = HTMLAttributes & LangtagProps & { @@ -18,7 +19,7 @@ export type LangTagProps = HTMLAttributes & * Provide the language name. * @default "plaintext" */ - languageName?: string; + languageName?: LanguageName | (string & {}); }; export type LangTagEvents = {}; diff --git a/tests/e2e/LangTag.test.svelte b/tests/e2e/LangTag.test.svelte new file mode 100644 index 0000000..0be9fb5 --- /dev/null +++ b/tests/e2e/LangTag.test.svelte @@ -0,0 +1,17 @@ + + + + {@html atomOneDark} + + + diff --git a/tests/e2e/e2e.test.ts b/tests/e2e/e2e.test.ts index 7b3f16c..45be21c 100644 --- a/tests/e2e/e2e.test.ts +++ b/tests/e2e/e2e.test.ts @@ -2,6 +2,7 @@ import { expect, test } from "@playwright/experimental-ct-svelte"; import Highlight from "./Highlight.test.svelte"; import HighlightAuto from "./HighlightAuto.test.svelte"; import HighlightAutoLanguageRestriction from "./HighlightAuto.languageRestriction.test.svelte"; +import LangTag from "./LangTag.test.svelte"; import LineNumbersCustomStartingLine from "./LineNumbers.customStartingLine.test.svelte"; import LineNumbersHideBorder from "./LineNumbers.hideBorder.test.svelte"; import LineNumbers from "./LineNumbers.test.svelte"; @@ -109,3 +110,18 @@ test("Auto-highlighting with language restriction", async ({ mount, page }) => { await expect(page.locator(".hljs-keyword")).toBeVisible(); await expect(page.locator(".hljs-number")).toHaveText("42"); }); + +test("LangTag", async ({ mount, page }) => { + await mount(LangTag); + + await expect(page.locator("pre.langtag")).toBeVisible(); + await expect(page.locator("pre")).toHaveAttribute( + "data-language", + "typescript", + ); + await expect(page.locator(".hljs-keyword")).toHaveText("const"); + await expect(page.locator(".hljs-title")).toHaveText("add"); + + const preElement = page.locator("pre.langtag"); + await expect(preElement).toHaveCSS("position", "relative"); +});