Skip to content

Accordion ​

RC 1.2Kb +0.6 multi

Collapsible containers that can contain disclosure elements. They can be be single or grouped, where only one can be open at a time.

js
import 'pyro/accordion'
import 'pyro/accordion-group'
Preview Code Stackblitz
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam sed ex?

Usage ​

Single accordion ​

A single accordion with a summary as a prop, and content as a slot.

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam sed ex?
html
<pyro-accordion summary="Click me" open>
    <span slot="content">
    Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur
    ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam
    sed ex?
    </span>
</pyro-accordion>

Grouped accordions ​

If Accordions are inside a <pyro-accordion-group> only one of them can be open at a time, opening an accordion will close the others.

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam sed ex? Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam sed ex? Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam sed ex?
html
<pyro-accordion-group>
  <pyro-accordion summary="Click me 1" open>
      <span slot="content">
      Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur
      ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam
      sed ex?
      </span>
  </pyro-accordion>
  <pyro-accordion summary="Click me 2">
      <span slot="content">
      Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur
      ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam
      sed ex?
      </span>
  </pyro-accordion>
  <pyro-accordion summary="Click me 3">
      <span slot="content">
      Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur
      ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam
      sed ex?
      </span>
  </pyro-accordion>
</pyro-accordion-group>

Variations ​

With custom icon ​

The icon slot can be used to change the default icon. It can be a pyro-icon, a regular image or an empty slot to remove the icon. The no-flip props is being used to prevent the icon to be flipped when opening/closing.

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nesciunt possimus officia nihil nam consequatur ullam aspernatur veritatis officiis consectetur cum ipsam reprehenderit quos quo eum saepe facere, quisquam sed ex?

Props ​

ts
interface AccordionProps {
  /** Summary of the accordion, overriden by `slot="summary"` */
  summary?: string;
  /** Content of the accordion, overriden by `slot="content"` */
  content?: string;
  /** Indicates whether the accordion is open */
  open?: boolean;
  /** Disables flipping of the icon when open/closed */
  'no-flip'?: boolean;
  /** Slot for content */
  children?: any;
}

Slots ​

ts
/**
 * @slot summary - Summary of the accordion, always visible
 * @slot content - Content of the accordion that can be opened
 * @slot icon - Slot for the icon to be place inside the summary, chevron by default
 */

CSS prop theming ​

In addition to the css props below, the component can be more heavily customized by using the slots to override the content, text by default, and the icon.

Full theming sheet ​

js
/**      {--specific-value = --default} - explanation `css-property`
 * @prop {--pyro-accordion-text-color = --pyro-text-color)} - `color`
 * @prop {--pyro-accordion-surface-color = --pyro-surface-color)} - `background`
 * @prop {--pyro-accordion-border = --pyro-border)} - `border`
 * @prop {--pyro-accordion-border-radius = --pyro-border-radius)} - `border-radius`
 * @prop {--pyro-accordion-spacing = --pyro-spacing)} - `padding`
 */