Skip to content

Slider

Slider component for numeric input. Supports single value, range, multi-point, snap-to-marks, vertical, reversed, and more.

Basic Usage

Two-way binding via v-model. Default mode binds a number.

Show Code
vue
<script setup lang="ts">
import { ref } from 'vue'
const value = ref(40)
</script>
<template>
  <TSlider v-model="value" />
</template>

Range Slider

Set range to true for dual-handle mode. v-model binds [number, number].

Show Code
vue
<TSlider v-model="value" :range="true" />

Marks

marks accepts a { value: label } object to show tick marks and labels at specific positions.

Show Code
vue
<TSlider v-model="value" :marks="{ 0: '0°C', 50: '50°C', 100: '100°C' }" />

Snap to Marks (Dots)

Enable dots to snap the handle only to defined mark positions. Requires marks.

Show Code
vue
<TSlider v-model="value" :marks="{ 0: 'A', 50: 'B', 100: 'C' }" dots />

Color

Set color to apply Tabler theme colors (e.g. red, green, orange, purple).

Show Code
vue
<TSlider v-model="value" color="red" />

Disabled State

Show Code
vue
<TSlider v-model="value" disabled />

Custom Step

Show Code
vue
<TSlider v-model="value" :step="10" />

Vertical

Use vertical to flip the slider vertically.

Show Code
vue
<TSlider v-model="value" vertical />
<TSlider v-model="value" :range="true" vertical />

Reversed

reversed flips the start direction: right-to-left for horizontal, top-to-bottom for vertical.

Show Code
vue
<TSlider v-model="value" reversed />
<TSlider v-model="value" :range="true" reversed />
<TSlider v-model="value" vertical reversed />

Multi-point Slider

range accepts a number to create N handles. Each handle is constrained between its neighbors.

Show Code
vue
<TSlider v-model="values" :range="3" />

Tooltip Display

Control tooltip visibility with tooltip prop: 'always', 'hover' (default), or 'never'.

Show Code
vue
<TSlider v-model="value" tooltip="always" />
<TSlider v-model="value" tooltip="never" />

Tooltip Placement

Use tooltip-placement to set tooltip position: 'top', 'bottom', 'right', 'left'.

Show Code
vue
<TSlider v-model="value" tooltip-placement="top" />
<TSlider v-model="value" tooltip-placement="bottom" />

Custom Formatting

tooltip-formatter customizes the display text.

Show Code
vue
<TSlider v-model="value" tooltip="always" :tooltip-formatter="(v) => v + '%'" />

Draggable Range

When range ≥ 2, the fill area can be dragged to move all handles together.

Show Code
vue
<TSlider v-model="values" :range="true" draggable-range />

Size

size controls the overall slider size: 'sm', 'md' (default), 'xl'.

Show Code
vue
<TSlider v-model="value" size="sm" />
<TSlider v-model="value" size="md" />
<TSlider v-model="value" size="xl" />

API

Props

PropDescriptionTypeDefault
v-modelCurrent value. Single: number, Multi: number[]number | number[]0
minMinimum valuenumber0
maxMaximum valuenumber100
stepStep interval. null restricts to marks onlynumber | null1
rangeMulti-handle mode. true for dual, number for N pointsboolean | numberfalse
disabledDisabled statebooleanfalse
verticalVertical orientationbooleanfalse
reversedReverse start directionbooleanfalse
sizeSlider size'sm' | 'md' | 'xl''md'
draggable-rangeDrag fill area to move all handles (range ≥ 2)booleantrue
marksTick marks { value: label }Record<number, string>undefined
dotsSnap to mark positions onlybooleanfalse
tooltipTooltip display mode'always' | 'hover' | 'never''hover'
tooltip-formatterTooltip text formatter(val: number) => stringString
tooltip-placementTooltip position'top' | 'bottom' | 'right' | 'left'undefined
colorTheme colorTablerColor'primary'

Emits

EventDescriptionCallback
changeFired during drag(value: number | number[])