UNPKG

@palmabit/angular-cookie-law

Version:

Angular module that provides a banner to inform users about cookie law

4 lines 4.34 kB
/** * @palmabit/angular-cookie-law - @version v0.5.0 - @author Palmabit Srl<hello@palmabit.com> */ "use strict";angular.module("angular-cookie-law",[]),angular.module("angular-cookie-law").value("cookieLawName","_cle").value("cookieLawAccepted","accepted").value("cookieLawDeclined","declined"),angular.module("angular-cookie-law").directive("cookieLawBanner",["$compile","CookieLawService",function($compile,CookieLawService){return{restrict:"EA",replace:!0,scope:{position:"@",message:"@",acceptText:"@",declineText:"@",policyText:"@",policyURL:"@",acceptButton:"@",declineButton:"@",policyButton:"@",policyBlank:"@",expireDays:"@",element:"@"},link:function(scope,element,attr){var template,options,expireDate;scope.$watchGroup(["position","message","acceptText","declineText","policyText","policyURL","acceptButton","declineButton","policyButton","policyBlank","expireDays","element"],function(){CookieLawService.isEnabled()||(options={position:"bottom"===attr.position?"bottom":"top",message:attr.message||"We use cookies to track usage and preferences.",acceptButton:"false"!==attr.acceptButton,acceptText:attr.acceptText||"I Understand",declineButton:attr.declineButton||!1,declineText:attr.declineText||"Disable Cookies",policyButton:attr.policyButton||!1,policyText:attr.policyText||"Privacy Policy",policyURL:attr.policyUrl||"/privacy-policy/",policyBlank:attr.policyBlank&&"true"===attr.policyBlank?'target="_blank"':"",expireDays:attr.expireDays||365,element:attr.element||"body"},(expireDate=new Date).setTime(expireDate.getTime()+24*options.expireDays*60*60*1e3),expireDate=expireDate.toGMTString(),options.acceptButton&&(acceptButton='<a href="" class="cl-accept" ng-click="accept()">'+options.acceptText+"</a>"),options.declineButton&&(declineButton=' <a href="" class="cl-disable" ng-click="decline()">'+options.declineText+"</a>"),options.policyButton&&(policyButton=' <a href="'+options.policyURL+'" class="cl-policy" '+options.policyBlank+">"+options.policyText+"</a>"),template='<div class="cl-banner '+options.position+'"><p>'+options.message+"<br>"+acceptButton+declineButton+policyButton+"</p></div>",element.html(template),$compile(element.contents())(scope),scope.accept=function(){CookieLawService.accept(expireDate),scope.onAccept(),element.remove(),scope.onDismiss()},scope.decline=function(){CookieLawService.decline(expireDate),scope.onDecline(),element.remove(),scope.onDismiss()})})},controller:["$rootScope","$scope",function($rootScope,scope){scope.onAccept=function(){$rootScope.$broadcast("cookieLaw.accept")},scope.onDismiss=function(){$rootScope.$broadcast("cookieLaw.dismiss")},scope.onDecline=function(){$rootScope.$broadcast("cookieLaw.decline")}}]}}]),angular.module("angular-cookie-law").directive("cookieLawWait",["CookieLawService",function(CookieLawService){return{priority:1,terminal:!0,restrict:"EA",replace:!0,template:"<span ng-transclude></span>",transclude:!0,scope:!1,link:function(scope,element,attrs,controller,transclude){function loadTransclude(){element.html(""),transclude(scope,function(clone){element.html(""),element.append(clone)})}CookieLawService.isEnabled()&&loadTransclude(),scope.$on("cookieLaw.accept",function(){loadTransclude()})}}}]),angular.module("angular-cookie-law").factory("CookieLawService",["CookieService","cookieLawName","cookieLawAccepted","cookieLawDeclined",function(CookieService,cookieLawName,cookieLawAccepted,cookieLawDeclined){return{accept:function(expireDate){CookieService.set(cookieLawName,cookieLawAccepted+";expires="+expireDate)},decline:function(expireDate){CookieService.set(cookieLawName,cookieLawDeclined+";expires="+expireDate)},isEnabled:function(){return CookieService.get(cookieLawName)===cookieLawAccepted||CookieService.get(cookieLawName)===cookieLawDeclined},isAccepted:function(){return CookieService.get(cookieLawName)===cookieLawAccepted},isDeclined:function(){return CookieService.get(cookieLawName)===cookieLawDeclined}}}]),angular.module("angular-cookie-law").factory("CookieService",function(){return{get:function(key){return function(key){for(var nameEQ=key+"=",ca=document.cookie.split(";"),i=0;i<ca.length;i++){for(var c=ca[i];" "==c.charAt(0);)c=c.substring(1,c.length);if(0==c.indexOf(nameEQ))return c.substring(nameEQ.length,c.length)}return null}(key)},set:function(key,value){document.cookie=key+"="+value}}});