forked from algolia/vue-instantsearch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSortBy.stories.js
71 lines (70 loc) · 2.1 KB
/
SortBy.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
import { storiesOf } from '@storybook/vue';
import { previewWrapper } from './utils';
storiesOf('ais-sort-by', module)
.addDecorator(previewWrapper())
.add('default', () => ({
template: `
<ais-sort-by
:items="[
{ value: 'instant_search', label: 'Featured' },
{ value: 'instant_search_price_asc', label: 'Price asc.' },
{ value: 'instant_search_price_desc', label: 'Price desc.' },
]"
/>
`,
}))
.add('with transform items', () => ({
template: `
<ais-sort-by
:items="[
{ value: 'instant_search', label: 'Featured' },
{ value: 'instant_search_price_asc', label: 'Price asc.' },
{ value: 'instant_search_price_desc', label: 'Price desc.' },
]"
:transform-items="transformItems"
/>
`,
methods: {
transformItems(items) {
return items.map(item =>
Object.assign({}, item, {
label: item.label.toUpperCase(),
})
);
},
},
}))
.add('with custom render', () => ({
template: `
<ais-sort-by
:items="[
{ value: 'instant_search', label: 'Featured' },
{ value: 'instant_search_price_asc', label: 'Price asc.' },
{ value: 'instant_search_price_desc', label: 'Price desc.' },
]"
>
<ul slot-scope="{ items, refine, currentRefinement}">
<li v-for="item in items" :key="item.value">
<button @click="refine(item.value)">
{{item.label}} {{currentRefinement === item.value ? '✔️' : ''}}
</button>
</li>
</ul>
</ais-sort-by>
`,
}))
.add('with a Panel', () => ({
template: `
<ais-panel>
<template slot="header">Sort By</template>
<ais-sort-by
:items="[
{ value: 'instant_search', label: 'Featured' },
{ value: 'instant_search_price_asc', label: 'Price asc.' },
{ value: 'instant_search_price_desc', label: 'Price desc.' },
]"
/>
<template slot="footer">Footer</template>
</ais-panel>
`,
}));