fix: ensure window scroll binding inits to window value

pull/11662/head
Dominic Gannaway 2 years ago
parent 54083fb9cc
commit 9d108191de

@ -0,0 +1,5 @@
---
"svelte": patch
---
fix: ensure window scroll binding inits to window value

@ -42,6 +42,8 @@ export function bind_window_scroll(type, get_value, update) {
scrollTo(window.scrollX, latest_value);
}
timeout = setTimeout(clear, 100);
} else if (latest_value == null) {
update(window[is_scrolling_x ? 'scrollX' : 'scrollY']);
}
});

@ -0,0 +1,29 @@
import { test } from '../../test';
import { vi } from 'vitest';
/** @type {Window['scrollTo']} */
let original_scrollTo;
export default test({
before_test() {
vi.useFakeTimers();
Object.defineProperties(window, {
scrollY: {
value: 0,
configurable: true,
writable: true
}
});
},
after_test() {
vi.useRealTimers();
},
async test({ assert, component, window }) {
assert.equal(window.pageYOffset, 0);
assert.equal(component.scrollY, 0);
}
});

@ -0,0 +1,7 @@
<script>
export let scrollY;
$: console.log(scrollY);
</script>
<svelte:window bind:scrollY />
<div style="height: 200vh; background-image: linear-gradient(green, pink)"></div>
Loading…
Cancel
Save