hr-design-system-handlebars 1.114.41 → 1.114.43

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 (51) hide show
  1. package/.storybook/preview.js +4 -1
  2. package/CHANGELOG.md +24 -0
  3. package/dist/assets/index.css +15 -3
  4. package/dist/assets/js/components/newsletter/js/newNewsletterDs.feature.js +88 -0
  5. package/dist/assets/js/components/newsletter/js/newsletterDs.feature.js +22 -0
  6. package/dist/views/components/content/copytext/components/audio.hbs +2 -2
  7. package/dist/views/components/content/copytext/components/audioeventlivestream.hbs +2 -2
  8. package/dist/views/components/content/copytext/components/image/image.hbs +4 -4
  9. package/dist/views/components/content/copytext/components/media/media_figure.hbs +2 -2
  10. package/dist/views/components/content/copytext/components/posterteaser.hbs +1 -1
  11. package/dist/views/components/content/copytext/components/video/video.hbs +2 -2
  12. package/dist/views/components/content/copytext/components/videolivestream.hbs +2 -2
  13. package/dist/views/components/content/copytext/copytext.hbs +2 -2
  14. package/dist/views/components/content/copytext/copytext_body.hbs +12 -12
  15. package/dist/views/components/newsletter/components/new_newsletter_form.hbs +11 -14
  16. package/dist/views/components/newsletter/components/newsletter_form.hbs +60 -0
  17. package/dist/views/components/newsletter/newsletter.hbs +13 -13
  18. package/dist/views/components/podcast/podcast_player.hbs +1 -1
  19. package/dist/views_static/components/content/copytext/components/audio.hbs +2 -2
  20. package/dist/views_static/components/content/copytext/components/audioeventlivestream.hbs +2 -2
  21. package/dist/views_static/components/content/copytext/components/image/image.hbs +4 -4
  22. package/dist/views_static/components/content/copytext/components/media/media_figure.hbs +2 -2
  23. package/dist/views_static/components/content/copytext/components/posterteaser.hbs +1 -1
  24. package/dist/views_static/components/content/copytext/components/video/video.hbs +2 -2
  25. package/dist/views_static/components/content/copytext/components/videolivestream.hbs +2 -2
  26. package/dist/views_static/components/content/copytext/copytext.hbs +2 -2
  27. package/dist/views_static/components/content/copytext/copytext_body.hbs +12 -12
  28. package/dist/views_static/components/newsletter/components/new_newsletter_form.hbs +11 -14
  29. package/dist/views_static/components/newsletter/components/newsletter_form.hbs +60 -0
  30. package/dist/views_static/components/newsletter/newsletter.hbs +13 -13
  31. package/dist/views_static/components/podcast/podcast_player.hbs +1 -1
  32. package/package.json +1 -1
  33. package/src/assets/brand/_default/conf/locatags.json +14 -1
  34. package/src/stories/views/components/content/copytext/components/audio.hbs +2 -2
  35. package/src/stories/views/components/content/copytext/components/audioeventlivestream.hbs +2 -2
  36. package/src/stories/views/components/content/copytext/components/image/image.hbs +4 -4
  37. package/src/stories/views/components/content/copytext/components/media/media_figure.hbs +2 -2
  38. package/src/stories/views/components/content/copytext/components/posterteaser.hbs +1 -1
  39. package/src/stories/views/components/content/copytext/components/video/video.hbs +2 -2
  40. package/src/stories/views/components/content/copytext/components/videolivestream.hbs +2 -2
  41. package/src/stories/views/components/content/copytext/copytext.hbs +2 -2
  42. package/src/stories/views/components/content/copytext/copytext_body.hbs +12 -12
  43. package/src/stories/views/components/content/copytext/copytext_ticker.stories.js +405 -0
  44. package/src/stories/views/components/newsletter/components/new_newsletter_form.hbs +11 -14
  45. package/src/stories/views/components/newsletter/components/newsletter_form.hbs +60 -0
  46. package/src/stories/views/components/newsletter/fixtures/newsletter.json +10 -43
  47. package/src/stories/views/components/newsletter/js/newNewsletterDs.feature.js +88 -0
  48. package/src/stories/views/components/newsletter/js/newsletterDs.feature.js +22 -0
  49. package/src/stories/views/components/newsletter/newsletter.hbs +13 -13
  50. package/src/stories/views/components/podcast/podcast_player.hbs +1 -1
  51. package/src/stories/views/components/newsletter/components/newsletter_form.hbs.DEPRECATED +0 -106
