feat(radio) : prop contentClass pour piloter la disposition des radios
This commit is contained in:
@@ -516,6 +516,7 @@ Groupe de boutons radio : possède la valeur, le `name` partagé et **un seul**
|
|||||||
| `hint` / `error` / `success` | `string` | `''` | Message unique du groupe |
|
| `hint` / `error` / `success` | `string` | `''` | Message unique du groupe |
|
||||||
| `reserveMessageSpace` | `boolean` | `true` | Réserve la ligne de message (alignement) |
|
| `reserveMessageSpace` | `boolean` | `true` | Réserve la ligne de message (alignement) |
|
||||||
| `groupClass` | `string` | `''` | Override `twMerge` du conteneur du groupe |
|
| `groupClass` | `string` | `''` | Override `twMerge` du conteneur du groupe |
|
||||||
|
| `contentClass` | `string` | `''` | Override `twMerge` de la zone des radios (ex. `justify-between`) |
|
||||||
| `inputClass` | `string` | `''` | Override `twMerge` propagé à l'`input` de chaque radio |
|
| `inputClass` | `string` | `''` | Override `twMerge` propagé à l'`input` de chaque radio |
|
||||||
| `labelClass` | `string` | `''` | Override `twMerge` du **label de groupe** (legend), pas des labels d'options |
|
| `labelClass` | `string` | `''` | Override `twMerge` du **label de groupe** (legend), pas des labels d'options |
|
||||||
|
|
||||||
|
|||||||
@@ -93,6 +93,11 @@ describe('MalioRadioGroup', () => {
|
|||||||
expect(wrapper.get('[role="radiogroup"]').classes()).toContain('min-h-[3rem]')
|
expect(wrapper.get('[role="radiogroup"]').classes()).toContain('min-h-[3rem]')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('contentClass est fusionné sur la zone des radios', () => {
|
||||||
|
const wrapper = mountGroup({inline: true, contentClass: 'justify-between'})
|
||||||
|
expect(wrapper.get('[role="radiogroup"]').classes()).toContain('justify-between')
|
||||||
|
})
|
||||||
|
|
||||||
it('accepte des radios via le slot par défaut', () => {
|
it('accepte des radios via le slot par défaut', () => {
|
||||||
const wrapper = mount(RadioGroupForTest, {
|
const wrapper = mount(RadioGroupForTest, {
|
||||||
props: {modelValue: 'b'},
|
props: {modelValue: 'b'},
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
:aria-labelledby="label ? `${groupId}-label` : undefined"
|
:aria-labelledby="label ? `${groupId}-label` : undefined"
|
||||||
:aria-invalid="hasError || undefined"
|
:aria-invalid="hasError || undefined"
|
||||||
:aria-describedby="describedBy"
|
:aria-describedby="describedBy"
|
||||||
:class="contentClass"
|
:class="contentZoneClass"
|
||||||
>
|
>
|
||||||
<MalioRadioButton
|
<MalioRadioButton
|
||||||
v-for="(option, index) in options"
|
v-for="(option, index) in options"
|
||||||
@@ -74,6 +74,7 @@ const props = withDefaults(
|
|||||||
success?: string
|
success?: string
|
||||||
reserveMessageSpace?: boolean
|
reserveMessageSpace?: boolean
|
||||||
groupClass?: string
|
groupClass?: string
|
||||||
|
contentClass?: string
|
||||||
inputClass?: string
|
inputClass?: string
|
||||||
labelClass?: string
|
labelClass?: string
|
||||||
}>(),
|
}>(),
|
||||||
@@ -91,6 +92,7 @@ const props = withDefaults(
|
|||||||
success: '',
|
success: '',
|
||||||
reserveMessageSpace: true,
|
reserveMessageSpace: true,
|
||||||
groupClass: '',
|
groupClass: '',
|
||||||
|
contentClass: '',
|
||||||
inputClass: '',
|
inputClass: '',
|
||||||
labelClass: '',
|
labelClass: '',
|
||||||
},
|
},
|
||||||
@@ -136,10 +138,13 @@ provide(radioGroupContextKey, {
|
|||||||
describedBy,
|
describedBy,
|
||||||
})
|
})
|
||||||
|
|
||||||
const contentClass = computed(() =>
|
const contentZoneClass = computed(() =>
|
||||||
props.inline
|
twMerge(
|
||||||
? 'flex flex-wrap items-center gap-x-6 min-h-[3rem]'
|
props.inline
|
||||||
: 'flex flex-col gap-y-1',
|
? 'flex flex-wrap items-center gap-x-6 min-h-[3rem]'
|
||||||
|
: 'flex flex-col gap-y-1',
|
||||||
|
props.contentClass,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
const mergedGroupClass = computed(() => twMerge('w-full', props.groupClass))
|
const mergedGroupClass = computed(() => twMerge('w-full', props.groupClass))
|
||||||
|
|||||||
Reference in New Issue
Block a user