sp-accordion
NPM 1.7.0
View Storybook
Try it on Stackblitz
Overview
The <sp-accordion>
element contains a list of items that can be expanded or collapsed to reveal additional content or information associated with each item. There can be zero expanded items, exactly one expanded item, or more than one item expanded at a time, depending on the configuration. This list of items is defined by child <sp-accordion-item>
<sp-accordion>
parent.
Usage
yarn add @spectrum-web-components/accordion
Import the side effectful registration of <sp-accordion>
and <sp-accordion-item>
via:
import '@spectrum-web-components/accordion/sp-accordion.js'; import '@spectrum-web-components/accordion/sp-accordion-item.js';
When looking to leverage the Accordion
and AccordionItem
base class as a type and/or for extension purposes, do so via:
import { Accordion, AccordionItem } from '@spectrum-web-components/accordion';
Anatomy
The accordion consists of several key parts:
- A container element that manages the accordion behavior
- Individual accordion items that can be expanded or collapsed
- Each item has a header with a label and chevron icon
- Content that is revealed when an item is expanded
<sp-accordion> <sp-accordion-item label="Bellows"> <div> The bellows is the expandable section in the middle of the accordion. </div> </sp-accordion-item> <sp-accordion-item disabled label="Treble"> <div> The treble section of the accordion is the right-hand section for playing melodies. </div> </sp-accordion-item> <sp-accordion-item label="Bass"> <div> The bass section of the accordion is the left-hand section for playing accompaniment. </div> </sp-accordion-item> </sp-accordion>
Options
Sizes
<sp-accordion size="s"> <sp-accordion-item label="Key Accordion"> <div> A key accordion, or a chromatic piano accordion, includes a keyboard for the right hand. </div> </sp-accordion-item> <sp-accordion-item disabled label="Button Accordion"> <div> A button accoridon, or a chromatic accordion, has buttons instead of keys. </div> </sp-accordion-item> <sp-accordion-item label="Diatonic Accordion"> <div> Produces two different tones or notes depending on whether the bellows is pulled or pushed. </div> </sp-accordion-item> <sp-accordion-item label="Concertina"> <div> A concertina has buttons on both sides and each button makes two different notes or tones depending on whether the bellows is pulled or pushed. </div> </sp-accordion-item> </sp-accordion>
<sp-accordion size="m"> <sp-accordion-item label="Key Accordion"> <div> A key accordion, or a chromatic piano accordion, includes a keyboard for the right hand. </div> </sp-accordion-item> <sp-accordion-item disabled label="Button Accordion"> <div> A button accoridon, or a chromatic accordion, has buttons instead of keys. </div> </sp-accordion-item> <sp-accordion-item label="Diatonic Accordion"> <div> Produces two different tones or notes depending on whether the bellows is pulled or pushed. </div> </sp-accordion-item> <sp-accordion-item label="Concertina"> <div> A concertina has buttons on both sides and each button makes two different notes or tones depending on whether the bellows is pulled or pushed. </div> </sp-accordion-item> </sp-accordion>
<sp-accordion size="l"> <sp-accordion-item label="Key Accordion"> <div> A key accordion, or a chromatic piano accordion, includes a keyboard for the right hand. </div> </sp-accordion-item> <sp-accordion-item disabled label="Button Accordion"> <div> A button accoridon, or a chromatic accordion, has buttons instead of keys. </div> </sp-accordion-item> <sp-accordion-item label="Diatonic Accordion"> <div> Produces two different tones or notes depending on whether the bellows is pulled or pushed. </div> </sp-accordion-item> <sp-accordion-item label="Concertina"> <div> A concertina has buttons on both sides and each button makes two different notes or tones depending on whether the bellows is pulled or pushed. </div> </sp-accordion-item> </sp-accordion>
<sp-accordion size="xl"> <sp-accordion-item label="Key Accordion"> <div> A key accordion, or a chromatic piano accordion, includes a keyboard for the right hand. </div> </sp-accordion-item> <sp-accordion-item disabled label="Button Accordion"> <div> A button accoridon, or a chromatic accordion, has buttons instead of keys. </div> </sp-accordion-item> <sp-accordion-item label="Diatonic Accordion"> <div> Produces two different tones or notes depending on whether the bellows is pulled or pushed. </div> </sp-accordion-item> <sp-accordion-item label="Concertina"> <div> A concertina has buttons on both sides and each button makes two different notes or tones depending on whether the bellows is pulled or pushed. </div> </sp-accordion-item> </sp-accordion>
Density
The density
property, when applied, accepts the values of compact
or spacious
.
<div style=" display: grid; grid-gap: 20px; grid-template-columns: 1fr 1fr" > <sp-accordion density="compact" size="s"> <sp-accordion-item label="Compact Density"> <div>This accordion is compact.</div> </sp-accordion-item> <sp-accordion-item label="Small Size"> <div>This accordion is also small.</div> </sp-accordion-item> </sp-accordion> <sp-accordion density="compact" size="m"> <sp-accordion-item label="Compact Density"> <div>This accordion is compact.</div> </sp-accordion-item> <sp-accordion-item label="Medium Size"> <div>This accordion is also medium.</div> </sp-accordion-item> </sp-accordion> <sp-accordion density="compact" size="l"> <sp-accordion-item label="Compact Density"> <div>This accordion is compact.</div> </sp-accordion-item> <sp-accordion-item label="Large Size"> <div>This accordion is also large.</div> </sp-accordion-item> </sp-accordion> <sp-accordion density="compact" size="xl"> <sp-accordion-item label="Compact Density"> <div>This accordion is compact.</div> </sp-accordion-item> <sp-accordion-item label="Extra Large Size"> <div>This accordion is also extra large.</div> </sp-accordion-item> </sp-accordion> </div>
<div style=" display: grid; grid-gap: 20px; grid-template-columns: 1fr 1fr" > <sp-accordion density="spacious" size="s"> <sp-accordion-item label="Spacious Density"> <div>This accordion is spacious.</div> </sp-accordion-item> <sp-accordion-item label="Small Size"> <div>This accordion is also small.</div> </sp-accordion-item> </sp-accordion> <sp-accordion density="spacious" size="m"> <sp-accordion-item label="Spacious Density"> <div>This accordion is spacious.</div> </sp-accordion-item> <sp-accordion-item label="Medium Size"> <div>This accordion is also medium.</div> </sp-accordion-item> </sp-accordion> <sp-accordion density="spacious" size="l"> <sp-accordion-item label="Spacious Density"> <div>This accordion is spacious.</div> </sp-accordion-item> <sp-accordion-item label="Large Size"> <div>This accordion is also large.</div> </sp-accordion-item> </sp-accordion> <sp-accordion density="spacious" size="xl"> <sp-accordion-item label="Spacious Density"> <div>This accordion is spacious.</div> </sp-accordion-item> <sp-accordion-item label="Extra Large Size"> <div>This accordion is also extra large.</div> </sp-accordion-item> </sp-accordion> </div>
States
Allow Multiple
By default, only one accordion item can be expanded at a time. Use the allow-multiple
attribute to allow multiple items to be expanded simultaneously.
<sp-accordion allow-multiple> <sp-accordion-item label="Kermit"> <div>Kermit is a frog.</div> </sp-accordion-item> <sp-accordion-item label="Fozzie"> <div>Fozzie is a bear.</div> </sp-accordion-item> <sp-accordion-item label="Miss Piggy"> <div>Miss Piggy is a pig.</div> </sp-accordion-item> </sp-accordion>
Disabled
Individual accordion items can be disabled using the disabled
attribute. Disabled items cannot be expanded or collapsed.
<sp-accordion> <sp-accordion-item label="Apples"> <div> We have some of the most popular varieties include Red Delicious, Gala, Granny Smith, Honeycrisp, and Fuji. </div> </sp-accordion-item> <sp-accordion-item disabled label="Bananas"> <div>We have the Gros Michel.</div> </sp-accordion-item> <sp-accordion-item label="Oranges"> <div>We have Mandarins, Seville Oranges, and Clementines.</div> </sp-accordion-item> </sp-accordion>
Accessibility
The accordion component provides proper ARIA attributes and keyboard navigation:
- Each accordion item header has
aria-expanded
to indicate its current state - The header button has
aria-controls
pointing to the content region - The content region has
role="region"
andaria-labelledby
pointing to the header - Disabled items have
aria-disabled="true"
applied - The accordion supports keyboard navigation with arrow keys and Enter/Space for activation
Include descriptive labels
Each accordion item should have a clear, descriptive label that indicates what content will be revealed when expanded.
Use appropriate content
Accordion content should be related to the header label and provide additional information or functionality that users can access when needed.
Changelog
Patch Changes
- Updated dependencies []:
- @spectrum-web-components/icon@1.7.0
- @spectrum-web-components/icons-ui@1.7.0
- @spectrum-web-components/base@1.7.0
- @spectrum-web-components/reactive-controllers@1.7.0
- @spectrum-web-components/shared@1.7.0
1.6.0
Patch Changes
- Updated dependencies []:
- @spectrum-web-components/icon@1.6.0
- @spectrum-web-components/icons-ui@1.6.0
- @spectrum-web-components/base@1.6.0
- @spectrum-web-components/reactive-controllers@1.6.0
- @spectrum-web-components/shared@1.6.0
1.5.0
Patch Changes
-
#5271 Thanks165a904
@renovate ! - Remove unnecessary system theme references to reduce complexity for components that don't need the additional mapping layer. -
Updated dependencies []:
- @spectrum-web-components/icon@1.5.0
- @spectrum-web-components/icons-ui@1.5.0
- @spectrum-web-components/base@1.5.0
- @spectrum-web-components/reactive-controllers@1.5.0
- @spectrum-web-components/shared@1.5.0
1.4.0
Patch Changes
- Updated dependencies []:
- @spectrum-web-components/icon@1.4.0
- @spectrum-web-components/icons-ui@1.4.0
- @spectrum-web-components/base@1.4.0
- @spectrum-web-components/reactive-controllers@1.4.0
- @spectrum-web-components/shared@1.4.0
1.3.0
Patch Changes
- Updated dependencies [
]:ea38ef0
- @spectrum-web-components/reactive-controllers@1.3.0
- @spectrum-web-components/icon@1.3.0
- @spectrum-web-components/icons-ui@1.3.0
- @spectrum-web-components/base@1.3.0
- @spectrum-web-components/shared@1.3.0
All notable changes to this project will be documented in this file. See
1.2.0 (2025-02-27)
Note: Version bump only for package @spectrum-web-components/accordion
1.1.2 (2025-02-12)
Note: Version bump only for package @spectrum-web-components/accordion
1.1.1 (2025-01-29)
Note: Version bump only for package @spectrum-web-components/accordion
1.1.0 (2025-01-29)
Bug Fixes
- lock prerelease versions for Spectrum CSS (
#5014 ) (8aa7734 )
1.0.3 (2024-12-09)
Note: Version bump only for package @spectrum-web-components/accordion
1.0.1 (2024-11-11)
Note: Version bump only for package @spectrum-web-components/accordion
1.0.0 (2024-10-31)
Note: Version bump only for package @spectrum-web-components/accordion
0.49.0 (2024-10-15)
Note: Version bump only for package @spectrum-web-components/accordion
0.48.1 (2024-10-01)
Note: Version bump only for package @spectrum-web-components/accordion
0.48.0 (2024-09-17)
Note: Version bump only for package @spectrum-web-components/accordion
0.47.2 (2024-09-03)
Note: Version bump only for package @spectrum-web-components/accordion
0.47.1 (2024-08-27)
Note: Version bump only for package @spectrum-web-components/accordion
0.47.0 (2024-08-20)
Note: Version bump only for package @spectrum-web-components/accordion
0.46.0 (2024-08-08)
Note: Version bump only for package @spectrum-web-components/accordion
0.45.0 (2024-07-30)
Note: Version bump only for package @spectrum-web-components/accordion
0.44.0 (2024-07-15)
Note: Version bump only for package @spectrum-web-components/accordion
0.43.0 (2024-06-11)
Note: Version bump only for package @spectrum-web-components/accordion
0.42.5 (2024-05-24)
Note: Version bump only for package @spectrum-web-components/accordion
0.42.4 (2024-05-14)
Note: Version bump only for package @spectrum-web-components/accordion
0.42.3 (2024-05-01)
Note: Version bump only for package @spectrum-web-components/accordion
0.42.2 (2024-04-03)
Note: Version bump only for package @spectrum-web-components/accordion
0.42.1 (2024-04-02)
Note: Version bump only for package @spectrum-web-components/accordion
0.42.0 (2024-03-19)
Features
- asset: use core tokens (
99e76f4 )
0.41.2 (2024-03-05)
Note: Version bump only for package @spectrum-web-components/accordion
0.41.1 (2024-02-22)
Note: Version bump only for package @spectrum-web-components/accordion
0.41.0 (2024-02-13)
Note: Version bump only for package @spectrum-web-components/accordion
0.40.5 (2024-02-05)
Note: Version bump only for package @spectrum-web-components/accordion
0.40.4 (2024-01-29)
Note: Version bump only for package @spectrum-web-components/accordion
0.40.3 (2024-01-11)
Note: Version bump only for package @spectrum-web-components/accordion
0.40.2 (2023-12-18)
Note: Version bump only for package @spectrum-web-components/accordion
0.40.1 (2023-12-05)
Note: Version bump only for package @spectrum-web-components/accordion
0.40.0 (2023-11-16)
Note: Version bump only for package @spectrum-web-components/accordion
0.39.4 (2023-11-02)
Note: Version bump only for package @spectrum-web-components/accordion
0.39.3 (2023-10-18)
Note: Version bump only for package @spectrum-web-components/accordion
0.39.2 (2023-10-13)
Note: Version bump only for package @spectrum-web-components/accordion
0.39.1 (2023-10-06)
Note: Version bump only for package @spectrum-web-components/accordion
0.39.0 (2023-09-25)
Note: Version bump only for package @spectrum-web-components/accordion
0.38.0 (2023-09-05)
Note: Version bump only for package @spectrum-web-components/accordion
0.37.0 (2023-08-18)
Note: Version bump only for package @spectrum-web-components/accordion
0.36.0 (2023-08-18)
Note: Version bump only for package @spectrum-web-components/accordion
0.35.0 (2023-07-31)
Note: Version bump only for package @spectrum-web-components/accordion
0.34.0 (2023-07-11)
Features
- accordion: core token migration (
#3300 ) (9650b71 )
0.33.2 (2023-06-14)
Note: Version bump only for package @spectrum-web-components/accordion
0.33.0 (2023-06-08)
Bug Fixes
- removed usage of id in accordion (
c26c81f )
0.32.0 (2023-06-01)
Note: Version bump only for package @spectrum-web-components/accordion
0.31.0 (2023-05-17)
Note: Version bump only for package @spectrum-web-components/accordion
0.30.0 (2023-05-03)
Bug Fixes
- accordion: ensure item toggle events can be prevented from the outside (
30dbfc8 ) - accordion: update a11y tree to not double label (
cc91a6b ) - add missing dependency (
9f74e7d ) - contain activation to header content (
10183ce ) - correct
@element jsDoc listing across library (c97a632 ) - correctly apply tab order to Accordion Items (
fd7a7f9 ) - ensure item exists when attempting to acquire next item to focus (
fb52cea ) - include default export in the "exports" fields (
f32407d ) - include the "types" entry in package.json files (
b432f59 ) - prevent infinite loops when all children are [disabled] (
2deac3d ) - stop merging selectors in a way that alters the cascade (
369388f ) - update consumption of Spectrum CSS for latest version (
ed2305b ) - update latest Spectrum CSS beta releases (
d8d3acc ) - update to latest spectrum-css packages (
a5ca19f ) - use icons without "size" values (
3fc7c91 ) - use latest @spectrum-css/* versions (
c35eb86 ) - use the "browsers" listing in postcss-preset-env (
4eaf6a2 )
Features
- accordion: add accordion pattern (
97529d8 ) - accordion: allow accordion items to close (
3c715ab ) - accordion: update spectrum css input (
d94e059 ) - action-button: add action button pattern (
03ac00a ) - adopt DNA@7 base Spectrum CSS (
e08cafd ) - include all Dev Mode files in side effects (
f70817c ) - shared pkg versions, devmode define warning, registry-conflicts docs (
6e49565 ) - use latest exports specification (
a7ecf4b )
0.7.13 (2023-04-24)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.12 (2023-04-05)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.11 (2023-03-22)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.10 (2023-03-08)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.9 (2023-02-08)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.8 (2023-01-23)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.7 (2023-01-09)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.6 (2022-12-08)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.5 (2022-11-21)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.4 (2022-11-14)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.3 (2022-10-28)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.2 (2022-10-17)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.1 (2022-10-10)
Note: Version bump only for package @spectrum-web-components/accordion
0.7.0 (2022-08-09)
Features
- include all Dev Mode files in side effects (
f70817c )
0.6.15 (2022-08-04)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.14 (2022-07-18)
Bug Fixes
- add missing dependency (
9f74e7d )
0.6.13 (2022-06-29)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.12 (2022-06-07)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.11 (2022-05-27)
Bug Fixes
- update consumption of Spectrum CSS for latest version (
ed2305b )
0.6.10 (2022-05-12)
Bug Fixes
- contain activation to header content (
10183ce ) - correctly apply tab order to Accordion Items (
fd7a7f9 )
0.6.9 (2022-04-21)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.8 (2022-03-30)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.7 (2022-03-08)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.6 (2022-03-04)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.5 (2022-02-22)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.4 (2022-02-02)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.3 (2022-01-26)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.2 (2022-01-07)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.1 (2021-12-13)
Note: Version bump only for package @spectrum-web-components/accordion
0.6.0 (2021-11-08)
Note: Version bump only for package @spectrum-web-components/accordion
0.5.1 (2021-11-08)
Note: Version bump only for package @spectrum-web-components/accordion
0.5.0 (2021-11-02)
Features
- adopt DNA@7 base Spectrum CSS (
e08cafd )
0.4.18 (2021-10-12)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.17 (2021-10-05)
Bug Fixes
- accordion: ensure item toggle events can be prevented from the outside (
30dbfc8 )
0.4.16 (2021-09-20)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.15 (2021-09-13)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.14 (2021-08-24)
Bug Fixes
- correct
@element jsDoc listing across library (c97a632 )
0.4.13 (2021-08-03)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.12 (2021-07-22)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.11 (2021-07-01)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.10 (2021-06-16)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.9 (2021-06-07)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.8 (2021-05-24)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.7 (2021-05-12)
Bug Fixes
- ensure item exists when attempting to acquire next item to focus (
fb52cea )
0.4.6 (2021-04-15)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.5 (2021-04-09)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.4 (2021-03-29)
Bug Fixes
- accordion: update a11y tree to not double label (
cc91a6b )
0.4.3 (2021-03-22)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.2 (2021-03-22)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.1 (2021-03-05)
Note: Version bump only for package @spectrum-web-components/accordion
0.4.0 (2021-03-04)
Features
- use latest exports specification (
a7ecf4b )
0.3.3 (2021-02-11)
Bug Fixes
- update to latest spectrum-css packages (
a5ca19f )
0.3.2 (2021-02-02)
Note: Version bump only for package @spectrum-web-components/accordion
0.3.1 (2021-01-28)
Note: Version bump only for package @spectrum-web-components/accordion
0.3.0 (2021-01-21)
Bug Fixes
- include the "types" entry in package.json files (
b432f59 ) - prevent infinite loops when all children are [disabled] (
2deac3d ) - stop merging selectors in a way that alters the cascade (
369388f ) - update latest Spectrum CSS beta releases (
d8d3acc ) - use icons without "size" values (
3fc7c91 ) - use latest @spectrum-css/* versions (
c35eb86 ) - use the "browsers" listing in postcss-preset-env (
4eaf6a2 )
Features
- accordion: allow accordion items to close (
3c715ab ) - accordion: update spectrum css input (
d94e059 ) - action-button: add action button pattern (
03ac00a )
0.2.0 (2021-01-13)
Bug Fixes
- include the "types" entry in package.json files (
b432f59 ) - prevent infinite loops when all children are
disabled - stop merging selectors in a way that alters the cascade (
369388f ) - update latest Spectrum CSS beta releases (
d8d3acc ) - use icons without "size" values (
3fc7c91 ) - use latest @spectrum-css/* versions (
c35eb86 )
Features
- accordion: allow accordion items to close (
3c715ab ) - accordion: update spectrum css input (
d94e059 ) - action-button: add action button pattern (
03ac00a )
0.1.4 (2020-10-12)
Note: Version bump only for package @spectrum-web-components/accordion
0.1.3 (2020-10-12)
Bug Fixes
- include default export in the "exports" fields (
f32407d )
0.1.2 (2020-09-25)
Note: Version bump only for package @spectrum-web-components/accordion
0.1.1 (2020-09-14)
Note: Version bump only for package @spectrum-web-components/accordion
0.1.0 (2020-08-31)
Features
- accordion: add accordion pattern (
97529d8 )
API
Attributes and Properties
allowMultiple
allow-multiple
boolean
false
density
density
'compact' | 'spacious' | undefined
Slots
default slot