Airframe GitHub Storybook
Component

ba-details

ba-details is used for standalone disclosure of secondary information

Airframe

Active
Figma

Web Components

Active
Storybook Github

React

Active
Storybook Github

React Native

Planned
Design Code Accessibility QA

Picking between ba-details and ba-accordion

Use ba-accordion when:

  • The text in the closed state acts as a heading for the content it contains
  • You need something more prominent
  • Grouping many collapsible sections

Use ba-details when:

  • There is a small amount of content to be disclosed
  • You need something less prominent
  • The collapsible section is standalone
A

Summary

The clickable summary text that toggles the visibility of the content

B

Content area

The expandable area that reveals additional content, such as text, layout, or other components, when the details is opened

A few contextual examples of where to use this component include:

  • Read more
  • Terms and conditions
  • Summary of flight details
  • Clarifying why information is needed on an input

This will help users decide whether to interact with this component. For example: "Read more", "Terms and Conditions", "Why we need this information", etc

When there are many ba-details grouped together it's tempting to only allow one accordion to be open at a time. However this does not provide the best user experience:

  • On mobile devices auto closing can interfere with the scroll behavior
  • Automatically moving the user up and down the page can be disorientating
  • Increases cognitive load of having to remember what was in a closed accordion
  • It makes it hard to compare the contents of multiple ba-details

Further Reading:

The content in ba-details is intended for information that not every user needs. Therefore, it should remain closed until the user interacts with the component.

If you are considering opening ba-details by default, the content might be better placed directly on the page instead of inside the ba-details

<ba-details summary="Summary">
  <ba-content>
    <p>Details content</p>
  </ba-content>
</ba-details>
Property Attribute Description Type Default
summary(required) summary Text to display in the interactive part of the component string undefined
  • None
Slot Description Permitted elements
Unnamed slot Elements will render in the body of the component <ba‑content>, <ba‑flex>, <ba‑form‑group>, <ba‑form‑group‑dropdown>, <ba‑grid>, <ba‑input>, <ba‑input‑date>, <ba‑input‑datepicker>, <ba‑input‑email>, <ba‑input‑number>, <ba‑input‑password>, <ba‑input‑phone‑number>, <ba‑input‑secure‑field>, <ba‑input‑stepper>, <ba‑input‑text>, <ba‑input‑textarea>, <ba‑input‑typeahead>, <ba‑input‑upload>, <ba‑radio‑group>, <ba‑select>, <fieldset>, <form>

ba-details can be slotted into:

In most scenarios ba-details will consist of a short descriptive summary and a few lines of content

A basic example of ba-details
<ba-details summary="Short descriptive text">
  <ba-content>
    <p>Hidden content to be shown when opened</p>
  </ba-content>
</ba-details>
Prop Description Type Default
summary (required) Text to display in the interactive part of the component string undefined
children Elements will render in the body of the component <ba‑content>, <ba‑flex>, <ba‑form‑group>, <ba‑form‑group‑dropdown>, <ba‑grid>, <ba‑input>, <ba‑input‑date>, <ba‑input‑datepicker>, <ba‑input‑email>, <ba‑input‑number>, <ba‑input‑password>, <ba‑input‑phone‑number>, <ba‑input‑secure‑field>, <ba‑input‑stepper>, <ba‑input‑text>, <ba‑input‑textarea>, <ba‑input‑typeahead>, <ba‑input‑upload>, <ba‑radio‑group>, <ba‑select>, <fieldset>, <form>

None

BaDetails can be slotted into:

In most scenarios BaDetails will consist of a short descriptive summary and a few lines of content

A basic example of BaDetails
<BaDetails summary="Short descriptive text">
  <BaContent>
    <p>Hidden content to be shown when opened</p>
  </BaContent>
</BaDetails>

React Native documentation coming soon.

In high contrast mode:

  • The icon and text use the browser default colour for the summary element
  • The keyline is the same colour as the current text colour

VoiceOver does not announce the expanded or collapsed state in Safari

This is a known bug and can be found on the WebKit bug tracker: https://bugs.webkit.org/show_bug.cgi?id=252223.

Issues with moving between multiple ba-details with VoiceOver

When trying to tab between multiple ba-details with VoiceOver in Safari, if a ba-details has been opened and then closed, you cannot navigate to the next ba-details. Instead, you are moved to the first one in the list.

State: Summary has focus

⏎ Enter

Toggles the open / close state of ba-details

␣ Space

Toggles the open / close state of ba-details

Use this checklist to confirm the component has been configured and used correctly.

  • ba-details is only used for secondary information that is not needed by all users
  • Summary text is clear, short, and descriptive, helping users decide whether to expand the component
  • Multiple ba-details can be open at the same time to avoid disorienting users with auto-closing behavior
  • ba-details is not opened by default - content remains closed until user interaction
  • Content within ba-details is concise and relevant to the summary text
  • ba-details has discernible text in the summary
  • Focus indicator has not been obscured on all sides of the component
  • ba-details is not nested inside other interactive elements

These checks are handled by the component and do not need to be repeated each time it is used.

  • ba-details is operable using assistive technology
  • Has a visible focus indicator on all sides of the component
  • Colour contrast for all states in all BAgel themes
  • Animations respect users' reduced motion settings
  • High contrast mode adjustments
Designing Developing Components BAgel helper QA process britishairways.com Careers Cookie policy