hr-design-system-handlebars 1.114.85 → 1.114.86

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 (75) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/assets/brand/hessenschau/conf/locatags.merged.json +3 -1
  3. package/dist/assets/brand/hr/conf/locatags.merged.json +3 -1
  4. package/dist/assets/brand/hr-bigband/conf/locatags.merged.json +3 -1
  5. package/dist/assets/brand/hr-fernsehen/conf/locatags.merged.json +3 -1
  6. package/dist/assets/brand/hr-inforadio/conf/locatags.merged.json +3 -1
  7. package/dist/assets/brand/hr-rundfunkrat/conf/locatags.merged.json +3 -1
  8. package/dist/assets/brand/hr-sinfonieorchester/conf/locatags.merged.json +3 -1
  9. package/dist/assets/brand/hr-werbung/conf/locatags.merged.json +3 -1
  10. package/dist/assets/brand/hr1/conf/locatags.merged.json +3 -1
  11. package/dist/assets/brand/hr2/conf/locatags.merged.json +5 -3
  12. package/dist/assets/brand/hr3/conf/locatags.merged.json +5 -3
  13. package/dist/assets/brand/hr4/conf/locatags.merged.json +3 -1
  14. package/dist/assets/brand/you-fm/conf/locatags.merged.json +3 -1
  15. package/dist/assets/index.css +3 -3
  16. package/dist/assets/js/components/newsletter/js/newsletterForm.alpine.js +13 -7
  17. package/dist/views/components/content/copytext/components/newsletter.hbs +1 -1
  18. package/dist/views/components/content/copytext/copytext_body.hbs +1 -1
  19. package/dist/views/components/newsletter/components/new_newsletter_form.hbs +40 -69
  20. package/dist/{views_static/components/newsletter/components/controls_no_alpine.hbs → views/components/newsletter/components/newsletter_controls.hbs} +1 -1
  21. package/dist/views/components/newsletter/components/newsletter_fields.hbs +44 -0
  22. package/dist/views/components/newsletter/components/newsletter_form.hbs +24 -56
  23. package/dist/views/components/newsletter/components/newsletter_result.hbs +31 -15
  24. package/dist/views/components/newsletter/components/newsletter_success.hbs +1 -0
  25. package/dist/views/components/newsletter/newsletter.hbs +4 -23
  26. package/dist/views_static/components/content/copytext/components/newsletter.hbs +1 -1
  27. package/dist/views_static/components/content/copytext/copytext_body.hbs +1 -1
  28. package/dist/views_static/components/newsletter/components/new_newsletter_form.hbs +40 -69
  29. package/dist/{views/components/newsletter/components/controls_no_alpine.hbs → views_static/components/newsletter/components/newsletter_controls.hbs} +1 -1
  30. package/dist/views_static/components/newsletter/components/newsletter_fields.hbs +44 -0
  31. package/dist/views_static/components/newsletter/components/newsletter_form.hbs +24 -56
  32. package/dist/views_static/components/newsletter/components/newsletter_result.hbs +31 -15
  33. package/dist/views_static/components/newsletter/components/newsletter_success.hbs +1 -0
  34. package/dist/views_static/components/newsletter/newsletter.hbs +4 -23
  35. package/package.json +1 -1
  36. package/src/assets/brand/_default/conf/locatags.json +3 -1
  37. package/src/assets/brand/hessenschau/conf/locatags.merged.json +3 -1
  38. package/src/assets/brand/hr/conf/locatags.merged.json +3 -1
  39. package/src/assets/brand/hr-bigband/conf/locatags.merged.json +3 -1
  40. package/src/assets/brand/hr-fernsehen/conf/locatags.merged.json +3 -1
  41. package/src/assets/brand/hr-inforadio/conf/locatags.merged.json +3 -1
  42. package/src/assets/brand/hr-rundfunkrat/conf/locatags.merged.json +3 -1
  43. package/src/assets/brand/hr-sinfonieorchester/conf/locatags.merged.json +3 -1
  44. package/src/assets/brand/hr-werbung/conf/locatags.merged.json +3 -1
  45. package/src/assets/brand/hr1/conf/locatags.merged.json +3 -1
  46. package/src/assets/brand/hr2/conf/locatags.merged.json +5 -3
  47. package/src/assets/brand/hr3/conf/locatags.merged.json +5 -3
  48. package/src/assets/brand/hr4/conf/locatags.merged.json +3 -1
  49. package/src/assets/brand/you-fm/conf/locatags.merged.json +3 -1
  50. package/src/stories/views/components/content/copytext/components/newsletter.hbs +1 -1
  51. package/src/stories/views/components/content/copytext/copytext-newsletter.stories.js +97 -0
  52. package/src/stories/views/components/content/copytext/copytext.stories.js +0 -2
  53. package/src/stories/views/components/content/copytext/copytext_body.hbs +1 -1
  54. package/src/stories/views/components/content/copytext/fixtures/copytext_newsletter.json +18 -0
  55. package/src/stories/views/components/newsletter/components/new_newsletter_form.hbs +40 -69
  56. package/src/stories/views/components/newsletter/components/{controls_no_alpine.hbs → newsletter_controls.hbs} +1 -1
  57. package/src/stories/views/components/newsletter/components/newsletter_fields.hbs +44 -0
  58. package/src/stories/views/components/newsletter/components/newsletter_form.hbs +24 -56
  59. package/src/stories/views/components/newsletter/components/newsletter_result.hbs +31 -15
  60. package/src/stories/views/components/newsletter/components/newsletter_success.hbs +1 -0
  61. package/src/stories/views/components/newsletter/fixtures/new_newsletter.json +4 -8
  62. package/src/stories/views/components/newsletter/js/newsletterForm.alpine.js +13 -7
  63. package/src/stories/views/components/newsletter/newsletter.hbs +4 -23
  64. package/src/stories/views/components/newsletter/newsletter.stories.js +5 -16
  65. package/dist/assets/js/components/newsletter/js/newNewsletterDs.feature.js +0 -88
  66. package/dist/assets/js/components/newsletter/js/newsletterDs.feature.js +0 -22
  67. package/dist/views/components/newsletter/newsletter_registered.hbs +0 -0
  68. package/dist/views/components/newsletter/newsletter_success.hbs +0 -0
  69. package/dist/views_static/components/newsletter/newsletter_registered.hbs +0 -0
  70. package/dist/views_static/components/newsletter/newsletter_success.hbs +0 -0
  71. package/src/stories/views/components/newsletter/fixtures/newsletter.json +0 -15
  72. package/src/stories/views/components/newsletter/js/newNewsletterDs.feature.js +0 -88
  73. package/src/stories/views/components/newsletter/js/newsletterDs.feature.js +0 -22
  74. package/src/stories/views/components/newsletter/newsletter_registered.hbs +0 -0
  75. package/src/stories/views/components/newsletter/newsletter_success.hbs +0 -0