@@ -0,0 +1,405 @@
1
+ import copytext from './copytext.hbs'
2
+ import copytext_json from './fixtures/copytext.json'
3
+ import copytext_media_components_json from './fixtures/copytext_media_components.json'
4
+ import copytext_non_media_components_json from './fixtures/copytext_non_media_components.json'
5
+ import copytext_posterteaser_json from './fixtures/copytext_posterteaser.json'
6
+ import copytext_additionalInfo_json from './fixtures/copytext_additionalInfo.json'
7
+ import copytext_cite_json from './fixtures/copytext_cite.json'
8
+ import copytext_podcastepisode_json from './fixtures/copytext_podcastepisode.json'
9
+ import copytext_faq_json from './fixtures/copytext_faq.json'
10
+ import copytext_jobposting_json from './fixtures/copytext_jobposting.json'
11
+ import copytext_image_json from './fixtures/copytext_image.json'
12
+ import copytext_infobox_json from './fixtures/copytext_infobox.json'
13
+ import copytext_downloadbox_json from './fixtures/copytext_downloadbox.json'
14
+ import copytext_filedownload_json from './fixtures/copytext_filedownload.json'
15
+ import copytext_externalservice_json from './fixtures/copytext_externalservice.json'
16
+ import copytext_video_json from './fixtures/copytext_video.json'
17
+ import copytext_audio_json from './fixtures/copytext_audio.json'
18
+ import copytext_audio_event_stream_json from './fixtures/copytext_audio_livestream.json'
19
+ import copytext_livestream_json from './fixtures/copytext_livestream.json'
20
+
21
+ const Template = ({ ...args }) => {
22
+ return copytext({ ...args })
23
+ }
24
+
25
+ export default {
26
+ title: 'Komponenten/Content/Copytext/Copytext im Ticker',
27
+ decorators: [
28
+ (Story) => {
29
+ return `
30
+ <div class="c-ticker__timelineBody timeline js-timeline-body">
31
+ <ul class="c-ticker__itemList">
32
+ <li class="c-tickerItem " id="">
33
+ <div class="c-tickerItem__anchor" id="5cc13944-0c1a-4066-9bc4-a8d387b6ee57"></div>
34
+ <div class="c-tickerItem__dekoline"></div>
35
+ <div class="c-tickerItem__header">
36
+ <div class="c-tickerItem__time">
37
+ <time datetime="2023-11-30T11:43+0100">
38
+ Do. 30.11.23, 11:43 Uhr
39
+ </time>
40
+ </div>
41
+ <div class="c-tickerItem__istop"><span class="c-tickerItem__istop__text">Top-Thema</span></div>
42
+ </div>
43
+ <div class="c-ticker__timeline">
44
+ <div class="c-ticker__timeline__dot"></div>
45
+ <div class="c-ticker__timeline__line"></div>
46
+ </div>
47
+ <div class="c-tickerItem__content">
48
+ <h3 class="c-tickerItem__title text__headline copytext__headline">Nach Krawallen: Politiker fordert hartes
49
+ Durchgreifen</h3>
50
+ ${Story()}
51
+ </div>
52
+ </li>
53
+ </ul>
54
+ </div>
55
+ <style>
56
+ @media (min-width: 48em) {
57
+ .timeline {
58
+ max-width: 685px;
59
+ margin-left: 6px;
60
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
61
+ }
62
+ }
63
+
64
+ .c-ticker__timelineBody {
65
+ grid-area: content;
66
+ -webkit-order: 3;
67
+ -ms-flex-order: 3;
68
+ order: 3;
69
+ -ms-grid-column: 2;
70
+ -ms-grid-column-span: 3;
71
+ -ms-grid-row: 3
72
+ }
73
+
74
+ @media (min-width: 64em) {
75
+ .c-ticker__timelineBody {
76
+ margin-top: 6px
77
+ }
78
+ }
79
+
80
+ .c-ticker__timelineBody .pagination {
81
+ padding-top: .875em
82
+ }
83
+
84
+ .c-ticker__timeline {
85
+ position: absolute;
86
+ height: 100%;
87
+ -webkit-order: 1;
88
+ -ms-flex-order: 1;
89
+ order: 1;
90
+ width: .21875rem;
91
+ margin-left: .625rem;
92
+ left: 0;
93
+ top: 2rem;
94
+ z-index: 1
95
+ }
96
+
97
+ .c-ticker__timeline__dot {
98
+ width: .4375rem;
99
+ height: .4375rem;
100
+ background-color: #000;
101
+ position: relative;
102
+ top: -.0625rem;
103
+ left: -.125rem;
104
+ border-radius: .4375rem
105
+ }
106
+
107
+ @media (min-width: 48em) {
108
+ .c-ticker__timeline__dot {
109
+ top: 0
110
+ }
111
+ }
112
+
113
+ .c-ticker__timeline__line {
114
+ width: .0625rem;
115
+ height: 100%;
116
+ border-left: thin dotted #000;
117
+ position: relative;
118
+ left: .0625rem;
119
+ top: -.25rem
120
+ }
121
+
122
+ @media (min-width: 48em) {
123
+ .c-ticker__timeline {
124
+ top: 2.5rem;
125
+ left: 1.75rem
126
+ }
127
+ }
128
+
129
+ @media (min-width: 64em) {
130
+ .c-ticker__timeline {
131
+ top: 2.375rem;
132
+ left: .4375rem
133
+ }
134
+ }
135
+
136
+ .c-tickerItem {
137
+ position: relative;
138
+ display: flex;
139
+ flex-direction: column;
140
+ border-bottom: 0.0625rem solid #efefef;
141
+ padding: 1.25rem 1.375rem 0rem 1.75rem;
142
+ }
143
+
144
+ @media (min-width: 48em) and (max-width: 63.9375em) {
145
+ .c-tickerItem {
146
+ padding: 1.875rem 2.5rem 2.5rem 5rem;
147
+ }
148
+ }
149
+
150
+ @media (min-width: 64em) {
151
+ .c-tickerItem {
152
+ padding: 1.75rem 1.25rem 1.75rem 2.5rem;
153
+ width: 100%;
154
+ }
155
+ }
156
+
157
+ .c-tickerItem__anchor {
158
+ padding-top: 4rem;
159
+ margin-top: -4rem;
160
+ }
161
+
162
+ @media (min-width: 64em) {
163
+ .c-tickerItem__anchor {
164
+ padding-top: 1rem;
165
+ margin-top: -1rem;
166
+ }
167
+ }
168
+
169
+ .c-tickerItem__dekoline {
170
+ position: absolute;
171
+ border-top: 0.0625rem solid #797979;
172
+ width: 0.75rem;
173
+ margin-left: -0.875rem;
174
+ margin-top: 0.875rem;
175
+ }
176
+
177
+ @media (min-width: 48em) {
178
+ .c-tickerItem__dekoline {
179
+ width: 1.875rem;
180
+ margin-left: -2.5rem;
181
+ margin-top: 0.8125rem;
182
+ }
183
+ }
184
+
185
+ @media (min-width: 64em) {
186
+ .c-tickerItem__dekoline {
187
+ width: 0.875rem;
188
+ margin-left: -1.25rem;
189
+ }
190
+ }
191
+
192
+ .c-tickerItem.-isPinned {
193
+ border-left: 0.875rem solid #006dc1;
194
+ padding-left: 0.875rem;
195
+ }
196
+
197
+ @media (min-width: 48em) and (max-width: 63.9375em) {
198
+ .c-tickerItem.-isPinned {
199
+ border-left: 2.5rem solid #006dc1;
200
+ padding: 1.5rem 2.5rem 2.5rem 2.5rem;
201
+ }
202
+ }
203
+
204
+ @media (min-width: 64em) {
205
+ .c-tickerItem.-isPinned {
206
+ border-left: 1.25rem solid #006dc1;
207
+ padding: 1.5rem 1.25rem 1.75rem 1.25rem;
208
+ }
209
+ }
210
+
211
+ .c-tickerItem.-isPinned .c-tickerItem__dekoline {
212
+ display: none;
213
+ }
214
+
215
+ .c-tickerItem.-isPinned .c-tickerItem__time {
216
+ padding-left: 0;
217
+ }
218
+
219
+ .c-tickerItem.-isTopnews {
220
+ background: #efefef;
221
+ border-bottom: 0.0625rem solid #fff;
222
+ }
223
+
224
+ .c-tickerItem.-isTopnews+.c-tickerItem__separator {
225
+ background: #fff;
226
+ }
227
+
228
+ .c-tickerItem.-isTopnews .c-ticker__timeline__dot {
229
+ width: 0.75rem;
230
+ height: 0.75rem;
231
+ top: -0.1875rem;
232
+ left: -0.3125rem;
233
+ border-radius: 0.75rem;
234
+ background-color: #a3492d;
235
+ }
236
+
237
+ .c-tickerItem.-isTopnews .c-tickerItem__dekoline {
238
+ border-color: #a3492d;
239
+ }
240
+
241
+ .c-tickerItem__time {
242
+ font-family: RobotoSlab, serif;
243
+ font-weight: normal;
244
+ display: flex;
245
+ color: #606060;
246
+ font-size: 0.75rem;
247
+ padding-right: 0.625rem;
248
+ }
249
+
250
+ @media (min-width: 48em) {
251
+ .c-tickerItem__time {
252
+ font-size: 0.875rem;
253
+ }
254
+ }
255
+
256
+ .c-tickerItem__pin {
257
+ display: inline-block;
258
+ fill: #a3492d;
259
+ }
260
+
261
+ .c-tickerItem__pin::before {
262
+ content: '|';
263
+ position: relative;
264
+ top: 0.1875rem;
265
+ color: #a3492d;
266
+ }
267
+
268
+ .c-tickerItem__pin .icon {
269
+ width: 1.0625rem;
270
+ height: 0.9375rem;
271
+ vertical-align: bottom;
272
+ }
273
+
274
+ @media (min-width: 48em) {
275
+ .c-tickerItem__pin::before {
276
+ top: 0;
277
+ }
278
+
279
+ .c-tickerItem__pin .icon {
280
+ width: 1.1875rem;
281
+ height: 1.1875rem;
282
+ }
283
+ }
284
+
285
+ .c-tickerItem__istop {
286
+ font-family: RobotoSlab, serif;
287
+ font-weight: normal;
288
+ display: inline-block;
289
+ color: #a3492d;
290
+ }
291
+
292
+ .c-tickerItem__istop::before {
293
+ content: '|';
294
+ position: relative;
295
+ left: 0.0625rem;
296
+ top: 0.0625rem;
297
+ }
298
+
299
+ .c-tickerItem__istop__text {
300
+ margin-left: 0.5625rem;
301
+ }
302
+
303
+ .c-tickerItem__header {
304
+ font-size: 0.75rem;
305
+ line-height: 1.0625rem;
306
+ order: 1;
307
+ display: flex;
308
+ width: 100%;
309
+ padding-top: 0.3125rem;
310
+ }
311
+
312
+ .c-tickerItem__header p:last-child {
313
+ margin-bottom: 0;
314
+ }
315
+
316
+ @media (min-width: 48em) {
317
+ .c-tickerItem__header {
318
+ font-size: 0.875rem;
319
+ }
320
+ }
321
+
322
+ .c-tickerItem__content {
323
+ order: 2;
324
+ margin-left: 0;
325
+ margin-top: 0.625rem;
326
+ margin-bottom: 1.25rem;
327
+ }
328
+
329
+ .c-tickerItem__content .copytext__clearBox {
330
+ margin-top: 1.5rem;
331
+ margin-bottom: 0.875rem;
332
+ }
333
+
334
+ .c-tickerItem__footer {
335
+ order: 3;
336
+ margin-top: 1.25rem;
337
+ margin-bottom: 1.25rem;
338
+ display: block;
339
+ }
340
+
341
+ .c-tickerItem__footer :only-child.ticker_sharing {
342
+ margin-top: -0.25rem !important;
343
+ }
344
+
345
+ @media (min-width: 48em) {
346
+ .c-tickerItem__footer {
347
+ margin-bottom: 0px;
348
+ }
349
+ }
350
+
351
+ .c-tickerItem__footer .c-tickerItem__authorWrapper {
352
+ min-height: 2.5rem;
353
+ min-width: 2.5rem;
354
+ }
355
+
356
+ .c-tickerItem__footer .ticker_sharing {
357
+ position: relative;
358
+ z-index: 1;
359
+ margin-top: -2.75rem;
360
+ float: right;
361
+ }
362
+
363
+ .c-tickerItem__footer .ticker_sharing .icon--teilen-button {
364
+ fill: #006dc1;
365
+ }
366
+
367
+ .c-tickerItem__title {
368
+ flex-grow: 1;
369
+ color: #000;
370
+ margin-top: 0.375rem;
371
+ }
372
+
373
+ .c-tickerItem__separator {
374
+ height: 0.0625rem;
375
+ background: #efefef;
376
+ }
377
+
378
+
379
+ </style>`
380
+ },
381
+ ],
382
+ parameters: { layout: 'fullscreen', chromatic: { disableSnapshot: true } }
383
+ }
384
+
385
+ export const SnapshotWithMedia = {
386
+ render: Template.bind({}),
387
+ name: 'Snapshot 1',
388
+ args: {
389
+ ...copytext_media_components_json,
390
+ _isTickerCopytext: true},
391
+ parameters: {
392
+ chromatic: { disableSnapshot: false },
393
+ },
394
+ }
395
+
396
+ export const SnapshotWithoutMedia = {
397
+ render: Template.bind({}),
398
+ name: 'Snapshot 2',
399
+ args: {
400
+ ...copytext_non_media_components_json,
401
+ _isTickerCopytext: true},
402
+ parameters: {
403
+ chromatic: { disableSnapshot: false },
404
+ },
405
+ }
@@ -1,37 +1,33 @@
1
+ <div class="js-newsletterFormWrapper">
1
2
  <form class="c-form o-box -accented -breakout js-form js-load" id="form--{{nextRandom}}" data-hr-new-newsletter='{
