Skip to content

Commit 074ca42

Browse files
iNeoOlaruiss
authored andcommitted
feat: ✨ Mettre à jour DsfrNotice avec l'udpate du Dsfr en 1.12
1 parent 5e010bd commit 074ca42

File tree

6 files changed

+102
-15
lines changed

6 files changed

+102
-15
lines changed

src/components/DsfrNotice/DsfrNotice.md

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,39 @@ Il est affiché sur l’ensemble des pages en desktop et en mobile. Il affiche u
1414

1515
La notice est composée des éléments suivants :
1616

17-
- un titre (prop `title`, de type `string`) :
17+
- Un titre (prop `title`, de type `string`) :
18+
- Optionnel avec une valeur par défault `''`
19+
- Une description (prop `desc`, de type `string`) :
1820
- optionnel avec une valeur par défault `''`
21+
- un pictogramme et une couleur déterminés par la prop `type` qui peut valoir une des chaînes suivantes :
22+
- `'info'` (valeur par défaut si la prop `type` est absente)
23+
- `'warning'`
24+
- `'alert'`
25+
- `'weather-orange'`
26+
- `'weather-red'`
27+
- `'weather-purple'`
28+
- `'witness'`
29+
- `'kidnapping'`
30+
- `'attack'`
31+
- `'cyberattack'`
1932
- Une icône d'information
20-
- une croix de fermeture si la prop `closeable` est à `true`
33+
- Une croix de fermeture si la prop `closeable` est à `true`
2134

2235
Slot(s) disponible(s):
2336

24-
- Le slot par défaut permet d'enrichir le contenu du paragraphe représentant le titre de la notice (tag `p` avec la classe `fr-notice__title`).
37+
- Le slot par `défaut` permet d'enrichir le contenu du paragraphe représentant le titre de la notice (tag `p` avec la classe `fr-notice__title`).
38+
- Ceci permet par exemple d'avoir un titre contenant un lien au fil du texte (tag `a`).
39+
- Le slot par `desc` permet d'enrichir le contenu du paragraphe représentant le titre de la notice (tag `p` avec la classe `fr-notice__desc`).
2540
- Ceci permet par exemple d'avoir un titre contenant un lien au fil du texte (tag `a`).
2641

2742
## 🛠️ Props
2843

29-
| nom | type | défaut | obligatoire |
30-
| ----------------------- | --------- | ---------------- | -------- |
31-
| `title` | *`string`* | `''` | |
32-
| `closeable` | *`boolean`* | `false` | |
44+
| nom | type | défaut | obligatoire |
45+
| ----------------------- | -------------------------------------- | ---------------- | -------- |
46+
| `title` | *`string`* | `''` | |
47+
| `desc` | *`string`* | `''` | |
48+
| `type` | *`'info' \| 'warning' \| 'alert'`...* | `'info'` | |
49+
| `closeable` | *`boolean`* | `false | |
3350

3451
## 📡 Évenements
3552

@@ -46,6 +63,7 @@ Slot(s) disponible(s):
4663
| nom | contenu par défaut |
4764
|-------------|---------|
4865
| `'default'` | *aucun* |
66+
| `'desc'` | *aucun* |
4967

5068
## 📝 Toutes les variantes 🌈 de Notice
5169

src/components/DsfrNotice/DsfrNotice.spec.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ describe('DsfrNotice', () => {
1515
},
1616
})
1717

18-
getByText(title)
18+
const titleEl = getByText(title)
19+
expect(titleEl).toHaveClass('fr-notice__title')
1920
const closeButton = getByRole('button')
2021
await fireEvent.click(closeButton)
2122

@@ -26,17 +27,22 @@ describe('DsfrNotice', () => {
2627
it('should render a notice', async () => {
2728
// Given
2829
const title = 'Titre de la notice'
30+
const desc = 'Description de la notice'
2931
const closeable = false
3032

3133
// When
3234
const { getByText, getByRole } = render(DsfrNotice, {
3335
props: {
3436
closeable,
3537
title,
38+
desc,
3639
},
3740
})
3841

39-
getByText(title)
42+
const titleEl = getByText(title)
43+
expect(titleEl).toHaveClass('fr-notice__title')
44+
const descEl = getByText(desc)
45+
expect(descEl).toHaveClass('fr-notice__desc')
4046
expect(() => getByRole('button')).toThrow()
4147
})
4248
})

src/components/DsfrNotice/DsfrNotice.stories.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,19 @@ export default {
1313
control: 'text',
1414
description: '**Titre** du bandeau d’information importante',
1515
},
16+
desc: {
17+
control: 'text',
18+
description: '**Titre** du bandeau d’information importante',
19+
},
1620
closeable: {
1721
control: 'boolean',
1822
description:
1923
'Ajoute la possibilité de présenter un bouton en forme de croix qui émet l’événement `"close"`',
2024
},
25+
type: {
26+
control: 'text',
27+
description: '**type** du bandeau d’information',
28+
},
2129
onClose: {
2230
action: fn(),
2331
},
@@ -37,7 +45,9 @@ export const BandeauDAlerte = (args) => ({
3745
<DsfrNotice
3846
v-if="!closed"
3947
:title="title"
48+
:desc="desc"
4049
:closeable="closeable"
50+
:type="type"
4151
@close="close"
4252
/>
4353
`,
@@ -53,11 +63,29 @@ export const BandeauDAlerte = (args) => ({
5363
})
5464
BandeauDAlerte.args = {
5565
title: 'Titre du bandeau d’information importante',
66+
desc: '',
67+
type: 'info',
68+
closeable: false,
69+
}
70+
export const BandeauDAlerteWarning = BandeauDAlerte.bind({})
71+
BandeauDAlerteWarning.args = {
72+
title: 'Titre du bandeau d’information importante',
73+
type: 'warning',
74+
closeable: false,
75+
}
76+
77+
export const BandeauDAlerteAvecDescription = BandeauDAlerte.bind({})
78+
BandeauDAlerteAvecDescription.args = {
79+
title: 'Titre du bandeau d’information importante fermable',
80+
desc: 'Texte de description plutot long lorem ipsum sit consectetur adipiscing elit.',
81+
type: 'info',
5682
closeable: false,
5783
}
5884

