diff --git a/.changeset/silly-fishes-deny.md b/.changeset/silly-fishes-deny.md new file mode 100644 index 000000000000..a77098c5978b --- /dev/null +++ b/.changeset/silly-fishes-deny.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: allow custom element styles to be updated in HMR mode diff --git a/.changeset/wild-mice-look.md b/.changeset/wild-mice-look.md new file mode 100644 index 000000000000..535ace2fa53d --- /dev/null +++ b/.changeset/wild-mice-look.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: inject styles correctly when mounting inside an iframe diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js index 690cdb43454f..45e48e565e73 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js @@ -494,18 +494,7 @@ export function client_component(analysis, options) { if (analysis.css.hash) { // remove existing ` diff --git a/packages/svelte/tests/runtime-browser/samples/mount-in-iframe/_config.js b/packages/svelte/tests/runtime-browser/samples/mount-in-iframe/_config.js new file mode 100644 index 000000000000..0f04e9659a3f --- /dev/null +++ b/packages/svelte/tests/runtime-browser/samples/mount-in-iframe/_config.js @@ -0,0 +1,22 @@ +import { flushSync } from 'svelte'; +import { test } from '../../assert'; + +export default test({ + async test({ target, assert }) { + const button = target.querySelector('button'); + const h1 = () => + /** @type {HTMLHeadingElement} */ ( + /** @type {Window} */ ( + target.querySelector('iframe')?.contentWindow + ).document.querySelector('h1') + ); + + assert.equal(h1().textContent, 'count: 0'); + assert.equal(getComputedStyle(h1()).color, 'rgb(255, 0, 0)'); + + flushSync(() => button?.click()); + + assert.equal(h1().textContent, 'count: 1'); + assert.equal(getComputedStyle(h1()).color, 'rgb(255, 0, 0)'); + } +}); diff --git a/packages/svelte/tests/runtime-browser/samples/mount-in-iframe/main.svelte b/packages/svelte/tests/runtime-browser/samples/mount-in-iframe/main.svelte new file mode 100644 index 000000000000..358698f8ecdd --- /dev/null +++ b/packages/svelte/tests/runtime-browser/samples/mount-in-iframe/main.svelte @@ -0,0 +1,11 @@ + + + + +{#key count} + +{/key}