Skip to content

Commit 93ba531

Browse files
authored
Merge pull request #609 from ShallowRed/develop
feat: ✨ nouveau slot nommé dans le composant DsfrHeader pour le menu de nav primaire
2 parents 92cc4c5 + 54b9614 commit 93ba531

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

src/components/DsfrHeader/DsfrHeader.stories.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,11 @@ export const EnTeteAvecNavigation = (args, { argTypes }) => ({
244244
@click="onClickOnLogo"
245245
@search="onSearch($event)"
246246
>
247-
<DsfrNavigation
248-
:nav-items="navItems"
249-
/>
247+
<template #mainnav>
248+
<DsfrNavigation
249+
:nav-items="navItems"
250+
/>
251+
</template>
250252
</DsfrHeader>
251253
`,
252254

src/components/DsfrHeader/DsfrHeader.vue

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ const showSearchModal = () => {
7373
const onQuickLinkClick = hideModal
7474
7575
const slots = useSlots()
76-
const isWithSlotOperator = computed(() => slots.operator?.().length || !!props.operatorImgSrc)
76+
const isWithSlotOperator = computed(() => Boolean(slots.operator?.().length) || !!props.operatorImgSrc)
77+
const isWithSlotNav = computed(() => Boolean(slots.mainnav))
7778
7879
// eslint-disable-next-line func-call-spacing
7980
defineEmits<{
@@ -114,7 +115,7 @@ defineEmits<{
114115
</slot>
115116
</div>
116117
<div
117-
v-if="showSearch || quickLinks?.length"
118+
v-if="showSearch || isWithSlotNav || quickLinks?.length"
118119
class="fr-header__navbar"
119120
>
120121
<button
@@ -127,7 +128,7 @@ defineEmits<{
127128
@click.prevent.stop="showSearchModal()"
128129
/>
129130
<button
130-
v-if="quickLinks?.length"
131+
v-if="isWithSlotNav || quickLinks?.length"
131132
id="button-menu"
132133
class="fr-btn--menu fr-btn"
133134
:data-fr-opened="showMenu"
@@ -204,7 +205,7 @@ defineEmits<{
204205
</div>
205206
</div>
206207
<div
207-
v-if="showSearch || (quickLinks && quickLinks.length)"
208+
v-if="showSearch || isWithSlotNav || (quickLinks && quickLinks.length)"
208209
id="header-navigation"
209210
class="fr-header__menu fr-modal"
210211
:class="{ 'fr-modal--opened': modalOpened }"
@@ -233,9 +234,15 @@ defineEmits<{
233234
/>
234235
</nav>
235236
</div>
237+
<template v-if="modalOpened">
238+
<slot
239+
name="mainnav"
240+
:hidemodal="hideModal"
241+
/>
242+
</template>
236243
<div
237244
v-if="searchModalOpened"
238-
class="flex justify-center items-center"
245+
class="flex justify-center items-center"
239246
>
240247
<DsfrSearchBar
241248
:model-value="modelValue"
@@ -246,6 +253,16 @@ defineEmits<{
246253
</div>
247254
</div>
248255
</div>
256+
<div
257+
v-if="isWithSlotNav && !modalOpened"
258+
class="fr-hidden fr-unhidden-lg"
259+
>
260+
<!-- @slot Slot nommé mainnav pour le menu de navigation principal -->
261+
<slot
262+
name="mainnav"
263+
:hidemodal="hideModal"
264+
/>
265+
</div>
249266
<slot />
250267
</div>
251268
</div>

0 commit comments

Comments
 (0)