Skip to content

Commit 575900d

Browse files
fix: Add more checks to determine if element is non-static (#15259)
Fixes #15241
1 parent 073f4d8 commit 575900d

File tree

7 files changed

+37
-0
lines changed

7 files changed

+37
-0
lines changed

.changeset/unlucky-laws-decide.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: ensure input elements and elements with `dir` attribute are marked as non-static

packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,17 @@ function is_static_element(node, state) {
144144
return false;
145145
}
146146

147+
if (attribute.name === 'dir') {
148+
return false;
149+
}
150+
151+
if (
152+
['input', 'textarea'].includes(node.name) &&
153+
['value', 'checked'].includes(attribute.name)
154+
) {
155+
return false;
156+
}
157+
147158
if (node.name === 'option' && attribute.name === 'value') {
148159
return false;
149160
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
test(assert, target) {
5+
const p = target.querySelector('p');
6+
7+
assert.equal(p?.dir, 'rtl');
8+
}
9+
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<p dir="rtl">text</p>.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { test } from '../../test';
2+
3+
export default test({
4+
test(assert, target) {
5+
const input = target.querySelector('input');
6+
7+
assert.equal(input?.checked, true);
8+
}
9+
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<!--[--><!---->.<input><!--]-->
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.<input checked />

0 commit comments

Comments
 (0)