Skip to main content

Drawer

A panel that slides in from the edge of the screen.

When To Use

  • Use Drawer for displaying content that is supplementary to the main screen
  • When you need more screen space than a Modal provides
  • For showing detailed information or forms without navigating away

Basic Usage

import { useState } from "react";
import { TxDrawer, TxButton } from "tx-design-ui";

function Example() {
const [open, setOpen] = useState(false);

return (
<>
<TxButton onClick={() => setOpen(true)}>Open Drawer</TxButton>
<TxDrawer open={open} onClose={() => setOpen(false)} title="Basic Drawer">
<p>This is the drawer content.</p>
</TxDrawer>
</>
);
}

Placement

The drawer can slide in from different edges of the screen.

// From right (default)
<TxDrawer placement="right" open={open} onClose={() => setOpen(false)} title="Right Drawer">
<p>Drawer from right</p>
</TxDrawer>

// From left
<TxDrawer placement="left" open={open} onClose={() => setOpen(false)} title="Left Drawer">
<p>Drawer from left</p>
</TxDrawer>

// From top
<TxDrawer placement="top" open={open} onClose={() => setOpen(false)} title="Top Drawer">
<p>Drawer from top</p>
</TxDrawer>

// From bottom
<TxDrawer placement="bottom" open={open} onClose={() => setOpen(false)} title="Bottom Drawer">
<p>Drawer from bottom</p>
</TxDrawer>

Add action buttons in the footer.

function Example() {
const [open, setOpen] = useState(false);

return (
<>
<TxButton onClick={() => setOpen(true)}>Open Drawer</TxButton>
<TxDrawer
open={open}
onClose={() => setOpen(false)}
title="Drawer with Footer"
footer={
<>
<TxButton onClick={() => setOpen(false)}>Cancel</TxButton>
<TxButton type="primary" onClick={() => setOpen(false)}>
Submit
</TxButton>
</>
}
>
<p>This drawer has a footer.</p>
</TxDrawer>
</>
);
}

Custom Size

Set custom width (for left/right) or height (for top/bottom).

<TxDrawer open={open} onClose={() => setOpen(false)} title="Large Drawer" width="600px">
<p>This drawer has custom width.</p>
</TxDrawer>

API

PropertyTypeDefaultDescription
openbooleanfalseWhether the drawer is visible
onClosefunction()-Callback when drawer is closed
titlestring | ReactNode-Drawer title
childrenReactNode-Drawer content
footerReactNode-Drawer footer content
placement'left' | 'right' | 'top' | 'bottom''right'Position of the drawer
widthstring'378px'Width (for left/right placement)
heightstring'378px'Height (for top/bottom placement)
closablebooleantrueWhether to show close button
maskClosablebooleantrueWhether to close on mask click

Notes

  • Use Drawer for forms, settings, or detailed views
  • Consider the placement based on your UI layout
  • The drawer body automatically scrolls if content is too long