Use vf-details to let users reveal optional supporting information without leaving the page.
vf-details is the Visual Framework disclosure component. It hides supplementary information behind a short, descriptive summary until the user chooses to reveal it.
Information inside a disclosure must always be optional to read - to be helpful, not essential. Users should be able to understand the page and complete their main task(s) without opening it.
A disclosure component can contribute to page height reduction, but should not reduce the user's mental effort to find, remember, understand and compare information. Hiding content can increase this effort when users must open several sections.
Top tip: review and simplify the content before introducing a disclosure component.
Use vf-details for:
Only use the component after confirming that the information can safely be hidden.
Do not use vf-details for:
When the disclosed content needs primary or secondary actions, consider a dedicated page or a task-focused pattern such as a panel or modal. When users need to compare detailed information, keep it visible or use a structure designed for comparison.
vf-details is by default a single disclosure element. The component uses the native <details> and <summary> elements. Omitting the open attribute () produces the native closed state.
You can use the component when displaying a single piece of optional supporting information.
A single disclosure should:
Do not place a disclosure around one short sentence simply to reduce page height. If the content is brief and useful to most users, keep it visible.
If a disclosure needs to be open when the page loads, reconsider whether the information should be hidden at all.
vf-stack and vf-gridTo create multiple stacked vf-details components, you can utilise vf-stack or vf-grid within the div element.
Use either layout utility to arrange a group vertically. The layout component controls the space between each disclosure; it does not change how the disclosures behave.
The summary is the label users select to reveal the content. It must describe what will appear when the disclosure is opened.
Summary labels should:
Expanded content should:
Do not use disclosures to store content removed from the main page without first reviewing whether it is still needed.
Depending on your environment you'll want to use render or include. As a rule of thumb: server-side use include, precompiled browser use render. If you're using vf-eleventy you should use include.
includeYou'll need to pass a context object from your code or Yaml file (example), as well as the path to the Nunjucks template. Nunjucks' include is an abstraction of render and provides some additional portability.
{% set context fromYourYamlFile %}
- or -
{% set context = {
"component-type" : "block",
"details_open" : true,
"details_summary" : "I'm a detail",
"details_content" : "Something small enough to escape casual notice.",
}
%}
{% include "../path_to/vf-details/vf-details.njk" %}
renderThis approach is best for bare-bones Nunjucks environments, such as precompiled templates with the Nunjucks slim runtime where include is not be available.
{% render '@vf-details', {
"component-type" : "block",
"details_open" : true,
"details_summary" : "I'm a detail",
"details_content" : "Something small enough to escape casual notice.",}
%}
<details class="vf-details" open>
<summary class="vf-details--summary">I'm a detail</summary>
Something small enough to escape casual notice.
</details>
This repository is distributed with npm. After installing npm and yarn, you can install vf-details with this command.
$ yarn add --dev @visual-framework/vf-details
This component does not use JS.
The source files included are written in Sass(scss). You can point your Sass include-path at your node_modules directory and import it like this.
@import "@visual-framework/vf-details/index.scss";
Make sure you import Sass requirements along with the modules. You can use a project boilerplate or the vf-sass-starter
set- style functions to cleaner versionv2.0.0 of the vf-design-tokens package or newer
File system location: components/vf-details
Find an issue on this page? Propose a change or discuss it.
Are you sure you want to close the chat?
Your current conversation history will be permanently deleted.