Skip to content

Commit b9affd4

Browse files
authored
Merge pull request #446 from dnum-mi/fix/dsfr-side-menu-on-mobile
fix/dsfr side menu on mobile
2 parents e952396 + 3a3d7ba commit b9affd4

File tree

6 files changed

+65
-26
lines changed

6 files changed

+65
-26
lines changed

src/components/DsfrLanguageSelector/DsfrLanguageSelector.vue

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,28 @@ export default defineComponent({
2525
data () {
2626
return {
2727
expanded: false,
28+
collapsing: false,
2829
}
2930
},
3031
computed: {
3132
collapseStyle () {
3233
const baseStyle = {
3334
'--collapse': `-${this.languages.length * 114}px`,
3435
}
35-
if (this.expanded) {
36+
if (this.expanded || this.collapsing) {
3637
baseStyle['--collapse-max-height'] = 'none'
3738
}
3839
return baseStyle
3940
},
4041
},
42+
watch: {
43+
expanded (isExpanded) {
44+
if (!isExpanded) {
45+
this.collapsing = true
46+
setTimeout(() => { this.collapsing = false }, 300)
47+
}
48+
},
49+
},
4150
methods: {
4251
selectLanguage (language) {
4352
this.expanded = false
@@ -67,7 +76,7 @@ export default defineComponent({
6776
<div
6877
:id="id"
6978
class="fr-collapse fr-translate__menu fr-menu"
70-
:class="{'fr-collapse--expanded': expanded}"
79+
:class="{ 'fr-collapse--expanded': expanded, 'fr-collapsing': collapsing }"
7180
:style="collapseStyle"
7281
>
7382
<ul class="fr-menu__list">
@@ -91,10 +100,3 @@ export default defineComponent({
91100
</template>
92101

93102
<style src="@gouvfr/dsfr/dist/component/translate/translate.main.min.css" />
94-
95-
<style scoped>
96-
.fr-menu {
97-
position: relative;
98-
top: -1rem;
99-
}
100-
</style>

src/components/DsfrSideMenu/DsfrSideMenu.stories.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,34 +78,34 @@ MenuLateral.args = {
7878
headingTitle: 'Titre de la rubrique',
7979
menuItems: [
8080
{
81-
id: 11,
81+
id: '11',
8282
to: '/rubrique-1',
8383
text: 'Premier titre de niveau 1',
8484
},
8585
{
86-
id: 12,
86+
id: '12',
8787
to: '/rubrique-2',
8888
text: 'Deuxième titre de niveau 1',
8989
active: true,
9090
menuItems: [
9191
{
92-
id: 21,
92+
id: '21',
9393
to: '/rubrique-2/sous-rubrique-1',
9494
text: 'Premier titre de niveau 2',
9595
},
9696
{
97-
id: 22,
97+
id: '22',
9898
to: '/rubrique-2/sous-rubrique-2',
9999
text: 'Deuxième titre de niveau 2',
100100
active: true,
101101
menuItems: [
102102
{
103-
id: 31,
103+
id: '31',
104104
to: '/rubrique-2/sous-rubrique-2/sous-sous-rubrique-1',
105105
text: 'Premier titre de niveau 3',
106106
},
107107
{
108-
id: 32,
108+
id: '32',
109109
to: '/rubrique-2/sous-rubrique-2/sous-sous-rubrique-2',
110110
text: 'Deuxième titre de niveau 3',
111111
active: true,

src/components/DsfrSideMenu/DsfrSideMenu.vue

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
<script setup>
2+
import { computed, ref, watch } from 'vue'
3+
24
import { getRandomId } from '../../utils/random-utils.js'
35
46
// import '@gouvfr/dsfr/dist/component/sidemenu/sidemenu.module.js'
57
68
import DsfrSideMenuList from './DsfrSideMenuList.vue'
79
8-
defineProps({
10+
const props = defineProps({
911
buttonLabel: {
1012
type: String,
1113
default: 'Dans cette rubrique',
@@ -16,6 +18,10 @@ defineProps({
1618
return getRandomId('sidemenu')
1719
},
1820
},
21+
collapseValue: {
22+
type: String,
23+
default: '-492px',
24+
},
1925
menuItems: {
2026
type: Array,
2127
default: () => undefined,
@@ -27,6 +33,25 @@ defineProps({
2733
})
2834
2935
defineEmits(['toggle-expand'])
36+
37+
const expanded = ref(false)
38+
const collapsing = ref(false)
39+
const collapseStyle = computed(() => {
40+
const baseStyle = {
41+
'--collapse': props.collapseValue,
42+
}
43+
if (expanded.value || collapsing.value) {
44+
baseStyle['--collapse-max-height'] = 'none'
45+
}
46+
return baseStyle
47+
})
48+
watch(expanded, (isExpanded) => {
49+
console.log(isExpanded)
50+
if (!isExpanded) {
51+
collapsing.value = true
52+
setTimeout(() => { collapsing.value = false }, 300)
53+
}
54+
})
3055
</script>
3156

3257
<template>
@@ -38,13 +63,16 @@ defineEmits(['toggle-expand'])
3863
<button
3964
class="fr-sidemenu__btn"
4065
:aria-controls="id"
41-
aria-expanded="false"
66+
:aria-expanded="expanded"
67+
@click.prevent.stop="expanded = !expanded"
4268
>
4369
{{ buttonLabel }}
4470
</button>
4571
<div
4672
:id="id"
4773
class="fr-collapse"
74+
:class="{'fr-collapse--expanded': expanded, 'fr-collapsing': collapsing}"
75+
:style="collapseStyle"
4876
>
4977
<div class="fr-sidemenu__title">
5078
{{ headingTitle }}

src/components/DsfrSideMenu/DsfrSideMenuList.stories.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,34 +93,34 @@ MenuLateral.args = {
9393
headingTitle: 'Titre de la rubrique',
9494
menuItems: [
9595
{
96-
id: 11,
96+
id: '11',
9797
to: '/rubrique-1',
9898
text: 'Premier titre de niveau 1',
9999
},
100100
{
101-
id: 12,
101+
id: '12',
102102
to: '/rubrique-2',
103103
text: 'Deuxième titre de niveau 1',
104104
active: true,
105105
menuItems: [
106106
{
107-
id: 21,
107+
id: '21',
108108
to: '/rubrique-2/sous-rubrique-1',
109109
text: 'Premier titre de niveau 2',
110110
},
111111
{
112-
id: 22,
112+
id: '22',
113113
to: '/rubrique-2/sous-rubrique-2',
114114
text: 'Deuxième titre de niveau 2',
115115
active: true,
116116
menuItems: [
117117
{
118-
id: 31,
118+
id: '31',
119119
to: '/rubrique-2/sous-rubrique-2/sous-sous-rubrique-1',
120120
text: 'Premier titre de niveau 3',
121121
},
122122
{
123-
id: 32,
123+
id: '32',
124124
to: '/rubrique-2/sous-rubrique-2/sous-sous-rubrique-2',
125125
text: 'Deuxième titre de niveau 3',
126126
active: true,

src/components/DsfrTranscription/DsfrTranscription.stories.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,5 @@ Transcription.args = {
4343
dark: false,
4444
title: 'Chats hiver',
4545
content: 'Des chatons jouant dans la neige',
46-
collapseValue: '-114',
46+
collapseValue: '-114px',
4747
}

src/components/DsfrTranscription/DsfrTranscription.vue

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export default defineComponent({
2222
return {
2323
opened: false,
2424
expanded: false,
25+
collapsing: false,
2526
}
2627
},
2728
@@ -30,12 +31,20 @@ export default defineComponent({
3031
const baseStyle = {
3132
'--collapse': this.collapseValue,
3233
}
33-
if (this.expanded) {
34+
if (this.expanded || this.collapsing) {
3435
baseStyle['--collapse-max-height'] = 'none'
3536
}
3637
return baseStyle
3738
},
3839
},
40+
watch: {
41+
expanded (isExpanded) {
42+
if (!isExpanded) {
43+
this.collapsing = true
44+
setTimeout(() => { this.collapsing = false }, 300)
45+
}
46+
},
47+
},
3948
})
4049
</script>
4150

@@ -52,7 +61,7 @@ export default defineComponent({
5261
<div
5362
id="fr-transcription__collapse-transcription-1354"
5463
class="fr-collapse"
55-
:class="{ 'fr-collapse--expanded': expanded }"
64+
:class="{ 'fr-collapse--expanded': expanded, 'fr-collapsing': collapsing }"
5665
:style="collapseStyle"
5766
>
5867
<dialog

0 commit comments

Comments
 (0)