Skip to content

Range

Let the user specify a numeric value which must be no less than a given value, and no more than another given value. The precise value, however, is not considered important. This is typically represented using a slider or dial control rather than a text entry box like the number input type.

Examples

Range

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const form = ref({
  volume: 50
})
</script>

<template>
  <form @submit.prevent="">
    <base-range v-model="form.volume" />
  </form>
</template>

Label

Add label to input range

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const form = ref({
  volume: 50
})
</script>

<template>
  <form @submit.prevent="">
    <base-range v-model="form.volume" layout="vertical" label="Vertical" />
    <base-range v-model="form.volume" layout="horizontal" label="Horizontal" />
  </form>
</template>

Text

Show value text

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const form = ref({
  volume: 50
})
</script>

<template>
  <form @submit.prevent="">
    <base-range v-model="form.volume" label="Volume" showText />
  </form>
</template>

Helper

Input range helper description, helper message and error message

Code
vue
<script setup lang="ts">
import { ref } from 'vue'

const form = ref({
  volume: 50
})

const errors = ref(['Example Error'])
</script>

<template>
  <form @submit.prevent="">
    <base-range description="Example Description" v-model="form.volume" label="Volume" />
    <base-range :helpers="['Example Helper']" v-model="form.volume" label="Volume" />
    <base-range v-model:errors="errors" v-model="form.volume" label="Volume" />
  </form>
</template>

Range API

Types

ts
export type BaseFormLayoutType = 'vertical' | 'horizontal'

Props

NameTypeDefaultDescription
v-modelstringv-model is required.
v-model:errorsstring[]Input error message.
idstringInput id.
labelstringInput label.
descriptionstringInput description.
layoutBaseFormLayoutTypeverticalInput layout.
show-textbooleanfalseShow range value.
disabledbooleanfalseif true range is disabled.
helpersstring[]Input helper message.
data-testidstringTesting ID.

Automated Test Guide

If you pass a data-testid to the <base-range> component, it will automatically generate unique data-testid attributes for testing.

Gherkin Scenario

txt
When I change range "speed" into "25"

Step Definition

ts
When('I change range {string} to {string}', (selector: string, value: string) => {
  cy.get(`[data-testid="${selector}"]`).type(value)
})

Code Implementation

vue
<script setup>
import { ref } from 'vue'

const speed = ref(0)
</script>

<template>
  <base-range v-model="speed" data-testid="speed" />
</template>

Released under the MIT License.