forked from algolia/vue-instantsearch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHitsPerPage.stories.js
81 lines (80 loc) · 2 KB
/
HitsPerPage.stories.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { storiesOf } from '@storybook/vue';
import { previewWrapper } from './utils';
storiesOf('ais-hits-per-page', module)
.addDecorator(previewWrapper())
.add('default', () => ({
template: `
<ais-hits-per-page
:items="[
{ label: '3 results', value: 3, default: true },
{ label: '6 results', value: 6 }
]"
/>
`,
}))
.add('with different default', () => ({
template: `
<ais-hits-per-page
:items="[
{ label: '3 results', value: 3 },
{ label: '6 results', value: 6, default: true }
]"
/>
`,
}))
.add('with transform items', () => ({
template: `
<ais-hits-per-page
:items="[
{ label: '3 results', value: 3, default: true },
{ label: '6 results', value: 6 }
]"
:transform-items="transformItems"
/>
`,
methods: {
transformItems(items) {
return items.map(item =>
Object.assign({}, item, {
label: item.label.toUpperCase(),
})
);
},
},
}))
.add('with a custom render', () => ({
template: `
<ais-hits-per-page
:items="[
{ label: '3 results', value: 3, default: true },
{ label: '6 results', value: 6 }
]"
>
<div slot-scope="{ items, refine }">
<label
v-for="(item, itemIndex) in items"
@change="refine(item.value)"
>
<input
type="radio"
:checked="item.isRefined"
>
{{item.label}}
</label>
</div>
</ais-hits-per-page>`,
}))
.add('with a Panel', () => ({
template: `
<ais-panel>
<template slot="header">Hits per page</template>
<ais-hits-per-page
:items="[
{ label: '3 results', value: 3, default: true },
{ label: '6 results', value: 6 }
]"
/>
<template slot="footer">Footer</template>
</ais-panel>
`,
}));