hr-design-system-handlebars 1.125.0 β 1.126.0
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 +29 -0
- package/dist/assets/index.css +12 -3
- package/dist/assets/js/alpine.js +16 -8
- package/dist/assets/js/base/tracking/pianoHelper.subfeature.js +30 -16
- package/dist/assets/js/components/appBanner/appBanner.alpine.js +24 -3
- package/dist/assets/js/components/appBanner/nativeAppBanner.alpine.js +7 -1
- package/dist/assets/js/components/scroll_depth_measurement/scrollDepthMeasurement.alpine.js +28 -0
- package/dist/views/components/appBanner/appBanner.hbs +1 -1
- package/dist/views/components/appBanner/nativeAppBanner.hbs +1 -1
- package/dist/views/components/page/index/page.hbs +1 -0
- package/dist/views/components/page/story/story_article.hbs +36 -33
- package/dist/views/components/scroll_depth_measurement/scroll_depth_measurement.hbs +7 -0
- package/dist/views/components/top_button/top_button.hbs +1 -1
- package/dist/views_static/components/appBanner/appBanner.hbs +1 -1
- package/dist/views_static/components/appBanner/nativeAppBanner.hbs +1 -1
- package/dist/views_static/components/page/index/page.hbs +1 -0
- package/dist/views_static/components/page/story/story_article.hbs +36 -33
- package/dist/views_static/components/scroll_depth_measurement/scroll_depth_measurement.hbs +7 -0
- package/dist/views_static/components/top_button/top_button.hbs +1 -1
- package/package.json +13 -13
- package/src/assets/js/alpine.js +16 -8
- package/src/stories/views/base/tracking/pianoHelper.subfeature.js +30 -16
- package/src/stories/views/components/appBanner/appBanner.alpine.js +24 -3
- package/src/stories/views/components/appBanner/appBanner.hbs +1 -1
- package/src/stories/views/components/appBanner/nativeAppBanner.alpine.js +7 -1
- package/src/stories/views/components/appBanner/nativeAppBanner.hbs +1 -1
- package/src/stories/views/components/page/index/page.hbs +1 -0
- package/src/stories/views/components/page/story/story_article.hbs +36 -33
- package/src/stories/views/components/scroll_depth_measurement/scrollDepthMeasurement.alpine.js +28 -0
- package/src/stories/views/components/scroll_depth_measurement/scroll_depth_measurement.hbs +7 -0
- package/src/stories/views/components/top_button/top_button.hbs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
# v1.126.0 (Fri Dec 19 2025)
|
|
2
|
+
|
|
3
|
+
#### π Enhancement
|
|
4
|
+
|
|
5
|
+
- Feature/dpe 3470 [#1333](https://github.com/mumprod/hr-design-system-handlebars/pull/1333) ([@szuelch](https://github.com/szuelch))
|
|
6
|
+
|
|
7
|
+
#### π© Dependency Updates
|
|
8
|
+
|
|
9
|
+
- :arrow_up: Upgrade storybook to latest patch version 8.6.15 to secure⦠[#1332](https://github.com/mumprod/hr-design-system-handlebars/pull/1332) ([@szuelch](https://github.com/szuelch))
|
|
10
|
+
|
|
11
|
+
#### Authors: 1
|
|
12
|
+
|
|
13
|
+
- [@szuelch](https://github.com/szuelch)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# v1.125.1 (Wed Dec 17 2025)
|
|
18
|
+
|
|
19
|
+
#### π Bug Fix
|
|
20
|
+
|
|
21
|
+
- 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))
|
|
22
|
+
|
|
23
|
+
#### Authors: 2
|
|
24
|
+
|
|
25
|
+
- [@eduardo-hr](https://github.com/eduardo-hr)
|
|
26
|
+
- Vasco ([@vascoeduardo](https://github.com/vascoeduardo))
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
1
30
|
# v1.125.0 (Tue Dec 16 2025)
|
|
2
31
|
|
|
3
32
|
#### π Enhancement
|
package/dist/assets/index.css
CHANGED
|
@@ -1726,6 +1726,9 @@ article #commentList {
|
|
|
1726
1726
|
.h-1 {
|
|
1727
1727
|
height: 0.25rem;
|
|
1728
1728
|
}
|
|
1729
|
+
.h-1\/4 {
|
|
1730
|
+
height: 25%;
|
|
1731
|
+
}
|
|
1729
1732
|
.h-10 {
|
|
1730
1733
|
height: 2.5rem;
|
|
1731
1734
|
}
|
|
@@ -1741,6 +1744,9 @@ article #commentList {
|
|
|
1741
1744
|
.h-2 {
|
|
1742
1745
|
height: 0.5rem;
|
|
1743
1746
|
}
|
|
1747
|
+
.h-22 {
|
|
1748
|
+
height: 5.5rem;
|
|
1749
|
+
}
|
|
1744
1750
|
.h-3 {
|
|
1745
1751
|
height: 0.75rem;
|
|
1746
1752
|
}
|
|
@@ -1802,6 +1808,9 @@ article #commentList {
|
|
|
1802
1808
|
height: -moz-max-content;
|
|
1803
1809
|
height: max-content;
|
|
1804
1810
|
}
|
|
1811
|
+
.h-px {
|
|
1812
|
+
height: 1px;
|
|
1813
|
+
}
|
|
1805
1814
|
.h-screen {
|
|
1806
1815
|
height: 100vh;
|
|
1807
1816
|
}
|
|
@@ -3906,7 +3915,7 @@ article #commentList {
|
|
|
3906
3915
|
border-bottom-color: var(--color-secondary-ds);
|
|
3907
3916
|
}
|
|
3908
3917
|
.counter-reset {
|
|
3909
|
-
counter-reset:
|
|
3918
|
+
counter-reset: cnt1766132745495;
|
|
3910
3919
|
}
|
|
3911
3920
|
.animate-delay-100 {
|
|
3912
3921
|
--tw-animate-delay: 100ms;
|
|
@@ -4367,7 +4376,7 @@ html { scroll-behavior: smooth; }
|
|
|
4367
4376
|
--tw-ring-color: rgba(255, 255, 255, 0.5);
|
|
4368
4377
|
}
|
|
4369
4378
|
.-ordered {
|
|
4370
|
-
counter-increment:
|
|
4379
|
+
counter-increment: cnt1766132745495 1;
|
|
4371
4380
|
}
|
|
4372
4381
|
.-ordered::before {
|
|
4373
4382
|
position: absolute;
|
|
@@ -4385,7 +4394,7 @@ html { scroll-behavior: smooth; }
|
|
|
4385
4394
|
--tw-text-opacity: 1;
|
|
4386
4395
|
color: rgba(0, 0, 0, 1);
|
|
4387
4396
|
color: rgba(0, 0, 0, var(--tw-text-opacity));
|
|
4388
|
-
content: counter(
|
|
4397
|
+
content: counter(cnt1766132745495);
|
|
4389
4398
|
}
|
|
4390
4399
|
/*! ****************************/
|
|
4391
4400
|
/*! DataPolicy stuff */
|
package/dist/assets/js/alpine.js
CHANGED
|
@@ -19,11 +19,18 @@ AsyncAlpine.init(Alpine)
|
|
|
19
19
|
import('components/horizontal_scroll_container/horizontal_scroll_container.alpine.js')
|
|
20
20
|
)
|
|
21
21
|
.data('stickyPlayer', () => import('components/mediaplayer/stickyPlayer.alpine.js'))
|
|
22
|
-
.data('socialSharingHandler', ()=>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
.data('
|
|
26
|
-
.data('
|
|
22
|
+
.data('socialSharingHandler', () =>
|
|
23
|
+
import('components/social_sharing/socialSharingHandler.alpine.js')
|
|
24
|
+
)
|
|
25
|
+
.data('inputHandler', () => import('components/forms/js/inputHandler.alpine.js'))
|
|
26
|
+
.data('contactForm', () => import('components/forms/js/contactForm.alpine.js'))
|
|
27
|
+
.data('newsletterForm', () => import('components/newsletter/js/newsletterForm.alpine.js'))
|
|
28
|
+
.data('gallerySlider', () =>
|
|
29
|
+
import('components/content/copytext/components/gallery/js/gallerySlider.alpine.js')
|
|
30
|
+
)
|
|
31
|
+
.data('measureScrollDepth', () =>
|
|
32
|
+
import('components/scroll_depth_measurement/scrollDepthMeasurement.alpine.js')
|
|
33
|
+
)
|
|
27
34
|
.start()
|
|
28
35
|
|
|
29
36
|
window.Alpine = Alpine
|
|
@@ -46,19 +53,20 @@ Alpine.store('serviceID', {
|
|
|
46
53
|
Alpine.store('navIsVisible', true)
|
|
47
54
|
Alpine.store('subNavIsVisible', false)
|
|
48
55
|
Alpine.store('footerIsVisible', false)
|
|
56
|
+
Alpine.store('appBannerIsVisible', false)
|
|
49
57
|
Alpine.store('sectionNavIsVisible', false)
|
|
50
58
|
Alpine.store('sharingIsVisible', false)
|
|
51
59
|
Alpine.store('sharingIsOpen', {
|
|
52
60
|
metadatabox: false,
|
|
53
|
-
mobilesticky: false
|
|
61
|
+
mobilesticky: false,
|
|
54
62
|
})
|
|
55
63
|
Alpine.store('sharingBottomPos', {
|
|
56
|
-
current: '0'
|
|
64
|
+
current: '0',
|
|
57
65
|
})
|
|
58
66
|
Alpine.store('forms', {
|
|
59
67
|
submissionAttempted: [],
|
|
60
68
|
serverErrorFields: [{}],
|
|
61
|
-
errorMessages: [{}]
|
|
69
|
+
errorMessages: [{}],
|
|
62
70
|
})
|
|
63
71
|
// Initialization of data handlers
|
|
64
72
|
Alpine.data('mainNavigationHandler', mainNavigationHandler)
|
|
@@ -1,38 +1,52 @@
|
|
|
1
|
-
import SettingsCookie from 'components/external-service/globalSettingsCookie.subfeature'
|
|
1
|
+
import SettingsCookie from 'components/external-service/globalSettingsCookie.subfeature'
|
|
2
2
|
|
|
3
|
-
const pianoErrorSecondLevelId = 99
|
|
3
|
+
const pianoErrorSecondLevelId = 99
|
|
4
4
|
|
|
5
5
|
const isTrackingAllowed = () => {
|
|
6
|
-
const settingsCookie = new SettingsCookie()
|
|
7
|
-
return
|
|
8
|
-
|
|
6
|
+
const settingsCookie = new SettingsCookie()
|
|
7
|
+
return (
|
|
8
|
+
!settingsCookie.isSettingsCookieExistent('ati') ||
|
|
9
|
+
settingsCookie.isSettingsCookieAccepted('ati')
|
|
10
|
+
)
|
|
11
|
+
}
|
|
9
12
|
|
|
10
13
|
const sendEvent = (eventType, event) => {
|
|
11
14
|
if (typeof pa !== 'undefined' && pa !== undefined && isTrackingAllowed()) {
|
|
12
|
-
pa.sendEvent(eventType, event)
|
|
15
|
+
pa.sendEvent(eventType, event)
|
|
13
16
|
}
|
|
14
|
-
}
|
|
17
|
+
}
|
|
15
18
|
|
|
16
19
|
const getDefaultEvent = (label, secondLevelId) => {
|
|
17
20
|
return {
|
|
18
21
|
click: label,
|
|
19
|
-
site_level2_id: determineSecondLevelId(secondLevelId)
|
|
22
|
+
site_level2_id: determineSecondLevelId(secondLevelId),
|
|
20
23
|
}
|
|
21
|
-
}
|
|
24
|
+
}
|
|
22
25
|
|
|
23
26
|
const determineSecondLevelId = (secondLevelId) => {
|
|
24
27
|
return secondLevelId !== undefined
|
|
25
28
|
? secondLevelId
|
|
26
|
-
: undefined !== pageDisplayConfig
|
|
27
|
-
|
|
29
|
+
: undefined !== pageDisplayConfig
|
|
30
|
+
? pageDisplayConfig.site_level2_id
|
|
31
|
+
: pianoErrorSecondLevelId
|
|
32
|
+
}
|
|
28
33
|
|
|
29
|
-
const uxAction = (label, secondLevelId) =>
|
|
34
|
+
const uxAction = (label, secondLevelId) =>
|
|
35
|
+
sendEvent('click.action', getDefaultEvent(label, secondLevelId))
|
|
30
36
|
|
|
31
|
-
const uxNavigation = (label, secondLevelId) =>
|
|
37
|
+
const uxNavigation = (label, secondLevelId) =>
|
|
38
|
+
sendEvent('click.navigation', getDefaultEvent(label, secondLevelId))
|
|
32
39
|
|
|
33
|
-
const pi = () => sendEvent('page.display', pageDisplayConfig)
|
|
40
|
+
const pi = () => sendEvent('page.display', pageDisplayConfig)
|
|
34
41
|
|
|
35
|
-
const download = (label, secondLevelId) =>
|
|
42
|
+
const download = (label, secondLevelId) =>
|
|
43
|
+
sendEvent('click.download', getDefaultEvent(label, secondLevelId))
|
|
36
44
|
|
|
45
|
+
const scrollDepth = (depth) => {
|
|
46
|
+
sendEvent('page.scroll', {
|
|
47
|
+
scroll_depth: depth,
|
|
48
|
+
page: undefined !== pageDisplayConfig ? pageDisplayConfig.page : 'unknown',
|
|
49
|
+
})
|
|
50
|
+
}
|
|
37
51
|
|
|
38
|
-
export { isTrackingAllowed, uxAction, uxNavigation, pi, download }
|
|
52
|
+
export { isTrackingAllowed, uxAction, uxNavigation, pi, download, scrollDepth }
|
|
@@ -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.
|
|
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){
|
|
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
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { scrollDepth } from 'base/tracking/pianoHelper.subfeature'
|
|
2
|
+
export default function measureScrollDepth() {
|
|
3
|
+
let fired = {}
|
|
4
|
+
function handleIntersect(entries) {
|
|
5
|
+
entries.forEach((entry) => {
|
|
6
|
+
if (entry.isIntersecting && !fired[entry.target.dataset.scrollDepth]) {
|
|
7
|
+
fired[entry.target.dataset.scrollDepth] = true
|
|
8
|
+
scrollDepth(entry.target.dataset.scrollDepth)
|
|
9
|
+
}
|
|
10
|
+
})
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
scrollDepthContainer0: this.$refs.scroll_depth_0,
|
|
14
|
+
scrollDepthContainer25: this.$refs.scroll_depth_25,
|
|
15
|
+
scrollDepthContainer50: this.$refs.scroll_depth_50,
|
|
16
|
+
scrollDepthContainer75: this.$refs.scroll_depth_75,
|
|
17
|
+
scrollDepthContainer100: this.$refs.scroll_depth_100,
|
|
18
|
+
|
|
19
|
+
init() {
|
|
20
|
+
const observer = new IntersectionObserver(handleIntersect)
|
|
21
|
+
observer.observe(this.scrollDepthContainer0)
|
|
22
|
+
observer.observe(this.scrollDepthContainer25)
|
|
23
|
+
observer.observe(this.scrollDepthContainer50)
|
|
24
|
+
observer.observe(this.scrollDepthContainer75)
|
|
25
|
+
observer.observe(this.scrollDepthContainer100)
|
|
26
|
+
},
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -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
|
|
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
|
|
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,38 +1,41 @@
|
|
|
1
1
|
{{#>components/page/base/page_wrapper _isArticle=true _webview=_webview}}
|
|
2
|
-
|
|
3
|
-
{{> components/page/base/page_header}}
|
|
4
|
-
|
|
5
|
-
{{> components/page/components/shorttext _text=this.shorttext }}
|
|
6
|
-
|
|
7
|
-
{{> components/page/components/metadatabox _showDate=this.hasDwellTime _webview=../../_webview-adjust_context}}
|
|
8
2
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
3
|
+
<div class="article-full-width grid grid-article relative">
|
|
4
|
+
{{> components/scroll_depth_measurement/scroll_depth_measurement}}
|
|
5
|
+
|
|
6
|
+
{{> components/page/base/page_header}}
|
|
7
|
+
|
|
8
|
+
{{> components/page/components/shorttext _text=this.shorttext }}
|
|
9
|
+
|
|
10
|
+
{{> components/page/components/metadatabox _showDate=this.hasDwellTime _webview=../../_webview-adjust_context}}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
{{#unless this.displayPageLead.isFalse}}
|
|
14
|
+
{{#with this.teaseritemDS }}
|
|
15
|
+
{{#if this.isImage}}
|
|
16
|
+
{{> components/content/copytext/components/image/figure
|
|
17
|
+
_cssClass="article-full-width md:article-breakout mt-5 sm:mt-7 "
|
|
18
|
+
_cssClassCaption="mx-5 md:mx-0"
|
|
19
|
+
_type="story"
|
|
20
|
+
_variant=(if this.showSquareImage.isTrue "100-top-sb-1x1" "100-top-sb")
|
|
21
|
+
_pictureAddClass=(if this.showSquareImage.isTrue "grid ar-1-1 md:ar-16-9 print:ar-16-9" "ar-16-9")
|
|
22
|
+
_isWebview=../../../_webview-adjust_context
|
|
23
|
+
_noDelay=true}}
|
|
24
|
+
{{/if}}
|
|
25
|
+
{{#if this.isVideoOnDemand}}
|
|
26
|
+
{{> components/content/copytext/components/media/media_figure _hasHeadline=true _isSticky=true _playerLocation="Aufmacher" _isFullsize=true _isLead=true _playerSize="100" _addClass="print:hidden article-full-width md:article-breakout mt-12 mb-6 sm:mt-14 sm:mb-8" _cssClassCaption="mx-5 md:mx-0" _a11yIntro-loca="story_video_intro_sr" _a11yOutro-loca="story_video_outro_sr" }}
|
|
27
|
+
{{/if}}
|
|
28
|
+
{{#if this.isLivestream}}
|
|
29
|
+
{{> components/content/copytext/components/media/media_figure _hasHeadline=true _isSticky=true _playerLocation="Aufmacher" _isFullsize=true _isLead=true _playerSize="100" _addClass="print:hidden article-full-width md:article-breakout mt-12 mb-6 sm:mt-14 sm:mb-8" _cssClassCaption="mx-5 md:mx-0" _a11yIntro-loca="story_video_livestream_intro_sr" _a11yOutro-loca="story_video_livestream_outro_sr" }}
|
|
30
|
+
{{/if}}
|
|
31
|
+
{{/with}}
|
|
32
|
+
{{/unless}}
|
|
33
|
+
|
|
34
|
+
{{#unless ../../_webview-adjust_context}}
|
|
35
|
+
{{> components/social_sharing/social_sharing_copytext _useSticky=(configProperty "templates.useStickyNav")}}
|
|
36
|
+
{{/unless}}
|
|
37
|
+
{{~> components/content/copytext/copytext _isWebview=../../_webview-adjust_context ~}}
|
|
38
|
+
</div>
|
|
36
39
|
{{~> components/content/content_footer/content_footer
|
|
37
40
|
_showDate=this.hasDwellTime
|
|
38
41
|
_date=this.documentPublicationDate
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<div class="absolute w-full h-full" x-ref="scroll_depth_container" ax-load x-data="measureScrollDepth()" x-ignore>
|
|
2
|
+
<div data-scroll-depth="0%" x-ref="scroll_depth_0" class="w-full h-1/4"></div>
|
|
3
|
+
<div data-scroll-depth="25%" x-ref="scroll_depth_25" class="w-full h-1/4"></div>
|
|
4
|
+
<div data-scroll-depth="50%" x-ref="scroll_depth_50" class="w-full h-1/4"></div>
|
|
5
|
+
<div data-scroll-depth="75%" x-ref="scroll_depth_75" class="w-full h-1/4"></div>
|
|
6
|
+
<div data-scroll-depth="100%" x-ref="scroll_depth_100" class="w-full h-px"></div>
|
|
7
|
+
</div>
|
|
@@ -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
|
|
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
|
|
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,38 +1,41 @@
|
|
|
1
1
|
{{#>components/page/base/page_wrapper _isArticle=true _webview=_webview}}
|
|
2
|
-
|
|
3
|
-
{{> components/page/base/page_header}}
|
|
4
|
-
|
|
5
|
-
{{> components/page/components/shorttext _text=this.shorttext }}
|
|
6
|
-
|
|
7
|
-
{{> components/page/components/metadatabox _showDate=this.hasDwellTime _webview=_webview}}
|
|
8
2
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
3
|
+
<div class="article-full-width grid grid-article relative">
|
|
4
|
+
{{> components/scroll_depth_measurement/scroll_depth_measurement}}
|
|
5
|
+
|
|
6
|
+
{{> components/page/base/page_header}}
|
|
7
|
+
|
|
8
|
+
{{> components/page/components/shorttext _text=this.shorttext }}
|
|
9
|
+
|
|
10
|
+
{{> components/page/components/metadatabox _showDate=this.hasDwellTime _webview=_webview}}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
{{#unless this.displayPageLead.isFalse}}
|
|
14
|
+
{{#with this.teaseritemDS }}
|
|
15
|
+
{{#if this.isImage}}
|
|
16
|
+
{{> components/content/copytext/components/image/figure
|
|
17
|
+
_cssClass="article-full-width md:article-breakout mt-5 sm:mt-7 "
|
|
18
|
+
_cssClassCaption="mx-5 md:mx-0"
|
|
19
|
+
_type="story"
|
|
20
|
+
_variant=(if this.showSquareImage.isTrue "100-top-sb-1x1" "100-top-sb")
|
|
21
|
+
_pictureAddClass=(if this.showSquareImage.isTrue "grid ar-1-1 md:ar-16-9 print:ar-16-9" "ar-16-9")
|
|
22
|
+
_isWebview=../_webview
|
|
23
|
+
_noDelay=true}}
|
|
24
|
+
{{/if}}
|
|
25
|
+
{{#if this.isVideoOnDemand}}
|
|
26
|
+
{{> components/content/copytext/components/media/media_figure _hasHeadline=true _isSticky=true _playerLocation="Aufmacher" _isFullsize=true _isLead=true _playerSize="100" _addClass="print:hidden article-full-width md:article-breakout mt-12 mb-6 sm:mt-14 sm:mb-8" _cssClassCaption="mx-5 md:mx-0" _a11yIntro-loca="story_video_intro_sr" _a11yOutro-loca="story_video_outro_sr" }}
|
|
27
|
+
{{/if}}
|
|
28
|
+
{{#if this.isLivestream}}
|
|
29
|
+
{{> components/content/copytext/components/media/media_figure _hasHeadline=true _isSticky=true _playerLocation="Aufmacher" _isFullsize=true _isLead=true _playerSize="100" _addClass="print:hidden article-full-width md:article-breakout mt-12 mb-6 sm:mt-14 sm:mb-8" _cssClassCaption="mx-5 md:mx-0" _a11yIntro-loca="story_video_livestream_intro_sr" _a11yOutro-loca="story_video_livestream_outro_sr" }}
|
|
30
|
+
{{/if}}
|
|
31
|
+
{{/with}}
|
|
32
|
+
{{/unless}}
|
|
33
|
+
|
|
34
|
+
{{#unless _webview}}
|
|
35
|
+
{{> components/social_sharing/social_sharing_copytext _useSticky=(configProperty "templates.useStickyNav")}}
|
|
36
|
+
{{/unless}}
|
|
37
|
+
{{~> components/content/copytext/copytext _isWebview=_webview ~}}
|
|
38
|
+
</div>
|
|
36
39
|
{{~> components/content/content_footer/content_footer
|
|
37
40
|
_showDate=this.hasDwellTime
|
|
38
41
|
_date=this.documentPublicationDate
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<div class="absolute w-full h-full" x-ref="scroll_depth_container" ax-load x-data="measureScrollDepth()" x-ignore>
|
|
2
|
+
<div data-scroll-depth="0%" x-ref="scroll_depth_0" class="w-full h-1/4"></div>
|
|
3
|
+
<div data-scroll-depth="25%" x-ref="scroll_depth_25" class="w-full h-1/4"></div>
|
|
4
|
+
<div data-scroll-depth="50%" x-ref="scroll_depth_50" class="w-full h-1/4"></div>
|
|
5
|
+
<div data-scroll-depth="75%" x-ref="scroll_depth_75" class="w-full h-1/4"></div>
|
|
6
|
+
<div data-scroll-depth="100%" x-ref="scroll_depth_100" class="w-full h-px"></div>
|
|
7
|
+
</div>
|
|
@@ -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.
|
|
9
|
+
"version": "1.126.0",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
12
|
"storybook": "storybook dev -p 6006 public",
|
|
@@ -44,22 +44,22 @@
|
|
|
44
44
|
"@babel/core": "^7.12.10",
|
|
45
45
|
"@babel/preset-env": "^7.21.4",
|
|
46
46
|
"@chromatic-com/storybook": "1",
|
|
47
|
-
"@storybook/addon-a11y": "
|
|
48
|
-
"@storybook/addon-actions": "
|
|
47
|
+
"@storybook/addon-a11y": "8.6.15",
|
|
48
|
+
"@storybook/addon-actions": "8.6.15",
|
|
49
49
|
"@storybook/addon-console": "^3.0.0",
|
|
50
|
-
"@storybook/addon-essentials": "
|
|
51
|
-
"@storybook/addon-interactions": "
|
|
52
|
-
"@storybook/addon-links": "
|
|
50
|
+
"@storybook/addon-essentials": "8.6.15",
|
|
51
|
+
"@storybook/addon-interactions": "8.6.15",
|
|
52
|
+
"@storybook/addon-links": "8.6.15",
|
|
53
53
|
"@storybook/addon-styling-webpack": "1.0.0",
|
|
54
|
-
"@storybook/addon-themes": "
|
|
54
|
+
"@storybook/addon-themes": "8.6.15",
|
|
55
55
|
"@storybook/addon-webpack5-compiler-babel": "3.0.3",
|
|
56
56
|
"@storybook/addon-webpack5-compiler-swc": "1.0.4",
|
|
57
|
-
"@storybook/blocks": "
|
|
58
|
-
"@storybook/html": "
|
|
59
|
-
"@storybook/html-webpack5": "
|
|
60
|
-
"@storybook/test": "
|
|
57
|
+
"@storybook/blocks": "8.6.15",
|
|
58
|
+
"@storybook/html": "8.6.15",
|
|
59
|
+
"@storybook/html-webpack5": "8.6.15",
|
|
60
|
+
"@storybook/test": "8.6.15",
|
|
61
61
|
"@storybook/test-runner": "^0.19.1",
|
|
62
|
-
"@storybook/theming": "
|
|
62
|
+
"@storybook/theming": "8.6.15",
|
|
63
63
|
"auto": "^11.0.5",
|
|
64
64
|
"autoprefixer": "^10.4.2",
|
|
65
65
|
"babel-loader": "^8.2.2",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"raw-loader": "^4.0.2",
|
|
102
102
|
"remark-gfm": "^4.0.0",
|
|
103
103
|
"rimraf": "^3.0.2",
|
|
104
|
-
"storybook": "
|
|
104
|
+
"storybook": "8.6.15",
|
|
105
105
|
"storybook-addon-fetch-mock": "^2.0.1",
|
|
106
106
|
"storybook-conditional-toolbar-selector": "^1.0.3",
|
|
107
107
|
"style-loader": "^4.0.0",
|
package/src/assets/js/alpine.js
CHANGED
|
@@ -19,11 +19,18 @@ AsyncAlpine.init(Alpine)
|
|
|
19
19
|
import('components/horizontal_scroll_container/horizontal_scroll_container.alpine.js')
|
|
20
20
|
)
|
|
21
21
|
.data('stickyPlayer', () => import('components/mediaplayer/stickyPlayer.alpine.js'))
|
|
22
|
-
.data('socialSharingHandler', ()=>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
.data('
|
|
26
|
-
.data('
|
|
22
|
+
.data('socialSharingHandler', () =>
|
|
23
|
+
import('components/social_sharing/socialSharingHandler.alpine.js')
|
|
24
|
+
)
|
|
25
|
+
.data('inputHandler', () => import('components/forms/js/inputHandler.alpine.js'))
|
|
26
|
+
.data('contactForm', () => import('components/forms/js/contactForm.alpine.js'))
|
|
27
|
+
.data('newsletterForm', () => import('components/newsletter/js/newsletterForm.alpine.js'))
|
|
28
|
+
.data('gallerySlider', () =>
|
|
29
|
+
import('components/content/copytext/components/gallery/js/gallerySlider.alpine.js')
|
|
30
|
+
)
|
|
31
|
+
.data('measureScrollDepth', () =>
|
|
32
|
+
import('components/scroll_depth_measurement/scrollDepthMeasurement.alpine.js')
|
|
33
|
+
)
|
|
27
34
|
.start()
|
|
28
35
|
|
|
29
36
|
window.Alpine = Alpine
|
|
@@ -46,19 +53,20 @@ Alpine.store('serviceID', {
|
|
|
46
53
|
Alpine.store('navIsVisible', true)
|
|
47
54
|
Alpine.store('subNavIsVisible', false)
|
|
48
55
|
Alpine.store('footerIsVisible', false)
|
|
56
|
+
Alpine.store('appBannerIsVisible', false)
|
|
49
57
|
Alpine.store('sectionNavIsVisible', false)
|
|
50
58
|
Alpine.store('sharingIsVisible', false)
|
|
51
59
|
Alpine.store('sharingIsOpen', {
|
|
52
60
|
metadatabox: false,
|
|
53
|
-
mobilesticky: false
|
|
61
|
+
mobilesticky: false,
|
|
54
62
|
})
|
|
55
63
|
Alpine.store('sharingBottomPos', {
|
|
56
|
-
current: '0'
|
|
64
|
+
current: '0',
|
|
57
65
|
})
|
|
58
66
|
Alpine.store('forms', {
|
|
59
67
|
submissionAttempted: [],
|
|
60
68
|
serverErrorFields: [{}],
|
|
61
|
-
errorMessages: [{}]
|
|
69
|
+
errorMessages: [{}],
|
|
62
70
|
})
|
|
63
71
|
// Initialization of data handlers
|
|
64
72
|
Alpine.data('mainNavigationHandler', mainNavigationHandler)
|
|
@@ -1,38 +1,52 @@
|
|
|
1
|
-
import SettingsCookie from 'components/external-service/globalSettingsCookie.subfeature'
|
|
1
|
+
import SettingsCookie from 'components/external-service/globalSettingsCookie.subfeature'
|
|
2
2
|
|
|
3
|
-
const pianoErrorSecondLevelId = 99
|
|
3
|
+
const pianoErrorSecondLevelId = 99
|
|
4
4
|
|
|
5
5
|
const isTrackingAllowed = () => {
|
|
6
|
-
const settingsCookie = new SettingsCookie()
|
|
7
|
-
return
|
|
8
|
-
|
|
6
|
+
const settingsCookie = new SettingsCookie()
|
|
7
|
+
return (
|
|
8
|
+
!settingsCookie.isSettingsCookieExistent('ati') ||
|
|
9
|
+
settingsCookie.isSettingsCookieAccepted('ati')
|
|
10
|
+
)
|
|
11
|
+
}
|
|
9
12
|
|
|
10
13
|
const sendEvent = (eventType, event) => {
|
|
11
14
|
if (typeof pa !== 'undefined' && pa !== undefined && isTrackingAllowed()) {
|
|
12
|
-
pa.sendEvent(eventType, event)
|
|
15
|
+
pa.sendEvent(eventType, event)
|
|
13
16
|
}
|
|
14
|
-
}
|
|
17
|
+
}
|
|
15
18
|
|
|
16
19
|
const getDefaultEvent = (label, secondLevelId) => {
|
|
17
20
|
return {
|
|
18
21
|
click: label,
|
|
19
|
-
site_level2_id: determineSecondLevelId(secondLevelId)
|
|
22
|
+
site_level2_id: determineSecondLevelId(secondLevelId),
|
|
20
23
|
}
|
|
21
|
-
}
|
|
24
|
+
}
|
|
22
25
|
|
|
23
26
|
const determineSecondLevelId = (secondLevelId) => {
|
|
24
27
|
return secondLevelId !== undefined
|
|
25
28
|
? secondLevelId
|
|
26
|
-
: undefined !== pageDisplayConfig
|
|
27
|
-
|
|
29
|
+
: undefined !== pageDisplayConfig
|
|
30
|
+
? pageDisplayConfig.site_level2_id
|
|
31
|
+
: pianoErrorSecondLevelId
|
|
32
|
+
}
|
|
28
33
|
|
|
29
|
-
const uxAction = (label, secondLevelId) =>
|
|
34
|
+
const uxAction = (label, secondLevelId) =>
|
|
35
|
+
sendEvent('click.action', getDefaultEvent(label, secondLevelId))
|
|
30
36
|
|
|
31
|
-
const uxNavigation = (label, secondLevelId) =>
|
|
37
|
+
const uxNavigation = (label, secondLevelId) =>
|
|
38
|
+
sendEvent('click.navigation', getDefaultEvent(label, secondLevelId))
|
|
32
39
|
|
|
33
|
-
const pi = () => sendEvent('page.display', pageDisplayConfig)
|
|
40
|
+
const pi = () => sendEvent('page.display', pageDisplayConfig)
|
|
34
41
|
|
|
35
|
-
const download = (label, secondLevelId) =>
|
|
42
|
+
const download = (label, secondLevelId) =>
|
|
43
|
+
sendEvent('click.download', getDefaultEvent(label, secondLevelId))
|
|
36
44
|
|
|
45
|
+
const scrollDepth = (depth) => {
|
|
46
|
+
sendEvent('page.scroll', {
|
|
47
|
+
scroll_depth: depth,
|
|
48
|
+
page: undefined !== pageDisplayConfig ? pageDisplayConfig.page : 'unknown',
|
|
49
|
+
})
|
|
50
|
+
}
|
|
37
51
|
|
|
38
|
-
export { isTrackingAllowed, uxAction, uxNavigation, pi, download }
|
|
52
|
+
export { isTrackingAllowed, uxAction, uxNavigation, pi, download, scrollDepth }
|
|
@@ -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.
|
|
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
|
|
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){
|
|
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
|
|
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,38 +1,41 @@
|
|
|
1
1
|
{{#>components/page/base/page_wrapper _isArticle=true _webview=_webview}}
|
|
2
|
-
|
|
3
|
-
{{> components/page/base/page_header}}
|
|
4
|
-
|
|
5
|
-
{{> components/page/components/shorttext _text=this.shorttext }}
|
|
6
|
-
|
|
7
|
-
{{> components/page/components/metadatabox _showDate=this.hasDwellTime _webview=_webview-adjust_context}}
|
|
8
2
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
3
|
+
<div class="article-full-width grid grid-article relative">
|
|
4
|
+
{{> components/scroll_depth_measurement/scroll_depth_measurement}}
|
|
5
|
+
|
|
6
|
+
{{> components/page/base/page_header}}
|
|
7
|
+
|
|
8
|
+
{{> components/page/components/shorttext _text=this.shorttext }}
|
|
9
|
+
|
|
10
|
+
{{> components/page/components/metadatabox _showDate=this.hasDwellTime _webview=_webview-adjust_context}}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
{{#unless this.displayPageLead.isFalse}}
|
|
14
|
+
{{#with this.teaseritemDS }}
|
|
15
|
+
{{#if this.isImage}}
|
|
16
|
+
{{> components/content/copytext/components/image/figure
|
|
17
|
+
_cssClass="article-full-width md:article-breakout mt-5 sm:mt-7 "
|
|
18
|
+
_cssClassCaption="mx-5 md:mx-0"
|
|
19
|
+
_type="story"
|
|
20
|
+
_variant=(if this.showSquareImage.isTrue "100-top-sb-1x1" "100-top-sb")
|
|
21
|
+
_pictureAddClass=(if this.showSquareImage.isTrue "grid ar-1-1 md:ar-16-9 print:ar-16-9" "ar-16-9")
|
|
22
|
+
_isWebview=../_webview-adjust_context
|
|
23
|
+
_noDelay=true}}
|
|
24
|
+
{{/if}}
|
|
25
|
+
{{#if this.isVideoOnDemand}}
|
|
26
|
+
{{> components/content/copytext/components/media/media_figure _hasHeadline=true _isSticky=true _playerLocation="Aufmacher" _isFullsize=true _isLead=true _playerSize="100" _addClass="print:hidden article-full-width md:article-breakout mt-12 mb-6 sm:mt-14 sm:mb-8" _cssClassCaption="mx-5 md:mx-0" _a11yIntro-loca="story_video_intro_sr" _a11yOutro-loca="story_video_outro_sr" }}
|
|
27
|
+
{{/if}}
|
|
28
|
+
{{#if this.isLivestream}}
|
|
29
|
+
{{> components/content/copytext/components/media/media_figure _hasHeadline=true _isSticky=true _playerLocation="Aufmacher" _isFullsize=true _isLead=true _playerSize="100" _addClass="print:hidden article-full-width md:article-breakout mt-12 mb-6 sm:mt-14 sm:mb-8" _cssClassCaption="mx-5 md:mx-0" _a11yIntro-loca="story_video_livestream_intro_sr" _a11yOutro-loca="story_video_livestream_outro_sr" }}
|
|
30
|
+
{{/if}}
|
|
31
|
+
{{/with}}
|
|
32
|
+
{{/unless}}
|
|
33
|
+
|
|
34
|
+
{{#unless _webview-adjust_context}}
|
|
35
|
+
{{> components/social_sharing/social_sharing_copytext _useSticky=(configProperty "templates.useStickyNav")}}
|
|
36
|
+
{{/unless}}
|
|
37
|
+
{{~> components/content/copytext/copytext _isWebview=_webview-adjust_context ~}}
|
|
38
|
+
</div>
|
|
36
39
|
{{~> components/content/content_footer/content_footer
|
|
37
40
|
_showDate=this.hasDwellTime
|
|
38
41
|
_date=this.documentPublicationDate
|
package/src/stories/views/components/scroll_depth_measurement/scrollDepthMeasurement.alpine.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { scrollDepth } from 'base/tracking/pianoHelper.subfeature'
|
|
2
|
+
export default function measureScrollDepth() {
|
|
3
|
+
let fired = {}
|
|
4
|
+
function handleIntersect(entries) {
|
|
5
|
+
entries.forEach((entry) => {
|
|
6
|
+
if (entry.isIntersecting && !fired[entry.target.dataset.scrollDepth]) {
|
|
7
|
+
fired[entry.target.dataset.scrollDepth] = true
|
|
8
|
+
scrollDepth(entry.target.dataset.scrollDepth)
|
|
9
|
+
}
|
|
10
|
+
})
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
scrollDepthContainer0: this.$refs.scroll_depth_0,
|
|
14
|
+
scrollDepthContainer25: this.$refs.scroll_depth_25,
|
|
15
|
+
scrollDepthContainer50: this.$refs.scroll_depth_50,
|
|
16
|
+
scrollDepthContainer75: this.$refs.scroll_depth_75,
|
|
17
|
+
scrollDepthContainer100: this.$refs.scroll_depth_100,
|
|
18
|
+
|
|
19
|
+
init() {
|
|
20
|
+
const observer = new IntersectionObserver(handleIntersect)
|
|
21
|
+
observer.observe(this.scrollDepthContainer0)
|
|
22
|
+
observer.observe(this.scrollDepthContainer25)
|
|
23
|
+
observer.observe(this.scrollDepthContainer50)
|
|
24
|
+
observer.observe(this.scrollDepthContainer75)
|
|
25
|
+
observer.observe(this.scrollDepthContainer100)
|
|
26
|
+
},
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<div class="absolute w-full h-full" x-ref="scroll_depth_container" ax-load x-data="measureScrollDepth()" x-ignore>
|
|
2
|
+
<div data-scroll-depth="0%" x-ref="scroll_depth_0" class="w-full h-1/4"></div>
|
|
3
|
+
<div data-scroll-depth="25%" x-ref="scroll_depth_25" class="w-full h-1/4"></div>
|
|
4
|
+
<div data-scroll-depth="50%" x-ref="scroll_depth_50" class="w-full h-1/4"></div>
|
|
5
|
+
<div data-scroll-depth="75%" x-ref="scroll_depth_75" class="w-full h-1/4"></div>
|
|
6
|
+
<div data-scroll-depth="100%" x-ref="scroll_depth_100" class="w-full h-px"></div>
|
|
7
|
+
</div>
|
|
@@ -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"
|