Right now there is no stable version available for this library. We're just working on it. 🚀

Drawer

Drawer 是一个从屏幕边缘滑出的浮层面板。

StorybookSourceRecipe Source

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,其 childrenonClick 事件可返回一个 Promise,Drawer 会在 Promiseresolve 后关闭。

Controlled Drawer

使用 Drawer 的 openonOpenChange 属性来控制 Drawer 的打开状态。

Drawer is closed

API

Drawer Props

Drawer 继承 as (默认为 m.div) 的 Props。

PropTypeDefaultDescription
childrenReactNode-通常是 DrawerContent、DrawerTrigger 等组件。
openboolean-控制 Drawer 的打开状态。(受控)
defaultOpenboolean-Drawer 的默认打开状态。(非受控)
onOpenChange(open: boolean) => void-当 Drawer 打开/关闭时触发回调函数。
classNamestring-Drawer 根元素的类名。
hideBackdropbooleanfalse是否隐藏 Drawer 的背景遮罩。
containerHTMLElement|null|() => HTMLElement | nulldocument.body放置 Portal 的容器元素。
keepMountedbooleanfalse是否保持 Drawer 内容在关闭时仍然挂载。
preventScrollbooleanfalse是否限制 Drawer 打开时页面滚动。
closeOnInteractBackdropbooleantrue是否在与背景遮罩交互时关闭 Drawer。
closeOnEscapebooleantrue是否在按下 Escape 键时关闭 Drawer。
restoreFocusbooleantrue是否在 Drawer 关闭时恢复焦点到之前聚焦的元素。
onClose() => void-Drawer 关闭时执行的回调函数。
asElementTypem.div用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。
sxInterpolation-用于根元素的 sx 属性。
classesPartial<Record<Slots, ClassValue>>-Drawer Slots 的 className。
slotPropsPartial<Record<Slots, ComponentProps>>-Drawer Slots 的 props。

Drawer Slots

Slot NameClass NameDefault ComponentDescription
backdrop.nui-drawer-backdrop'div'Drawer 的背景遮罩元素。

DrawerContent Props

DrawerContent 继承 as (默认为 'div') 的 Props。

PropTypeDefaultDescription
childrenReactNode-通常是 DrawerHeader、DrawerBody、DrawerFooter 等组件。
closeIconReactNode-自定义 Drawer 的关闭图标。
size'xs'|'sm'|'md'|'lg'|'xl'|'full''md'Drawer 的尺寸。
hideCloseButtonbooleanfalse是否隐藏 Drawer 的关闭按钮。
placement'top'|'bottom'|'left'|'right''right'Drawer 的显示位置。
motionPropsHTMLMotionProps|(placement) => HTMLMotionProps-自定义 Drawer 的动画效果。
aria-labelledbystring-Drawer 标题的 ARIA 标签。
aria-describedbystring-Drawer 描述的 ARIA 标签。
asElementType'div'用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。
sxInterpolation-用于根元素的 sx 属性。
classesPartial<Record<Slots, ClassValue>>-DrawerContent Slots 的 className。
slotPropsPartial<Record<Slots, ComponentProps>>-DrawerContent Slots 的 props。

DrawerContent Slots

Slot NameClass NameDefault ComponentDescription
closeButton.nui-drawer-content-close-button'button'Drawer 的关闭按钮元素。
paper.nui-drawer-content-paperm.sectionDrawer 的内容部分。

DrawerHeader Props

DrawerHeader 继承 as (默认为 'h2') 的 Props。

PropTypeDefaultDescription
childrenReactNode-Drawer 的标题内容。
asElementType'h2'用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。
sxInterpolation-用于根元素的 sx 属性。

DrawerBody Props

DrawerBody 继承 as (默认为 'div') 的 Props。

PropTypeDefaultDescription
childrenReactNode-Drawer 的内容。
asElementType'div'用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。
sxInterpolation-用于根元素的 sx 属性。

DrawerFooter Props

DrawerFooter 继承 as (默认为 'div') 的 Props。

PropTypeDefaultDescription
childrenReactNode-Drawer 的底部内容。
asElementType'div'用于根元素的组件。可以是表示 HTML 元素的字符串,也可以是一个组件。
sxInterpolation-用于根元素的 sx 属性。

DrawerTrigger Props

PropTypeDefaultDescription
childrenReactNode-触发 Drawer 打开的元素,需支持 `onClick` 事件。

DrawerClose Props

PropTypeDefaultDescription
childrenReactNode-触发 Drawer 关闭的元素,需支持 `onClick` 事件。
最后更新时间