Skip to content

Commit 8252799

Browse files
authored
Merge pull request #580 from dnum-mi/feat/composant-page-erreur
feat: ✨ Création d'un composant page d'erreur
2 parents 6455d7f + 21603a7 commit 8252799

File tree

4 files changed

+143
-1
lines changed

4 files changed

+143
-1
lines changed

src/assets/img/technical-error.png

11.6 KB
Loading

src/components/DsfrCard/DsfrCard.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ defineExpose({ goToTargetLink })
9595
v-if="buttons.length || linksGroup.length"
9696
class="fr-card__footer"
9797
>
98-
<dsfr-button-group
98+
<DsfrButtonGroup
9999
v-if="buttons.length"
100100
:buttons="buttons"
101101
inline-layout-when="lg"
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import DsfrErrorPage from './DsfrErrorPage.vue'
2+
3+
export default {
4+
component: DsfrErrorPage,
5+
title: 'Composants/DsfrErrorPage',
6+
argTypes: {
7+
title: {
8+
control: 'text',
9+
description: 'Conséquence de l\'erreur rencontrée.',
10+
},
11+
subtitle: {
12+
control: 'text',
13+
description: 'Code d\'erreur HTTP à l\'origine de l\'erreur rencontrée.',
14+
},
15+
description: {
16+
control: 'text',
17+
description: 'Description de l\'erreur et formule d\'excuses à l\'utilisateur.',
18+
},
19+
help: {
20+
control: 'text',
21+
description: 'Accompagnement de l\'utilisateur qui se retrouve confronté à l\'erreur.',
22+
},
23+
buttons: {
24+
control: 'object',
25+
description: 'Tableau d\'objets contenant les props des boutons d\'actions sur la page.',
26+
},
27+
}
28+
}
29+
30+
export const PageErreur404 = (args) => ({
31+
components: { DsfrErrorPage },
32+
data () {
33+
return args
34+
},
35+
template: `
36+
<DsfrErrorPage
37+
:title="title"
38+
:subtitle="subtitle"
39+
:description="description"
40+
:help="help"
41+
:buttons="buttons"
42+
/>
43+
`,
44+
45+
})
46+
47+
PageErreur404.args = {
48+
title: "Page non trouvée, ne paniquez pas",
49+
subtitle: "Erreur 404 !",
50+
description: "La page que vous recherchez n'existe pas ou l'url est erronée.",
51+
help: "Bonne chance !",
52+
buttons: [{
53+
label: 'Page d\'accueil',
54+
link: 'https://www.systeme-de-design.gouv.fr/',
55+
},
56+
{
57+
label: 'Contactez-nous',
58+
secondary: true,
59+
link: 'https://www.systeme-de-design.gouv.fr/',
60+
},],
61+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<script lang="ts" setup>
2+
import { type DsfrButtonProps } from '../DsfrButton/DsfrButton.vue'
3+
import DsfrButtonGroup from '../DsfrButton/DsfrButtonGroup.vue'
4+
5+
withDefaults(defineProps<{
6+
title?: string
7+
subtitle?: string
8+
description?: string
9+
help?: string
10+
buttons: DsfrButtonProps[]
11+
}>(), {
12+
title: 'Page non trouvée',
13+
subtitle: 'Erreur 404',
14+
description: 'La page que vous cherchez est introuvable. Excusez-nous pour la gêne occasionnée.',
15+
help: 'Si vous avez tapé l\'adresse web dans le navigateur, vérifiez qu\'elle est correcte. La page n\'est peut être plus disponible.',
16+
buttons: () => [],
17+
})
18+
</script>
19+
20+
<template>
21+
<div class="fr-container flex">
22+
<div class="half">
23+
<h1 class="font-25">{{ title }}</h1>
24+
<span class="block mt-15 mb-15">{{ subtitle }}</span>
25+
<p class="font-125">{{ description }}</p>
26+
<p>{{ help }}</p>
27+
<DsfrButtonGroup
28+
v-if="buttons?.length"
29+
:buttons="buttons"
30+
inline-layout-when="always"
31+
/>
32+
</div>
33+
<div class="half self-center text-center">
34+
<img
35+
class="error-img"
36+
src="../../assets/img/technical-error.png"
37+
>
38+
</div>
39+
</div>
40+
</template>
41+
42+
<style scoped>
43+
44+
.flex {
45+
display: flex;
46+
}
47+
48+
.block {
49+
display: flex;
50+
}
51+
52+
.half {
53+
max-width: 50%;
54+
width: 50%;
55+
}
56+
57+
.self-center {
58+
align-self: center;
59+
}
60+
61+
.text-center {
62+
text-align: center;
63+
}
64+
65+
.mt-15 {
66+
margin-top: 1.5rem;
67+
}
68+
69+
.mb-15 {
70+
margin-bottom: 1.5rem;
71+
}
72+
73+
.font-125 {
74+
font-size: 1.25rem;
75+
}
76+
77+
.font-25 {
78+
font-size: 2.5rem;
79+
}
80+
81+
</style>

0 commit comments

Comments
 (0)