UNPKG

fever-cookies-plugin

Version:

This plugin allows you to setup a fully customizable cookie bar, so the user can control which cookies want, following the best practices of GDPR compliance.

8 lines 16.7 kB
/** * fever-cookies-plugin - This plugin allows you to setup a fully customizable cookie bar, so the user can control which cookies want, following the best practices of GDPR compliance. * @version v2.2.0 * @author FEVER * @link fever.pt * @license ISC */ function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Map"===(o="Object"===o&&t.constructor?t.constructor.name:o)||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,n=new Array(e);o<e;o++)n[o]=t[o];return n}function _iterableToArrayLimit(t,e){var o=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=o){var n,a,c=[],r=!0,i=!1;try{for(o=o.call(t);!(r=(n=o.next()).done)&&(c.push(n.value),!e||c.length!==e);r=!0);}catch(t){i=!0,a=t}finally{try{r||null==o.return||o.return()}finally{if(i)throw a}}return c}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t,e){var o="FeverCookieBar";"function"==typeof define&&define.amd?define([],e()):"object"===("undefined"==typeof exports?"undefined":_typeof(exports))?module.exports=e():t[o]=e()}("undefined"!=typeof global?global:this.window||this.global,function(){"use strict";window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach);function i(t,e){var o;(t=document.createElement("div")).classList.add("fever-cookie__bar"),t.style.opacity="0",(o=t)&&(o.style.opacity=0,function t(){var e=parseFloat(o.style.opacity);1<(e+=.1)||(o.style.opacity=e,requestAnimationFrame(t))}()),f.body.appendChild(t);var n=e.options,a=n.layout.bar.link?"<a href='".concat(n.layout.bar.link.url,"' target='").concat(n.layout.bar.link.target,"' class='fever-cookie__bar-link'>").concat(n.layout.bar.link.text,"</a>"):"",e=n.layout.bar.labels.rejectAll?"<button class='fever-button fever-button--reject js-cookies-reject'>".concat(n.layout.bar.labels.rejectAll,"</button>"):"";t.insertAdjacentHTML("afterbegin","\n\t\t\t<div class='fever-cookie__container'>\n\t\t\t\t<div class='fever-cookie__bar-text'>\n\t\t\t\t\t<span>".concat(n.layout.bar.text,"</span>\n\t\t\t\t\t").concat(a,"\n\t\t\t\t</div>\n\t\t\t\t<button class='fever-button fever-button--settings js-cookies-settings'>").concat(n.layout.bar.labels.settings,"</button>\n\t\t\t\t").concat(e,"\n\t\t\t\t<button class='fever-button fever-button--allow js-cookies-accept-all'>").concat(n.layout.bar.labels.acceptAll,"</button>\n\t\t\t</div>\n\t\t"))}function o(){var e;(e=document.querySelector(".fever-cookie__bar"))&&(e.style.opacity=1,function t(){(e.style.opacity-=.1)<0?e.style.display="none":requestAnimationFrame(t)}())}function n(){f.body.style.overflow="hidden",document.querySelector(".fever-cookie__modal").classList.add("active"),document.querySelectorAll(".fever-cookie__modal-tabs-item,.fever-cookie__modal-tabs-content").forEach(function(t){return t.classList.remove("cookie-current")}),document.querySelectorAll(".fever-cookie__modal-tabs-item").forEach(function(t,e){return 0===e?t.classList.add("cookie-current"):""}),document.querySelector(".fever-cookie__modal-tabs-content").classList.add("cookie-current")}function l(t){var e=t.options;document.querySelectorAll(".fever-cookie__modal-tabs-item").forEach(function(){document.addEventListener("click",function(t){var e;t.target&&t.target.classList.contains("js-cookies-tab-item")&&(e=t.target.dataset.tab,document.querySelectorAll(".fever-cookie__modal-tabs-item,.fever-cookie__modal-tabs-content").forEach(function(t){return t.classList.remove("cookie-current")}),t.target.classList.add("cookie-current"),document.querySelector("[data-cookies-tab-id=".concat(e,"]")).classList.add("cookie-current"))})}),document.querySelector(".js-cookies-settings").addEventListener("click",n),document.querySelectorAll(".js-cookies-reject, .js-cookies-accept-all, .js-cookies-save").forEach(function(t){return t.addEventListener("click",function(){o(),f.body.classList.contains("fever-cookie__overlay")&&f.body.classList.remove("fever-cookie__overlay"),document.querySelector(".fever-cookie__modal").removeAttribute("style")})}),document.querySelectorAll(".fever-button-modal").forEach(function(t){return t.addEventListener("click",function(){document.querySelector(".fever-cookie__modal").classList.remove("active"),f.body.removeAttribute("style")})}),document.querySelectorAll(".js-cookies-checkbox").forEach(function(t){return t.addEventListener("change",function(){return t.nextElementSibling.children[0].textContent=t.checked?e.modal.optional.labels.enabled:e.modal.optional.labels.disabled})})}function s(t,e,o){var n;o&&((n=new Date).setTime(n.getTime()+24*o*60*60*1e3),n="expires=".concat(n.toUTCString())),document.cookie="".concat(t,"=").concat(e||"","; ").concat(n,"; path=/")}function d(r){var t=document.querySelector(".js-cookies-reject");t&&t.addEventListener("click",function(){var t;s("fevercookie-optional-state","reject-all",0),(t=r).options.modal.optional.tabs.forEach(function(t){t.events&&t.events.off?(t.events.off(),s("fevercookie-optional-".concat(t.id),!1,-1)):console.warn("WARNING: ".concat(t.id," events is not defined"))}),e(t)}),document.querySelectorAll(".js-cookies-accept-all").forEach(function(t){t.addEventListener("click",function(){var t,e;s("fevercookie-optional-state","accept-all",365),e="all",(t=r).options.modal.optional.tabs.forEach(function(t){t.events&&t.events.on?(t.events.on(),s("fevercookie-optional-".concat(t.id),!0,365),"all"!==e&&s("fevercookie-optional-state","accept-some",365)):console.warn("WARNING: ".concat(t.id," events is not defined"))}),c(t)})}),document.querySelector(".js-cookies-save").addEventListener("click",function(){var n=0,a=0,c=document.querySelectorAll(".js-tab-optional");c.forEach(function(t){var e,o;a++,t.querySelector("input").checked?(o=t.dataset.cookiesTabId,r.options.modal.optional.tabs.filter(function(t){o===t.id&&(t.events&&t.events.on?(t.events.on(),s("fevercookie-optional-".concat(o),!0,365)):console.warn("WARNING: ".concat(t.id," events is not defined")))}),n++):(e=t.dataset.cookiesTabId,r.options.modal.optional.tabs.filter(function(t){e===t.id&&(t.events&&t.events.off?(t.events.off(),s("fevercookie-optional-".concat(e),!1,-1)):console.warn("WARNING: ".concat(t.id," events is not defined")))})),a===c.length&&(0<n?s("fevercookie-optional-state",n<c.length?"accept-some":"accept-all",365):s("fevercookie-optional-state","accept-none",0))})})}function u(n){var t=document.querySelectorAll(".js-tab-optional"),e=document.querySelectorAll(".js-cookies-checkbox"),o=n.options;t.forEach(function(t){var e,o;t.querySelector("input").checked?(o=t.dataset.cookiesTabId,n.options.modal.optional.tabs.filter(function(t){o===t.id&&(t.events&&t.events.pageLoadOn?(t.events.pageLoadOn(),s("fevercookie-optional-".concat(o),!0,365)):console.warn("WARNING: ".concat(t.id," events is not defined")))})):(e=t.dataset.cookiesTabId,n.options.modal.optional.tabs.filter(function(t){e===t.id&&(t.events&&t.events.pageLoadOff?t.events.pageLoadOff():console.warn("WARNING: ".concat(t.id," events is not defined")))}))}),e.forEach(function(t){return t.nextElementSibling.children[0].textContent=t.checked?o.modal.optional.labels.enabled:o.modal.optional.labels.disabled}),v("fevercookie-optional-state")&&(document.querySelector(".fever-cookie__bar").outerHTML="",f.body.classList.remove("fever-cookie__overlay"))}var f={body:document.body},b=/(?:[0-9a-f]{3}){1,2}$/i,a={layout:{overlay:!1,color:{primary:"#f60",secondary:"#000"},borderRadius:10,bar:{position:"bottom",text:'By continuing to browse or by clicking "Accept All Cookies", you agree to the storing of first and third-party cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts',textColor:"white",link:{text:"Cookie Privacy",target:"_blank",url:"https://gdpr-info.eu/"},labels:{acceptAll:"Accept all cookies",rejectAll:"I do not accept",settings:"Cookie Settings"}}},modal:{title:"Privacy Preference Center",logo:"https://feverstorage.blob.core.windows.net/cookies/img/cookies-logo.svg",labels:{acceptAll:"Accept all",save:"Save preferences"},required:{tabs:[{id:"your-privacy",title:"Your Privacy",text:"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences, your device or used to make the site work as you expect it to. The information does not usually identify you directly, but it can give you a more personalized web experience. You can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, you should know that blocking some types of cookies may impact your experience on the site and the services we are able to offer.",label:""},{id:"strictly-necessary-cookies",title:"Strictly Necessary Cookies",text:"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site may not work then.",label:"Always enabled"}]},optional:{labels:{enabled:"Enabled",disabled:"Disabled"},tabs:[]}}},v=function(t){var o={};return document.cookie.split(";").forEach(function(t){var e=_slicedToArray(t.split("="),2),t=e[0],e=e[1];o[t.trim()]=e}),o[t]},c=function(t){var o=t.options;document.querySelectorAll(".js-tab-optional").forEach(function(t){var e=t.querySelector("input");e.checked||(t.querySelector(".js-cookies-label").click(),e.nextElementSibling.children[0].textContent=o.modal.optional.labels.enabled)})},e=function(t){var o=t.options;document.querySelectorAll(".js-tab-optional").forEach(function(t){var e=t.querySelector("input");e.checked&&(t.querySelector(".js-cookies-label").click(),e.nextElementSibling.children[0].textContent=o.modal.optional.labels.disabled)})};function t(t){this.options=function(t){var e,o={};for(e in a)Object.prototype.hasOwnProperty.call(a,e)&&(o[e]=a[e]);for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&(o[e]=t[e]);return o}(t),this.init()}return t.prototype={init:function(){var t,e,o,n,a,c,r;i(this.cookieBar,this),t=document.querySelector(".fever-cookie__bar"),e=(r=this).options,o=e.layout.color.primary.match(b),r=e.layout.color.secondary.match(b),"top"===e.layout.bar.position?t.classList.add("fever-cookie__bar--top"):t.classList.add("fever-cookie__bar--bottom"),"white"===e.layout.bar.textColor?t.classList.add("fever-cookie__bar-text--white"):t.classList.add("fever-cookie__bar-text--black"),t.style.backgroundColor="#".concat(r),document.querySelectorAll(".fever-button:not(.fever-button--settings)").forEach(function(t){return t.style.backgroundColor="#".concat(o)}),document.querySelectorAll(".fever-button").forEach(function(t){t.style.borderRadius="".concat(e.layout.borderRadius,"px"),t.style.borderColor="#".concat(o)}),!0===e.layout.overlay&&f.body.classList.add("fever-cookie__overlay"),function(t,e){(t=document.createElement("div")).classList.add("fever-cookie__modal"),f.body.appendChild(t);e=e.options;t.insertAdjacentHTML("afterbegin","\n\t\t\t<div class='fever-cookie__modal-container'>\n\t\t\t\t<div class='fever-cookie__modal-header'>\n\t\t\t\t\t<div class='fever-cookie__modal-close'>\n\t\t\t\t\t\t<button class='fever-cookie__modal-button-close fever-button-modal js-cookies-close'>X</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class='fever-cookie__modal-logo'>\n\t\t\t\t\t\t<img class='fever-cookie__modal-image' src='".concat(e.modal.logo,"' alt='logo' />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class='fever-cookie__modal-title'>").concat(e.modal.title,"</div>\n\t\t\t\t</div>\n\t\t\t\t<div class='fever-cookie__modal-body'>\n\t\t\t\t\t<div class='fever-cookie__modal-tabs js-tabs-required'>\n\t\t\t\t\t\t<ul class='js-cookies-tabs fever-cookie__modal-tabs-list'></ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class='fever-cookie__modal-footer'>\n\t\t\t\t\t<button class='fever-cookie__modal-button fever-button-modal js-cookies-save'>").concat(e.modal.labels.save,"</button>\t\t\t\t\n\t\t\t\t\t<button class='fever-cookie__modal-button fever-button-modal js-cookies-accept-all'>").concat(e.modal.labels.acceptAll,"</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t"))}(this.cookieModal,this),(n=this.options).modal.required.tabs.forEach(function(t){document.querySelector(".js-cookies-tabs").insertAdjacentHTML("beforeend","\n\t\t\t\t<li class='fever-cookie__modal-tabs-item js-cookies-tab-item' data-tab='".concat(t.id,"'>").concat(t.title,"</li>\n\t\t\t")),document.querySelector(".js-tabs-required").insertAdjacentHTML("beforeend","\n\t\t\t\t<div class='fever-cookie__modal-tabs-content js-tab-required' data-cookies-tab-id='".concat(t.id,"'>\n\t\t\t\t\t<div class='fever-cookie__modal-title'>").concat(n.modal.title,"</div>\n\t\t\t\t\t\t<div class='fever-cookie__modal-tabs-content-title'>\n\t\t\t\t\t\t\t<span class='fever-cookie__modal-tabs-content-copy'>").concat(t.title,"</span>\n\t\t\t\t\t\t\t<label class='fever-cookie__modal-label'>").concat(t.label,"</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t<div class='fever-cookie__modal-tabs-content-text'>").concat(t.text,"</div>\n\t\t\t\t</div>\n\t\t\t"))}),(a=this.options).modal.optional.tabs.forEach(function(t,e){var o="true"===v("fevercookie-optional-".concat(t.id))?"checked":"";document.querySelector(".js-cookies-tabs").insertAdjacentHTML("beforeend","<li class='fever-cookie__modal-tabs-item js-cookies-tab-item' data-tab='".concat(t.id,"'>").concat(t.title,"</li>")),document.querySelector(".fever-cookie__modal-tabs").insertAdjacentHTML("beforeend","\n\t\t\t\t<div class='fever-cookie__modal-tabs-content js-tab-optional' data-cookies-tab-id='".concat(t.id,"'>\n\t\t\t\t\t<div class='fever-cookie__modal-title'>").concat(a.modal.title,"</div>\n\t\t\t\t\t\t<div class='fever-cookie__modal-tabs-content-title'>\n\t\t\t\t\t\t\t<span class='fever-cookie__modal-tabs-content-copy'>").concat(t.title,"</span>\n\t\t\t\t\t\t\t<input id='fever-cookie__checkbox-").concat(e,"' ").concat(o," class='fever-cookie__modal-input js-cookies-checkbox' type='checkbox' />\n\t\t\t\t\t\t\t<label class= 'fever-cookie__modal-label js-cookies-label' for='fever-cookie__checkbox-").concat(e,"'>\n\t\t\t\t\t\t\t\t<span>").concat(a.modal.optional.labels.disabled,"</span>\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t<div class='fever-cookie__modal-tabs-content-text'>").concat(t.text,"</div>\n\t\t\t\t</div>\n\t\t\t"))}),r=(c=(r=this).options).layout.color.primary.match(b),document.querySelector(".fever-cookie__modal-container").style.backgroundColor="#".concat(r),document.querySelector(".fever-cookie__modal-header").style.backgroundColor="#".concat(r),document.querySelector(".fever-cookie__modal-footer").style.backgroundColor="#".concat(r),document.querySelector(".fever-cookie__modal-container").style.borderRadius=15<=c.layout.borderRadius?"15px":"".concat(c.layout.borderRadius,"px"),document.querySelector(".js-cookies-close").style.color="#".concat(r),document.querySelector(".fever-cookie__modal .js-cookies-accept-all").style.color="#".concat(r),document.querySelectorAll(".fever-button-modal").forEach(function(t){return t.style.borderRadius="".concat(c.layout.borderRadius,"px")}),window.addEventListener("load",function(){return f.body.classList.contains("fever-cookie__overlay")?document.querySelector(".fever-cookie__modal").style.backgroundColor="transparent":""}),l(this),d(this),u(this),(r=function(t){if(""===t)return{};for(var e={},o=0;o<t.length;++o){var n=t[o].split("=",2);e[n[0]]=1!==n.length?decodeURIComponent(n[1].replace(/\+/g," ")):""}return e}(location.search.substr(1).split("&")).overlay)&&"0"===r&&f.body.classList.remove("fever-cookie__overlay")},openModal:function(){n()},expireCookie:function(t){s(t,null,-1)}},t});