From 8bffc17d650144ed0d5b778766f79c33334f0275 Mon Sep 17 00:00:00 2001 From: metonym Date: Wed, 6 Mar 2024 19:07:45 -0800 Subject: [PATCH] fix(link)!: do not render `p` for disabled link Closes #1924 Svelte 5 will not compile if `div` is nested inside `p` element. Refactor Link to render an `a` instead of `p` when disabled. --- COMPONENT_INDEX.md | 18 +++++++++--------- docs/src/COMPONENT_API.json | 12 ++++++------ src/Link/Link.svelte | 11 +++++++---- types/Link/Link.svelte.d.ts | 4 ++-- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index bf720d61..db8ab9cd 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -1963,15 +1963,15 @@ None. ### Props -| Prop name | Required | Kind | Reactive | Type | Default value | Description | -| :-------- | :------- | :--------------- | :------- | ---------------------------------------------------------------------- | ---------------------- | -------------------------------------------------------- | -| ref | No | let | Yes | null | HTMLAnchorElement | HTMLParagraphElement | null | Obtain a reference to the top-level HTML element | -| size | No | let | No | "sm" | "lg" | undefined | Specify the size of the link | -| href | No | let | No | string | undefined | Specify the href value | -| inline | No | let | No | boolean | false | Set to `true` to use the inline variant | -| icon | No | let | No | typeof import("svelte").SvelteComponent | undefined | Specify the icon to render
`inline` must be `false` | -| disabled | No | let | No | boolean | false | Set to `true` to disable the checkbox | -| visited | No | let | No | boolean | false | Set to `true` to allow visited styles | +| Prop name | Required | Kind | Reactive | Type | Default value | Description | +| :-------- | :------- | :--------------- | :------- | --------------------------------------------------------- | ---------------------- | -------------------------------------------------------- | +| ref | No | let | Yes | null | HTMLAnchorElement | null | Obtain a reference to the top-level HTML element | +| size | No | let | No | "sm" | "lg" | undefined | Specify the size of the link | +| href | No | let | No | string | undefined | Specify the href value | +| inline | No | let | No | boolean | false | Set to `true` to use the inline variant | +| icon | No | let | No | typeof import("svelte").SvelteComponent | undefined | Specify the icon to render
`inline` must be `false` | +| disabled | No | let | No | boolean | false | Set to `true` to disable the checkbox | +| visited | No | let | No | boolean | false | Set to `true` to allow visited styles | ### Slots diff --git a/docs/src/COMPONENT_API.json b/docs/src/COMPONENT_API.json index dc16dc50..89844c68 100644 --- a/docs/src/COMPONENT_API.json +++ b/docs/src/COMPONENT_API.json @@ -5831,7 +5831,7 @@ "name": "ref", "kind": "let", "description": "Obtain a reference to the top-level HTML element", - "type": "null | HTMLAnchorElement | HTMLParagraphElement", + "type": "null | HTMLAnchorElement", "value": "null", "isFunction": false, "isFunctionDeclaration": false, @@ -5851,13 +5851,13 @@ } ], "events": [ - { "type": "forwarded", "name": "click", "element": "p" }, - { "type": "forwarded", "name": "mouseover", "element": "p" }, - { "type": "forwarded", "name": "mouseenter", "element": "p" }, - { "type": "forwarded", "name": "mouseleave", "element": "p" } + { "type": "forwarded", "name": "click", "element": "a" }, + { "type": "forwarded", "name": "mouseover", "element": "a" }, + { "type": "forwarded", "name": "mouseenter", "element": "a" }, + { "type": "forwarded", "name": "mouseleave", "element": "a" } ], "typedefs": [], - "rest_props": { "type": "Element", "name": "a | p" } + "rest_props": { "type": "Element", "name": "a" } }, { "moduleName": "ListBox", diff --git a/src/Link/Link.svelte b/src/Link/Link.svelte index fc680c3e..629a3973 100644 --- a/src/Link/Link.svelte +++ b/src/Link/Link.svelte @@ -1,6 +1,4 @@ + + + {#if disabled} -

{/if} -

+ {:else}