+) {
+ const { parent } = attr;
+ if (parent.node.name === "select") {
+ (parent as ElementWrapper).select_binding_dependencies = dependencies;
+ dependencies.forEach((prop: string) => {
+ parent.renderer.component.indirect_dependencies.set(prop, new Set());
+ });
+ }
+}
diff --git a/test/js/samples/select-dynamic-value/expected.js b/test/js/samples/select-dynamic-value/expected.js
index f1a913c65f6b..aa4e5004fdfe 100644
--- a/test/js/samples/select-dynamic-value/expected.js
+++ b/test/js/samples/select-dynamic-value/expected.js
@@ -15,7 +15,6 @@ function create_fragment(ctx) {
let select;
let option0;
let option1;
- let select_value_value;
return {
c() {
@@ -33,12 +32,11 @@ function create_fragment(ctx) {
insert(target, select, anchor);
append(select, option0);
append(select, option1);
- select_value_value = /*current*/ ctx[0];
- select_option(select, select_value_value);
+ select_option(select, /*current*/ ctx[0]);
},
p(ctx, [dirty]) {
- if (dirty & /*current*/ 1 && select_value_value !== (select_value_value = /*current*/ ctx[0])) {
- select_option(select, select_value_value);
+ if (dirty & /*current*/ 1) {
+ select_option(select, /*current*/ ctx[0]);
}
},
i: noop,
diff --git a/test/runtime/samples/binding-select-late-3/_config.js b/test/runtime/samples/binding-select-late-3/_config.js
new file mode 100644
index 000000000000..42c45d13668b
--- /dev/null
+++ b/test/runtime/samples/binding-select-late-3/_config.js
@@ -0,0 +1,34 @@
+export default {
+ props: {
+ items: [],
+ selected: 'two'
+ },
+
+ html: `
+
+ selected: two
+ `,
+
+ ssrHtml: `
+
+ selected: two
+ `,
+
+ test({ assert, component, target }) {
+ component.items = [ 'one', 'two', 'three' ];
+
+ const options = target.querySelectorAll('option');
+ assert.ok(!options[0].selected);
+ assert.ok(options[1].selected);
+ assert.ok(!options[2].selected);
+
+ assert.htmlEqual(target.innerHTML, `
+
+ selected: two
+ `);
+ }
+};
diff --git a/test/runtime/samples/binding-select-late-3/main.svelte b/test/runtime/samples/binding-select-late-3/main.svelte
new file mode 100644
index 000000000000..ec9ac8d34511
--- /dev/null
+++ b/test/runtime/samples/binding-select-late-3/main.svelte
@@ -0,0 +1,12 @@
+
+
+
+
+selected: {selected || 'nothing'}
\ No newline at end of file