hr-design-system-handlebars 1.34.7 → 1.35.1

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/assets/brand/_default/conf/locatags.json +15 -1
  3. package/dist/assets/icons/icons/svgmap/suche-ds.svg +4 -0
  4. package/dist/assets/icons/icons/svgmap/twitter-ds.svg +1 -1
  5. package/dist/assets/icons/icons/svgmap.min.svg +1 -1
  6. package/dist/assets/index.css +127 -16
  7. package/dist/assets/js/components/dataPolicySettings/dataPolicySettingsDs.feature.js +285 -0
  8. package/dist/assets/js/components/externalService/datapolicyCookie.subfeature.js +41 -0
  9. package/dist/views/components/dataPolicySettings/data_policy_settings.hbs +99 -0
  10. package/dist/views/components/footer/page_footer_column.hbs +1 -3
  11. package/dist/views/components/footer/page_footer_content.hbs +1 -6
  12. package/dist/views/components/footer/page_footer_nav_link.hbs +1 -1
  13. package/dist/views/components/footer/page_footer_social_media.hbs +2 -2
  14. package/dist/views/components/forms/toggle_button.hbs +2 -0
  15. package/dist/views/components/site_header/navigation_search/quick_search_form.hbs +2 -8
  16. package/dist/views_static/components/dataPolicySettings/data_policy_settings.hbs +99 -0
  17. package/dist/views_static/components/footer/page_footer_column.hbs +1 -3
  18. package/dist/views_static/components/footer/page_footer_content.hbs +1 -6
  19. package/dist/views_static/components/footer/page_footer_nav_link.hbs +1 -1
  20. package/dist/views_static/components/footer/page_footer_social_media.hbs +2 -2
  21. package/dist/views_static/components/forms/toggle_button.hbs +2 -0
  22. package/dist/views_static/components/site_header/navigation_search/quick_search_form.hbs +2 -8
  23. package/package.json +1 -1
  24. package/src/assets/brand/_default/conf/locatags.json +15 -1
  25. package/src/assets/brand/hessenschau/conf/locatags.merged.json +13 -0
  26. package/src/assets/brand/hr/conf/locatags.merged.json +13 -0
  27. package/src/assets/brand/hr-bigband/conf/locatags.merged.json +13 -0
  28. package/src/assets/brand/hr-fernsehen/conf/locatags.merged.json +13 -0
  29. package/src/assets/brand/hr-inforadio/conf/locatags.merged.json +13 -0
  30. package/src/assets/brand/hr-rundfunkrat/conf/locatags.merged.json +13 -0
  31. package/src/assets/brand/hr-sinfonieorchester/conf/locatags.merged.json +13 -0
  32. package/src/assets/brand/hr-werbung/conf/locatags.merged.json +13 -0
  33. package/src/assets/brand/hr1/conf/locatags.merged.json +13 -0
  34. package/src/assets/brand/hr2/conf/locatags.merged.json +13 -0
  35. package/src/assets/brand/hr3/conf/locatags.merged.json +13 -0
  36. package/src/assets/brand/hr4/conf/locatags.merged.json +13 -0
  37. package/src/assets/brand/you-fm/conf/locatags.merged.json +13 -0
  38. package/src/assets/css/custom-utilities.css +16 -0
  39. package/src/assets/fixtures/footer/footer_hessenschau.json +42 -1
  40. package/src/assets/icons/icons/svgmap/suche-ds.svg +4 -0
  41. package/src/assets/icons/icons/svgmap/twitter-ds.svg +1 -1
  42. package/src/assets/icons/icons/svgmap.min.svg +1 -1
  43. package/src/assets/tailwind.css +2 -0
  44. package/src/stories/views/components/dataPolicySettings/dataPolicySettingsDs.feature.js +285 -0
  45. package/src/stories/views/components/dataPolicySettings/data_policy_settings.hbs +99 -0
  46. package/src/stories/views/components/externalService/datapolicyCookie.subfeature.js +41 -0
  47. package/src/stories/views/components/footer/fixtures/footer_hessenschau.json +1 -1
  48. package/src/stories/views/components/footer/page_footer_column.hbs +1 -3
  49. package/src/stories/views/components/footer/page_footer_content.hbs +1 -6
  50. package/src/stories/views/components/footer/page_footer_nav_link.hbs +1 -1
  51. package/src/stories/views/components/footer/page_footer_social_media.hbs +2 -2
  52. package/src/stories/views/components/forms/toggle_button.hbs +2 -0
  53. package/src/stories/views/components/site_header/navigation_search/quick_search_form.hbs +2 -8
  54. package/tailwind.config.js +5 -2
