Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
a11y-dropdown-component
Advanced tools
a11y-dropdown-component est une librairie écrite en JavaScript natif permettant de configurer facilement des menus déroulants 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.1 Ko minifiée et gzippée) et simple à configurer.
Enter
ou Space
sur le bouton d'appel d'un menu replié, déplie le menu déroulant.Enter
ou Space
sur le bouton d'appel d'un menu déplié, ferme le menu déroulant.Escape
, ferme le menu déroulant et déplace le focus clavier sur le bouton d'appel. (Un clic en
dehors du menu déroulant, ferme également celui-ci).Up Arrow
sur le bouton d'appel ou sur un élément du menu, déplace le focus clavier sur l'élément
précédent s'il existe, sinon sur le dernier élément du menu déroulant.Down Arrow
sur le bouton d'appel ou sur un élément du menu, déplace le focus clavier sur l'élément
suivant s'il existe, sinon sur le premier élément du menu déroulant.Home
sur le bouton d'appel ou sur un élément du menu, déplace le focus clavier sur le premier élément du menu déroulant.End
sur le bouton d'appel ou sur un élément du menu, déplace le focus clavier sur le dernier élément du menu déroulant.npm install a11y-dropdown-component
yarn add a11y-dropdown-component
<script src="https://cdn.jsdelivr.net/npm/a11y-dropdown-component/dist/a11y-dropdown-component.min.js"></script>
L'attribut de données data-component="dropdown"
permet d'instancier un nouveau menu déroulant :
<button type="button" id="trigger" data-component="dropdown" data-target="dropdown-menu">...</button>
Attributs obligatoires :
id="trigger-ID"
: Identifie le bouton d'appel.data-target="dropdown-ID"
: Associe le bouton d'appel à son menu déroulant.Attribut facultatif :
data-open="true"
: Ouvre le menu déroulant lors de son initialisation.aria-expanded="true"
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 :
<ul id="dropdown-menu" class="c-dropdown__menu">
<li data-item><a href="#">Link 1</a></li>
<li data-item><a href="#">Link 2</a></li>
<li data-item><a href="#">Link 3</a></li>
</ul>
Structure finale (après le chargement du script) :
<ul id="dropdown-menu" class="c-dropdown__menu" role="menu" aria-labelledby="trigger" tabindex="-1">
<li data-item role="none"><a href="#" role="menuitem" tabindex="-1">Link 1</a></li>
<li data-item role="none"><a href="#" role="menuitem" tabindex="-1">Link 2</a></li>
<li data-item role="none"><a href="#" role="menuitem" tabindex="-1">Link 3</a></li>
</ul>
Vous pouvez importer directement a11y-dropdown-component dans votre projet JavaScript en utilisant une syntaxe ES6 (ES2015) ou CommonJS :
import Dropdowns from 'a11y-dropdown-component'; // es6 module
const Dropdowns = require('a11y-dropdown-component').default; // commonjs module
L'instanciation de tous les menus déroulants possédant l'attribut de données data-component="dropdown"
se fait simplement
par la méthode init()
:
Dropdowns.init();
En cas de besoin, vous pouvez déclencher le rendu d'un ou plusieurs menus déroulants directement en JavaScript
grâce à la méthode render('trigger-ID')
:
Dropdowns.render('trigger-js');
Paramètre facultatif :
isOpen: true
: Déclenche l'ouverture du menu déroulant.Dropdowns.render('trigger-js', {
isOpen: true,
});
Suppression d'un menu déroulant instancié :
Vous pouvez supprimer le rendu d'un ou plusieurs menus déroulants grâce à la méthode destroy('trigger-ID')
:
Dropdowns.destroy('trigger-js');
a11y-dropdown-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 menu déroulant :
.c-dropdown__menu[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-dropdown-component suit les standards de développement JavaScript ES2015.
$git clone https://github.com/jonathanlevaillant/a11y-dropdown-component.git
yarn start
yarn dev
Jonathan Levaillant
Ce projet est sous licence MIT.
FAQs
Accessible Dropdown Component in Vanilla JS
The npm package a11y-dropdown-component receives a total of 3,296 weekly downloads. As such, a11y-dropdown-component popularity was classified as popular.
We found that a11y-dropdown-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.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.