Skip to content

Commit 25d1f1a

Browse files
authored
Merge pull request #569 from dnum-mi/develop
Develop
2 parents 22b6ed8 + 4ad9750 commit 25d1f1a

File tree

4 files changed

+109
-1
lines changed

4 files changed

+109
-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>

src/components/DsfrSelect/DsfrSelect.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@ defineOptions({
77
})
88
99
const props = withDefaults(defineProps<{
10+
selectId?: string
1011
required?: boolean
1112
disabled?: boolean
1213
selectId?: string
1314
description?: string
1415
modelValue?: string | number
1516
label?: string
1617
options?:(string | number | { value: string | number, text: string, disabled: boolean })[]
18+
successMessage?: string
19+
errorMessage?: string
1720
}>(), {
1821
selectId: () => getRandomId('select'),
1922
modelValue: undefined,

0 commit comments

Comments
 (0)