hr-design-system-handlebars 1.125.0 → 1.125.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # v1.125.1 (Wed Dec 17 2025)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - Dpe 3046 b - added cookie and some top button fixes [#1331](https://github.com/mumprod/hr-design-system-handlebars/pull/1331) ([@vascoeduardo](https://github.com/vascoeduardo) [@eduardo-hr](https://github.com/eduardo-hr))
6
+
7
+ #### Authors: 2
8
+
9
+ - [@eduardo-hr](https://github.com/eduardo-hr)
10
+ - Vasco ([@vascoeduardo](https://github.com/vascoeduardo))
11
+
12
+ ---
13
+
1
14
  # v1.125.0 (Tue Dec 16 2025)
2
15
 
3
16
  #### 🚀 Enhancement
@@ -1741,6 +1741,9 @@ article #commentList {
1741
1741
  .h-2 {
1742
1742
  height: 0.5rem;
1743
1743
  }
1744
+ .h-22 {
1745
+ height: 5.5rem;
1746
+ }
1744
1747
  .h-3 {
1745
1748
  height: 0.75rem;
1746
1749
  }
@@ -3906,7 +3909,7 @@ article #commentList {
3906
3909
  border-bottom-color: var(--color-secondary-ds);
3907
3910
  }
3908
3911
  .counter-reset {
3909
- counter-reset: cnt1765891425916;
3912
+ counter-reset: cnt1765981088136;
3910
3913
  }
3911
3914
  .animate-delay-100 {
3912
3915
  --tw-animate-delay: 100ms;
@@ -4367,7 +4370,7 @@ html { scroll-behavior: smooth; }
4367
4370
  --tw-ring-color: rgba(255, 255, 255, 0.5);
4368
4371
  }
4369
4372
  .-ordered {
4370
- counter-increment: cnt1765891425916 1;
4373
+ counter-increment: cnt1765981088136 1;
4371
4374
  }
4372
4375
  .-ordered::before {
4373
4376
  position: absolute;
@@ -4385,7 +4388,7 @@ html { scroll-behavior: smooth; }
4385
4388
  --tw-text-opacity: 1;
4386
4389
  color: rgba(0, 0, 0, 1);
4387
4390
  color: rgba(0, 0, 0, var(--tw-text-opacity));
4388
- content: counter(cnt1765891425916);
4391
+ content: counter(cnt1765981088136);
4389
4392
  }
4390
4393
  /*! ****************************/
4391
4394
  /*! DataPolicy stuff */
@@ -46,6 +46,7 @@ Alpine.store('serviceID', {
46
46
  Alpine.store('navIsVisible', true)
47
47
  Alpine.store('subNavIsVisible', false)
48
48
  Alpine.store('footerIsVisible', false)
49
+ Alpine.store('appBannerIsVisible', false)
49
50
  Alpine.store('sectionNavIsVisible', false)
50
51
  Alpine.store('sharingIsVisible', false)
51
52
  Alpine.store('sharingIsOpen', {
@@ -1,4 +1,5 @@
1
1
  import { uxAction } from 'base/tracking/pianoHelper.subfeature'
2
+ import { getJSONCookie, setJSONCookie } from 'hrQuery'
2
3
 
3
4
  export default function appBanner() {
4
5
  return {
@@ -6,24 +7,37 @@ export default function appBanner() {
6
7
  deferredPrompt: null,
7
8
  isAndroid: /Android/i.test(navigator.userAgent),
8
9
  packageId: "de.hr.hessenschau",
10
+ cookie: {},
11
+ cookieLifetime: 1000 * 60 * 60 * 24 * 30,
9
12
  init: function () {
10
-
11
- if(this.isAndroid){
13
+ this.readTrackingCookie()
14
+ if(this.cookie["closed"] !== true){
15
+ if(this.isAndroid){
16
+ this.showBanner = true;
17
+ this.$store.appBannerIsVisible = true;
18
+ }
19
+ }
20
+ if(window.IS_STORYBOOK){
12
21
  this.showBanner = true;
22
+ this.$store.appBannerIsVisible = true;
13
23
  }
14
24
 
15
- if(window.IS_STORYBOOK){ this.showBanner = true;}
16
25
  },
17
26
  installClickHandler: function(){
18
27
  this.openPlayStore()
28
+ this.writeCookie()
19
29
  this.showBanner = false
30
+ this.$store.appBannerIsVisible = false
20
31
  },
21
32
  closeClickHandler: function(){
22
33
  uxAction('appBanner::bannerClosed');
23
34
  this.showBanner = false
35
+ this.$store.appBannerIsVisible = false
36
+ this.writeCookie()
24
37
  },
25
38
  openPlayStore: function() {
26
39
  let fallbackTriggered = false;
40
+ uxAction('appBanner::playStoreOpened');
27
41
 
28
42
  const fallback = () => {
29
43
  if (fallbackTriggered) return;
@@ -45,6 +59,13 @@ export default function appBanner() {
45
59
  `#Intent;scheme=market;package=com.android.vending;end`;
46
60
 
47
61
  setTimeout(fallback, 700);
62
+ },
63
+ writeCookie: function() {
64
+ this.cookie["closed"] = true
65
+ setJSONCookie('appBanner', this.cookie, this.cookieLifetime)
66
+ },
67
+ readTrackingCookie: function() {
68
+ this.cookie = getJSONCookie('appBanner') || {}
48
69
  }
49
70
  }
50
71
  }
@@ -14,9 +14,13 @@ export default function nativeAppBanner() {
14
14
  // Update UI notify the user they can add to home screen
15
15
  if(this.isAndroid){
16
16
  this.showBanner = true;
17
+ this.$store.appBannerIsVisible = true;
17
18
  }
18
19
  });
19
- if(window.IS_STORYBOOK){ this.showBanner = true;}
20
+ if(window.IS_STORYBOOK){
21
+ this.showBanner = true;
22
+ this.$store.appBannerIsVisible = true;
23
+ }
20
24
  },
21
25
  installClickHandler: function(){
22
26
  if(this.deferredPrompt){
@@ -35,10 +39,12 @@ export default function nativeAppBanner() {
35
39
  });
36
40
  }
37
41
  this.showBanner = false
42
+ this.$store.appBannerIsVisible = false
38
43
  },
39
44
  closeClickHandler: function(){
40
45
  uxAction('nativeAppBanner::bannerClosed');
41
46
  this.showBanner = false
47
+ this.$store.appBannerIsVisible = false
42
48
  }
43
49
  }
44
50
  }
@@ -1,6 +1,6 @@
1
1
  <div
2
2
  x-data="appBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
- id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 z-300 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
4
  <div class="flex flex-row items-center gap-4 grow">
5
5
  <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
6
  <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
@@ -1,6 +1,6 @@
1
1
  <div
2
2
  x-data="nativeAppBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
- id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 z-300 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
4
  <div class="flex flex-row items-center gap-4 grow">
5
5
  <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
6
  <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
@@ -18,6 +18,7 @@
18
18
  </head>
19
19
 
20
20
  <body itemscope itemtype="http://schema.org/WebPage">
21
+ {{~> components/appBanner/appBanner ~}}
21
22
  <div class="js-pageSwap">
22
23
 
23
24
  {{> components/site_header/header }}
@@ -1,7 +1,7 @@
1
1
  <div class="h-8" x-data="{ isVisible: false }">
2
2
  <div class="grid grid-page z-100" :class="{ 'fixed bottom-feature-box-height left-0 w-full': !$store.footerIsVisible }">
3
3
  <div class="flex justify-between h-0 col-full sm:col-main"
4
- :class="{ 'bg-white h-8': $store.footerIsVisible }"
4
+ :class="{ 'bg-white h-8': $store.footerIsVisible, 'h-22': $store.appBannerIsVisible && !$store.footerIsVisible}"
5
5
  x-show="!$store.sharingIsVisible && isVisible"
6
6
  x-transition:enter="transition ease-[cubic-bezier(0.68,-0.3,0.32,1)] duration-500 transform order-first"
7
7
  x-transition:enter-start="opacity-0 translate-y-8"
@@ -1,6 +1,6 @@
1
1
  <div
2
2
  x-data="appBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
- id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 z-300 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
4
  <div class="flex flex-row items-center gap-4 grow">
5
5
  <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
6
  <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
@@ -1,6 +1,6 @@
1
1
  <div
2
2
  x-data="nativeAppBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
- id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 z-300 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
4
  <div class="flex flex-row items-center gap-4 grow">
5
5
  <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
6
  <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
@@ -18,6 +18,7 @@
18
18
  </head>
19
19
 
20
20
  <body itemscope itemtype="http://schema.org/WebPage">
21
+ {{~> components/appBanner/appBanner ~}}
21
22
  <div class="js-pageSwap">
22
23
 
23
24
  {{> components/site_header/header }}
@@ -1,7 +1,7 @@
1
1
  <div class="h-8" x-data="{ isVisible: false }">
2
2
  <div class="grid grid-page z-100" :class="{ 'fixed bottom-feature-box-height left-0 w-full': !$store.footerIsVisible }">
3
3
  <div class="flex justify-between h-0 col-full sm:col-main"
4
- :class="{ 'bg-white h-8': $store.footerIsVisible }"
4
+ :class="{ 'bg-white h-8': $store.footerIsVisible, 'h-22': $store.appBannerIsVisible && !$store.footerIsVisible}"
5
5
  x-show="!$store.sharingIsVisible && isVisible"
6
6
  x-transition:enter="transition ease-[cubic-bezier(0.68,-0.3,0.32,1)] duration-500 transform order-first"
7
7
  x-transition:enter-start="opacity-0 translate-y-8"
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "repository": "https://github.com/szuelch/hr-design-system-handlebars",
9
- "version": "1.125.0",
9
+ "version": "1.125.1",
10
10
  "scripts": {
11
11
  "test": "echo \"Error: no test specified\" && exit 1",
12
12
  "storybook": "storybook dev -p 6006 public",
@@ -46,6 +46,7 @@ Alpine.store('serviceID', {
46
46
  Alpine.store('navIsVisible', true)
47
47
  Alpine.store('subNavIsVisible', false)
48
48
  Alpine.store('footerIsVisible', false)
49
+ Alpine.store('appBannerIsVisible', false)
49
50
  Alpine.store('sectionNavIsVisible', false)
50
51
  Alpine.store('sharingIsVisible', false)
51
52
  Alpine.store('sharingIsOpen', {
@@ -1,4 +1,5 @@
1
1
  import { uxAction } from 'base/tracking/pianoHelper.subfeature'
2
+ import { getJSONCookie, setJSONCookie } from 'hrQuery'
2
3
 
3
4
  export default function appBanner() {
4
5
  return {
@@ -6,24 +7,37 @@ export default function appBanner() {
6
7
  deferredPrompt: null,
7
8
  isAndroid: /Android/i.test(navigator.userAgent),
8
9
  packageId: "de.hr.hessenschau",
10
+ cookie: {},
11
+ cookieLifetime: 1000 * 60 * 60 * 24 * 30,
9
12
  init: function () {
10
-
11
- if(this.isAndroid){
13
+ this.readTrackingCookie()
14
+ if(this.cookie["closed"] !== true){
15
+ if(this.isAndroid){
16
+ this.showBanner = true;
17
+ this.$store.appBannerIsVisible = true;
18
+ }
19
+ }
20
+ if(window.IS_STORYBOOK){
12
21
  this.showBanner = true;
22
+ this.$store.appBannerIsVisible = true;
13
23
  }
14
24
 
15
- if(window.IS_STORYBOOK){ this.showBanner = true;}
16
25
  },
17
26
  installClickHandler: function(){
18
27
  this.openPlayStore()
28
+ this.writeCookie()
19
29
  this.showBanner = false
30
+ this.$store.appBannerIsVisible = false
20
31
  },
21
32
  closeClickHandler: function(){
22
33
  uxAction('appBanner::bannerClosed');
23
34
  this.showBanner = false
35
+ this.$store.appBannerIsVisible = false
36
+ this.writeCookie()
24
37
  },
25
38
  openPlayStore: function() {
26
39
  let fallbackTriggered = false;
40
+ uxAction('appBanner::playStoreOpened');
27
41
 
28
42
  const fallback = () => {
29
43
  if (fallbackTriggered) return;
@@ -45,6 +59,13 @@ export default function appBanner() {
45
59
  `#Intent;scheme=market;package=com.android.vending;end`;
46
60
 
47
61
  setTimeout(fallback, 700);
62
+ },
63
+ writeCookie: function() {
64
+ this.cookie["closed"] = true
65
+ setJSONCookie('appBanner', this.cookie, this.cookieLifetime)
66
+ },
67
+ readTrackingCookie: function() {
68
+ this.cookie = getJSONCookie('appBanner') || {}
48
69
  }
49
70
  }
50
71
  }
@@ -1,6 +1,6 @@
1
1
  <div
2
2
  x-data="appBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
- id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 z-300 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
4
  <div class="flex flex-row items-center gap-4 grow">
5
5
  <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
6
  <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
@@ -14,9 +14,13 @@ export default function nativeAppBanner() {
14
14
  // Update UI notify the user they can add to home screen
15
15
  if(this.isAndroid){
16
16
  this.showBanner = true;
17
+ this.$store.appBannerIsVisible = true;
17
18
  }
18
19
  });
19
- if(window.IS_STORYBOOK){ this.showBanner = true;}
20
+ if(window.IS_STORYBOOK){
21
+ this.showBanner = true;
22
+ this.$store.appBannerIsVisible = true;
23
+ }
20
24
  },
21
25
  installClickHandler: function(){
22
26
  if(this.deferredPrompt){
@@ -35,10 +39,12 @@ export default function nativeAppBanner() {
35
39
  });
36
40
  }
37
41
  this.showBanner = false
42
+ this.$store.appBannerIsVisible = false
38
43
  },
39
44
  closeClickHandler: function(){
40
45
  uxAction('nativeAppBanner::bannerClosed');
41
46
  this.showBanner = false
47
+ this.$store.appBannerIsVisible = false
42
48
  }
43
49
  }
44
50
  }
@@ -1,6 +1,6 @@
1
1
  <div
2
2
  x-data="nativeAppBanner()" x-cloak x-show="showBanner" ax-load x-ignore
3
- id="marketing-banner" tabindex="-1" class="fixed bottom-0 z-50 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
3
+ id="marketing-banner" tabindex="-1" class="fixed bottom-0 flex flex-row justify-end w-full gap-4 p-4 -translate-x-1/2 z-300 flex-nowrap bg-blue-aqua lg:max-w-7xl left-1/2">
4
4
  <div class="flex flex-row items-center gap-4 grow">
5
5
  <div class="flex items-center justify-center rounded-lg w-11 h-11 bg-blue-congress-hex shrink-0">
6
6
  <img width="24" height="24" src="{{resourceUrl "assets/base/icons/logo/brandlogo--mobile.min.svg" _brand=(defaultIfEmpty this.brand "hessenschau")}}"
@@ -18,6 +18,7 @@
18
18
  </head>
19
19
 
20
20
  <body itemscope itemtype="http://schema.org/WebPage">
21
+ {{~> components/appBanner/appBanner ~}}
21
22
  <div class="js-pageSwap">
22
23
 
23
24
  {{> components/site_header/header }}
@@ -1,7 +1,7 @@
1
1
  <div class="h-8" x-data="{ isVisible: false }">
2
2
  <div class="grid grid-page z-100" :class="{ 'fixed bottom-feature-box-height left-0 w-full': !$store.footerIsVisible }">
3
3
  <div class="flex justify-between h-0 col-full sm:col-main"
4
- :class="{ 'bg-white h-8': $store.footerIsVisible }"
4
+ :class="{ 'bg-white h-8': $store.footerIsVisible, 'h-22': $store.appBannerIsVisible && !$store.footerIsVisible}"
5
5
  x-show="!$store.sharingIsVisible && isVisible"
6
6
  x-transition:enter="transition ease-[cubic-bezier(0.68,-0.3,0.32,1)] duration-500 transform order-first"
7
7
  x-transition:enter-start="opacity-0 translate-y-8"