--- title: 'Drawer: Use Cases' parts: - Drawer - Use Cases eleventyNavigation: key: 'Drawer: Use Cases' order: 20 parent: Drawer title: Use Cases --- # Drawer: Use Cases ```js script import { html } from '@mdjs/mdjs-preview'; import { icons } from '@lion/ui/icon.js'; import '@lion/ui/define/lion-drawer.js'; import '@lion/ui/define/lion-icon.js'; import { demoStyle } from './src/demoStyle.js'; icons.addIconResolver('lion', (iconset, name) => { switch (iconset) { case 'misc': return import('../icon/assets/iconset-misc.js').then(module => module[name]); default: throw new Error(`Unknown iconset ${iconset}`); } }); ``` ## Positioning ### Default left By default, the drawer is positioned on the left side of the viewport. With the `position` property it can be positioned at the top or on the right of the screen. ### Top ```js preview-story export const top = () => html`

Headline

Hello! This is the content of the drawer
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris. Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus. Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
`; ``` ### Right ```js preview-story export const right = () => html`

Headline

Hello! This is the content of the drawer
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris. Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus. Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
`; ``` ## Opened Add the `opened` attribute to display the drawer opened. ```js preview-story export const opened = () => html`

Headline

Hello! This is the content of the drawer
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris. Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus. Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
`; ``` ## Methods There are the following methods available to control the extra content for the drawer. - `toggle()`: toggle the extra content - `show()`: show the extra content - `hide()`: hide the extra content ```js preview-story export const methods = ({ shadowRoot }) => html`

Headline

Hello! This is the content of the drawer
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris. Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus. Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
`; ``` ## Events `lion-drawer` fires an event on `invoker` click to notify the component's current state. It is useful for analytics purposes or to perform some actions while expanding and collapsing the component. - `@opened-changed`: triggers when drawer either gets opened or closed ```js preview-story export const events = ({ shadowRoot }) => html`
{ const collapsibleState = shadowRoot.querySelector('#collapsible-state'); collapsibleState.innerText = `Opened: ${ev.target.opened}`; }} >

Headline

Hello! This is the content of the drawer
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum convallis, lorem sit amet sollicitudin egestas, dui lectus sodales leo, quis luctus nulla metus vitae lacus. In at imperdiet augue. Mauris mauris dolor, faucibus non nulla vel, vulputate hendrerit mauris. Praesent dapibus leo nec libero scelerisque, ac venenatis ante tincidunt. Nulla maximus vestibulum orci, ac viverra nisi molestie vel. Vivamus eget elit et turpis elementum tempor ultricies at turpis. Ut pretium aliquet finibus. Duis ullamcorper ultrices velit id luctus. Phasellus in ex luctus, interdum ex vel, eleifend dolor. Cras massa odio, sodales quis consectetur a, blandit eu purus. Donec ut gravida libero, sed accumsan arcu.
`; ```