Skip to content

Commit 25aaf9c

Browse files
committed
focus on item when clicking indicator button
1 parent b42a193 commit 25aaf9c

File tree

2 files changed

+27
-15
lines changed

2 files changed

+27
-15
lines changed

packages/veui-theme-one/components/carousel.less

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
overflow: hidden;
7070
background: no-repeat center/cover;
7171
transition: opacity .3s;
72+
outline: none;
7273

7374
&-enter,
7475
&-leave-to {

packages/veui/src/components/Carousel.vue

+26-15
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
<template>
22
<div class="veui-carousel" :ui="ui">
33
<div class="veui-carousel-viewport" @mouseenter="handleEnter" @mouseleave="handleLeave">
4-
<transition-group name="veui-carousel-item" class="veui-carousel-items" tag="ol">
5-
<li v-for="(item, i) in datasource" v-show="localIndex === i" :key="i"
6-
:class="{
7-
'veui-carousel-item': true,
8-
'veui-carousel-item-current': localIndex === i
9-
}"
10-
:style="{
11-
'background-image': `url(${item.src})`
12-
}">
13-
<slot v-bind="item" :index="i">
14-
<img class="veui-sr-only" :src="item.src" :alt="item.alt">
15-
</slot>
16-
</li>
17-
</transition-group>
18-
<div v-if="indicator === 'number'" class="veui-carousel-indicator-numbers">{{ localIndex + 1 }}<span class="veui-carousel-indicator-numbers-separator"></span>{{ count }}</div>
4+
<transition-group name="veui-carousel-item" class="veui-carousel-items" tag="ol">
5+
<li
6+
v-for="(item, i) in datasource"
7+
v-show="localIndex === i"
8+
ref="item"
9+
:key="i"
10+
:class="{
11+
'veui-carousel-item': true,
12+
'veui-carousel-item-current': localIndex === i
13+
}"
14+
:style="{
15+
'background-image': `url(${item.src})`
16+
}"
17+
tabindex="0">
18+
<slot v-bind="item" :index="i">
19+
<img class="veui-sr-only" :src="item.src" :alt="item.alt">
20+
</slot>
21+
</li>
22+
</transition-group>
23+
<div v-if="indicator === 'number'" class="veui-carousel-indicator-numbers">{{ localIndex + 1 }}<span class="veui-carousel-indicator-numbers-separator"></span>{{ count }}</div>
1924
<nav v-else-if="indicator !== 'none'" :class="{
2025
[`veui-carousel-indicator-${indicator}s`]: true
2126
}">
@@ -125,6 +130,12 @@ export default {
125130
return
126131
}
127132
133+
if (event === 'click') {
134+
setTimeout(() => {
135+
this.$refs.item[this.localIndex].focus()
136+
}, 0)
137+
}
138+
128139
this.localIndex = index
129140
},
130141
initPlay () {

0 commit comments

Comments
 (0)