Skip to content

Commit d8e0481

Browse files
axwalkerdummdidumm
andauthored
(fix) add -replacestate/-keepfocus to SvelteKit anchor tag props (#1865)
* Add -replacestate to SvelteKit anchor tag props * Add -keepfocus to SvelteKit anchor tag props * fix --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
1 parent ba81afa commit d8e0481

File tree

4 files changed

+21
-3
lines changed

4 files changed

+21
-3
lines changed

packages/language-server/src/plugins/html/dataProvider.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ const svelteAttributes: IAttributeData[] = [
6666
}
6767
];
6868
const sveltekitAttributes: IAttributeData[] = [
69+
{
70+
name: 'data-sveltekit-keepfocus',
71+
description:
72+
'SvelteKit-specific attribute. Currently focused element will retain focus after navigation. Otherwise, focus will be reset to the body.',
73+
valueSet: 'v'
74+
},
6975
{
7076
name: 'data-sveltekit-noscroll',
7177
description:
@@ -97,6 +103,12 @@ const sveltekitAttributes: IAttributeData[] = [
97103
description:
98104
'SvelteKit-specific attribute. Will cause SvelteKit to do a normal browser navigation which results in a full page reload.',
99105
valueSet: 'v'
106+
},
107+
{
108+
name: 'data-sveltekit-replacestate',
109+
description:
110+
'SvelteKit-specific attribute. Will replace the current `history` entry rather than creating a new one with `pushState` when the link is clicked.',
111+
valueSet: 'v'
100112
}
101113
];
102114

packages/svelte2tsx/svelte-jsx.d.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ declare namespace svelte.JSX {
293293
type MessageEventHandler<T extends EventTarget> = EventHandler<MessageEvent, T>;
294294

295295
/** @deprecated DO NOT USE, WILL BE REMOVED SOON */
296-
type AttributeNames =
296+
type AttributeNames =
297297
|'oncopy'
298298
|'oncut'
299299
|'onpaste'
@@ -894,13 +894,15 @@ declare namespace svelte.JSX {
894894
results?: number | undefined | null;
895895
security?: string | undefined | null;
896896
unselectable?: boolean | undefined | null;
897-
897+
898+
'data-sveltekit-keepfocus'?: true | '' | 'off' | undefined | null;
898899
'data-sveltekit-noscroll'?: true | '' | 'off' | undefined | null;
899900
'data-sveltekit-preload-code'?: true | '' | 'eager' | 'viewport' | 'hover' | 'tap' | 'off' | undefined | null;
900901
'data-sveltekit-preload-data'?: true | '' | 'hover' | 'tap' | 'off' | undefined | null;
901902
'data-sveltekit-reload'?: true | '' | 'off' | undefined | null;
903+
'data-sveltekit-replacestate'?: true | '' | 'off' | undefined | null;
902904
}
903-
905+
904906
/**
905907
* @deprecated use the types from `svelte/elements` instead, or the .
906908
* For more info see https://github.com/sveltejs/language-tools/blob/master/docs/preprocessors/typescript.md#im-getting-deprecation-warnings-for-sveltejsx--i-want-to-migrate-to-the-new-typings
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
{ svelteHTML.createElement("a", {"data-sveltekit-keepfocus":true,}); }
12
{ svelteHTML.createElement("a", {"data-sveltekit-noscroll":true,}); }
23
{ svelteHTML.createElement("a", {"data-sveltekit-preload-code":true,}); }
34
{ svelteHTML.createElement("a", {"data-sveltekit-preload-data":true,}); }
45
{ svelteHTML.createElement("a", {"data-sveltekit-reload":true,}); }
6+
{ svelteHTML.createElement("a", {"data-sveltekit-replacestate":true,}); }
57
{ svelteHTML.createElement("a", { "data-sveltekit-preload-data":true,}); }
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
<a data-sveltekit-keepfocus></a>
12
<a data-sveltekit-noscroll></a>
23
<a data-sveltekit-preload-code></a>
34
<a data-sveltekit-preload-data></a>
45
<a data-sveltekit-reload></a>
6+
<a data-sveltekit-replacestate></a>
57
<svelte:element this="a" data-sveltekit-preload-data></svelte:element>

0 commit comments

Comments
 (0)