diff --git a/.changeset/seven-avocados-hug.md b/.changeset/seven-avocados-hug.md new file mode 100644 index 000000000000..2e391a1a0a96 --- /dev/null +++ b/.changeset/seven-avocados-hug.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +remove all selection before navigating to the next page diff --git a/packages/kit/src/runtime/client/renderer.js b/packages/kit/src/runtime/client/renderer.js index 13f60d7ac081..32a133b260eb 100644 --- a/packages/kit/src/runtime/client/renderer.js +++ b/packages/kit/src/runtime/client/renderer.js @@ -275,6 +275,8 @@ export class Renderer { this._init(navigation_result); } + getSelection()?.removeAllRanges(); + if (!opts) { await 0; } else { diff --git a/packages/kit/test/apps/basics/src/routes/selection/__layout.svelte b/packages/kit/test/apps/basics/src/routes/selection/__layout.svelte new file mode 100644 index 000000000000..f182115ccad7 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/selection/__layout.svelte @@ -0,0 +1,3 @@ + + + diff --git a/packages/kit/test/apps/basics/src/routes/selection/_tests.js b/packages/kit/test/apps/basics/src/routes/selection/_tests.js new file mode 100644 index 000000000000..9f67c7025172 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/selection/_tests.js @@ -0,0 +1,32 @@ +import * as assert from 'uvu/assert'; + +/** @type {import('test').TestMaker} */ +export default function (test) { + test('reset selection', '/selection/a', async ({ page, clicknav }) => { + assert.equal( + await page.evaluate(() => { + const range = document.createRange(); + range.selectNodeContents(document.body); + const selection = getSelection(); + if (selection) { + selection.removeAllRanges(); + selection.addRange(range); + return selection.rangeCount; + } + return 0; + }), + 1 + ); + await clicknav('[href="/selection/b"]'); + assert.equal( + await page.evaluate(() => { + const selection = getSelection(); + if (selection) { + return selection.rangeCount; + } + return 1; + }), + 0 + ); + }); +} diff --git a/packages/kit/test/apps/basics/src/routes/selection/a.svelte b/packages/kit/test/apps/basics/src/routes/selection/a.svelte new file mode 100644 index 000000000000..349082e55b13 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/selection/a.svelte @@ -0,0 +1,5 @@ + + a + + +

a

diff --git a/packages/kit/test/apps/basics/src/routes/selection/b.svelte b/packages/kit/test/apps/basics/src/routes/selection/b.svelte new file mode 100644 index 000000000000..f3641bd0bf0a --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/selection/b.svelte @@ -0,0 +1,5 @@ + + b + + +

b