vwf .

API Reference

Complete API documentation for components, utilities, and framework core

Reference/API/NavDrawer

NavDrawer

Slide-in navigation drawer with sections, header, and footer. Four components in one file.

🔧 Props

PropertyTypeDefaultDescription
isOpen*State<boolean>-Controls drawer open/close state
positionstring'left'Drawer position: 'left' or 'right'
widthstring'280px'Drawer width (CSS value)
onClosefunctionundefinedCallback when drawer closes
showOverlaybooleantrueShow backdrop overlay
closeOnOverlaybooleantrueClose when clicking overlay
closeOnEscapebooleantrueClose on ESC key press
classstring''Additional drawer classes
overlayClassstring''Additional overlay classes
...htmlPropsobject{}Standard HTML attributes

✨ Features

Four composable components (NavDrawer, NavDrawerSection, NavDrawerHeader, NavDrawerFooter)

Slide animation from left or right

Overlay backdrop with customizable opacity

Keyboard support (ESC to close)

Click-outside-to-close functionality

Flexible item structure: { key, label, icon?, description?, badge? }

Selected item highlighting

Responsive width configuration

Smooth transitions with GPU acceleration

💻 Examples

Basic Drawer

const isOpen = van.state(true);

const [overlay, drawer] = NavDrawer({ isOpen },
  NavDrawerHeader(
    { class: 'p-4 bg-gradient-to-br from-sky to-earth' },
    h3({ class: 'text-white font-semibold' }, 'Menu')
  ),
  NavDrawerSection({
    title: 'Navigation',
    items: [
      { key: 'home', label: 'Home', icon: 'oj-ux-ico-home' },
      { key: 'profile', label: 'Profile', icon: 'oj-ux-ico-user' }
    ],
    onSelect: (item) => console.log('Selected:', item.key)
  }),
  NavDrawerFooter(
    { class: 'p-4' },
    Button({ class: 'w-full' }, 'Logout')
  )
);

return div(overlay, drawer);

▶️ Live Preview

💡 Click "Edit Code" to modify the example

🔄 Click "Apply Changes" to see your modifications

↩️ Click "Reset" to restore original code

Right-Side Drawer

const settingsOpen = van.state(true);
const currentSetting = van.state('general');
const settingsItems = [
  { key: 'general', label: 'General', icon: 'oj-ux-ico-settings' },
  { key: 'privacy', label: 'Privacy', icon: 'oj-ux-ico-lock' }
];

const [overlay, drawer] = NavDrawer({
  isOpen: settingsOpen,
  position: 'right',
  width: '320px',
  onClose: () => settingsOpen.val = false
},
  NavDrawerSection({
    title: 'Settings',
    items: settingsItems,
    selectedItem: currentSetting
  })
);

return div(overlay, drawer);

▶️ Live Preview

💡 Click "Edit Code" to modify the example

🔄 Click "Apply Changes" to see your modifications

↩️ Click "Reset" to restore original code

💡 Usage Tips

🔗 Related

Explore vwf

Discover what vwf can do