Skip to content

Commit 4ad9750

Browse files
authored
Merge pull request #566 from vincentlaine/feat/badgeBeta
feat: ✨ Ajout de la possibilité d'ajouter le badge "BETA" sur le composant Header
2 parents d8739dc + ddce3ab commit 4ad9750

File tree

3 files changed

+106
-1
lines changed

3 files changed

+106
-1
lines changed

src/components/DsfrHeader/DsfrHeader.spec.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,35 @@ describe('DsfrHeader', () => {
106106
// Then
107107
expect(logo).toHaveClass('fr-logo')
108108
})
109+
110+
it('should render DsfrHeader with a BETA badge', async () => {
111+
// Given
112+
const logoText = 'Gouvernement'
113+
const serviceTitle = 'Nom du service'
114+
const serviceDescription = 'Description du service'
115+
const showBeta = true
116+
117+
// When
118+
const { getByText } = render(DsfrHeader, {
119+
global: {
120+
plugins: [router],
121+
components: {
122+
VIcon,
123+
},
124+
},
125+
props: {
126+
logoText,
127+
serviceTitle,
128+
serviceDescription,
129+
showBeta,
130+
},
131+
})
132+
133+
await router.isReady()
134+
135+
const betaBadge = getByText('BETA')
136+
137+
// Then
138+
expect(betaBadge).toHaveClass('fr-badge')
139+
})
109140
})

src/components/DsfrHeader/DsfrHeader.stories.ts

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ export default {
3838
control: 'boolean',
3939
description: 'Indique si le champs de recherche doit être affiché (`true`) ou non (`false`, défaut)',
4040
},
41+
showBeta: {
42+
control: 'boolean',
43+
description: 'Indique si le badge "BETA" doit être affiché (`true`) ou non (`false`, défaut)',
44+
},
4145
homeTo: {
4246
control: 'text',
4347
description: 'Lien cible au clic sur le logo ou le titre',
@@ -384,3 +388,58 @@ EnTeteAvecNavigation.args = {
384388
},
385389
],
386390
}
391+
392+
export const EnTeteAvecBadgeBeta = (args, { argTypes }) => ({
393+
components: {
394+
DsfrHeader,
395+
},
396+
data () {
397+
return {
398+
...args,
399+
quickLincks: args.quickLinks.map((link, idx) => {
400+
if (idx === 0) {
401+
link.onClick = ($event) => {
402+
$event.preventDefault()
403+
this.actionOnLink()
404+
}
405+
}
406+
return link
407+
}),
408+
}
409+
},
410+
411+
template: `
412+
<DsfrHeader
413+
:service-title="serviceTitle"
414+
:service-description="serviceDescription"
415+
:home-to="homeTo"
416+
:quick-links="quickLinks"
417+
:show-search="showSearch"
418+
:logo-text="logoText"
419+
:show-beta="showBeta"
420+
v-model="modelValue"
421+
@click="onClickOnLogo"
422+
@search="onSearch($event)"
423+
/>
424+
`,
425+
426+
methods: {
427+
onClickOnLogo ($event) {
428+
$event.preventDefault()
429+
$event.stopPropagation()
430+
this.actionOnLogo($event)
431+
},
432+
},
433+
434+
})
435+
EnTeteAvecBadgeBeta.args = {
436+
showSearch: false,
437+
showBeta: true,
438+
logoText: ['Ministère', 'de l’intérieur'],
439+
serviceTitle: 'Nom du Site/Service',
440+
serviceDescription: 'baseline - précisions sur l‘organisation',
441+
modelValue: '',
442+
placeholder: '',
443+
homeTo: '#',
444+
quickLinks: [],
445+
}

src/components/DsfrHeader/DsfrHeader.vue

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type DsfrHeaderProps = {
1919
searchLabel?: string
2020
quickLinksAriaLabel?: string
2121
showSearch?: boolean
22+
showBeta?: boolean
2223
}
2324
2425
const props = withDefaults(defineProps<DsfrHeaderProps>(), {
@@ -150,6 +151,12 @@ defineEmits<{
150151
>
151152
<p class="fr-header__service-title">
152153
{{ serviceTitle }}
154+
<span
155+
v-if="showBeta"
156+
class="fr-badge fr-badge--sm fr-badge--green-emeraude"
157+
>
158+
BETA
159+
</span>
153160
</p>
154161
</RouterLink>
155162
<p
@@ -159,6 +166,14 @@ defineEmits<{
159166
{{ serviceDescription }}
160167
</p>
161168
</div>
169+
<div
170+
v-if="!serviceTitle && showBeta"
171+
class="fr-header__service"
172+
>
173+
<p class="fr-header__service-title">
174+
<span class="fr-badge fr-badge--sm fr-badge--green-emeraude">BETA</span>
175+
</p>
176+
</div>
162177
</div>
163178
<div class="fr-header__tools">
164179
<div
@@ -231,7 +246,7 @@ defineEmits<{
231246
</div>
232247
</div>
233248
</div>
234-
<slot />
249+
<slot/>
235250
</div>
236251
</div>
237252
</header>

0 commit comments

Comments
 (0)