ScrubInputRoot
ScrubInputRoot es el primitivo raíz headless para input numérico con arrastre para ajustar.
Gestiona:
- visualización de valores mixtos
- estado de edición vs arrastre
- ajuste numérico impulsado por el puntero
- semántica de confirmación para ediciones finalizadas
Props
| Prop | Default | Type |
|---|---|---|
modelValue*Valor numérico actual o centinela de valor mixto. | — | number | symbol |
minValor mínimo permitido. | -Infinity | number | undefined |
maxValor máximo permitido. | Infinity | number | undefined |
stepMultiplicador de paso del arrastre. | 1 | number | undefined |
sensitivityMultiplicador de sensibilidad del puntero. | 1 | number | undefined |
placeholderPlaceholder para valores mixtos. | Mixed | string | undefined |
Model
| Prop | Default | Type |
|---|---|---|
v-model:modelValue*Modelo numérico escribible. | — | number |
Eventos
| Event | Payload | Description |
|---|---|---|
update:modelValue | value: number | Emitido durante el arrastre o la edición. |
commit | value: number, previous: number | Emitido cuando se confirma una interacción de edición. |
Slots
| Slot | Props | Description |
|---|---|---|
default | { modelValue: number | symbol, displayValue: string, isMixed: boolean, editing: boolean, scrubbing: boolean, startScrub: (event: PointerEvent) => void, startEdit: () => void, commitEdit: (event: Event) => void, keydown: (event: KeyboardEvent) => void, placeholder: string } | Contrato completo de renderizado del scrub input. |
Ejemplo
vue
<ScrubInputRoot v-model:model-value="value" @commit="commit" v-slot="ctx">
<div @pointerdown="ctx.startScrub">
<ScrubInputDisplay />
<ScrubInputField class="w-16" />
</div>
</ScrubInputRoot>