5985
export const BandeauDAlerteFermable = BandeauDAlerte.bind({})
6086
BandeauDAlerteFermable.args = {
6187
title: 'Titre du bandeau d’information importante fermable',
88+
desc: 'Texte de description plutot long lorem ipsum sit consectetur adipiscing elit.',
89+
type: 'info',
6290
closeable: true,
6391
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
export type DsfrNoticeProps = {
22
title?: string
3+
desc?: string
34
closeable?: boolean
5+
type?: 'info' | 'warning' | 'alert' | 'weather-orange' | 'weather-red' | 'weather-purple' | 'witness' | 'kidnapping' | 'attack' | 'cyberattack'
46
}

src/components/DsfrNotice/DsfrNotice.vue

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,30 @@ export type { DsfrNoticeProps }
55
66
withDefaults(defineProps<DsfrNoticeProps>(), {
77
title: '',
8+
desc: '',
9+
type: 'info',
810
})
911
1012
defineEmits<{ (event: 'close'): void }>()
1113
</script>
1214

1315
<template>
14-
<div class="fr-notice fr-notice--info">
16+
<div
17+
class="fr-notice"
18+
:class="`fr-notice--${type}`">
1519
<div class="fr-container">
1620
<div class="fr-notice__body">
17-
<p class="fr-notice__title">
18-
<slot>
19-
{{ title }}
20-
</slot>
21+
<p>
22+
<span class="fr-notice__title">
23+
<slot>
24+
{{ title }}
25+
</slot>
26+
</span>
27+
<span class="fr-notice__desc">
28+
<slot name="desc">
29+
{{ desc }}
30+
</slot>
31+
</span>
2132
</p>
2233
<button
2334
v-if="closeable"

src/components/DsfrNotice/docs-demo/DsfrNoticeExample.vue

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ const close = () => {
1212

1313
<template>
1414
<div class="demo-container-col">
15-
<DsfrNotice title="Notice simple" />
15+
<DsfrNotice
16+
title="Notice simple"
17+
/>
1618

1719
<DsfrNotice
1820
v-if="!isClosed"
@@ -28,5 +30,25 @@ const close = () => {
2830
lien externe
2931
</a>
3032
</DsfrNotice>
33+
34+
<DsfrNotice
35+
title="Notice simple"
36+
desc="Texte de description plutot long lorem ipsum sit consectetur adipiscing elit."
37+
/>
38+
39+
<DsfrNotice
40+
title="Notice simple"
41+
type="warning"
42+
/>
43+
44+
<DsfrNotice
45+
title="Notice simple"
46+
type="alert"
47+
/>
48+
49+
<DsfrNotice
50+
title="Notice simple"
51+
type="weather-orange"
52+
/>
3153
</div>
3254
</template>

0 commit comments

Comments
 (0)