hr-design-system-handlebars 1.111.3 → 1.111.4
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 +14 -0
- package/dist/assets/brand/hessenschau/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr-bigband/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr-fernsehen/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr-inforadio/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr-rundfunkrat/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr-sinfonieorchester/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr-werbung/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr1/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr2/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr3/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/hr4/conf/locatags.merged.json +1 -0
- package/dist/assets/brand/you-fm/conf/locatags.merged.json +1 -0
- package/dist/assets/index.css +46 -6
- package/dist/assets/js/components/forms/js/inputHandler.alpine.js +31 -0
- package/dist/views/components/forms/components/choice.hbs +1 -1
- package/dist/views/components/forms/components/fields.hbs +2 -2
- package/dist/views/components/forms/components/upload.hbs +73 -0
- package/dist/views_static/components/forms/components/choice.hbs +1 -1
- package/dist/views_static/components/forms/components/fields.hbs +2 -2
- package/dist/views_static/components/forms/components/upload.hbs +73 -0
- package/package.json +1 -1
- package/src/assets/brand/_default/conf/locatags.json +2 -1
- package/src/assets/brand/hessenschau/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr-bigband/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr-fernsehen/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr-inforadio/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr-rundfunkrat/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr-sinfonieorchester/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr-werbung/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr1/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr2/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr3/conf/locatags.merged.json +1 -0
- package/src/assets/brand/hr4/conf/locatags.merged.json +1 -0
- package/src/assets/brand/you-fm/conf/locatags.merged.json +1 -0
- package/src/assets/css/custom-utilities.css +3 -3
- package/src/assets/fixtures/content/copytext/copytext_webform.json +10 -0
- package/src/assets/fixtures/forms/form_fields.inc.json +4 -4
- package/src/assets/fixtures/forms/form_upload.json +8 -0
- package/src/stories/views/components/content/copytext/fixtures/copytext_webform.json +1 -1
- package/src/stories/views/components/forms/components/choice.hbs +1 -1
- package/src/stories/views/components/forms/components/fields.hbs +2 -2
- package/src/stories/views/components/forms/components/upload.hbs +73 -0
- package/src/stories/views/components/forms/fixtures/form_upload.json +1 -0
- package/src/stories/views/components/forms/form_upload.stories.js +34 -0
- package/src/stories/views/components/forms/js/inputHandler.alpine.js +31 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# v1.111.4 (Fri Oct 18 2024)
|
|
2
|
+
|
|
3
|
+
#### 🐛 Bug Fix
|
|
4
|
+
|
|
5
|
+
- DPE-3307: Upload [#1123](https://github.com/mumprod/hr-design-system-handlebars/pull/1123) (saad.elbaciri@hr.de [@vascoeduardo](https://github.com/vascoeduardo) [@selbaciri](https://github.com/selbaciri))
|
|
6
|
+
|
|
7
|
+
#### Authors: 3
|
|
8
|
+
|
|
9
|
+
- Saad El Baciri ([@selbaciri](https://github.com/selbaciri))
|
|
10
|
+
- selbaciri (saad.elbaciri@hr.de)
|
|
11
|
+
- Vasco ([@vascoeduardo](https://github.com/vascoeduardo))
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
1
15
|
# v1.111.3 (Fri Oct 18 2024)
|
|
2
16
|
|
|
3
17
|
#### 🐛 Bug Fix
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hessenschau . d e",
|
|
196
197
|
"meta_application_name": "hessenschau.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr . d e",
|
|
196
197
|
"meta_application_name": "hr.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-bigband . d e",
|
|
196
197
|
"meta_application_name": "hr-bigband.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-fernsehen . d e",
|
|
196
197
|
"meta_application_name": "hr-fernsehen.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-inforadio . d e",
|
|
196
197
|
"meta_application_name": "hr-inforadio.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-rundfunkrat . d e",
|
|
196
197
|
"meta_application_name": "hr-rundfunkrat.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-sinfonieorchester . d e",
|
|
196
197
|
"meta_application_name": "hr-sinfonieorchester.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-werbung . d e",
|
|
196
197
|
"meta_application_name": "hr-werbung.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr1 . d e",
|
|
196
197
|
"meta_application_name": "hr1.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr2 . d e",
|
|
196
197
|
"meta_application_name": "hr2.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr3 . d e",
|
|
196
197
|
"meta_application_name": "hr3.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr4 . d e",
|
|
196
197
|
"meta_application_name": "hr4.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite you-fm . d e",
|
|
196
197
|
"meta_application_name": "you-fm.de"
|
|
197
198
|
}
|
package/dist/assets/index.css
CHANGED
|
@@ -1852,6 +1852,11 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
1852
1852
|
.min-w-full {
|
|
1853
1853
|
min-width: 100%;
|
|
1854
1854
|
}
|
|
1855
|
+
.min-w-min {
|
|
1856
|
+
min-width: -webkit-min-content;
|
|
1857
|
+
min-width: -moz-min-content;
|
|
1858
|
+
min-width: min-content;
|
|
1859
|
+
}
|
|
1855
1860
|
.max-w-3\/4 {
|
|
1856
1861
|
max-width: 75%;
|
|
1857
1862
|
}
|
|
@@ -2118,6 +2123,9 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
2118
2123
|
.justify-around {
|
|
2119
2124
|
justify-content: space-around;
|
|
2120
2125
|
}
|
|
2126
|
+
.gap-2 {
|
|
2127
|
+
gap: 0.5rem;
|
|
2128
|
+
}
|
|
2121
2129
|
.gap-3 {
|
|
2122
2130
|
gap: 0.75rem;
|
|
2123
2131
|
}
|
|
@@ -2256,6 +2264,9 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
2256
2264
|
.whitespace-pre-wrap {
|
|
2257
2265
|
white-space: pre-wrap;
|
|
2258
2266
|
}
|
|
2267
|
+
.text-nowrap {
|
|
2268
|
+
text-wrap: nowrap;
|
|
2269
|
+
}
|
|
2259
2270
|
.break-words {
|
|
2260
2271
|
word-wrap: break-word;
|
|
2261
2272
|
}
|
|
@@ -2537,6 +2548,11 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
2537
2548
|
background-color: rgba(243, 244, 246, 1);
|
|
2538
2549
|
background-color: rgba(243, 244, 246, var(--tw-bg-opacity));
|
|
2539
2550
|
}
|
|
2551
|
+
.bg-gray-300 {
|
|
2552
|
+
--tw-bg-opacity: 1;
|
|
2553
|
+
background-color: rgba(209, 213, 219, 1);
|
|
2554
|
+
background-color: rgba(209, 213, 219, var(--tw-bg-opacity));
|
|
2555
|
+
}
|
|
2540
2556
|
.bg-gray-500 {
|
|
2541
2557
|
--tw-bg-opacity: 1;
|
|
2542
2558
|
background-color: rgba(107, 114, 128, 1);
|
|
@@ -2774,6 +2790,9 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
2774
2790
|
fill: #006eb7;
|
|
2775
2791
|
fill: var(--color-link);
|
|
2776
2792
|
}
|
|
2793
|
+
.fill-red-600 {
|
|
2794
|
+
fill: #dc2626;
|
|
2795
|
+
}
|
|
2777
2796
|
.fill-search {
|
|
2778
2797
|
fill: #000000;
|
|
2779
2798
|
fill: var(--search-icon-color);
|
|
@@ -2980,6 +2999,9 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
2980
2999
|
.pl-9 {
|
|
2981
3000
|
padding-left: 2.25rem;
|
|
2982
3001
|
}
|
|
3002
|
+
.pr-1 {
|
|
3003
|
+
padding-right: 0.25rem;
|
|
3004
|
+
}
|
|
2983
3005
|
.pr-10 {
|
|
2984
3006
|
padding-right: 2.5rem;
|
|
2985
3007
|
}
|
|
@@ -3252,6 +3274,11 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
3252
3274
|
color: #000000;
|
|
3253
3275
|
color: var(--color-footer-text);
|
|
3254
3276
|
}
|
|
3277
|
+
.text-gray-500 {
|
|
3278
|
+
--tw-text-opacity: 1;
|
|
3279
|
+
color: rgba(107, 114, 128, 1);
|
|
3280
|
+
color: rgba(107, 114, 128, var(--tw-text-opacity));
|
|
3281
|
+
}
|
|
3255
3282
|
.text-gray-dark {
|
|
3256
3283
|
--tw-text-opacity: 1;
|
|
3257
3284
|
color: rgba(112, 112, 112, 1);
|
|
@@ -3298,6 +3325,11 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
3298
3325
|
color: #005293;
|
|
3299
3326
|
color: var(--color-primary-ds);
|
|
3300
3327
|
}
|
|
3328
|
+
.text-red-700 {
|
|
3329
|
+
--tw-text-opacity: 1;
|
|
3330
|
+
color: rgba(185, 28, 28, 1);
|
|
3331
|
+
color: rgba(185, 28, 28, var(--tw-text-opacity));
|
|
3332
|
+
}
|
|
3301
3333
|
.text-search-footer-text {
|
|
3302
3334
|
color: #000000;
|
|
3303
3335
|
color: var(--color-search-footer-text);
|
|
@@ -3570,7 +3602,7 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
3570
3602
|
border-bottom-color: var(--color-secondary-ds);
|
|
3571
3603
|
}
|
|
3572
3604
|
.counter-reset {
|
|
3573
|
-
counter-reset:
|
|
3605
|
+
counter-reset: cnt1729262089915;
|
|
3574
3606
|
}
|
|
3575
3607
|
.placeholder-text-xs::-webkit-input-placeholder {
|
|
3576
3608
|
font-size: 0.75rem;
|
|
@@ -3984,7 +4016,7 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
3984
4016
|
--tw-ring-color: rgba(255, 255, 255, 0.5);
|
|
3985
4017
|
}
|
|
3986
4018
|
.-ordered {
|
|
3987
|
-
counter-increment:
|
|
4019
|
+
counter-increment: cnt1729262089915 1;
|
|
3988
4020
|
}
|
|
3989
4021
|
.-ordered::before {
|
|
3990
4022
|
position: absolute;
|
|
@@ -4002,7 +4034,7 @@ article.indexTextDS .indexTextHighlighted .link {
|
|
|
4002
4034
|
--tw-text-opacity: 1;
|
|
4003
4035
|
color: rgba(0, 0, 0, 1);
|
|
4004
4036
|
color: rgba(0, 0, 0, var(--tw-text-opacity));
|
|
4005
|
-
content: counter(
|
|
4037
|
+
content: counter(cnt1729262089915);
|
|
4006
4038
|
}
|
|
4007
4039
|
/*! ****************************/
|
|
4008
4040
|
/*! DataPolicy stuff */
|
|
@@ -4138,7 +4170,7 @@ select:has(option:checked:not([value=''])) + label {
|
|
|
4138
4170
|
select:has(option:checked[value='']) {
|
|
4139
4171
|
color: transparent;
|
|
4140
4172
|
}
|
|
4141
|
-
|
|
4173
|
+
.form-checkbox:checked::after {
|
|
4142
4174
|
position: absolute;
|
|
4143
4175
|
content: '';
|
|
4144
4176
|
width: 15px;
|
|
@@ -4151,7 +4183,7 @@ input[type='checkbox']:checked::after {
|
|
|
4151
4183
|
border-right: none;
|
|
4152
4184
|
transform: rotate(-45deg);
|
|
4153
4185
|
}
|
|
4154
|
-
|
|
4186
|
+
.form-radio::after {
|
|
4155
4187
|
content: '';
|
|
4156
4188
|
position: absolute;
|
|
4157
4189
|
width: 16px;
|
|
@@ -4163,7 +4195,7 @@ input[type='radio']::after {
|
|
|
4163
4195
|
background-color: var(--color-primary-ds);
|
|
4164
4196
|
border-radius: 50%;
|
|
4165
4197
|
}
|
|
4166
|
-
|
|
4198
|
+
.form-radio:checked::after {
|
|
4167
4199
|
transform: translate(-50%, -50%) scale(1);
|
|
4168
4200
|
}
|
|
4169
4201
|
.\[-T\:\+Z\] {
|
|
@@ -7307,6 +7339,10 @@ input[type='radio']:checked::after {
|
|
|
7307
7339
|
padding-left: 0.75rem;
|
|
7308
7340
|
}
|
|
7309
7341
|
|
|
7342
|
+
.md\:pl-4 {
|
|
7343
|
+
padding-left: 1rem;
|
|
7344
|
+
}
|
|
7345
|
+
|
|
7310
7346
|
.md\:pl-5 {
|
|
7311
7347
|
padding-left: 1.25rem;
|
|
7312
7348
|
}
|
|
@@ -7315,6 +7351,10 @@ input[type='radio']:checked::after {
|
|
|
7315
7351
|
padding-right: 0px;
|
|
7316
7352
|
}
|
|
7317
7353
|
|
|
7354
|
+
.md\:pr-2 {
|
|
7355
|
+
padding-right: 0.5rem;
|
|
7356
|
+
}
|
|
7357
|
+
|
|
7318
7358
|
.md\:pr-5 {
|
|
7319
7359
|
padding-right: 1.25rem;
|
|
7320
7360
|
}
|
|
@@ -6,6 +6,30 @@ export default function inputHandler(element, formId, errorMandatory, type, erro
|
|
|
6
6
|
isFocused: false,
|
|
7
7
|
typeMismatch: true,
|
|
8
8
|
valueMissing: true,
|
|
9
|
+
outputText: "",
|
|
10
|
+
isFileSelected: false,
|
|
11
|
+
|
|
12
|
+
setFile(event) {
|
|
13
|
+
const file = event.target.files[0];
|
|
14
|
+
if (file) {
|
|
15
|
+
this.fileName = file.name;
|
|
16
|
+
this.isFileSelected = true;
|
|
17
|
+
}
|
|
18
|
+
else{
|
|
19
|
+
this.fileName = "";
|
|
20
|
+
this.isFileSelected = false;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
getFileName() {
|
|
24
|
+
return this.fileName;
|
|
25
|
+
},
|
|
26
|
+
clearFile() {
|
|
27
|
+
this.fileName = "";
|
|
28
|
+
this.isFileSelected = false;
|
|
29
|
+
this.valid = false;
|
|
30
|
+
var uploadEelement = document.getElementById(element);
|
|
31
|
+
uploadEelement.value = null;
|
|
32
|
+
},
|
|
9
33
|
|
|
10
34
|
errorMessage() {
|
|
11
35
|
if( type == "email"){
|
|
@@ -37,7 +61,10 @@ export default function inputHandler(element, formId, errorMandatory, type, erro
|
|
|
37
61
|
case "select":
|
|
38
62
|
return Boolean((!this.valid && this.wasFocused && !this.isFocused) || (!this.valid && !this.isFocused && this.$store.forms.submissionAttempted[formId]) || (this.hasServerError() && !this.isFocused ));
|
|
39
63
|
case "choice-group":
|
|
64
|
+
//to-do: Server error
|
|
40
65
|
return Boolean((!this.valid && this.wasFocused && !this.isFocused) || (!this.valid && !this.isFocused && this.$store.forms.submissionAttempted[formId]));
|
|
66
|
+
case "upload":
|
|
67
|
+
return Boolean((!this.valid && this.wasFocused && !this.isFocused) || (!this.valid && !this.isFocused && this.$store.forms.submissionAttempted[formId]) || (this.hasServerError() && !this.isFocused ));
|
|
41
68
|
default:
|
|
42
69
|
return Boolean((!this.valid && this.wasFocused && !this.isFocused) || (!this.valid && !this.isFocused && this.$store.forms.submissionAttempted[formId]) || (this.hasServerError() && !this.isFocused ));
|
|
43
70
|
}
|
|
@@ -55,6 +82,10 @@ export default function inputHandler(element, formId, errorMandatory, type, erro
|
|
|
55
82
|
var choice = document.getElementById(element)
|
|
56
83
|
this.valid = choice.checkValidity()
|
|
57
84
|
},
|
|
85
|
+
validateUpload() {
|
|
86
|
+
var choice = document.getElementById(element)
|
|
87
|
+
this.valid = choice.checkValidity()
|
|
88
|
+
},
|
|
58
89
|
hasServerError() {
|
|
59
90
|
return Boolean(this.$store.forms.serverErrorFields[formId]?.[name]);
|
|
60
91
|
},
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{{/unless}}
|
|
11
11
|
>
|
|
12
12
|
<div class="flex flex-row items-center w-full cursor-pointer ">
|
|
13
|
-
<input class="relative self-start flex-shrink-0 w-6 h-6 bg-white dark:bg-black border appearance-none cursor-pointer border-form-highlight dark:border-form-highlight-dark {{~inline-switch _type '["checkbox","radio"]' '[" checked:bg-form-highlight checked:border-form-highlight"," checked:bg-white checked:border-form-highlight rounded-full",""]'}}"
|
|
13
|
+
<input class="relative self-start flex-shrink-0 w-6 h-6 bg-white dark:bg-black border appearance-none cursor-pointer border-form-highlight dark:border-form-highlight-dark {{~inline-switch _type '["checkbox","radio"]' '[" checked:bg-form-highlight checked:border-form-highlight form-checkbox"," checked:bg-white checked:border-form-highlight rounded-full form-radio",""]'}}"
|
|
14
14
|
{{#if _required}}
|
|
15
15
|
:class="{' border-form-highlight dark:border-form-highlight-dark': hideError(),'border-error dark:border-error-dark': hideDescription() }"
|
|
16
16
|
{{/if}}
|
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
}}
|
|
87
87
|
{{/if}}
|
|
88
88
|
{{else if this.type.isUpload}}
|
|
89
|
-
{{~> components/forms/upload
|
|
89
|
+
{{~> components/forms/components/upload
|
|
90
90
|
_name=this.name
|
|
91
91
|
_label=this.label
|
|
92
92
|
_description=this.description
|
|
93
93
|
_multiple=false
|
|
94
94
|
_required=this.isRequired
|
|
95
|
-
|
|
95
|
+
_errorMandatory="Bitte laden Sie eine Datei hoch"
|
|
96
96
|
_formId=../_formId
|
|
97
97
|
}}
|
|
98
98
|
{{/if}}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<div class="relative flex flex-col w-full mb-6 gap-y-1 md:mb-12"
|
|
2
|
+
ax-load
|
|
3
|
+
x-data="inputHandler('input{{nextRandom}}','{{_formId}}','{{_errorMandatory}}','{{_type}}','', '', '{{_name}}')"
|
|
4
|
+
x-init="validateUpload()"
|
|
5
|
+
x-ignore
|
|
6
|
+
>
|
|
7
|
+
<div @change="setFile($event)" class="relative flex flex-row items-center w-full gap-x-2 md:gap-x-3">
|
|
8
|
+
<input class="absolute w-2 opacity-0 appearance-none cursor-pointer -z-1"
|
|
9
|
+
type="file"
|
|
10
|
+
size="36700160" {{!-- 35MB --}}
|
|
11
|
+
id="input{{getRandom}}"
|
|
12
|
+
{{#if _required}}
|
|
13
|
+
@focus="isFocused = true"
|
|
14
|
+
@blur="wasFocused = true; isFocused=false"
|
|
15
|
+
{{/if}}
|
|
16
|
+
|
|
17
|
+
{{#if _required}}
|
|
18
|
+
@change="validateUpload()"
|
|
19
|
+
{{/if}}
|
|
20
|
+
|
|
21
|
+
{{#if _multiple}}
|
|
22
|
+
multiple
|
|
23
|
+
data-multiple-caption="{count} Dateien ausgewählt"
|
|
24
|
+
{{/if}}
|
|
25
|
+
name="{{#if _name}}{{_name}}{{/if}}"
|
|
26
|
+
{{#if _accept}}
|
|
27
|
+
accept="{{_accept}}"
|
|
28
|
+
{{/if}}
|
|
29
|
+
|
|
30
|
+
{{#if _locaKeyButton}}
|
|
31
|
+
title="{{~loca _locaKeyButton}}"
|
|
32
|
+
{{else}}
|
|
33
|
+
{{#if _label}}
|
|
34
|
+
title="{{_label}}{{#if _required}}*{{/if}}"
|
|
35
|
+
{{/if}}
|
|
36
|
+
{{/if}}
|
|
37
|
+
|
|
38
|
+
{{#if _formField.forHtmlAttribute}}
|
|
39
|
+
value="{{_formField.forHtmlAttribute}}"
|
|
40
|
+
{{else}}
|
|
41
|
+
{{#if _value}}
|
|
42
|
+
value="{{_value}}"
|
|
43
|
+
{{else}}
|
|
44
|
+
value="{{_defaultValue}}"
|
|
45
|
+
{{/if}}
|
|
46
|
+
{{/if}}
|
|
47
|
+
|
|
48
|
+
{{#if _required}}required{{/if}}
|
|
49
|
+
/>
|
|
50
|
+
<label for="input{{getRandom}}" class="cursor-pointer min-w-min {{> components/button/utilities/button_base_classes}} {{> components/button/utilities/button_variation_classes _variant='primary'}} {{> components/button/utilities/button_dimension_classes _size='lg'}}">
|
|
51
|
+
<span class="pr-1 md:pr-2">
|
|
52
|
+
{{> components/base/image/icon _icon="upload" _addClass="w-6 h-6 fill-white dark:fill-text-dark"}}
|
|
53
|
+
</span>
|
|
54
|
+
<span class="text-nowrap">{{loca "webform_upload_label" }}</span>
|
|
55
|
+
</label>
|
|
56
|
+
<span x-show="!isFileSelected" class="items-center justify-center text-base text-black md:text-lg" >{{_label}}{{#if _required}}*{{/if}}</span>
|
|
57
|
+
<div x-show="isFileSelected" class="flex items-center gap-2 p-1 text-sm bg-gray-300 md:text-base">
|
|
58
|
+
<span x-text="getFileName" class="items-center justify-center text-black" ></span>
|
|
59
|
+
<button class="flex-shrink-0" @click="clearFile" type="button">
|
|
60
|
+
<span >{{~> components/base/image/icon _icon="close" _addClass="h-3 w-3 fill-red-600" _iconmap="icons"~}}</span>
|
|
61
|
+
</button>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="font-heading">
|
|
65
|
+
{{#if _description}}
|
|
66
|
+
<div class="pl-3 text-xs text-gray-500 md:pl-4" {{#if _required}}:class="{'hidden': hideDescription()}"{{/if}}>{{_description}}</div>
|
|
67
|
+
{{/if}}
|
|
68
|
+
{{#if _required}}
|
|
69
|
+
<div class="hidden pl-3 text-xs text-red-700 md:pl-4" :class="{'hidden': hideError()}" x-text="errorMessage"></div>
|
|
70
|
+
{{/if}}
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{{/unless}}
|
|
11
11
|
>
|
|
12
12
|
<div class="flex flex-row items-center w-full cursor-pointer ">
|
|
13
|
-
<input class="relative self-start flex-shrink-0 w-6 h-6 bg-white dark:bg-black border appearance-none cursor-pointer border-form-highlight dark:border-form-highlight-dark {{~inline-switch _type '["checkbox","radio"]' '[" checked:bg-form-highlight checked:border-form-highlight"," checked:bg-white checked:border-form-highlight rounded-full",""]'}}"
|
|
13
|
+
<input class="relative self-start flex-shrink-0 w-6 h-6 bg-white dark:bg-black border appearance-none cursor-pointer border-form-highlight dark:border-form-highlight-dark {{~inline-switch _type '["checkbox","radio"]' '[" checked:bg-form-highlight checked:border-form-highlight form-checkbox"," checked:bg-white checked:border-form-highlight rounded-full form-radio",""]'}}"
|
|
14
14
|
{{#if _required}}
|
|
15
15
|
:class="{' border-form-highlight dark:border-form-highlight-dark': hideError(),'border-error dark:border-error-dark': hideDescription() }"
|
|
16
16
|
{{/if}}
|
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
}}
|
|
87
87
|
{{/if}}
|
|
88
88
|
{{else if this.type.isUpload}}
|
|
89
|
-
{{~> components/forms/upload
|
|
89
|
+
{{~> components/forms/components/upload
|
|
90
90
|
_name=this.name
|
|
91
91
|
_label=this.label
|
|
92
92
|
_description=this.description
|
|
93
93
|
_multiple=false
|
|
94
94
|
_required=this.isRequired
|
|
95
|
-
|
|
95
|
+
_errorMandatory="Bitte laden Sie eine Datei hoch"
|
|
96
96
|
_formId=../_formId
|
|
97
97
|
}}
|
|
98
98
|
{{/if}}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<div class="relative flex flex-col w-full mb-6 gap-y-1 md:mb-12"
|
|
2
|
+
ax-load
|
|
3
|
+
x-data="inputHandler('input{{nextRandom}}','{{_formId}}','{{_errorMandatory}}','{{_type}}','', '', '{{_name}}')"
|
|
4
|
+
x-init="validateUpload()"
|
|
5
|
+
x-ignore
|
|
6
|
+
>
|
|
7
|
+
<div @change="setFile($event)" class="relative flex flex-row items-center w-full gap-x-2 md:gap-x-3">
|
|
8
|
+
<input class="absolute w-2 opacity-0 appearance-none cursor-pointer -z-1"
|
|
9
|
+
type="file"
|
|
10
|
+
size="36700160" {{!-- 35MB --}}
|
|
11
|
+
id="input{{getRandom}}"
|
|
12
|
+
{{#if _required}}
|
|
13
|
+
@focus="isFocused = true"
|
|
14
|
+
@blur="wasFocused = true; isFocused=false"
|
|
15
|
+
{{/if}}
|
|
16
|
+
|
|
17
|
+
{{#if _required}}
|
|
18
|
+
@change="validateUpload()"
|
|
19
|
+
{{/if}}
|
|
20
|
+
|
|
21
|
+
{{#if _multiple}}
|
|
22
|
+
multiple
|
|
23
|
+
data-multiple-caption="{count} Dateien ausgewählt"
|
|
24
|
+
{{/if}}
|
|
25
|
+
name="{{#if _name}}{{_name}}{{/if}}"
|
|
26
|
+
{{#if _accept}}
|
|
27
|
+
accept="{{_accept}}"
|
|
28
|
+
{{/if}}
|
|
29
|
+
|
|
30
|
+
{{#if _locaKeyButton}}
|
|
31
|
+
title="{{~loca _locaKeyButton}}"
|
|
32
|
+
{{else}}
|
|
33
|
+
{{#if _label}}
|
|
34
|
+
title="{{_label}}{{#if _required}}*{{/if}}"
|
|
35
|
+
{{/if}}
|
|
36
|
+
{{/if}}
|
|
37
|
+
|
|
38
|
+
{{#if _formField.forHtmlAttribute}}
|
|
39
|
+
value="{{_formField.forHtmlAttribute}}"
|
|
40
|
+
{{else}}
|
|
41
|
+
{{#if _value}}
|
|
42
|
+
value="{{_value}}"
|
|
43
|
+
{{else}}
|
|
44
|
+
value="{{_defaultValue}}"
|
|
45
|
+
{{/if}}
|
|
46
|
+
{{/if}}
|
|
47
|
+
|
|
48
|
+
{{#if _required}}required{{/if}}
|
|
49
|
+
/>
|
|
50
|
+
<label for="input{{getRandom}}" class="cursor-pointer min-w-min {{> components/button/utilities/button_base_classes}} {{> components/button/utilities/button_variation_classes _variant='primary'}} {{> components/button/utilities/button_dimension_classes _size='lg'}}">
|
|
51
|
+
<span class="pr-1 md:pr-2">
|
|
52
|
+
{{> components/base/image/icon _icon="upload" _addClass="w-6 h-6 fill-white dark:fill-text-dark"}}
|
|
53
|
+
</span>
|
|
54
|
+
<span class="text-nowrap">{{loca "webform_upload_label" }}</span>
|
|
55
|
+
</label>
|
|
56
|
+
<span x-show="!isFileSelected" class="items-center justify-center text-base text-black md:text-lg" >{{_label}}{{#if _required}}*{{/if}}</span>
|
|
57
|
+
<div x-show="isFileSelected" class="flex items-center gap-2 p-1 text-sm bg-gray-300 md:text-base">
|
|
58
|
+
<span x-text="getFileName" class="items-center justify-center text-black" ></span>
|
|
59
|
+
<button class="flex-shrink-0" @click="clearFile" type="button">
|
|
60
|
+
<span >{{~> components/base/image/icon _icon="close" _addClass="h-3 w-3 fill-red-600" _iconmap="icons"~}}</span>
|
|
61
|
+
</button>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="font-heading">
|
|
65
|
+
{{#if _description}}
|
|
66
|
+
<div class="pl-3 text-xs text-gray-500 md:pl-4" {{#if _required}}:class="{'hidden': hideDescription()}"{{/if}}>{{_description}}</div>
|
|
67
|
+
{{/if}}
|
|
68
|
+
{{#if _required}}
|
|
69
|
+
<div class="hidden pl-3 text-xs text-red-700 md:pl-4" :class="{'hidden': hideError()}" x-text="errorMessage"></div>
|
|
70
|
+
{{/if}}
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"repository": "https://github.com/szuelch/hr-design-system-handlebars",
|
|
9
|
-
"version": "1.111.
|
|
9
|
+
"version": "1.111.4",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
12
|
"storybook": "storybook dev -p 6006 public",
|
|
@@ -191,5 +191,6 @@
|
|
|
191
191
|
"teaser_more_video_livestream_brand_sr": "zum {0} Livestream",
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
|
-
"webform_send_text_error": "Das Formular konnte nicht versendet werden."
|
|
194
|
+
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen"
|
|
195
196
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hessenschau . d e",
|
|
196
197
|
"meta_application_name": "hessenschau.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr . d e",
|
|
196
197
|
"meta_application_name": "hr.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-bigband . d e",
|
|
196
197
|
"meta_application_name": "hr-bigband.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-fernsehen . d e",
|
|
196
197
|
"meta_application_name": "hr-fernsehen.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-inforadio . d e",
|
|
196
197
|
"meta_application_name": "hr-inforadio.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-rundfunkrat . d e",
|
|
196
197
|
"meta_application_name": "hr-rundfunkrat.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-sinfonieorchester . d e",
|
|
196
197
|
"meta_application_name": "hr-sinfonieorchester.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr-werbung . d e",
|
|
196
197
|
"meta_application_name": "hr-werbung.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr1 . d e",
|
|
196
197
|
"meta_application_name": "hr1.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr2 . d e",
|
|
196
197
|
"meta_application_name": "hr2.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr3 . d e",
|
|
196
197
|
"meta_application_name": "hr3.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite hr4 . d e",
|
|
196
197
|
"meta_application_name": "hr4.de"
|
|
197
198
|
}
|
|
@@ -192,6 +192,7 @@
|
|
|
192
192
|
"teaser_more_video_livestream_sr": "zum Livestream",
|
|
193
193
|
"webform_send_text_success": "Das Formular wurde erfolgreich versendet.",
|
|
194
194
|
"webform_send_text_error": "Das Formular konnte nicht versendet werden.",
|
|
195
|
+
"webform_upload_label": "Datei auswählen",
|
|
195
196
|
"header_homepage_link_title": "Startseite you-fm . d e",
|
|
196
197
|
"meta_application_name": "you-fm.de"
|
|
197
198
|
}
|
|
@@ -465,7 +465,7 @@
|
|
|
465
465
|
@apply text-transparent;
|
|
466
466
|
}
|
|
467
467
|
|
|
468
|
-
|
|
468
|
+
.form-checkbox:checked::after {
|
|
469
469
|
position: absolute;
|
|
470
470
|
content: '';
|
|
471
471
|
width: 15px;
|
|
@@ -479,7 +479,7 @@
|
|
|
479
479
|
transform: rotate(-45deg);
|
|
480
480
|
}
|
|
481
481
|
|
|
482
|
-
|
|
482
|
+
.form-radio::after {
|
|
483
483
|
content: '';
|
|
484
484
|
position: absolute;
|
|
485
485
|
width: 16px;
|
|
@@ -491,7 +491,7 @@
|
|
|
491
491
|
border-radius: 50%;
|
|
492
492
|
}
|
|
493
493
|
|
|
494
|
-
|
|
494
|
+
.form-radio:checked::after {
|
|
495
495
|
transform: translate(-50%, -50%) scale(1);
|
|
496
496
|
}
|
|
497
497
|
}
|
|
@@ -22,6 +22,16 @@
|
|
|
22
22
|
"@->jsoninclude": "forms/form_fields.inc.json",
|
|
23
23
|
"@->contentpath": "input-text-nachname-required"
|
|
24
24
|
},
|
|
25
|
+
{
|
|
26
|
+
"@->jsoninclude": "forms/form_fields.inc.json",
|
|
27
|
+
"@->contentpath": "upload",
|
|
28
|
+
"@->overrides": [
|
|
29
|
+
{
|
|
30
|
+
"@->contentpath": "isRequired",
|
|
31
|
+
"@->value": true
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
25
35
|
{
|
|
26
36
|
"@->jsoninclude": "forms/form_fields.inc.json",
|
|
27
37
|
"@->contentpath": "select"
|
|
@@ -242,9 +242,9 @@
|
|
|
242
242
|
"isUpload":true,
|
|
243
243
|
"asString":"upload"
|
|
244
244
|
},
|
|
245
|
-
"name":"
|
|
246
|
-
"label":"Wählen Sie
|
|
247
|
-
"description":"
|
|
248
|
-
"isRequired":
|
|
245
|
+
"name":"Datei Hochladen",
|
|
246
|
+
"label":"Wählen Sie eine Datei zum Hochladen",
|
|
247
|
+
"description":"Erlaubte Dateiformate: PDF, DOCX, PNG, JPG. Maximale Dateigröße: 5 MB.",
|
|
248
|
+
"isRequired":true
|
|
249
249
|
}
|
|
250
250
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"copytextParagraph":[{"isHeadline":true,"text":"Copytext mit Formular"},{"paragraphBoxItem":{"isWebForm":true,"hasNewWebForm":true,"title":"Kontaktformular","jsonUrl":"https://ugc-hessenschau.dev-ext.hrcms.gcp.cloud.hr.de","errorMessages":"errorMessages","isMultipart":"isMultipart","trackingInformations":"trackingInformations","fields":[{"type":{"isText":true,"asString":"text"},"name":"vorname","label":"Vorname","description":"Das ist der Beschreibungstext (*Pflichtfeld)","defaultValue":"","isHidden":false,"isRequired":true,"maxLength":"140"},{"type":{"isText":true,"asString":"text"},"name":"nachname","label":"Nachname","description":"","defaultValue":"","isHidden":false,"isRequired":true,"maxLength":"140"},{"type":{"isSelect":true,"asString":"select"},"name":"Select Name","label":"Wen möchten Sie erreichen?","description":"Das ist der Beschreibungstext von Select","defaultValue":"","isHidden":false,"isRequired":true,"options":[{"id":"option1","value":"option1","selected":false,"label":"Option 1"},{"id":"option2","value":"option2","selected":false,"label":"Option 2"},{"id":"option3","value":"option3","selected":false,"label":"Option 3"},{"id":"option4","value":"option4","selected":false,"label":"Option 4"}]},{"isGrouped":true,"type":{"isChoice":true,"asString":"checkbox"},"name":"interessen","label":"Wählen Sie Ihre Interessen","isMeta":false,"description":"Bitte kreuzen Sie alle Interessen an, die auf Sie zutreffen. Ihre Auswahl hilft uns, Ihnen relevante Inhalte anzubieten.","isRequired":false,"options":[{"value":"sport","label":"sport","title":"sport","isSelected":false},{"value":"musik","label":"musik","title":"musik","isSelected":false},{"value":"lesen","label":"lesen","title":"lesen","isSelected":false},{"value":"reisen","label":"reisen","title":"reisen","isSelected":false},{"value":"kochen","label":"kochen","title":"kochen","isSelected":false},{"value":"filme","label":"filme","title":"filme","isSelected":false},{"value":"tanzen","label":"tanzen","title":"tanzen","isSelected":false},{"value":"fotografie","label":"fotografie","title":"fotografie","isSelected":false}]},{"isGrouped":true,"type":{"isChoice":true,"isRadioChoice":true,"asString":"radio"},"name":"lieblingsfarbe","label":"Wählen Sie Ihre Lieblingsfarbe","isMeta":false,"description":"Bitte wählen Sie eine der folgenden Farben aus.","isRequired":true,"options":[{"value":"rot","label":"rot","title":"rot","isSelected":false},{"value":"blau","label":"blau","title":"blau","isSelected":false},{"value":"grün","label":"grün","title":"grün","isSelected":false}]},{"isGrouped":true,"type":{"isChoice":true,"isRadioChoice":true,"asString":"radio"},"name":"lieblingsfarbe","label":"Wählen Sie Ihre Lieblingsfarbe","isMeta":false,"description":"Bitte wählen Sie eine der folgenden Farben aus.","isRequired":false,"options":[{"value":"rot","label":"rot","title":"rot","isSelected":false},{"value":"blau","label":"blau","title":"blau","isSelected":false},{"value":"grün","label":"grün","title":"grün","isSelected":false}]},{"isGrouped":false,"type":{"isChoice":true,"asString":"checkbox"},"name":"checkbox","label":"Ich bin damit einverstanden.","isMeta":false,"description":"Das ist der Beschreibungstext von Checkbox","isRequired":false},{"isGrouped":false,"type":{"isChoice":true,"asString":"checkbox"},"name":"checkbox","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.","isMeta":false,"description":"Das ist der Beschreibungstext von Checkbox","isRequired":true}]}}]}
|
|
1
|
+
{"copytextParagraph":[{"isHeadline":true,"text":"Copytext mit Formular"},{"paragraphBoxItem":{"isWebForm":true,"hasNewWebForm":true,"title":"Kontaktformular","jsonUrl":"https://ugc-hessenschau.dev-ext.hrcms.gcp.cloud.hr.de","errorMessages":"errorMessages","isMultipart":"isMultipart","trackingInformations":"trackingInformations","fields":[{"type":{"isText":true,"asString":"text"},"name":"vorname","label":"Vorname","description":"Das ist der Beschreibungstext (*Pflichtfeld)","defaultValue":"","isHidden":false,"isRequired":true,"maxLength":"140"},{"type":{"isText":true,"asString":"text"},"name":"nachname","label":"Nachname","description":"","defaultValue":"","isHidden":false,"isRequired":true,"maxLength":"140"},{"type":{"isUpload":true,"asString":"upload"},"name":"Datei Hochladen","label":"Wählen Sie eine Datei zum Hochladen","description":"Erlaubte Dateiformate: PDF, DOCX, PNG, JPG. Maximale Dateigröße: 5 MB.","isRequired":true},{"type":{"isSelect":true,"asString":"select"},"name":"Select Name","label":"Wen möchten Sie erreichen?","description":"Das ist der Beschreibungstext von Select","defaultValue":"","isHidden":false,"isRequired":true,"options":[{"id":"option1","value":"option1","selected":false,"label":"Option 1"},{"id":"option2","value":"option2","selected":false,"label":"Option 2"},{"id":"option3","value":"option3","selected":false,"label":"Option 3"},{"id":"option4","value":"option4","selected":false,"label":"Option 4"}]},{"isGrouped":true,"type":{"isChoice":true,"asString":"checkbox"},"name":"interessen","label":"Wählen Sie Ihre Interessen","isMeta":false,"description":"Bitte kreuzen Sie alle Interessen an, die auf Sie zutreffen. Ihre Auswahl hilft uns, Ihnen relevante Inhalte anzubieten.","isRequired":false,"options":[{"value":"sport","label":"sport","title":"sport","isSelected":false},{"value":"musik","label":"musik","title":"musik","isSelected":false},{"value":"lesen","label":"lesen","title":"lesen","isSelected":false},{"value":"reisen","label":"reisen","title":"reisen","isSelected":false},{"value":"kochen","label":"kochen","title":"kochen","isSelected":false},{"value":"filme","label":"filme","title":"filme","isSelected":false},{"value":"tanzen","label":"tanzen","title":"tanzen","isSelected":false},{"value":"fotografie","label":"fotografie","title":"fotografie","isSelected":false}]},{"isGrouped":true,"type":{"isChoice":true,"isRadioChoice":true,"asString":"radio"},"name":"lieblingsfarbe","label":"Wählen Sie Ihre Lieblingsfarbe","isMeta":false,"description":"Bitte wählen Sie eine der folgenden Farben aus.","isRequired":true,"options":[{"value":"rot","label":"rot","title":"rot","isSelected":false},{"value":"blau","label":"blau","title":"blau","isSelected":false},{"value":"grün","label":"grün","title":"grün","isSelected":false}]},{"isGrouped":true,"type":{"isChoice":true,"isRadioChoice":true,"asString":"radio"},"name":"lieblingsfarbe","label":"Wählen Sie Ihre Lieblingsfarbe","isMeta":false,"description":"Bitte wählen Sie eine der folgenden Farben aus.","isRequired":false,"options":[{"value":"rot","label":"rot","title":"rot","isSelected":false},{"value":"blau","label":"blau","title":"blau","isSelected":false},{"value":"grün","label":"grün","title":"grün","isSelected":false}]},{"isGrouped":false,"type":{"isChoice":true,"asString":"checkbox"},"name":"checkbox","label":"Ich bin damit einverstanden.","isMeta":false,"description":"Das ist der Beschreibungstext von Checkbox","isRequired":false},{"isGrouped":false,"type":{"isChoice":true,"asString":"checkbox"},"name":"checkbox","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.","isMeta":false,"description":"Das ist der Beschreibungstext von Checkbox","isRequired":true}]}}]}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{{/unless}}
|
|
11
11
|
>
|
|
12
12
|
<div class="flex flex-row items-center w-full cursor-pointer ">
|
|
13
|
-
<input class="relative self-start flex-shrink-0 w-6 h-6 bg-white dark:bg-black border appearance-none cursor-pointer border-form-highlight dark:border-form-highlight-dark {{~inline-switch _type '["checkbox","radio"]' '[" checked:bg-form-highlight checked:border-form-highlight"," checked:bg-white checked:border-form-highlight rounded-full",""]'}}"
|
|
13
|
+
<input class="relative self-start flex-shrink-0 w-6 h-6 bg-white dark:bg-black border appearance-none cursor-pointer border-form-highlight dark:border-form-highlight-dark {{~inline-switch _type '["checkbox","radio"]' '[" checked:bg-form-highlight checked:border-form-highlight form-checkbox"," checked:bg-white checked:border-form-highlight rounded-full form-radio",""]'}}"
|
|
14
14
|
{{#if _required}}
|
|
15
15
|
:class="{' border-form-highlight dark:border-form-highlight-dark': hideError(),'border-error dark:border-error-dark': hideDescription() }"
|
|
16
16
|
{{/if}}
|
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
}}
|
|
87
87
|
{{/if}}
|
|
88
88
|
{{else if this.type.isUpload}}
|
|
89
|
-
{{~> components/forms/upload
|
|
89
|
+
{{~> components/forms/components/upload
|
|
90
90
|
_name=this.name
|
|
91
91
|
_label=this.label
|
|
92
92
|
_description=this.description
|
|
93
93
|
_multiple=false
|
|
94
94
|
_required=this.isRequired
|
|
95
|
-
|
|
95
|
+
_errorMandatory="Bitte laden Sie eine Datei hoch"
|
|
96
96
|
_formId=../_formId
|
|
97
97
|
}}
|
|
98
98
|
{{/if}}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<div class="relative flex flex-col w-full mb-6 gap-y-1 md:mb-12"
|
|
2
|
+
ax-load
|
|
3
|
+
x-data="inputHandler('input{{nextRandom}}','{{_formId}}','{{_errorMandatory}}','{{_type}}','', '', '{{_name}}')"
|
|
4
|
+
x-init="validateUpload()"
|
|
5
|
+
x-ignore
|
|
6
|
+
>
|
|
7
|
+
<div @change="setFile($event)" class="relative flex flex-row items-center w-full gap-x-2 md:gap-x-3">
|
|
8
|
+
<input class="absolute w-2 opacity-0 appearance-none cursor-pointer -z-1"
|
|
9
|
+
type="file"
|
|
10
|
+
size="36700160" {{!-- 35MB --}}
|
|
11
|
+
id="input{{getRandom}}"
|
|
12
|
+
{{#if _required}}
|
|
13
|
+
@focus="isFocused = true"
|
|
14
|
+
@blur="wasFocused = true; isFocused=false"
|
|
15
|
+
{{/if}}
|
|
16
|
+
|
|
17
|
+
{{#if _required}}
|
|
18
|
+
@change="validateUpload()"
|
|
19
|
+
{{/if}}
|
|
20
|
+
|
|
21
|
+
{{#if _multiple}}
|
|
22
|
+
multiple
|
|
23
|
+
data-multiple-caption="{count} Dateien ausgewählt"
|
|
24
|
+
{{/if}}
|
|
25
|
+
name="{{#if _name}}{{_name}}{{/if}}"
|
|
26
|
+
{{#if _accept}}
|
|
27
|
+
accept="{{_accept}}"
|
|
28
|
+
{{/if}}
|
|
29
|
+
|
|
30
|
+
{{#if _locaKeyButton}}
|
|
31
|
+
title="{{~loca _locaKeyButton}}"
|
|
32
|
+
{{else}}
|
|
33
|
+
{{#if _label}}
|
|
34
|
+
title="{{_label}}{{#if _required}}*{{/if}}"
|
|
35
|
+
{{/if}}
|
|
36
|
+
{{/if}}
|
|
37
|
+
|
|
38
|
+
{{#if _formField.forHtmlAttribute}}
|
|
39
|
+
value="{{_formField.forHtmlAttribute}}"
|
|
40
|
+
{{else}}
|
|
41
|
+
{{#if _value}}
|
|
42
|
+
value="{{_value}}"
|
|
43
|
+
{{else}}
|
|
44
|
+
value="{{_defaultValue}}"
|
|
45
|
+
{{/if}}
|
|
46
|
+
{{/if}}
|
|
47
|
+
|
|
48
|
+
{{#if _required}}required{{/if}}
|
|
49
|
+
/>
|
|
50
|
+
<label for="input{{getRandom}}" class="cursor-pointer min-w-min {{> components/button/utilities/button_base_classes}} {{> components/button/utilities/button_variation_classes _variant='primary'}} {{> components/button/utilities/button_dimension_classes _size='lg'}}">
|
|
51
|
+
<span class="pr-1 md:pr-2">
|
|
52
|
+
{{> components/base/image/icon _icon="upload" _addClass="w-6 h-6 fill-white dark:fill-text-dark"}}
|
|
53
|
+
</span>
|
|
54
|
+
<span class="text-nowrap">{{loca "webform_upload_label" }}</span>
|
|
55
|
+
</label>
|
|
56
|
+
<span x-show="!isFileSelected" class="items-center justify-center text-base text-black md:text-lg" >{{_label}}{{#if _required}}*{{/if}}</span>
|
|
57
|
+
<div x-show="isFileSelected" class="flex items-center gap-2 p-1 text-sm bg-gray-300 md:text-base">
|
|
58
|
+
<span x-text="getFileName" class="items-center justify-center text-black" ></span>
|
|
59
|
+
<button class="flex-shrink-0" @click="clearFile" type="button">
|
|
60
|
+
<span >{{~> components/base/image/icon _icon="close" _addClass="h-3 w-3 fill-red-600" _iconmap="icons"~}}</span>
|
|
61
|
+
</button>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="font-heading">
|
|
65
|
+
{{#if _description}}
|
|
66
|
+
<div class="pl-3 text-xs text-gray-500 md:pl-4" {{#if _required}}:class="{'hidden': hideDescription()}"{{/if}}>{{_description}}</div>
|
|
67
|
+
{{/if}}
|
|
68
|
+
{{#if _required}}
|
|
69
|
+
<div class="hidden pl-3 text-xs text-red-700 md:pl-4" :class="{'hidden': hideError()}" x-text="errorMessage"></div>
|
|
70
|
+
{{/if}}
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fields":[{"type":{"isUpload":true,"asString":"upload"},"name":"Datei Hochladen","label":"Wählen Sie eine Datei zum Hochladen","description":"Erlaubte Dateiformate: PDF, DOCX, PNG, JPG. Maximale Dateigröße: 5 MB.","isRequired":true}]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
import uploadJson from './fixtures/form_upload.json'
|
|
3
|
+
|
|
4
|
+
const handlebars = require('hrHandlebars')
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
title: 'Komponenten/Formulare',
|
|
9
|
+
decorators: [
|
|
10
|
+
(Story) => {
|
|
11
|
+
return `<div class="grid grid-page">
|
|
12
|
+
<div class="grid bg-white grid-article">
|
|
13
|
+
${Story()}
|
|
14
|
+
</div>
|
|
15
|
+
</div>`
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
}
|
|
19
|
+
const Template = (args) => {
|
|
20
|
+
let hbsTemplate = handlebars.compile(`
|
|
21
|
+
{{#>components/forms/backgroundBox }}
|
|
22
|
+
<form class="relative flex flex-col justify-center overflow-hidden group" id="form{{nextRandom}}" action="{{this.url}}" method="post" enctype="{{if this.isMultipart 'multipart/form-data' 'application/x-www-form-urlencoded'}}" accept-charset="utf-8" >
|
|
23
|
+
{{> components/forms/components/fields }}
|
|
24
|
+
</form>
|
|
25
|
+
{{/components/forms/backgroundBox }}
|
|
26
|
+
`)
|
|
27
|
+
return hbsTemplate({ ...args })
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export const Upload = {
|
|
31
|
+
render: Template.bind({}),
|
|
32
|
+
name: 'Upload',
|
|
33
|
+
args: uploadJson,
|
|
34
|
+
}
|
|
@@ -6,6 +6,30 @@ export default function inputHandler(element, formId, errorMandatory, type, erro
|
|
|
6
6
|
isFocused: false,
|
|
7
7
|
typeMismatch: true,
|
|
8
8
|
valueMissing: true,
|
|
9
|
+
outputText: "",
|
|
10
|
+
isFileSelected: false,
|
|
11
|
+
|
|
12
|
+
setFile(event) {
|
|
13
|
+
const file = event.target.files[0];
|
|
14
|
+
if (file) {
|
|
15
|
+
this.fileName = file.name;
|
|
16
|
+
this.isFileSelected = true;
|
|
17
|
+
}
|
|
18
|
+
else{
|
|
19
|
+
this.fileName = "";
|
|
20
|
+
this.isFileSelected = false;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
getFileName() {
|
|
24
|
+
return this.fileName;
|
|
25
|
+
},
|
|
26
|
+
clearFile() {
|
|
27
|
+
this.fileName = "";
|
|
28
|
+
this.isFileSelected = false;
|
|
29
|
+
this.valid = false;
|
|
30
|
+
var uploadEelement = document.getElementById(element);
|
|
31
|
+
uploadEelement.value = null;
|
|
32
|
+
},
|
|
9
33
|
|
|
10
34
|
errorMessage() {
|
|
11
35
|
if( type == "email"){
|
|
@@ -37,7 +61,10 @@ export default function inputHandler(element, formId, errorMandatory, type, erro
|
|
|
37
61
|
case "select":
|
|
38
62
|
return Boolean((!this.valid && this.wasFocused && !this.isFocused) || (!this.valid && !this.isFocused && this.$store.forms.submissionAttempted[formId]) || (this.hasServerError() && !this.isFocused ));
|
|
39
63
|
case "choice-group":
|
|
64
|
+
//to-do: Server error
|
|
40
65
|
return Boolean((!this.valid && this.wasFocused && !this.isFocused) || (!this.valid && !this.isFocused && this.$store.forms.submissionAttempted[formId]));
|
|
66
|
+
case "upload":
|
|
67
|
+
return Boolean((!this.valid && this.wasFocused && !this.isFocused) || (!this.valid && !this.isFocused && this.$store.forms.submissionAttempted[formId]) || (this.hasServerError() && !this.isFocused ));
|
|
41
68
|
default:
|
|
42
69
|
return Boolean((!this.valid && this.wasFocused && !this.isFocused) || (!this.valid && !this.isFocused && this.$store.forms.submissionAttempted[formId]) || (this.hasServerError() && !this.isFocused ));
|
|
43
70
|
}
|
|
@@ -55,6 +82,10 @@ export default function inputHandler(element, formId, errorMandatory, type, erro
|
|
|
55
82
|
var choice = document.getElementById(element)
|
|
56
83
|
this.valid = choice.checkValidity()
|
|
57
84
|
},
|
|
85
|
+
validateUpload() {
|
|
86
|
+
var choice = document.getElementById(element)
|
|
87
|
+
this.valid = choice.checkValidity()
|
|
88
|
+
},
|
|
58
89
|
hasServerError() {
|
|
59
90
|
return Boolean(this.$store.forms.serverErrorFields[formId]?.[name]);
|
|
60
91
|
},
|