Skip to content

Commit 42c42d2

Browse files
committed
docs: 📝 adapte la documentation du DsfrSelect avec optgroup
1 parent bf7524b commit 42c42d2

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

src/components/DsfrSelect/DsfrSelect.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ La liste déroulante fournit une liste d’option parmi lesquelles l’utilisate
1818
| `required` | `boolean` | | | Indique si le select est obligatoire. |
1919
| `disabled` | `boolean` | | | Indique si le select est désactivé. |
2020
| `options` | `(string \| undefined \| { value: string \| undefined, text: string disabled?: boolean})[]` | `[]` | | Options à sélectionner |
21+
| `optionGroups` | ` ({ label: string, options: (DsfrSelectOption \| { value: DsfrSelectOption, text: string, disabled?: boolean })[], disabled?: boolean })[] `| `[]` | | Groupes d'options |
2122
| `label` | `string` | `''` | | Texte du label associé au select. |
2223
| `name` | `string` | | | Nom du champ. |
2324
| `description` deprecated | `string` | | | Deprecated, utiliser hint plutôt. |

src/components/DsfrSelect/DsfrSelect.stories.ts

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ export default {
2828
description:
2929
'Liste des options proposées par le `<select>` à lui passer sous forme de tableau de string ou de tableau d’objets avec une propriété `"text"` et une propriété `"value"`',
3030
},
31+
optionGroups: {
32+
control: 'object',
33+
description:
34+
'Liste des options groupées proposées par le `<select>` à lui passer sous forme de tableau d’objets (groupe) avec une propriété `"label"` et une propriété options qui est un tableau d‘options`',
35+
},
3136
description: {
3237
control: 'text',
3338
description: 'Description optionnelle du `select`',
@@ -386,3 +391,64 @@ ListeDeroulanteAvecOptionsInactives.args = {
386391
modelValue: 'Option 2',
387392
required: false,
388393
}
394+
395+
export const ListeDeroulanteAvecOptionsGroupees = (args) => ({
396+
components: {
397+
DsfrSelect,
398+
},
399+
400+
data () {
401+
return {
402+
...args,
403+
}
404+
},
405+
406+
template: `
407+
<div :data-fr-theme="dark ? 'dark' : ''" style="background-color: var(--grey-1000-50); padding: 1rem;">
408+
<DsfrSelect
409+
:required="required"
410+
:label="label"
411+
:optionGroups="optionGroups"
412+
:description="description"
413+
:success-message="successMessage"
414+
:error-message="errorMessage"
415+
:disabled="disabled"
416+
v-model="modelValue"
417+
/>
418+
</div>
419+
`,
420+
421+
watch: {
422+
modelValue (newVal) {
423+
this.onChange(newVal)
424+
},
425+
},
426+
})
427+
428+
ListeDeroulanteAvecOptionsGroupees.args = {
429+
optionGroups: [
430+
{
431+
label: 'groupe 1',
432+
options: [
433+
{ value: 'Value 1', text: 'Option 1' },
434+
{ value: 'Value 2', text: 'Option 2' },
435+
],
436+
},
437+
{
438+
label: 'groupe 2',
439+
disabled: true,
440+
options: [
441+
{ value: 'Value 3', text: 'Option 3' },
442+
{ value: 'Value 4', text: 'Option 4' },
443+
{ value: 'Value 5', text: 'Option 5' },
444+
],
445+
},
446+
],
447+
label: 'Selection d’options groupées',
448+
description: 'le groupe 1 est actif et le 2 est inactif, l‘option 1 est selectionnée par défaut',
449+
successMessage: '',
450+
errorMessage: '',
451+
disabled: false,
452+
modelValue: 'Value 1',
453+
required: false,
454+
}

src/components/DsfrSelect/docs-demo/DsfrSelectDemo.vue

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import DsfrSelect from '../DsfrSelect.vue'
66
const selectedOption1 = ref(0)
77
const selectedOption2 = ref(null)
88
const selectedOption3 = ref('')
9+
const selectedOption4 = ref('')
910
</script>
1011

1112
<template>
@@ -30,6 +31,7 @@ const selectedOption3 = ref('')
3031
label="Label du select 3"
3132
border-bottom
3233
required
34+
disabled
3335
:options="[
3436
{ value: 'Value 1', text: 'Text 1' },
3537
{ value: 'Value 2', text: 'Text 2' },
@@ -39,5 +41,30 @@ const selectedOption3 = ref('')
3941
]"
4042
/>
4143
Select 3 : {{ selectedOption3 }} ({{ typeof selectedOption3 }})
44+
<DsfrSelect
45+
v-model="selectedOption4"
46+
label="Select 4 avec groupes d'options (optgroup) dont 1 est désactivé"
47+
border-bottom
48+
required
49+
:option-groups="[
50+
{
51+
label: 'groupe 1',
52+
options: [
53+
{ value: 'Value 1', text: 'Text 1' },
54+
{ value: 'Value 2', text: 'Text 2' },
55+
],
56+
},
57+
{
58+
label: 'groupe 2',
59+
disabled: true,
60+
options: [
61+
{ value: 'Value 3', text: 'Text 3' },
62+
{ value: 'Value 4', text: 'Text 4' },
63+
{ value: 'Value 5', text: 'Text 5' },
64+
],
65+
},
66+
]"
67+
/>
68+
Select 4 : {{ selectedOption4 }} ({{ typeof selectedOption4 }})
4269
</div>
4370
</template>

0 commit comments

Comments
 (0)