Skip to content

Commit 5250c43

Browse files
authored
Merge pull request #641 from abraccoippon/develop
feat(DsfrModal): ✨ changer la taille de la modale
2 parents 5cc4a2f + 62b7739 commit 5250c43

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

src/components/DsfrModal/DsfrModal.stories.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ export default {
4848
control: 'text',
4949
description: 'Icone à afficher au début du titre de la modale',
5050
},
51+
size: {
52+
control: 'radio',
53+
options: ['sm', 'md', 'lg', 'xl'],
54+
description: 'Taille de la modale : `SM` (Small), `MD` (Medium), `LG` (Large), `XL`(Extra large). Attention la taille `XL` ne fait pas partie du Design System de l’État',
55+
},
5156
close: {
5257
description: 'Événement déclenché à la fermeture de la modale',
5358
},
@@ -65,10 +70,13 @@ export const Modal = (args) => ({
6570
},
6671

6772
data () {
68-
return {
69-
...args,
70-
actions: args.actions.map(action => ({ ...action, onClick: () => { args.onClick(); this.onClose() } })),
71-
}
73+
return args
74+
},
75+
76+
computed: {
77+
modifiedActions () {
78+
return this.actions.map(action => ({ ...action, onClick: () => { action.onClick(); this.onClose() } }))
79+
},
7280
},
7381

7482
template: `
@@ -80,11 +88,12 @@ export const Modal = (args) => ({
8088
<DsfrModal
8189
ref="modal"
8290
:opened="opened"
83-
:actions="actions"
91+
:actions="modifyActions"
8492
:is-alert="isAlert"
8593
:icon="icon"
8694
:title="title"
8795
:origin="$refs.modalOrigin"
96+
:size="size"
8897
@close="onClose()"
8998
>
9099
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas varius tortor nibh, sit amet tempor nibh finibus et. Aenean eu enim justo. Vestibulum aliquam hendrerit molestie. Mauris malesuada nisi sit amet augue accumsan tincidunt. Maecenas tincidunt, velit ac porttitor pulvinar, tortor eros facilisis libero, vitae commodo nunc quam et ligula. Ut nec ipsum sapien. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer id nisi nec nulla luctus lacinia non eu turpis. Etiam in ex imperdiet justo tincidunt egestas. Ut porttitor urna ac augue cursus tincidunt sit amet sed orci.</p>
@@ -105,6 +114,7 @@ Modal.args = {
105114
title: 'Titre de la modale',
106115
isAlert: false,
107116
icon: 'ri-checkbox-circle-line',
117+
size: 'md',
108118
actions: [
109119
{
110120
label: 'Valider',

src/components/DsfrModal/DsfrModal.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ const props = withDefaults(defineProps<{
1414
origin?: {focus:() => void}
1515
title: string
1616
icon?: string
17+
size?: 'sm' | 'md' | 'lg' | 'xl'
1718
}>(), {
1819
modalId: () => getRandomId('modal', 'dialog'),
1920
actions: () => [],
2021
origin: () => ({ focus () {} }), // eslint-disable-line @typescript-eslint/no-empty-function
2122
icon: undefined,
23+
size: 'md',
2224
})
2325
2426
const emit = defineEmits<{(e: 'close'): void}>()
@@ -87,7 +89,14 @@ async function close () {
8789
>
8890
<div class="fr-container fr-container--fluid fr-container-md">
8991
<div class="fr-grid-row fr-grid-row--center">
90-
<div class="fr-col-12 fr-col-md-8 fr-col-lg-6">
92+
<div
93+
class="fr-col-12"
94+
:class="{
95+
'fr-col-md-8': size === 'lg',
96+
'fr-col-md-6': size === 'md',
97+
'fr-col-md-4': size === 'sm',
98+
}"
99+
>
91100
<div class="fr-modal__body">
92101
<div class="fr-modal__header">
93102
<button

0 commit comments

Comments
 (0)