Price interval
Choose a lower and upper bound without crossing thumbs.
Components / Forms
A bounded interval control composed from two native range inputs.
npx @getweini/cli@latest add range-sliderChoose a lower and upper bound without crossing thumbs.
Require a meaningful minimum span between selected endpoints.
<script setup lang="ts">
import { ref } from 'vue'
import RangeSlider from './components/ui/range-slider/RangeSlider.vue'
const price = ref<[number, number]>([20, 80])
</script>
<template>
<RangeSlider
v-model="price"
start-label="Minimum price"
end-label="Maximum price"
start-name="minimum"
end-name="maximum"
:min-range="10"
/>
</template>Give both native range handles distinct names.
<script setup lang="ts">
import { ref } from 'vue'
import RangeSlider from './components/ui/range-slider/RangeSlider.vue'
const price = ref<[number, number]>([20, 80])
</script>
<template>
<RangeSlider v-model="price" :min="0" :max="100" :step="5" start-label="Minimum price" end-label="Maximum price" start-name="minPrice" end-name="maxPrice" />
</template>minRange preserves at least a ten-year interval.
<script setup lang="ts">
import { ref } from 'vue'
import RangeSlider from './components/ui/range-slider/RangeSlider.vue'
const ages = ref<[number, number]>([25, 55])
const years = (value: number) => value + ' years'
</script>
<template>
<RangeSlider v-model="ages" :min="18" :max="80" :min-range="10" start-label="Minimum age" end-label="Maximum age" :value-label="years" />
</template>The most useful props, models, slots, events, and methods for this component.
| Name | Type | Default or requirement |
|---|---|---|
v-model | [number, number] | required |
startLabel / endLabel | string | required |
min / max / step | number | 0 / 100 / 1 |
minRange | number | 0 |
startName / endName / form | string | undefined |
disabled | boolean | false |
size | sm | md | lg | md |
valueLabel | (value: number) => string | String |
startLabel and endLabel name the two range inputs. minRange prevents the handles from crossing or moving too close together. Set both name props to submit the values with a form.