13 Commits
6.1.0 ... 6.2.4

Author SHA1 Message Date
dependabot[bot]
814202780b Bump lodash from 4.17.20 to 4.17.21 (#114)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-12 09:08:43 +02:00
dependabot[bot]
d01995e3b4 Bump ssri from 8.0.0 to 8.0.1 (#111)
Bumps [ssri](https://github.com/npm/ssri) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/latest/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v8.0.0...v8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-12 13:15:52 +02:00
56de263dce release $npm_package_version 2021-02-19 10:43:49 +01:00
Gabrijel Škoro
0228e7f32c Added support for IE11 (#107) 2021-02-19 10:40:58 +01:00
50216eec3c release $npm_package_version 2021-01-27 16:35:17 +01:00
3e9e988e96 Fixed the return type of getCookieConsentValue in the dts file. 2021-01-27 16:34:57 +01:00
1c6f335500 release $npm_package_version 2020-12-08 18:02:10 +01:00
eb45e7a652 release $npm_package_version 2020-12-06 19:08:02 +01:00
26306f7490 Added the exported function getCookieConsentValue to get the cookie value from custom code 2020-12-06 19:07:50 +01:00
7d8f52018d Merge branch 'master' of github.com:Mastermindzh/react-cookie-consent into master 2020-11-29 10:28:40 +01:00
a494066785 Updated the Changelog and added a check in the package.json to ensure no more releases skip the CHANGELOG updates. fixes #99 2020-11-29 10:28:32 +01:00
Tom
7f15b25e89 fixed anchor (#98) 2020-11-20 09:52:12 +01:00
0f4893af4b release $PACKAGE_VERSION 2020-11-08 11:44:10 +01:00
9 changed files with 195 additions and 102 deletions

View File

@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [[6.2.3](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/6.2.3)]
- Added support for IE11, the webpack generated runtime-code should not use arrow functions
## [[6.2.2](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/6.2.2)]
- Fixed the return type of getCookieConsentValue in the dts file.
## [[6.2.1](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/6.2.1)]
Added the `getCookieConsentValue` to the dts file.
## [[6.2.0](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/6.2.0)]
Added the exported function `getCookieConsentValue` to get the cookie value from custom code
## [[6.1.0](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/6.1.0)]
Added support for React 17
## [[6.0.0](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/6.0.0)]
### removed
Accepting by scrolling is no longer allowed and has thus been removed from the package.
For details see [issue 88](https://github.com/Mastermindzh/react-cookie-consent/issues/88)
## [[5.2.0](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/5.2.0)] ## [[5.2.0](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/5.2.0)]
### added ### added

View File

@@ -22,7 +22,7 @@ Example branch: https://github.com/Mastermindzh/react-cookie-consent/tree/exampl
- [Using it](#using-it) - [Using it](#using-it)
- [Props](#props) - [Props](#props)
- [Debugging it](#debugging-it) - [Debugging it](#debugging-it)
- [Why are there two cookies? One of which named "Legacy"](#why-are-there-two-cookies--one-of-which-named--legacy-) - [Why are there two cookies? One of which named "Legacy"](#why-are-there-two-cookies-one-of-which-named-legacy)
- [Styling it](#styling-it) - [Styling it](#styling-it)
- [Examples](#examples) - [Examples](#examples)
- [Changing the bar background to red](#changing-the-bar-background-to-red) - [Changing the bar background to red](#changing-the-bar-background-to-red)
@@ -105,6 +105,16 @@ If the decline button is enabled then the (onDecline) prop function can be used,
></CookieConsent> ></CookieConsent>
``` ```
### getting the cookies value in your own code
react-cookie-consent exports a function called `getCookieConsentValue`. You can use it in your own code like so:
```js
import CookieConsent, { Cookies, getCookieConsentValue } from "react-cookie-consent";
console.log(getCookieConsentValue());
```
## Props ## Props
| Prop | Type | Default value | Description | | Prop | Type | Default value | Description |

8
build/index.d.ts vendored
View File

@@ -43,4 +43,12 @@ export interface CookieConsentProps {
export default class CookieConsent extends React.Component<CookieConsentProps, {}> {} export default class CookieConsent extends React.Component<CookieConsentProps, {}> {}
/**
* Returns the value of the consent cookie
* Retrieves the regular value first and if not found the legacy one according
* to: https://web.dev/samesite-cookie-recipes/#handling-incompatible-clients
* @param {*} name optional name of the cookie
*/
export function getCookieConsentValue(name?: string): string;
export { Cookies }; export { Cookies };

View File

@@ -1,14 +1,25 @@
/*! For license information please see index.js.LICENSE.txt */ /*! For license information please see index.js.LICENSE.txt */
module.exports = (() => { module.exports = (function () {
var e = { var e = {
866: (e, t, n) => { 866: function (e, t, n) {
"use strict"; "use strict";
n.r(t), n.r(t),
n.d(t, { n.d(t, {
Cookies: () => s(), Cookies: function () {
OPTIONS: () => O, return s();
SAME_SITE_OPTIONS: () => v, },
default: () => S, OPTIONS: function () {
return h;
},
SAME_SITE_OPTIONS: function () {
return m;
},
default: function () {
return j;
},
getCookieConsentValue: function () {
return g;
},
}); });
const o = require("react"); const o = require("react");
var r = n.n(o), var r = n.n(o),
@@ -59,7 +70,7 @@ module.exports = (() => {
var n = null != arguments[t] ? arguments[t] : {}; var n = null != arguments[t] ? arguments[t] : {};
t % 2 t % 2
? p(Object(n), !0).forEach(function (t) { ? p(Object(n), !0).forEach(function (t) {
y(e, t, n[t]); b(e, t, n[t]);
}) })
: Object.getOwnPropertyDescriptors : Object.getOwnPropertyDescriptors
? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n))
@@ -69,7 +80,7 @@ module.exports = (() => {
} }
return e; return e;
} }
function y(e, t, n) { function b(e, t, n) {
return ( return (
t in e t in e
? Object.defineProperty(e, t, { ? Object.defineProperty(e, t, {
@@ -82,7 +93,7 @@ module.exports = (() => {
e e
); );
} }
function b(e, t) { function y(e, t) {
for (var n = 0; n < t.length; n++) { for (var n = 0; n < t.length; n++) {
var o = t[n]; var o = t[n];
(o.enumerable = o.enumerable || !1), (o.enumerable = o.enumerable || !1),
@@ -98,7 +109,7 @@ module.exports = (() => {
return (e.__proto__ = t), e; return (e.__proto__ = t), e;
})(e, t); })(e, t);
} }
function m(e, t) { function v(e, t) {
return !t || ("object" !== l(t) && "function" != typeof t) return !t || ("object" !== l(t) && "function" != typeof t)
? (function (e) { ? (function (e) {
if (void 0 === e) if (void 0 === e)
@@ -109,22 +120,31 @@ module.exports = (() => {
})(e) })(e)
: t; : t;
} }
function h(e) { function O(e) {
return (h = Object.setPrototypeOf return (O = Object.setPrototypeOf
? Object.getPrototypeOf ? Object.getPrototypeOf
: function (e) { : function (e) {
return e.__proto__ || Object.getPrototypeOf(e); return e.__proto__ || Object.getPrototypeOf(e);
})(e); })(e);
} }
var O = { TOP: "top", BOTTOM: "bottom", NONE: "none" }, var h = { TOP: "top", BOTTOM: "bottom", NONE: "none" },
v = { STRICT: "strict", LAX: "lax", NONE: "none" }, m = { STRICT: "strict", LAX: "lax", NONE: "none" },
g = function (e) { g = function () {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : C,
t = s().get(e);
return void 0 === t && (t = s().get(S(e))), t;
},
S = function (e) {
return "".concat(e, "-legacy");
},
C = "CookieConsent",
k = function (e) {
var t = e.condition, var t = e.condition,
n = e.wrapper, n = e.wrapper,
o = e.children; o = e.children;
return t ? n(o) : o; return t ? n(o) : o;
}, },
C = (function (e) { x = (function (e) {
!(function (e, t) { !(function (e, t) {
if ("function" != typeof t && null !== t) if ("function" != typeof t && null !== t)
throw new TypeError("Super expression must either be null or a function"); throw new TypeError("Super expression must either be null or a function");
@@ -153,12 +173,12 @@ module.exports = (() => {
})()), })()),
function () { function () {
var e, var e,
t = h(o); t = O(o);
if (i) { if (i) {
var n = h(this).constructor; var n = O(this).constructor;
e = Reflect.construct(t, arguments, n); e = Reflect.construct(t, arguments, n);
} else e = t.apply(this, arguments); } else e = t.apply(this, arguments);
return m(this, e); return v(this, e);
}); });
function a(e) { function a(e) {
var t; var t;
@@ -250,12 +270,6 @@ module.exports = (() => {
o && this.setState({ visible: !1 }); o && this.setState({ visible: !1 });
}, },
}, },
{
key: "getLegacyCookieName",
value: function (e) {
return "".concat(e, "-legacy");
},
},
{ {
key: "setCookie", key: "setCookie",
value: function (e, t) { value: function (e, t) {
@@ -266,15 +280,14 @@ module.exports = (() => {
c = this.props.cookieSecurity; c = this.props.cookieSecurity;
void 0 === c && (c = !location || "https:" === location.protocol); void 0 === c && (c = !location || "https:" === location.protocol);
var a = f(f({ expires: r }, o), {}, { sameSite: i, secure: c }); var a = f(f({ expires: r }, o), {}, { sameSite: i, secure: c });
i === v.NONE && s().set(this.getLegacyCookieName(e), t, a), s().set(e, t, a); i === m.NONE && s().set(S(e), t, a), s().set(e, t, a);
}, },
}, },
{ {
key: "getCookieValue", key: "getCookieValue",
value: function () { value: function () {
var e = this.props.cookieName, var e = this.props.cookieName;
t = s().get(e); return g(e);
return void 0 === t && (t = s().get(this.getLegacyCookieName(e))), t;
}, },
}, },
{ {
@@ -291,15 +304,15 @@ module.exports = (() => {
s = t.disableStyles, s = t.disableStyles,
l = t.buttonText, l = t.buttonText,
p = t.declineButtonText, p = t.declineButtonText,
y = t.containerClasses, b = t.containerClasses,
b = t.contentClasses, y = t.contentClasses,
d = t.buttonClasses, d = t.buttonClasses,
m = t.buttonWrapperClasses, v = t.buttonWrapperClasses,
h = t.declineButtonClasses, O = t.declineButtonClasses,
v = t.buttonId, m = t.buttonId,
C = t.declineButtonId, g = t.declineButtonId,
S = t.disableButtonStyles, S = t.disableButtonStyles,
k = t.enableDeclineButton, C = t.enableDeclineButton,
x = t.flipButtons, x = t.flipButtons,
j = t.ButtonComponent, j = t.ButtonComponent,
T = t.overlay, T = t.overlay,
@@ -308,43 +321,43 @@ module.exports = (() => {
P = t.ariaAcceptLabel, P = t.ariaAcceptLabel,
D = t.ariaDeclineLabel, D = t.ariaDeclineLabel,
E = {}, E = {},
N = {},
I = {}, I = {},
N = {},
_ = {}, _ = {},
R = {}; R = {};
switch ( switch (
(s (s
? ((E = u({}, o)), ? ((E = u({}, o)),
(N = u({}, i)), (I = u({}, i)),
(I = u({}, c)), (N = u({}, c)),
(_ = u({}, a)), (_ = u({}, a)),
(R = u({}, B))) (R = u({}, B)))
: ((E = u({}, f(f({}, this.state.style), o))), : ((E = u({}, f(f({}, this.state.style), o))),
(_ = u({}, f(f({}, this.state.contentStyle), a))), (_ = u({}, f(f({}, this.state.contentStyle), a))),
(R = u({}, f(f({}, this.state.overlayStyle), B))), (R = u({}, f(f({}, this.state.overlayStyle), B))),
S S
? ((N = u({}, i)), (I = u({}, c))) ? ((I = u({}, i)), (N = u({}, c)))
: ((N = u({}, f(f({}, this.state.buttonStyle), i))), : ((I = u({}, f(f({}, this.state.buttonStyle), i))),
(I = u({}, f(f({}, this.state.declineButtonStyle), c))))), (N = u({}, f(f({}, this.state.declineButtonStyle), c))))),
n) n)
) { ) {
case O.TOP: case h.TOP:
E.top = "0"; E.top = "0";
break; break;
case O.BOTTOM: case h.BOTTOM:
E.bottom = "0"; E.bottom = "0";
} }
var A = []; var A = [];
return ( return (
k && C &&
A.push( A.push(
r().createElement( r().createElement(
j, j,
{ {
key: "declineButton", key: "declineButton",
style: I, style: N,
className: h, className: O,
id: C, id: g,
"aria-label": D, "aria-label": D,
onClick: function () { onClick: function () {
e.decline(); e.decline();
@@ -358,9 +371,9 @@ module.exports = (() => {
j, j,
{ {
key: "acceptButton", key: "acceptButton",
style: N, style: I,
className: d, className: d,
id: v, id: m,
"aria-label": P, "aria-label": P,
onClick: function () { onClick: function () {
e.accept(); e.accept();
@@ -371,7 +384,7 @@ module.exports = (() => {
), ),
x && A.reverse(), x && A.reverse(),
r().createElement( r().createElement(
g, k,
{ {
condition: T, condition: T,
wrapper: function (e) { wrapper: function (e) {
@@ -380,11 +393,11 @@ module.exports = (() => {
}, },
r().createElement( r().createElement(
"div", "div",
{ className: "".concat(y), style: E }, { className: "".concat(b), style: E },
r().createElement("div", { style: _, className: b }, this.props.children), r().createElement("div", { style: _, className: y }, this.props.children),
r().createElement( r().createElement(
"div", "div",
{ className: "".concat(m) }, { className: "".concat(v) },
A.map(function (e) { A.map(function (e) {
return e; return e;
}) })
@@ -394,19 +407,19 @@ module.exports = (() => {
); );
}, },
}, },
]) && b(t.prototype, n), ]) && y(t.prototype, n),
a a
); );
})(o.Component); })(o.Component);
(C.propTypes = { (x.propTypes = {
location: c().oneOf( location: c().oneOf(
Object.keys(O).map(function (e) { Object.keys(h).map(function (e) {
return O[e]; return h[e];
}) })
), ),
sameSite: c().oneOf( sameSite: c().oneOf(
Object.keys(v).map(function (e) { Object.keys(m).map(function (e) {
return v[e]; return m[e];
}) })
), ),
style: c().object, style: c().object,
@@ -446,14 +459,14 @@ module.exports = (() => {
ariaAcceptLabel: c().string, ariaAcceptLabel: c().string,
ariaDeclineLabel: c().string, ariaDeclineLabel: c().string,
}), }),
(C.defaultProps = { (x.defaultProps = {
disableStyles: !1, disableStyles: !1,
hideOnAccept: !0, hideOnAccept: !0,
hideOnDecline: !0, hideOnDecline: !0,
location: O.BOTTOM, location: h.BOTTOM,
onAccept: function () {}, onAccept: function () {},
onDecline: function () {}, onDecline: function () {},
cookieName: "CookieConsent", cookieName: C,
cookieValue: !0, cookieValue: !0,
declineCookieValue: !1, declineCookieValue: !1,
setDeclineCookie: !0, setDeclineCookie: !0,
@@ -472,7 +485,7 @@ module.exports = (() => {
disableButtonStyles: !1, disableButtonStyles: !1,
enableDeclineButton: !1, enableDeclineButton: !1,
flipButtons: !1, flipButtons: !1,
sameSite: v.LAX, sameSite: m.LAX,
ButtonComponent: function (e) { ButtonComponent: function (e) {
var t = e.children, var t = e.children,
n = (function (e, t) { n = (function (e, t) {
@@ -504,9 +517,9 @@ module.exports = (() => {
ariaAcceptLabel: "Accept cookies", ariaAcceptLabel: "Accept cookies",
ariaDeclineLabel: "Decline cookies", ariaDeclineLabel: "Decline cookies",
}); });
const S = C; const j = x;
}, },
808: (e, t, n) => { 808: function (e, t, n) {
var o, r, i; var o, r, i;
void 0 === void 0 ===
(r = (r =
@@ -591,7 +604,7 @@ module.exports = (() => {
: o) || (e.exports = r), : o) || (e.exports = r),
(e.exports = i()); (e.exports = i());
}, },
703: (e, t, n) => { 703: function (e, t, n) {
"use strict"; "use strict";
var o = n(414); var o = n(414);
function r() {} function r() {}
@@ -635,10 +648,10 @@ module.exports = (() => {
return (n.PropTypes = n), n; return (n.PropTypes = n), n;
}); });
}, },
697: (e, t, n) => { 697: function (e, t, n) {
e.exports = n(703)(); e.exports = n(703)();
}, },
414: (e) => { 414: function (e) {
"use strict"; "use strict";
e.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"; e.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";
}, },
@@ -650,16 +663,25 @@ module.exports = (() => {
return e[o](r, r.exports, n), r.exports; return e[o](r, r.exports, n), r.exports;
} }
return ( return (
(n.n = (e) => { (n.n = function (e) {
var t = e && e.__esModule ? () => e.default : () => e; var t =
e && e.__esModule
? function () {
return e.default;
}
: function () {
return e;
};
return n.d(t, { a: t }), t; return n.d(t, { a: t }), t;
}), }),
(n.d = (e, t) => { (n.d = function (e, t) {
for (var o in t) for (var o in t)
n.o(t, o) && !n.o(e, o) && Object.defineProperty(e, o, { enumerable: !0, get: t[o] }); n.o(t, o) && !n.o(e, o) && Object.defineProperty(e, o, { enumerable: !0, get: t[o] });
}), }),
(n.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)), (n.o = function (e, t) {
(n.r = (e) => { return Object.prototype.hasOwnProperty.call(e, t);
}),
(n.r = function (e) {
"undefined" != typeof Symbol && "undefined" != typeof Symbol &&
Symbol.toStringTag && Symbol.toStringTag &&
Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }),

14
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{ {
"name": "react-cookie-consent", "name": "react-cookie-consent",
"version": "6.0.0", "version": "6.2.3",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@@ -4204,9 +4204,9 @@
} }
}, },
"lodash": { "lodash": {
"version": "4.17.20", "version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true "dev": true
}, },
"log-symbols": { "log-symbols": {
@@ -5655,9 +5655,9 @@
} }
}, },
"ssri": { "ssri": {
"version": "8.0.0", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
"integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"minipass": "^3.1.1" "minipass": "^3.1.1"

View File

@@ -4,7 +4,7 @@
"name": "Rick van Lieshout", "name": "Rick van Lieshout",
"email": "info@rickvanlieshout.com" "email": "info@rickvanlieshout.com"
}, },
"version": "6.0.0", "version": "6.2.3",
"description": "A small, simple and customizable cookie consent bar for use in React applications.", "description": "A small, simple and customizable cookie consent bar for use in React applications.",
"main": "build/index.js", "main": "build/index.js",
"types": "build/index.d.ts", "types": "build/index.d.ts",
@@ -21,7 +21,8 @@
"patch": "npm --no-git-tag-version version patch", "patch": "npm --no-git-tag-version version patch",
"minor": "npm --no-git-tag-version version minor", "minor": "npm --no-git-tag-version version minor",
"major": "npm --no-git-tag-version version major", "major": "npm --no-git-tag-version version major",
"release": "npm run build && git add -A && PACKAGE_VERSION=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]') && git tag $PACKAGE_VERSION && git commit -m 'release $PACKAGE_VERSION' && git push && git push --tags && npm publish", "preversion": "grep \"\\[$npm_package_version\\]\" CHANGELOG.md > /dev/null || ( echo 'You need to add an entry in CHANGELOG.md for this version.' && false )",
"release": "npm run build && git add -A && git tag $npm_package_version && git commit -m 'release $npm_package_version' && git push && git push --tags && npm publish",
"release-patch": "npm run patch && npm run release", "release-patch": "npm run patch && npm run release",
"release-minor": "npm run minor && npm run release", "release-minor": "npm run minor && npm run release",
"release-major": "npm run major && npm run release" "release-major": "npm run major && npm run release"

8
src/index.d.ts vendored
View File

@@ -43,4 +43,12 @@ export interface CookieConsentProps {
export default class CookieConsent extends React.Component<CookieConsentProps, {}> {} export default class CookieConsent extends React.Component<CookieConsentProps, {}> {}
/**
* Returns the value of the consent cookie
* Retrieves the regular value first and if not found the legacy one according
* to: https://web.dev/samesite-cookie-recipes/#handling-incompatible-clients
* @param {*} name optional name of the cookie
*/
export function getCookieConsentValue(name?: string): string;
export { Cookies }; export { Cookies };

View File

@@ -14,6 +14,35 @@ export const SAME_SITE_OPTIONS = {
NONE: "none", NONE: "none",
}; };
/**
* Returns the value of the consent cookie
* Retrieves the regular value first and if not found the legacy one according
* to: https://web.dev/samesite-cookie-recipes/#handling-incompatible-clients
* @param {*} name optional name of the cookie
*/
export const getCookieConsentValue = (name = defaultCookieConsentName) => {
let cookieValue = Cookies.get(name);
// if the cookieValue is undefined check for the legacy cookie
if (cookieValue === undefined) {
cookieValue = Cookies.get(getLegacyCookieName(name));
}
return cookieValue;
};
/**
* Get the legacy cookie name by the regular cookie name
* @param {string} name of cookie to get
*/
const getLegacyCookieName = (name) => {
return `${name}-legacy`;
};
/**
* Default name of the cookie which is set by CookieConsent
*/
const defaultCookieConsentName = "CookieConsent";
/** /**
* A function to wrap elements with a "wrapper" on a condition * A function to wrap elements with a "wrapper" on a condition
* @param {object} wrappingOptions * @param {object} wrappingOptions
@@ -128,14 +157,6 @@ class CookieConsent extends Component {
} }
} }
/**
* Get the legacy cookie name by the regular cookie name
* @param {string} name of cookie to get
*/
getLegacyCookieName(name) {
return `${name}-legacy`;
}
/** /**
* Function to set the consent cookie based on the provided variables * Function to set the consent cookie based on the provided variables
* Sets two cookies to handle incompatible browsers, more details: * Sets two cookies to handle incompatible browsers, more details:
@@ -153,7 +174,7 @@ class CookieConsent extends Component {
// Fallback for older browsers where can not set SameSite=None, SEE: https://web.dev/samesite-cookie-recipes/#handling-incompatible-clients // Fallback for older browsers where can not set SameSite=None, SEE: https://web.dev/samesite-cookie-recipes/#handling-incompatible-clients
if (sameSite === SAME_SITE_OPTIONS.NONE) { if (sameSite === SAME_SITE_OPTIONS.NONE) {
Cookies.set(this.getLegacyCookieName(cookieName), cookieValue, cookieOptions); Cookies.set(getLegacyCookieName(cookieName), cookieValue, cookieOptions);
} }
// set the regular cookie // set the regular cookie
@@ -167,14 +188,7 @@ class CookieConsent extends Component {
*/ */
getCookieValue() { getCookieValue() {
const { cookieName } = this.props; const { cookieName } = this.props;
return getCookieConsentValue(cookieName);
let cookieValue = Cookies.get(cookieName);
// if the cookieValue is undefined check for the legacy cookie
if (cookieValue === undefined) {
cookieValue = Cookies.get(this.getLegacyCookieName(cookieName));
}
return cookieValue;
} }
render() { render() {
@@ -364,7 +378,7 @@ CookieConsent.defaultProps = {
location: OPTIONS.BOTTOM, location: OPTIONS.BOTTOM,
onAccept: () => {}, onAccept: () => {},
onDecline: () => {}, onDecline: () => {},
cookieName: "CookieConsent", cookieName: defaultCookieConsentName,
cookieValue: true, cookieValue: true,
declineCookieValue: false, declineCookieValue: false,
setDeclineCookie: true, setDeclineCookie: true,

View File

@@ -7,6 +7,9 @@ module.exports = {
path: path.resolve(__dirname, "build"), path: path.resolve(__dirname, "build"),
filename: "index.js", filename: "index.js",
libraryTarget: "commonjs2", // THIS IS THE MOST IMPORTANT LINE! :mindblow: I wasted more than 2 days until realize this was the line most important in all this guide. libraryTarget: "commonjs2", // THIS IS THE MOST IMPORTANT LINE! :mindblow: I wasted more than 2 days until realize this was the line most important in all this guide.
environment: {
arrowFunction: false, // the generated runtime-code should not use arrow functions
},
}, },
module: { module: {
rules: [ rules: [