npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@wavenet/cookie-law

v2.1.0

Published

À l'ère du _RGPD_, faut-il expliquer le besoin d'une bannière de cookies ? _Cookie law_ vous permet d'ajouter une bannière invitant le visiteur à accepter ou refuser certains cookies sur votre site.

Downloads

468

Readme

Cookie law

Introduction

À l'ère du RGPD, faut-il expliquer le besoin d'une bannière de cookies ? Cookie law vous permet d'ajouter une bannière invitant le visiteur à accepter ou refuser certains cookies sur votre site.

Installation

1. Yarn

Ajoutez le package à votre projet. Rendez-vous à la racine du projet où se trouve votre package.json et exécutez :

yarn add @wavenet/cookie-law

2. Composant

Appeler le composant <wvn-cookie-law> dans votre code.

Voici un exemple :

import "@wavenet/cookie-law/dist/cookielaw";

export function CookieLaw() {
    return (
        <wvn-cookie-law>
            <script type="application/json">
                {`{
                    "locale": "fr",
                    "links": {
                        "cookiePolicy": "/cookies/"
                    },
                    "licence": true,
                    "changePreferences": "#cookie-preferences",
                    "isOptOut": false,
                    "defaultCheckboxState": false,
                    "categories": [
                        "introduction",
                        "strictly-necessary",
                        "more_information"
                    ],
                    "storage": "cookie"
                }`}
            </script>
        </wvn-cookie-law>
    );
}

3. Configuration

À l'intérieur de la balise <script>, vous devez fournir un json avec les paramètres de votre bannière. Vous pouvez aussi travailler avec un fichier json au lieu d'injecter le json dans le <script>.

Plus d'informations sur comment configurer dans la partie Configuration ci-dessous.

4. Design

Plusieurs variables sont mises à votre disposition, mais il est possible aussi d'atteindre certains tags HTML via des part.

5. Catégoriser les scripts

Sur chaque balise <script>, veillez à :

  • donner le type de catagorie concerné via data-consent ;
  • mettre le type du script à text/plain.

Cookie law va alors transformer les scripts en js dès que le visiteur aura accepter la catégorie associée.

Exemple avec Google analytics :

<script type="text/plain" data-consent="tracking" async src="https://www.googletagmanager.com/gtag/js?id=123"></script>
<script type="text/plain" data-consent="tracking">
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());
    gtag('config', '{{ domainConfig.field_t_ga.0.value }}');
</script>

Dans ce cas-ci, il faut que le visiteur accepte les cookies de tracking.

Configuration

| Nom du paramètre | Type | Description | |------------------------|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | categories | object | Ce sont les catégories des cookies. Ils sont listés dans la modal des préférences et sont utilisés pour sélectionner les scritps à autoriser/bloquer en fonction des préférences du visiteur. Plus d'info ci-dessous. | | changePreferences | string | Cette option accueille un sélecteur css. N'importe quel tag HTML ayant ce selecteur permettra d'ouvrir au clic la modal des préférences et ainsi permettre au visiteur de changer ses préférences. | | defaultCheckboxState | boolean | Chaque catégorie de cookies facultatives peuvent être acceptée ou refusée par le visiteur via la modal des préférences où chaque catégorie est (dé)cochable via une checkbox. La valeur à false, cela signifie que par défaut ces catégories non obligatoires sont décochées. | | isOptOut | boolean | | | labels | Record<string, string> | Cette option permet de surchager les textes. En effet, une série de textes est présent par défaut en Anglais, Français, Néerlandais et Allemand. Si vous voulez altérer ces textes, vous devez retrouver le nom machine dudit texte et le remplacer. Veillez à utiliser du markdown. L'HTML est autorisé, mais vous risquez de perdre le design des <a> si vous n'ajoutez pas vous-mêmes des part. | | licence | boolean | Si cette option est à false, on affiche le copyright de Wavenet dans la modal des préférences. | | links | {cookiePolicy: string} | Cette option permet de surcharger le lien vers la politique des cookies sans surcharger le texte via les labels (cf. ci-dessus). | | locale | string | La langue du site. A priori vous n'en aurez pas besoin si vous avez fait ceci <html lang="fr">. En effet, Cookie law peut détecter la langue du site. | | storage | string | On attend local ou cookie. Par défaut, c'est local. Dans le premier cas, les catégories de cookies sélectionnées seront enregistrées dans les localstorage du navigateur du visteur ; dans le second cas, dans ses cookies. |

Catégories de cookie

Catégories de cookie existantes

Voici la liste des catégories existantes :

  • introduction
  • strictly-necessary
  • functionality
  • tracking
  • more_information

Vous pouvez donc simplement envoyer un array avec ces mots-clés pour choisir les onglets à afficher dans la modal des préférences et leur ordre.

Exemple :

{
  "categories": [
    "introduction",
    "strictly-necessary",
    "functionality",
    "more_information"
  ]
}

Surcharger les catégories existantes

Si vous voulez modifier une des propriétés d'un cookie, vous devrez lui passer non plus une simple string, mais un object contenant le code du cookie et la/les valeurs que vous voulez modifier.

Exemple :

{
  "categories": [
    "introduction",
    {
      "code": "strictly-necessary",
      "cookies": {
        "Coockie #1": "https://www.wavenet.be/cookies/"
      }
    },
    "functionality",
    "more_information"
  ]
}

Propriétés d'une catégorie

| Nom de la popriété | Type | Description | |--------------------|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | code | string | Comme expliqué ci-dessus, cela va permettre d'identifier le cookie à altérer. | | title | string | Titre de l'onglet dans la modal des préférences. | | tabTitle | string | Libellé du bouton de l'onglet dans la modal des préférences. | | description | string[] | Contenu de l'onglet dans la modal des préférences. Veillez à utiliser du markdown. L'HTML est autorisé, mais vous risquez de perdre le design des <a> si vous n'ajoutez pas vous-mêmes des part. | | cookies | Record<string, string> | Liste des cookies de la catégorie. Chaque cookie est un lien. | | consent | boolean | Valeur à true, si c'est une catégorie de cookie ; à false, si vous voulez juste avoir un nouvel onglet dans la modal des préférences, comme les onglets introduction ou plus d'informations. | | required | boolean | Valeur à true, si le visiteur ne peut pas refuser cette catégorie. Typiquement la catégorie Strictement nécessaire. | | cleaning | string[] | Liste des cookies à supprimer. En effet, si le visiteur change ses préférences, des cookies ont déjà été enregistrés sur son navigateur. |

Catégorie presonnalisé

Remplissez simplement les propriétés ci-dessus avec un code unique.

{
  "categories": [
    "introduction",
    {
      "code": "foo-bar",
      "title": "Nunc ante nunc, luctus id nisi eget...",
      "tabTitle": "Nunc ante nunc",
      "description": [
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
        "In in tempus sapien, in tempor libero.",
        "Aliquam lobortis venenatis odio sit amet egestas.",
        "Ut nibh nulla, feugiat eget commodo id, fermentum sit amet odio."
      ],
      "consent": true,
      "required": false
    },
    "more_information"
  ]
}

Utilisez ensuite ce code unique sur vos scritps.

<script type="text/plain" data-consent="foo-bar">
      console.log('Cookie foo bar is allowed.');
</script>