Skip to content

Commit ff26e0d

Browse files
authored
为 Dialog 等组件提供 WAI-ARIA 支持 (#237)
1 parent 390d401 commit ff26e0d

File tree

5 files changed

+20
-6
lines changed

5 files changed

+20
-6
lines changed

packages/veui/src/components/Alert.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<template>
2-
<div v-if="localOpen" class="veui-alert" :ui="ui" :class="`veui-alert-${type}`">
2+
<div v-if="localOpen" class="veui-alert" :ui="ui" :class="`veui-alert-${type}`"
3+
role="alert" aria-expanded="true">
34
<slot name="content">
45
<veui-icon class="veui-alert-icon" :name="icons[type]"></veui-icon>
56

packages/veui/src/components/AlertBox.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
:open.sync="localOpen"
44
:ui="localUi"
55
:closable="false"
6-
:priority="priority">
6+
:priority="priority"
7+
role="alertdialog">
78
<veui-icon v-if="icons[type]"
89
class="veui-alert-box-icon"
910
:name="icons[type]">

packages/veui/src/components/ConfirmBox.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
:priority="priority"
55
:closable="false"
66
escapable
7-
:overlay-class="mergeOverlayClass('veui-confirm-box')">
7+
:overlay-class="mergeOverlayClass('veui-confirm-box')"
8+
role="alertdialog">
89
<template slot="title">
910
<slot name="title">{{ title }}</slot>
1011
</template>

packages/veui/src/components/Dialog.vue

+12-2
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212
<div class="veui-dialog-content"
1313
ref="content"
1414
tabindex="-1"
15-
@keydown.esc="handleEscape">
15+
@keydown.esc="handleEscape"
16+
v-bind="attrs">
1617
<div class="veui-dialog-content-head"
1718
:class="{ 'veui-dialog-draggable': draggable }"
1819
v-drag:content.translate="{ draggable, containment: '@window', ready: dragReady }">
1920
<span class="veui-dialog-content-head-title"><slot name="title">{{ title }}</slot></span>
2021
<button type="button" class="veui-dialog-content-head-close"
2122
v-if="closable"
22-
@click="localOpen = false">
23+
@click="localOpen = false"
24+
aria-label="关闭">
2325
<veui-icon :name="icons.close"></veui-icon>
2426
</button>
2527
</div>
@@ -50,6 +52,7 @@ export default {
5052
'veui-button': Button,
5153
'veui-icon': Icon
5254
},
55+
inheritAttrs: false,
5356
directives: { drag },
5457
mixins: [ui, icons, overlay],
5558
props: {
@@ -86,6 +89,13 @@ export default {
8689
}
8790
},
8891
computed: {
92+
attrs () {
93+
return {
94+
role: 'dialog',
95+
'aria-modal': String(this.modal),
96+
...this.$attrs
97+
}
98+
},
8999
realEscapable () {
90100
return this.closable || this.escapable
91101
}

packages/veui/src/components/PromptBox.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
@ok="submit"
88
escapable
99
@escape="cancel"
10-
@cancel="cancel">
10+
@cancel="cancel"
11+
role="alertdialog">
1112
<template slot="title">
1213
<slot name="title">{{ title }}</slot>
1314
</template>

0 commit comments

Comments
 (0)