Use this interactive accordion-link component in places where information is optional.
details
element.open
attribute: <details class="vf-details" open>
.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
.
include
You'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" %}
render
This 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][https://www.npmjs.com/]. After [installing npm][https://www.npmjs.com/get-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.