Skip to content

Commit 6777e57

Browse files
authored
Merge pull request #944 from dnum-mi/develop
Develop
2 parents 153a11a + e581673 commit 6777e57

File tree

6 files changed

+111
-1
lines changed

6 files changed

+111
-1
lines changed

.vitepress/config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ const composants = [
199199
text: 'DsfrHeaderMenuLinks',
200200
link: '/composants/DsfrHeaderMenuLinks.md',
201201
},
202+
{
203+
text: 'DsfrHighlight',
204+
link: '/composants/DsfrHighlight.md',
205+
},
202206
{
203207
text: 'DsfrInput',
204208
link: '/composants/DsfrInput.md',
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Highlight - `DsfrHighlight`
2+
3+
## 🌟 Introduction
4+
5+
La mise en exergue permet à l’utilisateur de distinguer et repérer une information facilement.
6+
7+
Le composant `DsfrHighlight` est conçu pour mettre en exergue un texte ou un contenu particulier. Il permet d'afficher du texte avec des tailles personnalisables, en mettant l'accent sur l'importance du contenu. Ce composant est idéal pour attirer l'attention des utilisateurs sur des informations clés.
8+
9+
🏅 La documentation sur le tag sur le [DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/tag)
10+
11+
<VIcon name="vi-file-type-storybook" /> La story sur le tag sur le storybook de [VueDsfr](https://storybook.vue-ds.fr/?path=/docs/composants-dsfrtags--docs)
12+
13+
## 📐 Structure
14+
15+
- `<DsfrHighlight>` : Le composant principal.
16+
- Affiche un texte avec un style de mise en valeur.
17+
- Permet d'ajuster la taille du texte via les propriétés `small` et `large`.
18+
19+
## 🛠️ Props
20+
21+
| Propriété | Type | Description | Valeur par défaut |
22+
|-----------|-----------|---------------------------------------------------------------|-------------------|
23+
| `text` | `string` | Le texte à mettre en exergue. | `undefined` |
24+
| `small` | `boolean` | Si vrai, affiche le texte en petite taille. | `false` |
25+
| `large` | `boolean` | Si vrai, affiche le texte en grande taille. | `false` |
26+
| `color` | `string` | Doit être une des valeurs de couleurs du DSFR (ex. : `'green-emeraude'` ou `'brown-caramel'`) | `false` |
27+
28+
## 📡 Événements
29+
30+
Ce composant ne déclenche pas d'événements spécifiques.
31+
32+
## 🧩 Slots
33+
34+
- `default` : Slot pour insérer du contenu personnalisé dans la mise en exergue.
35+
36+
## 📝 Exemples
37+
38+
::: code-group
39+
40+
<Story data-title="Démo" min-h="500px">
41+
<DsfrHighlightDemo />
42+
</Story>
43+
44+
:::
45+
46+
## ⚙️ Code source du composant
47+
48+
::: code-group
49+
50+
<<< ./DsfrHighlight.vue
51+
<<< ./DsfrHighlight.types.ts
52+
53+
:::
54+
55+
Le composant `DsfrHighlight` est simple et flexible, offrant des options de taille pour le texte tout en permettant de personnaliser le contenu grâce à un slot. Il applique des classes CSS conditionnelles pour ajuster la taille du texte ainsi que la couleur de la marge en fonction des propriétés fournies.
56+
57+
<script setup>
58+
import DsfrHighlightDemo from './docs-demo/DsfrHighlightDemo.vue'
59+
</script>

src/components/DsfrHighlight/DsfrHighlight.stories.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ export default {
1212
control: 'text',
1313
description: 'Texte de la mise en avant',
1414
},
15+
color: {
16+
control: 'text',
17+
description: 'Couleur de la bordure (doit être une couleur du DSFR comme `"green-emeraude"` ou `"purple-glycine"`)',
18+
},
1519
small: {
1620
control: 'boolean',
1721
description: 'Permet d’afficher le texte en petit',
@@ -37,13 +41,15 @@ export const MiseEnExergue = (args) => ({
3741
:text="text"
3842
:small="small"
3943
:large="large"
44+
:color="color"
4045
/>
4146
`,
4247
})
4348
MiseEnExergue.args = {
4449
small: false,
4550
large: false,
4651
text: 'Texte original de la mise en exergue',
52+
color: undefined,
4753
}
4854
MiseEnExergue.play = async ({ canvasElement }) => {
4955
const canvas = within(canvasElement)
@@ -65,6 +71,7 @@ export const MiseEnExergueAvecSlot = (args) => ({
6571
:text="text"
6672
:small="small"
6773
:large="large"
74+
:color="color"
6875
>
6976
<template v-if="!text">{{ slotText }}</template>
7077
</DsfrHighlight>
@@ -74,6 +81,7 @@ MiseEnExergueAvecSlot.args = {
7481
small: false,
7582
large: false,
7683
text: '',
84+
color: 'pink-macaron',
7785
slotText: 'Le fameux slot mis en exergue',
7886
}
7987
MiseEnExergueAvecSlot.play = async ({ canvasElement }) => {

src/components/DsfrHighlight/DsfrHighlight.types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ export type DsfrHighlightProps = {
22
text?: string
33
small?: boolean
44
large?: boolean
5+
color?: string // TODO: faire une liste des couleurs permises
56
}

src/components/DsfrHighlight/DsfrHighlight.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ withDefaults(defineProps<DsfrHighlightProps>(), {
99
</script>
1010

1111
<template>
12-
<div class="fr-highlight">
12+
<div
13+
class="fr-highlight"
14+
:class="{ [`fr-highlight--${color}`]: color }"
15+
>
1316
<p
1417
:class="{
1518
'fr-text--lg': large && !small,
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<script lang="ts" setup>
2+
import DsfrInput from '@/components/DsfrInput/DsfrInput.vue'
3+
4+
import { ref } from 'vue'
5+
import DsfrHighlight from '../DsfrHighlight.vue'
6+
7+
const color = ref('green-emeraude')
8+
</script>
9+
10+
<template>
11+
<div>
12+
<DsfrHighlight
13+
text="Le texte mis en exergue"
14+
/>
15+
<DsfrHighlight
16+
small
17+
text="Le texte mis en exergue en petit"
18+
/>
19+
<DsfrHighlight
20+
large
21+
text="Le texte mis en exergue en grand"
22+
/>
23+
<DsfrHighlight
24+
text="Le texte mis en exergue green-emeraude"
25+
:color="color"
26+
/>
27+
<DsfrInput
28+
v-model="color"
29+
type="text"
30+
label="Couleur à mettre à la mise en exergue"
31+
label-visible
32+
placeholder="purple-glycine"
33+
/>
34+
</div>
35+
</template>

0 commit comments

Comments
 (0)