hr-design-system-handlebars 1.124.10 → 1.125.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 +12 -0
- package/dist/assets/index.css +3 -3
- package/dist/assets/js/components/external-service/dataWrapperContentRefresher.subfeature.js +73 -65
- package/dist/assets/js/components/external-service/dataWrapperNoResponsiveIframe.subfeature.js +50 -72
- package/dist/assets/js/components/external-service/externalServiceDs.feature.js +119 -149
- package/dist/views/components/external-service/external_service_with_datapolicy_check.hbs +1 -1
- package/dist/views_static/components/external-service/external_service_with_datapolicy_check.hbs +1 -1
- package/package.json +1 -1
- package/src/stories/views/components/external-service/dataWrapperContentRefresher.subfeature.js +73 -65
- package/src/stories/views/components/external-service/dataWrapperNoResponsiveIframe.subfeature.js +50 -72
- package/src/stories/views/components/external-service/externalServiceDs.feature.js +119 -149
- package/src/stories/views/components/external-service/external_service_with_datapolicy_check.hbs +1 -1
package/src/stories/views/components/external-service/dataWrapperNoResponsiveIframe.subfeature.js
CHANGED
|
@@ -1,83 +1,61 @@
|
|
|
1
|
-
const DataWrapperNoResponsiveIframe = function (
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
const DataWrapperNoResponsiveIframe = function ({
|
|
2
|
+
rootElement,
|
|
3
|
+
aspectRatio,
|
|
4
|
+
fixedHeight,
|
|
5
|
+
id,
|
|
6
|
+
embedCode,
|
|
7
|
+
lazyLoad,
|
|
8
|
+
}) {
|
|
8
9
|
const createNoResponsiveIframe = function () {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
//Keine Aspect-Ratio ausgewählt aber eine feste Höhe
|
|
16
|
-
|
|
17
|
-
console.log(aspectRatio)
|
|
18
|
-
console.log(configAR)
|
|
19
|
-
if (aspectRatio === undefined) {
|
|
10
|
+
const parentDiv = document.createElement('div')
|
|
11
|
+
//Auflösen nach Tailwind-Klassen //copytext__scrollWrapper
|
|
12
|
+
parentDiv.className = '!h-full'
|
|
13
|
+
const div = document.createElement('div')
|
|
14
|
+
//Keine Aspect-Ratio ausgewählt aber eine feste Höhe
|
|
15
|
+
if (aspectRatio === undefined) {
|
|
20
16
|
//Auflösen nach Tailwind-Klassen //noaspect_datawrapper_cdn
|
|
21
17
|
div.className = 'relative overflow-hidden w-0 border-0 !min-w-full'
|
|
22
18
|
div.style.height = fixedHeight + 'px'
|
|
23
19
|
div.style.width = '100%'
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
break;
|
|
42
|
-
case '7x16':
|
|
43
|
-
tailwindCSS = "ar-7-16"
|
|
44
|
-
break;
|
|
45
|
-
case '4x3':
|
|
46
|
-
tailwindCSS = "ar-4-3"
|
|
47
|
-
break;
|
|
48
|
-
case '100x27':
|
|
49
|
-
tailwindCSS = "ar-100-27"
|
|
50
|
-
break;
|
|
51
|
-
default:
|
|
52
|
-
tailwindCSS = "ar-16-9"
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
div.className = tailwindCSS + " w-full sm480:h-full h-[560px]"
|
|
56
|
-
}
|
|
57
|
-
var iframe = document.createElement('iframe')
|
|
20
|
+
}
|
|
21
|
+
// Aspect-Ratio ausgewählt
|
|
22
|
+
else {
|
|
23
|
+
//ar-- in Tailwind-Klassen
|
|
24
|
+
const aspectRatiosToCssClasses = {
|
|
25
|
+
'100': 'ar-1-1',
|
|
26
|
+
'16x9': 'ar-16-9',
|
|
27
|
+
'9x16': 'ar-9-16',
|
|
28
|
+
'16x7': 'ar-16-7',
|
|
29
|
+
'7x16': 'ar-7-16',
|
|
30
|
+
'4x3': 'ar-4-3',
|
|
31
|
+
'100x27': 'ar-100-27',
|
|
32
|
+
}
|
|
33
|
+
const tailwindCSS = aspectRatiosToCssClasses[aspectRatio] || 'ar-16-9'
|
|
34
|
+
div.className = `${tailwindCSS} w-full sm480:h-full h-[560px]`
|
|
35
|
+
}
|
|
36
|
+
var iframe = document.createElement('iframe')
|
|
58
37
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
rootElement.appendChild(parentDiv)
|
|
38
|
+
//Auflösen nach Tailwind-Klassen //ar_iframe datawrapper_cdn
|
|
39
|
+
iframe.className = 'border-0 top-0 left-0 w-full h-full overflow-y-hidden'
|
|
40
|
+
iframe.id = 'datawrapper-chart-' + id
|
|
41
|
+
iframe.setAttribute('data-isloaded', '0')
|
|
42
|
+
iframe.setAttribute('webkitallowfullscreen', '')
|
|
43
|
+
iframe.setAttribute('mozallowfullscreen', '')
|
|
44
|
+
iframe.setAttribute('allowfullscreen', '')
|
|
45
|
+
iframe.setAttribute('scrolling', 'no')
|
|
46
|
+
iframe.setAttribute('frameborder', '0')
|
|
47
|
+
iframe.src = embedCode
|
|
48
|
+
if (lazyLoad) {
|
|
49
|
+
iframe.loading = 'lazy'
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
div.appendChild(iframe)
|
|
53
|
+
parentDiv.appendChild(div)
|
|
54
|
+
rootElement.appendChild(parentDiv)
|
|
77
55
|
}
|
|
78
56
|
return {
|
|
79
|
-
createNoResponsiveIframe: createNoResponsiveIframe
|
|
57
|
+
createNoResponsiveIframe: createNoResponsiveIframe,
|
|
80
58
|
}
|
|
81
59
|
}
|
|
82
60
|
|
|
83
|
-
export default DataWrapperNoResponsiveIframe
|
|
61
|
+
export default DataWrapperNoResponsiveIframe
|
|
@@ -29,10 +29,7 @@ const ExternalService = function (context) {
|
|
|
29
29
|
let embedCode = options.embedCode,
|
|
30
30
|
iframe,
|
|
31
31
|
settingsCookie = new SettingsCookie(),
|
|
32
|
-
noResponsiveIframe,
|
|
33
|
-
contentRefresher,
|
|
34
32
|
gemeindewahlergebnis,
|
|
35
|
-
uniqueId,
|
|
36
33
|
isExternalServiceLoaded = false,
|
|
37
34
|
tiktokOnPage = []
|
|
38
35
|
|
|
@@ -74,61 +71,34 @@ const ExternalService = function (context) {
|
|
|
74
71
|
}
|
|
75
72
|
|
|
76
73
|
const insertExternalService = function () {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
createWahlEmbed()
|
|
106
|
-
break
|
|
107
|
-
case 'wahlkreiskarte':
|
|
108
|
-
createWahlEmbed()
|
|
109
|
-
break
|
|
110
|
-
case 'wahlkreiskarte_v2':
|
|
111
|
-
createWahlEmbed()
|
|
112
|
-
break
|
|
113
|
-
case 'wahlomat-euwa':
|
|
114
|
-
createWahlOMatEuwaEmbed()
|
|
115
|
-
break
|
|
116
|
-
case 'wahlomat-butawa':
|
|
117
|
-
createWahlOMatButawaEmbed()
|
|
118
|
-
break
|
|
119
|
-
case 'wahl-gemeinde-ergebnis':
|
|
120
|
-
createWahlGemeindeErgebnisEmbed()
|
|
121
|
-
break
|
|
122
|
-
case 'wer-waehlte-wen':
|
|
123
|
-
werWaehlteWenEmbed()
|
|
124
|
-
break
|
|
125
|
-
default:
|
|
126
|
-
console.error('No JS Config for external service ' + id)
|
|
127
|
-
break
|
|
128
|
-
}
|
|
129
|
-
break
|
|
130
|
-
default:
|
|
131
|
-
loadIframe() //für alle Dienste die nicht der DSGVO Datapolicy unterliegen
|
|
74
|
+
if (embedType !== 'js') {
|
|
75
|
+
loadIframe() // Für alle Dienste, die nicht der DSGVO Datapolicy unterliegen
|
|
76
|
+
return
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const externalServiceMap = {
|
|
80
|
+
'23degrees': createTwentyThreeDegreesEmbed,
|
|
81
|
+
'facebook-post': createFacebookEmbed,
|
|
82
|
+
'instagram': createInstagramEmbed,
|
|
83
|
+
'tiktok': createTikTokEmbed,
|
|
84
|
+
'twitter': createTwitterEmbed,
|
|
85
|
+
'twitter-post': createTwitterPostEmbed,
|
|
86
|
+
'datawrapper_cdn': createDataWrapperEmbed,
|
|
87
|
+
'wahlmonitor': createWahlEmbed,
|
|
88
|
+
'wahlmonitor_v2': createWahlEmbed,
|
|
89
|
+
'wahlkreiskarte': createWahlEmbed,
|
|
90
|
+
'wahlkreiskarte_v2': createWahlEmbed,
|
|
91
|
+
'wahlomat-euwa': createWahlOMatEuwaEmbed,
|
|
92
|
+
'wahlomat-butawa': createWahlOMatButawaEmbed,
|
|
93
|
+
'wahl-gemeinde-ergebnis': createWahlGemeindeErgebnisEmbed,
|
|
94
|
+
'wer-waehlte-wen': werWaehlteWenEmbed,
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const service = externalServiceMap[id]
|
|
98
|
+
if (service) {
|
|
99
|
+
service()
|
|
100
|
+
} else {
|
|
101
|
+
console.error(`No JS Config for external service ${id}`)
|
|
132
102
|
}
|
|
133
103
|
}
|
|
134
104
|
|
|
@@ -206,14 +176,6 @@ const ExternalService = function (context) {
|
|
|
206
176
|
})
|
|
207
177
|
}
|
|
208
178
|
|
|
209
|
-
const createUniqueID = function () {
|
|
210
|
-
console.log('Erzeuge einzigartige ID')
|
|
211
|
-
uniqueId = Math.random()
|
|
212
|
-
.toString(36)
|
|
213
|
-
.replace(/[^a-z]+/g, '')
|
|
214
|
-
.substring(2, 10)
|
|
215
|
-
}
|
|
216
|
-
|
|
217
179
|
const getAspectRatioClass = function () {
|
|
218
180
|
switch (iFrameConfig.aspectRatio) {
|
|
219
181
|
case '16x9':
|
|
@@ -237,96 +199,104 @@ const ExternalService = function (context) {
|
|
|
237
199
|
|
|
238
200
|
const createDataWrapperEmbed = function () {
|
|
239
201
|
removeDatapolicyBox()
|
|
240
|
-
createUniqueID()
|
|
241
|
-
|
|
242
|
-
|
|
202
|
+
const uniqueId = createUniqueID()
|
|
203
|
+
const {
|
|
204
|
+
isNoResponsiveIframe,
|
|
205
|
+
isWebcomponent,
|
|
206
|
+
refreshContent,
|
|
207
|
+
aspectRatio,
|
|
208
|
+
fixedHeight,
|
|
209
|
+
refreshIntervall,
|
|
210
|
+
} = iFrameConfig
|
|
211
|
+
|
|
212
|
+
const addContentRefresher = (isWebcomponent) => {
|
|
213
|
+
new DataWrapperContentRefresher({
|
|
214
|
+
rootElement,
|
|
215
|
+
id: uniqueId,
|
|
216
|
+
refreshIntervall,
|
|
217
|
+
isWebcomponent,
|
|
218
|
+
}).createRefresher()
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
if (isNoResponsiveIframe == 'true') {
|
|
243
222
|
//Klassisches Iframe mit AR-Wrapper oder fester Höhe
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
uniqueId,
|
|
249
|
-
embedCode,
|
|
250
|
-
lazyLoad
|
|
251
|
-
)
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
console.log('contentRefresher anfügen')
|
|
256
|
-
contentRefresher = new DataWrapperContentRefresher(
|
|
257
|
-
context,
|
|
258
|
-
uniqueId,
|
|
259
|
-
iFrameConfig.refreshIntervall,
|
|
260
|
-
false
|
|
261
|
-
)
|
|
262
|
-
contentRefresher.createRefresher()
|
|
223
|
+
new DataWrapperNoResponsiveIframe({
|
|
224
|
+
rootElement: rootElement,
|
|
225
|
+
aspectRatio: aspectRatio,
|
|
226
|
+
fixedHeight: fixedHeight,
|
|
227
|
+
id: uniqueId,
|
|
228
|
+
embedCode: embedCode,
|
|
229
|
+
lazyLoad: lazyLoad,
|
|
230
|
+
}).createNoResponsiveIframe()
|
|
231
|
+
|
|
232
|
+
if (refreshContent == 'true') {
|
|
233
|
+
addContentRefresher(false)
|
|
263
234
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
// Webcomponent
|
|
267
|
-
const divTag = document.createElement('div')
|
|
268
|
-
divTag.id = 'datawrapper-chart-' + uniqueId
|
|
269
|
-
rootElement.insertBefore(divTag, null)
|
|
270
|
-
const scriptTag = document.createElement('script')
|
|
271
|
-
scriptTag.setAttribute('id', 'datawrapper-component-js')
|
|
272
|
-
scriptTag.setAttribute('type', 'text/javascript')
|
|
273
|
-
scriptTag.setAttribute('defer', 'defer')
|
|
274
|
-
scriptTag.setAttribute('src', embedCode + 'embed.js?v=1')
|
|
275
|
-
scriptTag.setAttribute('charset', 'utf-8')
|
|
276
|
-
const noScriptTag = document.createElement('noscript')
|
|
277
|
-
const imageTag = document.createElement('img')
|
|
278
|
-
imageTag.src = embedCode + 'full.png'
|
|
279
|
-
imageTag.alt = ''
|
|
280
|
-
noScriptTag.appendChild(imageTag)
|
|
281
|
-
divTag.appendChild(scriptTag)
|
|
282
|
-
divTag.appendChild(noScriptTag)
|
|
283
|
-
|
|
284
|
-
if (iFrameConfig.refreshContent == 'true') {
|
|
285
|
-
console.log('contentRefresher anfügen')
|
|
286
|
-
contentRefresher = new DataWrapperContentRefresher(
|
|
287
|
-
context,
|
|
288
|
-
uniqueId,
|
|
289
|
-
iFrameConfig.refreshIntervall,
|
|
290
|
-
true
|
|
291
|
-
)
|
|
292
|
-
contentRefresher.createRefresher()
|
|
293
|
-
}
|
|
294
|
-
} else {
|
|
295
|
-
//Responsives Iframe
|
|
296
|
-
var iframe = document.createElement('iframe')
|
|
297
|
-
//Auflösen nach Tailwind-Klassen //dataWrapper-embed
|
|
298
|
-
iframe.className = 'w-0 !min-w-full border-0'
|
|
299
|
-
iframe.setAttribute('webkitallowfullscreen', '')
|
|
300
|
-
iframe.setAttribute('mozallowfullscreen', '')
|
|
301
|
-
iframe.setAttribute('allowfullscreen', '')
|
|
302
|
-
iframe.setAttribute('scrolling', 'no')
|
|
303
|
-
iframe.setAttribute('frameborder', '0')
|
|
304
|
-
iframe.src = embedCode
|
|
305
|
-
iframe.id = 'datawrapper-chart-' + uniqueId
|
|
306
|
-
if (lazyLoad) {
|
|
307
|
-
iframe.loading = 'lazy'
|
|
308
|
-
}
|
|
309
|
-
rootElement.insertBefore(iframe, null)
|
|
235
|
+
return
|
|
236
|
+
}
|
|
310
237
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
238
|
+
if (isWebcomponent == 'true') {
|
|
239
|
+
// Webcomponent
|
|
240
|
+
const divTag = document.createElement('div')
|
|
241
|
+
divTag.id = `datawrapper-chart-${uniqueId}`
|
|
242
|
+
rootElement.appendChild(divTag)
|
|
243
|
+
|
|
244
|
+
const scriptTag = document.createElement('script')
|
|
245
|
+
Object.assign(scriptTag, {
|
|
246
|
+
id: 'datawrapper-component-js',
|
|
247
|
+
type: 'text/javascript',
|
|
248
|
+
defer: true,
|
|
249
|
+
src: `${embedCode}embed.js?v=1`,
|
|
250
|
+
charset: 'utf-8',
|
|
251
|
+
})
|
|
252
|
+
|
|
253
|
+
const noScriptTag = document.createElement('noscript')
|
|
254
|
+
const imageTag = document.createElement('img')
|
|
255
|
+
imageTag.src = `${embedCode}full.png`
|
|
256
|
+
imageTag.alt = ''
|
|
257
|
+
noScriptTag.appendChild(imageTag)
|
|
258
|
+
|
|
259
|
+
divTag.append(scriptTag, noScriptTag)
|
|
260
|
+
|
|
261
|
+
if (refreshContent == 'true') {
|
|
262
|
+
addContentRefresher(true)
|
|
326
263
|
}
|
|
264
|
+
return
|
|
265
|
+
}
|
|
266
|
+
//Responsives Iframe
|
|
267
|
+
const iframe = document.createElement('iframe')
|
|
268
|
+
//Auflösen nach Tailwind-Klassen //dataWrapper-embed
|
|
269
|
+
iframe.className = 'w-0 !min-w-full border-0'
|
|
270
|
+
iframe.setAttribute('webkitallowfullscreen', '')
|
|
271
|
+
iframe.setAttribute('mozallowfullscreen', '')
|
|
272
|
+
iframe.setAttribute('allowfullscreen', '')
|
|
273
|
+
iframe.setAttribute('scrolling', 'no')
|
|
274
|
+
iframe.setAttribute('frameborder', '0')
|
|
275
|
+
iframe.src = embedCode
|
|
276
|
+
iframe.id = `datawrapper-chart-${uniqueId}`
|
|
277
|
+
if (lazyLoad) {
|
|
278
|
+
iframe.loading = 'lazy'
|
|
279
|
+
}
|
|
280
|
+
rootElement.appendChild(iframe)
|
|
281
|
+
|
|
282
|
+
loadScript(
|
|
283
|
+
'datawrapper-js',
|
|
284
|
+
'https://static.hr.de/hessenschau/datawrapper/responsiveIframe.js',
|
|
285
|
+
true
|
|
286
|
+
)
|
|
287
|
+
if (refreshContent == 'true') {
|
|
288
|
+
addContentRefresher(false)
|
|
327
289
|
}
|
|
328
290
|
}
|
|
329
291
|
|
|
292
|
+
const createUniqueID = function () {
|
|
293
|
+
console.log('Erzeuge einzigartige ID')
|
|
294
|
+
return Math.random()
|
|
295
|
+
.toString(36)
|
|
296
|
+
.replace(/[^a-z]+/g, '')
|
|
297
|
+
.substring(2, 10)
|
|
298
|
+
}
|
|
299
|
+
|
|
330
300
|
const createTwentyThreeDegreesEmbed = function () {
|
|
331
301
|
removeDatapolicyBox()
|
|
332
302
|
|
package/src/stories/views/components/external-service/external_service_with_datapolicy_check.hbs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div class="c-externalService c-externalService__{{this.externalServiceConfig.externalServiceId}}{{#unless
|
|
4
4
|
this.fixedHeight }} -noFixedHeight{{/unless}} js-load"
|
|
5
5
|
data-hr-external-service-ds='{"id":"{{this.externalServiceConfig.externalServiceId}}","embedCode":"{{this.serviceUrl}}","embedType":"{{this.externalServiceConfig.externalServiceEmbedType}}","lazyLoad":{{defaultIfEmpty _lazyLoad false}},"dataPolicyCheck": true, "whiteList":{{this.externalServiceConfig.isWhitelisted}},"iFrameConfig": { {{~#if this.fixedHeight~}}
|
|
6
|
-
"fixedHeight":"{{this.fixedHeight}}"{{~else~}}{{~#if this.aspectRatio}}"aspectRatio":"{{this.aspectRatio}}"{{~else~}}"aspectRatio":"16x9"{{/if}}{{~/if}},"
|
|
6
|
+
"fixedHeight":"{{this.fixedHeight}}"{{~else~}}{{~#if this.aspectRatio}}"aspectRatio":"{{this.aspectRatio}}"{{~else~}}"aspectRatio":"16x9"{{/if}}{{~/if}},"isNoResponsiveIframe":"{{{this.setResponsiveIframe}}}","isWebcomponent":"{{{this.setWebcomponent}}}"{{~#if this.setTimedReloadIframe}},"refreshContent":"{{{this.setTimedReloadIframe}}}","refreshIntervall":"{{this.setTimeForReload}}"{{~/if}} }}'>
|
|
7
7
|
{{~> components/external-service/components/external_service_data_policy ~}}
|
|
8
8
|
</div>
|
|
9
9
|
{{~> components/external-service/components/external_service_caption ~}}
|