Skip to content

Commit 5e78562

Browse files
committed
fix(extension-manager): make popover trigger accessible
1 parent a10a335 commit 5e78562

3 files changed

Lines changed: 31 additions & 3 deletions

File tree

packages/components/src/extension-manager/components/ExtensionCardPopover.vue

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,9 @@ const handleToggle = (event: ToggleEvent) => {
125125

126126
<template>
127127
<component :is="renderAsChildTrigger()" v-if="asChild" />
128-
<div v-else ref="triggerRef" class="tr-extension-card-popover__trigger" @click="toggle">
128+
<button v-else ref="triggerRef" type="button" class="tr-extension-card-popover__trigger" @click="toggle">
129129
<slot name="trigger" :popover-id="popoverId" :open="open" />
130-
</div>
130+
</button>
131131
<div
132132
:id="popoverId"
133133
ref="popoverRef"
@@ -144,6 +144,12 @@ const handleToggle = (event: ToggleEvent) => {
144144
<style lang="less" scoped>
145145
.tr-extension-card-popover__trigger {
146146
display: inline-flex;
147+
padding: 0;
148+
border: 0;
149+
background: transparent;
150+
color: inherit;
151+
font: inherit;
152+
cursor: pointer;
147153
}
148154
149155
.tr-extension-card-popover__content {

packages/test/component/extension-manager/ExtensionCardPopover.fixture.vue

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ const CustomTrigger = defineComponent({
1515
<div>
1616
<button type="button" data-testid="outside-target">外部区域</button>
1717

18+
<section data-testid="default-trigger-section">
19+
<ExtensionCardPopover>
20+
<template #trigger>
21+
<span>默认触发器</span>
22+
</template>
23+
<template #content>
24+
<span>默认触发器内容</span>
25+
</template>
26+
</ExtensionCardPopover>
27+
</section>
28+
1829
<section data-testid="native-trigger-section">
1930
<ExtensionCardPopover as-child>
2031
<template #trigger="{ open }">

packages/test/component/extension-manager/ExtensionCardPopover.spec.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
import { expect, test } from '@playwright/experimental-ct-vue'
22
import ExtensionCardPopoverFixture from './ExtensionCardPopover.fixture.vue'
33

4-
test.describe('ExtensionCardPopover asChild CT', () => {
4+
test.describe('ExtensionCardPopover CT', () => {
5+
test('默认触发器可以通过键盘打开浮层', async ({ mount }) => {
6+
const component = await mount(ExtensionCardPopoverFixture)
7+
const trigger = component.getByRole('button', { name: '默认触发器' })
8+
9+
await trigger.focus()
10+
await expect(trigger).toBeFocused()
11+
12+
await trigger.press('Enter')
13+
await expect(component.getByText('默认触发器内容')).toBeVisible()
14+
})
15+
516
test('原生元素作为唯一触发节点且能够打开浮层', async ({ mount }) => {
617
const component = await mount(ExtensionCardPopoverFixture)
718
const section = component.getByTestId('native-trigger-section')

0 commit comments

Comments
 (0)