Drawer
Drawer 是一个从屏幕边缘滑出的浮层面板。
Usage
Hide Backdrop
设置 Drawer 的 hideBackdrop
属性为 true
可以隐藏 Drawer 的背景遮罩。
Prevent Scroll
设置 Drawer 的 preventScroll
属性为 true
可以限制 Drawer 打开时页面滚动。
Keep Mounted
设置 Drawer 的 keepMounted
属性为 true
可以保持 Drawer 内容在关闭时仍然挂载。
Sizes
DrawerContent 的 size
属性可以设置 Drawer 的大小,默认为 md
。
Placements
DrawerContent 的 placement
属性可以设置 Drawer 的显示位置,默认为 right
。
Custom Motion
DrawerContent 的 motionProps
属性可以自定义 Drawer 显示/隐藏的动画效果。
Asynchronously Close
DrawerClose 支持异步关闭 Drawer,其 children
的 onClick
事件可返回一个 Promise
,Drawer 会在 Promise
被 resolve
后关闭。
Controlled Drawer
使用 Drawer 的 open
和 onOpenChange
属性来控制 Drawer 的打开状态。
Drawer is closed
API
Drawer Props
Drawer 继承 as
(默认为 m.div
) 的 Props。
Prop | Type | Default | Description |
---|---|---|---|
children | ReactNode | - | 通常是 DrawerContent、DrawerTrigger 等组件。 |
open | boolean | - | 控制 Drawer 的打开状态。(受控) |
defaultOpen | boolean | - | Drawer 的默认打开状态。(非受控) |
onOpenChange | (open: boolean) => void | - | 当 Drawer 打开/关闭时触发回调函数。 |
className | string | - | Drawer 根元素的类名。 |
hideBackdrop | boolean | false | 是否隐藏 Drawer 的背景遮罩。 |
container | HTMLElement|null|() => HTMLElement | null | document.body | 放置 Portal 的容器元素。 |
keepMounted | boolean | false | 是否保持 Drawer 内容在关闭时仍然挂载。 |
preventScroll | boolean | false | 是否限制 Drawer 打开时页面滚动。 |
closeOnInteractBackdrop | boolean | true | 是否在与背景遮罩交互时关闭 Drawer。 |
closeOnEscape | boolean | true | 是否在按下 Escape 键时关闭 Drawer。 |
restoreFocus | boolean | true | 是否在 Drawer 关闭时恢复焦点到之前聚焦的元素。 |
onClose | () => void | - | Drawer 关闭时执行的回调函数。 |
as | ElementType | m.div | 用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。 |
sx | Interpolation | - | 用于根元素的 sx 属性。 |
classes | Partial<Record<Slots, ClassValue>> | - | Drawer Slots 的 className。 |
slotProps | Partial<Record<Slots, ComponentProps>> | - | Drawer Slots 的 props。 |
Drawer Slots
Slot Name | Class Name | Default Component | Description |
---|---|---|---|
backdrop | .nui-drawer-backdrop | 'div' | Drawer 的背景遮罩元素。 |
DrawerContent Props
DrawerContent 继承 as
(默认为 'div'
) 的 Props。
Prop | Type | Default | Description |
---|---|---|---|
children | ReactNode | - | 通常是 DrawerHeader、DrawerBody、DrawerFooter 等组件。 |
closeIcon | ReactNode | - | 自定义 Drawer 的关闭图标。 |
size | 'xs'|'sm'|'md'|'lg'|'xl'|'full' | 'md' | Drawer 的尺寸。 |
hideCloseButton | boolean | false | 是否隐藏 Drawer 的关闭按钮。 |
placement | 'top'|'bottom'|'left'|'right' | 'right' | Drawer 的显示位置。 |
motionProps | HTMLMotionProps|(placement) => HTMLMotionProps | - | 自定义 Drawer 的动画效果。 |
aria-labelledby | string | - | Drawer 标题的 ARIA 标签。 |
aria-describedby | string | - | Drawer 描述的 ARIA 标签。 |
as | ElementType | 'div' | 用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。 |
sx | Interpolation | - | 用于根元素的 sx 属性。 |
classes | Partial<Record<Slots, ClassValue>> | - | DrawerContent Slots 的 className。 |
slotProps | Partial<Record<Slots, ComponentProps>> | - | DrawerContent Slots 的 props。 |
DrawerContent Slots
Slot Name | Class Name | Default Component | Description |
---|---|---|---|
closeButton | .nui-drawer-content-close-button | 'button' | Drawer 的关闭按钮元素。 |
paper | .nui-drawer-content-paper | m.section | Drawer 的内容部分。 |
DrawerHeader Props
DrawerHeader 继承 as
(默认为 'h2'
) 的 Props。
Prop | Type | Default | Description |
---|---|---|---|
children | ReactNode | - | Drawer 的标题内容。 |
as | ElementType | 'h2' | 用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。 |
sx | Interpolation | - | 用于根元素的 sx 属性。 |
DrawerBody Props
DrawerBody 继承 as
(默认为 'div'
) 的 Props。
Prop | Type | Default | Description |
---|---|---|---|
children | ReactNode | - | Drawer 的内容。 |
as | ElementType | 'div' | 用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。 |
sx | Interpolation | - | 用于根元素的 sx 属性。 |
DrawerFooter Props
DrawerFooter 继承 as
(默认为 'div'
) 的 Props。
Prop | Type | Default | Description |
---|---|---|---|
children | ReactNode | - | Drawer 的底部内容。 |
as | ElementType | 'div' | 用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。 |
sx | Interpolation | - | 用于根元素的 sx 属性。 |
DrawerTrigger Props
Prop | Type | Default | Description |
---|---|---|---|
children | ReactNode | - | 触发 Drawer 打开的元素,需支持 `onClick` 事件。 |
DrawerClose Props
Prop | Type | Default | Description |
---|---|---|---|
children | ReactNode | - | 触发 Drawer 关闭的元素,需支持 `onClick` 事件。 |
最后更新时间