mirror of https://github.com/sveltejs/svelte
fix: remove let variable from select binding dependencies (#8969)
Fixes #2943 The issue linked above invalidates a variable that is not defined in <script> but instead is defined as a let: variable, which does not make sense to invalidate, therefore, this PR exists.pull/8928/head
parent
cb1358cc41
commit
f8283fbc77
@ -0,0 +1,5 @@
|
||||
---
|
||||
'svelte': patch
|
||||
---
|
||||
|
||||
fix: remove `let:variable` slot bindings from select binding dependencies
|
@ -0,0 +1,6 @@
|
||||
<script>
|
||||
const tasks = ["do laundry", "do taxes", "cook food", "watch the kids"];
|
||||
</script>
|
||||
|
||||
<slot {tasks} />
|
||||
|
@ -0,0 +1,25 @@
|
||||
export default {
|
||||
html: `
|
||||
<select>
|
||||
<option value='do laundry'>do laundry</option>
|
||||
<option value='do taxes'>do taxes</option>
|
||||
<option value='cook food'>cook food</option>
|
||||
<option value='watch the kids'>watch the kids</option>
|
||||
</select>
|
||||
<p>1</p>
|
||||
`,
|
||||
|
||||
async test({ assert, component, target, window }) {
|
||||
const select = target.querySelector('select');
|
||||
const options = target.querySelectorAll('option');
|
||||
|
||||
assert.equal(component.tasks_touched, 1);
|
||||
|
||||
const change = new window.Event('change');
|
||||
options[1].selected = true;
|
||||
await select.dispatchEvent(change);
|
||||
|
||||
assert.equal(component.selected, options[1].value);
|
||||
assert.equal(component.tasks_touched, 1);
|
||||
}
|
||||
};
|
@ -0,0 +1,19 @@
|
||||
<script>
|
||||
import Parent from "./Parent.svelte";
|
||||
export let selected;
|
||||
export let tasks = ['do nothing'];
|
||||
export let tasks_touched = 0;
|
||||
|
||||
$: {
|
||||
tasks, tasks_touched++;
|
||||
}
|
||||
</script>
|
||||
|
||||
<Parent let:tasks={tasks}>
|
||||
<select bind:value={selected}>
|
||||
{#each tasks as task}
|
||||
<option value={task}>{task}</option>
|
||||
{/each}
|
||||
</select>
|
||||
</Parent>
|
||||
<p>{tasks_touched}</p>
|
@ -0,0 +1,6 @@
|
||||
<script>
|
||||
const tasks = ["do laundry", "do taxes", "cook food", "watch the kids"];
|
||||
</script>
|
||||
|
||||
<slot {tasks} />
|
||||
|
@ -0,0 +1,21 @@
|
||||
export default {
|
||||
html: `
|
||||
<select>
|
||||
<option value='do laundry'>do laundry</option>
|
||||
<option value='do taxes'>do taxes</option>
|
||||
<option value='cook food'>cook food</option>
|
||||
<option value='watch the kids'>watch the kids</option>
|
||||
</select>
|
||||
`,
|
||||
|
||||
async test({ assert, component, target, window }) {
|
||||
const select = target.querySelector('select');
|
||||
const options = target.querySelectorAll('option');
|
||||
|
||||
const change = new window.Event('change');
|
||||
options[1].selected = true;
|
||||
await select.dispatchEvent(change);
|
||||
|
||||
assert.equal(component.selected, options[1].value);
|
||||
}
|
||||
};
|
@ -0,0 +1,12 @@
|
||||
<script>
|
||||
import Parent from "./Parent.svelte";
|
||||
export let selected;
|
||||
</script>
|
||||
|
||||
<Parent let:tasks={tasks}>
|
||||
<select bind:value={selected}>
|
||||
{#each tasks as task}
|
||||
<option value={task}>{task}</option>
|
||||
{/each}
|
||||
</select>
|
||||
</Parent>
|
Loading…
Reference in new issue