@@ -1,63 +1,31 @@
1
1
  <div id="formWrapper" class="mt-4">
2
- <form class="relative flex flex-col justify-center overflow-hidden group js-form" id="form{{nextRandom}}" x-ref="form{{getRandom}}" ax-load="" x-data="" x-init="" @submit.prevent=""
3
- action="{{configProperty "mailserver.newsletter"}}" method="post" enctype="application/x-www-form-urlencoded"
4
- accept-charset="utf-8">
5
2
 
6
- {{~> components/forms/components/input
7
- _type="email"
8
- _isEmail="true"
9
- _name="email"
10
- _label="E-Mail"
11
- _labelClass=""
12
- _description=""
13
- _required="true"
14
- _maxLength="140"
15
- _errorMandatory="Bitte füllen Sie dieses Pflichtfeld aus"
16
- _errorEmail="Bitte geben Sie eine gültige E-Mail-Adresse ein."
17
- _formId=../_formId
18
- }}
3
+ <form class="relative flex flex-col justify-center overflow-hidden group js-form"
4
+ id="form{{nextRandom}}"
5
+ x-ref="form{{getRandom}}"
6
+ ax-load
7
+ x-data="newsletterForm('form{{getRandom}}','{{this.trackingInformations}}')"
8
+ x-init="formInit()"
9
+ x-ignore
10
+ @submit.prevent
11
+ action="{{~#if (isStorybook)~}}{{this.jsonURL}}{{else}}{{configProperty "mailserver.newsletter"}}{{/if}}"
12
+ method="post"
13
+ enctype="application/x-www-form-urlencoded"
14
+ accept-charset="utf-8"
15
+ >
19
16
 
