Skip to main content

Details

Make a page easier to scan by letting users reveal more detailed information only if they need it.

Details with text arguments

The summary_text argument controls the details element’s label and text sets the content.

Input

= govuk_details(summary_text: summary_text, text: text)
<%= govuk_details(summary_text: summary_text, text: text) %>
{
  summary_text: "Help with nationality",
  text: "We need to know your nationality so we can work out which elections you can vote in."
}

Output

<details class="govuk-details">
  <summary class="govuk-details__summary">
    <span class="govuk-details__summary-text">
      Help with nationality
    </span>
  </summary>
  <div class="govuk-details__text">
    We need to know your nationality so we can work out which elections you can vote in.
  </div>
</details>

Details with a block

When the details element contains multiple lines of text or more complex content, the body can be provided using a block.

Input

= govuk_details(summary_text: "Help with nationality") do
  p
    | We need to know your nationality so we can work out which elections
      you’re entitled to vote in.

  p
    | If you cannot provide your nationality, you’ll have to send copies of
      identity documents through the post.
<%= govuk_details(summary_text: "Help with nationality") do %>
  <p>
    We need to know your nationality so we can work out which elections
    you’re entitled to vote in.
  </p>
  <p>
    If you cannot provide your nationality, you’ll have to send copies of
    identity documents through the post.
  </p>
<% end %>

Output

<details class="govuk-details">
  <summary class="govuk-details__summary">
    <span class="govuk-details__summary-text">
      Help with nationality
    </span>
  </summary>
  <div class="govuk-details__text">
    <p>
      We need to know your nationality so we can work out which elections
      you’re entitled to vote in.
    </p>
    <p>
      If you cannot provide your nationality, you’ll have to send copies of
      identity documents through the post.
    </p>
  </div>
</details>

Details that start open

You can make a details element start open by passing in open: true.

Input

= govuk_details(summary_text: summary_text, text: text, open: true)
<%= govuk_details(summary_text: summary_text, text: text, open: true) %>
{
  summary_text: "Help with nationality",
  text: "We need to know your nationality so we can work out which elections you can vote in."
}

Output

<details open="open" class="govuk-details">
  <summary class="govuk-details__summary">
    <span class="govuk-details__summary-text">
      Help with nationality
    </span>
  </summary>
  <div class="govuk-details__text">
    We need to know your nationality so we can work out which elections you can vote in.
  </div>
</details>