gdpr-consent.js
Comply to the european cookie law.
Inspired by AmauriC/tarteaucitron.js
What is this script?
The european cookie law regulates the management of cookies and you should ask your visitors their consent before exposing them to third party services.
Clearly this script will:
- Disable all services by default,
- Display a banner on the first page view and a small one on other pages,
- Display a panel to allow or deny each services one by one,
- Activate services on the second page view if not denied,
- Store the consent in a cookie for 365 days.
How to use
Pre-built version
Files
The prebuilt CSS/JS files can be found in the build folder.
build/gdpr-consent.css
build/gdpr-consent.js
HTML
To add the GDPR banner you need to add these lines at the end of the <head>
section
<link rel="stylesheet" href="gdpr-consent.css" />
<script type="text/javascript" src="gdpr-consent.js"></script>
<script type="text/javascript">
GDPRConsent.init({
hashtag: "#tarteaucitron" ,
cookieName: "tarteaucitron" ,
timeExpire: 31536000000 ,
acceptAllCta: true ,
moreInfoLink: true ,
mandatory: false ,
preferLocalStorage: true ,
websiteName: "Les Jours" ,
siteDisclaimerTitle: "« Le site qui raconte l’actualité en séries »" ,
siteDisclaimerMessage: '<i>Les Jours</i> sont un média <a href="/les-jours-c-quoi/">indépendant et sans pub</a>.', ,
});
</script>
You can then configure your services by adding these lines at the end of the <body>
section
<script type="text/javascript">
GDPRConsent.job = GDPRConsent.job || [];
GDPRConsent.user.googletagmanagerId = "GTM-P5GRMRT";
GDPRConsent.job.push("googletagmanager");
GDPRConsent.user.googleanalyticsUa = "UA-59581990-1";
GDPRConsent.user.googleanalyticsInitOptions = { send_page_view: false, optimize_id: "GTM-W4WVC25" };
GDPRConsent.job.push("googleanalytics");
GDPRConsent.job.push("twitter");
window.fbAsyncInit = function () {
FB.init({ appId: "1716167151957741", status: true, version: "v3.0" });
};
GDPRConsent.job.push("facebook");
GDPRConsent.user.fbPixelId = "1415993661766511";
GDPRConsent.job.push("facebookpixel");
GDPRConsent.job.push("vimeo");
GDPRConsent.job.push("youtube");
GDPRConsent.job.push("signinwithapple");
GDPRConsent.job.push("signinwithgoogle");
GDPRConsent.job.push("subscribewithgoogle");
</script>
Custom bundler
You can also use this module with you own bundler.
Custom CSS
You can change the style of the banner with these variables.
$gdprcst-font-family-title: "Archer SSm A", "Archer SSm B", "Helvetica Neue", Helvetica, Arial, sans-serif;
$gdprcst-font-family-text: "proxima-nova", "Helvetica Neue", Helvetica, Arial, sans-serif;
$gdprcst-color-light: #fff;
$gdprcst-color-dark: #414141;
$gdprcst-color-mid: #c83e2c;
$gdprcst-shadow-color: rgba(87, 87, 87, 0.25);
@import "node_modules/gdpr-consent/src/css/main";
Custom services & languages
You can use the GDPRConsent.withLanguages
& GDPRConsent.withServices
to change the available set of languages & services.
These methods allow you to create custom builds of this module with more or less elements.
import GDPRConsent from "gdpr-consent";
import { getLanguages } from "gdpr-consent/src/languages";
GDPRConsent.withLanguages(getLanguages);
import {
twitter,
facebook,
vimeo,
youtube,
signinwithapple,
signinwithgoogle,
subscribewithgoogle,
} from "gdpr-consent/src/services";
GDPRConsent.withServices((GDPRConsentUser) => {
return {
twitter: twitter(GDPRConsentUser),
facebook: facebook(GDPRConsentUser),
youtube: youtube(GDPRConsentUser),
vimeo: vimeo(GDPRConsentUser),
signinwithapple: signinwithapple(GDPRConsentUser),
signinwithgoogle: signinwithgoogle(GDPRConsentUser),
subscribewithgoogle: subscribewithgoogle(GDPRConsentUser),
};
});