hr-design-system-handlebars 1.113.1 → 1.113.3

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 (58) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/assets/brand/hessenschau/conf/locatags.merged.json +3 -0
  3. package/dist/assets/brand/hr/conf/locatags.merged.json +3 -0
  4. package/dist/assets/brand/hr-bigband/conf/locatags.merged.json +3 -0
  5. package/dist/assets/brand/hr-fernsehen/conf/locatags.merged.json +3 -0
  6. package/dist/assets/brand/hr-inforadio/conf/locatags.merged.json +3 -0
  7. package/dist/assets/brand/hr-rundfunkrat/conf/locatags.merged.json +3 -0
  8. package/dist/assets/brand/hr-sinfonieorchester/conf/locatags.merged.json +3 -0
  9. package/dist/assets/brand/hr-werbung/conf/locatags.merged.json +3 -0
  10. package/dist/assets/brand/hr1/conf/locatags.merged.json +3 -0
  11. package/dist/assets/brand/hr2/conf/locatags.merged.json +3 -0
  12. package/dist/assets/brand/hr3/conf/locatags.merged.json +3 -0
  13. package/dist/assets/brand/hr4/conf/locatags.merged.json +3 -0
  14. package/dist/assets/brand/you-fm/conf/locatags.merged.json +3 -0
  15. package/dist/assets/index.css +45 -8
  16. package/dist/assets/js/alpine.js +2 -1
  17. package/dist/assets/js/components/forms/js/contactForm.alpine.js +34 -99
  18. package/dist/assets/js/components/forms/js/inputHandler.alpine.js +2 -36
  19. package/dist/views/components/forms/components/controls.hbs +1 -1
  20. package/dist/views/components/forms/components/input.hbs +1 -1
  21. package/dist/views/components/forms/components/message.hbs +22 -10
  22. package/dist/views/components/forms/components/textarea.hbs +1 -2
  23. package/dist/views/components/forms/webform.hbs +33 -12
  24. package/dist/views_static/components/forms/components/controls.hbs +1 -1
  25. package/dist/views_static/components/forms/components/input.hbs +1 -1
  26. package/dist/views_static/components/forms/components/message.hbs +22 -10
  27. package/dist/views_static/components/forms/components/textarea.hbs +1 -2
  28. package/dist/views_static/components/forms/webform.hbs +33 -12
  29. package/package.json +1 -1
  30. package/src/assets/brand/_default/conf/locatags.json +4 -1
  31. package/src/assets/brand/hessenschau/conf/locatags.merged.json +3 -0
  32. package/src/assets/brand/hr/conf/locatags.merged.json +3 -0
  33. package/src/assets/brand/hr-bigband/conf/locatags.merged.json +3 -0
  34. package/src/assets/brand/hr-fernsehen/conf/locatags.merged.json +3 -0
  35. package/src/assets/brand/hr-inforadio/conf/locatags.merged.json +3 -0
  36. package/src/assets/brand/hr-rundfunkrat/conf/locatags.merged.json +3 -0
  37. package/src/assets/brand/hr-sinfonieorchester/conf/locatags.merged.json +3 -0
  38. package/src/assets/brand/hr-werbung/conf/locatags.merged.json +3 -0
  39. package/src/assets/brand/hr1/conf/locatags.merged.json +3 -0
  40. package/src/assets/brand/hr2/conf/locatags.merged.json +3 -0
  41. package/src/assets/brand/hr3/conf/locatags.merged.json +3 -0
  42. package/src/assets/brand/hr4/conf/locatags.merged.json +3 -0
  43. package/src/assets/brand/you-fm/conf/locatags.merged.json +3 -0
  44. package/src/assets/css/custom-utilities.css +1 -1
  45. package/src/assets/fixtures/content/copytext/copytext_webform.json +9 -1
  46. package/src/assets/fixtures/content/copytext/copytext_webform_simple.json +36 -0
  47. package/src/assets/fixtures/forms/error_messages.inc.json +3 -0
  48. package/src/assets/js/alpine.js +2 -1
  49. package/src/stories/views/components/content/copytext/copytext-form.stories.js +52 -1
  50. package/src/stories/views/components/content/copytext/fixtures/copytext_webform.json +1 -1
  51. package/src/stories/views/components/content/copytext/fixtures/copytext_webform_simple.json +1 -0
  52. package/src/stories/views/components/forms/components/controls.hbs +1 -1
  53. package/src/stories/views/components/forms/components/input.hbs +1 -1
  54. package/src/stories/views/components/forms/components/message.hbs +22 -10
  55. package/src/stories/views/components/forms/components/textarea.hbs +1 -2
  56. package/src/stories/views/components/forms/js/contactForm.alpine.js +34 -99
  57. package/src/stories/views/components/forms/js/inputHandler.alpine.js +2 -36
  58. package/src/stories/views/components/forms/webform.hbs +33 -12
