hr-design-system-handlebars 1.11.12 → 1.12.1
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/.storybook/main.js +9 -0
- package/.storybook/manager.js +18 -18
- package/.storybook/preview.js +9 -1
- package/CHANGELOG.md +25 -0
- package/README.md +13 -2
- package/build/handlebars/handlebars.js +1 -1
- package/build/scripts/build.js +1 -1
- package/config.js +1 -0
- package/dist/assets/index.css +225 -189
- package/dist/views/components/base/image/icon.hbs +1 -1
- package/dist/views/components/base/link.hbs +11 -1
- package/dist/views/components/base/link_open.hbs +12 -13
- package/dist/views/components/base/link_v2.hbs +14 -0
- package/dist/views/components/button/button.hbs +9 -24
- package/dist/views/components/button/components/button_icon.hbs +2 -1
- package/dist/views/components/button/components/button_label.hbs +1 -1
- package/dist/views/components/button/link_button.hbs +6 -0
- package/dist/views/components/button/utilities/button_base_classes.hbs +1 -0
- package/dist/views/components/button/utilities/button_dimension_classes.hbs +1 -0
- package/dist/views/components/button/utilities/button_on_image_classes.hbs +39 -0
- package/dist/views/components/button/utilities/button_variation_classes.hbs +14 -0
- package/dist/views/components/content_nav/content_nav_container.hbs +1 -1
- package/dist/views/components/content_nav/content_nav_item.hbs +1 -1
- package/dist/views/components/event/calendar/event_calendar_footer.hbs +1 -1
- package/dist/views/components/event/event_ticket_button.hbs +11 -9
- package/dist/views/components/grid/grid_group_highlight.hbs +1 -1
- package/dist/views/components/label/label_old.hbs +1 -1
- package/dist/views/components/mediaplayer/media_player.hbs +4 -22
- package/dist/views/components/mediaplayer/mediaplayer_button.hbs +9 -0
- package/dist/views/components/modal/modal.hbs +2 -2
- package/dist/views/components/site_header/brand_navigation/brand_navigation.hbs +1 -1
- package/dist/views/components/teaser/cluster/teaser_cluster.hbs +4 -1
- package/dist/views/components/teaser/cluster/teaser_cluster_byline.hbs +1 -1
- package/dist/views/components/teaser/cluster/teaser_cluster_item.hbs +1 -1
- package/dist/views/components/teaser/components/teaser_av_consumption_close_button.hbs +6 -20
- package/dist/views/components/teaser/components/teaser_byline.hbs +1 -1
- package/dist/views/components/teaser/components/teaser_image.hbs +7 -15
- package/dist/views/components/teaser/components/teaser_ticker_body.hbs +40 -0
- package/dist/views/components/teaser/podcast/podcast_subscribe_button.hbs +18 -15
- package/dist/views/components/teaser/podcast/podcast_title.hbs +2 -2
- package/dist/views/components/teaser/tabbox/group_tabbox.hbs +4 -1
- package/dist/views/components/teaser/tabbox/teaser_tabbox.hbs +10 -11
- package/dist/views/components/teaser/teaser_poster.hbs +5 -1
- package/dist/views/components/teaser/ticker/teaser_ticker.hbs +4 -4
- package/gulpfile.js +9 -0
- package/package.json +4 -2
- package/src/assets/css/custom-components.css +37 -38
- package/src/assets/css/custom-utilities.css +2 -2
- package/src/assets/fixtures/event/calendar/event_calendar_months.inc.json +5 -1
- package/src/assets/fixtures/teaser/teaser_ticker.inc.json +3 -3
- package/src/assets/fixtures/teaser/ticker_teaser_standard_100.json +5 -1
- package/src/assets/tailwind.css +54 -22
- package/src/stories/conventions-and-datastructure.mdx +217 -4
- package/src/stories/views/components/base/image/icon.hbs +1 -1
- package/src/stories/views/components/base/link.hbs +11 -1
- package/src/stories/views/components/base/link_open.hbs +12 -13
- package/src/stories/views/components/base/link_v2.hbs +14 -0
- package/src/stories/views/components/button/button.hbs +9 -24
- package/src/stories/views/components/button/button.mdx +186 -0
- package/src/stories/views/components/button/button.stories.js +508 -0
- package/src/stories/views/components/button/components/button_icon.hbs +2 -1
- package/src/stories/views/components/button/components/button_icon.mdx +25 -0
- package/src/stories/views/components/button/components/button_icon.stories.js +44 -0
- package/src/stories/views/components/button/components/button_label.hbs +1 -1
- package/src/stories/views/components/button/components/button_label.mdx +25 -0
- package/src/stories/views/components/button/components/button_label.stories.js +33 -0
- package/src/stories/views/components/button/link_button.hbs +6 -0
- package/src/stories/views/components/button/link_button.mdx +137 -0
- package/src/stories/views/components/button/link_button.stories.js +420 -0
- package/src/stories/views/components/button/utilities/button_base_classes.hbs +1 -0
- package/src/stories/views/components/button/utilities/button_dimension_classes.hbs +1 -0
- package/src/stories/views/components/button/utilities/button_on_image_classes.hbs +39 -0
- package/src/stories/views/components/button/utilities/button_variation_classes.hbs +14 -0
- package/src/stories/views/components/content_nav/content_nav_container.hbs +1 -1
- package/src/stories/views/components/content_nav/content_nav_item.hbs +1 -1
- package/src/stories/views/components/event/calendar/event_calendar_footer.hbs +1 -1
- package/src/stories/views/components/event/event_ticket_button.hbs +11 -9
- package/src/stories/views/components/grid/grid_group_highlight.hbs +1 -1
- package/src/stories/views/components/label/label_old.hbs +1 -1
- package/src/stories/views/components/mediaplayer/media_player.hbs +4 -22
- package/src/stories/views/components/mediaplayer/mediaplayer_button.hbs +9 -0
- package/src/stories/views/components/mediaplayer/mediaplayer_button.mdx +82 -0
- package/src/stories/views/components/mediaplayer/mediaplayer_button.stories.js +178 -0
- package/src/stories/views/components/modal/modal.hbs +2 -2
- package/src/stories/views/components/site_header/brand_navigation/brand_navigation.hbs +1 -1
- package/src/stories/views/components/teaser/cluster/teaser_cluster.hbs +4 -1
- package/src/stories/views/components/teaser/cluster/teaser_cluster_byline.hbs +1 -1
- package/src/stories/views/components/teaser/cluster/teaser_cluster_item.hbs +1 -1
- package/src/stories/views/components/teaser/components/teaser_av_consumption_close_button.hbs +6 -20
- package/src/stories/views/components/teaser/components/teaser_byline.hbs +1 -1
- package/src/stories/views/components/teaser/components/teaser_image.hbs +7 -15
- package/src/stories/views/components/teaser/components/teaser_ticker_body.hbs +40 -0
- package/src/stories/views/components/teaser/fixtures/teaser_event_calendar_100_serif.json +1 -1
- package/src/stories/views/components/teaser/fixtures/ticker_teaser_standard_100.json +1 -1
- package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.hbs +18 -15
- package/src/stories/views/components/teaser/podcast/podcast_title.hbs +2 -2
- package/src/stories/views/components/teaser/tabbox/group_tabbox.hbs +4 -1
- package/src/stories/views/components/teaser/tabbox/teaser_tabbox.hbs +10 -11
- package/src/stories/views/components/teaser/teaser_poster.hbs +5 -1
- package/src/stories/views/components/teaser/ticker/teaser_ticker.hbs +4 -4
- package/src/stories/views/components/teaser/ticker/teaser_ticker.stories.js +1 -1
- package/tailwind.config.js +8 -1
- package/dist/views/components/button/button_pseudo.hbs +0 -8
- package/dist/views/components/button/button_pseudo.inc.hbs +0 -18
- package/dist/views/components/button/button_pseudo_v2.hbs +0 -12
- package/dist/views/components/button/button_round.hbs +0 -23
- package/dist/views/components/button/button_round_classes.hbs +0 -46
- package/dist/views/components/button/button_transparent.hbs +0 -17
- package/dist/views/components/button/button_v2.hbs +0 -7
- package/dist/views/components/button/components/button_pseudo_link.hbs +0 -3
- package/src/stories/views/components/button/button_pseudo.hbs +0 -8
- package/src/stories/views/components/button/button_pseudo.inc.hbs +0 -18
- package/src/stories/views/components/button/button_pseudo_v2.hbs +0 -12
- package/src/stories/views/components/button/button_round.hbs +0 -23
- package/src/stories/views/components/button/button_round_classes.hbs +0 -46
- package/src/stories/views/components/button/button_transparent.hbs +0 -17
- package/src/stories/views/components/button/button_v2.hbs +0 -7
- package/src/stories/views/components/button/components/button_pseudo_link.hbs +0 -3
package/src/assets/tailwind.css
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
/* Sendung */
|
|
29
29
|
--color-label-program: theme('colors.blue.matisse');
|
|
30
30
|
/* Download */
|
|
31
|
-
--color-label-download: theme('colors.
|
|
31
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
32
32
|
/* Pressemitteilungen */
|
|
33
33
|
--color-label-pm: theme('colors.blue.deepCerulean');
|
|
34
34
|
/* Sendungsdokument */
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
/* Eventkalender */
|
|
43
43
|
--color-label-event-calendar-title: theme('colors.teal.deeperPool');
|
|
44
44
|
--color-eventcalendar-primary: var(--color-primary-ds);
|
|
45
|
-
--color-eventcalendar-secondary: theme('colors.
|
|
45
|
+
--color-eventcalendar-secondary: theme('colors.gray.boulder');
|
|
46
46
|
/* Subline */
|
|
47
47
|
--color-subline: var(--color-topline);
|
|
48
48
|
/* Link */
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
--color-stage-primary: theme('colors.blue.deepCerulean');
|
|
54
54
|
--color-stage-link: var('--color-link');
|
|
55
55
|
/* geoTag */
|
|
56
|
-
--color-geoTag: theme('colors.
|
|
56
|
+
--color-geoTag: theme('colors.gray.brightGray');
|
|
57
57
|
/* Cluster-Teaser */
|
|
58
58
|
--color-cluster-teaser-link: theme('colors.blue.science');
|
|
59
59
|
--color-cluster-teaser-headline: theme('colors.blue.congress');
|
|
@@ -61,6 +61,8 @@
|
|
|
61
61
|
--color-button: var(--color-primary-ds);
|
|
62
62
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
63
63
|
--color-button-hollow: theme('colors.blue.science');
|
|
64
|
+
--color-button-secondary: theme('colors.blue.science');
|
|
65
|
+
--color-button-ghost: theme('colors.blue.science');
|
|
64
66
|
/* Media-Button */
|
|
65
67
|
--color-media-button: theme('colors.blue.jellyBean');
|
|
66
68
|
/* States */
|
|
@@ -71,7 +73,7 @@
|
|
|
71
73
|
--color-podcast: theme('colors.blue.science');
|
|
72
74
|
--color-podcast-text: var(--color-link);
|
|
73
75
|
/* Byline */
|
|
74
|
-
--color-byline: theme('colors.
|
|
76
|
+
--color-byline: theme('colors.gray.scorpion');
|
|
75
77
|
/* Font */
|
|
76
78
|
--font-title: theme('fontFamily.heading');
|
|
77
79
|
--font-weight-title: theme('fontWeight.bold');
|
|
@@ -102,7 +104,7 @@
|
|
|
102
104
|
/* Sendung */
|
|
103
105
|
--color-label-program: theme('colors.blue.matisse');
|
|
104
106
|
/* Download */
|
|
105
|
-
--color-label-download: theme('colors.
|
|
107
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
106
108
|
/* Pressemitteilungen */
|
|
107
109
|
--color-label-pm: theme('colors.blue.deepCerulean');
|
|
108
110
|
/* Kurzmeldung */
|
|
@@ -121,14 +123,20 @@
|
|
|
121
123
|
--color-stage-text: theme('colors.white.DEFAULT');
|
|
122
124
|
--color-stage-link: theme('colors.white.DEFAULT');
|
|
123
125
|
/* geoTag */
|
|
124
|
-
--color-geoTag: theme('colors.
|
|
126
|
+
--color-geoTag: theme('colors.gray.brightGray');
|
|
125
127
|
/* Cluster-Teaser */
|
|
126
128
|
--color-cluster-teaser-link: theme('colors.blue.science');
|
|
127
129
|
--color-cluster-teaser-headline: theme('colors.blue.congress');
|
|
128
130
|
/* Button */
|
|
129
131
|
--color-button: var(--color-primary-ds);
|
|
132
|
+
--color-button-primary: theme('colors.blue.science');
|
|
133
|
+
--color-button-primary-dark: theme('colors.blue.congress');
|
|
134
|
+
--color-button-primary-inverted: theme('colors.white.DEFAULT');
|
|
135
|
+
--color-button-primary-inverted-dark: theme('colors.blue.accented');
|
|
130
136
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
131
137
|
--color-button-hollow: theme('colors.blue.science');
|
|
138
|
+
--color-button-secondary: theme('colors.blue.science');
|
|
139
|
+
--color-button-ghost: theme('colors.blue.science');
|
|
132
140
|
/* Media-Button */
|
|
133
141
|
--color-media-button: theme('colors.blue.science');
|
|
134
142
|
/* States */
|
|
@@ -165,7 +173,7 @@
|
|
|
165
173
|
/* Sendung */
|
|
166
174
|
--color-label-program: theme('colors.red.mexican');
|
|
167
175
|
/* Download */
|
|
168
|
-
--color-label-download: theme('colors.
|
|
176
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
169
177
|
/* Event */
|
|
170
178
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
171
179
|
/* Kurzmeldung */
|
|
@@ -190,6 +198,8 @@
|
|
|
190
198
|
--color-button: var(--color-primary-ds);
|
|
191
199
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
192
200
|
--color-button-hollow: theme('colors.purple.jazzberry');
|
|
201
|
+
--color-button-secondary: theme('colors.purple.jazzberry');
|
|
202
|
+
--color-button-ghost: theme('colors.purple.jazzberry');
|
|
193
203
|
/* Media-Button */
|
|
194
204
|
--color-media-button: var(--color-primary-ds);
|
|
195
205
|
/* States */
|
|
@@ -222,7 +232,7 @@
|
|
|
222
232
|
/* Sendung */
|
|
223
233
|
--color-label-program: theme('colors.pink.rose');
|
|
224
234
|
/* Download */
|
|
225
|
-
--color-label-download: theme('colors.
|
|
235
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
226
236
|
/* Event */
|
|
227
237
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
228
238
|
/* Kurzmeldung */
|
|
@@ -246,6 +256,8 @@
|
|
|
246
256
|
--color-button: var(--color-primary-ds);
|
|
247
257
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
248
258
|
--color-button-hollow: theme('colors.blue.jellyBean');
|
|
259
|
+
--color-button-secondary: theme('colors.blue.jellyBean');
|
|
260
|
+
--color-button-ghost: theme('colors.blue.jellyBean');
|
|
249
261
|
/* Media-Button */
|
|
250
262
|
--color-media-button: var(--color-primary-ds);
|
|
251
263
|
/* States */
|
|
@@ -262,7 +274,7 @@
|
|
|
262
274
|
}
|
|
263
275
|
|
|
264
276
|
[data-theme='hr-rundfunkrat'] {
|
|
265
|
-
--color-primary-ds: theme('colors.
|
|
277
|
+
--color-primary-ds: theme('colors.gray.scorpion');
|
|
266
278
|
--color-secondary-ds: #007179;
|
|
267
279
|
--color-highlight-1: theme('colors.blue.accented');
|
|
268
280
|
--color-highlight-2: theme('colors.orange.spicyCarrot');
|
|
@@ -278,7 +290,7 @@
|
|
|
278
290
|
/* Sendung */
|
|
279
291
|
--color-label-program: theme('colors.red.mexican');
|
|
280
292
|
/* Download */
|
|
281
|
-
--color-label-download: theme('colors.
|
|
293
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
282
294
|
/* Event */
|
|
283
295
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
284
296
|
/* Pressemitteilungen */
|
|
@@ -304,6 +316,8 @@
|
|
|
304
316
|
--color-button: theme('colors.blue.deepCerulean');
|
|
305
317
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
306
318
|
--color-button-hollow: theme('colors.blue.deepCerulean');
|
|
319
|
+
--color-button-secondary: theme('colors.blue.deepCerulean');
|
|
320
|
+
--color-button-ghost: theme('colors.blue.deepCerulean');
|
|
307
321
|
/* Media-Button */
|
|
308
322
|
--color-media-button: var(--color-primary-ds);
|
|
309
323
|
/* States */
|
|
@@ -336,7 +350,7 @@
|
|
|
336
350
|
/* Sendung */
|
|
337
351
|
--color-label-program: theme('colors.red.mexican');
|
|
338
352
|
/* Download */
|
|
339
|
-
--color-label-download: theme('colors.
|
|
353
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
340
354
|
/* Event */
|
|
341
355
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
342
356
|
/* Pressemitteilungen */
|
|
@@ -362,6 +376,8 @@
|
|
|
362
376
|
--color-button: var(--color-primary-ds);
|
|
363
377
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
364
378
|
--color-button-hollow: var(--color-primary-ds);
|
|
379
|
+
--color-button-secondary: var(--color-primary-ds);
|
|
380
|
+
--color-button-ghost: var(--color-primary-ds);
|
|
365
381
|
/* Media-Button */
|
|
366
382
|
--color-media-button: var(--color-primary-ds);
|
|
367
383
|
/* States */
|
|
@@ -380,7 +396,7 @@
|
|
|
380
396
|
[data-theme='hr-sinfonieorchester'] {
|
|
381
397
|
--color-primary-ds: theme('colors.red.burntUmber');
|
|
382
398
|
--color-secondary-ds: #007179;
|
|
383
|
-
--color-highlight-1: theme('colors.
|
|
399
|
+
--color-highlight-1: theme('colors.gray.alto');
|
|
384
400
|
--color-highlight-2: theme('colors.orange.spicyCarrot');
|
|
385
401
|
|
|
386
402
|
/* Medieninhalte, Video, Audio, Bildergalerie */
|
|
@@ -394,7 +410,7 @@
|
|
|
394
410
|
/* Sendung */
|
|
395
411
|
--color-label-program: theme('colors.green.goBen');
|
|
396
412
|
/* Download */
|
|
397
|
-
--color-label-download: theme('colors.
|
|
413
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
398
414
|
/* Event */
|
|
399
415
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
400
416
|
/* Kurzmeldung */
|
|
@@ -418,6 +434,8 @@
|
|
|
418
434
|
--color-button: theme('colors.red.wellRead');
|
|
419
435
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
420
436
|
--color-button-hollow: theme('colors.red.wellRead');
|
|
437
|
+
--color-button-secondary: theme('colors.red.wellRead');
|
|
438
|
+
--color-button-ghost: theme('colors.red.wellRead');
|
|
421
439
|
/* Media-Button */
|
|
422
440
|
--color-media-button: theme('colors.red.wellRead');
|
|
423
441
|
/* States */
|
|
@@ -450,7 +468,7 @@
|
|
|
450
468
|
/* Sendung */
|
|
451
469
|
--color-label-program: theme('colors.blue.blueStone');
|
|
452
470
|
/* Download */
|
|
453
|
-
--color-label-download: theme('colors.
|
|
471
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
454
472
|
/* Event */
|
|
455
473
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
456
474
|
/* Kurzmeldung */
|
|
@@ -474,6 +492,8 @@
|
|
|
474
492
|
--color-button: theme('colors.blue.teal');
|
|
475
493
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
476
494
|
--color-button-hollow: theme('colors.blue.teal');
|
|
495
|
+
--color-button-secondary: theme('colors.blue.teal');
|
|
496
|
+
--color-button-ghost: theme('colors.blue.teal');
|
|
477
497
|
/* Media-Button */
|
|
478
498
|
--color-media-button: theme('colors.blue.teal');
|
|
479
499
|
/* States */
|
|
@@ -506,7 +526,7 @@
|
|
|
506
526
|
/* Sendung */
|
|
507
527
|
--color-label-program: theme('colors.red.mexican');
|
|
508
528
|
/* Download */
|
|
509
|
-
--color-label-download: theme('colors.
|
|
529
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
510
530
|
/* Event */
|
|
511
531
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
512
532
|
/* Pressemitteilungen */
|
|
@@ -532,6 +552,8 @@
|
|
|
532
552
|
--color-button: var(--color-primary-ds);
|
|
533
553
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
534
554
|
--color-button-hollow: var(--color-primary-ds);
|
|
555
|
+
--color-button-secondary: var(--color-primary-ds);
|
|
556
|
+
--color-button-ghost: var(--color-primary-ds);
|
|
535
557
|
/* Media-Button */
|
|
536
558
|
--color-media-button: var(--color-primary-ds);
|
|
537
559
|
/* States */
|
|
@@ -590,6 +612,8 @@
|
|
|
590
612
|
--color-button: theme('colors.yellow.olive');
|
|
591
613
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
592
614
|
--color-button-hollow: theme('colors.yellow.olive');
|
|
615
|
+
--color-button-secondary: theme('colors.yellow.olive');
|
|
616
|
+
--color-button-ghost: theme('colors.yellow.olive');
|
|
593
617
|
/* Media-Button */
|
|
594
618
|
--color-media-button: theme('colors.yellow.olive');
|
|
595
619
|
/* States */
|
|
@@ -608,7 +632,7 @@
|
|
|
608
632
|
[data-theme='hr2'] {
|
|
609
633
|
--color-primary-ds: theme('colors.orange.clementine');
|
|
610
634
|
--color-secondary-ds: #007179;
|
|
611
|
-
--color-highlight-1: theme('colors.
|
|
635
|
+
--color-highlight-1: theme('colors.gray.alto');
|
|
612
636
|
--color-highlight-2: theme('colors.orange.spicyCarrot');
|
|
613
637
|
|
|
614
638
|
/* Medieninhalte, Video, Audio, Bildergalerie */
|
|
@@ -622,7 +646,7 @@
|
|
|
622
646
|
/* Sendung */
|
|
623
647
|
--color-label-program: theme('colors.red.paprika');
|
|
624
648
|
/* Download */
|
|
625
|
-
--color-label-download: theme('colors.
|
|
649
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
626
650
|
/* Event */
|
|
627
651
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
628
652
|
/* Kurzmeldung */
|
|
@@ -647,6 +671,8 @@
|
|
|
647
671
|
--color-button: theme('colors.red.paprika');
|
|
648
672
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
649
673
|
--color-button-hollow: theme('colors.red.paprika');
|
|
674
|
+
--color-button-secondary: theme('colors.red.paprika');
|
|
675
|
+
--color-button-ghost: theme('colors.red.paprika');
|
|
650
676
|
/* Media-Button */
|
|
651
677
|
--color-media-button: theme('colors.orange.burntOrange');
|
|
652
678
|
/* States */
|
|
@@ -665,7 +691,7 @@
|
|
|
665
691
|
[data-theme='hr3'] {
|
|
666
692
|
--color-primary-ds: theme('colors.red.monza');
|
|
667
693
|
--color-secondary-ds: #007179;
|
|
668
|
-
--color-highlight-1: theme('colors.
|
|
694
|
+
--color-highlight-1: theme('colors.gray.mercury');
|
|
669
695
|
--color-highlight-2: theme('colors.orange.spicyCarrot');
|
|
670
696
|
|
|
671
697
|
/* Medieninhalte, Video, Audio, Bildergalerie */
|
|
@@ -679,7 +705,7 @@
|
|
|
679
705
|
/* Sendung */
|
|
680
706
|
--color-label-program: theme('colors.green.pineGreen');
|
|
681
707
|
/* Download */
|
|
682
|
-
--color-label-download: theme('colors.
|
|
708
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
683
709
|
/* Event */
|
|
684
710
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
685
711
|
/* Kurzmeldung */
|
|
@@ -706,6 +732,8 @@
|
|
|
706
732
|
--color-button: theme('colors.red.scarlett');
|
|
707
733
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
708
734
|
--color-button-hollow: theme('colors.red.scarlett');
|
|
735
|
+
--color-button-secondary: theme('colors.red.scarlett');
|
|
736
|
+
--color-button-ghost: theme('colors.red.scarlett');
|
|
709
737
|
/* Media-Button */
|
|
710
738
|
--color-media-button: var(--color-primary-ds);
|
|
711
739
|
/* States */
|
|
@@ -738,7 +766,7 @@
|
|
|
738
766
|
/* Sendung */
|
|
739
767
|
--color-label-program: theme('colors.pink.fuchsie');
|
|
740
768
|
/* Download */
|
|
741
|
-
--color-label-download: theme('colors.
|
|
769
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
742
770
|
/* Event */
|
|
743
771
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
744
772
|
/* Kurzmeldung */
|
|
@@ -765,6 +793,8 @@
|
|
|
765
793
|
--color-button: theme('colors.green.casal');
|
|
766
794
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
767
795
|
--color-button-hollow: theme('colors.green.casal');
|
|
796
|
+
--color-button-secondary: theme('colors.green.casal');
|
|
797
|
+
--color-button-ghost: theme('colors.green.casal');
|
|
768
798
|
/* Media-Button */
|
|
769
799
|
--color-media-button: theme('colors.green.eden');
|
|
770
800
|
/* States */
|
|
@@ -785,7 +815,7 @@
|
|
|
785
815
|
[data-theme='you-fm'] {
|
|
786
816
|
--color-primary-ds: #c20016;
|
|
787
817
|
--color-secondary-ds: #007179;
|
|
788
|
-
--color-highlight-1: theme('colors.
|
|
818
|
+
--color-highlight-1: theme('colors.gray.platinum');
|
|
789
819
|
--color-highlight-2: theme('colors.orange.spicyCarrot');
|
|
790
820
|
|
|
791
821
|
/* Medieninhalte, Video, Audio, Bildergalerien */
|
|
@@ -799,7 +829,7 @@
|
|
|
799
829
|
/* Sendung */
|
|
800
830
|
--color-label-program: theme('colors.blue.lightCerulean');
|
|
801
831
|
/* Download */
|
|
802
|
-
--color-label-download: theme('colors.
|
|
832
|
+
--color-label-download: theme('colors.gray.scorpion');
|
|
803
833
|
/* Event */
|
|
804
834
|
--color-label-event: theme('colors.black.DEFAULT');
|
|
805
835
|
/* Kurzmeldung */
|
|
@@ -824,6 +854,8 @@
|
|
|
824
854
|
--color-button: var(--color-link);
|
|
825
855
|
--color-button-inverted: theme('colors.white.DEFAULT');
|
|
826
856
|
--color-button-hollow: var(--color-link);
|
|
857
|
+
--color-button-secondary: var(--color-link);
|
|
858
|
+
--color-button-ghost: var(--color-link);
|
|
827
859
|
/* Media-Button */
|
|
828
860
|
--color-media-button: theme('colors.black.DEFAULT');
|
|
829
861
|
/* States */
|
|
@@ -4,6 +4,18 @@ import { Meta, Canvas } from '@storybook/addon-docs'
|
|
|
4
4
|
|
|
5
5
|
# Konventionen und Datenstrukturen
|
|
6
6
|
|
|
7
|
+
- [Übersicht](#übersicht)
|
|
8
|
+
- [Aufbau der Datenstruktur des Designsystems](#aufbau-der-datenstruktur-des-designsystems)
|
|
9
|
+
- [Namenskonventionen](#namenskonventionen)
|
|
10
|
+
- [Stories](#stories)
|
|
11
|
+
- [Handlebar-Komponenten](#handlebar-komponenten)
|
|
12
|
+
- [JSON](#json)
|
|
13
|
+
- [Konventionen beim Bau von Komponenten](#konventionen-beim-bau-von-komponentenn)
|
|
14
|
+
- [Styling von Komponenten](#styling-von-komponenten)
|
|
15
|
+
- [Wiederverwendbarkeit und Erweiterbarkeit von Komponenten](#wiederverwendbarkeit-und-erweiterbarkeit-von-komponenten)
|
|
16
|
+
|
|
17
|
+
## Übersicht
|
|
18
|
+
|
|
7
19
|
Dieses Kapitel richtet sich vor allem an die Entwickler des Designsystems. Es erläutert den grundlegenden Aufbau der Datenstruktur und legt Konventionen für die Benennung von Dateien fest.
|
|
8
20
|
|
|
9
21
|
## Aufbau der Datenstruktur des Designsystems
|
|
@@ -159,7 +171,11 @@ svg_optimization.stories.mdx`}
|
|
|
159
171
|
</pre>
|
|
160
172
|
</div>
|
|
161
173
|
|
|
162
|
-
### Handlebar
|
|
174
|
+
### Handlebar-Komponenten
|
|
175
|
+
|
|
176
|
+
Bei der Erstellung von Handlebar-Komponenten müssen verschiedenen Namenskonvention eingehalten werden.
|
|
177
|
+
|
|
178
|
+
#### Namen von Komponenten
|
|
163
179
|
|
|
164
180
|
Für die Namen von Handlebar-Komponenten gelten die gleichen Regeln wie für Stories.
|
|
165
181
|
|
|
@@ -192,8 +208,11 @@ Namen und deren einzelnen Bestandteile sind immer auszuschreiben. Abkürzungen s
|
|
|
192
208
|
<pre class="!bg-white !p-4 !leading-8">{`brand_navigation_item.hbs`}</pre>
|
|
193
209
|
</div>
|
|
194
210
|
|
|
211
|
+
#### Namen von Komponenten-Parametern
|
|
212
|
+
|
|
195
213
|
Die Namen von Parametern in Handlebar-Komponenten sind, anders als der Datainame, in
|
|
196
|
-
[Camel-Case](https://en.wikipedia.org/wiki/Camel_case) Notation zu schreiben
|
|
214
|
+
[Camel-Case](https://en.wikipedia.org/wiki/Camel_case) Notation zu schreiben und mit einem Unterstrich
|
|
215
|
+
zu prefixen.
|
|
197
216
|
|
|
198
217
|
<div class="bg-red-200 !mt-4 p-4">
|
|
199
218
|
<h4 class="!text-red-900 font-bold">Falsch</h4>
|
|
@@ -204,11 +223,58 @@ Die Namen von Parametern in Handlebar-Komponenten sind, anders als der Datainame
|
|
|
204
223
|
<div class="bg-green-200 !mt-4 p-4">
|
|
205
224
|
<h4 class="!text-green-900 font-bold">Korrekt</h4>
|
|
206
225
|
<pre class="!bg-white !p-4 !leading-8">
|
|
207
|
-
{{#>components/base/link
|
|
208
|
-
|
|
226
|
+
{{#>components/base/link _cssClasses="" _isAriaHidden=true
|
|
227
|
+
_clickLabelPrefix2="mediaLink"}}
|
|
209
228
|
</pre>
|
|
210
229
|
</div>
|
|
211
230
|
|
|
231
|
+
#### Namen übergebener Komponenten-Parameter in Partial-Blocks und Inline-Partials
|
|
232
|
+
|
|
233
|
+
Sollen an Subkomponenten, die in Partial-Blocks und/oder Inline-Partials aufgerufen werden Komponenten-Parameter der Parent-Komponente
|
|
234
|
+
übergeben werden, muss an die Namen der zu übergebenden Parameter das Postfix `-adjust_context` angefügt werden.
|
|
235
|
+
Dies ist leider notwendig, da [Handlebars.js](https://handlebarsjs.com) und [Handlebars.java](https://github.com/jknack/handlebars.java)
|
|
236
|
+
innerhalb von Partial-Blocks und Inline-Partials die Datenkontexte anders auflösen. Der Wert des Parameters `_css` kann in
|
|
237
|
+
Handlebars.js direkt, in Handlebars.java aber nur ausgelesen werden, wenn mittels `../../_css` zwei Ebenen nach oben gegangen wird.
|
|
238
|
+
Durch setzen des Postfixes `-adjust_context` können mittels eines Gulp-Skriptes diese Vatriablen in Komponenten herausgefiltert werden
|
|
239
|
+
und je nachdem wofür gerade gebaut wird der Kontext automatisiert angepasst werden oder nicht. Hierzu ein kurzes Beispiel.
|
|
240
|
+
|
|
241
|
+
```handlebars
|
|
242
|
+
{{#with this}}
|
|
243
|
+
{{> components/base/image/icon _icon="play_button" _addClass="text-media-button fill-white hover:fill-media-button w-10 h-10 inline"}}
|
|
244
|
+
{{#*inline "css"~}}
|
|
245
|
+
{{~> components/button/utilities/button_on_image_classes _isMobile1to1=_isMobile1to1-adjust_context}}
|
|
246
|
+
{{/inline}}
|
|
247
|
+
{{/with}}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Dem Play-Button Icon werden hier in einem Inline-Partial mit der [Style-Komponente](#setzen-kontextabhängiger-css-klassen-mit-style-komponenten)
|
|
251
|
+
`button_on_image_classes` zusätzliche CSS Klassen übergeben. Je nach Wert des Parameters `_isMobile1to1` werden darin unterschiedliche CSS Klassen gesetzt.
|
|
252
|
+
Der Wert dieses Parameters kommt in diesem Beispiel aus einem Parameter gleichen Namens aus dem Parent-Kontext. Damit dieser korrekt von
|
|
253
|
+
den unterschiedlichen Handlebars Implementierungen aufgelöst werden kann, hat er den Postfix `-adjust_context` erhalten. Das oben angesprochene
|
|
254
|
+
Gulp-Skript filtert diesen Parameter jetzt heraus und macht daraus, wenn Storybook mit `yarn storybook` lokal ausgeführt wird wieder den Parameter `_isMobile1to1`.
|
|
255
|
+
|
|
256
|
+
```handlebars
|
|
257
|
+
{{#with this}}
|
|
258
|
+
{{> components/base/image/icon _icon="play_button" _addClass="text-media-button fill-white hover:fill-media-button w-10 h-10 inline"}}
|
|
259
|
+
{{#*inline "css"~}}
|
|
260
|
+
{{~> components/button/utilities/button_on_image_classes _isMobile1to1=_isMobile1to1}}
|
|
261
|
+
{{/inline}}
|
|
262
|
+
{{/with}}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Anders verhält es sich, wenn mit `yarn build` das Designsystem für die Verwendung im Delivery gebaut wird (dieses Skript wird beim bauen eines Releases
|
|
266
|
+
in Github aufgerufen). Der Parameter `_isMobile1to1-adjust_context` wird jetzt durch `../../_isMobile1to1` ersetzt, sodass auch im Kontext von Handlebars.java
|
|
267
|
+
der Wert des Parameters korrekt ausgelesen werden kann.
|
|
268
|
+
|
|
269
|
+
```handlebars
|
|
270
|
+
{{#with this}}
|
|
271
|
+
{{> components/base/image/icon _icon="play_button" _addClass="text-media-button fill-white hover:fill-media-button w-10 h-10 inline"}}
|
|
272
|
+
{{#*inline "css"~}}
|
|
273
|
+
{{~> components/button/utilities/button_on_image_classes _isMobile1to1=../../_isMobile1to1}}
|
|
274
|
+
{{/inline}}
|
|
275
|
+
{{/with}}
|
|
276
|
+
```
|
|
277
|
+
|
|
212
278
|
### JSON
|
|
213
279
|
|
|
214
280
|
Im Designsystem werden Testdaten für Komponenten mittels JSON-Dateien bereitgestellt. Auch diese Dateinamen werden in Snake-Case Notation
|
|
@@ -238,3 +304,150 @@ sofern sie aus mehreren Worten zusammengesetzt werden, mit Minus voneinander get
|
|
|
238
304
|
|— navigation-flyout`}
|
|
239
305
|
</pre>
|
|
240
306
|
</div>
|
|
307
|
+
|
|
308
|
+
## Konventionen beim Bau von Komponenten
|
|
309
|
+
|
|
310
|
+
Bei der Entwicklung neuer Komponenten müssen einige Konventionen beachtet werden.
|
|
311
|
+
|
|
312
|
+
### Styling von Komponenten
|
|
313
|
+
|
|
314
|
+
Zum Styling von Komponenten verwenden wir das CSS Framework [Tailwind CSS](https://tailwindcss.com/). Tailwind CSS
|
|
315
|
+
ist ein auf dem Utility-First Ansatz basierendes Framework. Für nahezu jede CSS Eigenschaft gibt es eine eigene
|
|
316
|
+
Utility Klasse, mit deren Hilfe die Styles einer Komponente im HTML Markup zusammengesetzt werden. Anstatt
|
|
317
|
+
wie üblich Klassen mit beliebig vielen CSS Eigenschaften zu erstellen, setzen Tailwind CSS Klassen in der Regel
|
|
318
|
+
immer nur jeweils eine einzelne Style Eigenschaft. Auf diese Weise wird ein sehr hohes Maß an Wiederverwendung
|
|
319
|
+
erreicht und die Dateigröße der ausglieferten CSS Dateien ist in der Regel deutlich kleiner als beim klassischen
|
|
320
|
+
Ansatz mit mehreren CSS Eigenschaften pro Klasse.
|
|
321
|
+
Nachteil ist jedoch, dass alle CSS Logik auf diese Weise in die Templates verlagert wird und diese auf den ersten
|
|
322
|
+
Blick recht unübersichtlich wirken können.
|
|
323
|
+
|
|
324
|
+
#### Definition eigener CSS Klassen
|
|
325
|
+
|
|
326
|
+
Tailwind CSS gestattet es auch sehr einfach eigene CSS Klassen zu schreiben. Sollte es für eine bestimmte CSS Eigenschaft
|
|
327
|
+
noch keine eigene Utility Klasse geben, kann diese problemlos in der Datei `custom-utilities.css` definiert werden.
|
|
328
|
+
Auch ist es möglich in der Datei `custom-components.css` eigene, vom Utility-First Ansatz abweichende, Klassen zu schreiben.
|
|
329
|
+
|
|
330
|
+
Von dieser Möglichkeit sollte aber nur in Ausnahmefällen gebrauch gemacht werden, da ansonsten der Vorteil der kleinen Dateigrößen
|
|
331
|
+
sehr schnell zunichte gemacht werden kann.
|
|
332
|
+
|
|
333
|
+
#### Setzen Kontextabhängiger CSS Klassen mit Style-Komponenten
|
|
334
|
+
|
|
335
|
+
An vielen Stellen im Design System müssen CSS Klassen abhängig vom Kontext, in dem die zu stylende Komponente genutzt wird, gesetzt
|
|
336
|
+
werden. Ein Beispiel dafür sind Teaser auf Übersichtsseiten. Wie diese auf der Webseite angezeigt werden sollen, können Redakteure
|
|
337
|
+
auf der Webseite durch setzen entsprechender Parameter dynamisch festlegen.
|
|
338
|
+
Mit der Verwendung von Tailwind CSS und dem Einsatz von Utility Klassen, verlagert sich die ganze Logik aus den CSS Dateien in die
|
|
339
|
+
Komponenten. Als Best-Practice haben sich hierfür separate, ausschließlich CSS Klassen setzende, Handlebar-Komponenten (Style-Komponenten) herausgestellt.
|
|
340
|
+
Diesen Komponenten werden die von den Redakteuren im CMS vorgenommenen Einstellungen als Parameter übergeben. Abhängig von deren Wert
|
|
341
|
+
werden die entsprechenden CSS Utility Klassen gesetzt. Style-Komponenten können beliebig oft und an beliebigen Stellen wiederverwendet werden.
|
|
342
|
+
|
|
343
|
+
### Wiederverwendbarkeit und Erweiterbarkeit von Komponenten
|
|
344
|
+
|
|
345
|
+
Damit nicht bei jeder neuen Anforderung das Rad neu erfunden werden muss, ist es wichtig, dass
|
|
346
|
+
beim Bau von Komponenten auf ein hohes Maß an Wiederverwendbarkeit sowie eine
|
|
347
|
+
gute und einfache Erweiterbarkeit geachtet wird.
|
|
348
|
+
Komponenten sollten demgemäß möglichst einfach gehalten und nicht mit einer vielzahl an Features überladen werden.
|
|
349
|
+
|
|
350
|
+
Ein gutes Beispiel, wie man es nicht machen sollte ist die Button-Komponente. Bei ihr wurde versucht alle Anforderungen,
|
|
351
|
+
die an einen Button gestellt wurden in einer einzigen Komponente abzubilden. Dies ging bei den initialen Anforderungen
|
|
352
|
+
noch halbwegs, aber je mehr zusätzliche Anforderungen und Features im Laufe der Zeit hinzukamen, desto unübersichtlicher
|
|
353
|
+
und schlechter wartbar wurde die Komponente. Am Ende hatte die Komponente fast zwanzig Parameter, mit denen ihr Verhalten
|
|
354
|
+
gesteuert werden konnte und sie war zu einem richtigen "Monster" angewachsen.
|
|
355
|
+
Aus diesem Grund wurde sie umgebaut und vereinfacht. Gemäß dem Prinzip der "[Component Selfishness](https://www.smashingmagazine.com/2023/01/key-good-component-design-selfishness/)"
|
|
356
|
+
rendert die Komponente nur noch den Rahmen eines Buttons. Alle Inhalte, wie das Label oder ein mögliches Icon,
|
|
357
|
+
werden dem Button mit Hilfe von Subkomponenten hinzugefügt.
|
|
358
|
+
|
|
359
|
+
#### Erweitern von Basis-Komponenten mit Subkomponenten
|
|
360
|
+
|
|
361
|
+
Um einer Basis-Komponente weitere Inhalte mittels Subkomponenten hinzuzufügen, sieht Handlebars das Konzept der
|
|
362
|
+
sogenannten "[Partial-Blocks}(https://handlebarsjs.com/guide/partials.html#partial-blocks)" vor. Mit `@partial-block`
|
|
363
|
+
stellt Handlebars hierfür ein spezielles Partial bereit. Es erlaubt in einer Basis-Komponente, wie z.B. der Button-Komponente,
|
|
364
|
+
an einer bestimmten Stelle im Markup einen Platzhalter für mögliche Subkomponenten anzugeben.
|
|
365
|
+
Schauen wir uns das ganze anhand der Button-Komponente an.
|
|
366
|
+
|
|
367
|
+
```handlebars
|
|
368
|
+
<button>
|
|
369
|
+
{{> @partial-block }}
|
|
370
|
+
</button>
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Die Komponente rendert lediglich das Markup des Button-Elements (alle HTML-Properties des Button wurden der besseren Übersichtlichkeit halber an
|
|
374
|
+
dieser Stelle weggelassen) und ruft das `@partial-block` Partial auf. Der Button Komponente können jetzt, wie nachfolgend gezeigt, Subkomponenten hinzugefügt
|
|
375
|
+
werden.
|
|
376
|
+
|
|
377
|
+
```handlebars
|
|
378
|
+
{{#> components/button/button _size="lg"}}
|
|
379
|
+
{{> components/button/components/button_label _label="Icon rechts"}}
|
|
380
|
+
{{> components/button/components/button_icon _icon="arrow-right" _iconmap="icons"}}
|
|
381
|
+
{{/components/button/button}}
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
Auf diese Weise ist es möglich neue Funktionen sehr einfach über Subkomponenten hinzuzufügen.
|
|
385
|
+
|
|
386
|
+
#### Komponenten mit Inline-Partials um zusätzliche Eigenschaften Erweitern
|
|
387
|
+
|
|
388
|
+
Wie im vorigen Abschnitt erläutert, können Basis-Komponenten mit Hilfe des `@partial-block` Partials
|
|
389
|
+
sehr gut mit Hilfe von Subkomponenten erweitert werden. Sollen jedoch einem von einer Komponente gerenderten HTML-Element
|
|
390
|
+
dynamisch weitere Eigenschaften (z.B. über Style-Komponenten bereitgestellte CSS-Klassen) übergeben werden,
|
|
391
|
+
ist dies auf diesem Wege nicht möglich. Hierfür lassen sich in Handlebars sogenannte [`Inline-Partials`](https://handlebarsjs.com/guide/partials.html#inline-partials)
|
|
392
|
+
nutzen. Deren Gebrauch lässt sich am besten mit einem Beispiel erläutern.
|
|
393
|
+
|
|
394
|
+
Für den Abonieren-Button in der Podcast-Player-Komponente wird die Button-Komponente verwendet.
|
|
395
|
+
Diese setzt standardmäßig verschiedenen HTML-Properties im HTML-Button-Element. Der Abonieren-Button
|
|
396
|
+
benötigt darüber hinaus weitere HTML-Properties. Diese sind aber so speziell, dass sie nicht der
|
|
397
|
+
Button-Komponente als weitere Standard-HTML-Properties hinzugefügt wurden. Stattdessen wurde mit einem
|
|
398
|
+
`Inline-Partial` die Möglichkeit geschaffen der Button-Komponente dynamisch beliebige weitere HTML-Properties
|
|
399
|
+
zu übergeben.
|
|
400
|
+
|
|
401
|
+
```handlebars
|
|
402
|
+
<button class="ds-button" {{#> html_properties}}{{/html_properties}}>
|
|
403
|
+
{{> @partial-block }}
|
|
404
|
+
</button>
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
Das Beispiel zeigt eine vereinfachte (aus Gründen der Übersichtlichkeit wurden alle anderen HTML-Properties weggelassen)
|
|
408
|
+
Ansicht der Button-Komponente. Innerhalb des HTML-Button-Elements wird hier das Inline-Partial `html_properties`
|
|
409
|
+
aufgerufen. Der Inhalt dieses Partials kann, wie im folgenden Codebeispiel zu sehen, gesetzt werden.
|
|
410
|
+
|
|
411
|
+
```handlebars
|
|
412
|
+
{{#with this}}
|
|
413
|
+
{{#> components/button/button _size="md" _disableButtonPress=true}}
|
|
414
|
+
{{>components/button/components/button_label _label="Abonnieren" _css="flex-1 truncate mr-2" _type="button"}}
|
|
415
|
+
<span x-cloak x-show="open" class="w-3 h-3">
|
|
416
|
+
{{> components/base/image/icon _icon='arrow-up' _addClass="flex self-center w-3 h-3 fill-white" }}
|
|
417
|
+
</span>
|
|
418
|
+
<span x-show="!open" class="w-3 h-3">
|
|
419
|
+
{{> components/base/image/icon _icon='arrow-down' _addClass="flex self-center w-3 h-3 fill-white" }}
|
|
420
|
+
</span>
|
|
421
|
+
{{/components/button/button}}
|
|
422
|
+
{{#*inline "html_properties"}}
|
|
423
|
+
x-ref="button"
|
|
424
|
+
x-on:click="toggle()"
|
|
425
|
+
:aria-expanded="open"
|
|
426
|
+
:aria-controls="$id('dropdown-button')"
|
|
427
|
+
:class="open ? 'drop-shadow' : ''"
|
|
428
|
+
data-hr-click-tracking='{"settings": [{"type": "uxAction", "clickLabel": "podcastAbonnieren:ButtonClick"}]}'
|
|
429
|
+
{{/inline}}
|
|
430
|
+
{{/with}}
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
Unterhalb des Aufrufs der Button-Komponente wird hier das Inline-Partial `html_properties` implementiert. Ein Inline-Partial
|
|
434
|
+
muss immer in der Form `{{#*inline NAME_DES_PARTIALS}}` aufgerufen werden. Alle Inhalte die zwischen öffnendem und schließenden
|
|
435
|
+
`inline` stehen, werden in der Komponente in der dieses Inline-Partial aufgerufen wird gerendert.
|
|
436
|
+
|
|
437
|
+
Zu Beachten ist, dass, wie hier im Codebeispiel zu sehen, der Aufruf der Komponente und die Definition des Inline-Partials Von
|
|
438
|
+
einem `with` Block umschlossen werden sollten. Auf diese Weise wird sichergestellt, dass ausschließlich die hier aufgerufene
|
|
439
|
+
Button-Komponente die zusätzlichen Eigenschaften erhält. Würde der `with` Block weggelassen und irgendwo im weitere
|
|
440
|
+
Verlauf der Seite ein weiteres Mal die Button-Komponente aufgerufen, würde auch das HTML-Button-Element in dieser Komponente
|
|
441
|
+
diese zuätzlichen HTML-Properties rendern.
|
|
442
|
+
|
|
443
|
+
<div class="bg-blue-200 !mt-4 p-4">
|
|
444
|
+
<h4 class="!text-stone-950 font-bold">Wichtig</h4>
|
|
445
|
+
<p>
|
|
446
|
+
Sollen beim Aufruf von Subkomponenten in einem Partial-Block oder einem Inline-Partial
|
|
447
|
+
Hash-Parameter (`_NAME_DES_PARAMETERS`) der umliegenden Komponente übergeben werden, muss
|
|
448
|
+
die [hier](#namen-übergebener-komponenten-parameter-in-partial-blocks-und-inline-partials)
|
|
449
|
+
beschriebene Namenskonvention zwingend eingehalten werden. Aufgrund von Unterschieden beim
|
|
450
|
+
Auflösen der Kontexte zwischen Handlebars.js und Handlebars.java können andernfalls die
|
|
451
|
+
Werte der Parameter nicht ausgelesen werden.
|
|
452
|
+
</p>
|
|
453
|
+
</div>
|
|
@@ -40,7 +40,7 @@ Erklärung / Hinweise / Best Practices für "Accessible SVG":
|
|
|
40
40
|
|
|
41
41
|
--}}
|
|
42
42
|
{{#if _icon}}
|
|
43
|
-
<svg class="sb-icon {{~#if _addClass }} {{_addClass}}{{/if}} {{#if _webview}} -webview{{/if}}" role="presentation" aria-hidden="{{defaultIfEmpty _ariaHidden true}}"
|
|
43
|
+
<svg class="sb-icon {{~#if _addClass }} {{_addClass}}{{/if}} {{#if _webview}} -webview{{/if}} {{#>css}}{{/css}}" role="presentation" aria-hidden="{{defaultIfEmpty _ariaHidden true}}"
|
|
44
44
|
{{# if brand}} data-brand="{{brand}}"{{/if}}
|
|
45
45
|
{{~#if _iconTitle }} {{changeRandom~}}
|
|
46
46
|
aria-labelledby="iconTitle--{{getRandom}}"
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
-
{{
|
|
1
|
+
<a {{#with this.link.webviewUrl}}data-webviewurl="{{this}}"{{/with}} href="{{this.link.url}}{{#if this.hasComments}}#commentList{{/if}}"
|
|
2
|
+
class="sb-link ds-link js-load{{#if _css}} {{_css}}{{/if}} {{#if _isSelected}} {{defaultIfEmpty _selectedCssClass "-current"}}{{/if}}"
|
|
3
|
+
{{#if _doNavigationTracking}}
|
|
4
|
+
data-hr-click-tracking='{"settings": [{"type":"uxAction","secondLevelId": "1","clickLabel":"{{_clickLabelType}}{{#if _clickLabelPrefix1}}::{{_clickLabelPrefix1}}{{/if}}::{{_clickLabelPrefix2}}-Link geklickt"}]}'
|
|
5
|
+
{{/if}}
|
|
6
|
+
{{#if this.isFileDownload}}
|
|
7
|
+
{{#with this.trackingData}}data-hr-click-tracking='{"settings": [{"type":"download","secondLevelId": "{{this.link.secondLevelId}}","clickLabel": "{{this.link.pageName}}"}]}'{{/with}}
|
|
8
|
+
{{/if}}
|
|
9
|
+
{{#if this.link.isTargetBlank}} target="_blank" rel="noopener{{#if this.link.hasNoReferrerFlag}} noreferrer{{/if}}"{{/if}}
|
|
10
|
+
{{#if _isAriaHidden}} aria-hidden="true" tabindex="-1"{{/if}}
|
|
11
|
+
>
|
|
2
12
|
{{~ decorator_body ~}}
|
|
3
13
|
</a>
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
{{#with this.link}}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
{{#
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{{/with}}
|
|
1
|
+
<a {{#with this.link.webviewUrl}}data-webviewurl="{{this}}"{{/with}} href="{{this.link.url}}{{#if this.hasComments}}#commentList{{/if}}"
|
|
2
|
+
class="sb-link ds-link js-load {{#if _isSelected}} {{defaultIfEmpty _selectedCssClass "-current"}}{{/if}}{{#if _css}} {{_css}}{{/if}} {{#> css}}{{/css}}"
|
|
3
|
+
{{#if _doNavigationTracking}}
|
|
4
|
+
data-hr-click-tracking='{"settings": [{"type":"uxAction","secondLevelId": "1","clickLabel":"{{_clickLabelType}}{{#if _clickLabelPrefix1}}::{{_clickLabelPrefix1}}{{/if}}::{{_clickLabelPrefix2}}-Link geklickt"}]}'
|
|
5
|
+
{{/if}}
|
|
6
|
+
{{#if this.isFileDownload}}
|
|
7
|
+
{{#with this.trackingData}}data-hr-click-tracking='{"settings": [{"type":"download","secondLevelId": "{{this.link.secondLevelId}}","clickLabel": "{{this.link.pageName}}"}]}'{{/with}}
|
|
8
|
+
{{/if}}
|
|
9
|
+
{{#if this.link.isTargetBlank}} target="_blank" rel="noopener{{#if this.link.hasNoReferrerFlag}} noreferrer{{/if}}"{{/if}}
|
|
10
|
+
{{#if _isAriaHidden}} aria-hidden="true" tabindex="-1"{{/if}}
|
|
11
|
+
>
|
|
12
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<a {{#with this.link.webviewUrl}}data-webviewurl="{{this}}"{{/with}} href="{{this.link.url}}{{#if this.hasComments}}#commentList{{/if}}"
|
|
2
|
+
class="sb-link ds-link js-load {{#if _isSelected}} {{defaultIfEmpty _selectedCssClass "-current"}}{{/if}}{{#if _css}} {{_css}}{{/if}} {{#> css}}{{/css}}"
|
|
3
|
+
{{#if _doNavigationTracking}}
|
|
4
|
+
data-hr-click-tracking='{"settings": [{"type":"uxAction","secondLevelId": "1","clickLabel":"{{_clickLabelType}}{{#if _clickLabelPrefix1}}::{{_clickLabelPrefix1}}{{/if}}::{{_clickLabelPrefix2}}-Link geklickt"}]}'
|
|
5
|
+
{{/if}}
|
|
6
|
+
{{#if this.isFileDownload}}
|
|
7
|
+
{{#with this.trackingData}}data-hr-click-tracking='{"settings": [{"type":"download","secondLevelId": "{{this.link.secondLevelId}}","clickLabel": "{{this.link.pageName}}"}]}'{{/with}}
|
|
8
|
+
{{/if}}
|
|
9
|
+
{{#if this.link.isTargetBlank}} target="_blank" rel="noopener{{#if this.link.hasNoReferrerFlag}} noreferrer{{/if}}"{{/if}}
|
|
10
|
+
{{#if _isAriaHidden}} aria-hidden="true" tabindex="-1"{{/if}}
|
|
11
|
+
>
|
|
12
|
+
|
|
13
|
+
{{> @partial-block }}
|
|
14
|
+
</a>
|