Skip to content

Drawer 抽屉

从视口边缘滑出的内容容器,适合设置面板、详情面板和分步编辑。组件提供四向打开、响应式尺寸、透明模态交互层、滚动锁、Escape 关闭、焦点管理和关闭前守卫。

抽屉面板继承全局或局部的 softclearsolid 材质设置。模态交互层保持透明,不改变抽屉之外页面的亮度;面板使用通用浮层阴影与细边框表达层级。

基础用法

编辑项目设置

抽屉内容由默认插槽承载,底部操作使用 footer 插槽。

vue

Drawer API

Attributes

属性说明类型默认值
modelValue / v-model是否显示booleanfalse
title默认标题;用于生成无障碍标题关联string``
direction打开方向:ltr 左侧、rtl 右侧、ttb 顶部、btt 底部stringrtl
size水平方向为宽度,垂直方向为高度;数字转换为 pxstring / numbermin(420px, calc(100vw - 16px))
modal是否启用透明模态交互层并设置 aria-modalbooleantrue
lockScroll显示期间是否锁定页面滚动booleantrue
teleported是否 Teleport 到 appendTobooleantrue
appendToTeleport 目标节点或选择器string / objectbody
closeOnClickModal点击模态交互层是否关闭booleantrue
closeOnPressEscape按 Escape 是否关闭booleantrue
showClose是否显示标题栏关闭按钮booleantrue
withHeader是否渲染标题栏;关闭后标题、关闭按钮和 header 插槽均不渲染booleantrue
closeLabel关闭按钮提示和无障碍名称string关闭抽屉
destroyOnClose关闭过渡完成后是否销毁内容booleanfalse
beforeClose关闭前守卫;接收 done,也支持返回布尔值或 Promise(done) => void | boolean | Promise<boolean>
ariaLabel自定义抽屉无障碍名称string``
ariaLabelledby自定义标题元素 IDstring``
ariaDescribedby自定义描述元素 IDstring``
zIndex模态层级number10000

beforeClose 使用回调风格时调用 done() 允许关闭;调用 done(false) 或返回 false 会保留抽屉。Promise 解析为 false 也会阻止关闭。守卫执行期间关闭按钮会暂时禁用,重复关闭请求会被忽略。

Events

事件名说明参数
update:modelValue组件内部请求关闭时更新绑定值(visible: boolean)
open开始打开时触发
opened打开过渡结束后触发
close组件内部触发关闭时调用(reason: DrawerCloseReason)
closed关闭过渡结束后触发
before-close-errorbeforeClose 抛出异常或 Promise reject(error: unknown)

DrawerCloseReasonapioverlayescapeclose-button。父组件直接把 v-model 改为 false 时不会额外触发 close

Slots

插槽名作用域参数说明
default{ close }抽屉正文
header{ close }自定义标题栏内容
footer{ close }底部操作区;未提供时不渲染 footer

Exposes

属性或方法说明
close(reason?)从组件实例主动关闭;默认 reason 为 api,仍会执行 beforeClose
drawerRef抽屉内容根元素引用

Aurora Plus · Vue 3 Component Library