diff --git a/examples/sites/demos/apis/drawer.js b/examples/sites/demos/apis/drawer.js index 9850c0865..6f7ff186c 100644 --- a/examples/sites/demos/apis/drawer.js +++ b/examples/sites/demos/apis/drawer.js @@ -182,9 +182,21 @@ export default { } ], events: [ + { + name: 'open', + type: '() => void', + defaultValue: '', + desc: { + 'zh-CN': '打开抽屉事件', + 'en-US': '' + }, + mode: ['pc', 'mobile-first'], + pcDemo: 'open-event', + mfDemo: '' + }, { name: 'close', - type: '()=> void', + type: '() => void', defaultValue: '', desc: { 'zh-CN': '关闭抽屉事件', @@ -196,7 +208,7 @@ export default { }, { name: 'confirm', - type: '()=> void', + type: '() => void', defaultValue: '', desc: { 'zh-CN': '确认事件,设置 :show-footer="true" 时有效', diff --git a/examples/sites/demos/pc/app/drawer/open-event-composition-api.vue b/examples/sites/demos/pc/app/drawer/open-event-composition-api.vue new file mode 100644 index 000000000..f1d5c4148 --- /dev/null +++ b/examples/sites/demos/pc/app/drawer/open-event-composition-api.vue @@ -0,0 +1,27 @@ + + + diff --git a/examples/sites/demos/pc/app/drawer/open-event.spec.ts b/examples/sites/demos/pc/app/drawer/open-event.spec.ts new file mode 100644 index 000000000..6ae973472 --- /dev/null +++ b/examples/sites/demos/pc/app/drawer/open-event.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('打开事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('drawer#open-event') + + const message = page.locator('.tiny-modal.type__message').filter({ hasText: '打开事件' }).first() + + await page.getByRole('button', { name: '打开事件示例' }).click() + await expect(message).toBeVisible() +}) diff --git a/examples/sites/demos/pc/app/drawer/open-event.vue b/examples/sites/demos/pc/app/drawer/open-event.vue new file mode 100644 index 000000000..779ffc30c --- /dev/null +++ b/examples/sites/demos/pc/app/drawer/open-event.vue @@ -0,0 +1,36 @@ + + + diff --git a/examples/sites/demos/pc/app/drawer/webdoc/drawer.js b/examples/sites/demos/pc/app/drawer/webdoc/drawer.js index 437d6aae2..6c2247975 100644 --- a/examples/sites/demos/pc/app/drawer/webdoc/drawer.js +++ b/examples/sites/demos/pc/app/drawer/webdoc/drawer.js @@ -186,6 +186,18 @@ export default { }, codeFiles: ['footer-slot.vue'] }, + { + demoId: 'open-event', + name: { + 'zh-CN': '打开事件', + 'en-US': '' + }, + desc: { + 'zh-CN': '

打开抽屉事件。

', + 'en-US': '' + }, + codeFiles: ['open-event.vue'] + }, { demoId: 'close-event', name: { diff --git a/packages/renderless/src/drawer/index.ts b/packages/renderless/src/drawer/index.ts index c4d930584..798a7bba1 100644 --- a/packages/renderless/src/drawer/index.ts +++ b/packages/renderless/src/drawer/index.ts @@ -38,6 +38,7 @@ export const watchToggle = (bool: boolean) => { setTimeout(() => { emit('update:visible', bool) + bool && emit('open') }, 0) } diff --git a/packages/vue/src/drawer/src/pc.vue b/packages/vue/src/drawer/src/pc.vue index ddd5969b8..c0e6a33f2 100644 --- a/packages/vue/src/drawer/src/pc.vue +++ b/packages/vue/src/drawer/src/pc.vue @@ -144,6 +144,7 @@ export default defineComponent({ 'beforeClose', 'tipsProps' ], + emits: ['update:visible', 'open', 'close', 'confirm'], setup(props, context) { return setup({ props, context, renderless, api }) }