Skip to content

Commit 23bd7cf

Browse files
authored
Merge pull request #461 from dnum-mi/develop
Develop
2 parents fd37823 + c097696 commit 23bd7cf

23 files changed

+248
-53
lines changed

src/components/DsfrButton/DsfrButton.stories.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ export default {
2626
control: 'boolean',
2727
description: 'Permet de basculer sur la variante de style "tertiary"',
2828
},
29+
noOutline: {
30+
control: 'boolean',
31+
description: 'Permet de basculer sur la variante de style "tertiary-nooutline"',
32+
},
33+
size: {
34+
control: 'radio',
35+
options: ['small', 'medium', 'large'],
36+
description: 'Indique la taille du groupe de bouton',
37+
},
2938
disabled: {
3039
control: 'boolean',
3140
description: 'Indique si le bouton est **inactivé**',
@@ -56,6 +65,8 @@ export const BoutonPrimaire = (args) => ({
5665
:tertiary="tertiary"
5766
:disabled="disabled"
5867
:icon="icon"
68+
:size="size"
69+
:no-outline="noOutline"
5970
:icon-only="iconOnly"
6071
:icon-right="iconRight"
6172
@click="onClick"
@@ -89,6 +100,8 @@ export const BoutonPrimaireAvecIcone = (args) => ({
89100
:label="label"
90101
:disabled="disabled"
91102
:icon="icon"
103+
:size="size"
104+
:no-outline="noOutline"
92105
:icon-right="iconRight"
93106
@click="onClick"
94107
/>
@@ -118,6 +131,8 @@ export const BoutonSecondaire = (args) => ({
118131
:label="label"
119132
:disabled="disabled"
120133
:secondary="secondary"
134+
:no-outline="noOutline"
135+
:size="size"
121136
@click="onClick"
122137
/>
123138
`,
@@ -145,6 +160,8 @@ export const BoutonTertiaire = (args) => ({
145160
:label="label"
146161
:disabled="disabled"
147162
:tertiary="tertiary"
163+
:no-outline="noOutline"
164+
:size="size"
148165
@click="onClick"
149166
/>
150167
`,
@@ -160,6 +177,36 @@ BoutonTertiaire.args = {
160177
tertiary: true,
161178
}
162179

180+
export const BoutonTertiaireSansBordure = (args) => ({
181+
components: { DsfrButton },
182+
data () {
183+
return {
184+
...args,
185+
}
186+
},
187+
template: `
188+
<DsfrButton
189+
:label="label"
190+
:disabled="disabled"
191+
:tertiary="tertiary"
192+
:no-outline="noOutline"
193+
:size="size"
194+
@click="onClick"
195+
/>
196+
`,
197+
198+
mounted () {
199+
document.body.parentElement.setAttribute('data-fr-theme', this.dark ? 'dark' : 'light')
200+
},
201+
})
202+
BoutonTertiaireSansBordure.args = {
203+
label: 'Label bouton secondaire',
204+
disabled: false,
205+
dark: false,
206+
tertiary: true,
207+
noOutline: true,
208+
}
209+
163210
export const SuiteDeBoutons = (args) => ({
164211
components: {
165212
DsfrButton,
@@ -177,6 +224,8 @@ export const SuiteDeBoutons = (args) => ({
177224
:secondary="btn.secondary"
178225
:label="btn.label"
179226
:icon="btn.icon"
227+
:no-outline="btn.noOutline"
228+
:size="btn.size"
180229
:iconRight="btn.iconRight"
181230
@click="onClick"
182231
/>

src/components/DsfrButton/DsfrButton.vue

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,41 @@ export default defineComponent({
1919
},
2020
secondary: Boolean,
2121
tertiary: Boolean,
22+
noOutline: {
23+
type: Boolean,
24+
default: false,
25+
},
2226
icon: {
2327
type: String,
2428
default: undefined,
2529
},
30+
size: {
31+
type: String,
32+
validator: (val) => ['sm', 'small', 'lg', 'large', 'md', 'medium', '', undefined].includes(val),
33+
default: undefined,
34+
},
2635
iconRight: Boolean,
2736
iconOnly: Boolean,
2837
},
2938
39+
computed: {
40+
sm () {
41+
return ['sm', 'small'].includes(this.size)
42+
},
43+
md () {
44+
return ['md', 'medium'].includes(this.size)
45+
},
46+
lg () {
47+
return ['lg', 'large'].includes(this.size)
48+
},
49+
center () {
50+
return this.align === 'center'
51+
},
52+
right () {
53+
return this.align === 'right'
54+
},
55+
},
56+
3057
methods: {
3158
focus () {
3259
this.$refs.btn.focus()
@@ -41,7 +68,11 @@ export default defineComponent({
4168
:class="{
4269
'fr-btn': true,
4370
'fr-btn--secondary': secondary && !tertiary,
44-
'fr-btn--tertiary': tertiary && !secondary,
71+
'fr-btn--tertiary': tertiary && !secondary && !noOutline,
72+
'fr-btn--tertiary-no-outline': tertiary && !secondary && noOutline,
73+
'fr-btn--sm': sm,
74+
'fr-btn--md': md,
75+
'fr-btn--lg': lg,
4576
'inline-flex': true,
4677
'reverse': iconRight,
4778
'justify-center': iconOnly,

src/components/DsfrButton/DsfrButtonGroup.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ describe('DsfrButtonGroup', () => {
5151
expect(secondButtonSpan.parentNode).toHaveClass('fr-btn--secondary')
5252
expect(wrapper).toHaveClass('extra-class')
5353
expect(wrapper).not.toHaveClass('fr-btns-group--right')
54-
expect(wrapper).not.toHaveClass('fr-btns-group--inline-sm')
54+
expect(wrapper).not.toHaveClass('fr-btns-group--sm')
5555
expect(onClickFirst.callCount).toBe(1)
5656
expect(onClickSecond.callCount).toBe(1)
5757
})
@@ -80,6 +80,6 @@ describe('DsfrButtonGroup', () => {
8080
// Then
8181
expect(wrapper).toHaveClass('extra-class')
8282
expect(wrapper).toHaveClass('fr-btns-group--right')
83-
expect(wrapper).toHaveClass('fr-btns-group--inline-sm')
83+
expect(wrapper).toHaveClass('fr-btns-group--sm')
8484
})
8585
})

src/components/DsfrButton/DsfrButtonGroup.stories.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,25 @@ export default {
2020
},
2121
inline: {
2222
control: 'boolean',
23-
description: 'Indique si le groupe de boutons doit apparaître en empilement horizontal',
23+
deprecated: true,
24+
description: '**Déprécié:** Indique si le groupe de boutons doit toujours apparaître en empilement horizontal. *Utiliser `inlineLayoutWhen` à la place.*',
25+
},
26+
inlineLayoutWhen: {
27+
control: 'radio',
28+
options: ['never', 'always', 'small', 'medium', 'large'],
29+
description: 'Indique si le groupe de boutons doit apparaître en empilement horizontal (toujours, ou seulement sur les tailles de vue spécifiées)',
2430
},
2531
reverse: {
2632
control: 'boolean',
2733
description: 'Indique si l’ordre des boutons doit être inversé par rapport au DOM.\n\n *N.B. : Ne fonctionne que si `align` est à `right`*',
2834
},
35+
iconRight: {
36+
control: 'boolean',
37+
description: 'Inverse la position des icônes par rapport au texte.\n\n *N.B. : Ne fonctionne que si la prop n\'est pas définie sur chaque bouton*',
38+
},
2939
size: {
3040
control: 'radio',
31-
options: ['default', 'small', 'medium', 'large'],
41+
options: ['small', 'medium', 'large'],
3242
description: 'Indique la taille du groupe de bouton',
3343
},
3444
align: {
@@ -57,6 +67,8 @@ export const GroupeDeBoutons = (args) => ({
5767
:size="size"
5868
:align="align"
5969
:inline="inline"
70+
:inline-layout-when="inlineLayoutWhen"
71+
:icon-right="iconRight"
6072
:reverse="reverse"
6173
/>
6274
`,
@@ -69,9 +81,9 @@ export const GroupeDeBoutons = (args) => ({
6981
GroupeDeBoutons.args = {
7082
dark: false,
7183
align: 'center',
72-
inline: false,
84+
inlineLayoutWhen: false,
7385
reverse: false,
74-
size: undefined,
86+
iconRight: false,
7587
buttons: [
7688
{
7789
label: 'Label 1',
@@ -85,13 +97,11 @@ GroupeDeBoutons.args = {
8597
{
8698
label: 'Label 3',
8799
icon: 'ri-checkbox-circle-line',
88-
iconRight: true,
89100
},
90101
{
91102
label: 'Label 4',
92103
secondary: true,
93104
icon: 'ri-checkbox-circle-line',
94-
iconRight: true,
95105
},
96106
],
97107
}

src/components/DsfrButton/DsfrButtonGroup.vue

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,26 @@ export default defineComponent({
1414
type: Array,
1515
default: () => [],
1616
},
17-
inline: Boolean,
17+
/**
18+
* @deprecated Use inlineLayoutWhen instead
19+
*/
20+
inline: {
21+
type: Boolean,
22+
default: false,
23+
deprecated: 'Use "inlineLayoutWhen" prop instead',
24+
},
25+
inlineLayoutWhen: {
26+
type: String,
27+
validator: (val) => ['always', 'never', 'sm', 'small', 'lg', 'large', 'md', 'medium', '', undefined, true, false].includes(val),
28+
default: 'never',
29+
},
1830
size: {
1931
type: String,
2032
validator: (val) => ['sm', 'small', 'lg', 'large', 'md', 'medium', '', undefined].includes(val),
2133
default: undefined,
2234
},
2335
reverse: Boolean,
36+
iconRight: Boolean,
2437
align: {
2538
type: String,
2639
validator: (val) => ['right', 'center', '', undefined].includes(val),
@@ -38,6 +51,18 @@ export default defineComponent({
3851
lg () {
3952
return ['lg', 'large'].includes(this.size)
4053
},
54+
inlineAlways () {
55+
return this.inline || ['always', true].includes(this.inlineLayoutWhen)
56+
},
57+
inlineSm () {
58+
return ['sm', 'small'].includes(this.inlineLayoutWhen)
59+
},
60+
inlineMd () {
61+
return ['md', 'medium'].includes(this.inlineLayoutWhen)
62+
},
63+
inlineLg () {
64+
return ['lg', 'large'].includes(this.inlineLayoutWhen)
65+
},
4166
center () {
4267
return this.align === 'center'
4368
},
@@ -52,12 +77,16 @@ export default defineComponent({
5277
<ul
5378
class="fr-btns-group"
5479
:class="{
55-
'fr-btns-group--inline': inline,
56-
'fr-btns-group--inline-sm': sm,
57-
'fr-btns-group--inline-md': md,
58-
'fr-btns-group--inline-lg': lg,
80+
'fr-btns-group--inline': inlineAlways,
81+
'fr-btns-group--sm': sm,
82+
'fr-btns-group--md': md,
83+
'fr-btns-group--lg': lg,
84+
'fr-btns-group--inline-sm': inlineSm,
85+
'fr-btns-group--inline-md': inlineMd,
86+
'fr-btns-group--inline-lg': inlineLg,
5987
'fr-btns-group--center': center,
6088
'fr-btns-group--right': right,
89+
'fr-btns-group--icon-right': iconRight,
6190
'fr-btns-group--inline-reverse': reverse,
6291
}"
6392
data-testid="fr-btns"

src/components/DsfrCheckbox/DsfrCheckbox.e2e.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ describe('DsfrCheckboxSet', () => {
143143
.should('be.visible')
144144
.should('contain', legend)
145145
.get('.fr-fieldset')
146-
.find('.fr-fieldset__element')
146+
.find('.fr-fieldset__content')
147147
.should('be.visible')
148148
.get('.fr-fieldset')
149149
.find('fr-message--info')
@@ -238,7 +238,7 @@ describe('DsfrCheckboxSet', () => {
238238
.should('be.visible')
239239
.should('contain', legend)
240240
.get('.fr-fieldset')
241-
.find('.fr-fieldset__element')
241+
.find('.fr-fieldset__content')
242242
.should('be.visible')
243243
.get('.fr-fieldset')
244244
.find('.fr-message--info')
@@ -334,7 +334,7 @@ describe('DsfrCheckboxSet', () => {
334334
.should('be.visible')
335335
.should('contain', legend)
336336
.get('.fr-fieldset')
337-
.find('.fr-fieldset__element')
337+
.find('.fr-fieldset__content')
338338
.should('be.visible')
339339
.get('.fr-fieldset')
340340
.find('.fr-message--info')

src/components/DsfrCheckbox/DsfrCheckbox.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default defineComponent({
4242
return this.errorMessage || this.validMessage
4343
},
4444
additionalMessageClass () {
45-
return this.errorMessage ? 'fr-message--error' : 'fr-message--valid'
45+
return this.errorMessage ? 'fr-error-text' : 'fr-valid-text'
4646
},
4747
},
4848
})

src/components/DsfrCheckbox/DsfrCheckboxSet.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ describe('DsfrCheckboxSet', () => {
128128
props: {
129129
},
130130
})
131-
const checkboxes = container.querySelector('.fr-fieldset__element')
131+
const checkboxes = container.querySelector('.fr-fieldset__content')
132132

133133
// Then
134134
expect(checkboxes.firstElementChild).toBe(null)

src/components/DsfrCheckbox/DsfrCheckboxSet.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export default defineComponent({
5050
return this.errorMessage || this.validMessage
5151
},
5252
additionalMessageClass () {
53-
return this.errorMessage ? 'fr-message--error' : 'fr-message--valid'
53+
return this.errorMessage ? 'fr-error-text' : 'fr-valid-text'
5454
},
5555
},
5656
@@ -93,7 +93,7 @@ export default defineComponent({
9393
</slot>
9494
</legend>
9595
<div
96-
class="fr-fieldset__element"
96+
class="fr-fieldset__content"
9797
role="group"
9898
:aria-labelledby="titleId"
9999
>

0 commit comments

Comments
 (0)