forked from algolia/vue-instantsearch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHits.stories.js
100 lines (98 loc) · 2.7 KB
/
Hits.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import { storiesOf } from '@storybook/vue';
import { previewWrapper } from './utils';
import { action } from '@storybook/addon-actions';
storiesOf('ais-hits', module)
.addDecorator(previewWrapper())
.add('simple usage', () => ({
template: `<ais-hits></ais-hits>`,
}))
.add('with transform items', () => ({
template: `
<ais-hits :transform-items="transformItems">
<div slot="item" slot-scope="{ item }">
<h2>{{item.name}}</h2>
</div>
</ais-hits>
`,
methods: {
transformItems(items) {
return items.map(item =>
Object.assign({}, item, {
name: item.name.toUpperCase(),
})
);
},
},
}))
.add('custom rendering', () => ({
template: `
<ais-hits>
<div slot="item" slot-scope="{ item }">
<marquee>before one</marquee>
<h2>{{item.name}}</h2>
<small>{{item.description}}</small>
</div>
</ais-hits>
`,
}))
.add('custom rendering (all)', () => ({
template: `
<ais-hits>
<div slot-scope="{ items }">
<marquee>before everything</marquee>
<div
v-for="item in items"
:key="item.objectID"
>
custom objectID: {{item.objectID}}
</div>
</div>
</ais-hits>`,
}))
.add('with a Panel', () => ({
template: `
<ais-panel>
<template slot="header">Hits</template>
<ais-hits />
<template slot="footer">Footer</template>
</ais-panel>
`,
}));
storiesOf('ais-hits', module)
.addDecorator(
previewWrapper({
insightsClient: (method, payload) =>
action(`[InsightsClient] sent ${method} with payload`)(payload),
})
)
.add('with insights default slot', () => ({
template: `
<div>
<ais-configure :clickAnalytics="true" />
<ais-hits>
<div slot-scope="{ items, insights }">
<div
v-for="item in items"
:key="item.objectID"
>
custom objectID: {{item.objectID}}
<button @click="insights('clickedObjectIDsAfterSearch', { eventName: 'Add to cart', objectIDs: [item.objectID] })">Add to cart</button>
</div>
</div>
</ais-hits>
</div>
`,
}))
.add('with insights with item slot', () => ({
template: `
<div>
<ais-configure :clickAnalytics="true" />
<ais-hits>
<div slot="item" slot-scope="{ item, insights }">
custom objectID: {{item.objectID}}
<button @click="insights('clickedObjectIDsAfterSearch', { eventName: 'Add to cart', objectIDs: [item.objectID] })">Add to cart</button>
</div>
</ais-hits>
</div>
`,
}));