package/CHANGELOG.md CHANGED
@@ -1,3 +1,28 @@
1
+ # v1.113.3 (Tue Oct 29 2024)
2
+
3
+ #### 🐛 Bug Fix
4
+
5
+ - added some improvements to contactform response view [#1130](https://github.com/mumprod/hr-design-system-handlebars/pull/1130) ([@vascoeduardo](https://github.com/vascoeduardo))
6
+
7
+ #### Authors: 1
8
+
9
+ - Vasco ([@vascoeduardo](https://github.com/vascoeduardo))
10
+
11
+ ---
12
+
13
+ # v1.113.2 (Mon Oct 28 2024)
14
+
15
+ #### 🐛 Bug Fix
16
+
17
+ - Form validation script optimization [#1128](https://github.com/mumprod/hr-design-system-handlebars/pull/1128) ([@vascoeduardo](https://github.com/vascoeduardo) [@eduardo-hr](https://github.com/eduardo-hr))
18
+
19
+ #### Authors: 2
20
+
21
+ - [@eduardo-hr](https://github.com/eduardo-hr)
22
+ - Vasco ([@vascoeduardo](https://github.com/vascoeduardo))
23
+
24
+ ---
25
+
1
26
  # v1.113.1 (Mon Oct 28 2024)
2
27
 
3
28
  #### 🐛 Bug Fix
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hessenschau . d e",
209
212
  "meta_application_name": "hessenschau.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr . d e",
209
212
  "meta_application_name": "hr.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr-bigband . d e",
209
212
  "meta_application_name": "hr-bigband.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr-fernsehen . d e",
209
212
  "meta_application_name": "hr-fernsehen.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr-inforadio . d e",
209
212
  "meta_application_name": "hr-inforadio.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr-rundfunkrat . d e",
209
212
  "meta_application_name": "hr-rundfunkrat.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr-sinfonieorchester . d e",
209
212
  "meta_application_name": "hr-sinfonieorchester.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr-werbung . d e",
209
212
  "meta_application_name": "hr-werbung.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr1 . d e",
209
212
  "meta_application_name": "hr1.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr2 . d e",
209
212
  "meta_application_name": "hr2.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr3 . d e",
209
212
  "meta_application_name": "hr3.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite hr4 . d e",
209
212
  "meta_application_name": "hr4.de"
210
213
  }
@@ -205,6 +205,9 @@
205
205
  "webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
206
206
  "webform_send_text_error": "Das Formular konnte nicht versendet werden.",
207
207
  "webform_upload_label": "Datei auswählen",
208
+ "webform_send_title_error": "Das hat leider nicht geklappt!",
209
+ "webform_send_title_success": "Vielen Dank! Die Nachricht wurde verschickt.",
210
+ "webform_send_form_back": "Zurück zum Formular",
208
211
  "header_homepage_link_title": "Startseite you-fm . d e",
209
212
  "meta_application_name": "you-fm.de"
210
213
  }
@@ -1,4 +1,4 @@
1
- .-translate-x-1\/2, .-translate-x-2\/4, .-translate-y-1\/2, .translate-x-0, .translate-y-0, .translate-y-12, .translate-y-3, .translate-y-8, .-rotate-45, .rotate-180, .rotate-45, .scale-100, .scale-50, .scale-75, .scale-y-100, .scale-y-90, .transform, .is-loading::after, label, .hover\:scale-105, .active\:scale-95, .peer-placeholder-shown\:translate-x-0, .peer-placeholder-shown\:translate-y-3, .peer-placeholder-shown\:scale-100, .peer-focus\:translate-x-0, .peer-focus\:translate-y-0, .peer-focus\:rotate-180, .peer-focus\:scale-75 {
1
+ .-translate-x-1\/2, .-translate-x-2\/4, .-translate-y-1\/2, .translate-x-0, .translate-y-0, .translate-y-12, .translate-y-3, .translate-y-8, .-rotate-45, .rotate-180, .rotate-45, .scale-100, .scale-50, .scale-75, .scale-90, .scale-y-100, .scale-y-90, .transform, .is-loading::after, label, .hover\:scale-105, .active\:scale-95, .peer-placeholder-shown\:translate-x-0, .peer-placeholder-shown\:translate-y-3, .peer-placeholder-shown\:scale-100, .peer-focus\:translate-x-0, .peer-focus\:translate-y-0, .peer-focus\:rotate-180, .peer-focus\:scale-75 {
2
2
  --tw-translate-x: 0;
3
3
  --tw-translate-y: 0;
4
4
  --tw-rotate: 0;
@@ -2013,6 +2013,12 @@ article.indexTextDS .indexTextHighlighted .link {
2013
2013
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(.75) scaleY(.75);
2014
2014
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2015
2015
  }
2016
+ .scale-90 {
2017
+ --tw-scale-x: .9;
2018
+ --tw-scale-y: .9;
2019
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(.9) scaleY(.9);
2020
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2021
+ }
2016
2022
  .scale-y-100 {
2017
2023
  --tw-scale-y: 1;
2018
2024
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(1);
@@ -2135,6 +2141,9 @@ article.indexTextDS .indexTextHighlighted .link {
2135
2141
  .gap-5 {
2136
2142
  gap: 1.25rem;
2137
2143
  }
2144
+ .gap-6 {
2145
+ gap: 1.5rem;
2146
+ }
2138
2147
  .gap-8 {
2139
2148
  gap: 2rem;
2140
2149
  }
@@ -2932,6 +2941,10 @@ article.indexTextDS .indexTextHighlighted .link {
2932
2941
  padding-top: 2rem;
2933
2942
  padding-bottom: 2rem;
2934
2943
  }
2944
+ .py-px {
2945
+ padding-top: 1px;
2946
+ padding-bottom: 1px;
2947
+ }
2935
2948
  .pb-0 {
2936
2949
  padding-bottom: 0px;
2937
2950
  }
@@ -2975,9 +2988,6 @@ article.indexTextDS .indexTextHighlighted .link {
2975
2988
  padding-bottom: 16px;
2976
2989
  padding-bottom: var(--footer-padding-bottom);
2977
2990
  }
2978
- .pb-px {
2979
- padding-bottom: 1px;
2980
- }
2981
2991
  .pl-10 {
2982
2992
  padding-left: 2.5rem;
2983
2993
  }
@@ -3564,6 +3574,9 @@ article.indexTextDS .indexTextHighlighted .link {
3564
3574
  .delay-300 {
3565
3575
  transition-delay: 300ms;
3566
3576
  }
3577
+ .delay-75 {
3578
+ transition-delay: 75ms;
3579
+ }
3567
3580
  .duration-0 {
3568
3581
  transition-duration: 0ms;
3569
3582
  }
@@ -3585,6 +3598,9 @@ article.indexTextDS .indexTextHighlighted .link {
3585
3598
  .duration-700 {
3586
3599
  transition-duration: 700ms;
3587
3600
  }
3601
+ .duration-75 {
3602
+ transition-duration: 75ms;
3603
+ }
3588
3604
  .ease-\[cubic-bezier\(0\.68\2c -0\.3\2c 0\.32\2c 1\)\] {
3589
3605
  transition-timing-function: cubic-bezier(0.68,-0.3,0.32,1);
3590
3606
  }
@@ -3605,7 +3621,7 @@ article.indexTextDS .indexTextHighlighted .link {
3605
3621
  border-bottom-color: var(--color-secondary-ds);
3606
3622
  }
3607
3623
  .counter-reset {
3608
- counter-reset: cnt1730148870283;
3624
+ counter-reset: cnt1730197524977;
3609
3625
  }
3610
3626
  .placeholder-text-xs::-webkit-input-placeholder {
3611
3627
  font-size: 0.75rem;
@@ -4019,7 +4035,7 @@ article.indexTextDS .indexTextHighlighted .link {
4019
4035
  --tw-ring-color: rgba(255, 255, 255, 0.5);
4020
4036
  }
4021
4037
  .-ordered {
4022
- counter-increment: cnt1730148870283 1;
4038
+ counter-increment: cnt1730197524977 1;
4023
4039
  }
4024
4040
  .-ordered::before {
4025
4041
  position: absolute;
@@ -4037,7 +4053,7 @@ article.indexTextDS .indexTextHighlighted .link {
4037
4053
  --tw-text-opacity: 1;
4038
4054
  color: rgba(0, 0, 0, 1);
4039
4055
  color: rgba(0, 0, 0, var(--tw-text-opacity));
4040
- content: counter(cnt1730148870283);
4056
+ content: counter(cnt1730197524977);
4041
4057
  }
4042
4058
  /*! ****************************/
4043
4059
  /*! DataPolicy stuff */
@@ -4171,6 +4187,9 @@ select:has(option:checked:not([value=''])) + label {
4171
4187
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important;
4172
4188
  }
4173
4189
  select:has(option:checked[value='']) {
4190
+ -webkit-user-select: none;
4191
+ -moz-user-select: none;
4192
+ user-select: none;
4174
4193
  color: transparent;
4175
4194
  }
4176
4195
  .form-checkbox:checked::after {
@@ -5911,6 +5930,19 @@ select:has(option:checked[value='']) {
5911
5930
  }
5912
5931
  }
5913
5932
  }
5933
+ .placeholder\:select-none::-webkit-input-placeholder {
5934
+ -webkit-user-select: none;
5935
+ user-select: none;
5936
+ }
5937
+ .placeholder\:select-none::-moz-placeholder {
5938
+ -moz-user-select: none;
5939
+ user-select: none;
5940
+ }
5941
+ .placeholder\:select-none::placeholder {
5942
+ -webkit-user-select: none;
5943
+ -moz-user-select: none;
5944
+ user-select: none;
5945
+ }
5914
5946
  .placeholder\:text-gray-dark::-webkit-input-placeholder {
5915
5947
  --tw-text-opacity: 1;
5916
5948
  color: rgba(112, 112, 112, 1);
@@ -6079,7 +6111,8 @@ select:has(option:checked[value='']) {
6079
6111
  background-color: rgba(0, 0, 0, 1);
6080
6112
  background-color: rgba(0, 0, 0, var(--tw-bg-opacity));
6081
6113
  }
6082
- .focus\:pb-0:focus {
6114
+ .focus\:py-0:focus {
6115
+ padding-top: 0px;
6083
6116
  padding-bottom: 0px;
6084
6117
  }
6085
6118
  .focus\:text-white:focus {
@@ -7181,6 +7214,10 @@ select:has(option:checked[value='']) {
7181
7214
  justify-content: space-between;
7182
7215
  }
7183
7216
 
7217
+ .md\:gap-10 {
7218
+ gap: 2.5rem;
7219
+ }
7220
+
7184
7221
  .md\:gap-x-3 {
7185
7222
  -moz-column-gap: 0.75rem;
7186
7223
  column-gap: 0.75rem;
@@ -54,7 +54,8 @@ Alpine.store('sharingBottomPos', {
54
54
  })
55
55
  Alpine.store('forms', {
56
56
  submissionAttempted: [],
57
- serverErrorFields: [{}]
57
+ serverErrorFields: [{}],
58
+ errorMessages: [{}]
58
59
  })
59
60
  // Initialization of data handlers
60
61
  Alpine.data('mainNavigationHandler', mainNavigationHandler)
@@ -1,7 +1,12 @@
1
+ import { uxAction } from 'base/tracking/pianoHelper.subfeature'
2
+
1
3
  export default function contactForm(formId, jsonUrl, errorMessages, multipart, trackingInformations, jsonp = false) {
2
4
  return {
3
5
  isPosting: false,
4
- isWebview:false,
6
+ wasPosted: false,
7
+ wasPostedWithSuccess: false,
8
+ wasPostedWithError: false,
9
+ isWebview: window.parent.document.documentElement.classList.contains('webview'),
5
10
  ajaxTimeout: 60 * 1000,
6
11
  form: this.$refs[formId],
7
12
  formWrapper: this.$refs[formId].closest("#formWrapper"),
@@ -13,47 +18,20 @@ export default function contactForm(formId, jsonUrl, errorMessages, multipart, t
13
18
  },
14
19
  formInit(){
15
20
  this.checkForJsonURL()
16
- console.log("%cformId:", 'color: green' ,formId);
17
- console.log("%cform:", 'color: green' ,this.form);
18
- console.log("%cformWrapper:", 'color: green' ,this.formWrapper);
19
- console.log("%cactionUrl:", 'color: green' ,this.actionUrl);
20
- console.log("%cjsonUrl:", 'color: green', jsonUrl);
21
- console.log("%cerrorMessages:", 'color: green', errorMessages);
22
- console.log("%cmultipart:", 'color: green', multipart);
23
- console.log("%ctrackingInformations:", 'color: green', trackingInformations);
24
-
25
21
  this.$store.forms.submissionAttempted[formId] = false;
22
+ this.$store.forms.errorMessages = JSON.parse( "{" + errorMessages.replace(/"/g,'"') + "}")
26
23
  },
27
- clickHandler(event) {
28
- console.log("event:",event);
29
- console.log('check for Error:',formId);
30
- console.log('form:',this.form);
31
-
24
+ submitButtonHandler(event) {
32
25
  if(this.form.reportValidity()){
33
- // this.logData(event,form);
34
26
  this.handleSubmit(event,this.form)
35
27
  } else {
36
28
  this.$store.forms.submissionAttempted[formId] = true;
37
29
  }
38
30
  },
39
- logData(event,form) {
40
- // TODO - FOR DEBUGGIN CN BE REMOVED AT THE END
41
- const formData = new FormData(form);
42
- const fields = Array.from(form.elements);
43
- // Log the serialized form data
44
- console.log(fields);
45
-
46
- // Convert the FormData to a serialized string
47
- const serializedData = Array.from(formData.entries())
48
- .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
49
- .join('&');
50
-
51
- // Log the serialized form data
52
- console.log('serialized DATA: ' + serializedData);
53
- console.log('DATA:', new URLSearchParams(new FormData(form)).toString());
54
-
31
+ retryHandler() {
32
+ this.wasPosted = false;
33
+ this.wasPostedWithError = false;
55
34
  },
56
- // TODO - Validation error handler (adapt to your case)
57
35
  handleValidationErrors(errors) {
58
36
  console.log('Validation Errors:', errors);
59
37
  this.$store.forms.serverErrorFields[formId] = errors;
@@ -61,29 +39,19 @@ export default function contactForm(formId, jsonUrl, errorMessages, multipart, t
61
39
  },
62
40
  resetValidationErrors() {
63
41
  this.$store.forms.serverErrorFields[formId] = {}
64
- },
65
-
42
+ },
66
43
  handleSubmit(event, form ) {
67
44
  event.preventDefault();
68
45
 
69
- if (!this.isWebview) {
70
- //uxAction(trackingInformations); // Assuming this is a tracking library
46
+ if (!this.isWebview) {
47
+ uxAction(trackingInformations);
71
48
  }
72
49
 
73
50
  if (this.isPosting) return;
74
51
  this.isPosting = true;
75
52
 
76
- // TODO mit alpine umsetzen
77
- //const preloadIcon = formWrapper.querySelector('.js-preloadIcon');
78
- //const loadingIcon = formWrapper.querySelector('.js-loadingIcon');
79
-
80
- // Show loading indicator
81
- //preloadIcon.classList.add('-isHidden');
82
- //loadingIcon.classList.remove('-isHidden');
83
-
84
53
  console.log('DATA:', new URLSearchParams(new FormData(form)).toString());
85
54
 
86
- // Define ajaxOptions based on form type (without jQuery $.ajax)
87
55
  let ajaxOptions = {
88
56
  method: jsonp ? 'GET' : 'POST',
89
57
  headers: {
@@ -96,13 +64,13 @@ export default function contactForm(formId, jsonUrl, errorMessages, multipart, t
96
64
  if (jsonp) {
97
65
  ajaxOptions.url = this.actionUrl;
98
66
  ajaxOptions.headers['Content-Type'] = 'application/json; charset=utf-8';
99
- ajaxOptions.body = new URLSearchParams(new FormData(form)).toString(); // For JSONP case
67
+ ajaxOptions.body = new URLSearchParams(new FormData(form)).toString();
100
68
  } else if (multipart) {
101
69
  ajaxOptions = {
102
70
  method: 'POST',
103
71
  url: this.actionUrl,
104
72
  timeout: 600 * 1000,
105
- body: new FormData(form), // No URLSearchParams, we use FormData for multipart
73
+ body: new FormData(form),
106
74
  processData: false,
107
75
  headers: {}
108
76
  };
@@ -110,10 +78,9 @@ export default function contactForm(formId, jsonUrl, errorMessages, multipart, t
110
78
  ajaxOptions.url = `${this.actionUrl}?${responseFormatParam}`;
111
79
  }
112
80
 
113
- // Using fetch API instead of $.ajax
114
81
  fetch(ajaxOptions.url, ajaxOptions)
115
82
  .then(async (response) => {
116
- const data = await response.text(); // Assuming the rponse is text or JSON
83
+ const data = await response.text();
117
84
  if (response.ok) {
118
85
  console.log('Done');
119
86
  console.log(data);
@@ -126,74 +93,42 @@ export default function contactForm(formId, jsonUrl, errorMessages, multipart, t
126
93
  break;
127
94
  case 'OK':
128
95
  console.log("OK");
129
- this.replaceAnimated(
130
- this.formWrapper,
131
- this.form.querySelector('#successMessage').innerHTML,
132
- true
133
- );
96
+ this.wasPosted = true;
97
+ this.wasPostedWithSuccess = true;
134
98
  break;
135
99
  default:
136
100
  console.log("default");
137
- this.replaceAnimated(
138
- this.formWrapper,
139
- this.form.querySelector('#errorMessage').innerHTML,
140
- true
141
- );
101
+ this.wasPosted = true;
102
+ this.wasPostedWithError = true;
142
103
  break;
143
104
  }
144
105
  } else {
145
- this.replaceAnimated(this.formWrapper, data, true);
106
+
107
+ this.wasPosted = true;
108
+ this.wasPostedWithError = true;
146
109
  }
147
- /*
148
- if (eventOnSuccess) {
149
- fireEvent(eventOnSuccess, true);
150
- } */
151
-
152
- /* if (rootElement.id) {
153
- window.location.hash = rootElement.id;
154
- } */
110
+ if (formId) {
111
+ window.location.hash = formId;
112
+ }
155
113
  } else {
114
+ this.wasPosted = true;
115
+ this.wasPostedWithError = true;
156
116
  throw new Error('Network response was not ok.');
117
+
157
118
  }
158
119
  })
159
120
  .catch((error) => {
160
121
  console.error('Fail:', error);
161
- this.replaceAnimated(
162
- this.formWrapper,
163
- '<div class="c-form success">Das hat leider nicht funktioniert!</div>',
164
- true
165
- );
122
+ this.wasPosted = true;
123
+ this.wasPostedWithError = true;
166
124
  })
167
125
  .finally(() => {
168
126
  console.log('Always');
169
- // TODO MIT ALPINE UMSETZEN
170
- //preloadIcon.classList.remove('-isHidden');
171
- //loadingIcon.classList.add('-isHidden');
172
127
  this.isPosting = false;
173
128
  });
174
129
  },
175
- // Helper function to replace content with animation (replacing hrQuery's replaceAnimated)
176
- replaceAnimated(wrapper, newContent, withFade = true) {
177
- if (withFade) {
178
- wrapper.style.opacity = 0;
179
- setTimeout(() => {
180
- wrapper.innerHTML = newContent;
181
- wrapper.style.opacity = 1;
182
- }, 300);
183
- } else {
184
- wrapper.innerHTML = newContent;
185
- }
186
- },
187
- // Fire event utility (could be Alpine.js specific or custom)
188
- fireEvent(eventName, success){
189
- const event = new CustomEvent(eventName, { detail: success });
190
- document.dispatchEvent(event);
191
- },
192
130
  getSubmissionAttempted() {
193
131
  return this.$store.forms.submissionAttempted[formId]
194
- }
195
-
132
+ }
196
133
  }
197
- }
198
-
199
-
134
+ }
@@ -90,42 +90,8 @@ export default function inputHandler(element, formId, errorMandatory, type, erro
90
90
  return Boolean(this.$store.forms.serverErrorFields[formId]?.[name]);
91
91
  },
92
92
  getServerError() {
93
- let serverError = "Server Error: "
94
- switch (this.$store.forms.serverErrorFields[formId][name]) {
95
-
96
- case 'form_error_required':
97
- serverError += "Pflichtfeld"
98
- break
99
- case 'form_error_max':
100
- serverError += "Zu viele Zeichen"
101
- break
102
- case 'form_error_validurl':
103
- serverError += "Ungültige URL"
104
- break
105
- case 'form_error_empty':
106
- serverError += "Darf nicht ausgefüllt werden"
107
- break
108
- case 'form_error_constants_or_null':
109
- serverError += "Ungültiger Wert"
110
- break
111
- case 'form_error_constants':
112
- serverError += "Ungültiger Wert"
113
- break
114
- case 'form_error_max_multivalue':
115
- serverError += "Die maximale Anzahl an Antwortmöglichkeiten wurde überschritten"
116
- break
117
- case 'vote_error_identity_already_used':
118
- serverError += "Unter dieser E-Mail-Adresse wurde bereits abgestimmt. Eine weitere Abstimmung ist nicht möglich."
119
- break
120
- case 'vote_error_token_request_count_exceeded':
121
- serverError += "Die maximale Anzahl an Bestätigungs-E-Mails wurde bereits verschickt."
122
- break
123
- case 'form_error_email':
124
- serverError += "Ungültige E-Mail-Adresse"
125
- break
126
- default:
127
- return false
128
- }
93
+ let errorName = this.$store.forms.serverErrorFields[formId][name]
94
+ let serverError = this.$store.forms.errorMessages[errorName]
129
95
  return serverError
130
96
  }
131
97
  };
@@ -4,7 +4,7 @@
4
4
  <label class="order-2 cursor-pointer {{> components/button/utilities/button_base_classes}} {{> components/button/utilities/button_variation_classes _variant='primary'}} {{> components/button/utilities/button_dimension_classes _size='lg'}}">
5
5
  <span class="hidden" :class="{'hidden': !isPosting}">{{> components/base/image/icon _icon="reload" _addClass="w-5 h-5 fill-white dark:fill-text-dark animate-spin"}}</span>
6
6
  <span class="" :class="{'hidden': isPosting}">{{> components/base/image/icon _icon="send-ds" _addClass="w-5 h-5 fill-white dark:fill-text-dark "}}</span>
7
- <input type="submit" class="pl-2 cursor-pointer" value="Absenden" @click.prevent="clickHandler($event)"/>
7
+ <input type="submit" class="pl-2 cursor-pointer" value="Absenden" @click.prevent="submitButtonHandler($event)"/>
8
8
  </label>
9
9
 
10
10
  {{#> components/button/button _variant="tertiary"_size="lg" _css="order-1 mr-4" _type="reset"}}
@@ -4,7 +4,7 @@
4
4
  x-init="validateField()"
5
5
  x-ignore
6
6
  >
7
- <input class="relative w-full h-12 pt-4 pl-4 placeholder-transparent bg-white text-text dark:bg-black dark:text-text-dark autofill:shadow-autofill border-form-highlight dark:form-highlight-dark pr-9 peer border-y focus:border-y-2 border-t-transparent dark:border-t-transparent focus:outline-none"
7
+ <input class="relative w-full h-12 pt-4 pl-4 placeholder-transparent bg-white placeholder:select-none text-text dark:bg-black dark:text-text-dark autofill:shadow-autofill border-form-highlight dark:form-highlight-dark pr-9 peer border-y focus:border-y-2 border-t-transparent dark:border-t-transparent focus:outline-none"
8
8
  :class="{'border-form-highlight dark:form-highlight-dark': hideError(),'border-error dark:border-error-dark': hideDescription() }"
9
9
  x-model="input{{getRandom}}"
10
10
  id="input{{getRandom}}"