@@ -423,7 +423,7 @@ video {
423
423
  font-stretch: condensed;
424
424
  }
425
425
 
426
- .-translate-x-1\/2, .-translate-x-2\/4, .-translate-y-1\/2, .-rotate-45, .rotate-180, .rotate-45, .scale-50, .scale-y-100, .scale-y-90, .transform, .is-loading::after, .active\:scale-95 {
426
+ .-translate-x-1\/2, .-translate-x-2\/4, .-translate-y-1\/2, .-rotate-45, .rotate-180, .rotate-45, .scale-50, .scale-y-100, .scale-y-90, .transform, .is-loading::after, .hover\:scale-105, .active\:scale-95 {
427
427
  --tw-translate-x: 0;
428
428
  --tw-translate-y: 0;
429
429
  --tw-rotate: 0;
@@ -1057,6 +1057,9 @@ video {
1057
1057
  .left-2\/4 {
1058
1058
  left: 50%;
1059
1059
  }
1060
+ .left-\[4px\] {
1061
+ left: 4px;
1062
+ }
1060
1063
  .right-0 {
1061
1064
  right: 0px;
1062
1065
  }
@@ -1090,6 +1093,9 @@ video {
1090
1093
  .top-8 {
1091
1094
  top: 2rem;
1092
1095
  }
1096
+ .top-\[3px\] {
1097
+ top: 3px;
1098
+ }
1093
1099
  .top-\[41px\] {
1094
1100
  top: 41px;
1095
1101
  }
@@ -1117,6 +1123,9 @@ video {
1117
1123
  .z-30 {
1118
1124
  z-index: 30;
1119
1125
  }
1126
+ .z-300 {
1127
+ z-index: 300;
1128
+ }
1120
1129
  .order-1 {
1121
1130
  order: 1;
1122
1131
  }
@@ -1153,6 +1162,9 @@ video {
1153
1162
  .m-4 {
1154
1163
  margin: 1rem;
1155
1164
  }
1165
+ .m-auto {
1166
+ margin: auto;
1167
+ }
1156
1168
  .mx-0 {
1157
1169
  margin-left: 0px;
1158
1170
  margin-right: 0px;
@@ -1204,6 +1216,9 @@ video {
1204
1216
  .\!mt-4 {
1205
1217
  margin-top: 1rem !important;
1206
1218
  }
1219
+ .-mb-1 {
1220
+ margin-bottom: -0.25rem;
1221
+ }
1207
1222
  .-mb-2 {
1208
1223
  margin-bottom: -0.5rem;
1209
1224
  }
@@ -1357,6 +1372,9 @@ video {
1357
1372
  .inline {
1358
1373
  display: inline;
1359
1374
  }
1375
+ .\!flex {
1376
+ display: flex !important;
1377
+ }
1360
1378
  .flex {
1361
1379
  display: flex;
1362
1380
  }
@@ -1420,6 +1438,12 @@ video {
1420
1438
  .h-8 {
1421
1439
  height: 2rem;
1422
1440
  }
1441
+ .h-\[19px\] {
1442
+ height: 19px;
1443
+ }
1444
+ .h-\[25px\] {
1445
+ height: 25px;
1446
+ }
1423
1447
  .h-\[9px\] {
1424
1448
  height: 9px;
1425
1449
  }
@@ -1520,6 +1544,12 @@ video {
1520
1544
  .w-\[1600px\] {
1521
1545
  width: 1600px;
1522
1546
  }
1547
+ .w-\[19px\] {
1548
+ width: 19px;
1549
+ }
1550
+ .w-\[50px\] {
1551
+ width: 50px;
1552
+ }
1523
1553
  .w-\[9px\] {
1524
1554
  width: 9px;
1525
1555
  }
@@ -1564,6 +1594,9 @@ video {
1564
1594
  .max-w-3\/4 {
1565
1595
  max-width: 75%;
1566
1596
  }
1597
+ .max-w-\[480px\] {
1598
+ max-width: 480px;
1599
+ }
1567
1600
  .max-w-full {
1568
1601
  max-width: 100%;
1569
1602
  }
@@ -1808,6 +1841,9 @@ video {
1808
1841
  .overflow-visible {
1809
1842
  overflow: visible;
1810
1843
  }
1844
+ .overflow-scroll {
1845
+ overflow: scroll;
1846
+ }
1811
1847
  .overflow-x-auto {
1812
1848
  overflow-x: auto;
1813
1849
  }
@@ -1847,6 +1883,9 @@ video {
1847
1883
  .rounded-2xl {
1848
1884
  border-radius: 1rem;
1849
1885
  }
1886
+ .rounded-3xl {
1887
+ border-radius: 1.5rem;
1888
+ }
1850
1889
  .rounded-full {
1851
1890
  border-radius: 9999px;
1852
1891
  }
@@ -1922,6 +1961,10 @@ video {
1922
1961
  .border-none {
1923
1962
  border-style: none;
1924
1963
  }
1964
+ .border-\[\#e3e3e3\] {
1965
+ --tw-border-opacity: 1;
1966
+ border-color: rgba(227, 227, 227, var(--tw-border-opacity));
1967
+ }
1925
1968
  .border-brandnavigation-border-color {
1926
1969
  border-color: #005293;
1927
1970
  border-color: var(--color-brandnavigation-border-color);
@@ -1999,6 +2042,17 @@ video {
1999
2042
  --tw-bg-opacity: 1 !important;
2000
2043
  background-color: rgba(255, 255, 255, var(--tw-bg-opacity)) !important;
2001
2044
  }
2045
+ .bg-\[\#d8e9f6\] {
2046
+ --tw-bg-opacity: 1;
2047
+ background-color: rgba(216, 233, 246, var(--tw-bg-opacity));
2048
+ }
2049
+ .bg-\[\#e3e3e3\] {
2050
+ --tw-bg-opacity: 1;
2051
+ background-color: rgba(227, 227, 227, var(--tw-bg-opacity));
2052
+ }
2053
+ .bg-black\/\[0\.5\] {
2054
+ background-color: rgba(0, 0, 0, 0.5);
2055
+ }
2002
2056
  .bg-blue-200 {
2003
2057
  --tw-bg-opacity: 1;
2004
2058
  background-color: rgba(191, 219, 254, var(--tw-bg-opacity));
@@ -2151,6 +2205,10 @@ video {
2151
2205
  background-color: #d34600;
2152
2206
  background-color: var(--color-ticker-teaser-timeline-score);
2153
2207
  }
2208
+ .bg-toggle-default {
2209
+ background-color: #797979;
2210
+ background-color: var(--color-toggle-default);
2211
+ }
2154
2212
  .bg-top-topic-background {
2155
2213
  background-color: #d3e2f4;
2156
2214
  background-color: var(--color-top-topic-background);
@@ -2246,6 +2304,9 @@ video {
2246
2304
  .p-5 {
2247
2305
  padding: 1.25rem;
2248
2306
  }
2307
+ .p-6 {
2308
+ padding: 1.5rem;
2309
+ }
2249
2310
  .p-8 {
2250
2311
  padding: 2rem;
2251
2312
  }
@@ -2289,6 +2350,10 @@ video {
2289
2350
  padding-left: 1.25rem;
2290
2351
  padding-right: 1.25rem;
2291
2352
  }
2353
+ .px-6 {
2354
+ padding-left: 1.5rem;
2355
+ padding-right: 1.5rem;
2356
+ }
2292
2357
  .px-8 {
2293
2358
  padding-left: 2rem;
2294
2359
  padding-right: 2rem;
@@ -2471,6 +2536,9 @@ video {
2471
2536
  .align-top {
2472
2537
  vertical-align: top;
2473
2538
  }
2539
+ .align-text-top {
2540
+ vertical-align: text-top;
2541
+ }
2474
2542
  .font-copy {
2475
2543
  font-family: DIN, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, "Noto Sans", sans-serif;
2476
2544
  }
@@ -2945,7 +3013,7 @@ video {
2945
3013
  border-bottom-color: var(--color-secondary-ds);
2946
3014
  }
2947
3015
  .counter-reset {
2948
- counter-reset: cnt1690892032895;
3016
+ counter-reset: cnt1690902834655;
2949
3017
  }
2950
3018
  .hyphens-auto {
2951
3019
  -webkit-hyphens: auto;
@@ -3180,7 +3248,7 @@ video {
3180
3248
  --tw-ring-color: rgba(255, 255, 255, 0.5);
3181
3249
  }
3182
3250
  .-ordered {
3183
- counter-increment: cnt1690892032895 1;
3251
+ counter-increment: cnt1690902834655 1;
3184
3252
  }
3185
3253
  .-ordered::before {
3186
3254
  position: absolute;
@@ -3196,7 +3264,32 @@ video {
3196
3264
  letter-spacing: .0125em;
3197
3265
  --tw-text-opacity: 1;
3198
3266
  color: rgba(0, 0, 0, var(--tw-text-opacity));
3199
- content: counter(cnt1690892032895);
3267
+ content: counter(cnt1690902834655);
3268
+ }
3269
+ /*! ****************************/
3270
+ /*! DataPolicy stuff */
3271
+ /*! ****************************/
3272
+ .toggleSwitch-checkbox:checked+.toggleSwitch-label::after {
3273
+ left: 27px;
3274
+ }
3275
+ .toggleSwitch-checkbox:checked+.toggleSwitch-label {
3276
+ background-color: #2c7e13;
3277
+ background-color: var(--color-toggle-confirmation);
3278
+ }
3279
+ .toggleSwitch-label::after {
3280
+ position: absolute;
3281
+ top: 2px;
3282
+ left: 2px;
3283
+ height: 21px;
3284
+ width: 21px;
3285
+ border-radius: 1rem;
3286
+ --tw-bg-opacity: 1;
3287
+ background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
3288
+ transition-property: all;
3289
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
3290
+ transition-duration: 300ms;
3291
+ --tw-content: '';
3292
+ content: var(--tw-content);
3200
3293
  }
3201
3294
  /*! ****************************/
3202
3295
  /*! text-shadow */
@@ -3391,6 +3484,8 @@ video {
3391
3484
  --search-border-color-desktop: transparent;
3392
3485
  --search-border-color-mobile: var(--color-primary-ds);
3393
3486
  --color-ticker-teaser-headline-underline : #ffffff;
3487
+ --color-toggle-confirmation: #2c7e13;
3488
+ --color-toggle-default: #797979;
3394
3489
  }
3395
3490
  [data-theme='hessenschau'] {
3396
3491
  --color-primary-ds: #005293;
@@ -4534,6 +4629,11 @@ video {
4534
4629
  .empty\:hidden:empty {
4535
4630
  display: none;
4536
4631
  }
4632
+ .hover\:scale-105:hover {
4633
+ --tw-scale-x: 1.05;
4634
+ --tw-scale-y: 1.05;
4635
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
4636
+ }
4537
4637
  .hover\:border-button:hover {
4538
4638
  border-color: var(--color-button);
4539
4639
  }
@@ -4572,6 +4672,10 @@ video {
4572
4672
  .hover\:text-button--dark:hover {
4573
4673
  color: var(--color-button--dark);
4574
4674
  }
4675
+ .hover\:text-secondary:hover {
4676
+ color: #606060;
4677
+ color: var(--color-secondary-ds);
4678
+ }
4575
4679
  .hover\:text-toplineColor:hover {
4576
4680
  color: #006dc1;
4577
4681
  color: var(--color-topline);
@@ -5137,10 +5241,6 @@ video {
5137
5241
  margin-bottom: 2rem;
5138
5242
  }
5139
5243
 
5140
- .md\:ml-1 {
5141
- margin-left: 0.25rem;
5142
- }
5143
-
5144
5244
  .md\:ml-4 {
5145
5245
  margin-left: 1rem;
5146
5246
  }
@@ -5149,10 +5249,6 @@ video {
5149
5249
  margin-top: 0px;
5150
5250
  }
5151
5251
 
5152
- .md\:mt-0\.5 {
5153
- margin-top: 0.125rem;
5154
- }
5155
-
5156
5252
  .md\:mt-2 {
5157
5253
  margin-top: 0.5rem;
5158
5254
  }
@@ -5379,12 +5475,21 @@ video {
5379
5475
  background-color: transparent;
5380
5476
  }
5381
5477
 
5478
+ .md\:bg-white {
5479
+ --tw-bg-opacity: 1;
5480
+ background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
5481
+ }
5482
+
5382
5483
  .md\:from-white {
5383
5484
  --tw-gradient-from: #ffffff var(--tw-gradient-from-position);
5384
5485
  --tw-gradient-to: rgba(255, 255, 255, 0) var(--tw-gradient-to-position);
5385
5486
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
5386
5487
  }
5387
5488
 
5489
+ .md\:fill-current {
5490
+ fill: currentColor;
5491
+ }
5492
+
5388
5493
  .md\:p-10 {
5389
5494
  padding: 2.5rem;
5390
5495
  }
@@ -5499,6 +5604,16 @@ video {
5499
5604
  line-height: 1rem;
5500
5605
  }
5501
5606
 
5607
+ .md\:text-footer-text {
5608
+ color: white;
5609
+ color: var(--color-footer-text);
5610
+ }
5611
+
5612
+ .md\:text-secondary {
5613
+ color: #606060;
5614
+ color: var(--color-secondary-ds);
5615
+ }
5616
+
5502
5617
  .md\:decoration-2 {
5503
5618
  text-decoration-thickness: 2px;
5504
5619
  }
@@ -5937,10 +6052,6 @@ video {
5937
6052
  background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
5938
6053
  }
5939
6054
 
5940
- .lg\:fill-current {
5941
- fill: currentColor;
5942
- }
5943
-
5944
6055
  .lg\:p-0 {
5945
6056
  padding: 0px;
5946
6057
  }
@@ -0,0 +1,285 @@
1
+ import DatapolicyCookie from 'components/externalService/datapolicyCookie.subfeature'
2
+ import TrackingCookie from 'components/externalService/trackingCookie.subfeature'
3
+ import { fireEvent, getJSONCookie, hr$, setJSONCookie, listen } from 'hrQuery'
4
+ import { uxAction } from 'base/tracking/atiHelper.subfeature'
5
+
6
+ const DataPolicySettings = function (context) {
7
+ const { options } = context,
8
+ { element: rootElement } = context,
9
+ settingsButtons = hr$('.js-data-policy-settings-button', document),
10
+ overlay = hr$('.js-data-policy-settings-overlay', rootElement)[0],
11
+ closeButton = hr$('.js-data-policy-settings-close-button', rootElement)[0],
12
+ bodyElement = document.getElementsByTagName('html')[0],
13
+ datapolicyCookie = new DatapolicyCookie(),
14
+ trackingCookie = new TrackingCookie(),
15
+ toggleSwitches = hr$('.js-toggleSwitch-checkbox', rootElement),
16
+ toggleSwitchesExternal = hr$('.js-toggleSwitch-external', rootElement),
17
+ toggleSwitchesTracking = hr$('.js-toggleSwitch-tracking', rootElement),
18
+ toggleAllSwitch = hr$('.js-toggleSwitch-checkbox-all', rootElement)[0],
19
+ providerTitle = hr$('.js-providerTitle', rootElement)[0],
20
+ trackingCookieLifetime = 1000 * 60 * 60 * 24 * 365 * 10
21
+ let atiSecondLevelId = window.xtn2,
22
+ isWebview = window.parent.document.documentElement.classList.contains('webview'),
23
+ //isWebview = window.location.href.match(/(app)(\.[a-zA-Z]*)(\.de)/i), //App URL ...app.hr.de
24
+ //isWebview = window.location.href.match(/(app)/i), //App URL ...app.hr.de
25
+ cookie = {}
26
+
27
+ console.log("gelaaaadeeeeeeeen")
28
+ ///////////////////
29
+ // OVERLAY START //
30
+ ///////////////////
31
+ const showSettingsButton = function () {
32
+ let settingsButton = document.getElementById('globalSettingsButton')
33
+ if (isWebview) {
34
+ console.log('Button Anzeige steuern')
35
+ readAppSettingsButtonCookie()
36
+ console.log(cookie['hidePrivacySettingsButton'])
37
+ if (cookie['hidePrivacySettingsButton'] === true) {
38
+ settingsButton.style.display = 'none'
39
+ } else {
40
+ settingsButton.style.display = 'inline-flex'
41
+ }
42
+ } else {
43
+ settingsButton.style.display = 'inline-flex'
44
+ console.log('Button immer anzeigen, weil nicht App')
45
+ }
46
+ }
47
+ const readAppSettingsButtonCookie = function () {
48
+ cookie = getJSONCookie('appSettings') || {}
49
+ }
50
+ const writeAppSettingsButtonCookie = function () {
51
+ cookie = 'true'
52
+ setJSONCookie('hsAppSettingsButton', cookie, trackingCookieLifetime)
53
+ }
54
+ const initializeSettingsButtons = function () {
55
+ for (let i = 0; i < settingsButtons.length; ++i) {
56
+ if (settingsButtons.length - i == 1) {
57
+ listen(
58
+ 'click',
59
+ function () {
60
+ openDialog('Footer')
61
+ atiSecondLevelId = 1
62
+ },
63
+ settingsButtons[i]
64
+ )
65
+ } else {
66
+ if (!settingsButtons[i].getAttribute('listener')) {
67
+ listen(
68
+ 'click',
69
+ function () {
70
+ openDialog('DSGVO-Overlay')
71
+ },
72
+ settingsButtons[i]
73
+ )
74
+ settingsButtons[i].setAttribute('listener', 'true')
75
+ }
76
+ }
77
+ }
78
+ }
79
+ const openDialog = function (settingsButtonLocation) {
80
+ overlay.classList.add('!flex')
81
+ bodyElement.classList.add('optionOpen')
82
+ uxAction('Einstellungsdialog geöffnet - ' + settingsButtonLocation, atiSecondLevelId)
83
+ }
84
+ const closeDialogeOnOverlay = function (e) {
85
+ if (e.target !== this) return
86
+ closeDialog()
87
+ }
88
+ const closeDialog = function () {
89
+ overlay.classList.remove('!flex')
90
+ bodyElement.classList.remove('optionOpen')
91
+ }
92
+ const shouldDialogBeOpendOnLoad = function () {
93
+ const urlParam = getUrlVars()['openDialog']
94
+ if (typeof urlParam !== 'undefined' && urlParam === 'true') {
95
+ openDialog('Datenschutzerklärung')
96
+ }
97
+ }
98
+ const getUrlVars = function () {
99
+ let vars = {}
100
+ const parts = window.location.href.replace(
101
+ /[?&]+([^=&]+)=([^&]*)/gi,
102
+ function (m, key, value) {
103
+ vars[key] = value
104
+ }
105
+ )
106
+ return vars
107
+ }
108
+ ///////////////////
109
+ // OVERLAY END ////
110
+ ///////////////////
111
+
112
+ /////////////////////
113
+ // TOGGLES START ////
114
+ /////////////////////
115
+
116
+ const initializeToggleStateExternal = function () {
117
+ for (let i = 0; i < toggleSwitchesExternal.length; ++i) {
118
+ initializeEventListenerForService(i)
119
+
120
+ setListenerForService(toggleSwitchesExternal[i])
121
+
122
+ if (isCookieSetForService(toggleSwitchesExternal[i].id)) {
123
+ toggleSwitchesExternal[i].checked = true
124
+ } else if (
125
+ !isCookieExistForService(toggleSwitchesExternal[i].id) &&
126
+ toggleSwitchesExternal[i].getAttribute('initial') == 'checked'
127
+ ) {
128
+ toggleSwitchesExternal[i].checked = true
129
+ setCookieForService(toggleSwitchesExternal[i])
130
+ }
131
+ }
132
+
133
+ toggleAllSwitch.checked = allTogglesChecked()
134
+ changeProviderTitle()
135
+ }
136
+ const initializeToggleStateTracking = function () {
137
+ for (let i = 0; i < toggleSwitchesTracking.length; ++i) {
138
+ initializeEventListenerForTracking(i)
139
+
140
+ setListenerForTracking(toggleSwitchesTracking[i])
141
+
142
+ if (isCookieSetForTracking(toggleSwitchesTracking[i].id)) {
143
+ toggleSwitchesTracking[i].checked = true
144
+ }
145
+
146
+ if (
147
+ !isCookieExistForTracking(toggleSwitchesTracking[i].id) &&
148
+ toggleSwitchesTracking[i].getAttribute('initial') == 'checked'
149
+ ) {
150
+ toggleSwitchesTracking[i].checked = true
151
+ setCookieForTracking(toggleSwitchesTracking[i])
152
+ }
153
+ }
154
+ }
155
+ const initializeEventListenerForService = function (serviceId) {
156
+ listen(
157
+ 'hr:externalService-activate-' + toggleSwitchesExternal[serviceId].id,
158
+ function () {
159
+ toggleSwitchesExternal[serviceId].checked = true
160
+ },
161
+ document
162
+ )
163
+ }
164
+ const initializeEventListenerForTracking = function (serviceId) {
165
+ listen(
166
+ 'hr:trackingService-activate-' + toggleSwitchesTracking[serviceId].id,
167
+ function () {
168
+ toggleSwitchesTracking[serviceId].checked = true
169
+ },
170
+ document
171
+ )
172
+ }
173
+ const setListenerForService = function (element) {
174
+ listen(
175
+ 'change',
176
+ function () {
177
+ setCookieForService(element)
178
+ toggleAllSwitch.checked = allTogglesChecked()
179
+ changeProviderTitle()
180
+ },
181
+ element
182
+ )
183
+ }
184
+ const setListenerForTracking = function (element) {
185
+ listen(
186
+ 'change',
187
+ function () {
188
+ setCookieForTracking(element)
189
+ },
190
+ element
191
+ )
192
+ }
193
+ const setCookieForService = function (element) {
194
+ datapolicyCookie.setCookieForExternalService(element.id, element.checked)
195
+ if (element.checked) {
196
+ fireEvent('hr:externalService-activate-' + element.id)
197
+ } else {
198
+ console.log('fireEvent: hr:externalService-deactivate-' + element.id)
199
+ fireEvent('hr:externalService-deactivate-' + element.id)
200
+ }
201
+ }
202
+ const setCookieForTracking = function (element) {
203
+ trackingCookie.setCookieForTracking(element.id, element.checked)
204
+ if (element.checked) {
205
+ fireEvent('hr:trackingService-activate-' + element.id)
206
+ } else {
207
+ fireEvent('hr:trackingService-deactivate-' + element.id)
208
+ }
209
+ }
210
+ const toggleAll = function () {
211
+ console.log('Toggle All' + toggleAllSwitch.checked)
212
+
213
+ for (let i = 0; i < toggleSwitchesExternal.length; ++i) {
214
+ if (toggleSwitchesExternal[i].checked != toggleAllSwitch.checked) {
215
+ toggleSwitchesExternal[i].checked = toggleAllSwitch.checked
216
+ setCookieForService(toggleSwitchesExternal[i])
217
+ }
218
+ }
219
+
220
+ changeProviderTitle()
221
+ }
222
+ const allTogglesChecked = function () {
223
+ let allChecked
224
+
225
+ for (let i = 0; i < toggleSwitchesExternal.length; ++i) {
226
+ if (toggleSwitchesExternal[i].checked) {
227
+ allChecked = true
228
+ } else {
229
+ allChecked = false
230
+
231
+ break
232
+ }
233
+ }
234
+ return allChecked
235
+ }
236
+ const changeProviderTitle = function () {
237
+ if (toggleAllSwitch.checked == true) {
238
+ providerTitle.textContent = 'Alle Anbieter deaktivieren'
239
+ } else {
240
+ providerTitle.textContent = 'Alle Anbieter aktivieren'
241
+ }
242
+ }
243
+ const isCookieSetForService = function (externalService) {
244
+ return datapolicyCookie.isDatapolicyAccepted(externalService)
245
+ }
246
+ const isCookieSetForTracking = function (trackingService) {
247
+ return trackingCookie.isTrackingAccepted(trackingService)
248
+ }
249
+ const isCookieExistForService = function (externalService) {
250
+ return datapolicyCookie.isDatapolicyExistent(externalService)
251
+ }
252
+ const isCookieExistForTracking = function (trackingService) {
253
+ return trackingCookie.isTrackingCookieExistent(trackingService)
254
+ }
255
+ const initializeEventListeners = function () {
256
+ listen('hr:settingsButtonInsideDataPolicyBoxClicked', function () {
257
+ openDialog('DSGVO-Overlay')
258
+ })
259
+ listen('change', toggleAll, toggleAllSwitch)
260
+ listen('click', closeDialog, closeButton)
261
+ listen('click', closeDialogeOnOverlay, overlay)
262
+ }
263
+ // steuert die Darstellung des Buttons für die hs-App ///
264
+ showSettingsButton()
265
+ //// 1. Alle Settings Buttons initialisieren ////
266
+ initializeSettingsButtons()
267
+
268
+ //// 2. Toggle States aller Switches setzen ////
269
+ //// Cookies setzen usw. ////
270
+ initializeToggleStateExternal()
271
+
272
+ initializeToggleStateTracking()
273
+
274
+ //// 3. Event Listener initialisieren ////
275
+ initializeEventListeners()
276
+
277
+ shouldDialogBeOpendOnLoad()
278
+
279
+ //// 4. Funktion extern aufrufbar machen ////
280
+ return {
281
+ initializeSettingsButtons: initializeSettingsButtons,
282
+ }
283
+ }
284
+
285
+ export default DataPolicySettings
@@ -0,0 +1,41 @@
1
+ import { getJSONCookie, setJSONCookie } from 'hrQuery'
2
+
3
+ const DataPolicyCookie = function () {
4
+ const datapolicyCookieLifetime = 1000 * 60 * 60 * 24 * 365 * 10 /* 10 years */
5
+ let cookie = {}
6
+
7
+ const setCookieForExternalService = function (externalService, state) {
8
+ if (state == null) {
9
+ state = true
10
+ }
11
+ console.log('Schreibe Cookie: ' + externalService + ': ' + state)
12
+ readDatapolicyCookie()
13
+ cookie[externalService] = state
14
+ writeCookie()
15
+ }
16
+
17
+ const isDatapolicyAccepted = function (externalService) {
18
+ readDatapolicyCookie()
19
+ return cookie[externalService] === true
20
+ }
21
+
22
+ const writeCookie = function () {
23
+ setJSONCookie('datapolicy', cookie, datapolicyCookieLifetime)
24
+ }
25
+
26
+ const readDatapolicyCookie = function () {
27
+ cookie = getJSONCookie('datapolicy') || {}
28
+ }
29
+
30
+ const isDatapolicyExistent = function (externalService) {
31
+ readDatapolicyCookie()
32
+ return cookie.hasOwnProperty(externalService)
33
+ }
34
+ return {
35
+ setCookieForExternalService: setCookieForExternalService,
36
+ isDatapolicyAccepted: isDatapolicyAccepted,
37
+ isDatapolicyExistent: isDatapolicyExistent,
38
+ }
39
+ }
40
+
41
+ export default DataPolicyCookie