fix(components): missing $attrs bind (#3152)

This commit is contained in:
Benjamin Canac
2025-02-21 12:26:34 +01:00
committed by GitHub
parent 0a8f49275e
commit fb36df5302
42 changed files with 478 additions and 40 deletions

View File

@@ -57,6 +57,8 @@ import { useAppConfig } from '#imports'
import { useFormField } from '../composables/useFormField'
import UIcon from './Icon.vue'
defineOptions({ inheritAttrs: false })
const props = defineProps<CheckboxProps>()
const slots = defineSlots<CheckboxSlots>()
const emits = defineEmits<CheckboxEmits>()
@@ -92,7 +94,7 @@ function onUpdate(value: any) {
<div :class="ui.container({ class: props.ui?.container })">
<CheckboxRoot
:id="id"
v-bind="{ ...rootProps, ...ariaAttrs }"
v-bind="{ ...rootProps, ...$attrs, ...ariaAttrs }"
v-model="modelValue"
:name="name"
:disabled="disabled"

View File

@@ -41,8 +41,6 @@ import { reactivePick } from '@vueuse/core'
import { useFormField } from '../composables/useFormField'
import { looseToNumber } from '../utils'
defineOptions({ inheritAttrs: false })
const props = withDefaults(defineProps<PinInputProps>(), {
type: 'text',
length: 5
@@ -89,7 +87,6 @@ function onBlur(event: FocusEvent) {
:key="ids"
:index="index"
:class="ui.base({ class: props.ui?.base })"
v-bind="$attrs"
:disabled="disabled"
@blur="onBlur"
@focus="emitFormFocus"

View File

@@ -120,6 +120,8 @@ import UIcon from './Icon.vue'
import UAvatar from './Avatar.vue'
import UChip from './Chip.vue'
defineOptions({ inheritAttrs: false })
const props = withDefaults(defineProps<SelectProps<T, I, V, M>>(), {
valueKey: 'value' as never,
labelKey: 'label' as never,
@@ -197,7 +199,7 @@ function onUpdateOpen(value: boolean) {
@update:model-value="onUpdate"
@update:open="onUpdateOpen"
>
<SelectTrigger :id="id" :class="ui.base({ class: [props.class, props.ui?.base] })" v-bind="ariaAttrs">
<SelectTrigger :id="id" :class="ui.base({ class: [props.class, props.ui?.base] })" v-bind="{ ...$attrs, ...ariaAttrs }">
<span v-if="isLeading || !!avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
<slot name="leading" :model-value="(modelValue as M extends true ? AcceptableValue[] : AcceptableValue)" :open="open" :ui="ui">
<UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />

View File

@@ -148,6 +148,8 @@ import UAvatar from './Avatar.vue'
import UChip from './Chip.vue'
import UInput from './Input.vue'
defineOptions({ inheritAttrs: false })
const props = withDefaults(defineProps<SelectMenuProps<T, I, V, M>>(), {
portal: true,
searchInput: true,
@@ -299,7 +301,7 @@ function onUpdateOpen(value: boolean) {
<ComboboxRoot
:id="id"
v-slot="{ modelValue, open }"
v-bind="{ ...rootProps, ...ariaAttrs }"
v-bind="{ ...rootProps, ...$attrs, ...ariaAttrs }"
ignore-filter
as-child
:name="name"

View File

@@ -59,6 +59,8 @@ import { useAppConfig } from '#imports'
import { useFormField } from '../composables/useFormField'
import UIcon from './Icon.vue'
defineOptions({ inheritAttrs: false })
const props = defineProps<SwitchProps>()
const slots = defineSlots<SwitchSlots>()
const emits = defineEmits<SwitchEmits>()
@@ -93,7 +95,7 @@ function onUpdate(value: any) {
<div :class="ui.container({ class: props.ui?.container })">
<SwitchRoot
:id="id"
v-bind="{ ...rootProps, ...ariaAttrs }"
v-bind="{ ...rootProps, ...$attrs, ...ariaAttrs }"
v-model="modelValue"
:name="name"
:disabled="disabled || loading"