title | description | layout | permalink | date |
---|---|---|---|---|
c-toggle.js |
Documentation de la librairie c-toggle.js dédiée à la bascule d’état des classes CSS d’un élément |
libdoc_page.liquid |
index.html |
git Last Modified |
cToggle permet de créer des modales, des listes déroulantes, etc.
cToggle met en relation des éléments de DOM déclencheurs avec d'autres éléments de DOM cibles. Une instance de cToggle met en relation un ou plusieurs déclencheurs sur une ou plusieurs cibles lors d'événements utilisateur de type clic, mouseenter, mouseover, sur les déclencheurs.
cToggle est destiné à être personnalisé avec le CSS, le Javascript impliqué est juste la «partie mécanique».
Il est recommandé de placer les fichiers dans cet ordre avant la balise fin de body.
<script src="/path/to/c-toggle.js"></script>
Via https://www.jsdelivr.com
:
Version la plus récente
https://cdn.jsdelivr.net/gh/ita-design-system/c-toggle.js/assets/c-toggle.js
Version la plus récente minifiée :
https://cdn.jsdelivr.net/gh/ita-design-system/c-toggle.js/assets/c-toggle.min.js
Typologie avec numéro de version :
https://cdn.jsdelivr.net/gh/ita-design-system/c-toggle.js@<TAG_VERSION>/assets/c-toggle.js
Typologie numéro de version + minification automatique :
https://cdn.jsdelivr.net/gh/ita-design-system/c-toggle.js@<TAG_VERSION>/assets/c-toggle.min.js
Exemple avec version v0.1.2 :
https://cdn.jsdelivr.net/gh/ita-design-system/[email protected]/assets/c-toggle.js
Exemple avec version v0.1.2 minifié :
https://cdn.jsdelivr.net/gh/ita-design-system/[email protected]/assets/c-toggle.min.js
- Déclencheurs : éléments disposant de l'attribut
c-toggle="ID_DU_CANAL"
, une action utilisateur (click, mouseenter, mouseover) sur un de ces éléments déclenche l'échange des valeurs des attributsclass
etdata-opened-state-class
sur tous les déclencheursc-toggle="ID_DU_CANAL"
et ciblesc-toggle-name="ID_DU_CANAL"
. - Cibles : éléments disposant de l'attribut
c-toggle-name="ID_DU_CANAL"
et dont la basculedata-opened-state-class
etclass
est pilotée par les déclencheurs du même canal. - État fermé : on dit que l'état est fermé lorsque les attributs
class
etdata-opened-state-class
ont les même valeurs qu'au chargement de la page. - État ouvert : on dit que l'état est ouvert lorsque l'attribut
data-opened-state-class
vient remplacer l'attributclass
.
- Exemple simple Configuration minimale pour usage de c-toggle.js
- Multiples déclencheurs 1 cible Plusieurs déclencheurs câblés sur une cible seule
- 1 déclencheur multiples cibles Un seul déclencheur câblé sur plusieurs cibles
- Multiples déclencheur multiples cibles Plusieurs déclencheurs câblés sur plusieurs cibles
- Clic externe Retour à l’état fermé lorsque un clic est effectué en dehors du déclencheur ou de sa cible
- Mouseenter Bascule le canal spécifié vers l’état ouvert lorsque le pointeur passe dans la zone d'un déclencheur
- Mouseover Bascule le canal spécifié vers l’état ouvert lorsque le pointeur entre dans la zone d’un déclencheur et vers l’état fermé quand il en sort
- Événements Exemple d’utilisation de l’événement cToggle_event propagé sur le document
L'attribut data-dismiss="true"
permet le retour à l’état fermé du canal spéccifié lorsque un clic est effectué en dehors d'un déclencheur ou d'une cible.
Par défaut, la fermeture d’un "dismiss" n’est pas propagée à l’intérieur d’un toggle. Il est possible de forcer cette fermeture en ajoutant l’attribut data-onclick-force-dismiss-children-ids="[liste_d_ids]"
sur un c-toggle
ou un c-toggle-name
.
L'attribut data-event="mouseenter"
permet de basculer le canal spécifié vers l’état ouvert lorsque le pointeur passe dans la zone d'un déclencheur.
L'attribut data-event="mouseover"
permet de basculer le canal spécifié vers l’état ouvert lorsque le pointeur entre dans la zone d’un déclencheur et vers l’état fermé quand il en sort.
Initialiser ou actualiser les instances de c-toggle. À invoquer au chargement de la page ainsi qu'à chaque changement de DOM.
cToggle.update();
Méthode qui bascule vers l'état ouvert l'ensemble des déclencheurs et cibles de l'id/canal spécifié.
@param {String}
channel identifiant du canal
cToggle.open(channel)
Méthode qui bascule vers l'état fermé l'ensemble des déclencheurs et cibles de l'id/canal spécifié
@param {String} channel
identifiant du canal
cToggle.close(channel)
Méthode qui bascule l'ensemble des déclencheurs et cibles de l'id/canal spécifié:
- vers l'état fermé si leur état est ouvert
- vers l'état ouvert si leur état est fermé
@param {String} channel
identifiant du canal
cToggle.toggle(channel)
À chaque changement d’état d’une instance de cToggle, l’événement personnnalisé cToggle_event
est propagé sur le document avec en option l’identifiant de l’instance et la méthode utilisée: open
, close
ou toggle
.
const myHandler = function(evt) {
console.log(`cToggle "${evt.detail.id}" a été invoqué avec la méthode "${evt.detail.method}"`)
}
document.addEventListener('cToggle_event', myHandler);
Les états ouvert
et fermé
sont spécifiés dans les instances. On peut retrouver l'état courant de l'identifiant foo
comme suit:
cToggle.instances.foo.opened //true ou false