cookiecraft 1.0.8 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cookiecraft.css +1 -1
- package/dist/cookiecraft.esm.js +129 -25
- package/dist/cookiecraft.esm.js.map +1 -1
- package/dist/cookiecraft.js +129 -25
- package/dist/cookiecraft.js.map +1 -1
- package/dist/cookiecraft.min.js +1 -1
- package/dist/cookiecraft.min.js.map +1 -1
- package/dist/stats.html +1 -1
- package/dist/types/i18n/translations.d.ts +6 -0
- package/package.json +4 -5
package/dist/cookiecraft.js
CHANGED
|
@@ -689,6 +689,13 @@
|
|
|
689
689
|
const isModal = this.config.disablePageInteraction;
|
|
690
690
|
const safeColor = this.config.primaryColor ? sanitizeColor(this.config.primaryColor) : '';
|
|
691
691
|
const colorStyle = buildColorStyle(safeColor);
|
|
692
|
+
const titleHtml = translations.title
|
|
693
|
+
? `<h2 class="cc-banner__title">${escapeHtml(translations.title)}</h2>`
|
|
694
|
+
: '';
|
|
695
|
+
const descriptionHtml = this.getDescriptionHTML();
|
|
696
|
+
const descBlock = descriptionHtml
|
|
697
|
+
? `<p class="cc-banner__description">${descriptionHtml}</p>`
|
|
698
|
+
: '';
|
|
692
699
|
const template = `
|
|
693
700
|
<div
|
|
694
701
|
class="cc-banner cc-banner--${escapeHtml(position)} cc-banner--${escapeHtml(layout)} ${backdropBlur ? 'cc-backdrop-blur' : ''}"
|
|
@@ -701,28 +708,10 @@
|
|
|
701
708
|
>
|
|
702
709
|
<div class="cc-banner__container">
|
|
703
710
|
<div class="cc-banner__content">
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
</h2>
|
|
707
|
-
<p class="cc-banner__description">
|
|
708
|
-
${this.getDescriptionHTML()}
|
|
709
|
-
</p>
|
|
711
|
+
${titleHtml}
|
|
712
|
+
${descBlock}
|
|
710
713
|
</div>
|
|
711
714
|
<div class="cc-banner__actions">
|
|
712
|
-
<button
|
|
713
|
-
class="cc-btn cc-btn--ghost"
|
|
714
|
-
data-action="reject"
|
|
715
|
-
aria-label="${escapeHtml(translations.rejectAll || 'Essentials only')}"
|
|
716
|
-
>
|
|
717
|
-
${escapeHtml(translations.rejectAll || 'Essentials only')}
|
|
718
|
-
</button>
|
|
719
|
-
<button
|
|
720
|
-
class="cc-btn cc-btn--tertiary"
|
|
721
|
-
data-action="customize"
|
|
722
|
-
aria-label="${escapeHtml(translations.customize || 'Customize')}"
|
|
723
|
-
>
|
|
724
|
-
${escapeHtml(translations.customize || 'Customize')}
|
|
725
|
-
</button>
|
|
726
715
|
<button
|
|
727
716
|
class="cc-btn cc-btn--accept"
|
|
728
717
|
data-action="accept"
|
|
@@ -826,16 +815,21 @@
|
|
|
826
815
|
*/
|
|
827
816
|
getDescriptionHTML() {
|
|
828
817
|
const translations = this.config.translations || {};
|
|
829
|
-
|
|
830
|
-
|
|
818
|
+
if (!translations.description)
|
|
819
|
+
return '';
|
|
820
|
+
const description = escapeHtml(translations.description);
|
|
821
|
+
const customizeLabel = escapeHtml(translations.customize || 'Customize');
|
|
822
|
+
let html = description;
|
|
831
823
|
if (translations.privacyPolicyUrl) {
|
|
832
824
|
const safeUrl = sanitizeUrl(translations.privacyPolicyUrl);
|
|
833
825
|
if (safeUrl) {
|
|
834
826
|
const linkLabel = escapeHtml(translations.privacyPolicyLabel || 'Privacy Policy');
|
|
835
|
-
|
|
827
|
+
html += ` <a href="${safeUrl}" target="_blank" rel="noopener noreferrer">${linkLabel}</a>`;
|
|
836
828
|
}
|
|
837
829
|
}
|
|
838
|
-
|
|
830
|
+
// Inline customize link at end of description
|
|
831
|
+
html += ` <span class="cc-banner__customize" data-action="customize">${customizeLabel}</span>`;
|
|
832
|
+
return html;
|
|
839
833
|
}
|
|
840
834
|
}
|
|
841
835
|
|
|
@@ -1397,6 +1391,111 @@
|
|
|
1397
1391
|
}
|
|
1398
1392
|
}
|
|
1399
1393
|
|
|
1394
|
+
/**
|
|
1395
|
+
* Built-in translations for supported languages
|
|
1396
|
+
* Users can override any string via config.translations
|
|
1397
|
+
*/
|
|
1398
|
+
const en = {
|
|
1399
|
+
title: 'We use cookies',
|
|
1400
|
+
description: 'We use cookies to improve your experience on our site. You can choose which cookies you accept.',
|
|
1401
|
+
acceptAll: 'Accept all',
|
|
1402
|
+
rejectAll: 'Essentials only',
|
|
1403
|
+
customize: 'Manage preferences',
|
|
1404
|
+
savePreferences: 'Save preferences',
|
|
1405
|
+
essentialsOnly: 'Essentials only',
|
|
1406
|
+
preferencesTitle: 'Cookie Preferences',
|
|
1407
|
+
cookieSettings: 'Cookie settings',
|
|
1408
|
+
cookies: 'Cookies',
|
|
1409
|
+
privacyPolicyLabel: 'Privacy Policy',
|
|
1410
|
+
};
|
|
1411
|
+
const fr = {
|
|
1412
|
+
title: 'Nous utilisons des cookies',
|
|
1413
|
+
description: 'Ce site utilise des cookies pour améliorer votre expérience de navigation. Vous pouvez choisir les cookies que vous acceptez.',
|
|
1414
|
+
acceptAll: 'Tout accepter',
|
|
1415
|
+
rejectAll: 'Essentiels uniquement',
|
|
1416
|
+
customize: 'Gérer mes préférences',
|
|
1417
|
+
savePreferences: 'Enregistrer',
|
|
1418
|
+
essentialsOnly: 'Essentiels uniquement',
|
|
1419
|
+
preferencesTitle: 'Préférences des cookies',
|
|
1420
|
+
cookieSettings: 'Paramètres des cookies',
|
|
1421
|
+
cookies: 'Cookies',
|
|
1422
|
+
privacyPolicyLabel: 'Politique de confidentialité',
|
|
1423
|
+
};
|
|
1424
|
+
const de = {
|
|
1425
|
+
title: 'Wir verwenden Cookies',
|
|
1426
|
+
description: 'Diese Website verwendet Cookies, um Ihr Erlebnis zu verbessern. Sie können wählen, welche Cookies Sie akzeptieren.',
|
|
1427
|
+
acceptAll: 'Alle akzeptieren',
|
|
1428
|
+
rejectAll: 'Nur essenzielle',
|
|
1429
|
+
customize: 'Einstellungen verwalten',
|
|
1430
|
+
savePreferences: 'Speichern',
|
|
1431
|
+
essentialsOnly: 'Nur essenzielle',
|
|
1432
|
+
preferencesTitle: 'Cookie-Einstellungen',
|
|
1433
|
+
cookieSettings: 'Cookie-Einstellungen',
|
|
1434
|
+
cookies: 'Cookies',
|
|
1435
|
+
privacyPolicyLabel: 'Datenschutzrichtlinie',
|
|
1436
|
+
};
|
|
1437
|
+
const es = {
|
|
1438
|
+
title: 'Usamos cookies',
|
|
1439
|
+
description: 'Este sitio utiliza cookies para mejorar su experiencia. Puede elegir qué cookies acepta.',
|
|
1440
|
+
acceptAll: 'Aceptar todo',
|
|
1441
|
+
rejectAll: 'Solo esenciales',
|
|
1442
|
+
customize: 'Gestionar preferencias',
|
|
1443
|
+
savePreferences: 'Guardar',
|
|
1444
|
+
essentialsOnly: 'Solo esenciales',
|
|
1445
|
+
preferencesTitle: 'Preferencias de cookies',
|
|
1446
|
+
cookieSettings: 'Configuración de cookies',
|
|
1447
|
+
cookies: 'Cookies',
|
|
1448
|
+
privacyPolicyLabel: 'Política de privacidad',
|
|
1449
|
+
};
|
|
1450
|
+
const it = {
|
|
1451
|
+
title: 'Utilizziamo i cookie',
|
|
1452
|
+
description: 'Questo sito utilizza i cookie per migliorare la tua esperienza. Puoi scegliere quali cookie accettare.',
|
|
1453
|
+
acceptAll: 'Accetta tutti',
|
|
1454
|
+
rejectAll: 'Solo essenziali',
|
|
1455
|
+
customize: 'Gestisci preferenze',
|
|
1456
|
+
savePreferences: 'Salva',
|
|
1457
|
+
essentialsOnly: 'Solo essenziali',
|
|
1458
|
+
preferencesTitle: 'Preferenze cookie',
|
|
1459
|
+
cookieSettings: 'Impostazioni cookie',
|
|
1460
|
+
cookies: 'Cookie',
|
|
1461
|
+
privacyPolicyLabel: 'Informativa sulla privacy',
|
|
1462
|
+
};
|
|
1463
|
+
const nl = {
|
|
1464
|
+
title: 'Wij gebruiken cookies',
|
|
1465
|
+
description: 'Deze site maakt gebruik van cookies om uw ervaring te verbeteren. U kunt kiezen welke cookies u accepteert.',
|
|
1466
|
+
acceptAll: 'Alles accepteren',
|
|
1467
|
+
rejectAll: 'Alleen essentieel',
|
|
1468
|
+
customize: 'Voorkeuren beheren',
|
|
1469
|
+
savePreferences: 'Opslaan',
|
|
1470
|
+
essentialsOnly: 'Alleen essentieel',
|
|
1471
|
+
preferencesTitle: 'Cookie-voorkeuren',
|
|
1472
|
+
cookieSettings: 'Cookie-instellingen',
|
|
1473
|
+
cookies: 'Cookies',
|
|
1474
|
+
privacyPolicyLabel: 'Privacybeleid',
|
|
1475
|
+
};
|
|
1476
|
+
const pt = {
|
|
1477
|
+
title: 'Utilizamos cookies',
|
|
1478
|
+
description: 'Este site utiliza cookies para melhorar a sua experiência. Pode escolher quais cookies aceita.',
|
|
1479
|
+
acceptAll: 'Aceitar todos',
|
|
1480
|
+
rejectAll: 'Apenas essenciais',
|
|
1481
|
+
customize: 'Gerir preferências',
|
|
1482
|
+
savePreferences: 'Guardar',
|
|
1483
|
+
essentialsOnly: 'Apenas essenciais',
|
|
1484
|
+
preferencesTitle: 'Preferências de cookies',
|
|
1485
|
+
cookieSettings: 'Definições de cookies',
|
|
1486
|
+
cookies: 'Cookies',
|
|
1487
|
+
privacyPolicyLabel: 'Política de privacidade',
|
|
1488
|
+
};
|
|
1489
|
+
const builtInTranslations = {
|
|
1490
|
+
en,
|
|
1491
|
+
fr,
|
|
1492
|
+
de,
|
|
1493
|
+
es,
|
|
1494
|
+
it,
|
|
1495
|
+
nl,
|
|
1496
|
+
pt,
|
|
1497
|
+
};
|
|
1498
|
+
|
|
1400
1499
|
/**
|
|
1401
1500
|
* CookieConsent - Main orchestrator class
|
|
1402
1501
|
*/
|
|
@@ -1626,7 +1725,12 @@
|
|
|
1626
1725
|
* Validate and set default config values
|
|
1627
1726
|
*/
|
|
1628
1727
|
validateConfig(config) {
|
|
1629
|
-
|
|
1728
|
+
var _a;
|
|
1729
|
+
// Merge built-in language translations with user overrides
|
|
1730
|
+
const langKey = ((_a = config.language) === null || _a === void 0 ? void 0 : _a.toLowerCase().split('-')[0]) || 'en';
|
|
1731
|
+
const langDefaults = builtInTranslations[langKey] || builtInTranslations['en'];
|
|
1732
|
+
const mergedTranslations = Object.assign(Object.assign({}, langDefaults), config.translations);
|
|
1733
|
+
return Object.assign(Object.assign({}, config), { translations: mergedTranslations, categories: config.categories || {
|
|
1630
1734
|
necessary: {
|
|
1631
1735
|
enabled: true,
|
|
1632
1736
|
readOnly: true,
|