2
- "trackingInformations": {{this.trackingInformations}} }'
3
- action="{{configProperty "newsletter.subscription.endpoint"}}" method="post" accept-charset="utf-8">
3
+ "trackingInformations": {{this.trackingInformations}} }' action="{{configProperty "newsletter.subscription.endpoint"}}" method="post" accept-charset="utf-8">
4
4
 
5
- <div class="c-form__row -expanded">
6
5
  {{~> components/forms/components/input
7
6
  _type="email"
8
- _isEmail="true"
7
+ _isEmail=true
9
8
  _name="email"
10
9
  _label="E-Mail"
11
10
  _labelClass="hide"
12
11
  _description=""
13
12
  _wrapperClass=(if this.isHidden "hidden")
14
13
  _tabindex=(if this.isHidden "-1")
15
- _required="true"
14
+ _required=true
16
15
  _maxLength="140"
17
16
  _errorMandatory="Bitte füllen Sie dieses Pflichtfeld aus"
18
17
  _errorEmail="Bitte geben Sie eine gültige E-Mail-Adresse ein."
19
18
  _formId=../_formId
20
19
  }}
21
- </div>
22
-
23
- <div class="c-form__row">
20
+
24
21
  {{~> components/forms/components/choice
25
- _inGroup="false"
22
+ _inGroup=false
26
23
  _type="checkbox"
27
24
  _name="checkbox"
28
25
  _label=(loca "accept_data_privacy_regulation_link")
29
- _description="Das ist der Beschreibungstext von Checkbox"
30
- _required="true"
26
+ _description=""
27
+ _required=true
31
28
  _errorMandatory="Bitte wählen Sie dieses Pflichtfeld aus"
32
29
  }}
