@oslokommune/punkt-elements
Version:
Komponentbiblioteket til Punkt, et designsystem laget av Oslo Origo
198 lines (197 loc) • 7.97 kB
JavaScript
import { c as e, d as t, r as n, s as r, t as i } from "./element-cZ85T_aa.js";
import "./icon-Co72KtgF.js";
import "./button-BIpd1xJh.js";
//#region src/components/consent/strings.ts
var a = {
i18n: {
nb: {
contentPresentation: {
title: "Oslo kommune bruker informasjonskapsler",
description: ["For at nettstedet skal fungere og være trygt, bruker Oslo kommune informasjonskapsler. Noen er teknisk nødvendige, mens andre sikrer ulik funksjonalitet.", "Godtar du alle informasjonskapsler, tillater du også at vi samler inn data om statistikk og brukeradferd. Da hjelper du oss med å lage et bedre nettsted uten at du trenger å dele noe personlig informasjon med oss."],
buttons: {
accept: "Godta alle",
reject: "Kun nødvendige",
settings: "Innstillinger for informasjonskapsler"
}
},
contentSettings: {
title: "Innstillinger for informasjonskapsler",
description: ["Her kan du velge hvilke typer informasjonskapsler du vil tillate. Tillatelsen gjelder i 90 dager. Husk at nødvendige informasjonskapsler ikke kan velges bort.", "Du kan når som helst endre innstillingene og finne mer informasjon nederst på nettstedet under «Innstillinger for informasjonskapsler» og «Personvern og informasjonskapsler»."],
buttons: {
back: "Tilbake",
save: "Lagre innstillinger"
}
}
},
en: {
contentPresentation: {
title: "Before you visit Oslo kommune ...",
description: ["This website uses cookies to make improvements. In this context, we need your consent to measure the traffic on the website in relation to statistics and feedback.", "To read more about what we use cookies for, go to our privacy declaration which you will find at the bottom of our websites."],
buttons: {
accept: "Yes, I accept",
reject: "Only necessary",
settings: "Go to settings"
}
},
contentSettings: {
title: "Her kan du aktivt velge mellom ulike informasjonskapsler",
description: ["For å lese mer om hva vi bruker informasjonskapsler til gå til vår personvernserklering som du finner på våre nettsider"],
buttons: {
back: "Back",
save: "Save settings"
}
}
}
},
cookies: [
{
name: "statistics",
defaultValue: null,
i18n: {
nb: {
title: "Statistikk og analyse",
description: "Jeg godtar at Oslo kommune bruker informasjonskapsler til å innhente data om statistikk og brukeradferd.",
buttons: {
yes: "Ja",
no: "Nei"
}
},
en: {
title: "Statistics and analytics",
description: "Select your preference for statistics and analytics",
buttons: {
yes: "Yes",
no: "No"
}
}
}
},
{
name: "survey",
defaultValue: null,
i18n: {
nb: {
title: "Skriftlige tilbakemeldinger",
description: "Jeg godtar at Oslo kommune bruker informasjonskapsler til å vise responsfelt og registrere tilbakemeldinger.",
buttons: {
yes: "Ja",
no: "Nei"
}
},
en: {
title: "Survey",
description: "Select your preference for survey",
buttons: {
yes: "Yes",
no: "No"
}
}
}
},
{
name: "functional",
defaultValue: !0,
i18n: {
nb: {
title: "Funksjonelle informasjonskapsler",
description: "Jeg godtar at Oslo kommune bruker informasjonskapsler for å gjøre ulike funksjoner på nettstedet mulige (for eksempel skjemaer og barnehagevelger).",
buttons: {
yes: "Ja",
no: "Nei"
}
},
en: {
title: "Functional cookies",
description: "For the website to function optimally, we recommend that you accept these cookies",
buttons: {
yes: "Yes",
no: "No"
}
}
}
}
]
}, o = null;
function s() {
return o || (o = new Promise((e, t) => {
if (document.querySelector("#oslo-consent-script")) {
e();
return;
}
let n = document.createElement("script");
n.src = "https://cdn.web.oslo.kommune.no/cb/cb-v1.1.0.js", n.id = "oslo-consent-script", n.onload = () => e(), n.onerror = t, document.head.appendChild(n);
let r = document.createElement("link");
r.href = "https://cdn.web.oslo.kommune.no/cb/cb-v1.1.0.css", r.type = "text/css", r.rel = "stylesheet", r.id = "oslo-consent-styles", document.head.appendChild(r);
}), o);
}
var c = class extends i {
constructor() {
super(), this.devMode = !1, this.hotjarId = null, this.googleAnalyticsId = null, this.cookieDomain = null, this.cookieSecure = null, this.cookieExpiryDays = null, this.triggerType = "button", this.triggerText = null, this.i18nLanguage = "nb";
}
connectedCallback() {
super.connectedCallback(), this.triggerText = this.triggerText || a.i18n[this.i18nLanguage].contentPresentation.buttons.settings;
}
disconnectedCallback() {
super.disconnectedCallback(), this._cookieEventHandler && window.__cookieEvents?.off("CookieManager.setCookie", this._cookieEventHandler);
}
returnJsonOrObject(e) {
let t;
try {
t = JSON.parse(e);
} catch {
t = e;
}
return t;
}
emitCookieConsents(e) {
let t = this.returnJsonOrObject(e.value).items.reduce((e, t) => (e[t.name] = t.consent, e), {});
this.dispatchEvent(new CustomEvent("toggle-consent", {
detail: t,
bubbles: !0,
cancelable: !1
}));
}
async firstUpdated(e) {
window.cookieBanner_googleAnalyticsId = this.googleAnalyticsId, window.cookieBanner_hotjarId = this.hotjarId, this.cookieDomain && (window.cookieBanner_cookieDomain = this.cookieDomain), this.cookieSecure && (window.cookieBanner_cookieSecure = this.cookieSecure), this.cookieExpiryDays && (window.cookieBanner_cookieExpiryDays = this.cookieExpiryDays), this.devMode && (window.cookieBanner_devMode = this.devMode), await s(), this.triggerInit();
}
triggerInit() {
window.document.dispatchEvent(new Event("CookieBannerReady", {
bubbles: !0,
cancelable: !0
})), window.cookieBanner.cookieConsent.validateConsentCookie().then((e) => {
if (e) {
let e = { value: window.cookieBanner.cookieConsent.getConsentCookie() };
window.setTimeout(() => this.emitCookieConsents(e), 0), this._cookieEventHandler && window.__cookieEvents.off("CookieManager.setCookie", this._cookieEventHandler), this._cookieEventHandler = (e) => {
this.emitCookieConsents(e);
}, window.__cookieEvents.on("CookieManager.setCookie", this._cookieEventHandler);
}
});
}
openModal(e) {
e.preventDefault(), window.cookieBanner?.cookieConsent || this.triggerInit(), setTimeout(() => window.cookieBanner.openCookieModal());
}
render() {
return this.triggerType === "link" ? t`<a href="#" class="pkt-link" =${this.openModal}>${this.triggerText}</a>` : this.triggerType === "footerlink" ? t`<a href="#" class="pkt-footer__link" =${this.openModal}>
<pkt-icon name="chevron-right" class="pkt-footer__link-icon"></pkt-icon>
${this.triggerText}
</a>` : this.triggerType === "icon" ? t`<pkt-button
skin="tertiary"
variant="icon-only"
iconName="cookie"
=${this.openModal}
>
>${this.triggerText}</pkt-button
>` : t`<pkt-button =${this.openModal}>${this.triggerText}</pkt-button>`;
}
};
n([r({ type: Boolean })], c.prototype, "devMode", void 0), n([r({ type: String })], c.prototype, "hotjarId", void 0), n([r({ type: String })], c.prototype, "googleAnalyticsId", void 0), n([r({ type: String })], c.prototype, "cookieDomain", void 0), n([r({ type: String })], c.prototype, "cookieSecure", void 0), n([r({ type: String })], c.prototype, "cookieExpiryDays", void 0), n([r({ type: String })], c.prototype, "triggerType", void 0), n([r({ type: String })], c.prototype, "triggerText", void 0), n([r({ type: String })], c.prototype, "i18nLanguage", void 0);
try {
e("pkt-consent")(c);
} catch {
console.warn("Forsøker å definere <pkt-consent>, men den er allerede definert");
}
//#endregion
//#region src/components/consent/index.ts
var l = c;
//#endregion
export { c as n, l as t };