Skip to content

ScrubInputRoot

ScrubInputRoot — headless-корневой примитив для числового ввода с перетаскиванием (scrub).

Управляет:

  • отображением смешанных значений
  • состоянием редактирования vs перетаскивания
  • числовым скрабингом с помощью указателя
  • семантикой подтверждения завершённых правок

Props

PropDefaultType
modelValue*
Текущее числовое значение или символ смешанного состояния.
number | symbol
min
Минимально допустимое значение.
-Infinitynumber | undefined
max
Максимально допустимое значение.
Infinitynumber | undefined
step
Множитель шага скрабинга.
1number | undefined
sensitivity
Множитель чувствительности указателя.
1number | undefined
placeholder
Заполнитель для смешанных значений.
Mixedstring | undefined

Model

PropDefaultType
v-model:modelValue*
Записываемая числовая модель.
number

Events

EventPayloadDescription
update:modelValuevalue: numberГенерируется при скрабинге или редактировании.
commitvalue: number, previous: numberГенерируется при подтверждении взаимодействия.

Slots

SlotPropsDescription
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 }Полный контракт рендеринга scrub-ввода.

Пример

vue
<ScrubInputRoot v-model:model-value="value" @commit="commit" v-slot="ctx">
  <div @pointerdown="ctx.startScrub">
    <ScrubInputDisplay />
    <ScrubInputField class="w-16" />
  </div>
</ScrubInputRoot>

Связанные API

Released under the MIT License.