20
- {{> components/forms/components/choiceGroup
21
- _name="Registrierung"
22
- _required=true
23
- _inputClass=""
24
- _type="radio"
25
- _locaKey="newsletter_subscribe_text"
26
- _inGroup=true
27
- _isHorizontalLayout=true
28
- _multipleChoice=false
29
- _formId=../_formId
30
- _items=this.items
31
- }}
17
+ <div x-show="!wasPosted"
18
+ x-transition:enter="transition ease-out duration-300 delay-300"
19
+ x-transition:enter-start="opacity-0 transform scale-90"
20
+ x-transition:enter-end="opacity-100 transform scale-100"
21
+ x-transition:leave="transition ease-in duration-75 delay-0"
22
+ x-transition:leave-start="opacity-100 transform scale-100"
23
+ x-transition:leave-end="opacity-0 transform scale-90"
24
+ >
25
+ {{> components/newsletter/components/newsletter_old_fields }}
32
26
 
27
+ {{> components/newsletter/components/newsletter_controls }}
28
+ </div>
33
29
 
34
- {{~> components/forms/components/controls}}
35
-
36
- {{~> components/forms/components/input
37
- _formField=this.formData.INXMAIL_HTTP_REDIRECT
38
- _name="INXMAIL_HTTP_REDIRECT"
39
- _type="hidden"
40
- _wrapperClass="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
- _wrapperClass="hidden"
50
- _value=this.errorLink
51
- _hasLabel=false
52
- }}
53
-
54
- {{~> components/forms/components/input
55
- _formField=this.formData.backlink
56
- _name="backlink"
57
- _type="hidden"
58
- _wrapperClass="hidden"
59
- _value=this.backlinkUuid
60
- _hasLabel=false
61
- }}
62
30
  </form>
63
31
  </div>
