
Product
Announcing Precomputed Reachability Analysis in Socket
Socket’s precomputed reachability slashes false positives by flagging up to 80% of vulnerabilities as irrelevant, with no setup and instant results.
a11y-accordion-component
Advanced tools
a11y-accordion-component est une librairie écrite en JavaScript natif permettant de configurer facilement des accordéons accessibles.
Cette librairie respecte l'ensemble des critères d'accessibilité définis par WAI-ARIA tout en étant très légère (1 Ko minifiée et gzippée) et simple à configurer.
Enter
ou Space
sur le bouton d'entête d'un panneau replié, déplie le panneau associé.Enter
ou Space
sur le bouton d'entête d'un panneau déplié, replie le panneau associé.Up Arrow
sur un bouton d'entête, déplace le focus clavier sur le précédent bouton d'entête s'il existe,
sinon sur le dernier bouton d'entête.Down Arrow
sur un bouton d'entête, déplace le focus clavier sur le bouton d'entête suivant s'il existe,
sinon sur le premier bouton d'entête.Home
sur un bouton d'entête (où que l'on soit), déplace le focus clavier sur le premier bouton d'entête.End
sur un bouton d'entête (où que l'on soit), déplace le focus clavier sur le dernier bouton d'entête.Page Up
à l'intérieur d'un panneau , déplace le focus clavier sur le bouton d'entête associé.Page Down
à l'intérieur d'un panneau , déplace le focus clavier sur le bouton d'entête suivant s'il existe,
sinon sur le premier bouton d'entête.npm install a11y-accordion-component
yarn add a11y-accordion-component
<script src="https://cdn.jsdelivr.net/npm/a11y-accordion-component/dist/a11y-accordion-component.min.js"></script>
L'attribut de données data-component="accordion"
permet d'instancier un nouvel accordéon :
<div data-component="accordion">
...
</div>
Attributs facultatifs :
data-multiselectable="false"
: Autorise l'ouverture d'un seul panneau à la fois.data-collapsible="false"
: Verrouille le panneau déplié.La librairie génère à la volée les attributs nécessaires afin de répondre aux critères d'accessibilité définis par WAI-ARIA.
Structure initiale :
<div class="c-accordion" data-component="accordion">
<div role="heading" aria-level="3">
<div id="accordion-trigger-1" class="c-accordion__trigger" data-controls="accordion-panel-1">
Accordion Header 1
</div>
</div>
<div id="accordion-panel-1" class="c-accordion__panel">
<div class="c-accordion__inner">
<h4>Section 1</h4>
<p>
A paragraph (from the Greek paragraphos, "to write beside" or "written beside") is a self-contained unit of a
discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences.
Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing,
used to organize longer prose.
</p>
<p><a href="#">This is a text link</a></p>
</div>
</div>
</div>
Structure finale (après le chargement du script) :
<div class="c-accordion" role="presentation" data-component="accordion">
<div role="heading" aria-level="3">
<div id="accordion-trigger-1" class="c-accordion__trigger" data-controls="accordion-panel-1" role="button" tabindex="0" aria-controls="accordion-panel-1">
Accordion Header 1
</div>
</div>
<div id="accordion-panel-1" class="c-accordion__panel role="region" tabindex="-1" aria-labelledby="accordion-trigger-1" aria-hidden="true">
<div class="c-accordion__inner">
<h3>Section 1</h3>
<p>
A paragraph (from the Greek paragraphos, "to write beside" or "written beside") is a self-contained unit of a
discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences.
Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing,
used to organize longer prose.
</p>
<p><a href="#">This is a text link</a></p>
</div>
</div>
</div>
Attributs obligatoires :
id="trigger-ID"
: Identifie le bouton d'entête.id="panel-ID"
: Identifie le panneau.data-controls="panel-ID"
: Associe le bouton d'entête à son panneau.Attribut facultatif (sur le bouton d'entête) :
data-open="true"
: Déplie un panneau lors de l'initialisation de l'accordéon.aria-expanded="true"
Vous pouvez importer directement a11y-accordion-component dans votre projet JavaScript en utilisant une syntaxe ES6 (ES2015) ou CommonJS :
import Accordions from 'a11y-accordion-component'; // es6 module
const Accordions = require('a11y-accordion-component').default; // commonjs module
L'instanciation de tous les accordéons possédant l'attribut de données data-component="accordion"
se fait simplement
par la méthode init()
:
Accordions.init();
En cas de besoin, vous pouvez déclencher le rendu d'un ou plusieurs accordéons directement en JavaScript
grâce à la méthode render('accordion-ID')
:
Accordions.render('accordion-2');
Paramètres facultatifs :
isMultiSelectable: false
: Autorise l'ouverture d'un seul panneau à la fois.isCollapsible: false
: Verrouille le panneau déplié.Accordions.render('accordion-2', {
isMultiSelectable: false,
isCollapsible: false,
});
Suppression d'un accordéon instancié :
Vous pouvez supprimer le rendu d'un ou plusieurs accordéons grâce à la méthode destroy('accordion-ID')
:
Accordions.destroy('accordion-2');
a11y-accordion-component a fait le choix de ne pas embarquer de styles CSS par défaut.
Vous êtes donc libres d'utiliser les styles que vous souhaitez !
Néanmoins, nous recommandons au minimum ce style nécessaire à l'ouverture et à la fermeture d'un panneau :
.c-accordion__panel[aria-hidden="true"] {
display: none;
}
Si vous désirez utiliser des styles CSS par défaut, vous pouvez consulter le fichier main.css
de la démo disponible
ici
Si vous désirez contribuer à ce projet, rien de plus simple, suivez ces quelques étapes ! :kissing_closed_eyes:
a11y-accordion-component suit les standards de développement JavaScript ES2015.
$git clone https://github.com/jonathanlevaillant/a11y-accordion-component.git
yarn start
yarn dev
Jonathan Levaillant
Ce projet est sous licence MIT.
FAQs
Accessible Accordion Component in Vanilla JS
The npm package a11y-accordion-component receives a total of 6,597 weekly downloads. As such, a11y-accordion-component popularity was classified as popular.
We found that a11y-accordion-component demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s precomputed reachability slashes false positives by flagging up to 80% of vulnerabilities as irrelevant, with no setup and instant results.
Product
Socket is launching experimental protection for Chrome extensions, scanning for malware and risky permissions to prevent silent supply chain attacks.
Product
Add secure dependency scanning to Claude Desktop with Socket MCP, a one-click extension that keeps your coding conversations safe from malicious packages.