Skip to content

Commit deca6e5

Browse files
committed
fix props, update tests
1 parent 11d2704 commit deca6e5

File tree

6 files changed

+1853
-6
lines changed

6 files changed

+1853
-6
lines changed

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"scripts": {
99
"build": "rollup -c",
1010
"prepublishOnly": "npm test",
11-
"test": "node test/runner.js | faucet",
11+
"test": "node test/runner.js | tap-dot",
1212
"test:browser": "npm run build && serve test/public",
1313
"pretest": "npm run build"
1414
},
@@ -17,10 +17,12 @@
1717
"port-authority": "^1.0.3",
1818
"puppeteer": "^1.2.0",
1919
"rollup": "^0.57.1",
20+
"rollup-plugin-commonjs": "^9.1.0",
2021
"rollup-plugin-node-resolve": "^3.3.0",
2122
"rollup-plugin-svelte": "^4.1.0",
2223
"serve": "^6.5.3",
2324
"svelte": "^1.60.1",
25+
"tap-dot": "^1.0.5",
2426
"tape-modern": "^1.0.0"
2527
},
2628
"repository": "https://github.com/sveltejs/svelte-virtual-list",
@@ -33,5 +35,8 @@
3335
"src",
3436
"index.mjs",
3537
"index.js"
36-
]
38+
],
39+
"dependencies": {
40+
"svelte-extras": "^1.6.0"
41+
}
3742
}

rollup.config.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import svelte from 'rollup-plugin-svelte';
22
import resolve from 'rollup-plugin-node-resolve';
3+
import commonjs from 'rollup-plugin-commonjs';
34
import pkg from './package.json';
45

56
export default [
@@ -10,6 +11,7 @@ export default [
1011
{ file: pkg.main, 'format': 'umd', name: 'VirtualList' }
1112
],
1213
plugins: [
14+
resolve(),
1315
svelte({
1416
cascade: false,
1517
store: true
@@ -25,11 +27,16 @@ export default [
2527
format: 'iife'
2628
},
2729
plugins: [
30+
resolve(),
31+
commonjs({
32+
namedExports: {
33+
svelte: ['create', 'compile']
34+
}
35+
}),
2836
svelte({
2937
cascade: false,
3038
store: true
31-
}),
32-
resolve()
39+
})
3340
]
3441
}
3542
];

src/VirtualList.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
const keys = Object.keys(this.options.data).filter(key => key !== 'items' && key !== 'component');
4545
if (keys.length) {
46-
this.observeMany(keys, ([values]) => {
46+
this.observeMany(keys, values => {
4747
const _props = {};
4848
keys.forEach((key, i) => {
4949
_props[key] = values[i];

test/public/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html>
33
<head>svelte-virtual-list tests</head>
44
<body>
5-
<main></main>
5+
<main style='height: 500px'></main>
66
<script src='bundle.js'></script>
77
</body>
88
</html>

test/src/index.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import * as svelte from 'svelte';
12
import VirtualList from '../..';
23
import { assert, test, done } from 'tape-modern';
34

@@ -7,6 +8,7 @@ const target = document.querySelector('main');
78
function normalize(html) {
89
const div = document.createElement('div');
910
div.innerHTML = html
11+
.replace(/<!--.+?-->/g, '')
1012
.replace(/svelte-ref-\w+=""/g, '')
1113
.replace(/\s*svelte-\w+\s*/g, '')
1214
.replace(/class=""/g, '')
@@ -40,5 +42,50 @@ test('with no data, creates two <div> elements', t => {
4042
list.destroy();
4143
});
4244

45+
test('props are passed to child component', t => {
46+
const Row = svelte.create(`
47+
<span>{{row.foo}}</span>
48+
<span>{{baz}}</span>
49+
<span>{{items}}</span> <!-- should be undefined -->
50+
`);
51+
52+
const list = new VirtualList({
53+
target,
54+
data: {
55+
items: [{ foo: 'bar'}],
56+
component: Row,
57+
baz: 'qux'
58+
}
59+
});
60+
61+
t.htmlEqual(target.innerHTML, `
62+
<div>
63+
<div style="padding-top: 0px; padding-bottom: 0px;">
64+
<div class="row">
65+
<span>bar</span>
66+
<span>qux</span>
67+
<span>undefined</span>
68+
</div>
69+
</div>
70+
</div>
71+
`);
72+
73+
list.set({ baz: 'changed' });
74+
75+
t.htmlEqual(target.innerHTML, `
76+
<div>
77+
<div style="padding-top: 0px; padding-bottom: 0px;">
78+
<div class="row">
79+
<span>bar</span>
80+
<span>changed</span>
81+
<span>undefined</span>
82+
</div>
83+
</div>
84+
</div>
85+
`);
86+
87+
list.destroy();
88+
});
89+
4390
// this allows us to close puppeteer once tests have completed
4491
window.done = done;

0 commit comments

Comments
 (0)