hr-design-system-handlebars 1.11.9 → 1.11.11
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/.babelrc.json +14 -0
- package/.storybook/main.js +34 -52
- package/.storybook/preview-head.html +4 -1
- package/.storybook/preview.js +25 -35
- package/CHANGELOG.md +30 -0
- package/dist/assets/index.css +11 -3
- package/dist/views/components/base/load_dynamic.hbs +3 -0
- package/dist/views/components/teaser/ticker/teaser_ticker.hbs +29 -0
- package/package.json +20 -13
- package/src/assets/css/custom-utilities.css +3 -3
- package/src/assets/fixtures/teaser/teaser_ticker.inc.json +121 -0
- package/src/assets/fixtures/teaser/ticker_teaser_standard_100.json +25 -0
- package/src/assets/images/sportschau-image-5708_v-16to9.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-16to9__medium.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-16to9__retina.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-16to9__small.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-1to1.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-1to1__large.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-1to1__medium.jpg +0 -0
- package/src/assets/images/sportschau-image-5708_v-1to1__small.jpg +0 -0
- package/src/stories/BrandColors.data.js +42 -0
- package/src/stories/BrandColors.mdx +25 -0
- package/src/stories/{Colors.stories.mdx → Colors.data.js} +2 -18
- package/src/stories/Colors.mdx +19 -0
- package/src/stories/Example.mdx +56 -0
- package/src/stories/Example.stories.js +57 -0
- package/src/stories/{Fixtures.stories.mdx → Fixtures.mdx} +3 -5
- package/src/stories/{InstallAndUpdate.stories.mdx → InstallAndUpdate.mdx} +0 -2
- package/src/stories/Introduction.mdx +3 -0
- package/src/stories/{SvgOptimization.stories.mdx → SvgOptimization.mdx} +0 -2
- package/src/stories/{Typography.stories.mdx → Typography.mdx} +13 -14
- package/src/stories/{conventions-and-datastructure.stories.mdx → conventions-and-datastructure.mdx} +7 -9
- package/src/stories/views/components/Button.mdx +30 -0
- package/src/stories/views/components/Button_.stories.js +77 -0
- package/src/stories/views/components/base/load_dynamic.hbs +3 -0
- package/src/stories/views/components/event/calendar/{event_calendar_components.stories.mdx → event_calendar_components.mdx} +31 -87
- package/src/stories/views/components/event/calendar/event_calendar_components.stories.js +129 -0
- package/src/stories/views/components/geoTag/geoTag.mdx +32 -0
- package/src/stories/views/components/geoTag/geoTag.stories.js +35 -0
- package/src/stories/views/components/grid/grid.mdx +210 -0
- package/src/stories/views/components/grid/grid.stories.js +148 -0
- package/src/stories/views/components/label/label.mdx +54 -0
- package/src/stories/views/components/label/label.stories.js +183 -0
- package/src/stories/views/components/page/page.data.js +17 -0
- package/src/stories/views/components/page/page.mdx +110 -0
- package/src/stories/views/components/page/page.stories.js +50 -0
- package/src/stories/views/components/page/page_pagination.data.js +8 -0
- package/src/stories/views/components/page/page_pagination.mdx +8 -0
- package/src/stories/views/components/page/page_pagination.stories.js +34 -0
- package/src/stories/views/components/page/page_player.mdx +21 -0
- package/src/stories/views/components/page/page_player.stories.js +34 -0
- package/src/stories/views/components/site_header/{header.stories.mdx → header.mdx} +218 -152
- package/src/stories/views/components/site_header/header.stories.js +62 -0
- package/src/stories/views/components/teaser/cluster/teaser_cluster.mdx +32 -0
- package/src/stories/views/components/teaser/cluster/teaser_cluster.stories.js +146 -0
- package/src/stories/views/components/teaser/components/teaser_byline.mdx +97 -0
- package/src/stories/views/components/teaser/components/teaser_byline.stories.js +30 -0
- package/src/stories/views/components/teaser/components/teaser_heading.mdx +96 -0
- package/src/stories/views/components/teaser/components/teaser_heading.stories.js +158 -0
- package/src/stories/views/components/teaser/components/teaser_text.mdx +36 -0
- package/src/stories/views/components/teaser/components/teaser_text.stories.js +74 -0
- package/src/stories/views/components/teaser/components/teaser_title.mdx +42 -0
- package/src/stories/views/components/teaser/components/teaser_title.stories.js +85 -0
- package/src/stories/views/components/teaser/components/teaser_topline.mdx +29 -0
- package/src/stories/views/components/teaser/components/teaser_topline.stories.js +27 -0
- package/src/stories/views/components/teaser/content_nav/teaser_content_nav.mdx +54 -0
- package/src/stories/views/components/teaser/content_nav/{teaser_content_nav.stories.mdx → teaser_content_nav.stories.js} +80 -61
- package/src/stories/views/components/teaser/fixtures/ticker_teaser_standard_100.json +1 -0
- package/src/stories/views/components/teaser/group_teaser/group.mdx +18 -0
- package/src/stories/views/components/teaser/group_teaser/group.stories.js +85 -0
- package/src/stories/views/components/teaser/podcast/podcast.mdx +11 -0
- package/src/stories/views/components/teaser/podcast/{podcast.stories.mdx → podcast.stories.js} +50 -39
- package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.mdx +10 -0
- package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.stories.js +51 -0
- package/src/stories/views/components/teaser/tabbox/teaser_tabbox.mdx +10 -0
- package/src/stories/views/components/teaser/tabbox/teaser_tabbox.stories.js +40 -0
- package/src/stories/views/components/teaser/teaser_alternativ.mdx +76 -0
- package/src/stories/views/components/teaser/teaser_alternativ.stories.js +126 -0
- package/src/stories/views/components/teaser/teaser_alternativ_av.mdx +75 -0
- package/src/stories/views/components/teaser/teaser_alternativ_av.stories.js +111 -0
- package/src/stories/views/components/teaser/teaser_event_calendar.mdx +57 -0
- package/src/stories/views/components/teaser/teaser_event_calendar.stories.js +92 -0
- package/src/stories/views/components/teaser/teaser_indextext.mdx +35 -0
- package/src/stories/views/components/teaser/teaser_indextext.stories.js +85 -0
- package/src/stories/views/components/teaser/teaser_logic/teaser_logic.mdx +23 -0
- package/src/stories/views/components/teaser/teaser_logic/teaser_logic.stories.js +36 -0
- package/src/stories/views/components/teaser/teaser_poster.mdx +95 -0
- package/src/stories/views/components/teaser/teaser_poster.stories.js +67 -0
- package/src/stories/views/components/teaser/teaser_stage.mdx +15 -0
- package/src/stories/views/components/teaser/teaser_stage.stories.js +60 -0
- package/src/stories/views/components/teaser/teaser_standard.mdx +129 -0
- package/src/stories/views/components/teaser/teaser_standard.stories.js +166 -0
- package/src/stories/views/components/teaser/teaser_standard_av.mdx +38 -0
- package/src/stories/views/components/teaser/teaser_standard_av.stories.js +117 -0
- package/src/stories/views/components/teaser/teaser_standard_event.mdx +103 -0
- package/src/stories/views/components/teaser/teaser_standard_event.stories.js +119 -0
- package/src/stories/views/components/teaser/ticker/teaser_ticker.hbs +29 -0
- package/src/stories/views/components/teaser/ticker/teaser_ticker.mdx +10 -0
- package/src/stories/views/components/teaser/ticker/teaser_ticker.stories.js +34 -0
- package/.storybook/withThemeDecorator.js +0 -12
- package/src/stories/BrandColors.stories.mdx +0 -39
- package/src/stories/Example.stories.mdx +0 -93
- package/src/stories/Introduction.stories.mdx +0 -211
- package/src/stories/views/components/Button.stories.mdx +0 -82
- package/src/stories/views/components/geoTag/geoTag.stories.mdx +0 -61
- package/src/stories/views/components/grid/grid.stories.mdx +0 -275
- package/src/stories/views/components/label/label.stories.mdx +0 -200
- package/src/stories/views/components/page/page.stories.mdx +0 -144
- package/src/stories/views/components/page/page_pagination.stories.mdx +0 -36
- package/src/stories/views/components/page/page_player.stories.mdx +0 -43
- package/src/stories/views/components/teaser/cluster/teaser_cluster.stories.mdx +0 -97
- package/src/stories/views/components/teaser/components/teaser_byline.stories.mdx +0 -78
- package/src/stories/views/components/teaser/components/teaser_heading.stories.mdx +0 -219
- package/src/stories/views/components/teaser/components/teaser_text.stories.mdx +0 -94
- package/src/stories/views/components/teaser/components/teaser_title.stories.mdx +0 -124
- package/src/stories/views/components/teaser/components/teaser_topline.stories.mdx +0 -63
- package/src/stories/views/components/teaser/group_teaser/group.stories.mdx +0 -85
- package/src/stories/views/components/teaser/podcast/podcast_subscribe_button.stories.mdx +0 -52
- package/src/stories/views/components/teaser/tabbox/teaser_tabbox.stories.mdx +0 -39
- package/src/stories/views/components/teaser/teaser_alternativ.stories.mdx +0 -163
- package/src/stories/views/components/teaser/teaser_alternativ_av.stories.mdx +0 -142
- package/src/stories/views/components/teaser/teaser_event_calendar.stories.mdx +0 -131
- package/src/stories/views/components/teaser/teaser_indextext.stories.mdx +0 -111
- package/src/stories/views/components/teaser/teaser_logic/teaser_logic.stories.mdx +0 -39
- package/src/stories/views/components/teaser/teaser_poster.stories.mdx +0 -130
- package/src/stories/views/components/teaser/teaser_stage.stories.mdx +0 -53
- package/src/stories/views/components/teaser/teaser_standard.stories.mdx +0 -170
- package/src/stories/views/components/teaser/teaser_standard_av.stories.mdx +0 -95
- package/src/stories/views/components/teaser/teaser_standard_event.stories.mdx +0 -150
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ArgsTable,
|
|
3
|
-
Meta,
|
|
4
|
-
Story,
|
|
5
|
-
Canvas,
|
|
6
|
-
Preview,
|
|
7
|
-
ColorPalette,
|
|
8
|
-
ColorItem,
|
|
9
|
-
} from '@storybook/addon-docs'
|
|
10
|
-
|
|
11
|
-
import label from './label.hbs'
|
|
12
|
-
|
|
13
|
-
<Meta
|
|
14
|
-
title="Komponenten/Label"
|
|
15
|
-
argTypes={{
|
|
16
|
-
_type: {
|
|
17
|
-
control: {
|
|
18
|
-
type: 'select',
|
|
19
|
-
labels: {
|
|
20
|
-
'analysis': 'Analyse',
|
|
21
|
-
'event': 'Event',
|
|
22
|
-
'comment': 'Kommentar',
|
|
23
|
-
'media': 'Medieninhalte',
|
|
24
|
-
'breakingnews': 'Eilmeldung',
|
|
25
|
-
'der-tag-in-hessen': 'Der Tag in Hessen',
|
|
26
|
-
'glosse': 'Glosse',
|
|
27
|
-
'fragen-und-antworten': 'Fragen und Antworten',
|
|
28
|
-
'infografik': 'Infografik',
|
|
29
|
-
'interaktiv': 'Interaktiv',
|
|
30
|
-
'program': 'Sendung',
|
|
31
|
-
'download': 'Download',
|
|
32
|
-
'pm': 'Pressemitteilung',
|
|
33
|
-
'liveticker': 'Liveticker',
|
|
34
|
-
'ticker': 'Ticker',
|
|
35
|
-
'livestream': 'Livestream',
|
|
36
|
-
'live': 'Live',
|
|
37
|
-
'livechat': 'Livechat',
|
|
38
|
-
'buliticker': 'Bundesliga-Ticker',
|
|
39
|
-
'social-tv': 'Social-TV',
|
|
40
|
-
'blog': 'Blog',
|
|
41
|
-
'kurzmeldung': 'Kurzmeldung',
|
|
42
|
-
},
|
|
43
|
-
options: [
|
|
44
|
-
'',
|
|
45
|
-
'analysis',
|
|
46
|
-
'blog',
|
|
47
|
-
'buliticker',
|
|
48
|
-
'der-tag-in-hessen',
|
|
49
|
-
'download',
|
|
50
|
-
'breakingnews',
|
|
51
|
-
'event',
|
|
52
|
-
'fragen-und-antworten',
|
|
53
|
-
'glosse',
|
|
54
|
-
'infografik',
|
|
55
|
-
'interaktiv',
|
|
56
|
-
'comment',
|
|
57
|
-
'live',
|
|
58
|
-
'livechat',
|
|
59
|
-
'livestream',
|
|
60
|
-
'liveticker',
|
|
61
|
-
'media',
|
|
62
|
-
'pm',
|
|
63
|
-
'program',
|
|
64
|
-
'social-tv',
|
|
65
|
-
'ticker',
|
|
66
|
-
'kurzmeldung',
|
|
67
|
-
],
|
|
68
|
-
},
|
|
69
|
-
description: 'Art des Labels',
|
|
70
|
-
table: {
|
|
71
|
-
defaultValue: {
|
|
72
|
-
summary: 'media',
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
_text: {
|
|
77
|
-
control: 'text',
|
|
78
|
-
description: 'Beschriftung des Labels',
|
|
79
|
-
},
|
|
80
|
-
}}
|
|
81
|
-
/>
|
|
82
|
-
|
|
83
|
-
export const Template = ({ _type, ...args }) => {
|
|
84
|
-
// You can either use a function to create DOM elements or use a plain html string!
|
|
85
|
-
// return `<div>${label}</div>`;
|
|
86
|
-
return label({ _type, ...args })
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
# Label
|
|
90
|
-
|
|
91
|
-
Teaser auf Übersichtsseiten können mit Hilfe von Labels optisch hervorgehoben werden (z.B. als Kommentar, Liveticker, Eilmeldung, etc.).
|
|
92
|
-
Folgende Ausprägungen von Labels stehen hierfür zur Verfügung:
|
|
93
|
-
|
|
94
|
-
<Preview withToolbar>
|
|
95
|
-
<Story
|
|
96
|
-
name="Download"
|
|
97
|
-
args={{
|
|
98
|
-
_type: 'download',
|
|
99
|
-
_text: 'Download',
|
|
100
|
-
}}
|
|
101
|
-
>
|
|
102
|
-
{Template.bind({})}
|
|
103
|
-
</Story>
|
|
104
|
-
<Story
|
|
105
|
-
name="Eilmeldung"
|
|
106
|
-
args={{
|
|
107
|
-
_type: 'breakingnews',
|
|
108
|
-
_text: 'Eilmeldung',
|
|
109
|
-
}}
|
|
110
|
-
>
|
|
111
|
-
{Template.bind({})}
|
|
112
|
-
</Story>
|
|
113
|
-
<Story
|
|
114
|
-
name="Event"
|
|
115
|
-
args={{
|
|
116
|
-
_type: 'event',
|
|
117
|
-
_text: 'Event',
|
|
118
|
-
}}
|
|
119
|
-
>
|
|
120
|
-
{Template.bind({})}
|
|
121
|
-
</Story>
|
|
122
|
-
<Story
|
|
123
|
-
name="Infografik"
|
|
124
|
-
args={{
|
|
125
|
-
_type: 'infografik',
|
|
126
|
-
_text: 'Infografik',
|
|
127
|
-
}}
|
|
128
|
-
>
|
|
129
|
-
{Template.bind({})}
|
|
130
|
-
</Story>
|
|
131
|
-
<Story
|
|
132
|
-
name="Kommentar"
|
|
133
|
-
args={{
|
|
134
|
-
_type: 'comment',
|
|
135
|
-
_text: 'Kommentar',
|
|
136
|
-
}}
|
|
137
|
-
>
|
|
138
|
-
{Template.bind({})}
|
|
139
|
-
</Story>
|
|
140
|
-
<Story
|
|
141
|
-
name="Liveticker"
|
|
142
|
-
args={{
|
|
143
|
-
_type: 'liveticker',
|
|
144
|
-
_text: 'Liveticker',
|
|
145
|
-
}}
|
|
146
|
-
>
|
|
147
|
-
{Template.bind({})}
|
|
148
|
-
</Story>
|
|
149
|
-
<Story
|
|
150
|
-
name="Media"
|
|
151
|
-
args={{
|
|
152
|
-
_type: 'media',
|
|
153
|
-
_text: 'Media',
|
|
154
|
-
}}
|
|
155
|
-
>
|
|
156
|
-
{Template.bind({})}
|
|
157
|
-
</Story>
|
|
158
|
-
<Story
|
|
159
|
-
name="Pressemitteilung"
|
|
160
|
-
args={{
|
|
161
|
-
_type: 'pm',
|
|
162
|
-
_text: 'Pressemitteilung',
|
|
163
|
-
}}
|
|
164
|
-
>
|
|
165
|
-
{Template.bind({})}
|
|
166
|
-
</Story>
|
|
167
|
-
<Story
|
|
168
|
-
name="Sendung"
|
|
169
|
-
args={{
|
|
170
|
-
_type: 'program',
|
|
171
|
-
_text: 'Sendung',
|
|
172
|
-
}}
|
|
173
|
-
>
|
|
174
|
-
{Template.bind({})}
|
|
175
|
-
</Story>
|
|
176
|
-
<Story
|
|
177
|
-
name="Kurzmeldung"
|
|
178
|
-
args={{
|
|
179
|
-
_type: 'kurzmeldung',
|
|
180
|
-
_text: 'Kurzmeldung',
|
|
181
|
-
}}
|
|
182
|
-
>
|
|
183
|
-
{Template.bind({})}
|
|
184
|
-
</Story>
|
|
185
|
-
</Preview>
|
|
186
|
-
|
|
187
|
-
## Einbindung
|
|
188
|
-
|
|
189
|
-
Die Komponente wird in Form eines Handlebar Partials eingebunden.
|
|
190
|
-
|
|
191
|
-
```html
|
|
192
|
-
{{> components/label/label.hbs type="liveticker" text="Liveticker"}}
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
Mit folgenden Parametern kann die Komponente konfiguriert werden.
|
|
196
|
-
|
|
197
|
-
| Parameter | Typ | Mögliche Werte | Erläuterung |
|
|
198
|
-
| :--------- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- |
|
|
199
|
-
| **\_text** | `String` | Beliebiger Text | Die Beschriftung des Labels. |
|
|
200
|
-
| **\_type** | `String` | `analysis`, `blog`, `bulitiker`, `der-tag-in-hessen`, `download`, `brealingnews`, `event`, `fragen-und-antworten`, `glosse`,`infografik`, `interaktiv`, `comment`, `live`, `livechat`, `livestream`, `liveticker`, `media`, `pm`, `program`, `social-tv`, `ticker` | Hiermit wird das Aussehen des Labels festgelegt. |
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/addon-docs'
|
|
2
|
-
import 'core-js/actual/structured-clone'
|
|
3
|
-
import page from './page.hbs'
|
|
4
|
-
import NavigationData from '../site_header/fixtures/site_header_default.json'
|
|
5
|
-
import NavigationData2 from '../site_header/fixtures/site_header_mit_warnung.json'
|
|
6
|
-
import NavigationData3 from '../site_header/fixtures/site_header_mit_submenu.json'
|
|
7
|
-
//import NavigationData4 from '../site_header/fixtures/site_header_mit_submenu_service_selected.json'
|
|
8
|
-
|
|
9
|
-
import hero_teaser from '../teaser/fixtures/teaser_standard_hero_serif.json'
|
|
10
|
-
import audio_player_teaser from '../teaser/fixtures/teaser_standard_50_serif_audio.json'
|
|
11
|
-
const NavigationDataWithTeaser = structuredClone(
|
|
12
|
-
Object.assign({}, NavigationData, hero_teaser.logicItem.includeModel)
|
|
13
|
-
)
|
|
14
|
-
const NavigationDataWithTeaser2 = structuredClone(
|
|
15
|
-
Object.assign({}, NavigationData2, hero_teaser.logicItem.includeModel)
|
|
16
|
-
)
|
|
17
|
-
const NavigationDataWithTeaser3 = structuredClone(
|
|
18
|
-
Object.assign({}, NavigationData3, hero_teaser.logicItem.includeModel)
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
<Meta
|
|
22
|
-
title="Komponenten/Page/Page"
|
|
23
|
-
argTypes={{}}
|
|
24
|
-
parameters={{
|
|
25
|
-
chromatic: {
|
|
26
|
-
viewports: [360, 768, 1024]
|
|
27
|
-
},
|
|
28
|
-
layout: 'fullscreen',
|
|
29
|
-
docs: { inlineStories : false, iframeHeight: 400 }
|
|
30
|
-
}}
|
|
31
|
-
/>
|
|
32
|
-
|
|
33
|
-
export const Template = (args, { globals: { customConditionalToolbar } }) => {
|
|
34
|
-
// You can either use a function to create DOM elements or use a plain html string!
|
|
35
|
-
// return `<div>${label}</div>`;
|
|
36
|
-
let brand =
|
|
37
|
-
undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
|
|
38
|
-
return page({ brand, ...args })
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
# Page (allgemein)
|
|
42
|
-
|
|
43
|
-
Das Grundgerüst für das HTML-Markup einer Seite (in diesem Fall eine Index-Seite bzw. Übersichtsseite).
|
|
44
|
-
Stand 2023: Inhaltsseiten werden derzeit noch nicht berücksichtigt.
|
|
45
|
-
Für gemischte Inhalte siehe ```Player-Interaktion```
|
|
46
|
-
|
|
47
|
-
# Grundaufbau
|
|
48
|
-
Um eine Seite zu erzeugen ist ein initiales HTML-Markup notwendig. Der Kopf ```<head>``` ist dabei statisch,
|
|
49
|
-
Inhalte werden im ```<body>```-Tag abgelegt. Der Kopf entspricht einem klassischen HTML-Kopf mit Titel und Metadaten-Angaben.
|
|
50
|
-
|
|
51
|
-
## Markup im Kopf
|
|
52
|
-
```html
|
|
53
|
-
<!DOCTYPE html>
|
|
54
|
-
<html
|
|
55
|
-
class="no-js no-js-burgerMenu preload noMicroInteraction"
|
|
56
|
-
data-theme="hessenschau"
|
|
57
|
-
lang="de"
|
|
58
|
-
>
|
|
59
|
-
<head>
|
|
60
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
61
|
-
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
|
62
|
-
<title>hessenschau.de | Nachrichten aus Hessen</title>
|
|
63
|
-
<meta name="application-name" content="hessenschau.de" />
|
|
64
|
-
<meta name="copyright" content="Hessischer Rundfunk, Frankfurt, Germany" />
|
|
65
|
-
<meta name="author" content="hessenschau.de, Frankfurt, Germany" />
|
|
66
|
-
<meta name="publisher" content="hessenschau.de" />
|
|
67
|
-
<meta name="language" content="Deutsch" />
|
|
68
|
-
</head>
|
|
69
|
-
|
|
70
|
-
<body itemscope itemtype="http://schema.org/WebPage">
|
|
71
|
-
<div class="js-pageSwap">
|
|
72
|
-
|
|
73
|
-
MARKUP FÜR INHALTE ...
|
|
74
|
-
|
|
75
|
-
<div>
|
|
76
|
-
</body>
|
|
77
|
-
</html>
|
|
78
|
-
```
|
|
79
|
-
## Markup für Inhalte
|
|
80
|
-
|
|
81
|
-
Initial wird die Seitennavigation - das Menü - der Seite eingefügt. Wahlweise Abwandlungen der Seitennavigation
|
|
82
|
-
(mit Subnavigation oder Unwetterwarnung), die über unterschiedlichen Daten-JSONS ausgeformt werden. Die Daten-JSONS hierfür liegen
|
|
83
|
-
unter ```components/site_header/fixtures``` und die Komponente selber:
|
|
84
|
-
|
|
85
|
-
```html
|
|
86
|
-
{{> components/site_header/header }}
|
|
87
|
-
```
|
|
88
|
-
Dann folgen die Inhalte in diesem Fall Teaser, die über das Grid-Layout angeordnet werden. Die Komponenten für die Teaser
|
|
89
|
-
liegen unter ```components/teaser/``` und lauten auf ```teaser_``` und dessen Ausprägung:
|
|
90
|
-
<ul>
|
|
91
|
-
<li>standard (Standard => Bild oben, Text darunter)</li>
|
|
92
|
-
<li>alternativ (Alternativ => Bild links, Text rechts)</li>
|
|
93
|
-
<li>event_calendar (Event-Kalender)</li>
|
|
94
|
-
<li>poster (Poster => Text auf Bild)</li>
|
|
95
|
-
<li>indextext (Nur Text)</li>
|
|
96
|
-
<li>stage (Stage => Sonderform über die ganze Seite)</li>
|
|
97
|
-
</ul>
|
|
98
|
-
|
|
99
|
-
Auch hier bestimmen die Daten-JSONS, das Bild und den Text. Die Daten-JSONS hierfür liegen
|
|
100
|
-
unter ```components/teaser/fixtures``` der Aufruf der Komponente selber:
|
|
101
|
-
|
|
102
|
-
```html
|
|
103
|
-
{{> components/teaser/teaser_standard }}
|
|
104
|
-
```
|
|
105
|
-
Gekapselt wird die Teaser-Komponente in einer ```<section>```. Es können beliebig viele Sections mit entsprechenden Teaser-Komponenten
|
|
106
|
-
in das folgende Markup angelegt werden:
|
|
107
|
-
|
|
108
|
-
```html
|
|
109
|
-
<main onclick="void(0)" role="main" id="content" class="flex items-center justify-center">
|
|
110
|
-
<div class="grid grid-page">
|
|
111
|
-
<div class="{{> components/grid/grid_group_wrapper_classes }}">
|
|
112
|
-
|
|
113
|
-
<section class="grid items-start content-start grid-cols-12 col-span-12 bg-white gap-x-6 gap-y-6 ">
|
|
114
|
-
{{> components/teaser/teaser_standard }}
|
|
115
|
-
</section>
|
|
116
|
-
WEITERE TEASER...
|
|
117
|
-
</div>
|
|
118
|
-
</div>
|
|
119
|
-
</main>
|
|
120
|
-
|
|
121
|
-
</div>
|
|
122
|
-
```
|
|
123
|
-
Die Ausformung der Teaser basiert immer auf dem selben Daten-JSON, d.h. Bild und Texte sind immer identisch, lediglich die Größe und der
|
|
124
|
-
Teaser-Typ variieren.
|
|
125
|
-
|
|
126
|
-
<Canvas withToolbar>
|
|
127
|
-
<Story name="Default" args={NavigationDataWithTeaser}>
|
|
128
|
-
{Template.bind({})}
|
|
129
|
-
</Story>
|
|
130
|
-
</Canvas>
|
|
131
|
-
|
|
132
|
-
<Canvas>
|
|
133
|
-
<Story name="Mit Warnung" args={NavigationDataWithTeaser2}>
|
|
134
|
-
{Template.bind({})}
|
|
135
|
-
</Story>
|
|
136
|
-
</Canvas>
|
|
137
|
-
|
|
138
|
-
<Canvas>
|
|
139
|
-
<Story name="Mit Subnavigation" args={NavigationDataWithTeaser3}>
|
|
140
|
-
{Template.bind({})}
|
|
141
|
-
</Story>
|
|
142
|
-
</Canvas>
|
|
143
|
-
|
|
144
|
-
<ArgsTable story="Default" />
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/addon-docs'
|
|
2
|
-
import 'core-js/actual/structured-clone'
|
|
3
|
-
import page from './page_pagination.hbs'
|
|
4
|
-
import navigationData from '../site_header/fixtures/site_header_default.json'
|
|
5
|
-
import mixedContent from '../page/fixtures/page_pagination.json'
|
|
6
|
-
const NavigationDataWithMixedContent = structuredClone(
|
|
7
|
-
Object.assign({}, navigationData, mixedContent)
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
<Meta
|
|
11
|
-
title="Komponenten/Page/Page"
|
|
12
|
-
argTypes={{}}
|
|
13
|
-
parameters={{
|
|
14
|
-
chromatic: {
|
|
15
|
-
viewports: [360, 768, 1024]
|
|
16
|
-
},
|
|
17
|
-
layout: 'fullscreen',
|
|
18
|
-
docs: { inlineStories : false, iframeHeight: 400 }
|
|
19
|
-
}}
|
|
20
|
-
/>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
export const Template = (args, { globals: { customConditionalToolbar } }) => {
|
|
25
|
-
// You can either use a function to create DOM elements or use a plain html string!
|
|
26
|
-
// return `<div>${label}</div>`;
|
|
27
|
-
let brand = undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
|
|
28
|
-
return page({brand,...args})
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
<Canvas withToolbar>
|
|
32
|
-
<Story name="Mit Pagination" args={NavigationDataWithMixedContent}>
|
|
33
|
-
{Template.bind({})}
|
|
34
|
-
</Story>
|
|
35
|
-
</Canvas>
|
|
36
|
-
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/addon-docs'
|
|
2
|
-
import 'core-js/actual/structured-clone'
|
|
3
|
-
import page from './page_players.hbs'
|
|
4
|
-
import AudioDataMixed from '../page/fixtures/page.json'
|
|
5
|
-
|
|
6
|
-
<Meta
|
|
7
|
-
title="Komponenten/Page/Page"
|
|
8
|
-
argTypes={{}}
|
|
9
|
-
parameters={{
|
|
10
|
-
chromatic: {
|
|
11
|
-
viewports: [360, 768, 1024]
|
|
12
|
-
},
|
|
13
|
-
layout: 'fullscreen',
|
|
14
|
-
docs: { inlineStories : false, iframeHeight: 400 }
|
|
15
|
-
}}
|
|
16
|
-
/>
|
|
17
|
-
|
|
18
|
-
export const Template = (args, { globals: { customConditionalToolbar } }) => {
|
|
19
|
-
// You can either use a function to create DOM elements or use a plain html string!
|
|
20
|
-
// return `<div>${label}</div>`;
|
|
21
|
-
let brand = undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
|
|
22
|
-
return page({brand,...args})
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
# Page (gemischte Inhalte)
|
|
27
|
-
|
|
28
|
-
Hier werden nur gemischte Inhalte betrachtet. Hierfür werden Daten-JSONS unterschiedlicher
|
|
29
|
-
Ausprägung (Audio, Podcast) gemischt und herangezogen. Um einer Komponente diese spezifische Inhalte zu übergeben
|
|
30
|
-
wird sie wie folgt aufgerufen:
|
|
31
|
-
|
|
32
|
-
```html
|
|
33
|
-
{{> components/teaser/teaser_standard this.teaser_standard_50_audio.logicItem.includeModel}}
|
|
34
|
-
{{> components/teaser/podcast/podcast this.teaser_podcast_50.logicItem.includeModel}}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
<Canvas>
|
|
38
|
-
<Story name="Player-Interaktion" args={AudioDataMixed}>
|
|
39
|
-
{Template.bind({})}
|
|
40
|
-
</Story>
|
|
41
|
-
</Canvas>
|
|
42
|
-
|
|
43
|
-
<ArgsTable story="Default" />
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { ArgsTable, Meta, Story, Canvas, Preview } from '@storybook/addon-docs'
|
|
2
|
-
|
|
3
|
-
import cluster from './teaser_cluster.hbs'
|
|
4
|
-
import clusterTeaser100 from '../fixtures/cluster_teaser_100.json'
|
|
5
|
-
import clusterTeaser50 from '../fixtures/cluster_teaser_50.json'
|
|
6
|
-
import clusterTeaser33 from '../fixtures/cluster_teaser_33.json'
|
|
7
|
-
import clusterTeaserOrdered100 from '../fixtures/cluster_teaser_ordered_100.json'
|
|
8
|
-
import clusterTeaserOrdered50 from '../fixtures/cluster_teaser_ordered_50.json'
|
|
9
|
-
import clusterTeaserOrdered33 from '../fixtures/cluster_teaser_ordered_33.json'
|
|
10
|
-
import clusterTeaserExtern100 from '../fixtures/cluster_teaser_extern_100.json'
|
|
11
|
-
import clusterTeaserExtern50 from '../fixtures/cluster_teaser_extern_50.json'
|
|
12
|
-
import clusterTeaserExtern33 from '../fixtures/cluster_teaser_extern_33.json'
|
|
13
|
-
import clusterTeaserGenre100 from '../fixtures/cluster_teaser_100_genre.json'
|
|
14
|
-
import clusterTeaserGenre50 from '../fixtures/cluster_teaser_50_genre.json'
|
|
15
|
-
import clusterTeaserGenre33 from '../fixtures/cluster_teaser_33_genre.json'
|
|
16
|
-
import clusterTeaserImage100 from '../fixtures/cluster_teaser_100_image.json'
|
|
17
|
-
import clusterTeaserImage50 from '../fixtures/cluster_teaser_50_image.json'
|
|
18
|
-
import clusterTeaserImage33 from '../fixtures/cluster_teaser_33_image.json'
|
|
19
|
-
import PodcastChannelClusterTeaser from '../fixtures/cluster_teaser_Podcast_Channel.json'
|
|
20
|
-
import clusterTeaserOrdered33LongTitle from '../fixtures/cluster_teaser_33_long_title.json'
|
|
21
|
-
|
|
22
|
-
<Meta
|
|
23
|
-
title="Komponenten/Teaser/Cluster"
|
|
24
|
-
parameters={{
|
|
25
|
-
layout: '',
|
|
26
|
-
}}
|
|
27
|
-
argTypes={{}}
|
|
28
|
-
decorators={[
|
|
29
|
-
(Story) => {
|
|
30
|
-
return `<div class="grid grid-page"><div class="grid grid-cols-12 py-6 col-full gap-x-6 gap-y-6 sm:px-9.5 sm:col-main">
|
|
31
|
-
${Story()}
|
|
32
|
-
</div></div>`
|
|
33
|
-
},
|
|
34
|
-
]}
|
|
35
|
-
/>
|
|
36
|
-
|
|
37
|
-
export const Template = (args, { globals: { customConditionalToolbar } }) => {
|
|
38
|
-
// You can either use a function to create DOM elements or use a plain html string!
|
|
39
|
-
// return `<div>${label}</div>`;
|
|
40
|
-
let brand =
|
|
41
|
-
undefined !== customConditionalToolbar ? customConditionalToolbar['brands'] : 'hessenschau'
|
|
42
|
-
return cluster({ brand, ...args })
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
<Preview withToolbar>
|
|
46
|
-
<Story name="Kurzmeldungen 100" args={clusterTeaser100}>
|
|
47
|
-
{Template.bind({})}
|
|
48
|
-
</Story>
|
|
49
|
-
<Story name="Kurzmeldungen 50" args={clusterTeaser50}>
|
|
50
|
-
{Template.bind({})}
|
|
51
|
-
</Story>
|
|
52
|
-
<Story name="Kurzmeldungen 33" args={clusterTeaser33}>
|
|
53
|
-
{Template.bind({})}
|
|
54
|
-
</Story>
|
|
55
|
-
<Story name="Schlagzeilen mit Genrebild 100" args={clusterTeaserGenre100}>
|
|
56
|
-
{Template.bind({})}
|
|
57
|
-
</Story>
|
|
58
|
-
<Story name="Schlagzeilen mit Genrebild 50" args={clusterTeaserGenre50}>
|
|
59
|
-
{Template.bind({})}
|
|
60
|
-
</Story>
|
|
61
|
-
<Story name="Schlagzeilen mit Genrebild 33" args={clusterTeaserGenre33}>
|
|
62
|
-
{Template.bind({})}
|
|
63
|
-
</Story>
|
|
64
|
-
<Story name="Schlagzeilen mit Teaserbild 100" args={clusterTeaserImage100}>
|
|
65
|
-
{Template.bind({})}
|
|
66
|
-
</Story>
|
|
67
|
-
<Story name="Schlagzeilen mit Teaserbild 50" args={clusterTeaserImage50}>
|
|
68
|
-
{Template.bind({})}
|
|
69
|
-
</Story>
|
|
70
|
-
<Story name="Schlagzeilen mit Teaserbild 33" args={clusterTeaserImage33}>
|
|
71
|
-
{Template.bind({})}
|
|
72
|
-
</Story>
|
|
73
|
-
<Story name="Meistgeklickt/Wanda 100" args={clusterTeaserOrdered100}>
|
|
74
|
-
{Template.bind({})}
|
|
75
|
-
</Story>
|
|
76
|
-
<Story name="Meistgeklickt/Wanda 50" args={clusterTeaserOrdered50}>
|
|
77
|
-
{Template.bind({})}
|
|
78
|
-
</Story>
|
|
79
|
-
<Story name="Meistgeklickt/Wanda 33" args={clusterTeaserOrdered33}>
|
|
80
|
-
{Template.bind({})}
|
|
81
|
-
</Story>
|
|
82
|
-
<Story name="tagesschau/sportschau 100" args={clusterTeaserExtern100}>
|
|
83
|
-
{Template.bind({})}
|
|
84
|
-
</Story>
|
|
85
|
-
<Story name="tagesschau/sportschau 50" args={clusterTeaserExtern50}>
|
|
86
|
-
{Template.bind({})}
|
|
87
|
-
</Story>
|
|
88
|
-
<Story name="tagesschau/sportschau 33" args={clusterTeaserExtern33}>
|
|
89
|
-
{Template.bind({})}
|
|
90
|
-
</Story>
|
|
91
|
-
<Story name="PodcastEpisoden ClusterTeaser" args={PodcastChannelClusterTeaser}>
|
|
92
|
-
{Template.bind({})}
|
|
93
|
-
</Story>
|
|
94
|
-
<Story name="Meistgeklickt-Box mit langem Titel" args={clusterTeaserOrdered33LongTitle}>
|
|
95
|
-
{Template.bind({})}
|
|
96
|
-
</Story>
|
|
97
|
-
</Preview>
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { ArgsTable, Meta, Story, Preview } from '@storybook/addon-docs'
|
|
2
|
-
import byline from './teaser_byline.hbs'
|
|
3
|
-
import teaserWithoutComments from '../fixtures/teaser_standard_hero_serif.json'
|
|
4
|
-
import teaserWithComments from '../fixtures/teaser_standard_hero_serif_comments.json'
|
|
5
|
-
import teaserWithoutTeaserinfo from '../fixtures/teaser_comments_without_teaserinfo.json'
|
|
6
|
-
|
|
7
|
-
<Meta title="Komponenten/Teaser/Komponenten/Byline" />
|
|
8
|
-
|
|
9
|
-
export const Template = ({ ...args }) => {
|
|
10
|
-
return byline({ ...args })
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
# Byline
|
|
14
|
-
|
|
15
|
-
## Beschreibung
|
|
16
|
-
|
|
17
|
-
In der Byline-Komponente werden folgende Teaser-Zusatzinformationen angezeigt:
|
|
18
|
-
|
|
19
|
-
<ul>
|
|
20
|
-
<li><b>Datum</b> (mit oder ohne Uhrzeit)</li>
|
|
21
|
-
<li><b>Strukturknoten</b> (Rubrik)</li>
|
|
22
|
-
<li><b>Autor(en)</b></li>
|
|
23
|
-
<li><b>Link zu den Kommentaren des Artikels</b> (mit aktueller Kommentar-Anzahl)</li>
|
|
24
|
-
</ul>
|
|
25
|
-
|
|
26
|
-
Alle Informationen sind optional. Der Kommentar-Link wird per SSI eingebunden und ist in components/teaser/components/teaser_comments.hbs implementiert.
|
|
27
|
-
|
|
28
|
-
## Sub-Komponenten
|
|
29
|
-
|
|
30
|
-
Die Byline-Komponente inkludiert folgende Komponenten:
|
|
31
|
-
|
|
32
|
-
<ul>
|
|
33
|
-
<li>components/base/<b>loadSSI</b></li>
|
|
34
|
-
<li>components/teaser/components/<b>teaser_comments</b></li>
|
|
35
|
-
</ul>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## Props
|
|
39
|
-
|
|
40
|
-
Die Byline-Komponente benötigt die folgenden json-Daten (enthalten im Teaser-Json im Objekt <b>logicItem.includeModel</b>):
|
|
41
|
-
|
|
42
|
-
<ul>
|
|
43
|
-
<li><b>teaserInfo</b></li>
|
|
44
|
-
<li><b>teaserInfo.showTeaserInfo</b></li>
|
|
45
|
-
<li><b>teaserInfo.showTeaserInfoDate</b></li>
|
|
46
|
-
<li><b>teaserInfo.showTeaserInfoDateTime</b></li>
|
|
47
|
-
<li><b>teaserInfo.showTeaserInfoSection</b></li>
|
|
48
|
-
<li><b>teaserDate</b></li>
|
|
49
|
-
<li><b>teaserDate.htmlDateTime</b></li>
|
|
50
|
-
<li><b>teaserDate.date</b></li>
|
|
51
|
-
<li><b>teaserDate.dateSeparatorTime</b></li>
|
|
52
|
-
<li><b>documentSection</b></li>
|
|
53
|
-
<li><b>profiles</b></li>
|
|
54
|
-
</ul>
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
## Verwendung
|
|
58
|
-
|
|
59
|
-
Die Byline-Komponente wird in handlebars wie folgt eingebaut:
|
|
60
|
-
|
|
61
|
-
```html
|
|
62
|
-
{{> components/teaser/components/teaser_byline}}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
<Preview withToolbar>
|
|
67
|
-
<Story name="default" args={teaserWithoutComments.logicItem.includeModel}>
|
|
68
|
-
{Template.bind({})}
|
|
69
|
-
</Story>
|
|
70
|
-
<Story name="with comments" args={teaserWithComments.logicItem.includeModel}>
|
|
71
|
-
{Template.bind({})}
|
|
72
|
-
</Story>
|
|
73
|
-
<Story name="comments only" args={teaserWithoutTeaserinfo.logicItem.includeModel}>
|
|
74
|
-
{Template.bind({})}
|
|
75
|
-
</Story>
|
|
76
|
-
</Preview>
|
|
77
|
-
|
|
78
|
-
<ArgsTable story="default" />
|