@@ -1,15 +1,31 @@
1
- <div class="c-feedbackBox">
2
- <h2 class="c-feedbackBox__headline">{{loca _locaKeyTitle}}</h2>
3
- <p class="c-feedbackBox__button">
4
- {{#with this.backlink}}
5
- <a class="c-form__button js-formReload" href="{{this}}#{{../uuid}}">{{loca "newsletter_form_back"}}</a>
6
- {{/with}}
7
- </p>
8
- <p class="c-feedbackBox__text">
9
- {{#if _locaKeyText}}
10
- {{loca _locaKeyText}}
11
- {{else}}
12
- {{{_text}}}
13
- {{/if}}
14
- </p>
15
- </div>
1
+ <div class="flex flex-col justify-between w-full gap-6 md:gap-10">
2
+ <div class="flex items-center gap-x-2 md:gap-x-3">
3
+ {{#if _success}}
4
+ {{> components/forms/components/success_icon}}
5
+ <h3 class="font-bold text-success pt-0.5">{{~loca "newsletter_title_success"}}</h3>
6
+ {{else}}
7
+ {{#if _alreadyRegistered}}
8
+ {{> components/forms/components/error_icon _class="!block"}}
9
+ <h3 class="font-bold text-error dark:text-error-dark pt-0.5">{{~loca "newsletter_title_already_registered"}}</h3>
10
+ {{else}}
11
+ {{> components/forms/components/error_icon _class="!block"}}
12
+ <h3 class="font-bold text-error dark:text-error-dark pt-0.5">{{~loca "newsletter_title_error"}}</h3>
13
+ {{/if}}
14
+ {{/if}}
15
+ </div>
16
+ </div>
17
+ <span class="font-copy text-text dark:text-text-dark">
18
+ {{#if _locaKeyText}}
19
+ {{loca _locaKeyText}}
20
+ {{else}}
21
+ {{{_text}}}
22
+ {{/if}}
23
+ </span>
24
+ <div class="flex justify-end">
25
+ {{#> components/button/button _variant="primary" _size="lg" }}
26
+ <span class="text-base ds-button-label ">{{loca "newsletter_form_back"}}</span>
27
+ {{/components/button/button}}
28
+ {{#*inline "htmlProperties"}}
29
+ @click="retryHandler"
30
+ {{/inline}}
31
+ </div>
@@ -2,6 +2,7 @@
2
2
  {{> components/newsletter/components/newsletter_result
3
3
  _locaKeyTitle="newsletter_title_success"
4
4
  _text=this.successText.richtext
5
+ _success=_success
5
6
  }}
6
7
  {{else}}
7
8
  {{> components/newsletter/components/newsletter_result
@@ -1,14 +1,10 @@
1
1
  {
2
- "useNewNewsletter":true,
3
2
  "title":"hessenschau update - Der Newsletter für Hessen",
4
3
  "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
- "successText":{"richText":"Ficken sie sich oder wie sie heißen, sie kriegen den Newsletter"},
10
- "registeredText":{"richText":"Ficken sie sich oder wie sie heißen, sie sind bereits bei uns"},
11
- "errorText":{"richText":"Ficken sie sich oder wie sie heißen, leider nicht funktioniert"},
4
+ "jsonURL": "https://hessenschau-nl.sr.de/api/newsletter-api-subscribe.php",
5
+ "successText":{"richText":"Sie erhalten in wenigen Minuten eine E-Mail an die von Ihnen angegebene Adresse. Erst nach einem Klick auf den darin enthaltenen Bestätigungslink erhalten Sie unseren Newsletter."},
6
+ "registeredText":{"richText":"Sollten Sie ihr Abonnement kündigen oder verwalten wollen, können Sie dies <a href=\"https://hessenschau-nl.sr.de/newsletter-login.php\" class=\"{nuc https://hessenschau-nl.sr.de/newsletter-login.php nuc}link unbreakable\" target=\"_blank\"><span class=\"unbreakable\">hier</a> tun."},
7
+ "errorText":{"richText":"Aufgrund eines technischen Fehlers können wir derzeit Ihre Anfrage nicht bearbeiten. Bitte versuchen Sie es zu einem späteren Zeitpunkt noch einmal."},
12
8
  "uuid":"d91b7e16-d476-425f-a535-587c6957df37",
13
9
  "successLink":"Link wenn erfolgreich",
14
10
  "errorLink": "Link wenn Fehler",
@@ -38,10 +38,13 @@ export default function newsletterForm(formId,trackingInformations) {
38
38
  }
39
39
  },
40
40
  retryHandler() {
41
- this.wasPosted = false;
42
- this.wasPostedWithError = false;
43
- this.scrollToElementAndCenterWithTimeout(this.formWrapper.previousElementSibling, 50)
44
-
41
+ this.wasPosted = false;
42
+ this.wasPostedWithSuccess = false;
43
+ this.wasPostedWithError = false;
44
+ this.wasPostedAlreadyRegistered = false;
45
+ this.isPosting = false;
46
+ this.scrollToElementAndCenterWithTimeout(this.formWrapper.previousElementSibling, 50)
47
+
45
48
  },
46
49
  handleValidationErrors(errors) {
47
50
  console.log('Validation Errors:', errors);
@@ -82,9 +85,12 @@ export default function newsletterForm(formId,trackingInformations) {
82
85
  return response
83
86
  })
84
87
  .then(async response => {
85
- switch (response.body) {
86
- case 'OK':
87
- console.log("OK");
88
+ const data = await response.text();
89
+ const responseData = JSON.parse(data);
90
+ console.log(responseData);
91
+ switch (responseData.status) {
92
+ case 'success':
93
+ console.log("success");
88
94
  this.wasPosted = true;
89
95
  this.wasPostedWithSuccess = true;
90
96
  this.scrollToElementAndCenterWithTimeout(this.formWrapper.previousElementSibling, 0)
@@ -1,24 +1,5 @@
1
- {{#if this.useNewNewsletter}}
2
- <div id="{{this.uuid}}" class="relative bg-highlight-1 dark:bg-highlight-1-dark sm:rounded-tl-hr sm:rounded-br-hr px-5 sm:px-13 pb-8 pt-6 sm:pt-12 mt-7 sm:mt-12 mb-5 article-full-width sm:article-narrow {{_addClass}}">
3
- {{~> components/base/a11y/hiddenText _locaTag="story_newsletter_intro_sr" ~}}
4
- <h3 class="mb-6 text-2xl md:text-3xl font-headingSerif sm:mb-12 text-text dark:text-text-dark">
5
- {{this.title}}
6
- </h3>
7
- {{#if this.description}}
8
- <p class="mt-4 text-base font-copy sm:text-lg sm:mt-5 dark:text-text-dark">
9
- {{{this.description}}}
10
- </p>
11
- {{/if}}
1
+ <div id="{{this.uuid}}" class="relative bg-highlight-1 dark:bg-highlight-1-dark sm:rounded-tl-hr sm:rounded-br-hr px-5 sm:px-13 pb-8 pt-6 sm:pt-12 mt-7 sm:mt-12 mb-5 article-full-width sm:article-narrow {{_addClass}}">
2
+ {{~> components/base/a11y/hiddenText _locaTag="story_newsletter_intro_sr" ~}}
12
3
  {{> components/newsletter/components/new_newsletter_form}}
13
- {{~> components/base/a11y/hiddenText _locaTag="story_newsletter_outro_sr" ~}}
14
- </div>
15
- {{else}}
16
- <div id="{{this.uuid}}" class="js-load relative bg-highlight-1 dark:bg-highlight-1-dark sm:rounded-tl-hr sm:rounded-br-hr px-5 sm:px-13 pb-8 pt-6 sm:pt-12 mt-7 sm:mt-12 mb-5 article-full-width sm:article-narrow {{_addClass}}" data-hr-newsletter-ds='{"url": "{{this.url.nocache}}"}'>
17
- {{~> components/base/a11y/hiddenText _locaTag="story_newsletter_intro_sr" ~}}
18
- <h3 class="mb-6 text-2xl md:text-3xl font-headingSerif sm:mb-12 text-text dark:text-text-dark">
19
- {{this.title}}
20
- </h3>
21
- {{> components/newsletter/components/newsletter_form}}
22
- {{~> components/base/a11y/hiddenText _locaTag="story_newsletter_outro_sr" ~}}
23
- </div>
24
- {{/if}}
4
+ {{~> components/base/a11y/hiddenText _locaTag="story_newsletter_outro_sr" ~}}
5
+ </div>
@@ -18,17 +18,18 @@ export default {
18
18
  fetchMock: {
19
19
  mocks: [
20
20
  {
21
- matcher: 'http://localhost:6006/',
21
+ matcher: 'https://ugc-hessenschau.dev-ext.hrcms.gcp.cloud.hr.de',
22
22
  response: {
23
23
  status: 200,
24
- message: 'success',
25
24
  body: {
26
- status: ''
25
+ status: 'success',
27
26
  },
28
27
  },
29
28
  }
30
29
  ],
31
- }
30
+ },
31
+ layout: 'fullscreen',
32
+ chromatic: { disableSnapshot: true }
32
33
  }
33
34
  }
34
35
  const TemplateNewsletterNew = (args) => {
@@ -38,13 +39,6 @@ const TemplateNewsletterNew = (args) => {
38
39
  return hbsTemplate({ ...args })
39
40
  }
40
41
 
41
- const TemplateNewsletterOld = (args) => {
42
- let hbsTemplate = handlebars.compile(`
43
- {{> components/newsletter/newsletter }}
44
- `)
45
- return hbsTemplate({ ...args })
46
- }
47
-
48
42
  export const Default = {
49
43
  render: TemplateNewsletterNew.bind({}),
50
44
  name: 'Neuer Newsletter',
@@ -67,10 +61,5 @@ export const Default = {
67
61
  }
68
62
  }
69
63
 
70
- export const Newsletter_old = {
71
- render: TemplateNewsletterOld.bind({}),
72
- name: 'Alter Newsletter',
73
- args: OldNewsletterJson,
74
- }
75
64
 
76
65
 
@@ -1,88 +0,0 @@
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
@@ -1,22 +0,0 @@
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
@@ -1,15 +0,0 @@
1
- {
2
- "useNewNewsletter":false,
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 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
- "uuid":"d91b7e16-d476-425f-a535-587c6957df37",
10
- "successLink":"Link wenn erfolgreich",
11
- "errorLink": "Link wenn Fehler",
12
- "backlinkUuid": "Backlink mit UUID (altes Voting)",
13
- "mailingList":"E-Mail-Liste",
14
- "trackingInformations":"Tracking"
15
- }
@@ -1,88 +0,0 @@
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
@@ -1,22 +0,0 @@
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