33
- </a>
34
- </div>
30
+
35
31
 
36
32
  {{~> components/forms/components/controls }}
37
33
 
@@ -59,4 +55,5 @@
59
55
  <script type="text/html" class="js-alreadyRegisteredMessage">
60
56
  {{{include "components/newsletter/components/newsletter_already_registered" }}}
61
57
  </script>
62
- </form>
58
+ </form>
59
+ </div>
@@ -0,0 +1,60 @@
1
+ <form class="c-form o-box -accented -breakout js-form" id="form--{{nextRandom}}"
2
+ action="{{configProperty "mailserver.newsletter"}}" method="post" enctype="application/x-www-form-urlencoded"
3
+ accept-charset="utf-8">
4
+
5
+ {{~> components/forms/components/input
6
+ _type="email"
7
+ _isEmail="true"
8
+ _name="email"
9
+ _label="E-Mail"
10
+ _labelClass="hide"
11
+ _description=""
12
+ _wrapperClass=(if this.isHidden "hidden")
13
+ _tabindex=(if this.isHidden "-1")
14
+ _required="true"
15
+ _maxLength="140"
16
+ _errorMandatory="Bitte füllen Sie dieses Pflichtfeld aus"
17
+ _errorEmail="Bitte geben Sie eine gültige E-Mail-Adresse ein."
18
+ _formId=../_formId
19
+ }}
20
+
21
+ {{> components/forms/components/choiceGroup
22
+ _name="Registrierung"
23
+ _required=true
24
+ _inputClass=""
25
+ _type="radio"
26
+ _locaKey="newsletter_subscribe_text"
27
+ _inGroup=true
28
+ _isHorizontalLayout=true
29
+ _multipleChoice=false
30
+ _formId=../_formId
31
+ _items=this.items
32
+ }}
33
+
34
+
35
+ {{~> components/forms/components/controls }}
36
+
37
+ {{~> components/forms/components/input
38
+ _formField=this.formData.INXMAIL_HTTP_REDIRECT
39
+ _name="INXMAIL_HTTP_REDIRECT"
40
+ _type="hidden"
41
+ _value=this.successLink
42
+ _hasLabel=false
43
+ }}
44
+
45
+ {{~>components/forms/components/input
46
+ _formField=this.formData.INXMAIL_HTTP_REDIRECT_ERROR
47
+ _name="INXMAIL_HTTP_REDIRECT_ERROR"
48
+ _type="hidden"
49
+ _value=this.errorLink
50
+ _hasLabel=false
51
+ }}
52
+
53
+ {{~> components/forms/components/input
54
+ _formField=this.formData.backlink
55
+ _name="backlink"
56
+ _type="hidden"
57
+ _value=this.backlinkUuid
58
+ _hasLabel=false
59
+ }}
60
+ </form>
@@ -1,46 +1,13 @@
1
1
  {
2
2
  "useNewNewsletter":true,
3
3
  "title":"hessenschau update - Der Newsletter für Hessen",
4
- "description":"Hier können Sie sich für das hessenschau update anmelden. Der Newsletter wird Ihnen von Montag bis Freitag kostenlos und unverbindlich zugestellt. Wenn Sie sich in unseren Verteiler eintragen, erhalten Sie eine E-Mail mit der Bitte, Ihre Aufnahme noch einmal zu bestätigen. Sie können den Newsletter jederzeit wieder ",
5
- "fields":[
6
- {
7
- "type":{
8
- "isText":true,
9
- "asString":"email",
10
- "isEmail": true
11
- },
12
- "name":"email",
13
- "label":"Email",
14
- "description":"Das ist der Beschreibungstext (*Pflichtfeld)",
15
- "defaultValue":"",
16
- "isHidden":false,
17
- "isRequired":true,
18
- "maxLength":"140"
19
- },
20
- {
21
- "isGrouped":false,
22
- "type":{
23
- "isChoice":true,
24
- "asString":"checkbox"
25
- },
26
- "name":"checkbox",
27
- "label":"Ich bin damit einverstanden, dass der hr die von mir im vorstehenden Formular angegebenen personenbezogenen Daten für den Zweck der Kontaktaufnahme mit Upload verarbeitet. Eine Weitergabe an Dritte findet nicht statt, es sei denn, es wird ausdrücklich darauf hingewiesen. Unsere Datenschutzerklärung mit sämtlichen Informationen gemäß Art 13 DSGVO zur Datenverarbeitung durch den hr und zu Ihren Rechten können Sie unter Datenschutzerklärung einsehen. Den Datenschutzbeauftragten des hr erreichen Sie unter datenschutz@hr.de.",
28
- "isMeta":false,
29
- "description":"Das ist der Beschreibungstext von Checkbox",
30
- "isRequired":true
31
- },
32
- {
33
- "isGrouped":false,
34
- "type":{
35
- "isChoice":true,
36
- "asString":"checkbox"
37
- },
38
- "name":"checkbox",
39
- "label":"",
40
- "isMeta":false,
41
- "description":"Das ist der Beschreibungstext von Checkbox",
42
- "isRequired":true
43
- }
44
- ]
45
-
46
- }
4
+ "description":"Hier können Sie sich für das hessenschau update anmelden. Der Newsletter wird Ihnen von Montag bis Freitag kostenlos und unverbindlich zugestellt. Wenn Sie sich in unseren Verteiler eintragen, erhalten Sie eine E-Mail mit der Bitte, Ihre Aufnahme noch einmal zu bestätigen. Sie können den Newsletter jederzeit wieder abbestellen." ,
5
+ "items":[
6
+ {"value":"","label":"Anmelden","title":"Anmelden","name":"Registrierung","isSelected":false},
7
+ {"value":"","label":"Abmelden","title":"Abmelden","name":"Registrierung","isSelected":false}
8
+ ],
9
+ "successLink":"Link wenn erfolgreich",
10
+ "errorLink": "Link wenn Fehler",
11
+ "backlinkUuid": "Backlink mit UUID (altes Voting)",
12
+ "mailingList":"E-Mail-Liste"
13
+ }
@@ -0,0 +1,88 @@
1
+ import { hr$, listen, replaceAnimated } from 'hrQuery'
2
+ import { uxAction } from 'base/tracking/pianoHelper.subfeature'
3
+
4
+ const Newsletter = function (context) {
5
+ 'use strict'
6
+ const { element: rootElement } = context,
7
+ actionUrl = rootElement && rootElement.getAttribute('action'),
8
+ formWrapper = rootElement.parentNode,
9
+ options = context.options,
10
+ trackingInformations = options.trackingInformations
11
+
12
+ async function postData() {
13
+ const formData = new FormData(rootElement)
14
+ // use timestamp in seconds because the newsletter tool cannot handle milliseconds
15
+ formData.set('confirm-data-protection', Math.ceil(Date.now() / 1000))
16
+
17
+ const response = await fetch(actionUrl, {
18
+ method: 'POST',
19
+ body: formData,
20
+ })
21
+ return response
22
+ }
23
+
24
+ const handleSubmit = function (event) {
25
+ uxAction(trackingInformations)
26
+ event.preventDefault()
27
+ postData()
28
+ .then((response) => {
29
+ if (!response.ok) {
30
+ throw new Error('Netzwerk- oder Serverfehler')
31
+ }
32
+ return response.json()
33
+ })
34
+ .then((responseStatus) => {
35
+ switch (responseStatus.status) {
36
+ case 'success':
37
+ replaceAnimated(
38
+ formWrapper,
39
+ hr$('.js-successMessage', rootElement)[0].innerHTML,
40
+ true,
41
+ () => {
42
+ listen('click', handleFormReload, hr$('.js-formReload')[0])
43
+ },
44
+ )
45
+ break
46
+ case 'no_valid_newsletters':
47
+ replaceAnimated(
48
+ formWrapper,
49
+ hr$('.js-alreadyRegisteredMessage', rootElement)[0].innerHTML,
50
+ true,
51
+ () => {
52
+ listen('click', handleFormReload, hr$('.js-formReload')[0])
53
+ },
54
+ )
55
+ break
56
+ default:
57
+ replaceAnimated(
58
+ formWrapper,
59
+ hr$('.js-errorMessage', rootElement)[0].innerHTML,
60
+ true,
61
+ () => {
62
+ listen('click', handleFormReload, hr$('.js-formReload')[0])
63
+ },
64
+ )
65
+ }
66
+ })
67
+ .catch((error) => {
68
+ console.error('Beim Ausführen des Fetch ist ein Fehler aufgetreten.', error)
69
+ replaceAnimated(
70
+ formWrapper,
71
+ hr$('.js-errorMessage', rootElement)[0].innerHTML,
72
+ true,
73
+ () => {
74
+ listen('click', handleFormReload, hr$('.js-formReload')[0])
75
+ },
76
+ )
77
+ })
78
+ }
79
+
80
+ const handleFormReload = function (event) {
81
+ event.preventDefault()
82
+ replaceAnimated(formWrapper, rootElement.outerHTML, true)
83
+ }
84
+
85
+ listen('submit', handleSubmit, rootElement)
86
+ }
87
+
88
+ export default Newsletter
@@ -0,0 +1,22 @@
1
+ import { hr$ } from 'hrQuery'
2
+
3
+ const Newsletter = function (context) {
4
+ 'use strict'
5
+
6
+ const { element: rootElement } = context,
7
+ subscribeRadio = hr$('.js-newsletter-subscribe', rootElement)[0],
8
+ unsubscribeRadio = hr$('.js-newsletter-unsubscribe', rootElement)[0]
9
+
10
+ if (subscribeRadio && unsubscribeRadio) {
11
+ subscribeRadio.onclick = function () {
12
+ subscribeRadio.checked = true
13
+ unsubscribeRadio.checked = false
14
+ }
15
+ unsubscribeRadio.onclick = function () {
16
+ subscribeRadio.checked = false
17
+ unsubscribeRadio.checked = true
18
+ }
19
+ }
20
+ }
21
+
22
+ export default Newsletter