Free
Pro

Drawer

Ply drawer is a slide-in panel from any edge. Register provideAnimationsAsync() or open throws NG05105. Copy drawer in, set position and size, and emit closed from links so the overlay detaches on navigate. It is extra context, not the main page. CLI aliases sheet and side-sheet install this drawer, not bottom-sheet.

When to use

  • Filters, nav on small screens, and inspect-record side panels.
  • When the underlying page should stay mounted behind the overlay.

When not to use

  • Blocking tasks that need a focus-trapped modal — use dialog.
  • A mobile sheet from the bottom with swipe-to-dismiss — use bottom-sheet.
  • The primary layout rail — use sidenav or shell.

Install with npx ply-ui-cli add drawer.

free

View source

Use <ply-drawer #myDrawer position="left"></ply-drawer> to add a drawer to any page you want. Name it with identifier by your choice and use position="" to define position of the drawer. Supported positions are "left", "right", "top" and "bottom".

Use close=""with boolean "true" or "false" to control whether the drawer to be with button close or without it..

Left Drawer

Click button below to show the Left Drawer example

Right Drawer

Click button below to show the Right Drawer example

Top Drawer

Click button below to show the Top Drawer example

Bottom Drawer

Click button below to show the Bottom Drawer example

Drawer Size

Use size="" to define the Drawer size. Supported sizes are "sm", "md", "lg" and "xl". If size is not defined it will take automatic width of the content inside

Installation

Run the following command to add this component to your project:

bash
npx ply-ui-cli add drawer

API Reference

For AI agents

Copy a prompt with the registry name, CLI install, and import — or add the Ply MCP server.

bash
npx -y ply-ui-mcp

Ply provides standalone components. Import the exact elements you want to use into your component.

typescript (Example)
// Install: npx ply-ui-cli add drawer
// Paths are relative to aliases.components (default: src/app/components)
import { DrawerPanel } from './drawer/drawer-panel';
import { DrawerComponent } from './drawer/drawer.component';
import { DrawerDirective } from './drawer/drawer.directive';

@Component({
  selector: 'app-your-component',
  imports: [
    DrawerComponent,
    DrawerDirective
  ],
  template: `...`
})
export class YourComponent {}

API for drawer — generated from JSDoc in the library source.

API reference for drawer
APIMemberTypeDefaultDescription
DrawerPaneltemplateRefSignal<TemplateRef<T>> — —
DrawerPanelclosedOutputEmitterRef<void> — —
ply-drawersizeDrawerSize'md'The size of the drawer. Defaults to 'md'.
ply-drawerpositionDrawerPosition'end'Edge the drawer slides in from. Defaults to `end` (the right in LTR, the left in RTL). `left` and `right` stay physical.
ply-drawerclosebooleanfalseTriggers the closing animation when set to true.
ply-drawerdrawerLabelunknown'Drawer'Accessible name for the drawer dialog.
ply-drawer(closed)void — Event emitted when the drawer has fully closed.
[ply-drawer]placementunknown'end'The edge of the screen to slide the drawer in from.
[ply-drawer]ply-drawerDrawerPanel<T>(required)The reference to the `ply-drawer` component to open.