No Preview

Sorry, but you either have no stories or none are selected somehow.

If the problem persists, check the browser console, or the terminal you've run Storybook from.

The component failed to render properly, likely due to a configuration issue in Storybook. Here are some common causes and how you can address them:

  1. Missing Context/Providers: You can use decorators to supply specific contexts or providers, which are sometimes necessary for components to render correctly. For detailed instructions on using decorators, please visit the Decorators documentation.
  2. Misconfigured Webpack or Vite: Verify that Storybook picks up all necessary settings for loaders, plugins, and other relevant parameters. You can find step-by-step guides for configuring Webpack or Vite with Storybook.
  3. Missing Environment Variables: Your Storybook may require specific environment variables to function as intended. You can set up custom environment variables as outlined in the Environment Variables documentation.

The Dropdown component is a directive that provides contextual overlays for displaying lists of links and more.

The dropdown is an ng-bootstrap component.

This documentation gives only the specifics for a usage within Post project.
Read the complete information about the component's configuration in ng-bootstrap dropdown documentation.

Make sure the @ng-bootstrap/ng-bootstrap package is already present in your project or follow ng-bootstrap installation guidelines.

To import all ng-bootstrap components:

import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; @NgModule({ imports: [NgbModule], }) export class YourAppModule { }

To import only this component:

import {NgbDropdownModule} from '@ng-bootstrap/ng-bootstrap'; @NgModule({ imports: [NgbDropdownModule], }) export class YourAppModule { }

Make sure the @swisspost/design-system-styles package is already present in your project or follow the installation guidelines.

To import all Design System styles:

@use '@swisspost/design-system-styles/index.scss';

To import only the styles required for this component:

@use '@swisspost/design-system-styles/basics.scss'; @use '@swisspost/design-system-styles/components/dropdown.scss';
Basic Dropdown
<div> <label for="dropdownBasic1" class="form-label">Basic dropdown</label> <div ngbDropdown class="me-2"> <button class="btn btn-primary" id="dropdownBasic1" ngbDropdownToggle>Toggle dropdown</button> <div ngbDropdownMenu aria-labelledby="dropdownBasic1"> <button ngbDropdownItem>Action - 1</button> <button ngbDropdownItem class="active">Active action</button> <button ngbDropdownItem disabled>Something disabled</button> <hr /> <button ngbDropdownItem>Action - 2</button> <button ngbDropdownItem>Action - 3</button> <button ngbDropdownItem>Action - 4</button> <button ngbDropdownItem>Action - 5</button> <button ngbDropdownItem>Action - 6</button> <button ngbDropdownItem>Action - 7</button> <button ngbDropdownItem>Action - 8</button> <button ngbDropdownItem>Action - 9</button> <button ngbDropdownItem>Action - 10</button> <button ngbDropdownItem>Action - 11</button> </div> </div> </div>
Basic Dropup
<div> <label for="dropdownBasic2" class="form-label">Basic dropup</label> <div ngbDropdown placement="top-right" class="me-2"> <button class="btn btn-secondary" id="dropdownBasic2" ngbDropdownToggle>Toggle dropup</button> <div ngbDropdownMenu aria-labelledby="dropdownBasic2"> <button ngbDropdownItem>Action - 1</button> <button ngbDropdownItem>Another Action</button> <button ngbDropdownItem>Something else is here</button> <button ngbDropdownItem>Action - 2</button> <button ngbDropdownItem>Action - 3</button> </div> </div> </div>
Scrollable Dropup
<div> <label for="dropdownBasic3" class="form-label">Long dropup with scroll</label> <div ngbDropdown placement="top-right" class="me-2"> <button class="btn btn-primary" id="dropdownBasic3" ngbDropdownToggle>Toggle dropup</button> <div ngbDropdownMenu aria-labelledby="dropdownBasic2"> <button ngbDropdownItem>Action - 1</button> <button ngbDropdownItem>Another Action</button> <button ngbDropdownItem>Something else is here</button> <button ngbDropdownItem>Action - 2</button> <button ngbDropdownItem>Action - 3</button> <button ngbDropdownItem>Action - 4</button> <button ngbDropdownItem>Action - 5</button> <button ngbDropdownItem>Action - 6</button> <button ngbDropdownItem>Action - 7</button> <button ngbDropdownItem>Action - 8</button> <button ngbDropdownItem>Action - 9</button> <button ngbDropdownItem>Action - 10</button> <button ngbDropdownItem>Action - 11</button> <button ngbDropdownItem>Action - 12</button> <button ngbDropdownItem>Action - 13</button> <button ngbDropdownItem>Action - 14</button> </div> </div> </div>
Dropdown with Icons
<div> <label for="dropdownBasic4" class="form-label">Dropdown with icons</label> <div ngbDropdown class="me-2"> <button class="btn btn-secondary" id="dropdownBasic4" ngbDropdownToggle>Toggle dropdown</button> <div ngbDropdownMenu aria-labelledby="dropdownBasic3"> <button ngbDropdownItem class="btn-border-radius-sm"> <i class="pi pi-3035"></i> <span>Action with icon</span> </button> <button ngbDropdownItem class="btn d-flex align-items-center justify-content-between"> <span> <i class="pi pi-1001"></i> <span>Action with two icons</span> </span> <i class="pi pi-2050"></i> </button> <button ngbDropdownItem class="btn"> <i class="pi"></i> <span>Action with empty icon</span> </button> <button ngbDropdownItem> Action name as if it was written by Ernest Hemingway who would not stop writing even if there's no point to do so whatsoever </button> <button ngbDropdownItem>Action - 5</button> <button ngbDropdownItem>Action - 6</button> <button ngbDropdownItem>Action - 7</button> <button ngbDropdownItem>Action - 8</button> <button ngbDropdownItem>Action - 9</button> <button ngbDropdownItem>Action - 10</button> <button ngbDropdownItem>Action - 11</button> </div> </div> </div>