Skip to content

Commit 62b7739

Browse files
committed
feat(DsfrModal): add size prop
1 parent f856622 commit 62b7739

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
@@ -15,11 +15,13 @@ const props = withDefaults(defineProps<{
1515
origin?: {focus:() => void}
1616
title: string
1717
icon?: string
18+
size?: 'sm' | 'md' | 'lg' | 'xl'
1819
}>(), {
1920
modalId: () => getRandomId('modal', 'dialog'),
2021
actions: () => [],
2122
origin: () => ({ focus () {} }), // eslint-disable-line @typescript-eslint/no-empty-function
2223
icon: undefined,
24+
size: 'md',
2325
})
2426
2527
const emit = defineEmits<{(e: 'close'): void}>()
@@ -88,7 +90,14 @@ async function close () {
8890
>
8991
<div class="fr-container fr-container--fluid fr-container-md">
9092
<div class="fr-grid-row fr-grid-row--center">
91-
<div class="fr-col-12 fr-col-md-8 fr-col-lg-6">
93+
<div
94+
class="fr-col-12"
95+
:class="{
96+
'fr-col-md-8': size === 'lg',
97+
'fr-col-md-6': size === 'md',
98+
'fr-col-md-4': size === 'sm',
99+
}"
100+
>
92101
<div class="fr-modal__body">
93102
<div class="fr-modal__header">
94103
<button

0 commit comments

Comments
 (0)